Improvement through rewriting

If you’re an application developer (or at least you used to be one, like me), how many times have you come across an old piece of code that you wrote and said to yourself, “what the f*%k was I thinking?!?” You say to yourself, I can write that much better now than I did back then, and your instinct is go back and change everything that you’d previously written.

The same holds true for documentation. I recently had an experience that reminded me of that.

I was updating my slide deck for my upcoming SQL Saturday talk this Saturday. I thought my slides were in pretty good shape, but I wanted to go through them to ensure that everything was still fresh and up-to-date. Besides, the organizers at SQL/Data Saturday LA sent me a link to their PowerPoint template, and I figured that I should use it for my slide deck for Saturday.

Indeed, when I went through my slide deck, I was hit with a case of “what the hell was I thinking?” Many of my statements and references were outdated. I found that I could rewrite much of what I’d originally written, making them more efficient and readable. Some items were unnecessary, and I eliminated them altogether.

I spent a couple of days rewriting my slides. When I was finished, I discovered that I liked the new slides much better than my old ones. I took the new slides and made some minor modifications (mainly removing the SQL Saturday LA branding so that it was more generic). If you’d like to see them, you can download them from my Presentations page.

So the moral of the story is, no matter how good you think something is, it can always be better. Don’t be afraid to review and edit something you’ve created. You might find that you like your new version even better.

(P.S. check out my presentation this Saturday!)

The right frame of mind is important for your overall health

I’ve been holding off on writing about this, but what happened to me is an important story to tell, and a cautionary tale for others who might be going through the same thing.

The photo you see above is me lying in a hospital bed about a month ago. And I want to tell you how I got there.

I have made no secret about how much the experiences of the past year have stressed me out. When I keep a regular schedule (and when I’m working), I have a routine that I maintain. And as long as I stick to the routine, I tend to do pretty well. If my routine gets upset, that’s when I get into trouble.

Well, the stress that I’ve endured upset my routine. My sleep schedule had been irregular. And I’ve been doing a terrible job of taking care of myself. The pandemic closure, in the early months, shut down gyms, which meant that I stopped going to CrossFit (which had been part of my routine). To make up for it, I started doing a Couch to 5K program. I had been doing pretty well with that program, until about halfway through, I was beset with injuries which also upset my (now new) routine. (The injuries were bad enough that I ended up going to PT to address them.) My extracurricular schedule, also part of my routine, had been disrupted because of the pandemic. I was stressed and overwhelmed. Things that I used to enjoy now suddenly seemed like a chore. To sum it all up, I had stopped taking care of myself.

About a month ago, I started having problems eating. Twice within two weeks, I got sick after eating. After the second time, my wife insisted that I go to the ER. Upon being examined, I was told, “we’re admitting you.”

For the sake of my personal privacy, I won’t say what it was that I had, except that it was not COVID. I will say that I remained in the hospital for a week. I barely ate anything during that week. My only diet was bags of IV solution that they sent through my system.

That was not a pleasant experience. I would not recommend that to anyone.

I have been home from the hospital for almost three weeks. I am slowly (emphasis on slowly) getting back to normal. Even as of this article, although I feel much better than I did, I still have not recovered 100%. My energy level is not what it was, and I get tired easily. And it all came about because I had become overwhelmed and had stopped taking care of myself.

The moral of this story is that your emotional and psychological well-being is just as important as your physical one; in fact, it can directly affect it. Your morale is important; in fact, it’s one of the things that I address in my job hunt presentation.

So take it from me. Take care of your mental well-being, and make sure you’re in the right frame of mind. Do what you need to do to roll with the punches. If you need to occasionally let off steam, do so. Get help if you need to. Get yourself to where you need to be, mentally and psychologically. Once you do that, you’ll be able to take care of yourself. Don’t end up like I did last month, and spend a week in a hospital bed.

Our user group logo gets a makeover @CASSUG_Albany #Logos #Branding

As some of you might be aware, I’m the person who handles communications and branding for the Albany local SQL user group. As such, I’m responsible for sending out group announcements, updating the calendar of events, and maintaining whatever social media resources we might have.

