Teach Yourself Programming in Ten Years
Posted by admin on October 26th, 2009Just read a very interesting article on programming by Peter Norvig. If you’re a programmer, read it and check out some of the links.
Just read a very interesting article on programming by Peter Norvig. If you’re a programmer, read it and check out some of the links.
I’ve been working almost 5 years now on educational software in two companies (first Indie Group, now Televic-Education). We mainly created CD-ROMS (that were enclosed with schoolbooks) and online solutions. All those applications were not built from scratch, instead we created a framework that could read in all exercises and hierarchy of the exercises. Those exercises were created in a back end were you could assemble them in folders and export them in a format for our framework (xml) or other formats like SCORM.
I haven’t got any videos yet on those CD-ROMS, but you can see two of our online solutions in action. The first is Edumatic, the first application that was created and which has some 20 exercise types (multiple choice, fill in, cross word, dragndrop, translate, …). It can be used online or exported to be used in CD-ROMS. On the site of edumatic, you can try out an online example of a multiple set of exercises (for each exercise type there are a lot of exercises). Our senior product manager (;-) Piet Santy) also shows an example each day created with Edumatic which you can follow on Twitter –> link. Please follow and try out his examples! Some of his past examples are shown here and here and here and here(demo). Edumatic back end is created in ASP.NET, the front end in Flash (AS2). Together with Christophe Herreman we created the framework for it, but a lot of other persons contributed to the framework, back end and exercise types like Kristof Neirynck(current technical lead), Bert Vandamme, Piet Santy, Sofie Deparcq and others.
Our other product, which is newer than Edumatic, is called Edumatic Exam. It is now used by three customers and has a lot of potential. It’s more an assessment application than an exercise application and has currently some 15 exercise types. We are striving to support all exercise types from Edumatic, but that’ll take some more time (we’re nearly there). Client side is created in Flex, back end with .NET. This application is used by our government to test the knowledge of applicants. Daily there are multiple sessions with hundreds of candidates. We haven’t got a demo online yet, but if you subscribe yourself at Selor, you can practice some of the language assessments with our application (you need to go to Mijn Selor, subscribe and then choose Taaloefenpakket… all in Dutch or French…) Try it out! The product is also online, but currently you can not register for it. That’ll be something for the future. Currently working most on Edumatic Exam are Bert Vandamme, Sem Dendoncker, Wouter Vanden Berghe and me.
Cheers and practice!
I started this year by taking over the lead of a big project for the Belgian government. The project is an e-learning environment created mainly with Flex, WebORB, .NET, MSMQ and MSSQLServer 2005. Daily hundreds of candidates go to Brussels were they are being tested by our software. Typically some 300 candidates start off at the same time to take a test.
So what have I learned this year (some of the things
):
Database
- Indexes are very important because they can speed up things a lot. However they can also be misused!!! So read about them.
- Stored Procedures made it easy to quickly write logic (transaction scripts). However it’s hard to maintain these Stored Procedures and Cache dependencies don’t work with complex Stored Procedures.
- MetaData was a very usefull mechanism to add new logic in Flex without having to change table designs.
- We also used MetaData for tags which wasn’t the best choice.
.NET
- I didn’t have a lot of experience in the beginning of this year so things kind of moved in the direction of Transaction Scripts. They aren’t a bad choice but as the project gets complexer, transaction scripts are difficult to maintain.
- SubSonic (o/r mapping tool) did it job very good but I’m not very pleased with the lack of documentation, tutorials and clear explanations. I will certainly look into nHibernate and Entity Framework and see how they work with some of the patterns described in ‘Patterns of Enterprise Application Architecture’ by Fowler. In the future the project will certainly need to be scalable so things will have to change.
- Visual Studio is a great IDE.
IIS and ASP.NET
- By default IIS recycles application pools every 29 hours (will come back to that later because this caused a lot of problems).
- HttpHandlers are great.
- Cache is a very important feature if you want to speed up your application.
Flex
- Very good choice for our client side development. Application development however is far more complex than writing web pages in .NET. If you need your code to be maintainable you need to know about design patterns, frameworks, refactoring, architecture, … Those things are mainly things you learn after having used them a couple of years.
- We now work with modules but in the future we will have to check out those shared libraries as well. Our application is now 2mb big so some kind of intelligent caching will be needed.
- Prana is great to configure your application externally. Check it out!
- The Flexbuilder Eclipse Plugin is a waste of memory and I hope Adobe tries to improve this in the future. Building our project takes far too long.
- Resource bundles could be made easier.
- Designing a Flex application is a hard thing because you really need a designer who knows some basic things about Flex.
- Implementing Pessimistic Concurrency with Messaging was a very hard one this year!
- Looking forward to create a desktop application version of our project.
WebORB
- Great product. FluorineFX is the open source alternative, but WebORB has a lot more features. Without a support plan however some things are really hard to debug.
- Authentication and Authorization is worth to take a look at, but it’s important to fully understand it.
- WebORB messaging integration with MSMQ is great to let other applications know what’s happening.
Other tools that have been very usefull are CvsDude, Trac, Mylyn, SubVersion, Charles, SQL Compare, SQL Data Compare, ant, cruisecontrol, Linq, SilverLight (very promising), Spring,…
Ciao!
The last months I didn’t find the time to write much on my blog, but I’ll have another try!
The last months I haven’t been programming a lot. I’ve had for a time more of a teamleader function and now I need to supervise a large project. Being a teamleader or managing a large project has been a strange experience because at times I feel like I’m really doing nothing. You need to see the big picture without willing to know all the details. If you want to know the details, you can’t manage to see the big picture (not in case of this project anyway). I’ve learned some SQL, some Transact-SQL, some features of SQLServer2005, some C#, Visual Studio 2008 and IIS. So now I have a good knowledge of every layer of a RIA, but also am forgetting a lot about Flex Api, Flash, … What really becomes important in this kind of job is to be able to trust the people that work with the details and making sure that they feel involved in the big picture. I’m reading more now about Software development, Architectures, UML, people management, … as these are more important than knowing how to program this or that. It’s hard, especially when staff is not big enough. I have the impression that there are little competent managers out there, but maybe I’m the one being blind.
So, from this on I’ll keep you posted on my experiences!
Ciao!
Last months I started blogging, and until now, I’m still doubting if it’s an interesting medium… I’m still searching what’s interesting to post, and what’s not interesting to post. Having a blog for me is not like having a diary, which mostly is never read by others. A blog for me should be something that’s usefull for others. But what is usefull? Maybe funny posts can be usefull too. So comes the question to my mind what it is that I know or could post that can be usefull for others. I could write about Music, Sports, Philosophy and my work, Multimedia. I think most of the times I will be speaking about Multimedia. Three years ago I started working at Indie Group in Kortrijk, Belguim. I had studied Master in Computer Sciences and wanted to program. However it had to be creative, so Multimedia was a good way to start. In my studies I never saw Flash nor a line of ActionScript. In those days, Flash was mostly used for little animations in WebSites. But I did like it, more than Java of C++, things I had studied. In the first year at Indie Group, I learned ActionScript2 and the frustrating job of creating Desktop Applications. We had a learning platform in ASP where Companies could create trees with several types of exercices. These trees were exported to xml and used in Flash to create Desktop Applications. In Flash we had some ten modules (swf), each representing a sort of exercise. Speaking to the Operating System (PC & Mac) was done with Director). So we had Flash to show content, interact, keep logs and Director to write things to the hard disk, open docs, access databases (V12). It was FRUSTRATING. Those Flash modules had identical classes, so if one of these classes changed, you had to compile ten Fla’s, Director was not very friendly, neither was Lingo (Language of Director),… Creating a Desktop Application was an Art, and I think it still is up to today. Making it work on PC and Mac, creating an installer that’s working on PC and Mac (and yes, also Vista), having no testpc’s (that made the test process easy, because there was none),… Sometimes I had to go to a school to go and look what went wrong. So, after a couple of cd’s, I knew most of the problems, but your boss doesn’t really take arguments like ‘Director is the cause’, ‘There are no Desktop Applications without problems’,…
The second year I continued creating Desktop Applications, but now we had MDM Zinc, which wasn’t fantastic, but it was better than Director, certainly if you were working with Flash, and you didn’t need that much access to the OS. I think we created some of the best Desktop Applications in the world, but it took a lot of effort, frustrations and budget! And on top of that you get frustrated Clients, because Flash was still buggy, Zinc could have updates where one thing was solved, but another thing stopped working, installers crashed on certain updates of Windows, opening URL’s from Flash or Zinc stopped working due to more security in Internet Exporer,…. Really, Deskop Application Developers have to handle tons of stress, work with scary third party tools and never get much credit… Anyway, hated a bit that year…
The third year, I started off with a really great project for Bekaert using Flex, Remoting and .NET. It involved drawing in Flex, getting a lot of information from the user, storing it all in a database, doing complex calculations by a DLL, taking screenshots to create pdf’s, … At that time I had a rather good understanding of Design Patterns, OOP, Remoting Technology, .NET, Databases, … and the project was lots of fun, extremely interesting and the customer was satisfied! The second part of the year I started being more of a teamleader and project manager (mainly architectal analyses and following up certain projects). In the future I hope to do larger projects, involving more people, more structure, more analyse, more following up…
So, what about the blog, well, I will first try to think what people need the most out there. In the Flash/Flex/Desktop Applications world I sometimes miss clear examples, clear tutorials, good summaries of tools out there. So what I will try to do is take out some projects I done, and explain a little what technologies we used, why we used it, what I would use now I now more… Also some examples about Flex, NSIS, Fluorine, WebORB, .NET and thoughts on the world of multimedia.
Hasta la proxima! Ciao!
Recent Comments