Archive for 2013

Monthly Donations: Midnight Commander and the “Unwanted and Forgotten” Foundation

Wednesday, July 31st, 2013

Geez, it’s already the end of July and we’re halfway through with summer? How did it get so late so soon? Obviously it’s the last day for me to do the traditional monthly donations, so let’s get to it.

I realized there’s one project that I’ve been using on a regular basis since my first experiences with Unix and Linux more than fifteen years ago, so it deserves a donation like no other. This project is Midnight Commander, the console file manager conceived as a free clone of Norton Commander, which was hugely popular in the ancient times of DOS. If you remember those times, the two blue panels of Norton Commander must look familiar:

Fun fact: when I first used Norton Commander the panels weren’t even blue, as it was on a PC AT equipped with a monochrome Hercules graphics card and the only color that I was blessed with was amber.

The two-panel concept is an excellent example of a simple idea that stands the test of time — I’m still using Midnight Commander exactly the same way as I used Norton Commander back in its day. For many file operations, and especially for quickly browsing through a large directory tree, it’s my preferred solution over any GUI tool. Thanks and congratulations to the developers!

My second donation goes to the “Unwanted and Forgotten” Foundation, located in Łódź, dedicated to helping homeless animals (I already supported them precisely a year ago). I’m virtually adopting a young female dog by the name of Melissa, who was rescued (along with her sisters) from terrible living conditions by the Foundation’s volunteers. Best wishes to the Foundation and to Melissa!

Yet Another Update on imgAreaSelect (and the Horrors of Mobile Web Development)

Monday, July 29th, 2013

It has been a while since I posted an update about the development of the new version of imgAreaSelect… so here’s an update about the development of the new version of imgAreaSelect.

I am working on the project in my spare time, which is unfortunately an extremely rare commodity for me these days (the joys of running a company), so progress is rather slow. However, over the last few weeks I did manage to fix a couple outstanding issues, and I feel the code is now much closer to my next goal, which is a release candidate for version 1.0.

I must also say I never expected it to be this complicated to make the plugin compatible with mobile browsers — while it did require a few modifications to the basic code of the plugin, other than that it was mostly a matter of adding support for touch events. In reality, it turned out developing and testing a JavaScript UI component for mobile browsers is blood, sweat, and tears.

Maybe you’ve seen this picture, it popped up on my Google Plus feed a few days ago:

You might think, surely it can’t be that bad, it’s not that you have to own every single one of these devices, right? After all, there are simulators and stuff and you can do all the testing from the comfort of your desktop, can’t you?

Well, based on my experiences so far, maybe it’s not that bad, but it’s bad. For reliable results, you do have to test on real devices. While the iOS simulator that comes with the Xcode suite appears to be good enough for mobile web apps testing, the Android virtual device is useless. Its performance is a joke and makes it impossible to work with anything that requires UI responsiveness (such as my precious plugin). So, I’m testing with two real Android devices, one running version 2.2 and another running 4.2, and I hope the results are representative enough to generalize towards the overall population of Android devices out there.

In addition to that, mobile browser debugging tools are still immature. For the Android version of Chrome, there is a very good remote debugging utility, but no such thing exists for the default Android browser distributed with the system (or at least I’m not aware of such a thing). And although the two browsers should be pretty similar engine-wise (as they both use WebKit and are both made by Google), in my tests I did come across a bug that only manifested itself in the default browser and not in Chrome, and so was hard to track down.

I have also experienced funny things like bugs mysteriously disappearing without any changes to the code (and re-appearing later, naturally), strange HTML positioning problems, etc. At one point, when I was trying to reproduce some weird issue, repeatedly hitting that small screen and inventing brand new profanities, I realized that the last time I felt this level of frustration was in the dark ages of IE6. Yes, I mean it — mobile web development can be a horror comparable to dealing with IE6.


Sorry for the amount of whining in this post, I think I just had to vent. I survived IE6, so I’m not going to give up now, either. That release candidate is coming, I will keep you posted.

Monthly Donations: Perl Dancer and the Treatment of Czajka