Our old user group “logo”

Last week, I was preparing the announcements material for our April meeting, and in doing so, I took a long look at our “logo” (seen here on the right). There were many things that I found amiss. First, the logo, which we had had for several years — I’ve lost track of how long — was unwieldy and no longer representative of our group. Second, it used the PASS branding (and the REALLY OLD branding at that), which needed to be removed since PASS ceased operations in January. Finally, it was not dynamic — we were using it universally as a logo and an icon, and it really did not function well as such. I spoke to Greg and Ed, our user group’s co-admins, and got their blessing to come up with a new logo for our group. (Besides, I needed the design practice!)

One idea that I tried…
…and another

I sat down and tinkered with some ideas. I tried out some fonts and visual schemes. Ideally, I wanted to incorporate some specific design elements: New York State, something representative of the Albany Capital Region where we’re located, a technical-looking font, and the universally-recognized (at least to data professionals) database icon. I wasn’t sure what kind of color scheme I wanted to use, but as it turned out, I started out using blue and gold for the fonts (which, unofficially, are considered to be New York State’s colors), decided that I liked them, and stuck with them.

My initial idea was to superimpose the user group acronym (CASSUG) over the outline of New York State; those are the designs you see here to the right. I tried a couple of different fonts, including one (which you see in the second image) that included NASA in the font name. (I decided that I liked the other font better.) I positioned the database icon over where Albany is located, which would satisfy my requirement of representing the Capital Region.

While I was generally happy with the results, I also wanted to take another approach. I downloaded a line drawing image of the Albany skyline and placed the CASSUG text logo underneath it. I liked the idea and decided to run with it; however, I needed to find another image, as the skyline image I used could potentially have violated copyright restrictions (I did not post it here for exactly that reason). I had to find another image, but I was unable to find one that I liked. I decided that the only way I could come up with a suitable skyline outline image was for me to create my own.

I opened MS Paint and hand-drew a simple representation of the skyline. I decided to represent four local landmark structures in the drawing (and anyone local to the Capital District knows that one of those structures had to be The Egg — it is the one landmark building that instantly identifies the Albany skyline, just as much as The Pyramid identifies Memphis, the Carrier Dome identifies Syracuse, or the Space Needle identifies Seattle).

I thought the outline came out fairly well, but I had to make sure that I did it justice, so I posted it to my Facebook and asked local friends if they could identify the buildings. (If you’re looking at the logo at the top of the page, the buildings represent, from left to right, the Corning Tower, the Egg, the State Capitol, and the Smith building.) The outline was not to scale and it wasn’t perfect, but it didn’t have to be; it just needed to be recognizable. Everyone correctly identified The Egg, and most people were able to correctly identify at least two of the four structures. That people recognized the skyline told me that I had done my job.

I placed the CASSUG acronym and accompanying text underneath the skyline outline. I wanted to make sure the acronym was spelled out for the benefit of those who wanted to know the acronym’s meaning. As a final design idea, I took the New York State outline, placed it to the right of the acronym, and superimposed the database icon on top of it.

The end result is the image that you see at the very top of this article.

I ran my ideas past the user group members, and people overwhelmingly said they liked the Albany skyline image.

I like how the image came out. I intentionally created a relatively large image (2830 x 1250px); you can create smaller images from a big one, but you can’t create big images from a small one. The image is versatile; for example, if we need a banner, we can use the acronym and text without the skyline; if we need a thumbnail, we can use the icon over NYS, and so on. I started updating our Meetup page with the new design, and I’ll incorporate it into other materials as well.

What do you think about my rebranding effort? Like it? Hate it? Let me know in the comments below.

What are you proud of? Tooting your own horn on your #resume — #JobHunt

Yesterday, a good friend of mine texted me, asking me to send him my resume. This particular friend works for a major nationwide consulting firm. I won’t say which firm, but I will say that it’s a household name. In his position, he is often in a position to hire, and he is well-connected.

After reviewing my resume, he texted me back again, saying “let’s talk. I have some ideas that might make your resume even better, and I want to make sure those changes are implemented before I pass your resume along. Do you have time to talk tomorrow?”

