Archive for 2013

Festivities done, the end of December is nigh, so it’s high time for the last round of donations this fine year.

This month I’m yet again making a donation that’s long-deserved, to an organization which had a great influence in shaping the free software/open source movement into what it is today — the Free Software Foundation, established by Richard Stallman back in 1985.

As usual, I’m also sending a donation to a charity organization that is not related to technology, and this time I’m supporting the “Last Chance” Foundation, which runs an animal shelter near my home town of Rawa Mazowiecka. It’s the second time that I’m donating to them, the first one was in June last year when I virtually adopted a dog named MichaÅ (yes, we shared the same name). Now I’m also virtually adopting a dog that goes by the glorious name of Emperor.

I wish all the best and a Happy New Year to the people of the Foundation and all the animals under their care.

I first heard about this book on a programming-related podcast, where the host recommended it enthusiastically and sparked my interest. The book recounts the course of the Windows NT project from the very beginning in the late 80s to the glorious day of release in July 1993. It was (and probably still is) one of the largest and most ambitious software projects undertaken at Microsoft.

The focus of the narrative is on the people working on the project, with technology and business matters in the background. The making of NT is presented as an extremely challenging and demanding endeavor, requiring great commitment from those involved in it, especially the people who shaped the product and the development process.

Some of the heroes of the story are placed in the spotlight and the reader gets to know more about them than just what their job on the project was. Dave Cutler, the lead developer, gets the most attention, which is justified by his role and the effect that he had on other programmers (at one point they built him an altar). A lot is told about how new people joined the project, how teams were formed, how conflicts arose and got resolved, and how being immersed in the stressful work environment affected the personal lives of the participants and their families.

While the book does touch on many technical topics, it presents them on a rather high level and rarely dives into the nitty-gritty details (a code fragment is only shown once or twice throughout the text). A basic understanding of how computers and operating systems work should be sufficient to follow the story.

At all times, it’s apparent that the author took great care to present the story comprehensively and accurately. Many excerpts from messages and memos exchanged between project members are included, and an impressive number of people have been interviewed for the book â their names are collected in a list after the epilogue. The author did his research, no doubt about it.

I found “Showstopper” a very good, amusing read and I recommend it to anyone interested in software projects (especially large-scale ones), or technology in general.

Here I come with another round of donations to open source projects and charity organizations.

The first of this month’s donations goes to the Mozilla Foundation, which I also supported last year — back then I endorsed them for Thunderbird, the excellent e-mail client. This time I’d like to thank them for their efforts in building the Mozilla Developer Network, a documentation and community website for web developers. It was founded back in 2005 with the goal of creating a high quality documentation center, and over the years has pretty much accomplished this objective. For me, when it comes to HTML, CSS, or JavaScript documentation, MDN is usually the first place to go. Thanks guys, keep up the great work!

My second donation is to the “Friends to the Animals” Foundation, also a “regular” — I donated to them back in April and in August last year. This time I’m supporting a cat by the name of Fred, who was found by a friend of the Foundation after being badly hit by a car. The cat had to have a serious surgery procedure, and is now slowly recovering.

Best wishes to the caring people of the Foundation, and to Fred — get well soon, buddy!

Last month, while working on the POD Web View site, I developed a small Dancer plugin that lets you easily convert Markdown files into HTML content in your web application — Dancer::Plugin::Preprocess::Markdown.

The generated HTML content can be saved in a file, so that the Markdown source is only processed when it gets changed. Thus, the plugin can be used to build a poor man’s substitute for a static site generator (like Jekyll).

You’ll find the code at the usual places: CPAN and GitHub. As always, I’m looking forward to feedback/patches/forks.

Today I’m supporting VLC, the fantastic open source media player (actually, it’s much more than just a player) that I use both on my Linux desktop and on a MacBook. VLC has been around since early 2001 and through the years has gained well-deserved reputation as the player that can play any media file (which is thanks to the numerous decoding/encoding libraries included with the program). It’s developed by the VideoLAN project team — thanks guys, great job!

The second donation that I’m making this month is to the Pegasus Foundation, devoted to rescuing horses bound for slaughterhouses, and generally helping animals in need. I supported them in December last year, and this time I’m making a donation for a little 5-year-old dog named Jinx, who was severely hit by a car, had undergone surgery and now needs to go through long and extensive rehabilitation to recover. Stay strong, Jinx!

When developing a Perl module, I often want to get a quick preview of the documentation that I’m writing, just to see if everything is in order and how it turns out. I used to do this the old fashioned way, by generating an HTML file with pod2html or pod2cpanhtml and opening it in a browser, but I was hoping in this day and age there is an easier and better solution, preferably a web application.

Looking around, however, the only thing I could find was the pod2html page at the CPAN Search site, which allows you to upload a POD file, have it processed by pod2html, and displayed with CPAN style. I thought it might be a good idea to try building something more user-friendly, with features like editing POD in the browser, drag and drop file uploads, etc.

And what better time for a little project like this than a weekend when you’re ill and not supposed to leave your apartment? Well, that’s what my last weekend was like — two days of coughing and coding, and here’s the result: POD Web View.

The application allows you to upload a POD file, get it from a URL, or paste its contents and edit it on the fly. The generated HTML can be displayed in the style of your choice, mimicking how it would look on CPAN, MetaCPAN, or GitHub.

