First of all, I managed to leave Vim for a few minutes without feeling bad about it. This is the result:
Sharing or about to fight. You are the judge.
PassingPix
In regards to PassingPix.com a lot has changed
-
Increased the size of the thumbnails from 64x64 to 75x75 pixels
Every coder knows how I came up with the initial size of 64 pixels for the thumbnails, but they were too small. Sometimes it was really hard to recognise anything on them. The next step would have been 128 pixels, of course, but that is way too big. A quick look around the web brought up 75x75 pixels. A rather ‘human’ number. But as it turns out, those are actually really good dimensions. Small enough to be used in the mosaic while the content is still recognisable, mostly. -
Added better tooltip to links
While every link had an appropriate ‘title’-attribute, it took too long for them to pop up. So all comments for links to webpages were quite useless. Besides that, the lack of formatting made those ‘title’-based tooltips not very pleasant to read. The solution were JavaScript based tooltips which pop up immediately and are formatted nicely. They also display another thumbnail. This thumbnail is not cropped to fit into a square and it is resized so that the shortest side is not longer than 150 pixels. -
Completely(?) changed the way a new link is submitted
Gone is the submit-form from the index-page, which was flawed from the very beginning:- Information-overload because there were too many options at once
- It completely destroyed the simplicity of the design
- Didn’t want to include it on every page (popular, tracking, user-stream, …), because I didn’t like it in the first place. Then, why is it only on the page with the newest links?
- To make it less disruptive I tried to keep it really small, and that meant: small text and REALLY small text for the help-paragraphs. Not good. [Ref: johnc, QuakeCon09 Keynote]
- Was a separate code-path from the API based submits and..
- simply sucked. Now the whole submit-process has its own dedicated page with increased font-size. It became a two-stage process including preview, thus less options at once. And most importantly - for me - is that it is completely merged with the API submit-process. Or vice versa, depending on your view.
-
Added support for videos from capped.tv and demoscene.tv
I wanted to link videos of some demos (Frameranger and Unreal, if you want to know), hence this was very simple and quick decision. Albeit demoscene.tv requires to parse the HTML for finding the embed-code and address of the thumbnail. -
Fixed ugly installation process of the Internet Explorer extension
While the extension is still limited because of the way those registry based IE context-menu-additions work, the installation procedure is way better now. Instead of the old plain-text registry file - which was hard to install and warned about the coming apocalypse if that information is added - I created a small executable to add the required entries to the registry. It even detects the presence of those entries and as a result asks if it should uninstall the extension. (Incredible, huh? That functionality is totally multi-threaded and uses your DX11-capable GPU if you’ve got one.) If it were not for the icon, the (gzip-)compressed executable would only be 50 Bytes bigger than the old uncompressed registry file. Oh well, one can’t have everything. Including the icon it’s still only twice as big (2.65KiB - gzip). Maybe I’ll try to size-optimise it just for fun, even if it’s not worth it.
Wrap Up
Initially, I started a few Perl-based web projects to let my brain relax after all those years of low-level C/C++ and that worked really well. Incredibly fast iteration times, totally high-level thinking and first and foremost prototyping within minutes and from there on it’s just about making things better. Applied perfectionism. Applied endless perfectionism.
But I have to say, that after those few months it felt refreshing to write that simple C application. Like coming home from a long journey and resting in your favourite chair while listening to music (Beneath the Surface by Stuart Elliott). Building the whole thing without the CRT and trying to convince the compiler NOT to optimise/replace my memset with the CRT memset was like meeting an old friend. So you bring intrinsics to the party, because that should solve the problem, but the linker still is looking for the CRT memset. WTH?
But it made me smile. Good to be back :)