Sunday, June 14, 2009

Twitter

Well a couple of days ago I decieded to start using twitter: http://twitter.com/Cwize1.

Now anyone one who knows me whould know I shun social networking sites because they are a royal waste of time. So why did I start using twitter?

Firstly twitter isn't so much a time wasteing social networking site and more of a club of stalkers. I have never used the likes of facebook and myspace but it seems horid. People around me seem to spend an outrageous amount of time adding photos, writing journals, writing on walls, sending messages, finding relatives, getting annoyed at spamy emails, etc. Whereas twitter is a simple 140 charcter outline of what you are currently doing or something you find interesting. It is fast and non time consuming.

Secondly a melbourne company called Kogan was offering a chance to win prizes if one followed their tweet. And hay a 1/500 chance to win a netbook is well worth the stigma over joining twitter.

Monday, June 1, 2009

Microsoft Robotics Studio

Recently I decieded to give Microsoft Robotics Studio and whirl, to see how it was.

I am currently doing an engineering course, at the University of Melbourne, and one of the projects was to program a robot using Robolab. As a relativly experienced programmer, I wasn't all that impressed with it as a programming langauge. It was basically a visual programming langauge that was focused on getting the rebot to do actions and then they retorfitted data\variable features afterwards.

I had downloaded MS Robotics Studio 1.0 a while back but I never actually used it. However this annoyance prompted me to take another look at it to see if it was any good. Thus I downloaded MS RS 2008 Express, installed it as opened the Vitrual Programming Langauge (VPL). After going through a few tutotials from the msdn dite and a few other sites I fairly quickly got the hang of the langauge.

As a concept the VPL is rather interesting. It seems to be completeley different from any other conventional programming langauge I have used. I don't know if I would want to write a large database in it but for what it was designed for (that is, robots) it fairly satifactory. It would be fairly hard to describe in detail just using words so I won't attempt to. Basically it a langauge that is focused on the flow of data rather than the order of instructions. Eg: "int i = p + 1" would be translated into "Calculate Block: p + 1" --> set --> "Variable Block: i".

One of the most awesome features of Microsoft Robotics Studio is the simulation enviroment. As the name suggests this is an enviroment that allows you to simulate a robot in a particular enviroment. It is powered by the PhysX engine. This is useful if you don't have an actual robot to play with or want to test to see if your program actually works before running it in the real world. Obviously you get smoother results if you have a modern Geforce card or a powerful CPU. However you can still get kicks on an relativly anient computer. I was more than capable or running a simulation without too much lag on my Radeon 9550 and Intel P4.

One of the programs I created was a simple program were I controlled the robot in the simulation enviroment with my anient joystick. This was actually fairly easy program to create. It was rather fun knocking things over and rolling them along the floor with my little robot.

Unfortunatley that is where the list of good things end for MS RDS. There seems to be a lack of an attention to detail that one has come to expect from the makers of the awesomeness that is visual studio.

Firstly there is the Calculation Block. This is basically a block that will do some sort of calculation, be a concatonation of a string or the solving a mathematical equation. This type of block, I think strikes the right balance between the visual aspect of a visual programming langauge and the functionality of a text based langauge. Robo on the other hand requires you to do an hour long song and dance number to do be able to do similar things (equals major annoyance). Unfortunatley this block is far from complete as it lacks in built maths functions. Basically if you want to calculate anything other than a simple arithmatic (eg, sqrt, powers, sin, cos) you have to use the maths block. This results in anything other than really simple equations, being split up into a multitude of different blocks instead of just the one.

Then there is the programming user interface. While the actual diagram of programs is reasonbly clean, eveything is fairly messy. For example. the list of programming blocks. Basically all it is, is a list of every single one of the possible programming blocks one can use sorted alphabaeticaly. The problem with having all the blocks in one list is that the list ends up containing a whole load of advanced blocks that not everyone will use, making the langauge a lot less intuitive and harder to learn for beginners. That and it is harder to find what you are looking for because you have to know its exact name. Fortunatley they also have a list of the most commonly used blocks but a simple hierachy system would be really useful.

Another problem is the debugging interface. In a visual programming langauge one would assume that it would have a visual debugging interface. Like breaking over the offending block, with a "useful" error message and telling you variable values when you hover over them. Nothing could be further from the truth. Instead to debug some code you are sent to a browser based interface which you have to enter your computer user name and password to enter. To make matters worse it has error messages that are not only in hieroglyphs but are completely useless as well. And just in case you thought it couldn't get any worse the console window speaks in a some wierd techno bable that is also highy useless. How on earth did microsoft come up with that one???

Apart from everything else, the thing that really put the nail in the coffin for me was one time I was creating a program, sunndenly MS VPL started stuffing up, so I saved and quit and reopen MS VPL, only to find it had lost all my hard programming work. This really annoyed me.

After that I decieded to look at the C# interface. I found a beginneers tutorial and went through it. Unfortunatley it seems to be highly complicated when it comes to syntax and to be able to create deafult projects instead of a template in C# one has to create one in the MS RDS console window. So while it looks useable I don't think I have the patience to learn it.

So in conclusion, it was a great idea with a whole load of potential but would need a major overhaul to be actually useful and fun to use