I hope this will be useful for at least a few fellow Perl developers, like it already is for me. Please note that at this point this is still work in progress — the backend code needs some more work (e.g. basic sanity checks), and there are a couple UI issues that I’m aware of (and likely a dozen more that I’m not). Anyway, be my guest and give it a try, and if you’d like to report an issue, or maybe help me with the development (more than welcome), I’ve put the project up on GitHub.

I have recently returned to working on Arriba, the PSGI-compliant web server with support for the SPDY protocol, modeled on Starman.

I sort of released it (on GitHub only, not on CPAN) back in January, at that time the code was passing the tests in Plack::Test::Suite when running as a regular HTTP/HTTPS server. My next goal, before considering the module ready to be released on CPAN, was to make it pass those tests in SPDY mode. This meant I needed to add support for SPDY to good old LWP::UserAgent, which was used as the HTTP client in Plack tests.

Over the weeks/months that followed, I made a few attemps at tackling this problem, but had a hard time wrapping my head around the architecture of LWP::UserAgent and figuring out a reasonable way to add SPDY into the mix. Having very little time to devote to this project, I didn’t get anywhere with it.

A few days ago, I was delighted to find out that the problem went away by itself, since Plack switched from using LWP::UserAgent to its own Plack::LWPish, which is built around HTTP::Tiny. Now I needed to implement SPDY in HTTP::Tiny, which is, well, tiny when compared to LWP::UserAgent, so the task seemed much easier. I gave it a shot this weekend and got it working in a matter of hours, spawning HTTP::Tiny::SPDY, a subclass of HTTP::Tiny that works the same as the original, but can also do SPDY.

I immediately used the module for the intended purpose of testing Arriba in SPDY mode, and, as expected, this revealed many problems, but most of them turned out to be easy to fix (except for one, which took me more than three hours just because I didn’t RTFM in the first place — will I ever learn?). Soon, Arriba running SPDY was passing all the tests in the suite, which I happily celebrated with a tasty porter beer. I am now cleaning up the code to prepare it to be finally released on CPAN.

And speaking of CPAN, HTTP::Tiny::SPDY is already there, as well as on GitHub. Like Arriba, this is an early release, the code is hackish and immature, and I take zero responsibility for the pain and suffering that you may bring upon yourself when you try to use it. But if you do, I crave your feedback.

September is coming to an end in just a couple hours, so it’s high time for me to do the monthly donations.

The open source project that I’m supporting this month needs little introduction, at least to programmers, as it is Git, the extremely popular version control system originally created by Linus Torvalds. I’ve been using it for a couple years now, both for my personal projects and for work, and it’s hard for me to imagine how I could have ever lived without it.

The second of this month’s donations goes to the “Sfora” Foundation in Warsaw, who operates an animal shelter, finds new homes for stray and mistreated dogs, and organizes sterilization campaigns. I already supported them last year, and I’m happy to do it again — thanks to the “Sfora” Foundation crew for their efforts!

The code has actually been sitting in the repository since August 11th, but there were a few unresolved issues with the test suite on mobile browsers that I had to sort out — and I finally found a window of free time big enough to do that.

Adding support for mobile browsers was the most requested feature, and I’m glad it’s there at last (especially considering how painful it was to develop and test). The plugin was tested to work in Safari on iOS, the stock browser on Android 2.x and 4.x, and the mobile versions of Firefox, Chrome, and Opera on Android 4.x — which I think is good enough to say we have it covered.

This version is still strong in terms of backwards compatibility — while it is intended to be used with jQuery 2.x, it works just as well with jQuery 1.9, 1.8, and 1.7. Hell, it even pretty much works in IE6 — sounds perverted these days, doesn’t it? However, don’t take it for granted that it will stay that way in upcoming 1.x releases, as my plan is to focus on jQuery 2.x and the browsers that it supports.

That’s it for now — before I drop the “rc.1″ part and do a proper 1.0 release, I need to update the plugin homepage and documentation, and generally wrap things up. I also hope to get some early feedback, especially from people using the plugin in mobile web apps, so be my guest and try it out!

Again, I’m writing a post about my monthly donations at the very last moment before the end of the month, but I have an excuse of being badly sick from food poisoning for the last couple of days (there’s a certain Tex-Mex restaurant nearby that won’t be getting my business ever again, I tell ya). Today I’m finally feeling better and can get back to functioning normally(ish).

This month I’m donating to yet another open source project with a long history (of more than 17 years) — the image editing tool GIMP (which stands for GNU Image Manipulation Program). Ever since Linux became my primary operating system something-teen years ago, GIMP has been my go-to application for photo editing and graphics design work (really primitive graphics design work, as I’m definitely not an artist). And speaking of Linux, what I find an interesting historical fact is that the first publicly released version of GIMP was used to create Tux, the penguin mascot of Linux. Thanks, GIMP developers, for a great piece of software!

The charity organization that I supported this month is the “Abandoned Doggie” Foundation, a group of volunteers that runs a small dog shelter in JÃ³zefÃ³w near Otwock. I decided to do something different this time, and instead of making an online donation or virtually adopting a dog, I bought three big packs of dog food and delivered them to the shelter. Here’s a few pictures of the dogs that I took on that visit: