Blog

Dart - TypeScript - Windows 8 HTML / Javascript Apps.

1/2013

I sense that we are in for another shift in technologies on the Microsoft front. For a start we have Windows 8 which at time of writing is hardly a great success as yet and there are already rumors of Microsoft working on an updated version to be released later this year but will be here to stay. Because the environment is changing and touch screens are on the horizon and who knows what other devices are to appear soon to interact with computers such as 3D cameras that will read gestures without even touching a screen. In any case even though Windows 8 is horrible on a standard computer with a mouse I have no doubt that eventually Microsoft will have to get it right and we will have to write code for Windows 8 or whatever it will be called in future. We will have to deal with a mobile/touch world and will need to support tablets, smart phones and touch enabled desktops. I have even seen a coffee table sized touch based computer that can be used by multiple people at the same time.
Now Microsoft also has a bad habit of dropping technologies and applications, and the latest victims are the Expression Suite, Silverlight and I also expect ASP.NET MVC may become less fashionable in future. There seems to be a push to make JavaScript a more powerful development environment since HTML, CSS3 and JavaScript is more universally supported across the various devices. And on the Server front there is node.js. If you ask Microsoft about some of their existing technologies if they will be supported for Windows in future, the answer is "Develop Windows Store Apps with HTML5, CSS3 and JavaScript". These "apps" run as JavaScript Apps that do not need a browser as such. Channel 9 has a number of videos on how to do this and shows the support build into Visual Studio 2012 for this.
Furthermore, they are working on TypeScript which is a plugin to VisualStudio to better manage large JavaScript applications in that it extends the JavaScript syntax with classes and typed variables amongst other things which then generates JavaScript code as the compiled output for your applications. It is compatible with all common browsers running on the various operating systems and is becoming the "common denominator" spanning a number of devices and operating systems.
Google also has a somewhat similar project to TypeScript called Dart and to quote Google: “Dart brings structure to web app engineering with a new language, libraries, and tools.” Similarly, the January 2013 MSDN magazine has an article: “TypeScript: Making .NET Developers Comfortable with JavaScript”. So the message is clear; it appears that the future involves HTML5, CSS3 and JavaScript.
Another thing of interest is the release of WebAPI and SignalR
WebAPI is a simplified way to create RESTful web services to retrieve and send data to and from a web server and is simpler to use than Microsoft’s WCF. It is installed along with MVC4 in Visual Studio but actually does not depend on MVC as it works perfectly well with a standard ASP.NET application according to my tests. I plan to use it in some future applications outside of the MVC sphere. SignalR is a new library for ASP.NET that simplifies the process of adding real-time functionality such as having updates pushed to web pages. Such a thing is useful for chat applications and other applications that need bi-directional communications.
All these can contribute to browser agnostic HTML5 applications which I see in the future becoming more and more popular and I will be testing these technologies to make sure I am ready and competent with these.

Linux Distros.

11/2012 Linux Impressions

Every so now and then, I will install and check out progress with Linux. I started doing this around 2000; at one time I had a Linux server running with Samba that worked pretty well. In fact Linux servers have been an effective tool for some years now. However, Linux on the Desktop is another matter altogether. I have not found the Linux Desktops to be ready for prime time in the past. However, this has changed, some of the Linux Desktop distros are starting to look pretty good and in my opinion could compete with Windows and Mac OS for business use but with some reservations.
The thing is that Linux has a complex inner structure and when using Linux, sooner or later one seems to run into command line apps to adjust something or rather not accessible from the UI. Also the competition between Gnome, KDE and other GUIs means that potentially not all applications will run properly on all of these. So as I see it, although Suse, Red Hat and others offer commercially supported versions of their desktop Linux distributions it would have been better if the Linux developers had gotten together and agreed upon some standards for their UIs and made the operating systems more integrated with the underlying OS layers not having to depend on terminal screens and command line apps as much as it does.
Never the less for businesses that can afford to deploy some Linux IT support people it may be a workable solution, especially now that Microsoft is determined to reinvent Windows, depending on what they do in the near future, users may actually find some of the Linux UIs more Windows like and familiar than future versions of Windows.

Ubuntu, Open Suse and Mint Linux.

