Read my book

I wrote books about Webpack and React. Check them out!

Tuesday, December 31, 2013

Reflecting on '13 + Blog Highlights

Time to continue the tradition and look back. It definitely wasn't an easy year but on retrospect you could say I learned a lot. Now I just need to make sure I don't repeat some of the mistakes made and it's all good.

I started the year in the world of startups and after some disappointments went back to good old contracting. Even though different domains they do have their commonalities. In the end it all comes down to trust. If there is no trust between parties these things just cannot work. Simple as that. Everything else is just fluff.

On Startups

There is a lot of hype around startups these days. Some might be warranted but most is not. If you are in it for short term gains, you are most likely doing it wrong. These things take an immense amount of persistency. As such it is not a viable career path for many. You have to be prepared to stick to it. If you don't believe in what you are doing, why bother?

Forget fancy titles. They mean nothing. In fact I would say they are a symptom of inefficiency on an early stage startup. Yes, they provide some control. But when you are strapped for resources shouldn't people be able to do what they do best with minimal overhead?

Even better if you do have to go into the domain, please get started with a battle proven team. If someone invites you to join their "dream team", it somewhat likely is not. At least around here in the periphery. No idea of SF.

If you are starting with an idea and then trying to reach a market, or multiple markets with it, hoping everything will magically just work out, you are dead wrong. Let the market pull the product out of you. If you need to push, it simply won't work. People may agree with you that it's a fine idea but when you ask for money, they suddenly go silent.

Don't work too much. It will just cloud your mind and get you stressed. When you get stressed, you get stressed over being stressed. It is difficult to break that cycle once you get into it. Don't work too much.

On Contracting

When it comes to contracting you had better avoid NDAs with too steep terms. You are likely better off without such clients. Also when it comes to project size, do whatever you can to avoid big ones. That's another recipe for failure. It is more preferable to cut things up into smaller wholes.

If possible, keep estimation to minimum and focus on delivering value. The problem with estimation is that it's so easy to get it a magnitude or two off. If you have a fixed contract, you are pretty much screwed after that.

Strategic partnerships are valuable. Know people that complement your skills. That way you won't be alone when something hits the fan. Again, strict NDAs can be counter-productive here. At worst you are left alone with your problems. And that might not end well.

Look out for opportunities that allow mutual gain. Rather than aiming for normal buyer, seller scenario, try finding something more co-operative. Of course you should be careful who to co-operate with and there should be trust between the parties. That will help through the hard times.

Notable Blogposts

I wrote pretty much this year. As usual there was some more technical stuff and then there were more casual blogposts. It is difficult to say which ones were particularly notable, you can go through the archives, but I have tried to highlight a few below:

  • Positive Problems - Embrace Them - The basic idea here was that people have a tendency to focus on wrong things. It is better to develop something that is useful than something which scales potentially to million users and is not. If you end up getting too many users, good on you.
  • The Future of ICT in Central Finland - I am worried and at the same time a bit hopeful about the future of ICT in Central Finland. It is difficult to tell where things will go. On the plus side we have a nice local community, or communities.
  • Web Architecture Styles - In this post I go through some basic alternatives. In addition I would like to mention micro-architectures. In that case you simply build a lot of small services which are bound together say using pattern matching.
  • Why the Finnish Game Industry Rules the World? - Yes, there a huge hype around the Finnish game industry right now. All of this can be traced to strong culture. Now, decades later, it is starting to yield some results. That said I still consider game industry one of the toughest industries out there.
  • Watercolor - a Challenging Yet Rewarding Medium - Yeah, I learned to paint a bit. So what?
  • The Triad of Success - Vision, Process, Execution - If you don't know why you are going, how you are going and where you are going, you are just lost.
  • Software Estimation - How to Mitigate Risks Involved? - On retrospect the best way is to mitigate the risks is to mitigate the amount of estimation. The less you have to do it, the more likely are correct. Keep those batch sizes small so you cannot get wrong so much.
  • You Are an Investor - Just guys that have enough money to invest aren't investors. This probably doesn't come as a surprise to you but you are investor too. In fact you are investing your attention right now. Thank you for that!
  • Sell Value, Not Features - If you are trying to sell features, think again. What problem are you solving? What yields value for your client?
  • The Rise of the MOOCs - Education Revolution in Motion - This post got old so fast it's just unbelievable. After writing several figures have said just the opposite. I still think MOOCs will have a significant effect on education, though. We'll just see something more personalized.

Technology Lessons Learned

Technologically speaking it was an interesting year. I managed to upgrade my skills somewhat and made some contributions. In particular I became stronger on server admin side, learned something about continuous integration, learned some new tools (Angular and such) and overall became a bit more rounded as a web developer. I am still very far from the top guys but if I put my mind into something I can get things done so I guess all hope is not lost yet. Some highlights below:

  • Minimal Split Reveal in CSS - In case you want to show image titles in a different way, you might want to check this out. Of course given it's CSS you can do anything with it.
  • Business Card Design Using CSS - Who needs Illustrator or Photoshop when you can get things done in jsbin? After all jsbin was made for designing business cards.
  • Interactive 3D Web IDE for Programming LED Cubes - Yeah, because every developer needs to write one of these at one point.
  • Yes We Jekyll! - Change we can believe in. It's not the prettiest site around but if you want to learn something about Jekyll, the static site generator, perhaps that is a starting point.
  • Scraping the Web Using Node.js - I listed several approaches I have been using to scrape the web using Node.js. Simple stuff.
  • jquery.tokko.js - As usual doing that little project spawned something else. This time a TOC plugin.
  • Survive JS - A brief guide and presentation showing how to survive the jungles of JavaScript. I know the presentation and content could be improved. It would be nice to revise this project and perhaps turn it into something more serious.
  • CDNperf - Understanding how public JavaScript CDNs performed relative to each other was difficult. As a result I developed CDNperf with a couple of associated. The gift keeps on giving and there are some interesting things still in progress.
  • mankees - a Scripting Platform for Node.js - I don't know why I wrote this. It just sort of wrote itself. I needed a couple of utility scripts and packaged them on top of NPM in easy to use form. It is simple to develop these kind of scripts too without too much effort. The scripts are incidentally self-contained Node.js modules.
  • Node.js configuration patterns - I listed some patterns I have been using.
  • Build a Before/After Widget Using CSS and JS - You know those before/after images? Now you can make it easier to visualize the difference.
  • 13 Ways to Get More Out of OS X and Terminal - Unless you are me, you are likely to find at least one useful tip here.
  • Visualization - iPhone LTE Fragmentation - As a result of my scraping post I ended up developing a small visualization with a couple of buddies. So fragmented.
  • Computer Graphics - a Quick Look at de Casteljau and Hermite Curves - Because there weren't proper implementations for JavaScript yet certain someone had to write those.

Dig through the archives to find more posts. Maybe I missed something potentially cool. I also recommend digging through my GitHub account. Yes, there's too much stuff but what can you do?


Looking back maybe the year wasn't entirely in vain. I managed to get some things done and still hunger for more. It would be so nice to redo this blog for instance. As usual I will try to convert some of my insights into more blog posts. I try to aim for a blog post per week or two depending on the situation.

If you want to see something specific next year, now is the perfect opportunity to make that happen. Either send me email or comment below. Your suggestions will be taken in count. And thank you for reading! You guys make writing this blog worthwhile.