Karachi   ->   Sweden   ->   Karachi, again   ->   Dubai   ->   Bahrain   ->   Karachi, once more   ->   London and Leeds
Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Friday, August 16, 2013

Is Coding the new Latin?

When New York Mayor, Michael Bloomberg, announced in 2011 that learning to program a computer was one of his new year resolutions for 2012, people started wondering if Coding is the new Latin.

Is it really important to learn to code, even though you don't intend to pursuit a career in computer programming?

Some people agree, while others think that it's just a hype. I somewhat tend to agree with the former group. Even though learning to code might not help you directly in your career, it will improve how you think about problems and make you a better computer user, if nothing else.

Whether you agree or not, it's true that some of the most influential (and rich) people in the recent history had something to do with software development. Below is a video prepared by code.org which features Bill Gates, Mark Zuckerberg and several others. The theme is "Every student in every school should have the opportunity to learn to code."


With the advent of Web 2.0, interactive e-learning has become fun and immersive. The best part is being able to learn programming right from within your web browsers! Below is a quick round-up of extra ordinary resources for learning and polishing your programming skills.

The criteria used here is that only sites with free courses, which are either interactive or provide an instructor lead sessions are included.

Introduction to Programming


Code Academy: This is perhaps the most famous of "learn to code" web sites. The main page of this web site starts interactively, and before you know it, you start programming! This is a good resources for coding in general but more importantly, there are several "track" courses such as those for learning JQuery, JavaScript, PHP, Python and Ruby. The non-track courses cover a diverse set of topics such as CSS Selectors and Evernote API.

Code Academy is a nice resource if you already know programming and would like to teach others!


Code School: Code School is really meant for people who already know the basics of programming and want to take the next step by building expertise in web technologies. There are courses available on Git, Backbone.js, SASS, Rails, JQuery and several others.



Learn Street: Like Code School, Learn Street also focuses on JavaScript, Python and Ruby.



Improving your programming skills


Code Learn: If you have done web development in the past, you would know that Ruby on Rails is getting popularity day by day. The aim of Code Learn is to teach you Ruby on Rails.

AppShed: With smart phones, "mobile application development" has made a number of people rich. The aim of AppShed is to teach you mobile application development.

Learn X in Y minutes: This is a community driven site, which provides an extremely quick overview of different programming languages. This could be very useful to get a quick grasp of common construct in a new language.

Monday, August 08, 2011

The StackExchange Network of Sites

If you have ever googled for a programming question, you must be familiar with Stack Overflow---the ultimate points based programming Q&A site. But do you know that there are sister Q&A sites in the Stack Exchange network, specific to other domains? Some of the ones I visit often are

The complete list of sites within the Stack Exchange network is worth going through. Some of the sites are in beta---which means that they are a few months in testing, after which they may get removed if they don't get significant activity.

All ideas for Stack Exchange sites go through a staging zone, known as Area 51. All proposals for new sites go through a "define", "commit" and "beta" cycle. There are 504 proposals on Area 51 as of today. Several of them are worth visiting and supporting.

The format, visibility and performance of questions on these sites are much better than other non-Stack-Exchange Q&A sites. I hope and wish they gradually replace sites like Yahoo! answers and forums like Parenting.com as they did with Experts Exchange.

The more you browse through the Stack Exchange network of Q&A sites, the more you start believing in the power of crowdsourcing.

Sunday, June 19, 2011

Side by Side MS Word Document Comparison

Many a times, one feels the need to compare the contents at the top of a document with another part within the same document. MS Word 2007 and later versions allow you to do that using the following ribbon options:


Here are the steps to do that:

View -> New Window: this will open a second copy of the same document in a new window
View -> Side by Side: this will align the view so that both windows are visible at the same time (each taking 50% of the screen)
View -> Synch Scrolling: this will setup synchronized scrolling; so if you move up in one Window, the other Window will scroll with it.

Pretty nifty!