Friday, June 28th, 2013

It’s donations time, everybody!

Today I’m once again supporting an open source project that I’ve already donated to last year. There are many projects that I use on a regular basis or even every day, so I feel they deserve more than just a one-time donation. One of these projects is Dancer, the Perl web framework that I admire and which has been powering this site for more than two years now. Sadly, these days I don’t have as much time to contribute to the project as I had in the past (when I wrote a few Dancer plugins), so at least I’m going to help the project with my little donation.

The second of this month’s donations is to help fund the treatment of Czajka, the horse that was rescued from being sold to a slaughterhouse — as you might recall, I wrote about her last month. Medical tests revealed that Czajka suffers from a serious injury to one of her back legs which must have happened sometime in the past. She needs to undergo an operation and have the leg put in a cast, then stay in a horse hospital for two months, until the cast is ready to be removed. As you might imagine, all this costs a lot, so the Gift of Heart Foundation (who is taking care of Czajka) is accepting donations to fund it.

I hope the full amount gets raised soon and Czajka won’t have to wait much longer for her treatment to begin. If any of you, my dear readers, would like to chip in but don’t know how to proceed (because of, for instance, not understanding the Polish website of the Foundation), feel free to contact me and I’ll assist you.

Goodbye Old Dell

Saturday, June 22nd, 2013

In my apartment, there’s a deep dark closet that serves as a morgue for old computers and other electronic crap that I no longer use. A few days ago I decided it’s time to clean it up a bit and get rid for good of some of the junk, including a few ancient laptops. One of those laptops brought back many good memories, and I decided it deserved a little memorial in the form of a blog post.

The machine was an old fat Dell Latitude XPi CD, with a 150 MHz Pentium CPU and some ridiculously little RAM. I ran Slackware Linux on it, and since the system was rather slow, I couldn’t really work comfortably with a GUI, so I mostly lived in Emacs. At that time, it was my one and only programming editor, as well as mail/Usenet client (courtesy of Gnus).

Not having a bunch of windows around was actually a productivity boost, as it meant less distractions — there was just me and the code on the screen (and usually some documentation in a hidden buffer). A Zen mode of work, as it tends to be called these days.

The laptop accompanied me on a few snowboarding trips, when I was spending most part of the day cruising the slopes, then in the late afternoon grabbed a beer and did some coding. I remember on one of these trips I wrote MIXemu, the MIX computer simulator. Snowboarding, beer, and programming was my idea of sex, drugs, and rock and roll back then — ah, good old times.

Here’s a last, pre-mortem photo of the machine, looking as majestic as it possibly can:

Rest in peace, my crappy old laptop, you won’t be forgotten.

Montly Donations: The Perl Foundation, “Przystan Ocalenie”, and Czajka

Friday, May 31st, 2013

This month is the first anniversary of my monthly donations to open source software and charity organizations, as I started this initiative in May last year. Hooray!

To celebrate the anniversary, I made donations to the same organizations as I did back then, and that is to the Perl Foundation and to “Przystan Ocalenie”, the animal rescue centre.

I also made one additional donation this month — my friend Jakub told me one day that he and his workmates were collecting money to rescue an injured horse destined for slaughterhouse. I chipped in, we collected more than enough and the two-year old filly Czajka has been saved. She’s now undergoing medical tests and treatment in a horse shelter. Here’s a photo of her:

Get better soon, Czajka!

Intergalactic Transition

Tuesday, May 21st, 2013

I recently replaced my phone, an old first generation Samsung Galaxy S that served me for the past three years, with its latest successor, Galaxy S4. Here’s a short account of how the switching process went.

My “Galaxy S to S4 Transition Kit” consisted of:

  • Two USB to micro USB cables
  • A pair of scissors
  • MacBook Air
  • A credit card (with at least $50 available)

The purpose of each of these items will be revealed in a moment.

The first thing I did was remove the SIM card from the old phone and, well, fail to put it in the new one, because it turned out S4 needs a micro-sized SIM. I decided my scissoring skills were sufficient to trim the card by myself, so I did, with great care and making sure to stick out the concentration tongue. I slid the microfied card into the slot, it clicked in nicely, and the phone greeted me with a PIN input screen. So far so good.

