After a long leave of absence, I’ve realised that I really miss putting my thoughts down and sharing what I learn. And so I’ve decided to make a comeback.
Since my last writings I’ve joined forces with New Media Labs, a very cool company that just “gets” the web, and in addition they also do amazing line-of-business applications.
A few topics I want to dive into right away is the ADO.NET Entity Framework, Silverlight, and good old Agile development practises. Stay tuned ;o)
Google officially went into beta today with a very interesting project: their open-source browser named Chrome.
I've been using it for a few hours now, and as can be expected of an early beta product, some sites are still rendered incorrectly. (Aren't all Google products in beta?!)
There are a few things I already enjoy: I love the way the tabs sit at the top of the window, allowing more screen real-estate to be used for browsing! It is extremely fast, and uses remarkably little memory compared to any of the other mainstream browsers for Windows. My guess is that this is largely due to V8: Google's JavaScript engine.
The source is available from the SVN source as a Microsoft Visual Studio 2005 solution. They've used many existing components from Firefox, as well as Apple's WebKit (for rendering), amongst others. You can get started with the code over here if that's your thing!
Here's a screenshot with two "javascript-heavy" sites - Facebook and GMail - open in three popular browsers:

Carlos Magalhaes from Microsoft interviewed Thea and myself on Agile Software Development at Tech Ed South Africa in Durban last week.
You can download other similar talks from Tech Ed Online.
If you're a Facebook developer, FBML Essentials should come in handy. Thanks to the author, Jesse Stay, for sending me a copy!
It's almost time for Tech Ed again, and this year will be a very exciting event! The reason for this is that it will be held at the ICC in my old hometown: Durban. Apart from a few slide-decks and a laptop, I will be sure to take a surfboard! Surfing in Cape Town is really "hard" compared to doing that in Durban!!! (Man do I miss the warm waters and the smooth breaks of the East Coast!)
But let's talk more about Tech Ed. This year, once again, there are excellent speakers hailing from locally, Microsoft's mothership in Seattle, and other international locations.
This year I'll be talking about less technical issues, and more along the lines of methodologies and project-wide approaches to tackling a software development project. If you want to catch me, I'll be chatting about SCRUM as a Development Methodology early on Monday morning, and then about Agile Software Development on Tuesday. If you can't make these, I'll be hanging at the ATE booths and the community lounge!
Looking forward to see many of you guys there!
I must say that the newly launched MSDN Forums frontend is probably the coolest forums frontend for development-related posts that I've seen to date. Do yourself a favour and check it out, even if you don't have any questions and/or answers to post ;o)
As Hilton's blog indicates, we'll have the pleasure of chatting with legendary Brad Abrams soon, right here in Cape Town! He will be doing a talk on the planned ASP.NET MVC Framework for SADeveloper.net. Scott Guthrie explains the MVC pattern nicely over here. This is an exciting framework that might(!) remind you of Ruby on Rails. Some open source efforts to bring the rails mentality of CoC and DRY to the .net platform has been attempted before, most notably with the Castle Project.
One of the main concerns with the new ASP.NET MVC Framework is that, instead of allowing client-server interaction via the current postback model, your postbacks will now be directed to a Controller class. This is in fact not a concern as much as it is a breaking change - it is in fact a much cleaner seperation of concerns, which the current ASP.NET model does not have.
RSVP over here to book your seat.
The guys from Moodia are hosting a Facebook Developers Garage tonight, where I'll be presenting a short (10 minute!) session titled "Facebook applications on the .NET framework". Hope I see some of you guys there!
It will be very interesting to hook up with other Facebook developers from Cape Town, and discuss online social trends.
Thanks for everyone that made it out to the Continuous Integration talk! It was great to have a former employee of Thoughtworks (the guys who developed CruiseControl) in the audience, and it seemed as if many people derived value from the event. Thanks to FoschiniDATA for the venue and the snacks!
The slide decks I used for the talk can be found here.
Facebook now supports JavaScript in Facebook applications in the form of FBJS (added to FBML and FQL).
I'll be chatting about Continuous Integration (yes, once again!) next week to the SADeveloper crowd, and it would be great to see you there! Details are as follows:
When: 19th September 2007 18h30 - 20h00
Venue: FoschiniData
Lefic Building
340 Voortrekker Road
Parow East
Cape Town
(right next to Sanlam Shopping Centre)
Topic: Continuous Integration
RSVP: Please RSVP here
The Extreme Programming (XP) Development Methodology defines many concepts, one them being Continuous Integration, which will be discussed in this session. Knowledge of the following concepts will be useful, but isn't compulsory:
· Source Code Control
· Periodic Builds
· Unit Testing
· Code Coverage Analysis
Once you've experienced Continuous Integration, you'll feel naked without it!
Took this screenshot of the Numetro homepage earlier today:

