Software Development Meme

July 7th, 2008

I was recently tagged by Danny to answer questions about my programming experience as part of a longer chain letter, so here they are:

How old were you when you first started programming

I was 8 (some 0x17 years ago) when I got my first computer: Timex 2048 which was ZX Spectrum clone sold in Poland. Originally I was planning to use it for gaming. Unfortunately my computer didn’t come with an essential component (a tape recorder J), so I really had no choice but to learn programming.

How did you get started in programming?

Fortunately Timex had a built-in BASIC language interpreter and it came with a nice language manual. I started exploring that and found that I could do cool things with programs. First things I tried were graphics-related and used PLOT/DRAW combo extensively to produce some nice geometric patterns.

Later I realized that there was another language that my computer understood which was much faster: Z80 assembly language (the computer manual even included an introduction to Z80 assembly  – compare it with today’s manuals!) so I learned about it (with the help of GENS assembler and MONS debugger and “The Complete Spectrum ROM Disassembly” book) and quickly fell in love with it.

Side-note: because programs for ZX Spectrum were mostly distributed on audio tapes (with a buzzing sound on it kind of similar to a modem negotiating connection), some people in Poland came up with a super clever idea of distributing programs during radio shows in the middle of the night. The show was called “RadioKomputer” and that’s how I got some educational programs.

What was your first language? 

My first languages were Sinclair Basic and Z80 assembly, many years later I moved to a PC (386 SX with 2MB of RAM) and then I started playing with Turbo Pascal & Turbo C from Borland.

What was the first real program you wrote? 

I don’t remember what the first real program was, there were many of them, most were graphics related. I wrote some flashy graphics demos in assembly language which included some scrolling text, nice graphics, explosions, music (such as “Axel F” theme or Jean Michel Jarre because it was the only thing that sounded ok on Timex beeper). We demoed those on computer fairs which were organized every week in a nearby high school.

Later, on PC I wrote my first Norton Commander clone. Everyone else I knew had also written their own clones, too – I guess it was kind of a sport in the nineties. I was proud of my Jarek Commander, because it only took <500 bytes of resident memory while original NC consumed some 4 KB (in the world of 640K this was a huge difference).

My first big program (sometime around 1994-95) was a graphics program called “Canaletto” named after Bernardo Belotto who was a 18th century painter. It was a fully featured graphics package for DOS which included drawing and image processing capabilities (like MS Paint on steroids with some basic image processing effects which you can see in Adobe Photoshop today). I wrote everything from scratch in Turbo C & 8086 assembly, including my own windowing library, printing support, image processing algorithms and even some graphics drivers for non-VESA video cards. We wanted to sell Canaletto to Get Rich Quickly(tm). We prepared the first “batch” in my friend’s kitchen using his color printer and even shrink-wrapped the boxes manually using his gas stove. We sold whopping 3 copies and 33% of buyers have registered their copies by mailing in registration cards.

What languages have you used since you started programming? 

Sinclair Basic, Z80 assembly, Turbo Pascal, C/C++, 80386 assembly, Java, JavaScript, Perl, Python, C#, Awk, Unix shell scripts, SQL, HTML, XML/XSLT/XPath/XQuery. I have also experimented with countless other languages such as Smalltalk, Boo, functional languages and more.

What was your first professional programming gig?

My first professional software development project was a PC game called “RoboRumble” which was produced in 1998 and released worldwide. It was a real-time strategy in 3D with some very cool accelerated graphics. I was responsible for gameplay, AI, multiplayer and various putting-it-all-together tasks.

After that experience I moved on to do some more “serious” development. I spent next 7 years building large workflow systems for enterprises. I implemented at least three O/R Mappers along the way. I just didn’t know that those things were called O/RM back then.

If you knew then what you know now, would you have started programming?  

Absolutely!

If there is one thing you learned along the way that you would tell new developers, what would it be? 

It’s all about requirements. No matter how cool the code is, it is useless if it doesn’t do what the customer wants. Customers often don’t know what they want, so it takes a lot of communication skills to “extract” that information. Also, be prepared for ever-changing requirements and incorporate them in your development process. BDUF rarely wins against agile practices. Usability is also extremely important; even if the customer does not realize the importance of it, you should do all you possibly can to make common user scenarios very easy to use and other scenarios possible.

What’s the most fun you’ve ever had … programming?

Definitely working on RoboRumble was a lot of fun. In the end-game we spent like 20 hours a day working on finishing the product (we literally left @4 AM just to get back at 8AM) but despite some local frustrations we absolutely loved it.

Who’s next

Because of the exponential nature of this chain letter it is increasingly complex to find more people with blogs, but here are the next nominees:

Zlatko Michailov
David Sceppa
Ju-Yi Kuo
Maurycy Markowski

No Comments


Sample Entity Framework Provider for Oracle

June 23rd, 2008

I wanted to let you know that we have just released Sample Entity Framework Provider for Oracle on MSDN Code Gallery.

http://code.msdn.com/EFOracleProvider

The provider is implemented using essentially the same technique as EFSampleProvider, but targets System.Data.OracleClient […]

[Read more on blogs.msdn.com]

Tags: , ,

No Comments


EF Mapping Advisor

June 5th, 2008

Ju-Yi Kuo from our team has started blogging about advanced mapping scenarios supported by Entity Framework. Part 1 of his EF Mapping Advisor series is online […]

[Read more on blogs.msdn.com]

Tags: , ,

No Comments


Entity Framework Sample Provider for Visual Studio 2008 SP1 Beta is Online

June 2nd, 2008

We have just published an updated Sample ADO.NET Provider for Entity Framework. 

Changes in the provider APIs since Beta3 release: […]

[Read more on blogs.msdn.com]

Tags: , ,

No Comments


Transparent Lazy Loading for Entity Framework – part 3 – Anatomy of a stub

May 28th, 2008

This post is a part of the series that describes EFLazyLoading library.

In two previous articles I have introduced EFLazyLoading – a framework for lazy loading of entities on top of Entity Framework. In this post I will explain what stubs are and how they work. […]

[Read more on blogs.msdn.com]

Tags: , ,

No Comments


Transparent Lazy Loading for Entity Framework – part 2

May 12th, 2008

This post is a part of the series that describes EFLazyLoading library.

As I promised last time, I would like to present the result of a little experiment in implementing transparent lazy loading for Entity Framework. You can download the sample code here, the rest of this post tries to explain how it all works. […]

[Read more on blogs.msdn.com]

Tags: , ,

No Comments


Transparent Lazy Loading for Entity Framework – part 1

May 12th, 2008

This post is a part of the series that describes EFLazyLoading library.

The first release of Entity Framework supports explicit loading. This means that if you are navigating a relationship, you have to make sure it is loaded by explicitly calling Load()on EntityReference or EntityCollection objects, or pre-loading your relationships by using Include() on your query. […]

[Read more on blogs.msdn.com]

Tags: , ,

No Comments


Communities To Communities 2008

April 8th, 2008

Last Saturday I gave a talk at “Communities To Communities 2008” conference in Warsaw, Poland. I presented EDM and Entity Framework to an audience of >130 people – Polish MVPs and members of .NET User Groups (because of limited seating there was no open registration for .NET track). […]

[Read more on blogs.msdn.com]

Tags: ,

No Comments


Tips and Tricks for Debugging your Entity Framework Provider

March 24th, 2008

Here are some tips that may be helpful when developing and testing a data provider that supports Entity Framework

  • Tip #1 Validating SchemaInformation SSDL and MSL using EdmGen.exe
  • Tip #2 Generating a model from a database without using designer
  • Tip #3 Query SchemaInformation using Entity SQL
  • Tip #4 Query SchemaInformation using LINQ To Entities
  • Tip #5 Common Error Messages and how to resolve them […]

[Read more on blogs.msdn.com]

Tags: , ,

No Comments



SetPageWidth