2019/11/24

Current version of this blog is at http://www.miroadamy.com/

 


The Fork at the end of this blog

2009/12/29

This is the fork at the end of this blog. What I mean is that that this is the last post on this blog: https://thinkwrap.wordpress.com/

I am not going away from the blogosphere. Quite the opposite – after playing with Twitter, Facebook, Wave and other social fashionable tools, I think I have now better grasp on what is the place and meaning of a blog versus the microblog or social site. This blog is going to be split into two independent blogs, one completely mine and one shared with my friends and coworkers.

Yes, after the merger of Thinknostic and Pentura earlier this year, we (meaning ThinkWrap Solutions) have now integrated, corporate blog that is way more than a single guy’s opinion. I am one of the contributors, meaning that you will find posts by myself but also by Nael, Milos, Mike and few more great and talented guys we are happy to have as part of the company. And more will certainly come. Oh, the URL – see http://blog.thinkwrap.com/.

The second life of this blog continues on my very own URL, http://miroadamy.com/. For my own convenience, I have exported everything written here and imported it back. It is also WordPress, hosted by same service, all I have added is custom domain redirect – of a domain I am holding since 2003 and never had really good use for it. So now I have.
As the URL suggests, it will be personal blog, still very technically oriented, but occasionally going into areas of I have been avoiding until now – being one of the “unofficial” Thinknostic blogs.

Therefore – if you have bookmarked this site, please change the bookmarks to here or here. Or both :-).

And – as one of my favorite Sci-Fi authors would put it: So long and thanks for all the fish …


Facebook domain type-in hack

2009/07/24

You know the drill: open browser, new tab, type ‘www.facebook.com’ and in moment you can see who of your online buddies is up to something interesting. This is exactly what I did. Only I did not end up in well known Facebook page, but on something really fishy:

Picture 3

This is definitely NOT facebook. How come I ended up on ‘quiz.us’ site when I typed in http://www.facebook.com. Or did I ? Let’s do it again:

Picture 2

Do you see the problem ? It is the URL. Unlike real http://www.facebook.com, it is http://www.facebok.com. Easy to overlook. Modern browsers make our life easier by suggesting domain named. And ‘facebok’ comes in alphabet before ‘facebook’. Which is more than enough to catch many lazy users, like myself.

These guys – quiz.us – were obviously not Facebook related and judging by their pages behaviour, their were up to no good.

After clicking on ‘Skip this offer’ it opened up another window, did several redirects and reloads.

Picture 4

The new window tried really hard not to allowed to be closed easily. Annoying pop-ups, deliberate language to confuse OK and Cancel, more pop-ups.

Picture 7

Picture 5

The “company” is registered in Florida, US, as the Who Is told, it is Named “Moniker Online Services” with technical contact ‘Moniker Privacy Services’. Not sure what they really are, but certainly what their pages tries to achieve is a disservice to anybody’s privacy.

Lesson learned: use trusted bookmarks, do not click on combo box suggestions.

At least not until there are so many kinds of filthy internet vermin around. Facebook atracts so many new users that are not very experienced in dirty tricks the spammers, phishers and hackers use. Spread the word and help your friends to avoid pages and companies in business of phishing and deception.


Forget me not, Web2.0 edition

2009/05/23

I stumbled upon this pretty nice little application or service – depends how you see it. It is called reQall (obviously would have been recall, but recall.com as every good domain is taken.

What it does is that allows you to set a reminder in the future to do something – at given time and date: buy X, call Y, do Z. Nothing to earth-shattering about that.

What is neat is the way how you do it. Actually, many ways:

1) old fashioned: use web site, enter reminder. Just type text and reQall will extract both activity (buy / call etc) as well as date and place it in appropriate category. And when time comes you will be notified: either via email, or via SMS or even by some of the IM services. Currently supported are Yahoo, Google Talk, Jabber and AIM.

2) modern: use iPhone app to type in reminder. Same goodies as wit web, only – unlike Web – you have the phone with you available quickly at the moment when you actually need to remember something.

