My First Open Source Project

Introduction

I know you must be thinking, Online Classroom? What’s that? Well its something I’ve had on my mind for a while now. Let me take sometime to explain what led to it. When I started learning about computers several years ago, I would scour the internet for tutorials and materials for the technology that I wanted to learn. This yielded tremendous results as almost 90% of what I know is based on self education and web searching.

However, It can be frustrating for me and new comers alike to find an article or material that matches my level of knowledge. This was mainly because the same internet that houses BSc caliber material, also houses MSc and Phd. And many times, there is no distinction. It wasn’t completely a bad thing as in some cases I would be forced to upgrade my knowledge. But then, not every one has the time or patience.

Another problem with learning in this fashion is that you will not have a structured learning experience and you would only know the things you stumbled upon and not the entirety of the subject matter

The Basic Idea

The idea behind this application is to create an open public virtual school that would consist of virtual courses. These courses would have short materials similar to a single class in the real world. And then these materials would be organised in a hierarchically to form a lecture’s curriculum. That way, there is some form of learning progression. Materials could be of any form i.e. short clips, Wikipedia links, PDFs.. whatever

Also a mock assessment can be created to help the student to perform self assessment. It will be a multiple choice test of ten questions. this way a student can determine whether to go through the material again or move on to the next course

Development

Right now, I have coded about 20-30% of the application which is enough to get it off the ground. As time goes on, I will push updates to the repository and I encourage you to contribute your thoughts, ideas, codes towards it. We are all busy people but I believe everyone’s little contribution will go along way. Here are some screenshots of the application. I repeat this is a VERY rough sketch of the application and is in no way the final application (not even alpha).

Project Architecture and Hosting