Of all the stuff I had on the old phone, it was the contacts and SMS/MMS messages that I couldn’t leave behind and wanted to transfer to the new device. I didn’t need to copy all the apps and their settings, in fact I preferred to reinstall and reconfigure them one by one to have a clean start.

I googled around to find out what my options were for copying contacts and messages. An obvious first choice was the application made by the vendor — Samsung Kies. There was no Linux version of the software, just Windows and Mac OS X, so that’s when the MacBook came in handy.

I installed Kies and it recognized both phones, but it quickly turned out it was only good for transferring contacts. While it did allow me to extract the messages from the old phone, it didn’t offer the option to put them on the new one.

Looking for alternative solutions, I came across MobileGo, which seemed to be a solid contender, per numerous recommendations. Again, it wasn’t available for Linux, so I got the OS X version. Unfortunately, the software didn’t even recognize the S4, it just kept saying the device was sleeping (it wasn’t) and had to be woken up. There were some suggested fixes, but neither of them worked for me. I thanked MobileGo for its efforts and uninstalled it.

I then found an app called, promisingly, Backuptrans Android SMS+MMS Transfer. Of course, no Linux version, installed it on the Mac. Much to my joy, it did recognize both devices, retrieved all the messages from my old phone, and copied them to the new one! Actually, just the first twenty messages were copied, since it was a trial version and the cheapest license was over $45 (the listed price was $29.95, but they also make you pay for “Registration Backup Service”, whatever that is, and some tax). At this point, after two hours of struggle, I just wanted to get this over with, so I bought the license. An hour or so later, all my messages were happily transferred to the new phone.

I proceeded to reinstall the apps, which went nice and smooth, so I don’t have anything to rant about and won’t go into the details. To summarize, the switching operation took me a few hours, some handcraft, and a considerable amount of money. That’s way more hassle than it should be, in my humble opinion. I would expect a company as big as Samsung to provide a straightforward way to do something as common as copying messages, without the customers having to pay for third-party solutions. Maybe it was just my problem, as I was making the transition from a rather old phone (three generations old) and maybe it’s easier with S2 or S3, I don’t know. But still.

Anyway, I like the new Galaxy so far, and I’m really glad I can finally test apps and JS code on a real Android 4.x phone, and not a lousy virtual device.

Monthly Donations: DAViCal and the “Friends to the Animals” Foundation

Tuesday, April 23rd, 2013

I’m back from a week-long snowboarding trip to the Stubai glacier in Austria — I had a great time, feel refreshed and have lots of energy to work on my projects. But first, let me take care of this month’s donations!

The project that I’m supporting this month is DAViCal, a calendar sharing server that implements the CalDAV protocol, written by Andrew McMillan. I’ve been using it for a few years to synchronize calendars on several workstations and mobile devices, and have nothing but praise for it. Thanks and congratulations to Andrew and the contributors to the project!

I’m also sending a donation to the “Friends to the Animals” Foundation in Katowice to help one of the dogs that they rescued — an elderly dog named Max. The dog suffered a car accident a few years ago, had one of his legs amputated, is deaf, and requires costly treatment and constant supervision by a vet.

It’s actually my second donation to the “Friends to the Animals” Foundation, as I’ve already supported them last year. My previous donation was for Manio, a cat that fell out of a window on the 10th floor and miraculously survived. I contacted the Foundation recently to find out how Manio was doing, and was very happy to hear that he’s all fine and has a new home! Here’s a photo of the lucky cat with his new owner:

All the best to Manio, Max, and all the people of the Foundation!

Another Update on imgAreaSelect

Sunday, March 31st, 2013

Here’s a little update on the development of imgAreaSelect version 1.0 with mobile browsers support, since people are inquiring about it every now and then.