3) modern AND cool: use the same iPhone app, and speak up to 30 second message. It will be converted to text and then analyzed same way as typed text. I am not sure whether it is automated translation or some poor fellas in third world country and listening and typing it in. The understanding is VERY good. It even handles non-native speakers of English with strong accents (like myself) with surprising success rate. I had occasionally some question marks indicating that Person’s name or local place was not understood. For this occasion, you can always listen to your own audio 😉

You can also subscribe to daily jots that sums up your upcoming events.

Best of all: it is a free service. There is a pro version for $2.99 a month which adds some nice features. I am seriously considering to go for Pro just to make sure they can survive – as long as I find that I use  it more than 1-2 times a week, I am in.

Give it a try, it may be worth one small chai latte a month.


Book recommendation: Outliers by Malcolm Caldwell

2009/05/20

From the author that wrote Tipping point (on my reading list) as well as Blink – which I listened to but found rather controversial. I was very curious what will this one be about.

The book is about success and people that managed to achieve extraordinary results. It touches several topics, I will pick three of them that I found most interesting. It starts with interesting observation – if you look at the MONTH of the birth of junior NHL hockey players, you’ll discover that over 50% of them was born between January and April. Certainly not anything like normal distribution. The point is that cutoff-date for signing up children into hockey training in Canada is January 1st. At the age when this happens (5-6 years), kid born in January has significant physical and mental advantage against kid born in November or December. As result, the early born children perform better in their category, and as result they are more likely to make the selection between the talented and perspective. Those selected get much more opportunities to play and practice, which causes them being really better players than late born ones – a kind of self fulfilling prophecy. As result – if your kids are born after August, better reconsider the NHL dreams. If you believe what M.G. is saying, I mean.

This topic leads to the second big theme that made me think really deep – the 10’000 hours rule.  M.G. claims that in order to be really good at pretty much anything, you have to spend about 10000 hour practicing.  Among many examples he mentions Bill Joy and Bill Gates with their early years almost unlimited access to the computer, Beatles during their concerts in Germany and several others. If this is really true, it has quite serious implications for our profession.

The third is very interesting comparison about how differences between eastern and western agriculture – growing rice in rice paddies vs  western farms has implications on the work ethic and math skills of the population.

He also explores many other quite interesting subjects – the ethnic theory of plane crashes (exploring how “power distance” in particular cultures impacts the communication between captain of the aircraft and first officers), why are merger and acquisition law firms pretty much of the same ethnic origin and also claims that the US schools are basically OK, it’s the parents that do not do enough for their kids education.  Hmm.

To sum it up, it was good and interesting read. Certain parts could be shorter – sometimes it unnecessarily re-iterates the same message,  but it is certainly very intellectually stimulating and thought provoking book.
Although I am a bit skeptical with respect to some of his conclusions or input data – as we know, if we properly select data set it is easy to prove pretty much anything ;-), I am very glad I picked it – the point of view and approach presented is absolutely worth the time and money spent.

The destilled message of the book can a bit demotivating to those who believe that talent and hard work will always pay back: even if you have all the talent and put in all 10K hours, you still need to have that final ingredients of success – such as being born in January for NHL hockey player and a bit of luck. Also those who believe that the succesful people are just lucky or born with silverspoon may be disappointed that all that does not work without the really hard work and practice.

Unless you belong to one of the above groups – recommended. And if you do – you should definitely read it !


Lost in the social networks

2009/05/17

This is public answer to all who were asking why is my blog so badly neglected. Short answer is: It is because I am pretty active elsewhere and did not really find any additional time to allocate. If you are busy person, now you know, see ya later. If you are curious what elsewhere means, read on.

Last year and before, blogosphere and this blog was *only* part of the social networking space I was paying attention to. Since about 3-4 months I started to really pay attention to Facebook. I originally joined to find out what my son and couple of friends are up to and somehow I started to see value in this channel of communication. Recently, even my nephews and children of a very good friend that moved from Ottawa to Europe.  So Facebook became the “generation bridge” and channel for stuff out of workspace.

With iPhoto’09 excellent Web integration plugin it is so easy to share picture that I could not resists and uploaded couple of albums 🙂 – like this one.

About month ago, I fell for Twitter. I had account on Twitter for several months, but did not really get it. Actually I pretty much hated Twitter being to most discussed topic on Twit. It was actually one of our owns – Nael – that caused

