Category Archives: Essay

Writing Tips

Twice I have been fortunate enough to have one of my posts featured on Hacker News. Well, fortunate might be a strong word because the attention comes with a price.

The first post was a tongue-in-cheek essay about digital natives and boy did it get some attention. Mostly negative. HN is a lovely community, but reading those comments were not an enjoyable experience.

This brings me to my first tip: Humor can easily get lost in translation. I’m not saying you shouldn’t use it, but you should be aware that humor – especially irony and sarcasm – doesn’t translate well into writing.

In my second post, Writing is Hard, I wrote about what I find difficult about the writing process, and what I believe is the best way to solve it. This time the comments were far nicer, and I enjoyed reading them. There were different opinions, obviously, but the general tone was much better and the feedback more constructive – which I attribute to the fact that I wrote a more constructive essay as well.

I could say: Write more constructive, but I don’t think it’s a constructive advice. Instead, my second tip would be: Keep your promise to the reader. This applies even if you think nobody will read it; if you promise something in the title or the beginning of the text, follow up on that. In my first draft, the title of this essay was “Writing Tips”. So now I must either deliver on that or change the title.

This brings me to my third tip: Change your title accordingly. Sometimes the title is clear from the start, but usually the title is just a placeholder until you know what the text is about. Writing can be an evolving process; in some cases, you don’t know the text until after you have written it and done the first round of editing.

As mentioned, I find much joy in the HN community, and I’ve noticed that people often want evidence. This is a good thing; It means people are paying attention. So, if you claim something, make sure to back it up. This is not a hard rule; I just broke it myself claiming that people on HN want more evidence.

Speak the truth and be honest with your reader. I don’t mean that you shouldn’t write fictional stories or fairy tales, but if you try to sell something; be upfront about it.

English is not my first language, but I believe I can use that to my advantage by keeping it simple and make the text readable. I don’t try to impress with words I don’t understand, and neither should you.

Equally important, no matter how simple words you use: Fix spelling and grammar. Our brain is incredible when it comes to filling in the gaps. One way to fix spelling is to read the text backwards, word for word. But I’m lazy and just copy the whole thing into Microsoft Word and let it advice me.

Still, weirdness can get through. In the original draft I managed to write “thong-in-cheek” instead of “tongue-in-cheek” – now that will certainly conjure up an image in your head. Both will pass the spellchecker; but one is not like the other.

Once you have written your piece; let it mellow for a while. I know it’s tempting to press the publish button, or in other ways release it to the world, but let it rest. As with tasty food, the flavors must get to know each other. I think this applies to words and sentences as well. If they taste sour when you get back to them after a few hours, or a few days, re-write or throw them out.

The written word doesn’t have an expiration date; it won’t go bad, but it won’t get any better either. Make sure your text is tasty before you serve it to other people.

I want to finish with this: We all make mistakes. It’s not the end of the world if you make a typo or two, as long as the text is readable, understandable and you get your point across.

To summarize:

  1. Be careful with humor, especially with irony and sarcasm
  2. Keep your promise to the reader
  3. Change your title (if necessary) once the text is ready
  4. Backup your claims with facts and references
  5. Speak the truth and be honest with your reader
  6. Keep the language simple, avoid using words you don’t fully understand
  7. Fix spelling and grammar
  8. Let your text mellow and re-read before you publish

So, there you have it: My writing tips. They may not be perfect, but I didn’t promise that either, so I believe I have delivered according to my own advice on this one. Now, what are you waiting for? Start writing.

Writing is hard

Writing is hard. Especially if you start thinking. Never stop to think about what to write (unless you must), it will ruin the flow. Never stop to correct yourself, to judge or run a spellcheck. Don’t do that; that’s what editing is for.

I’ve read the same tips again and again: Write first, edit later. The first draft is for you, the second is for everyone else (or just an editor or a confidante). Don’t interrupt the flow. If you need to look something up, place a marker in the text and look it up later.