Here are some related tips/ articles on other apps in MS Office:
  1. MS Project Tip: Task Drivers

  2. MS Project Tip: Linking Task Drivers

  3. Programming MS Outlook

Monday, November 15, 2010

Free Personal Finance Software for the Rest of Us

I've been maintaining Excel sheets for my personal finance for quite some time. It's simple but leaves me with some manual maintenance here and there. Having learnt about mint.com, I thought that I should give online free finance tools a try.

So, let me first clarify who the "rest of us" are. The segment I am referring to do not live in the US and can't afford Microsoft Money or Quicken, and hence are primarily interested in "freeware" or open source software. A typical user in my mind has more than one bank account (possibly in different currencies); he has some cash in hand (again, possibly a few notes in any other currency lying in his drawer); he has some liabilities in the form of house loan, etc. The purpose of the tool should be to show the current financial position to the user. Requirements can further be elaborated as follows:

  1. The software should be (absolutely) free. So, Microsoft Money, Quicken and Money Dance are out.
  2. It should support multiple currencies, and should ideally fetch the exchange rates automatically from some central internet server.
  3. It should provide support for opening different kinds of asset accounts (bank account, cash in hand, etc.) as well as liability accounts (such as home loan, car loan, etc.).
  4. The bank where any accounts are maintained doesn't provide live access to the account statement to these tools. That is, there should be an option to manually do all kind of entries.

Free Online Finance Tools

Unfortunately, mint.com is only for the US people, and wesabe.com no longer exists. Frustrated, I tried both yodlee.com as well as moneytrackin.com, and found several important features missing.

Yodlee's problem is that it's too much focused on "online integration with your bank and credit card companies." The option to create a manual account is hidden deep down (i.e., the usability is poor as if the feature is of extremely low important). Moreover, when you are about to create a new account the currency options are limited to 7-8 different currencies. It fails the criteria test above, and doesn't fit my purpose.

Yodlee Manual Account Opening Screen

And MoneyTrackin's problem is that it's overly simplistic---e.g., in order to create a liability account (such as home loan), you have to enter the balance in negative. The nice thing about MoneyTrackin' is that it efficiently handles multiple currencies (automatically fetches the exchange rates and shows your dashboard in the base currency). Another bad thing about MoneyTrackin' is that too much space is being utilized by ads.

Personal Finance Dashboard from Money Tracking

Despite its shortcomings, if you want an online free personal finance application, MoneyTrackin' comes close.



Free Desktop Personal Finance Tools

Having no luck with online tools I tried GnuCash, Money Manager Ex and Grisbi. Amongst these, Grisbi crashed several times. So, it's out. Money Manager Ex seemed good but it doesn't have the concept of Liability Accounts (loans, etc.). The usability of Money Manager Ex can be improved quite considerably. So, it works but making posting entries into the accounts is extremely cumbersome.

Finally, GnuCash was tried, and it has quite a few interesting things. It wins hands down amongst in free personal finance tools with a minor caveat: it's more than personal finance; it support complete dual entry accounting system. And hence, there is a learning curve here for a novice user.

GnuCash Personal Finance Summary


Drawbacks of GnuCash

GnuCash does have a few flaws that I would like to have fixed. One of them is the download size. It's 62 MB! Secondly, in order to fetch currency exchange rates (or stock quotes) from the Internet, it is further dependent on a Finance::Quote library of Perl. This in short means that you need to download Active Perl (if you are on Windows, which is a 9MB download in itself) and further install Finance::Quote.

My Verdict

GnuCash! Go for it!

Wednesday, November 03, 2010

One reason Google will never fail!

What Google came up with in 1998 didn't make sense to a lot of people. It was a hard sell; hard enough that the co-founders thought they would hit a jackpot by selling the company for $1 million to Excite in early 1999. They had solved a problem which everyone thought didn't exist in the first place. "Search Engine? Who needs that?" In fact, the Adwords money machine (revenue model of putting in ads with search terms) was brought home years later.