me to reconsider, and I am glad I did.  Speaking of Nael – if you are interested in social networks from developer’s point of view, SEO and location based services, follow Nael on Twitter. He also runs very good blog.

Again, Twitter is excellent addition – it covers the niche that is too low level or too short lived to be Facebook Worthy. With clients like TweetDeck I can even update both Facebook and Twitter, if I decide to do so. Different people use it for different purposes, for me it is replacement for news and RSS, filtered by the people I have selected combined with (filtered) lifestream log of events and ideas.

For the stuff that is really work related, we have two additional social network and collaboration tools, that limited to the company employees. One is Yammer – a private version of Twitter with very nice UI. Second is Wiki – we use Atlassian’s excellent product Confluence. This is location for everything that is either client confidential, covered by NDA or has intellectual property value. As it happens, lots of information, e.g. related to ATG development goes through and ends up in these channels.

I have also reluctantly returned back to log on into MSN Messenger and Skype. I generally find them quite disruptive and leave them off unless I have a immediate need to communicate. Which I do. The project I am working on has contributors all over the place – Toronto, Halifax, Cape Breton, Ottawa – and MSN is the “bloodline” of the project communication.

So if you want to keep in touch, do not rely solely on blog. You can see me on Facebook (search for Miro Adamy). If somebody I never heard of sends me a friend request I often ignore it, but if you mention blog, I will not. Or you can follow me on Twitter – the nick is miroadamy. For that you do not even need permission :-).

The only way how to follow me on Yammer, you must join ThinkWrap Solutions :-). The good news is that we may be needing just somebody like you – there are couple of really interesting projects starting soon, and besides, we are always looking for great people. Send resume to careers at thinkwrap dot com and you will hear back from us.

Please note – no overseas or teleworking and no agencies – you must be legally able to work in Canada and live either in Ottawa or Toronto (Mississauga).


Microsoft Office 2008 vs NeoOffice vs iWorks’08

2009/04/28

I was happy user of the iWork Suite 08 since I moved to OS-X. It somehow better matches the way I am thinking and does much better job than Office to get me from idea to acceptable looking rendering of that idea in the form of document, spreadsheet or presentation.

In past two month I was involved much more interaction with the requirements, business analysis and project management part of the process. Which inevitably means much higher exposure to documents creation, collaboration and exchange. iWork gives you reasonably good compatibility with Office document formats, which means that you can easily import almost every Office document modify it and export it back so that Windows user will see almost all of your changes. Almost everything will be just fine. Unfortunately, almost is not the same as everything: it often breaks fine details of formatting, reviewer comments and does not really work for more complicated Excel spreadsheets. Especially those spreadsheets which project manager-ish people so love to create.

I tried to use OpenOffice/NeoOffice which suffers from the same malady. It spoils different set of features than iWorks, quite often works well, but it cannot be trusted. On top of that, it just does not feel right and is kinda ugly.

So I had to take a deep breath and installed Office 2008. After few weeks, here is my impression and very brief comparison of all three mentioned suites.

With Office 2008, I was not having very high expectations regarding user experience on Mac and I have to report that Microsoft did not disappoint. I indeed was not too great experience, starting with installation.

Office 2008 contains 4 products. I absolutely wanted Word and Excel, was not quite sure about Powerpoint (because Keynote is sooo much better),  and certainly had zero interest in Entourage and Microsoft Messenger.
Guess what: Microsoft installer, as many times before, knew better what I want and did not give me a chance.  All questions asked were related to what Microsoft needs to know (serial number), with little regard for users interest.  It also installed whole bunch of fonts, which I did not really want – but I guess to provide 100 % compatibility with Windows, it may be a good idea to include same set of fonts as Windows office has.

After installation, Office 2008 works reasonably well. Minor annoyance is start taking forever – I guess it is because (unlike under XP/Vista) OS-X does not preload shared components (and does not eat up memory just to make Office appear start snappier).  As soon as any Office application is running, I have occasionally seen weird behaviour when switching between windows (note lowercase ‘w’) and does not play nice with Spaces. Sometimes scrolling forgets to redraw screen in word and you have to minimize/restore to get back to readable text. And it is generally quite slow even on very fast and powerful machine.

