Last weekend my friends from Three Red Cubes Inc. and I were at NBTC. A detailing of the event itself deserves a post, but this post is based on a conversation I had with the CEO of a pretty cool and successful Toronto-based start-up developing software as services using Java-based web-frameworks.
As most of my conversations do, the question came to, “Why do you, as a start-up, use .Net?”
In most people’s perspective, Microsoft’s technologies are confined to being used in the cubicles of high-rise corporate buildings. Images of Windows 98 and XP flash through their minds when you say Microsoft. If you identify yourself as a .Net developer, they look confused, wondering why you don’t look like a nerd or surprised that you are having a conversation, in-person. They probably think you should look a lot like this guy.
Not an image start-ups should associate with. Not one bit.
The new face of Microsoft is not represented by their past image, but it’s not determining the future. The future of Microsoft is being determined right now.
A few hours before I started writing this, it was announced that ASP.Net MVC 4 and several related technologies are being made available as open-source projects, accepting contributions from the community. That’s massive because ASP.Net MVC is Microsoft’s flagship web-framework of the future. If this is the attitude towards ASP.Net MVC, I can’t wait to see what’s in store.
This is not the first time of course, there has been many more initiatives from Microsoft which are all enumerated at Microsoft Openness. As this push continues, I believe we will see CodePlex and Nuget take centre stage. These are two amazing platforms where open-source is very alive.
Now, there are a lot of conspiracy theories around the reasons behind Microsoft’s push towards open-source. For me, as long as I have personally seen initiatives such as Web Not War in action and as long as the community is being nurtured, I’m good.
Having heard it from Eric Gales at NBTC, I can say that Microsoft’s realization that all technology should be unified is comforting.
Technology-wise, everything is being brought under one umbrella, which is great! Specially as a young developer, I can learn everything I wish to on the .Net web-stack and then transfer these skills to say, game development. And this is not just theory, I am a web-developer by birth but with the guys at Three Red Cubes I’ve worked on more than one game. It’s made possibly by how well the entire collection of frameworks and tools are integrated. They say Visual Studio spoils you, it’s true.
For consumers, learning to use Word or Excel means having learnt to use Office365 or SkyDrive because they all provide an unified experience. This is the case for Windows Phone, XBox and the up-coming Windows 8. They all speak the same user-experience language so we’re always at home.
From my experience as a student, there is no other company that I know of that puts in so much effort to reach students. Microsoft has teams of amazing people dedicated to running programs for us students. The Dreamspark program is just one of many programs that make software worth thousands of dollars available to us students.
This is to Microsoft’s advantage of course. Students are going to continue on to become developers, consumers and influence the course of technology and businesses.
Inspiring the Future
Part of building a future is tackling the problems of the present. Imagine Cup is yet another way for Microsoft to encourage students to use their technologies. This time, to change the world and to solve problems experienced by thousands if not millions over the world. Big words? Not at all, this has been the culture of Imagine Cup, see for yourself.
To arrive at anything remotely close to its vision, a world interconnected via technology and the cloud, Microsoft has to work tremendously hard. Maybe five years is a tall order but with all that it is doing, Windows 8, Windows Azure, and .Net technologies, powering forward to a super sleek future is only but a matter of time.
As a start-up, the image we associate with is open-minded, community-involving, forward-thinking and technologically savvy. And this is the kind of future that seems to be in the making for Microsoft. Being as smart as we are, Three Red Cubes jumped on board pretty early. This can only end well.
Okay, this may not be completely objective because I am really excited that a recent update… actually, overhaul of inTO is up on the Windows Phone 7 Marketplace: http://bit.ly/GetInTO.
What’s this inTO you ask? Well, the idea is to aggregate events from all over Toronto, yes GTA, in a way that it’s easy to get on top of the kazillion things happening in the city. Windows Phone style.
I’ll allow this video to demonstrate:
So, what’s the scrutiny? Well, you really should have seen Version 1.0. Hey, I was just learning Silverlight… But with the help of the team at Fersh, we cleaned up my act and the app. Redesigned the UI a bit, made it more consistent, got rid of a bunch of bugs that tend to creep in when you’re up at 5 am coding your brains out.
The good in it:
- “in and out” of the application in no time,
- huge amount of data at your service, searchable too,
- the data is locally saved, so your data usage is not so huge,
- easy sharing via email, sms and of course Facebook,
- a completely feature-complete trial* version.
And not-so-good (hey, I said it won’t be that objective):
- lengthy loading time; don’t blame me, it’s not my fault Toronto is a happening city,
- no categorization of the events; I am working on that next,
- searching isn’t the most accurate; not really noticeable but I know because I wrote it.
Well, I hope, all in all, the experience won’t be too obvious… in keeping with the Windows Phone 7 spirit. Again, the trial* version is feature complete, so give it a shot for sure: http://bit.ly/GetInTO!
*trial: a free version of a Windows Phone application, available for most applications.
Well, unfortunately I have had to take a detour in my journey. Aside university, I have been busy working on a rather long ASP.NET project. I have also taken up working on a project with Ruby on Rails, which I must say, is pure joyous.
I will post some things I found nice in ASP.NET MVC. And continue the Objective-C learning ride a little later.
After much ado I have decided that I will be setting course to explore and understand Objective-C.
As much as it was an impulsive decision, I believe it is a wise one.
So far I have learnt languages that were strongly influenced by C and and are more or less similar such as C# and Java. Learning Objective-C will allow me to make a transition into languages that are less like C such as Ruby which I believe will make my skills more versatile and hopefully open up few more scopes to further myself.
So without any more musing, I will set forth in this path.
The machine that will take me through this voyage deserves some words. Can you imagine Star Trek having the magnitude it has without the fleet of beautiful beasts it displays? The vessel is just as important as everything else.
My machine is comparable to the ships only in terms of beauty, nothing more, unfortunately. It’s simple and sleek white in colour with the perfect curves. The little (compared to the ships of Star Fleet) beast inside my machine has a beautiful and powerful mind as it runs Mac OS X 10.6 in a brain of 2.4 GHz with a memory of 2 GB. It’s not one of the Enterprise Series but it runs well and is just as loved.
The mind that is so eager to go on the journey with this machine is a simple one with big dreams and craving for adventure and challenge. It is average but hungry to grow beyond itself. It will have to be adequate for the journey ahead.
There are so options available to me. I could choose to learn and use any of the many languages out there. I could work on whichever framework made me feel fuzzy inside (trust me, there are some).
But this is to be an informed decision, a planned and joyous journey. Not one born of impulses. To reach a decision I have thought of the pros and cons and argued with myself,
- Objective-C for Apple’s Cocoa API
Pros: My machine’s native language, a beautiful one too. It’s a language that’s growing in popularity, especially with iPhones being the talk of the town. Influenced by Smalltalk and C, mothers of many languages.
Cons: There would be a steep learning curve since I have only dabbled into it for a bit before. Available resources for learning, debugging and troubleshooting are only adequate, to put it lightly.
- PHP on the Yii Framework
Pros: PHP is a giant when it comes to web-based applications. The resources are abundant to learn and apply PHP. As for the Yii Framework, it’s growing, vast, versatile and dynamic, as far as I understand, it’ be a great platform to work on.
Cons: I am relatively new with PHP, except for a few forms and files, I have done little. The learning curve would be steep, especially if I work with the Yii Framework. Even though I have worked on MVC based frameworks, I can imagine Yii being somewhat different (or maybe I am just scared of it, for some unexplained reason. I guess I have to think this through).
- Ruby with the Ruby on Rails Framework
Pros: Ruby is fast becoming the language of the web and agile softwares. It would be great to learn especially since this is quite different from languages I have used before.
Cons: The learning curve would be so steep, it would probably be a straight line. I am not sure of what literature I can refer to and where I could get help. And moreover I would be at loss of a project to implement.
- C# on the .Net Framework
Pros: There would not be a very steep learning curve since I have worked (and working) on few projects using C# and the .Net Framework. There would be a great amount of help available from my current team members and also the online community. The library I frequent also has a sufficient amount of resources on this subject. I enjoy working with the framework because of its numerous features and ease of use.
Cons: I fail to see the elegance of the language. Maybe I have not been exposed to it enough but I find it unattractive at times. I would have to work in a virtual environment which would reduce the efficiency of the workflow. Furthermore I would be at loss of a project to work on.
I have yet to decide but I will try my best to choose one that would be greatly enjoyable but I will be choosing soon. Even though I claimed to be thinking this all through, I would most likely be impulsive and choose one that entices me most.
An idea has spawned from my reading of Practices of an Agile Developer. I have been inspired to share what I learn by reading this very well written piece. I have decided that I will share my experiences as I go on the journey of learning and applying a programming language.
I have vague thoughts on which language and framework to dive in to, and the project I will develop. The details of which I will be sharing in my next post, by which time I hope to have clearer thoughts.