Only time told that what they did was marvelous. Despite everyone's lack of foresight, they continued to fix what was a real problem (lack of a decent search mechanism on the Internet). Today, a lot of people seem skeptical about the company's ability to grow and compete with startups in different domains. Lars Rasmussen has been quoted as saying that "Getting Things Done" is now a problem at Google. The failure of Google Wave and the recent resignations at Google (particularly, the heavy employee migration from Google to Facebook) are quoted as symptoms of the problem but I don't agree.

The biggest reason Google will never fail is that they have the means and desire to attack problems which no one else is thinking of. These are the problems which either people haven't realized till now or they think they are unsolvable with state of the art tools. This, on the other hand, is the core strength of Google---they are the ones defining the state of the art---and this ability doesn't seem to have fallen apart over the years. Let me give you some examples. Even the best computer science and engineering guys would agree that these problems are extremely hard to address on a commercial scale. Mind you, this is not an exhaustive list.

Desktop Products

So everyone thought that the browser wars were over; Microsoft's Internet Explorer was the winner. What Google did with V8 Javascript engine in Chrome was mind blowing to say the least. It has been dubbed as "insanely fast," and thus, Google spurred a new era of "faster is better."

Picasa, the web albums and desktop tool, does "facial recognition." The tool lets you tag pictures, and once you tag a person's picture it automatically detects pictures of the same person in your albums. Try it and you'll be floored.

Less Famous Google's Investments

Driverless Cars: It's not science fiction. They have driven 140,000 miles with these driverless cars.

Google Refine: Create structure out of data! So, you have data and you want to create structure out of it? How abstract is that a problem to solve. Try Google Refine.

Google Transit: If you are from a developing country (like me), you will surely appreciate the level of detail available in Google Maps, and the help available with Google Transit. Developed countries, of course, already have much advanced navigation systems in use.


The Awesomeness Factor

  1. Google can tell you that your typical search query produces 0.2g of CO2. Is there any other company on the planet which can beat that kind of detail?
  2. Which software/ internet services company designs and builds its own servers?
  3. Which internet company generates power for itself?


Google's Hamina (Finland) data center

Lastly, it's not that Google doesn't have any problems. No business in this world is infinitely scalable. Cracks appear when you go from a 2 employees company to a thousands one. There will always be a new challenger who is leaner and meaner (hint: Facebook for ad revenue). But what's important to ask is "Do you still hold your forte?" and "Is your forte still relevant?" After all, hasn't Microsoft have a wonderful Q3 revenue despite everyone thinking that the company has gone too bureaucratic to do anything cool?

Sunday, June 06, 2010

Is an MBA worthwhile for Software Engineers?

"Where are you going?" asked Kewan Khawaja, CEO of Techlogix.
"Sweden" was my reply.
He further inquired, "I hope you are not going for an MBA?"
And I said that I intended to pursuit an MS in Dependable Computer Systems from Sweden.

He seemed to digress, "Do you think this is a fascinating building?" The year was 2004, and this was my first and only interaction with Kewan that lasted for around 20 minutes. Techlogix had newly established its office in The Forum, Karachi, where we were sitting. He went on to say, "Don't you admire the systems that are functioning within this building? This is made by an engineer. Compared to that, what can an MBA do? An MBA just blabs."

Read the complete post on The Pied Piper's blog.

Thursday, April 29, 2010

Startup Arabia

Startup Arabia captures the latest in IT startups of the Middle East. It's an interesting blog for people living in the region; I always thought that entrepreneurship of the UAE nationals and those from the greater Middle East was limited to construction and oil industry; this blog told me otherwise.

The website started in March 2008 and I guess it is gaining good momentum. There is a country wise startups page as well.

Wednesday, April 28, 2010

Why Google Indexed My Blogger Archive?

Since the archive pages of your blog repeat the content of your posts by default, there is a controversy about "duplicate content penalty" towards search engine ranking being discussed at every Blogger discussion forum. Some people do not agree to such kind of penalty, and say that it's a myth. Whether it's a myth or truth, you might want to disallow the search engine to index your archive pages so that they never appear in the search results; thus, restricting the end-user to land only on permalinks of your real posts (and not archives).