With respect to the main motivation for getting Office – seamless document compatibility – that problem appears to be solved. So far I have not seen anything that would be distorted or deleted just because I touched the file on the Mac.  Only exception is Excel – Office 2008 does not support VBA macros, so your mileage with more advanced spreadsheets may vary.

Should I mark my experience with Office 2008 using school grades, it would be:
– installation: C
– user experience: B-
– compatibility with Windows Office: B+
– price/performance ratio: D
– overall: B-

For iWorks’08 it would be:
– installation: B (if I recall correctly, it was OK, but required installer).
– user experience: B+
– compatibility with Windows Office: C
– price/performance ratio: A-
– overall: B

For NeoOffice:
– installation: C-
– user experience: C-
– compatibility with Windows Office: C+
– price/performance ratio: A
– overall: C+

Recommendation:

If you are working on Mac as part of a team that collaborates using Office documents, you most likely need Office 2008. Unfortunately the only office package that comes very close to be compatible with Office 2003 and Office 2007 is Office 2008.

If you value user experience, aesthetics and are OK with mostly one-way conversions between Windows Office, you will find iWork provides excellent value and will make you feel at home. If you never have to exchange documents with Windows world, enjoy it – we all who have to do it daily are green with envy.

If you for economic or ideological reasons refuse to pay for software (or only for software made by certain companies ;-)) – or if you require compatibility with Linux based office, you have no other choice than NeoOffice or OpenOffice. The first one looks considerably better on OS-X – although still not quite right.


Almost perfect backup backup solution

2009/03/24

The double backup word in the title is not an oversight. If I would be talking about “almost perfect backup solution”, it would be Time Machine – which has proven, despite it’s minor annoyances (see this) to be very unobtrusive and functional. As long as you have Mac and Leopard, of course.

What I am talking about here is second level – an offsite backup, that you may need in case you house burns down, gets flooded or your computer with time machine disk gets stolen. I do not live in tornado valley, earthquake zone and crime rate around Westboro is fairly low even compared to low Canadian levels, but anyway.

The product in question is Backblaze and I am happy user since December last year. It is cloud based service, running on (I assume) Amazon S3 and unlike Time Machine it works for all you stuck in Windows world as well. Not available yet for all you brave explorers of multiple universes of Linux, but I guess you would not give up rsync anyway :-).
All you need to do is setup a very low profile client that runs in the background and uploads all that was changed. The initial backup can take few weeks, depending on the size of the hard disk.

picture-5

It backups almost everything, except system areas and few excluded file types – like DMG and VMDK (virtual machine volumes). You can define your own exclusions but you cannot  un-exclude the default exclusions.

picture-6

Backblaze has quite attractive pricing scheme: you pay $5 a month per computer and can backup as much as the pipes between your house and cloud allow you to push up. The price of one venti chai latte is in my books very much worth the good feeling.

When the disaster strikes and you need your files, you do not have to go the slow route and download multi-gigabytes of data. For reasonable fee, Backblaze will send you your data on DVD’s or even on USB disk. I hope I will never need that :-). For small recovery you can always access files using Web interface.

Because I am curious creature and like to understand how thing work, I was watching its progress for few weeks. Thanks to my curiosity I had several communications with backblaze technical support. I am happy to report that:
a) it exists ! (this is always the case with cloud companies )
b) it is very fast – I got back response in few hours, one day max
c) it is very competent and friendly. The person I communicated with knew the product at the deepest technical detail level.

picture-8

Last but not least: privacy and security. Many people are concerned about having their data anywhere except on the server in locked office. I trust strong encryption. In addition to using SSL for transfer, Backblaze gives you an option for aditional encryption on client side – before the data leaves your computer it is encrypted with the key only you know. This way you cannot download the data through Web unless you enter the key and not even Backblaze can read your data.

So why almost perfect ? There are few minor issues. I would certainly like to have more control (and better UI) for both monitoring and management of the files to be backed up. Either GUI client, or simple way to put a file inside directory that would work as .gitignore. Actualy, for a developer, it would make sense not to backup anything specified in .gitignore or .svnignore or .cvsignore files, because if something is not worth putting to source control, it is not worth backup up either.

