Quickly Solving the “Instagram Engineering Challenge: The Unshredder”

Today I have read about the Instagram Engineering Challenge: The Unshredder, and decided to give it a try. The task is simple to explain: Create a program that can unshred this image (do not try the challenge on this image, try the original PNG source instead!):


I have postet here that I think I can solve it in 2 hours, and got some downvotes for that; so I have decided to really give it a try. Long story short, it took me about 2 hours and 35 minutes.

Before I started developing, I made some quick assumptions to simplify things:

  • I want to code it in Ruby, this is the language where I am most productive.
  • I can assume the size of the stripes is well known, and I have hardcoded this size.
  • The image can be converted to RAW with an external tool, and written into RAW.
While coding I timed myself, and created a little timeline of my trials and errors. Since I wanted to finish as quickly as possible, the code is very ugly: no tests, some hardcoded constants, etc.

Continue reading

Here is a quick list of application…

Here is a quick list of applications I regulary use just in case my computer crashes and I have to reinstall everything so I don’t have to find everything again.

Windows apps

Chrome Extensions

Development Helpers

Android

Download Bitcoin Logos

I have recently joined the bitcoin network, and generated PNG images from these excellent bitcoin vector graphics. I have extracted all relevant images, and converted each one into a PNG with transparancy, and in 60, 90, 300, and 600 DPI. All PNGs are recompressed with optipng -o9 to be as small as possible.

Download

The zip file contains these images in 60, 90, 300, and 600 DPI:
Continue reading

Smallest working QR Code

I’ve been playing a bit with QR code generators, and tried to generated a very small one for this homepage. This is the result:

The file is 21×21 pixels, and has just 178 165 bytes. It works with my cellphone from a distance of about 7cm, and gets you to http://martin.ankerl.com/.

How did I create it?

  • Create very short URL to the link you want to create the QR code for. I’ve used j.mp with the customize link feature, and played a bit with special characters like _ until I got a working link.
  • Create a QR code for this link, with low error code correction. This generator has this option.
  • Open the file with your favourite image editor, cut off the border, resize it by factor 1/4 with resample to get a QR code where each black dot is one pixel wide.
  • Save as .png, without any additional information.
  • use IrfanView’s PNGOUT, and afterwards optipng -o9 to recompress the picture.

Can you make a smaller QR code with working weblink?

Have fun!