But wait! Doesn't your blogger template already contain the following line which instructs the Google bot to leave your archive pages?
<b:if cond='data:blog.pageType == &quot;archive&quot;'>
<meta content='NOINDEX' name='ROBOTS'/>
</b:if>
Why, then, the archive pages still appear in search results? One reason could be that you changed your template. While the template may be updated now (you could verify by viewing the page source of your rendered archive pages to see if there is a meta robots tag), at some point in time your archive pages didn't contain this tag, and that's exactly the time when Google indexed these pages. To confirm this hypothesis, you just need to check the source of the "cached archive page" on Google.

Monday, April 19, 2010

Getting Your Blog Listed on Technorati

6WW5RKVMV3ZK

The new method of getting a Blogger blog listed on Technorati is to first open an account there, and from your account profile, "claim your blog." They will give you a token via email but to know what to do with the token, you again have to login to your Technorati account whereby you are told that the next step is to make a blog post where you put in the token. Finally, you go back to Technorati and click "Verify Claim Token."

The result of getting listed on Technorati is yet to be seen.

Saturday, April 17, 2010

Search Engine Optimization (SEO) Shortcomings of Blogger

So, you have a blog on Blogger and you think that the since Blogger/ Blogspot is owned by Google, it will automatically be optimized for Google search ranking? Wrong! Blogger sucks at Search Engine Optimization. There are many workarounds to overcome Bloggers weak SEO handling but why its so complicated is beyond me.

For example, their is certain weightage of the <meta> tags, specially the description meta tag written as follows:

<meta type="description" content="Shortcomings of Blogger when compared to Wordpress and Typepad"/>

While you can add such a tag for your Blog (by editing HTML of the template you are using) but don't you need a separate description for each post? Does the Google owned blogging service allow that? Yes, but its not scalable at all. You can use conditional tags which compare the page URL with the post title and then write a description for that post; something like the following:

<b:if cond='data:blog.url == "http://blog.thejaywalker.net/2009/05/going-to-sweden-for-studies.html"'>
<meta content='A must read if you are going to Sweden for higher education' name='description' />
</b:if>

<b:if cond='data:blog.url == "http://blog.thejaywalker.net/2005/09/pakistani-students-in-sweden.html"'>
<meta content='A general profile of Pakistan students in Sweden' name='description' />
</b:if>

But so many-ifs are not only hard to maintain they are plain ugly. Why not just provide a Description field when you are editing your post so that you can write the right meta description tag with your post?

More information on adding meta tags to blogger is the next step for the eager soul. Also, Meta Tag Generation "tool" might be useful for some.

More on other shortcomings in some later post...

Wednesday, April 07, 2010

How to test a website on Safari when you have a Windows PC

If you have done web development, chances are that you have come across a customer who demands the site to work flawlessly on a variety of browsers; this mainly includes IE and Firefox but sometimes Opera and Safari also make it to the list.

Browsershots is an interesting website that shows you how your webpage looks on several different browsers across all popular operating systems. However, the wait time associated with browsershots is huge. A typical submission to check a website on 3 different browsers took 30 minutes! Of course, one cannot do trial-and-error kind of CSS fixing using this site.

Another option is Browsrcamp which boasts that it can provide instant Mac Safari rendering. However, when I tried it said that Mac services were down.

Other noteworthy mentions could be
But even after going through all the sites I have yet to find a free, fast way of testing your site on a Mac Safari without owning one. One close shot is to just use Safari for Windows. There are very strong chances that if a page is not rendering properly on Safari for Mac OS, it won't work on Safari for Windows either.

Friday, February 12, 2010

Backupify!

Today, so much of your data resides online---your blog, the photos you uploaded, your emails, etc. Have you ever thought of taking a backup of these?

Register for a free account at Backupify before 15th February 2010! The site is extremely well integrated. I'll give it a 5 out of 5 on usability.

Monday, January 11, 2010