Other are duplicate files: I have on my notebook subset of pictures, podcasts and music from home iMac. Those files are backup up and tranferred twice. With volume, this becomes an annoyance. Backblaze could based on SHA1 recognize the duplicate files within same account and offer option skip those already uploaded – same way how Git stores each blob only once.

Last issue (which is completely out of Backblaze’s control) is your bandwidth. Since I started, I am maxing out my 95 GB transfer limit with Rogers in third consecutive month. Here in Canada, 95GB is max you can get unless you  pay for business connection[1] (which is several times the price of “Extreme plus”). You have some control over the backup upload speed – you can “throttle” the speed and you can also manage schedule (to a limited extend). This may or may not impact you – depending on your bandwidth allocation and size of the data to back up.

All summed – definitely recommended.

Disclaimer: I am not anyhow affiliated to Backblaze product or company. Only reason for this blog is my personal, very positive experience with their product and user support, which I believe deserves to be shared.


Evernote Firefox plugin version 3.0.0.45382 – do NOT update

2009/03/22

Since few months I have slowly switched all my online notebooks to Evernote. In case you are not familiar with it, it is a great service. You can clip pieces of Web pages, type in notes, attach documents and multimedia files (pictures, sounds) and store them online to be always available through nicely done Ajaxian Web interface. The notes can be tagged, organized into notebooks and full text searched. One of the killer features is that for uploaded pictures, Evernote will do OCR and include the photographed tex into full text search

For each platform there is desktop application that seamlessly synchronizes the on-line notes with local database and also allows create notes using thick client interface with all desktop goodies. If you are iPhone users, make sure you get the free app that allows both access the notes as well as capture notes – textual, pictures or voice notes with the GPS information.

The basic service is free and limits you not by storage taken on the servers, but by transfer 40 MB a month, which is a lot unless you do picture notes. The very reasonably priced pro-service increases the monthly transfer quota to 500 MB and gives few more goodies – like PDF and Doc attachments to the notes. I am fairly frequent user and never used more than one half of that amount. To make clipping from the browser easier, Evernote offers Firefox plugin as well as Safari plugin.

The Firefox plugin is equipped with the self-update capabilities. And this is why I am posting this: if you have not updated yet, stick to version 3.0.0.128, do NOT upgrade to latest but far from greatest 3.0.0.45382. The latest version of Evernote (3.0.0.45382 as of today) is definitely a step back. Unlike the .128 which clips the selected text nicely into the Web, the .45382 always opens the desktop application and creates note there. This is only annoying and there is no obvious way how to prevent starting desktop client.

The real problem is that the captured note contains HTML attachment named ‘Firefox clipping.html’ and does not show the clipped text in the Evernote desktop client. To see what you clipped you need to open the clipping in the browser. To add insult to the injury, the quality of clipping is dramatically worse than in .128. The layout is all over the place, and result looks much worse. It is hard to tell whether this is caused by clipping or by different way how to display result.

If you got to the point of bad surprise after updating, here is how to bring back the version .128:

– uninstall extension

– restart Firefox

– download the previous version of the extension (the .xpi file) from here https://addons.mozilla.org/en-US/firefox/downloads/file/47839/evernote_web_clipper-3.0.0.128-fx+tb.xpi and save it on local disk

– in Firefox, open the downloaded file and confirm installation

– restart Firefox

I hope that somebody at Evernote will recognize that the version .45382 was a bad idea and bring back the clip-to-web capabilities (or at least make it configurable), avoid creation of useless HTML attachments and fix the clipping engine. Until that happens, I will stick with .128.


Bye bye Ruby, hello Groovy

2009/03/17

I first time discovered Ruby back in 2006 (yes, I know, I was late to the game), and immediately fell in love with it. The dynamic nature of the language, the consistency, pure esthaetics and practicality certainly changed the way how I saw software development and programming languages.

Since that time, I made several attempts to integrate Ruby into my professional life and make it part of the toolbox. It was cool to play with Ruby in my spare time, but I wanted to use it on projects whose main development language/platform was mainly Java. Use it as scripting, glue language. Use it as toolkit language to e.g. generate test data, access databases, convert files, build projects and maybe even build a piece of Web applications (admin apps for example).