With the introduction of Domain Specific Languages (DSL's) like LINQ right into the .net languages themselves, we become capable of becoming more focused on the domain of the problem space to which we're developing solutions. We're able to do Domain Driven Design (DDD) at a language level, and that's cool!
What is really cool in addition, is that we don't lose out on the ability to go down to a lower level - the code we write with language-level DSL's is backwards compatible with previous versions of .net, and if we so wish, we can still program at a lower level. Hats off to Anders Hejlsberg and the rest of the teams at Microsoft for their design of LINQ. So it is really easy to make DDD a reality on your business projects today. (When you design the classes describing your business problem domain, you are in fact designing a DSL, but this DSL is confined to your problem space, where DSL's like LINQ are a bit more generic).
So languages are evolving into more high-level, generic DSL's, which is very difficult to do right, because by creating a DSL you immediately introduce constraints and limitations.
Where to might languages evolve next? One of the things that are very difficult to do right now is parallelism. Very few programmers can write solid multi-threaded, re-entering code. It's hard to write, and even more difficult to debug. (Ever tried re-creating state with multiple threads?!) For me it's hard just to think in terms of parallelism - the human brain just doesn't work that way!
For many years we saw the clock speeds of processors increasing exponentially, and then all of a sudden there was a slowdown; making the wafers on processors thinner and yet thinner are becoming constrained by the physical size of atoms! But we still want faster! So we are now seeing processors with multiple cores. More cores are being introduced per processor, and more multi-core processors are introduced per computer. (In fact, more computers are being introduced per computing-grid, but we'll talk about that another time!)
The next logical evolution for programming languages would be to bring parallelism concepts (like threading) to the language level. In fact, LINQ already addresses this somewhat with Parallel LINQ (PLINQ). Anders Hejlsberg: "With PLinq, effectively you write the code the same way, but we arrange for it to run on multiple CPUs".
PS - One library that we (Armand and myself) discovered while doing our Robotics talks at last year's Tech Ed, is the Concurrency & Coordination Runtime (CCR). In the world of robotics there are really many concurrent operations, where the results of one might effect those of another, or even require another to abort. The CCR is an API that manages threading operations very effectively, and can definitely be used outside of the world of robotics in your business applications today!
The amount that the US Department of Energy is spending on the development of nuclear war heads for FY2007, namely $23.4 Billion, is just about enough to give each of the 10 million starving people in the USA $2300 for the year. That's more than double the average (monthly) USA minimum wage!!
Ruby is one of those wonderful gems that has been getting people excited for quite some time, but it hasn't been until the Rails framework has been released that the majority of Ruby users fell in love with it. Developing with Ruby on Rails enables you to get fully functional web-apps up and running in literally no time. What's Rails? It's a brilliant MVC implementation, using the Active Record pattern to map domain objects to your persistence layer:
"Rails is a web-application and persistence framework that includes everything needed to create database-backed web-applications according to the Model-View-Control pattern of separation."
Most of the demos you'll see for Ruby on Rails (RoR) will be shown on a mac. The guys use Textmate and it all looks wicked-cool-and-mind-blowing. It's enough to make you run to the nearest apple store and buy a MacBook Pro.
But can RoR be done on Windows, and could it possibly be as ultra-cool? After reading lots of doom-foreboding posts about running Rails in Windows, and specifically IIS, you might loose heart. But fear not, me hearties, because it took about 5 minutes to get RoR running on my XPSP2 box.
-
Download and install InstantRailsThis will install
Apache HTTP Server,
mySql,
Ruby,
phpMyAdmin, the
InstantRails server management tool and some sample RoR apps. (This step takes care of just about most your required installations in one go).
Here's a screenshot to illustrate the simplicity of the InstantRails management application:

- Install mySql client tools (optional)
If you don't like phpMyAdmin, download the mySql client tools.
- Install RubyInSteel.
To enable you to develop in Ruby right from within Visual Studio, get your hands on this great tool from SapphireSteel. It allows you to create new Ruby-type projects from within Visual Studio 2005, following the Rails standards:
It gives you syntax-colouring, deployment options, issuing Rake commands, and the ability to watch variables at runtime, set breakpoints, step through code, etc:

Change your Ruby In Steel Configuration to point to the correct paths in the InstantRails install location. (You only need to change your MySQL- and Ruby paths).
More Posts
Next page »