This project was written in PHP 5 using MySQL as its Database, I also used web standards like HTML5, CSS3 and JQuery. In time I intend to change the architecture to the MVC pattern using the CodeIgniter Framework which will allow for easy synchronization of collaborative code. The SQL Dump of the Database is also in the repository
The project is located on Github (https://github.com/odytrice/Online-Classroom). Feel free to download the source code and test it out for yourself.

If you make any modifications or improvements please remember to push those changes to the “Dev” branch. Your feedback is crucial. When we have code stable enough to make it alpha, I’ll then commit those changes to the master branch

If the above paragraph did not make any sense to you, don’t worry just give me your feedback by mailing me odytrice@gmail.com 

Developer Collaboration – Source Control

Thinking
What is Source Control? Do I need it?

At first when I started learning about it, the tools (SourceSafe to be precise) were not so good and I wasn’t really impressed. It looked more like a hassle at the time. But the tools available now are so much better.

To properly answer the Question, I will first pose another question (Nigerian Style *Laughing*)

“How do I create backups while coding, In case something bad happens?”

This is a question that many of us have asked our selves and we answer them in different ways. Some of us create a duplicate of our project and then update that duplicate when we are okay with the code we have, I personally created Zip files of my code to show several stages of development. I even met people who wrote scripts to create a new numbered folder (e.g. Project_12) and copy their entire project into it. Crazy Huh? The idea of course was that if something went wrong, we would copy our last backup and continue from there. This process was chaotic and inefficient at best

Source Control was invented to fix this. You can think of it like “Shadow Copies” of your project. In other words if you overwrite important data by saving on top of previous data, you can recover the previous data. Kinda like a “System Restore”.

But that’s just scratching the surface. There’s a whole lot more to source control but I think this is the most important feature to many “lone rangers”.

When you have saved changes to a project, you can “commit” the changes to your repository. Something similar to creating a “Checkpoint” in gaming. These changes as saved as blobs and you can exchange and merge blobs with others.

Another nice feature of source control is branching. In my experience, I have come across many situations where I have developed up to a point where everything is working but would like to make some deep changes that may break my code. In such cases, I always created a separate project and make my changes there. If it works, then I’ll adopt it if not, I discard it. The caveat was that if I made changes to the original, then there would be a problem consolidating those changes. However, with source control I could create what is called a “branch” and then goof off in any way I please (Add, Edit or even Delete files). If all goes well, I can easily merge those changes. If not, I can “Restore” my entire project back to mint condition. This makes risk taking possible

Hmm, Interesting. But How do I begin?

There are numerous kinds of Source Control Systems and Architectures. The typical ones like SVN mean that all code will be stored away on servers and you must be connected to access the source code. However, Distributed source system are the rave now and for good reason. They are fast and don’t require any form of connection. You can completely work in isolation (lone ranger style) or in a team.

There are two major Distributed Source Control Systems. They are:

  • Git
  • Mercurial

The difference between Git and Mercurial is the same difference between the Linux and Windows, Android and iOS… and the list goes on.

Git – Is like a car with manual transmission, lots of settings and customization. Fully featured but has a steeper learning Curve. In many cases, you will need to use a Command Line Interface :-?

Mercurial – On the other hand is like a car with automatic transmission, Its user friendly, relatively easy to use  but a good amount of functionality is kept out of your reach to simplify things.

Picking one is a matter of choice. Git is more popular and has wider support. In fact, Git is the only supported source system for the popular Github. Mercurial on the other hand is easy to use and has good GUI support for Windows. Mercurial users can use Bitbucket for online collaboration but its not as popular or feature packed as Github.

Another thing worth noting is that with Github, Only open source projects are free so you will need to pay a rental fee to create private repositories that only you or people you invite can view. Bitbucket on the other hand allows you to create both closed and open source projects for free.

Personally, I use both but tend to lean towards Mercurial because of its better GUI tools and Better Integration with Visual Studio. Below are the tools you will need for the different source systems.

Mercurial

Git

On a final note, If you are new to all this, I suggest that you take time and research them. Learning Mercurial with Tortoise Hg is a very good place to start. It may seem like a hassle but this will certainly revolutionalize the way you write code and will pay off big time on the long run.

Microsoft’s Mentality Shift: Web forms vs. MVC

In recent times, many more tech companies are stealing the spotlight these days. The likes of Apple, Google, Facebook… And somehow it seems like Microsoft’s relevance in the Tech world is diminishing.

The oppositions seem to be winning on these new tech frontiers namely Mobile, Internet, Browsers, e.t.c.. This is because even though they were the first to get on board these platforms, Microsoft as a company did not adapt quickly enough to the changes in the Landscape. It is often said that tech years are similar to dog years. This means that four years in the real world feels like ten years in the Tech World. That’s because things move at a very fast pace. Eric Schmidt once said

“The lesson to be learned over and over again in tech is that It moves and if you don’t move to it very quickly, Its very hard to get back in the race”

Eric Schmidt

However, the truth is that Microsoft as a company is changing dramatically. There is a new mentality in Microsoft and you have to be a keen observer to notice it.

This mentality shift is more apparent in some of the new Microsoft’s new technologies namely the Windows Phone 7 and Windows 8. However, this mentality shift is present in almost all their technologies.

That aside, I want to talk about this mentality shift in terms of Web development namely ASP.NET.

When ASP.NET web forms was released, many of us (myself included) were excited about it because it gave us the same event driven application model that we used for desktop applications. But as time went on, it became apparent that this approach wasn’t the best way as it easily led to really complex code and had several issues (which I mention below) and so I had to move to PHP and eventually became a “Zend Master” :-P

My problem with Microsoft is why it took them so long (roughly 7 years in real-time which would seen like 18 years in Tech) to come up with a better web-development ideology. In which time PHP has swept a good amount of Windows Programmers.

Problems with ASP.NET Web Forms

It was trying to Mimic Desktop Applications: The way a web application works and the way a desktop application works are very different. This is probably the major reason why web forms were problematic. The web is stateless and as such everything lives and dies with a single request. and to cushion that, Microsoft had to employ several strategies to maintain states e.g. placing a form to wrap the entire contents of a webpage, saving a chunk of data in a view state which made the pages and the traffic heavy, not to mention that it was unfriendly to search engines

It was trying to abstract the underlying technologies of the Web (HTML, CSS and Javascript): By using “Web Controls” that generated their own HTML, CSS and JavaScript, It seriously limited developers (like myself). The truth is they had the option to go the ASP way and script the entire website, but the platform (Visual Studio, .NET Framework) pushed you to use them. This made using you own styles or JavaScript for controls on you page to sometimes produce unexpected behavior

Page Life cycle and Tight Coupling: This is the clear consequence of Reason 1 above. Maintaining the state of an ASP.NET web application can be complex since its trying to be stateless hence the popular (Page.IsPostback) and as a result of the tight coupling, it was a bit tedious to decouple your code. Toss in Datagrid Pagination and Bindings and you have a really complicated code in minutes.

The Dawn of MVC

MVC which stands for Model-View-Controller, Is a design pattern that separates the layers of ANY application into three parts

1. The Controller – This Handles the input interface of the application. In a windows application, this would handle inputs like mouse click, keypress, e.t.c. But in a web application, this handle a URL request..

2. The Model – This handles the Data and Business logic of an application. In many web applications, we use our Database as our model and spec out our Business logic in the Database. Even though this has worked well for us, Its not an efficient approach especially when we need to make complex data manipulations.

3. The View – This handles the output of the application. In a web app. Everything that concerns the presentation of the application is done here. The CSS, Javascript, HTML e.t.c.

The MVC pattern is very important because it gives you the flexibility to swap layers and develop them independently without breaking your code.

Microsoft’s Come Back Kid: ASP.NET MVC3

Microsoft’s latest MVC framework (ASP.NET MVC3) surpasses anything I have used in the PHP world (CodeIgniter, CakePHP). C# being a strongly typed language is better for developing Business Logic than PHP. Toss in newer features of the .NET Framework like the lovely marriage between Entity Framework and LINQ (Language Integrated Query) which allows you to work with data from a database like you do with in-memory classes and objects. It goes beyond the ideas of active records found in the likes of Ruby and CodeIgniter. Another thing that is quite notable about the new Microsoft approach to Web-Application Development is the embrace of new open source technologies most notable of which is the popular JQuery. The Microsoft of 3-4 years ago would have released “MQuery” but instead they included support for JQuery and JQueryUI out of the box and even developed their own plugins for it (Jquery Tmpl and the Un-obtrusive ajax libraries).

 Home Coming

Normally I am hesitant to defend Microsoft but I think the time has come for web-developers who changed ships and some of us who shut our minds to Microsoft’s Technologies to consider a return because Microsoft has done it right this time.

To get started with ASP.NET MVC, Pluralsight has a good (and free) video tutorial series on this topic. Its worth checking out. Head over to http://asp.net/mvc for more information and tutorials

Understanding JavaScript Closures

Reblogged from JavaScript, JavaScript...:

In JavaScript, a closure is a function to which the variables of the surrounding context are bound by reference.

function getMeAClosure() {
    var canYouSeeMe = "here I am";
    return (function theClosure() {
        return {canYouSeeIt: canYouSeeMe ? "yes!": "no"}; 
    });
}

var closure = getMeAClosure();
closure().canYouSeeIt; //"yes!"

Every JavaScript function forms a closure on creation. In a moment I’ll explain why and walk through the process by which closures are created.

Read more… 1,535 more words

Understanding Closures in JavaScript is very important. Its one of those silent areas of JavaScript that can make your code "mis-behave" but its very powerful when you understand and take advantage of it. Of all the materials that I've come across while learning it, this was the easiest to understand. Enjoy...

Bigger and Better

Hey Guys, Its been a while. What’s up with you all! I just came over and after looking at the last article on the blog, I was like, November?!! Oh No!! I really want to apologize. A lot has happened since then and I have not had the time to let you in on the gist. Okay. First of all, I got a job at Dragnet Solutions as a software engineer and its been an experience. It all started at the event covered at the last post (Open Door Conference) where I met a guy named Tag. He’s a great guy who I’ve come to respect so much. We got talking about all kinds of stuff and different technologies and he was able to convince about Microsoft’s Technologies and “re-install” my drive for them. After the interesting discussion, he offered me a job.

I know, I know.. Right now I feel like a sellout but here’s the thing. I may have the capital and knowledge to create my own start-up but I lack the skill, experience and business acumen to really build and maintain one. Trust me when I tell you that I am learning a lot here. For example, there is a chasm of difference between coding alone and coding as a group. It’s almost like night and day. I also learnt the importance of certain things that I (and many of us) either took for granted or didn’t know about e.g. Source Control (Watch out for my post on this)

But that’s by the way. I just wanted to let you all know that this blog isn’t dead. In fact, it just became better. I will soon relocate to a dedicated domain name and add lots of upgrades.

Also, I want to apologize because I won’t have the time to post tutorials anymore partly because there’s just so much to learn and because the internet is filled with tutorials already. So I’m going in to the deep parts of what I know straight to the jewels I discover every week. If you need help with something or need links to tutorials and other things, Just circle me on Google+ and mention me in any post and hopefully, I will be prompt to respond.

If you would like to join our group i.e. Tech.Genius (http://www.facebook.com/groups/techgenius/) just follow the link and ask to join then someone will add you.

Cheers

Ody

Microsoft’s Open Door Conference

Microsoft Open Door Conference, Lagos NigeriaOn Tuesday October 25, Microsoft organized the Open Door Conference which took place at the Civic Center Victoria Island Lagos. It was aimed towards IT PROs and Developers. It commenced with the breakfast session which taken by Emmanuel Onyeje. Frankly I missed this as I had to battle the “wonderful” Lagos traffic.

Keynote Session

The session was taken by Mr. Emmanuel Onyeje. His excellent command of English made him a compelling speaker. He talked broadly about Microsoft’s Vision and Products with regards to pretty much everything from Windows Phone, Windows 8 to Xbox and even Azure and Microsoft’s array of cloud services. More importantly he buttressed an important point which was that as the people who influence IT in Nigeria, we should have the drive to push for newer innovations and upgrades rather than leave the system as it is. He gave an example of the fact that many businesses today still use Windows XP even on Windows 7 capable systems. This ought not to be as living in the past is just robbing business of greater capabilities which would improve businesses.

Microsoft's Open Door Conference Keynote (Nigeria)
Open Door Conference Keynote Session

The second keynote speech was from the Director, Developer Platforms, all of Microsoft Anglophone West Africa  Mr. Dele Akinsade. He briefly spoke of Microsoft’s vision of the future and how the company was gearing up for it. He then played this mind-blowing video done by a team at Microsoft of what the future would look like. Take a look.

After that, we were split into two groups; IT PROs and Developers. Being a developer, I naturally went to the hall for developers and then the fun intensified.

Business Intelligence

We had a lecture on Business Intelligence (BI) by Mahmoud Gomaa. Business Intelligence is all about data analytics in the business environment. He shared some insightful ideas with us on how the use of SharePoint and how it can be used to drastically reduce the amount of time required for generating complex reports. Surprisingly, SharePoint featured a lot in many of the discussions and it was important to me because my previous job (Data Analyst at My Dad’s Audit Firm) required very complex reports to be generated on Megabytes of Excel Sheets spanning thousands of rows. First of all, I didn’t want to roll out my own VBA codes to compute all the data so I broke the Data into CSV files (Comma Separated Values) and then import that data into a Database (SQL Server or MySQL) and then run SQL queries on it, (In some extreme cases had to write small PHP scripts to churn the data) and then generate reports based on the finer output. This process can range from several hours to days. The saving grace as Mahmoud pointed out is that with the new Microsoft tools like SharePoint and Power Pivot, You can generate reports straight from excel using data from your database and many other crazy stuff and get your reports in minutes which was mind blowing on its own.

Mahmoud also talked about SQL Server and its robustness and power. He gave instances of where SQL Servers combined with Powerful Servers can do great things. For example a science observatory (forgotten the name ma bad! :-P ) collects 3 Terabytes of Data every night which amounts to a total of about 15 Petabytes (≈15,000,000 Gigs) and SQL Server is used to store and collate that vast amount of data. He also gave evidence that SQL Server is about the safest database in the market (shockingly Oracle was the most insecure)

Mahmoud Gomaa's talk on Business Intelligence
Mahmoud Gomaa’s talk on Business Intelligence
Database Vulnerabilities
Database Vulnerabilities (Data Source: http://web.nvd.nist.gov)

Visual Studio Application Lifecycle Management

Following the Lecture, The Developer and Platform Evangelism Lead (DPE Lead) at Microsoft, Mr Shina Oyetosho (@intellidesign) took the center stage. He spoke with such charisma and insight that it was so compelling. Many of us didn’t want to leave for the launch break (we had to anyway ;-) ). He spoke on collaborative coding and the excellent suite of tools bundled in the new Visual Studio Team Foundation Server. Everyone will agree that Microsoft has the best developer tools. Visual Studio TFS adds further improvements to an already awesome package with lots of new features.

DPE Lead Mr Shina Oyetosho talking about Visual Studio Team Foundation Server
DPE Lead Mr Shina Oyetosho talking about Visual Studio Team Foundation Server

Data to Dash

This session was handled by Olufemi George. He gave an in-depth talk on how SharePoint can be used to generate reports, its advantages and its importance in a business environment. He also talked about how it can be used to generate data about a company in simple terms that can be understood by non tech savvy CEOs and Head of Organizations and aid them in taking calculated decisions for the company. Like using indicators to show which aspects of a business are thriving and which aspects were suffering and lots more.

Microsoft Web Stack – MVC3, IIS

The session was handled by Dapo Oniawole. He is the only Microsoft MVP for C# in West Africa! What an honor. Anyway, he talked about IIS, ASP.Net and ASP.Net MVC3 which is the new MVC platform for ASP.Net. He showed of some of its cool features like beign able to define your classes and object relationships of your application’s design model and let the MVC framework handle persistence (storage of data in the database). It was really insightful and fun too.

Note:  For more details on the event, you can check it out here

Conclusion

I was glad that I attended the conference even though initially I nearly changed my mind as I was bogged down with so many activities. I’m glad I didn’t because it was worth it all the way. During the last two sessions, gifts were given to participants who answered questions like a 4Gb Microsoft USB Flash Drive and a the awesomely stylish Microsoft Arc Touch Mouse. Every participant was given a nice laptop bag which included a pen and notepad.  I was definitely ‘upgraded’ by the conference. A Big thank you to Microsoft for making it happen.

The real ‘G’

Hello tech.geniuses and the rest of the unprivileged world (Sheldon Cooper-like derogation, and thankfully it ends here. You should see ‘the big bang theory’ if you haven’t). I’d like to mention a thing or two about the ‘G’s (geniuses? You ask).

Recently, I was discussing with a friend about how useless our Multilinks Blue® 3G modems which we acquired over a year ago had become, comparing them with those from the GSM operators, he asked ‘aren’t they all 3G?’ (Yes, that G).Well, that depends on how you look at the situation and I hope to explain later. The GSM operators brand their HSPA modems as 3.5G with Etisalat even calling theirs 3.75G, though I haven’t checked out the latest products from the CDMA counterparts (Multilinks, Starcomms, Visafone etc.) Whenever these companies brand their products in such a way, I tend to see it as a marketing strategy, customers would naturally say things like, ‘My 3G modem was pretty fast, 3.5G should be a blast’ or ‘Swift is now providing 4G, awesome!’.

There’s actually a lot more behind the Gs beyond speed (well, speed appears to be the major catch). First of all G stands for Generation, so each G is describing a particular generation of mobile telecommunications technologies and networks with the recommended services they should offer for them to be classified as that G. For example, 3G stands for 3rdgeneration, though I wouldn’t know what to call 3.75G. On a more serious note, the decimalized Gs are actually technologies which are a transition from a former generation to the next, with the features of the next generation not fully realized but well advanced than the former. So I’ll go right ahead and mention a thing or two about the different generations of mobile telecoms networks and technologies.

First Generation: Did you know that there was 1G ?(logically yes, but really?) Ok then, I’ll start with the first generation though there isn’t much to say here. 1G as it is now known emerged in the early 80’s. These cellular networks were designed to basically handle voice traffic only and they transmitted voice traffic in analogue form (talk about inefficient). Capacity was low as they used frequency division multiple access (FDMA) as the multiple access scheme, so once a user was on a frequency channel, no other user could access that channel and we all know how scarce frequency resources are (try using your Wi-Fi or Bluetooth device near a microwave oven). That’s not the even bad news, networks belonging to different companies or countries were not interoperable and coverage area was usually small compared to what we have today so products had limited markets. Examples of 1stgeneration technologies were Advanced Mobile Phone System (AMPS), Total Access Telecommunications System (TACS) and Nordic Mobile Telephone (NMT). I bet you’ve probably never heard of these technologies and neither had I. 1G wasn’t totally useless as it paved the way for the newer generations to come in and people generally became aware of the potentials in mobile communications.

Second Generation:I’m usually disgusted whenever I think of how long it took Nigeria to catch on with 2G considering the fact that it actually started off in the late 80’s/early 90’s (we all remember GSM started here just 10 years ago, the good thing is that we aren’t too far behind now…well, somewhat). With the second generation, the basic problems with 1G were identified and tackled head on. Initially, it was proposed to handle voice traffic, SMS and fax, but with the need for data services becoming apparent enhancements were made. One great thing about 2G is that it transmits information in digital form and this allowed for better voice transmission, greater security through encryption and easy integration with other digital systems like ISDN and the internet. GSM turned out to be the most successful 2G standard with its support for international roaming. GSM increases capacity by combining FDMA with TDMA (time division multiple access) where each frequency channel is divided into timeslots and each user allotted a timeslot which periodically repeats itself in a very short time (about 577µs). A maximum of 8 users per frequency channel can be supported (for full rate, though two users can be made to share a timeslot under half rate) and the number of channels would depend on the number of transceiver modules installed. We know the GSM operators – MTN, Glo, Airtel, Etisalat in Nigeria and others like Vodafone, T-Mobile and AT&T abroad.

Another popular 2G standard is CDMA (code division multiple access), commonly known as cdmaOne or IS-95 which is much more popular in North America. It turns out CDMA was originally developed by the military (its invention I think was credited to a female spy who doubled as an actress). CDMA carries out channelization by using different codes to differentiate users who are all on the same frequency. The CDMA operators in Nigeria include Starcomms, Visafone, O-net, Zoom etc.

In order to understand how the multiple access schemes work in 2G technologies, think several people in the same room speaking different languages with each pair at a low tone so as not to interfere with each others in CDMA, while in GSM users are compartmentalized into smaller sound-proof rooms so they don’t interfere.

Second Generation Evolution: Typically known as 2.5G, the need for support for data services was realized and traditional GSM could only support data rates of 9.6 kbps (full rate) or 14.4 kbps (half rate). Three technologies emanated during this era as far as GSM is concerned, two of which we know well. The earliest was High Speed Circuit-Switched Data (HSCSD). In HSCSD, more timeslots were combined (maximum of four per user) to give data rates up to 28.8 kbps uplink and downlink (2 timeslots each) or asymmetrically 43.2 kbps downlink and 14.4 kbps uplink (3 to 1).

The next was General Packet Radio Service (GPRS). GPRS is packet switched so users will always get an ‘always on’ service characteristic of the internet. A lot more was changed to implement GPRS, new logical channels were defined along with new coding schemes. Also new elements that connect the existing GSM core network to the IP-Internet network were introduced. The coding scheme used and multiple timeslot allocation can allow data rates up to 171.2 kbps (theoretically).

The last 2.5G technology (which is referred to as part of 3G in some texts) is Enhanced Data rates for GSM Evolution (EDGE). EDGE further improves data rates by using a more advanced modulation scheme known as 8 phase-shift keying (8-PSK) to a maximum of 48 kbps per timeslot (i.e. 384 kbps per channel -8 timeslots). It involved some upgrade between interfaces connecting the Base station to the Base Station controller as well as installation of new EDGE transceiver.

We’ve all seen GPRS/EDGE capable phones and frankly they are the most common technologies used to access the mobile internet in Nigeria with 3G coverage still limited.

So with 2.5G in place, the stage was set for 3G to come on board.

Third Generation: the third generation technologies were designed to support multimedia communications – pictures, sound, and video. Hence large data rates that would sufficiently support these services would be required. Different standards would be developed but in order for them to be called 3G, the International telecommunications Union (ITU) created the IMT-2000 standard which would define characteristics of any 3G standard some of which are:

· Data rates up to 2 Mbps (depending on mobility)

· Worldwide usability.

· Support for Packed switched and Circuit switched services (typically data and voice)

· High spectrum efficiency, security, quality of service and reliability.

The three most recognised standards are UMTS (Universal Mobile Telecommunications System, which uses Wideband-CDMA and evolved to the HSPA we know today) which is an evolution of GSM (2G) to GPRS/EDGE (2.5G) to WCDMA (3G), CDMA2000 which is an evolution of the original CDMA (IS-95) which is where our Multilinks Blue 3G modem lies and Time Division Synchronous CDMA (TD-SCDMA) which was developed by the Chinese and frankly I know pretty much nothing about at the time of this write up.

I’ll focus more on UMTS/WCDMA from here on which is what is used by the GSM operators in Nigeria for their 3G upwards networks. WCDMA which is the radio access scheme used under UMTS is similar to the original CDMA except the frequency band is much wider hence WCDMA (A carrier band is 5MHz in WCDMA and 1.25MHz in CDMA2000). This allows for higher data rates with WCDMA due to a higher chip rate (3.84 Mcps for WCDMA and 1.288Mcps for CDMA, never mind that for now).

UMTS/WCMA has gone through different evolutionary stages, the original known as 3GPP Rel99 (3GPP stands for Third Generation Partnership Project, a group of standardizations organisation from different countries working on UMTS as the 3G technology, while Rel99 is the December 1999 release for UMTS) involved a change in the radio access method of existing GSM networks (from TDMA/FDMA to WCDMA) and the introduction of elements necessary to support the change like new antennas, base stations (now known as Node Bs), new radio network controller (RNC) with very little changes to the existing GSM core network.]

Remember the earlier 3G phones like the Sony Ericsson k800i or z750a? Connecting these to your PC would give a typical Rel99 connection.

sony ericsson z750a

Third Generation Evolution: Further enhancements where made to the earlier release of UMTS. In 3GPP Rel4, time division duplex was introduced to WCDMA and more changes were made to the core network to further improve data rates. 3.5G is typically release 5 which introduced High Speed Packet Access (HSPA, from which we have HSDPA – downlink and HSUPA – uplink). In HSDPA, data rate is increased to as much as 14 Mbps with increased capacity and reduced delay, particularly for file downloads. This was achieved by introducing a new channel known as HS-DSCH (high speed downlink shared channel) with a more efficient modulation scheme known as 16-Quadrature amplitude modulation (16-QAM, earlier WCDMA used quadrature phase-shift keying – QPSK). Also a mechanism known as ‘fast scheduling’ is used to give preference to users with better radio conditions (better signal strength, less interference etc.) so those users will have better experiences than others under poor radio conditions rather than a round-robin mechanism where every user is given equal priority irrespective of the quality of their radio environment. The point is that users under good radio conditions can use network resources more efficiently, unlike WCDMA where power control is used to increase transmission power to users under poor radio conditions. Think of HSDPA as the real ‘downloads monster’ (well, for now and for cellular networks).

The modems being offered by GSM operators in Nigeria today (MTN Fast link, Etisalat Easyblaze, Glo NetPro etc.) are typically HSPA capable and are backwards compatible with WCDMA and EDGE depending on coverage and radio conditions.

3gmodem mtn fastlink huawei modem

Now, I’ll cautiously say 4G really isn’t being implemented here in Nigeria yet though other countries are just beginning to roll out commercial networks tagged as 4G and typically Nigeria may follow suit like 2-3 years after (better than the 10+ years it took to deploy 2G, though I think CDMA might have been in Nigeria slightly before then). You might ask, how about Swift’s or Mobitel’s 4G? I’ll get to that soon. Ok, on to pre-4G and 4G then.

Fourth Generation:ITU came around with their specifications for the fourth generation of mobile networks, this time tagged IMT-Advanced and some of the features were:

· These networks would be fully IP based (voice communications would no longer be on circuit switched networks)

· High quality of service for multimedia applications

· Data rate up to 1Gbps (mad or what?) or 100Mbps for fast moving nodes

· Dynamically shared network resources between users.

Two candidates emerged as the 4G technologies namely of choice, Long Term Evolution (LTE) Advanced from the 3GPP (yes, the GSM to GPRS/EDGE to UMTS to HSPA people again) and IEEE 802.16m or WirelessMAN-Advanced from IEEE.

Prior to these two, there were the original LTE and Mobile-WiMAX (IEEE802.16e) both from the same guys as above. They are often described as 3.9G technologies as they do not fully meet all the IMT-Advanced requirements but were branded as 4G by those who rolled them out commercially.

Now, to the Swift and Mobitel 4G which I must say is not really 4G (definitely not at all!!!). Firstly, the ‘G’s as I mentioned earlier describe mobile cellular networks, Swift’s isn’t by any means mobile (and don’t say the modems are portable) and secondly, I believe they offer WiMAX (not even mobile-WiMAX, though I stand to be corrected) and WiMAX is certainly not a 4G technology. It’s almost like saying WiFi or 802.11n is 4G. As I mentioned earlier these are just marketing strategies. Anyway, 4G is supposed to be badass and all; I hope it comes around soon enough and I came across a document about 5G a while back but didn’t bother to read through. To summarize, I’ll use a diagram which I obtained from the book “UMTS Networks Architecture Mobility and Services, Wiley 2005”.

Evolution of Mobile Telecoms Networks

I hope this write up was a little enlightening and hopefully will help not to mix up terms though I barely scratched the surface on the individual technologies (not that my fingers are deep enough, I’m just learning myself). I’ll be glad to receive any corrections and pointers and I’m sorry for not citing my references within the article, it’s a really bad writing habit.

Artificial Intelligence and the Future of the Web

Artificial Intelligence and the Future of the Web

Artifical Intelligence

I was watching a Ted talk by Tim Berners Lee and he was talking about the semantic web. Its not by any means new to anyone on in Tech. But as he was talking I got a revelation from it. It was like I caught his passion even though the audience did not see anything to get excited about (just like I did before).

Let me give you some detail and I hope that you also get the idea. Tim who invented the world wide web said that the idea of the World Wide Web was out of frustration. Frustration in the sense that he was exposed to hundreds of scientific materials of great value but they were in all kinds of formats and required all kinds of proprietary software to view them. This made integrating and combining information contained in the documents very difficult if not impossible. He invented the www so that documents could be in one format and so that it would be easy to ‘connect’ documents together.

Today, we have benefited immensely from this vision of an open www where documents are linked in a fashion that knowledge is not only accessible but easier to connect and now, we have another dilemma. The structure/order of data. Everything that we do on our computers is all about data. This data is in different formats and stored in different places which makes gathering and harnessing this data a real pain.

Solution: Semantic Web - In a semantic web, it would contain just raw meaningful data that can be linked to other raw meaningful data. Taking this data and making a web out of this data is going to change the world. Take a look at wikipedia. Even though its just web pages, the way the data is linked and connected produces very powerful effects. Like say I pick an article of a person. And it tells me that the person attended an event which would be a hyper link to the event and then reading about that event I get a link to its location say Germany and the I go into Germany and then I can learn about the country, its population, heritage, culture e.t.c That’s what a semantic web would look like

Now if in the midst of this chaos of documents which is the world wide web, Search engines like Google are able to quickly parse through and harness useful data as to be able to even translate text from different languages and guess what you are about to type before you even type it, imagine if devices and software had access to a web of data instead and they had clever ways of parsing through all that data…. The results would be pure Artificial Intelligence. The kind that would be astonishing. Imagine a world where as you walk past a restaurant, your phone reminds you that you have been to that restaurant before, tells you about their favorite dish and how its prepared. Imagine a world where computers could make complex reports based on a mash-up of data from from millions of sources… This… my dear friends is the future.

Blog Upgrade

Wow, This isn’t the article I thought I’d be writing. But it looks like I will not be able to keep up with blog posts as I am now twice as busy as I was before. That’s not to say that I’m abandoning this blog, Of-course Not! Its just that I am about to create my own start-up (Trust Me it is HUGE!). Its a really challenging quest that I have taken up and so I will not be able to post quality content in the mean time. However, you can still follow me on Google+ to get Tech Gist and other random stuff.

Blog Upgrade

One of the reason for this decision is that I have come to realize some of the limitations inherent in WordPress hosting service (Props to them for making it free). An example is that I cannot install plugins which means that I can’t display blocks of code in a neat format which is only available using plugins. So I decided to move the blog to a proper hosting service and custom domain name.

Multi-Media Content

In addition to the  blog upgrade that’s coming soon, We will now add more multi-media content like videos and audio/slides. So you can look forward to that. I know we have serious bandwidth issues in Nigeria but things are changing. Wayne Gretzsky said “I skate to where the puck is going to be, not where it is”

Co-Authors

This is not to say you should not expect any posts from this blog as some other cool authors like Sadiq Mohd, Eze Amechi or John Obidi could post at any time. Its just that I can no longer keep up. :-(

As sad as it is, I know its for the best. I believe that this timeout is necessary to come out stronger. So see you soon

Nokia Developer Training

Nokia Qt and Java Training (Lagos)

The past three days have been wonderful thanks the awesome training we received from Nokia West Africa. The three day workshop was jam-packed with intense training on the J2ME platform for the Series 40 Handsets which is the most popular phone line in Nigeria and of course the Symbian Platform.

Originally I wanted to cover the event live using twitter with the hash tag #tgenius. But I had to stop as there was simply no time to tweet. What could easily be a month’s training was summarised into three days and as a result, It was information overload.

Day One – Java Mobile Edition (J2ME)

The first day, we were introduced to the J2ME Platform. This is the platform for mobile java applications especially the Nokia Series 40 handsets. So we used the Nokia series 40 as a case study. The series 40 phones includes the very popular Nokia 5130 Express Music phone. These set of devices aren’t really smart phones even though they can do many of the things that smart phones do like email, surf the web, Play music, Video and Now with Nokia’s latest iteration, They added Push Notifications, Location and Touch Gestures. Nokia’s drive to push smart phone features to the mass market is certainly commendable.

Programme

  1. Introducing the J2ME Platform
  2. Designing a simple J2ME Application using the built in UI
  3. Designing Games and  Custom UI using the Canvas APIs
  4. Getting Started with S40 APIs using (SMS  and Location APIs as case studies)

Materials

  1. Main Presentation Slides
  2. Sample Code
  3. Examples and Resources

Required Software

  1. Java JDK 7
  2. Netbeans IDE
  3. Nokia Java SDK
  4. S40 On Device Debugger

During the program the instructor designed a simple text messaging application using aforementioned APIs with the Netbeans IDE.

Personally, I’m not new to the J2ME platform so I wasn’t really attentive (Ma Bad). However, I learnt a few new tricks like using the flow editor in Netbeans rather than coding everything. And about Nokia’s New Series 40 v6 Phones that will soon hit the market with really innovative features like Location services using the Cell-ID Technology (Even though the phone doesn’t have GPS which to me is a touch of genius).

Day Two –  Ovi Browser and Nokia Web Tools

Nokia Web ToolsThe second day started with a wrap-up of Day One and then we went on to the Nokia Web Application for s40 devices. These are similar to the Web RunTime (WRT) Applications present in their big brothers i.e. the Symbian S60 and Symbian^3 devices. However unlike the Symbian Smartphones, The web application resides on Nokia’s Proxy server and served on-demand to the phone. There by optimizing the Web Application for its smaller screen and lower memory. So when the user downloads your app, He/She would typically download a small Java Application that simply points to your web application on the Nokia Proxy Server and Using the Ovi browser to launch it. Also note that the WRT Tools and SDK is not restricted to developing for s40 Devices, You can create Web Applications for Symbian devices as well. However with the S60 Devices, The Nokia proxy is not necessary as all the HTML,CSS and JavaScript files are on saved locally on the device.

Programme

  1. About Web Applications
  2. The Ovi Browser and How it Works
  3. How s40 web apps work with the Nokia Proxy and Ovi Browser

Materials

  1. Lecture Slides
  2. Getting Started Guides

Required Software

  1. Nokia Web Tools

Day Three – Qt and QML for Symbian Development

The third day of the event didn’t start with Qt Training. However, I separated it for a reason. I had high hopes about learning about Qt and what it had to offer. But I was completely blown away by this framework. I haven’t been this excited about a framework or library since I learnt about JQuery. In fact, If you think of Qt as the “JQuery” of C++, you wouldn’t miss the mark by much.

Permit me to give you some history: Being a C++ programmer, I was interested in the Symbian platform especially the s60. However, I was seriously turned off with how disorganized and complicated the framework was. Even to setup your development environment was unnecessarily cumbersome. And so after sweating to run a “Hello World” Application. I vowed never to come anywhere close to Symbian OS Development. Qt (pronounced ‘Cute’) is the complete opposite.

Qt on the other hand transcends Nokia and Mobile Development. Its an awesome framework that companies like Autodesk (Maya), Google (Google Earth), Linux (KDE), Adobe (Photoshop) e.t.c have been using to develop multi-platform applications. Unlike Java which is “write once and (hope) it runs everywhere”, with Qt you write once and build everywhere. If you design a Calculator application, you can immediately build it for your Windows 7, Mac, Linux, Symbian and now Android Phone or Tablet without touching a single line of code.

That alone was mind blowing enough but it doesn’t end there. We were introduced to QML which is essentially a framework wrapped around the C++ libraries. The craziest thing about QML is that its incredibly simple and easy to learn. It looks similar to JSON, you write your logic with JavaScript and with a “Cute” IDE, you don’t have to be a programmer to pick it up and use. During the lecture, the instructor told us how he taught some graphic artists about how to use Qt and QML. After that, they went for an application contest and won against several programmers. Its that incredible.

Programme
  1. Introduction to Qt
  2. Coding and Testing a simple Qt application
  3. Qt Quick (QML)
  4. Designing and Custom UI using QML and JavaScript
  5. Using Mobility APIs like Maps, Location
Materials
Other Documents
  1. Publishing Guide for Ovi Store
  2. Publishing Checklist

On a final note, Nokia is organizing a competition called Create 4 Millions where the winner takes home a whooping $1,000,000. So this training couldn’t have come at a better time. Like I said earlier, We moved at lightning speeds to try and cover up. So most of it still requires personal experimentation and self learning.

And so a BIG thank you to Teemu Kiijarvi (EDX Lead Nokia West Africa), Jarmo Rintamaki (Training Manager) and most of all to Tony Torp (Instructor)  for the training. It was simply Awesome.