I got off the phone with him a little while ago, and what he had to say was eye-opening — and in our conversation, I managed to improve my resume even more.

His advice (and I’m paraphrasing here): “what projects are you the most proud of? As a hiring manager, that’s something that stands out to me. Your work experience looks good, but everything you mention is general day-to-day activities. You don’t really list much in terms of a specific project you worked on. For example, something like ‘I designed such-and-such app that helped people do their work more efficiently by whatever-it-did-to-help-them, saving the company millions of dollars’ is something that would stand out to me. What are you the most proud of? Make sure you highlight that in your resume.”

I did raise a concern. I told him, yes, there is a project that immediately pops into my head, but it goes back many years; in fact, it’s a project I worked on for a company that goes outside of the past ten years. He told me, “that doesn’t matter” (he also relayed to me a project that he was proud of that took place over twenty years ago). “I’m proud of that, and I still include that in my profile.”

I had my resume file open in front of me during our conversation. While we were talking, editing ideas started forming in the back of my head.

His suggestion was to include these projects in my work experience, but I decided to leave that section alone. Instead, I decided to rewrite the Career Summary section of my resume. I wanted to do it this way for a couple of reasons: one, this appears at the top of my resume and would be the first thing that prospective employers read, and two, rewriting the Work Experience listings would have been a lot of work, and could have potentially resulted in document restructuring issues.

In terms of projects in which I take pride, I immediately wanted to mention a server inventory database that I built years ago; whenever anyone asks me about a professional project of which I am the most proud, this is the one that I always think of immediately. I also wanted to mention my involvement with recovery efforts after 9/11 (my Disaster Documents presentation is based on this experience), so I included that on the list as well. I also wanted to include a project that was much more recent, so I included a user guide that I wrote from scratch, including developing the Word template for it (additionally, I wanted to highlight that it was for a SaaS application). Finally, I also wanted to make mention of a project in which I learned about MVC concepts (unlike the other projects, this one does appear in my Work Experience section).

There were also a few other things I wanted to do with my Career Summary section. A while back, I came up with my own personal tagline, but it did not appear in my resume. I wanted to make sure it was included. Additionally, whenever I submitted my resume, I was finding that I was experiencing confusion on the part of prospective employers. I was (and still am) targeting primarily technical writer positions, and I was often questioned, “with all this technical experience, why are you targeting tech writing jobs?” I wanted to restructure it in such a way to explain that I was drawing upon tech writing as a strength, without sacrificing the fact that I had a technical background.

Before I made my edits, the Career Summary section of my resume looked like this.

(The Career Summary section of my resume — before)

When all was said and done, this is how it came out.

(The Career Summary section of my resume — after)

Additionally, I had to make changes to other sections of my resume, entirely for formatting purposes. I wanted to ensure that it would fit on two pages. I consolidated a few sections of information that, while helpful, I didn’t think would be as important.

I made the changes, updated my resume files (Word and PDF), and resent it to my friend. As of this article, I’m still waiting to get his feedback (he texted me to say he was busy, but would look when he had the chance), but personally, I like the way these changes came out.

(Edit: I heard back from my friend; his advice was to keep the accomplishments to one line each. In his words, “make it punchier.”)

You don’t necessarily have to do this within your Career Summary section; this was how I decided to approach it. If you can incorporate these highlights into your work experience listings, then by all means, do so.

I want to mention one thing when adding “proud accomplishments” to your resume. There is a fine line between talking about accomplishments you’re proud of and bragging about things to stroke your ego. Keep in mind that the purpose of a resume is to get you a job interview. Talking about projects you did that made a difference can help with that effort. Bragging about things you did (or didn’t do) will not. Nobody cares about your ego; they care about what value you can bring to their organization.

So what are your thoughts on these changes? Feel free to comment on them, especially if you’re a recruiter or a hiring manager.

The Value of Paper vs Convenience of Digital