So I decided to try out Ubuntu, Open Suse and Mint Linux. I realize there are other distros out there but these are representative of the most popular free distros. I installed these in Oracle’s Virtual Box first to evaluate them. Suse Linux and Mint Linux installed without problems but Ubuntu did not since it refused somehow to install the proper video driver and in full screen mode which on my monitor should have been 1920 x 1200 it displayed at 1024 x 768 and could not be changed. I googled this and found some references to running certain command line apps to manually correct this but I really do not like what Ubuntu is doing with their new Gnome UI it looks ugly and I do not like it so I rejected it. The latest Gnome UI in Suse Open Linux also is quite unusable in my opinion. The KDE version of Suse Open Linux is nice however. This left me with KDE Suse and Mint Linux; now Mint Linux is based on Ubuntu but with a standard Gnome based UI which comes in two flavors called Mate based on Gnome 2 and Cinnamon based on Gnome 3. I tried both and like Cinnamon but it had some parts of the UI that was not working properly on my system for some reason. This may be due to the fact that I installed the recently released Mint Linux 14 RC version which may still needs some work, so I ended up installing the Mate version which has worked perfectly so far. I installed the Suse version with the KDE UI which I like but I installed the Mono Develop application and it complains that it cannot find certain Gnome packages so I rejected Suse Linux as well since I want to try developing some Mono (.NET on Linux) applications. Therefore, I have decided to stick with Mint Linux since it has a standard UI with Gnome packages needed by the MonoDevelop application and benefits from using the Ubuntu packages for the OS which because of being common and popular means it is compatible with much of the Linux applications out there.

Software Development on Linux.

It appears to me that most Linux development has been done with C or C++ and some things like Python and such like. However, I like development on Windows using C# and Delphi so I look for something similar on Linux. C++ because of its crudity is not something I like; I mean any language that does not support a proper String format but instead relies on pointers and character arrays is not suited to enterprise development. So for Linux I have found MonoDevelop which is a development IDE for Mono applications that allow .NET applications to be developed and run on Linux. I have also found Lazarus which is similar to an older version of Delphi. However, Lazarus seems to lack certain features like Intellisense so it is still a work in progress but never the less seems to work well enough to test further.
I also like developing code in Assembler so I will also try and find a good assembler, I located NASM but I have yet to look at it to see if it suits my needs. In future blog entries I may report my findings on these development tools.
One thing I have already noted is the underlying difference between Windows and Linux. I went into MonoDevelop and created a console application and found it apparently did nothing when run. No console window appeared like it does in Windows, so you either have to run the application from a terminal window or you have to install something like the XTerm package and then it will show up. I have no clue why since I yet have to investigate in more detail what is under the covers of Linux.

11/2012 - Windows 8 was released and Microsoft Build Conference

Windows 8 Release.

Judging from the responses on the various internet developer sites Windows 8 is not liked by every one; however, Microsoft claims to have sold 4 Million Windows 8 upgrades and that laptops with Windows 8 sales are up by 20%. Never the less, it will be interesting to see how the Enterprise will respond to Windows 8 as this may well make or break the success of it in future. I think there may not be a great adoption of it in the Enterprise anytime soon because they would need to purchase new hardware (touch screens and / or other touch devices) and lots of expensive training.  It is possible that Microsoft will need to scramble and provide a different Enterprise Version of Windows 8 with some of the functionality restored from Windows 7 like the start button and making the socalled Modern UI (a.k.a formerly Metro) mode installable as to its function. But time will tell; the impression I get is that Windows 8 was initially designed for a Tablet or Phone and Microsoft wants to emulate Apple by having an App Store and control software that runs on this platform. However, the current implementation is little more than a crippled Windows 7 with the Modern UI (a.k.a Windows Store App) shoehorned into place. This would not be so bad except they made the "Modern UI Start Screen" the prime focus of Windows 8 and the lack of interaction between the Modern UI and the standard Desktop makes it feel like an unfinished and awkward operating system on a standard PC. It will surely be interesting to see how this plays out in future…

Microsoft Build Conference.

As a developer the main significance of what was presented at Build is that once again they are pulling the rug from underneath us and developers need to retrain themselves to participate in the Windows 8 world. According to Steve Ballmer’s Keynote “our industry is rebuilding itself”… It also seems that Microsoft is pandering to the various trends in the industry, such as “the new PC is the phone” and Tablets. So there are various incompatible operating systems for these such as IOS, Android and now Windows 8; so what do you do to provide software for all of these incompatible OSes? They turn to Web browsers, HTML 5 and JavaScript. This might be acceptable for the UI on these devices, but because many of these new developers only know Web development techniques and JavaScript, when they code the backend applications that drive these UIs they also attempt to code these on the backend in JavaScript which is most undesirable. Some of these may have thousands of lines of code and are almost unmanageable. So to alleviate some of the problems and shortcomings of writing code in JavaScript and to make these large JavaScript projects more manageable Microsoft is working on the TypeScript project and making the JavaScript engine faster. I guess this helps but never the less it encourages something that is less than desirable. Of course for those of us having been in the industry for a long time this is nothing new; in the early 80’s when personal computers were new they also had incompatible OSes and ran on an interpreted scripting language called BASIC. At that time non-programmers such as accountants started to write programs because they understood accounting and spawned terrible programs. Those that survived became VB 6 programmers in the 1990’s. I guess this is like politicians never learning history so they keep repeating the same errors over and over again. To make a long story short I am not impressed with the state of events right now but hope that things will evolve into something better and more manageable over time; which it probably will but not without growing pains in the meantime.  I would be more impressed if a good technology like Silverlight was ported to support multiple platforms like iPhones and Tablets and would be touch enabled instead of once again reinventing the wheel. 

