A couple of days ago I saw pngquant appear on Hacker News. I'd never really looked in depth into image compression, and after reading up on the subject I scanned through the comments on HN, discovering a number of alternative png (and other formats) optimisers. So I decided to benchmark/compare pngquant, pngcrush, optipng and pngnq.
Images: I tested a number of different images, some of which you'd be insane to render in PNG and more that make sense. The images vary greatly in size, colors and alpha channels and should be a good test for each of the optimisers. To ensure a fair test I opened & exported all the images with Photoshop, to give them all a consistent encoding algorithm.
Optimisers: I used the latest stable copy of each: pngquant 2.0.1, pngcrush 1.7.70, optipng 0.7.4 and pngnq 1.1.
Read more →
pngquant --speed 1 *.png
pngcrush <name>.png ../after/pngcrush/<name>.png
optipng -keep -o7 *.png
pngnq -d ../after/pngnq/ -s 1 *.png
The work-life balance has been discussed a thousand times over; there are hundreds of articles telling you that a good balance is essential for a healthy, fulfilled life and that we should all be careful of becoming overworked and stressed. In many ways I couldn't agree more, of course these things are essential and a good balance will improve both work and life sides of the equation. My problem is how I define work.
As a developer/engineer/programmer/hacker/what-have-you I find it hard to define what is considered work. Obviously my regular job counts, but what about side projects? Building things/websites for friends? Tinkering with hardware? Even reading Hacker News - am I working or am I 'life-ing' - does it depend on the article's subject?
Like any good dev I enjoy what I do, I love the challenge of solving problems in programmatic, logical ways and I love the ability to create something out of essentially nothing with relative ease. So if I choose to spend an evening coding rather than doing 'ordinary' home things does that mean I'm constantly throwing off my work-life balance? I don't think so.
For me the work-life balance is a non-issue, the only thing I should worry about is happiness. The key to life is to enjoy it, not balance it.
I recently started working for EDITD which I am really enjoying. At the same time, I'm learning a lot. It's been a crash course in a range of subjects; Python, Ruby, Chef, Git, AWS, Mongo etc. My thirst for knowledge is definitely being filled, I'm going to learn a huge amount very quicky.
Until and even during University most of my 'programming knowledge' was self taught. From Blogger to Wordpress; Garry's Mod to Lua+Nginx; Command prompt to bash/SSH. University was more focused on the theoretical side of programming while, while interesting and useful from a progam-design perspective didn't provide much practical experience. The combination of self teaching and University has pushed me to learn a huge amount over the last few years, covering many different areas, languages and theories of computer science.
Despite lots of learning, it's only in the last few weeks that I've been using my programming skills in a 'live' environment. One where the code I write has a positive and noticable effect on a product used in the real world at scale. This is fantastic.
If there's any point to this post it's that I'm happy I chose to work for someone else rather than myself. Not only is it great to be involved in a quality product, but also to be part of a dedicated and extremely knowledgable team. If you're young and have to make a similar choice, I would advise that you find a great company & team to work with. Following entrepreneur dreams can normally wait a few years, and the many things you'll no doubt learn are well worth the wait.