I wrote a while back that, while digital documentation dominates the world today, paper isn’t necessarily dead. That said, my friend, Greg Moore, notes an issue with printed material that didn’t occur to me, and it has to do with data security. Read on for more.

greenmountainsoftware

About 35 years ago in the fall, a housemate of mine got a phone call, “hey, I’m a caver who’s passing through your area this weekend and found your name in the NSS Members’ Manual, I was hoping maybe you could hook me up with a caving trip.” Well it just so turns out that the RPI Outing Club traditionally does Friday night caving. (Why night you might ask? Well it’s always dark in the caves, so going at night leaves time on Saturday and Sunday to hike, rock-climbing, canoe, etc.) My housemate invited the guy along and he joined us caving (I think in Knox Cave).

I mention this story because it’s an example of how the NSS Members’ Manual has often been used over the years. Talk to enough old-time caves (especially those who recognize the smell of carbide in the morning) and many will mention how they’ve…

View original post 1,404 more words

#SQL101: Raising awareness of SQL injection

(Image credit: XKCD.com)

I don’t think there’s an experienced web developer or DBA who isn’t familiar with the classic “Bobby Tables” XKCD cartoon above. Just about any time you mention “Bobby Tables” to most experienced IT people, (s)he will immediately know to whom you are referring. Most experienced web developers and DBAs are aware of SQL injection and will take steps to ensure that it’s addressed. Grant Fritchey has a presentation about SQL injection (you can view and download his slide deck here) in which he’s not shy about his desire to “kill Bobby Tables.” I’ve seen him present it at SQL Saturday, and I highly recommend it.

Of course, the keyword here is “experienced.” For people who don’t have that experience, and who build websites that connect to databases, I think it should be lesson #1. Today, I had an experience that reminded me of that.

Earlier today, my sister texted me, asking for help with editing SQL code. She asked me what I use to edit SQL. I told her I generally use SSMS, although you can edit SQL code with a straight-up text editor, if necessary (she is not a DBA, so I felt somewhat comfortable telling her this). She told me she had to clean up spam comments in her data.

That last comment immediately grabbed my attention. I then asked her, how are your security settings, and do you have data backups.

She told me: that IS her data backup.

If her earlier comment had gotten my attention, this one immediately set off alarm klaxons in my head.

I started thinking about what could have corrupted her data to this extent. I started asking questions about her admin setup (I should’ve asked her to make sure she wasn’t using “sa” or “admin” as her admin login — Sis, if you’re reading this, make sure you check this!), including her passwords. Her admin password was pretty secure (thankfully).

She then mentioned her website. I asked if her website was accessing her data. She said yes.

I asked her about Bobby Tables (admittedly, in my advancing age, the term “SQL injection” didn’t immediately come to my mind). Her response: “who?”

At this point, I was convinced that I had my answer. Her database had been corrupted through SQL injection attacks. I told her to make sure you address your SQL injection issue before you even think about your data backups. Worrying about your data backups before addressing your SQL injection issue is like trying to rebuild your house before you’ve put out the fire.

I’ve been talking about SQL injection all throughout this article. For a brand-new web or database developer who has no idea what SQL injection is, here’s a quick primer: it’s a data security attack in which a hacker breaches your database by sending SQL commands through your web interface. I won’t get too much into how it works; instead, here are a few links that explain what it is.

And make no mistake: SQL injection attacks can cause major damage.

So consider this a warning to any fledgling developers who are interested in web or data development: data security issues, such as SQL injection (and there are many others) are a big deal and need to be considered when building your setup; it’s not as simple as just setting up your website and connecting it to a database. By not considering this when you first assemble your system, you might be setting yourself up for major issues down the road.

Remember the past, embrace what’s next

“Don’t hang on; nothing lasts forever but the earth and sky; it slips away, and all your money won’t another minute buy…”

Kansas, Dust In The Wind

“Movin’ me down the highway, rollin’ me down the highway; movin’ ahead so life won’t pass me by…”

Jim Croce, I Got A Name

When I was in grad school, I wrote a quote for a paper I wrote. My professor loved it, and I’ve used it plenty of times since then. “Ben Franklin had it wrong,” I wrote (or something like that). “There are not two sure things, but three: death, taxes, and change.”