10/2012 - Windows8 - HTML5/JQuery/CSS3/Javascript - Silverlight5

Windows 8 - "Modern UI"

So I attended one of the Windows 8 Unleashed events in my area. I understand the design concepts behind the so called "Modern UI” or “Windows Store App” (started off as “Metro UI” but some company in Germany called Metro AG took exception to it so Microsoft had to come up with a different name) and whether you like the look and feel of Microsoft’s current implementation it does kind of make sense for Tablets. Microsoft’s take on it can be found at Designing UX for apps and Guidelines for Windows Store apps and Learn to build Windows Store apps However, I still do not see why Microsoft forces the “Modern UI” to be used on Desktop PCs without touch in Windows 8. I would like to have been a “fly on the wall” when they were discussing this and made the decision to do this. Switching between the Start screen (I call them “screens” since Modern UI does not have the concept of Windows as we know it) and Desktop mode is just a kludge. And right now when you attempt to develop a so called “Windows Store App” you are told you need a developer license which is fetched online and seems to last only a month right now. Not sure where all this is leading? Meanwhile I have put Oracle's VirtualBox on my workstation and installed Windows8 and Visual Studio 2012 in a Virtual Machine so I can develop Windows 8 / Microsoft App Store applications to familiarize myself with it. VirtualBox seems to work great and on my PC I build recently giving the VM 4 gigs of ram it seems to run faster than a native install on one of my older machines; so I will delete the Windows 8 from my older machine and install Mint Linux 13 (KDE version) on it instead.. The latest Linux desktops are getting better by the month and one of these days (especially if Windows 8 remains a flop) it might occur to enterprises that they can save a lot of money if they switch to Linux for their average users but that is another story...

Silverlight 5

I got a new Silverlight 5 book and I really like the latest version of Silverlight better than WPF and HTML/CSS/Javascript development. Future development on Silverlight seems on hold and perhaps doomed since everyone is currently focused on "Mobile Development" and the only common denominator is a web browser and HTML5 development. Even so for the time being one can do worse than to develop in house Intranet projects using Silverlight 5.

HTML5/jQuery/CSS3/Javascript

Ok, so I have seen the writing on the wall and as a senior software developer and consultant; I have to make sure I am an expert in Web development using HTML5, jQuery, CSS3 and JavaScript. I have been monitoring this from the sidelines; however, many of the jobs in my area are now calling for these. I just got some new books and will be studying up and developing some test apps in the coming weeks to make sure I can handle these technologies at an expert level. Much of this will be aimed at mobile app development right now but it will be interesting to see where this will lead in future as HTML5 matures along with the development tools. One thing that seems to be somewhat popular in the ASP.NET world is MVC but I have a sneaking suspicion that APS.NET technologies are going to be pushed back by the HTML5 development world since Web Developers see the world through HTTP protocol eyes and ASP.NET was originally developed for developers seeing the world through Windows Forms eyes. What I mean is that the development world every 18 to 24 months or so comes up with something that takes the focus. The last few things were Test Driven Development and Agile Development and you see this by the rise of MVC in APS.NET development, MVVM in Silverlight and Agile templates in Microsoft Team Foundation Server. Already HTML5 and JavaScript development has been improved in Visual Studio 2012 and you can be sure that development tools and methods will appear to aid Mobile and Web development in the near future and whatever came before it will stay for a time as legacy development methods and tools.

9/2012 - Start8

I found this useful addon for Windows 8 called Start8 which provides a Windows 7 style Start button and menu and provides several configuration options it makes Windows 8 much more usable.

9/2012 - Windows 8