Outlook Attachment Sniffer

Sometimes you wish working with attachments in Outlook was easier! I specially desist the situation where somebody sends me an email with lots of emails as .msg attachments, each one in turn containing further attachments; I have to open up and save each message separately!

I have tried but have never given enough time to automate MS Office but I could tell that somebody else would have faced similar problems, and created a solution. Some time spent on Google resulted in discovery of a 30-days trial version of Outlook Attachment Sniffer, developed by a German company. It's a real gem!

Tuesday, September 01, 2009

Pipes!

Sometimes, even RSS is not enough. Being an avid Google Reader user for some time, I frequently thought of having a way to sift through the blog posts/ news items coming in my reading list.

And this is a problem in general, not just limited to RSS: information explosion is eating us out. It takes more time to visit, login, sift through information on a website than to really read/ understand what matters to us. RSS though easy to use, doesn't provide you a means to filter your feed.

So, last night, Yahoo! Pipes flashed in my mind. I had seen the tool, and played with it a while ago but I couldn't think of any application for personal use until recently.

An easy to comprehend example for freelance programmers is given below: You can get a feed from rentacoder.com for new projects available for bidding. You need to login to Yahoo! Pipes and use "Fetch Field" and "Filter" tools to create Pipe output as shown below:



This will give you a list of newly added projects on Rent A Coder with the keyword "PHP" in their description. The nice thing is that you can add the output of this pipe (as another RSS feed) in your Google Reader list. Here is a live running example of the same.

Happy plumbing!

Thursday, May 28, 2009

Mobilink EDGE Settings for BlackBerry

While playing with my Blackberry Curve 8310 a few weeks back, I somehow deleted some configuration which caused all programs using GPRS/ EDGE Connectivity to stop working. The blackberry effectively got limited to being an email client. The surprising thing is that the web browser kept on working but remain limited to a few sites (mainly Google). If I tried to surf to some other site, I usually got one of these two errors:
  • Communication Failure: A communication failure has occurred. The server may be busy, please try again later. If the problem persists contact your service provider.

  • HTTP Error 502: Bad Gateway: The gateway received an invalid response from the server when attempting to fulfill your request. Please try loading a different page. Contact your service provider if the problem persists.

Please note that I have a Mobilink Indigo connection. When resetting the "Service Book Entries" and Re-registering the Host names (as suggested on various sites) didn't work out, I finally figured out that I needed to set the APN Name in Options -> Advanced -> TCP Settings to "connect.mobilinkworld.com" without any userid and password. It seems that Mobilink's settings for Jazz are "jazzconnect.mobilinkworld.com". The settings are mentioned on Mobilink's site as well.

Bingo! Everything is back to normal.

Sunday, May 17, 2009

WolframAlpha Launched

Though the much awaited knowledge computational engine has been launched, it's experienceing performance issues. Google Operating System has done a nice review of Wolfram Alpha here. A must read!

Wednesday, May 13, 2009

Yubnub: Command Line for the World Wide Web

If you are a fan of SlickRun, I have a goodie to share with you today. And in case, you don't know what SlickRun is, you are wasting lots of your time in finding programs to execute, opening documents, and doing redundant things on your Windows PC.

The goodie is Yubnub. Possible uses are only limited to the number of websites over the web. I, for one, frequently use xe.com to convert money from one currency to another. However, the whole activity is quite cumbersome when you have to surf from one page to another just to get the required currency. With Yubnub as your default page, you no more need to do that. Just type "xe -amount 1 -from AED -to PKR" in the search box and you can easily the converted amount!

A list of useful commands (aka Golden Eggs) is also available. The world is not short of useful ideas!

Sunday, April 12, 2009

Job Titles in Software Development

What's beyond Software Engineer/ Developer and Senior Software Engineer/ Developer in your organization?

While searching for appropriate designations in a software development organization---not your typical outsourcing man-hour based company---I was wondering what could possibly be a "good title" for a person who looks after development of multiple products. While one can always come up with stuff like "VP Engineering," I was more interested in the lowest place in an org-chart where someone can manage development of multiple products. I, myself, could come up with only "Software Development Manager Product Line A" or "Group Development Manager Product Line B."