What made me think of this is a Facebook meme that made its rounds over the weekend. Valentine’s Day was this weekend, and a meme with the hashtag #ValentinesDayChallenge was going around. I figured it was fun and harmless (as far as I know, I didn’t include any security info that could be hacked), so I participated.

I still look my answers over, even a couple of days later, and it makes me smile. My wife and I have had some fun times during our years together, and I certainly hope they continue. We’ve done a lot of things that I would love to relive. But, of course, that’s impossible. That time has passed, and we need to confront whatever is ahead.

The fact is, we cannot move backwards in time, and we can only deal with what’s in front of us. What’s done is done. If it was something good, you reflect on it. If it was bad, you learn from it and move on. Unfortunately, too many people (and I’ll admit falling into this trap myself on occasion) don’t understand this. They don’t just want to remember the past; they want to live there. But the fact is, time marches on, and change happens. Those who continue to try living in the past are doomed to fail.

Memories are a wonderful thing — as a song lyric once lamented, they’re “sweetened through the ages just like wine.” It’s okay to remember and reflect on them. But it’s not okay to dwell on them. Memories belong to the past. You can only control the future. Don’t try to go back to what’s already happened. Instead, create new memories that you’ll enjoy reflecting upon once they’re done.

Setting up my #Sessionize profile, and speaking opportunities — #DataSaturday

The other day, I wrote about how Data Saturday — the successor to SQL Saturday — was making use of Sessionize for event applications and scheduling. In order to take advantage of the technology, not to mention future opportunities to speak, I took the time to work on my Sessionize profile.

It turned out to be a lot of work — much more than I expected. I already had my bio and my presentation descriptions within the application, but I discovered a number of other features that, I believe, will present me with additional opportunities to speak.

First, while Sessionize keeps track of events to which you apply through its application, I discovered that it also has the ability to enter external events not scheduled through Sessionize. Even the header on the external events page says, “Organizers love to see your talk history” (and I agree). So, I went through my presentations page to enter all my previous speaking engagements that I did not schedule through Sessionize.

Did I mention that it was a lot of work? I started speaking regularly in 2015. In that time (until now), I’ve spoken at 26 SQL Saturdays, two PASS Summits, seven in-person user group meetings, three professional development virtual meetings, and a podcast. Granted, I know people who’ve spoken at more events than I have, but still, that’s a lot of speaking engagements. I added them to my external events, including descriptions and web links (where applicable — since PASS.org is no longer active, I linked the SQL Saturday pages to the schedule PDFs that I downloaded several weeks ago, and a few other links to any YouTube presentation links I had available).

I also discovered that Sessionize has an option called “discover events” — a feature that allows you to discover potential speaking opportunities. I had gone through the Data Saturdays site to apply to speak at (virtual) events in Redmond and LA, but when I saw the “discover events” option, I got curious.

As it turned out, in order to use this option, I had to fill out sections for areas of expertise and topics, so I filled them out as best I could. Once I did so, I was able to view (and apply to) potential events. In addition to the two Data Saturday events, I also applied to the VTTA Tech Conference and Techorama 2021. (And Sessionize says that I still have an active application to speak at Albany Code Camp, where I’d applied last year, but the event was wiped out by the pandemic.) I think I have a decent shot at the Vermont tech conference, and I have my doubts about being accepted to Techorama, but I figure, you never know until you try.

So far, I do like the Sessionize application. It does a good job of keeping track of my profile and my speaking engagements, and it could potentially open up more speaking opportunities. I’ll admit that I felt some trepidation after PASS (and SQL Saturday) ceased to exist. I wanted to continue speaking at events, and I wasn’t sure how to approach it once the SQL Saturday window closed. We’ll see what speaking opportunities open up with this application.

Goals for 2021