So Windows 8 was released to MSDN and I downloaded and installed it on my old PC. Interestingly, I never was able to get Windows 7 working on it but Windows 8 loaded on it without any problems. However, I am still puzzled by what Microsoft is achieving with this. If I had designed a system like Windows 8, I would have simply made the desktop background in Windows 7 that usually only has a useless image and cluttered icons on it, the Windows 8 "Start" screen and left everything else alone including the start button and the task bar. You could then still run Metro apps on the desktop but access your standard windows apps as usual. Atleast for desktop systems that do not have touch capability.  However, what they have ended up doing is cripple Windows 7 by removing functionality and it is obvious that much of the code is still Windows 7 based; switching back and forth between “Desktop” mode and “Metro” mode is simply a pain. Also there is no way conveniently close applications other than bringing up the Task Manager and killing them there. I for one will dedicate a PC to test Metro apps if and when I am asked as a professional developer to develop for it, but there is no chance that I will use Windows 8 for my main development system at this time. I can see how Windows 8 would work well on a Tablet PC or smart phone that is dedicated to relatively simple functions like browsing the web, taking notes etc. but for a Business machine or for software development, forget it. I cannot believe that Windows 8 will be successful in the enterprise and will likely flop there even worse than Vista did.

However, I keep wondering if Microsoft has perhaps a darker reason for such a drastic change; perhaps they got to thinking that in future they will remove the Desktop (i.e. the traditional Windows interface) altogether and this way they can control the software that you run through their Windows App store and close up Windows like Apple has always done.  If this is so, hello Linux goodbye Windows...  In fact this could finally give the Linux distros a fair chance even in the enterprise.  Only time will tell and it is going to be interesting for sure.

8/2012 - Built a New PC.

ComputerI finally build a new computer consisting of an ASUS P9X79 Motherboard, OCZ 128 GB SSD drive and a WD Velociraptor 1TB drive.  I put an Intel Core i7-3820 cpu in it and 16 GB of ram.  Everything went together fine and the system runs great at a slightly overclocked speed of 4.6 GHz.  Since I use this system mostly for Sofware Development I don't need a fancy graphics card so I put a simple PCI Express II card in it with 1GB RAM from eVGA.


Eikon SoloOne thing that annoys me is logging in to various websites and my PC each time. I got rather used to the fingerprint reader on my laptop so I also purchased one for my new PC. The cheapest one I found was the eikon solo which comes with True Suite software and Protector Suite. I installed the Protector Suite and also downloaded an API so I can use it in applications I develop. This thing works pretty well but the more expensive fingerprint readers that work with Digital Persona software are a little better, but in my opinion not worth the extra cost.

After building the new computer I also found that new motherboards do not come with the so called ps2 keyboard and mouse sockets any longer and they also do not have parallel printer ports and serial ports any more. This means I had to replace my keyboard and mouse as well as my older KVM switch. So I purchased the Microsoft Touch Mouse and I really like this thing although it takes a little time to get used to the touch gestures you can do for minimizing, maximizing and navigating etc.

Microsoft has gone on record promising they will create a special driver for this mouse to work with the Windows 8 Metro Style Apps and on the "start" screen. However, I installed Windows 8 on my old computer and found that the Touch Mouse only works with gestures in the Desktop mode which is similar to Windows 7; thereit works exactly like it does in Windows 7.  I hope that this situation will improve at the launch in October because the Touch Mouse seems to be a natural to make Windows 8 work with a mouse.

I also found a Razor Gaming Keyboard at Wal-Mart which has proper mechanical switches and feels a bit like my old Northgate Keyboard. I really like the feel of these but when I got it home and tried it for a few weeks I decided to return it because of two factors:

1. They reversed the legends on the number and special character keys; so instead of having the ! above the 1 and { above the [ on the keys; they are reversed with ! below the 1 and { below [ etc.  Now I did not realize this but I am not a touch typist and somehow I kept using the shift key when I wanted to type 1 and got ! etc. Really annoying and I could not live with that even after a two weeks of trying to get used to it. The excuse they had was that this was because of backlighting, however, if this keyboard was able to backlight I was not able to discover how.

2. Secondly, they aim this keyboard at gamers and somehow want to keep track of them for marketing purposes perhaps and the drivers for the keyboard requires you to be online and create an account with Razor.  Then the drivers are installed and you have to be online and the drivers stay connected with this account and goodness knows what information they are collecting through the keyboard driver; I am sure an evil hacker could have a ball with this.  I do not like this and I also found their software buggy, so back this oddball keyboard went. I purchased a Microsoft Sidewinder X4 keyboard instead and although it does not have mechanical keys it is quite good never the less and allows me to create macros I use during programming; also the drivers came on a CD and the backlighting works...