I am still an undergraduate, but I was involved in developing several applications, as projects and course work in the university and as products for several clients while I’m in the university and during my internship. I have seen that more and more enterprise applications are moving towards the web and have seen a trend towards enterprise applications being developed as Single Paged Applications.

Me, being an undergraduate is far from being an experienced software architect, but I have experience in developing the above types of applications, so here is my take on them.

Desktop applications may be connected through the internet or an intranet, and there may be server software or a database server in a central location. We have been used to these types of applications for a long time. They are reliable and very stable. But things have got complicated lately. There are a couple of popular operating systems, and most enterprises want their systems to be accessed by all such operating systems and devices as well. Developing separate native applications for different platforms is extremely costly and impractical. I believe that this is a major reason behind web applications being popular among enterprise application developers.

Web applications reside in a web server and accessed by users via the internet or an intranet and viewed on a web browser. Web applications provide some significant advantages. As mentioned above being platform independent is one of them. Unlike desktop applications they do not need special roll out or deployment procedures. Therefore deploying updates and new versions are very easy. The load on client machines is pretty low as well.

However there are several drawbacks of web applications. The user experience tend to be discontinuous because the pages need to refreshed each time an operation occurs, and response time is very slow because the webpage needs to be sent from the server. An un-interrupted connection to the server (or the internet) is required as well. But this however is minimized with HTML5’s new local storage feature.

Single Paged Applications tries to eliminate some of the drawbacks of traditional web applications.

A single-page application (SPA), also known as single-page interface (SPI), is a web application or web site that fits on a single web page with the goal of providing a more fluid user experience akin to a desktop application.

In an SPA, either all necessary code – HTML, JavaScript, and CSS – is retrieved with a single page load, or partial changes are performed loading new code on demand from the web server, usually driven by user actions. The page does not automatically reload during user interaction with the application, nor does control transfer to another page. Updates to the displayed page may or may not involve interaction with a server.

– Wikipedia article on Single Paged Applications

The following figure shows the architecture of a typical SPA:

Typical Single Paged Application Architecture

Since most of the UI rendering and manipulation happens on the browser it gives the user an uninterrupted experience, and since the load on server side is minimum, these applications tend to be very scalable. The Single Paged Applications tend to have a lot more modularized maintainable code, since the presentation layer is decoupled from the business logic and controllers. However Single Paged Applications have a long way to go and the technology is still maturing. But my bet is that we will see more and such applications in the future.

Raspberry Pi is a 25$ (around 50$ with taxes and delivery charges to Sri Lanka) credit card sized computer running a Linux distribution. I was introduced to this cool, cheap computer sometime back, and it caught my interest. Just a few days back, I placed my order for a Pi and waiting for it to be delivered.

It is intended to be used as a cheap computer for kids to start learning, but it has been put to use in many other projects. It is low powered, and can be switched on 24/7, which means it’s ideal to run a small web server or a media server and do some automation tasks.

The current Model B comes with a 700MHz CPU, 512 RAM, 2 USB ports, HDMI and RCA video outs, and a 3.5mm audio out. It uses a SD/MMC for onboard storage. It has 8 GPIO (General Purpose Input/Output) pins, which means you can interface different devices such as relays and LCD displays and LEDs easily. It is pretty neat for a small computer that can run a linux OS.

There is an active community around the project and a lot of guides and projects. I hope to give RaspberryPi a shot and see what I can do with it!

About a year back, me and a couple of my colleagues were invited by 99X Technology to present us their internship program. We spent half a day in the office, where they explained the internship program and what’s in store for interns at 99X Technology. After a very promising presentation, we were introduced the employees and we were taken on a tour around the office.

Back then, I didn’t have a clue about where to do my internship, but finally I decided that I should join 99X Technology. I started my internship on 14th May, 2012, and looking back, I realize that this was one of the best decisions that I have taken.

Internship at 99X Technology was not only about learning the corporate behavior and new technologies, but it was about engaging in various activities, having fun, and being a part of a nice family.

At my workstation

I worked in 3 main projects. I love software design and architecture, and I was involved in building reference architecture for large scale JavaScript web applications. This project, named BoilerplateJS is now released as an open source project. It now has a small community of developers and is used in a couple of products at 99X Technology. The next two projects were client projects (and I will not disclose too much information about them) where I was exposed to PHP, ASP .NET, HTML5 and JavaScript.

During the internship we organized two events, Inventors’ Challenge and Interns’ Summit. Both of these events were a huge success, and we received great complements from both 99X Technology and the participants.

The fun I had at 99X Technology cannot be forgotten. There were monthly sports committee events, different CSR projects, trips and numerous outings. At 99X Technology, there was always a reason to celebrate!

Interns 2012

I thank 99X Technology for providing a well-planned and an all rounded internship. It was simply the best internship ever!