So, for my first post of 2021, I figured I should list my goals (I refuse to call them “resolutions”) for the new year.

  • First and foremost, above everything else, find new employment. I have been unemployed since May 1. For those of you keeping score, that’s eight months. 67% of my 2020 was spent in unemployment. Getting a new job, for me, is priority number one above everything else.

    I do have a couple of relatively promising leads, but I’m not out of the woods yet. Hopefully, things will be turning around very soon.
  • Do more with my business. In 2020, as a direct result of my losing my job, I started an LLC. I managed to pick up two clients. It’s good experience, but not enough to pay my bills (hence why I’m still looking for employment). I haven’t done a lot with it in the last few months of 2020. I want to devote more time and energy into it in 2021.

    I readily admit that I slacked off on this as the year went on, and I don’t want to let it slip in 2021. I intend to keep this endeavor going, even if I do land new gainful employment.
  • Get back to the gym. COVID-19 kept me from getting into my CrossFit gym more than I would’ve liked, but the pandemic wasn’t my only issue. I developed back and arm issues that kept me from being more active than I wanted to be. Simply getting out of bed without pain is a chore for me right now. Hopefully, I can get back to being as active as I was before the pandemic.

    Speaking of the pandemic…
  • Travel. The pandemic is my biggest (but not the only) roadblock for this goal; my other major roadblock is making sure I have the money to do so (see “find new employment” above). I enjoy traveling, and I wish I could do more of it. Since the pandemic began, I can count on one hand the number of trips I took away from home (trips to the grocery store don’t count).

    Trips for SQL Saturday have satisfied my desire to travel for the past several years, but now that PASS will be no more, I might need to find another outlet for my out-of-town speaking engagements (more on that in a minute). I also told my wife that I want to take a relatively significant vacation somewhere once the pandemic is over. She and I have both encountered a lot of stress this past year, and I think we both need to find a way to relieve it.
  • Find speaking engagements. One thing I’ve discovered about speaking for SQL Saturday is that I enjoy presenting. I’d like to do more. My last in-person speaking engagement was SQL Saturday in Rochester last February. I was also scheduled to speak at SQL Saturday in Chicago (which would’ve been my first SQL Saturday where driving was not feasible), and I had applied to speak at a local code camp. Both of those were wiped out by the pandemic.

    My friend Matt Cushing encouraged me to sign up for the Idera Ace Program, which would provide funding for me to take part in more presentation opportunities (not to mention that it would look good on my resume). Since I first started presenting regularly, all of my in-person speaking engagements (with the exception of 2019 PASS Summit) have been within driving distance of my home in the Albany, NY area. There is a reason for this: traveling costs money. The Idera Ace Program would provide more opportunities for me to speak at nonlocal events (pandemic notwithstanding, of course).
  • Do more house projects. These past several months at home made me realize how much I want to do with my house, and how little I’ve done to attain that goal. (I’m talking about “fun” projects, as opposed to chores.) Money has been a major detriment (again, see “find new employment” above) as well as energy (see “get back to the gym”), but time has not; since I don’t have anywhere to really go, I have no shortage of time on my hands. There’s a long list of projects I’d like to do, such as finish my basement, build a backyard patio and entertainment area, build a porch, and so on. While I don’t necessarily expect to finish these in 2021, I’d like to at least take steps toward those goals.

There are a lot of other things that I’d like to do, but I think this is a good list for now. (I reserve the right to amend it.) In general, I’m hoping for a better year, and 2021 supersedes the dumpster fire that was 2020.

Archiving my talks, part 1: #SQLSaturday schedule PDFs — #PASS

With the imminent demise of PASS, I figured I should take Steve Jones‘ advice and archive my presentation links.

For this round, I went through all the SQL Saturday events where I spoke and downloaded the schedules. Each SQL Saturday schedule has a link to save it to PDF (there is an “Export to PDF” link at the bottom of each schedule).

I saved the PDFs to my ‘blog media and created links to them. You can download these schedules by going to my presentation schedule and clicking any link labeled “schedule PDF.”

For now, I’m only concerned with links hosted on PASS websites, such as SQL Saturday and PASS Summit (which I’ll do for the next round). I’m not as concerned (yet) with Meetup, YouTube, or podcasts I’ve done that are not hosted on PASS websites. I’ll update these links as I go along.