A quick search on the Internet led me to a slightly out-dated organizational chart of Microsoft. There are a few interesting things to observe:
  • The titles for managing development of multiple products in a single product line include CTO, Vice President, Director, General Manager and finally PUM (Product Unit Manager). I guess Product Unit Manager fits nicely to what I had in my mind.

  • There are some high profile people who don't fit in the hierarchy and MS calls them "Distinguished Engineer"---interesting! That further strengthens the idea that a strong engineer does not equal a good manager; so you can promote the engineer while somehow not giving him a team.
The second observation led me to the Peter Principle stated by Joel Spolsky: "People tend to be promoted to their level of incompetence." Very true, indeed. The worst you can do to a strong coder is to make him a product manager---this is completely a loss-loss situation: you lose a good coder, and you acquire a bad manager.

On a closing note, my search also led me to cogmap.com, which has a sort-of-wiki of org charts of some famous organizations. There is always some fresh, interesting concept out there! Check this org-chart of Google.

Sunday, March 29, 2009

What's in a name?

Everything.

Its narrated in Quran (Sura Al-Baqara, 30-34) that Hazrat Adam (AS) was taught the "names of all things" and when the angels enquired why humans were selected as caliphs on Earth, Allah asked the angels to narrate the names, in which they failed. Then Allah instructed Hazrat Adam (AS) to tell the names, which he did.

I was always intrigued by the phrase "names of all things." Below is what my pursuit has led me to. Please note that I am not trying to interpret Quran here, just the phrase, "what's in the name?"

Those who know not are not capable of achieving same results as those who know. And to know is to be able to "identify" and to "associate." Lets compare a person for whom all mobile phone devices are just "mobile phones" to a person who can tell a "Sony Ericsson" from a "Blackberry." Even more is the knowledge of a person (regarding mobile phones) if he can tell a "Blackberry Curve" from a "Blackberry Bold." So, being able to tell the names of things is actually "knowledge."

If this example doesn't make sense, you can fit in anything that interests you---be those mobile phones, type of internet connections, etc.


Quite interestingly, I have found that a lot of mayhem ensues if you can't name things you create yourself. While this can make sense for any creative work (music, movies, painting, etc.), this is typically true for versions of software you create. Let's assume that you are not versioning your code, and you are making changes every now and then, creating new binaries. If there is no way to tell one "version" from another, you are bound to
  • fix bugs in more than one places
  • fail to properly upgrade one system to a newer version when required
  • while seeing a binary, you can never tell what it does
I have heard programmers saying, "Yes, this is a known bug in the release prepared by coder X in 2008 but it was fixed by coder Y in the same year. Why don't you get the release from coder Y?"

Lost efficiency! And lots of headaches! Just name your versions and see the wonders. Remember: to version your code is to able to "identify" one release from another, and thus "associate/ disassociate" features/ bugs with releases.

Sunday, December 07, 2008

Host and Guest Communication on Sun xVM VirtualBox

I recently installed Ubuntu 8.10 on a Sun xVM VirtualBox VM (running on Windows XP). Unlike VMWare Server, there is no direct/ default way of communication between the guest and the host. The solution, which I found after spending a few hours, is to establish port forwarding from the host to the guest. Please enlighten me if somebody knows a better way.

Sun xVM comes up with a command line tool vboxmanage. On my Windows host, it's located in C:\Program Files\Sun\xVM VirtualBox. You need to run the following three commands to establish port forwarding:

vboxmanage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestFTP/Protocol" TCP
vboxmanage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestFTP/GuestPort" 21
vboxmanage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestFTP/HostPort" 1121


Here, Ubuntu is the name of my VM. I have chosen guestFTP as the name of the service which will be forwarded --- you can replace this part with something of your choice. Essentially, the commands set three parameters: protocol, guest port and host port.