It never worked. The main problem was availability of the Ruby platform in all environments. While JVM was there by default, Ruby had to be installed and sometimes compiled for the more exotic platforms. And that can be a big deal if you have not full control over the environment – scenario which is pretty much guaranteed in enterprise environment. It is hard to argue with the sysadmin saying “You want to install that in production just to run scripts ? Why do not you use Perl or Bash or Java that are already there ?”

For a little while I thought that JRuby may be the way. After all – all you need is JVM and JRuby is just another JAR, right ? As Goethe said, grey is all theory and green is the tree of life :-). A language is as good and useful as are components and libraries available. One certainly does not want to write everything from scratch. Libraries in Ruby are Gems and Ruby provides very nice, mature and IMHO superior system for component management to Java JAR’s – because it handles different versions of same Gem very well (maybe some day there will be Gem hell after DLL hell and JAR hell 😉 ). Unfortunately, some Gems (by Murphy’s law most of the really interested ones) are for performance reasons built as thin Ruby layer around native (written in C) library. And JRuby does support that, making most of the Gems unavailable.

Even if JRuby had all the gems available, there would still be a problem that the Gem system and Jar system are different and do not quite fit together. Also, from language point of view you certainly can use Java objects in JRuby and vice versa, but doing that makes you feel slightly schizophrenic – what reality am I in? Is this a Java Java class or Ruby Java class ?

Third problem that I have encountered after coming up with some Web App in Rails is that the deployment model is very different from Java deployment model which myself and people in organizations we work with understand really well. We know how to deploy so that it scales, we know how to monitor and maintain a Java enterprise app. But not a Rails app with all those Mongrels, lighttd’s and other creatures :-). This leaves many open questions like “How do we size hardware for expected load ?” for which I do not have answers, and judging by well publicized issues with Rails apps scalability, even the best and brightest in Ruby world may not have either – or at least some people say so.

About at the same time I discovered Ruby, I also become aware of the strange Java dialect called Groovy. It sort of tried to do the same thing I hoped to use Ruby for, only from firm within Java environment. The original reason I did not want to look deeper at Groovy was that compared to straight elegance of Ruby, it looked kind of ugly. The Java skeleton was sticking out in wrong places and alltogether it just did not feel as good as Ruby.

I have to publicly admit I was wrong.

Being a Mac user, I have license for going after good looks and white shiny objects, but when it comes to programming languages, the good looks may just not be enough. The reality is the proof.

During last 12 months, we have quietly and very successfully used Groovy components and pieces on three large projects. It fitted perfectly, never running into anyof the issues above.

Through these projects, I learned to appreciate the Groovy way, my sense of aesthetics stopped to be offended by certain syntax constructs in Groovy and I even started to like them better than Ruby ones. For example, I am now convinced that Groovy categories are safer and better approach that explicitly alerts programmer about using class extension, than re-opening any class in Ruby (which is still possible in Groovy by assigning closure to member in metaclass). Imagine how confusing it can be for software maintenance when reopening and using happens far apart in the source code.

But the most important, the painful realization ” how the heck do I do the XYZ thing in this language ? If I only were coding in Java, it would be so much simpler ” is history with Groovy. Everything that I was used to use in last 12+ years in Java is still there, all the goodies of Jakarta Commons and way more.

Groovy community seems to be less opinionated, less self-righteous than Rails/Ruby community and more understanding for weird requirements and idiosyncrasies of enterprise environments. Rather than telling you “you should not want to do this” and “DHH thinks it is wrong”, you actually may get a helpful pointer to useful website or blog how to do that stupid thing in Groovy or Java or combination of both. Because you know, when one needs to accomplish something that seems to be wrong and illogical, being told that it is wrong and you should better forget about it does not really help. People who worked with real enterprise system’s integration understand, that cost of touching or changing certain systems is so prohibitive that it is out of question and doing the technically wrong thing may right (and only) option for given situation and customer.

Therefore – bye bye Ruby, Hello Groovy. Next things to embrace and embed will be Grails.