That’s why I love to journal using pen and paper. You only have one direction: forward. Get the words down on the page in the order they appear in your head and move on with your day.

Breaking the flow has been one of my biggest issues when it comes to writing, both at school and later in life. I always ended up fiddling with the text before I got all the ideas out of my head. Looking up words, finding reference material (blog posts, news articles), checking facts. Don’t do that either. Checking facts is a part of the editing process.

In school I could spend half an hour playing with WordArt (remember WordArt?) for the title alone. The title can wait, you may want to change it anyway.

Another mistake I’ve made is installing a SEO plugin for WordPress and trying to make it happy. It has tips that make sense for readability: Use active words instead of passive. However, most of the tips are there to transform your style into something it’s not – someone else’s.

Add an image. Add a key phrase. Repeat the phase repeatedly throughout the text. Shorten your paragraphs. Add subheadings. Add more outbound links (but don’t forget internal links!).

Forget about SEO. That’s not part of the game, if it is: you’re not writing for yourself anymore. Don’t let anyone dictate your style; find your own voice. If you need pointers on style: read a book, then read some more.

Once you run out of steam; you’re most likely done. Take a break. If nothing new pops up in your head, you can start the editing process. If you thought writing was hard, wait till you start editing. Editing is hard.

Maps, activation codes and server-side validation

If you skip server-side validation, someone will eventually find out. Hi, I’m someone, and this is a story about why you should think about server-side validation.


Story time

In July 2013, I bought a new, previously owned, Volvo V60. As part of the deal, the dealership included the latest map update. So, I left the dealership with the car and a box containing not one, not two, but three DVDs. Each that would spend hours in the DVD tray while updating the maps.

Now, these DVDs were probably dime a dozen. You could buy them used on the Internet, pick them up at any Volvo dealership and I would not be surprised if they were available for download from the Internet as well. So, to prevent piracy, you had to type in an activation code when starting the upgrade progress. But wait – then everyone with an activation code could sell their DVDs and the code to the next person once they had updated their maps? Well, no. You see, the activation code only worked on your car.

Getting the activation code

The way you got your activation code was simple: you would visit a web site, type in your vehicle identification number (VIN for short) and a drop-down list would show the part number for the maps you had the right to use. I mean, you could literally type in any valid VIN for that brand and model series and see what map options they had. You could even request their activation code sent to your email address. Now that is user friendly.

So, the activation code only worked with the correct combination of map number and VIN. However, when I entered my VIN, the part number for my DVDs did not show up in the drop-down. A few others appeared, presumably already installed by the previous owner.

Apparently, the company selling the maps had not yet received the order from the dealership. This was late Friday afternoon, if I recall correctly, so contacting the dealership would have to wait … but then I thought, what if I change the options in the drop-down list? It cannot be that easy? Surly they would validate the input, check it against their database one more time before sending out an activation key?

You already know the answer; I opened developer tools and changed the product to match the one I had. I pressed submit and a few moments later, voila! You got mail!

“Dear Valued Volvo Driver, […] Here is your activation code.”

Would you look at that. It was almost too easy. So, just to confirm, I found another number on the Internet and, once again, I received an email with a new activation code.

So, here you have a service that gives you a list of choices, and they do not even check if you have selected within that range. That is just lazy.

In the end, I could have saved me the trouble; after the weekend, the part number automatically appeared in the drop-down list, and a year or so later, Volvo put the maps on the Internet for free. All you had to do was download them to a USB stick and plug it into your car. Well, you also had to upgrade your navigation system to remove the need for an activation code, for a small fee, of course.

Doing the right thing

I reported the bug to the company responsible for the map service, but I never heard back from them. Since this service no longer exists, I think it is okay to share this story. I did not break any rules, from my point of view, but I can see how this could have been abused.

To be honest, for a split second, I was thinking about sampling a few VINs, note down the map options and crossmatch them to generate a lot of activation codes, which I then could try to figure out how the code generation worked. But that would have been crossing a line.

So, the takeaway is this: Do not trust the client-side, always do server-side validation.