I had a plan to release the glorious version 1.0 mid-March, and for a while it seemed everything was going in the right direction — I fixed my iOS testing setup (which is a VM running Mac OS X and the iOS device simulator), resolved some issues that came up, and found the plugin to be working nicely in both iOS and Android 2.x stock browsers. Then, for the first time I tried it in Android 4′s browser, and was greatly disappointed to see it being broken and pretty much unusable.

I’m not sure what is the cause of the issues, but it seems to be related to how touch/mouse events work in the newer Android browsers, and I’m slightly worried that fixing the problems might require a significant refactoring of the event handling code in the plugin. And it doesn’t help that debugging JavaScript on mobile devices is still a pain (though, I’m having some hopes that remote debugging might improve the situation).

All in all, I can’t say how much longer it’s going to take me to fix that and make a release. Nevertheless, I’ll keep working on it and will let you know how it goes.

TinyTimer – a jQuery Timer Plugin

Friday, March 29th, 2013

Here’s a slightly late announcement of a new jQuery plugin that I’ve made. Its name is TinyTimer and it’s a countdown (or countup) timer that you can put on a web page to show, for example, the number of days left until the next predicted doomsday or another significant event. Here’s how it might look:

There already are dozens of plugins that do this — my goal was to build something really tiny (not larger than 1024 bytes when minified), but still feature-rich. The list of features includes:

  • Counting down to or up from a specific date/time
  • Flexible formatting of displayed time
  • API functions to pause/resume the timer
  • Callback functions for every tick and countdown end

The plugin is published on jQuery plugins and on GitHub. For usage instructions, refer to the README file in the repository. As usual, I’m looking forward to your feedback.

Monthly Donations: c:geo and the WWF Poland Lynx Campaign

Tuesday, March 26th, 2013

Monthly donations strike yet again! Today I’m making a donation to c:geo, a geocaching application for Android devices. In case you haven’t heard of geocaching, it’s a modern-day technology-driven treasure hunt game (I encourage you to find out more and try it!).

I’m not a particularly active geocacher (so far, I only found forty-something caches, over the course of a few years), but when I do have the rare opportunity to play the game, I very much enjoy it. One of the contributing factors to this enjoyment is the c:geo app, in my humble opinion the best geocaching application for Android (and I’ve tried a few). Thank you, c:geo developers, for your continuous efforts to keep it that way!

The second donation that I’m making today is to the Lynx Campaign of WWF Poland, which is an initiative for the revival of lynx population in my home country. Years of hunting and habitat loss have reduced the number of lynxes in Poland to just about two hundred, and the campaign’s plan is to increase that number by relocating animals from Estonia, where the population is stable. So, make yourselves at home, Estonian lynxes, and, well, repopulate away!

  • Archives

  • Categories

  • Meta

  • Latest Tweets

    Warning: Illegal string offset 'last_access' in /usr/local/www/ on line 334

    Warning: Illegal string offset 'time_limit' in /usr/local/www/ on line 334

    Warning: Illegal string offset 'last_access' in /usr/local/www/ on line 336

    Warning: Illegal string offset 'twitter_api' in /usr/local/www/ on line 234

    Warning: Illegal string offset 'user_token' in /usr/local/www/ on line 262

    Warning: Illegal string offset 'user_secret' in /usr/local/www/ on line 263

    Warning: Illegal string offset 'consumer_key' in /usr/local/www/ on line 264

    Warning: Illegal string offset 'consumer_secret' in /usr/local/www/ on line 265

    Warning: Illegal string offset 'twitter_username' in /usr/local/www/ on line 270

    Warning: Illegal string offset 'show_retweets' in /usr/local/www/ on line 272

    Warning: Illegal string offset 'exclude_replies' in /usr/local/www/ on line 275

    Warning: Illegal string offset 'twitter_data' in /usr/local/www/ on line 282

    Warning: Illegal string offset 'twitter_data' in /usr/local/www/ on line 350

    Warning: Illegal string offset 'twitter_data' in /usr/local/www/ on line 351
    Twitter outputted an error:
    Warning: Illegal string offset 'time_format' in /usr/local/www/ on line 484
  • Follow odyniec on Twitter