Thursday, 18 October 2012

Infographic: How the Internet works

I started working for an Internet service provider in 1997 as a dialup networking technical support representative. This means people were using their analogue landline phones in order to get online. I was very proud to be working for the largest ISP and for not having to pay for phone and dialup internet service by the minute.

Most users were running Microsoft's Windows 95 at the time and browsing the pristine web using Netscape Navigator (the great-great grandfather of Mozilla's Firefox and the leading web browser at the time) or early versions of Internet Explorer 4.0 (the molesting uncle of today's Internet Explorer), alongside other software dedicated to long-forgotten non-web-based services with exotic over-smart geeky names like IRC (with its most popular application mIRC, which is still alive and kicking), Archie, Gopher with tools like Veronica (all are great-great-great grandparents of today's search engines like Google or Microsoft's Bing which everyone now takes for granted).

According to statistics, in that year the Internet counted (including myself) 70 million users, which represented just 1.7% of the world's population. This was 15 years ago.
via Fail Blog
Around 2.3 billion people, out of a total of 7 billion, 32%(!!!1) of the world's population, are now using the Internet. This number is already twice(!!!1) as large as it was in 2007, just 5 years ago.

The dialup internet I used was transferring data at a rate of 1.44 kilobits per second. Today's slowest internet account I could sign up for is 30 megabits per second, 20,000 times faster than the old account. I have 3 laptops at home running over a fast gigabit wireless network and 2 Android smartphones connected over 3rd generation mobile connectivity..
Last year the UN declared Internet access a basic human right and countries like Finland have already declared Internet access as a basic legal right!

Where the magic happens
People today take Internet for granted. Surprisingly, many of them think the Internet is (or is in) their web browsers. The magic of data communications is still unknown to many of its every-minute users.
How does all this happens? What's going on behind the scenes? The essentials of of networking and computers communications haven't changed much. It's simpler than most people think, once broken into small functions, but still with all the moving parts and computers along the way, it's still a miracle that data can reach from one end of the world to the other with such accuracy and speed.

An animated much-simplified infographic showing how things work was sent to me. I am, as usual, gladly sharing it.

Wednesday, 11 July 2012

Importing HTML5 and CSS3 templates as themes into Sitefinity

This session with the Telerik Academy's "Web design with HTML5 and CSS3" course was an extensive demo showing how a web design template, consisting of an HTML5 page, a CSS3 file and some images can be imported as an ASP.NET theme into Sitefinity and used as a design template for robust pages with dynamic Sitefinity content.
From my lecturing experience I've learnt that the best way to learn something is to teach it. This session was quite interesting for me: being a senior developer of some main parts in Sitefinity for around 3 years now, I've had the pleasure to meddle with many of its internal nuts and bolts, but hardly ever touched the frontend design side of it. This academy session made me dive into the uncharted territory of UI charting and it was loads of fun. I enjoyed it very much.

Monday, 2 July 2012

Wikipedia and the triumph of human knowledge

I see Wikipedia as one of the great triumphs of human technology. After celebrating its 10th year anniversary last year, it never ceases to grow.

"Science fiction writers foresee the inevitable" (Isaac Asimov).
It's is becoming a fact that science fiction often turns into science (at least since the vast technology leaps of the 20th century). Dan Simmons prophesied the DataSphere in his Hyperion book series, a self-aware network encompassing the complete human knowledge. This is what the Internet is rapidly becoming, and Wikipedia is taking a huge part in it.
Alongside the knowledge revolution, in the past few years we have been witnessing the  reverse process of the the print revolution from the 1400s. Electronic books are taking over not-so-slowly. Amazon now admits to sell more electronic Kindle books than printed ones. 
Even the printed version of the great Encyclop√¶dia Britannica was discontinued this year (2012) after 244 years of print! As you can see in the infographic below, Wikipedia currently contains enough English articles to fill 952 volumes of Encyclop√¶dia Britannica (the printed encyclopaedia has merely 32 volumes). The era of digital of knowledge is present..

Here is an informative infographic with a few interesting statistics about Wikipedia. I have received it privately with a request to share. I gladly agreed.

Friday, 29 June 2012

Using Babylon-based dictionaries on your Kindle

UPDATE! A Follow-Up Post on this Project
Since this post got wide attention, I've decided to follow-up on this project.
See my new Babylon-based dictionaries on Kindle - Round 2 post.
Now the project is shared as open-source and pre-built dictionaries are organized and shared.

Lost in translation
The problem
Addressing this issue started by by trying to purchase an Italian-English dictionary for my 2nd generation Kindle, running Kindle software v2.5.3.
One dictionary was offered for sale  (as an ebook) on Amazon's website. The problem was that the dictionary was not actually available for the device for another whole year..

Good translations
Babylon, on the other hand, offers high-quality dictionaries, spanning over pretty much every language. Babylon Translator is a paid software for Windows. Its dictionary files (.BGL) are offered as free downloads.

In a perfect universe
If I only had a way to import Babylon's free content dictionary into my Kindle and use it as the built-in dictionary, it would have been perfect..

The solution presented here was tested on my Kindle 2. I'm pretty sure it should work on newer versions of Kindle as well.
The same Babylon dictionary, used on my PC (Left) and on my Kindle (Right)
(Click for full size)
Article Level:
Reasonably moderate

Wednesday, 11 April 2012

Setting Up Subversion Source-Control with Assembla and TortoiseSVN

Why Source-Control?
When working on sufficiently-large projects, it's good to be able to keep track of changes with a source-control system (sometimes referred to as "revision control system" or "version-control system" or VCS. Personally I prefer the old term "source-control"). The advantages of using such a system:
  • Keeping track of changes:
    Know who made the changes and when.
    Record changes with appropriate comments ("..hmmm.. why did I make this change..?").
  • Reverting and obtaining previous versions.
  • Managing versions and labels of your code in various history points.
  • Potentially sharing the project with other developers ,working together making tracked changes.
  • Some source-control systems allow tracking bugs and tasks, while associating them to changes made in files.
Many enterprises use commercial source-control systems. Since the majority of my enterprise projects have been on Microsoft environments, in the early days I was using Visual Source Safe (VSS), in later years it's been Team Foundation Server (TFS). Both consist of a source server and client applications which integrate with the Windows domain users and with Visual Studio IDE.

On home projects I prefer to use a more modest source control system, preferably one which I can store online for backups and doesn't require a server running all the time.

Article Level:
Reasonably moderate

Tuesday, 6 March 2012

A day in a life of a software developer

This is a short lecture I gave on 01/2012 to the students of the Telerik Academy.

The students who do well in the C# fundamentals course, in which I lecture, are offered jobs at Telerik. The job's pool is split into positions of developers, QA engineers and technical support engineers. Since Telerik's products are made for the usage of developers, knowledge of programming is required for all those positions (not just for the developers' positions).
In order to give the students a better understanding of what they may be facing in the future, Telerik Academy conducted a short seminar in which a lecturing representative of each of the aforementioned position gave an introductory presentation.
Representing the developers, I put together a short lecture, describing the everyday chores of of the poor developer.

Wednesday, 29 February 2012

Douglas Crockford's JavaScript Lectures

Douglas Crockford  is a JavaScript architect working for Yahoo and one of the founding developers of the JavaScript language.

This is a series of fascinating lectures which, I think, should be watched by every developer, especially ones who have interest in web frontend client-side development and JavaScript.
There are many online lectures and tutorials about JavaScript, which is perhaps becoming the world's most common programming language, but not every day you come across such good lectures, given by one of the developers of the language itself.

The first one is quite an amazing overview of the evolution of computers and computer languages. As noted above, the fact that it's presented by a person who has taken part in the actual process, makes it rather special. Should be watched by every geek.

Monday, 27 February 2012

Bookmarklets FTW: Preview Your Blogspot Posts Like a Boss!

Bookmarklets FTW!
Bookmarklets are little (and sometimes not so little) script snippets which are stored as browser bookmarks, thus they can be invoked easily and quickly. They are tremendous help, especially for a lazy programmer like the one I always claim to be, always seeking shortcuts, scripts and automation. Let the computer do the work for you when possible, I say.
I keep a collection of my own home-made bookmarklets which I find handy, and I will share at least some of them here occasionally.
Bookmarklets work on all web browsers except on Internet Explorer, which means they work on all web browsers.
For Google Chrome there is even a option to convert bookmarklets into Chrome extensions!
Article Level:
You should have found this
out for youself!

Monday, 13 February 2012

Sunday, 5 February 2012

Remote Debugging In the Comfort of Your Living Room

Be the domainless master of your own domain
Many times I need to test a project on different operating systems, preinstalled or not preinstalled with specific components (e.g. a 32 bit project built with Windows 7 x64, run on a Windows XP x64 or x86, without an installation of the .NET framework runtime environment) and see how it behaves.
And in many cases it would misbehave.

In such cases I'd like to inspect my errors in order to repair them. And in many cases this is no easy task. It's sometimes hard to trace the problems without a proper debugger.
It's possible, of course, to install  a complete development environment on my test machine, but that would be heavy, take disk space and memory, and in many cases would be quite an overkill.

Fortunately, Microsoft provides the platform and tools for remotely debugging your application.
Unfortunately, accessing a remote machine for debugging requires appropriate permissions, and the remote debugging tools are planned to work when both computers share a domain and can work with common domain users.

A common (and economic) trick for testing an application on multiple environments is by using a virtual machine. I can  run several virtual machines on my computer, each with a different setup and a different OS.
In order to achieve remote debugging, I'd theoretically need to set up a domain server, and start managing users among my virtual machines (or use a real network, such as the one in my workplace, in order to log in as a domain user, given sufficient privileges on the virtual machine).
However, there are tricks to work around this requirement. I'll demonstrate how to run remote debugging from my local machine (not attached to any domain) to a virtual machine (running on its own detached workgroup).
Click to see the wonder in action:
Snap! A crash inside the VM (Click for the screen capture)
Obviously an index was exceeding the bounds of some array. Absolutely valuable information, which will not always be available upon crash, especially if your project is big enough.
In any case, we need to know where this exception is thrown and why.

Article Level:
Not quite rocket science

Sunday, 8 January 2012

A Word About Floating Point Numbers + 2 Lecture Recordings

On my last lecture at the Telerik Academy on January 5th, 2012, the students were presented with various numeral systems (the usual base 10, the binary base 2 and the hexadecimal base 16).
In my humble opinion, this presentation came a bit too late, since the students have already been handling variables of all primitive types (after the "Primitive data types and variables" lecture) and manipulating them quite on a low binary level (after the "Operators and Expressions" lecture).
If anything, this lecture, which includes explanations of the basic count systems and memory representation of primitive types, should have been presented before learning about the various types themselves.

Thursday, 5 January 2012