"Where do you start? I mean what's the first thing you do?"
That was the line of thought that lead from being asked – and I'm quoting my wife here after returning from a Parent Teacher meeting where an exasperated group of ladies had just spent all afternoon adding up lunch orders – "Can you just put it on a web page?"
The item was 'lunch orders' and '...on a web page' referred to the idea that one could simply post it up there on the Internet like you might pin a take-out menu to the fridge. So, yes, pin the lunch orders up on the Internet.
I'm a... well I suppose the trendy term in 2022 is "DevOps" - that developer that also manages the servers that their code is running on - I don't think that the developers have yet figured out that they've just simply been given more work without extra pay but, that's for another blog.
I've worked in financial software development and have always been on the fringes of the actual coding. That was until I moved to a startup that needed to get stuff done. It had 'proper' developers but also there were opportunities to work on side-projects that could add to the bottom line of the business. One such project that I lobbied for was to add a mobile web interface to our foreign exchange trading platform - it's all very basic, well, was in 2001... Remember, no smartphones! You have a 5-10 line text screen a D-pad and, two custom buttons. On that platform (WAP if you recall) I built an FX trading platform that allowed the well-heeled to trade dollar, yen, euro and pound whilst out on the golf course. It was a hit, even Microsoft featured it in their developer magazine but, it was also... really fun to do!
When the call came to help out the PTO I figured that I'd do my part. Pamela, my wife and co-founder here at FoodDays laid out the problem; each month the mums would gather at school to collate all of the lunch orders filled out on paper-slips. They'd produce order sheets for the local vendors that brought in the lunches for the children and cross-check the 'checks' that the parents sent in. There was a lot of room for error and, it took, literally woman-days of effort!
It didn't seem like a tough computer problem to solve; create the digital equivalent of the forms and host those to allow parents to register the details of their children, select from the items they wanted and, print out the numbers so that the parents could write out a check for the actual correct amount - that last part was a victory alone enough to please the PTO mums.
It was February if I recall, and all the orders for the rest of the year were already in so, September, the start of the new year, was the goal. This was going to be easy.
OK... so, it took a little longer than planned, I mean, it's software, like construction, everyone knows that two-weeks means two months. How was I to know there was so much more to it?
As a result of being a classic rookie coder I underestimated the work. It turned out that registration was tough; Which grade? Which homeroom? What do you mean, one child is in a different school? Ordering was no breeze either; Little Sammy can't order the big pizza slice, Jo shouldn't really be allowed to order two things on the same day according to his mum! The requirements for cataloging the orders where a lot tougher than I thought however, time and some effort delivered the results.
At the last PTO meeting of the year, I presented the initial release.
The only thing that a developer wants to see is clean code and a thank you from the client. The first may not have been quite right but the second part made it all worth the effort.
Tech deep dive:
For each part of this journey I hope to catalog the ingredients used and some of the decisions made, not so much as a how-to or even how-not-to but just as a comparison, what would you do differently at that time? I'd love to hear from you!
I don't think that, in the real world, that projects start with a clean sheet, I think they start with an idea and some available resources. The choice of platform, programming language and direction is largely down to what your developer knows and what platform they're confident with.
I've grown up on the ZX81 & BBC Micro so for me, coding was a language called BASIC or, Beginners All-purpose Symbolic Instruction Code. It's what was popular on small home computers in the 80's. It was functional, simple to understand and easy to implement.
For those that fancy looking at a BBC Micro in 2022 to see what coding was like back then, well, I still have mine but, you can also get the full experience in this great online emulator at https://bbcmicro.co.uk/jsbeeb/ – it's an amazing piece of work, right down to the click from the motor relay.
As I grew up through the 90's I stuck with BASIC and quickly picked up Visual Basic, which I could use on the increasing number of DOS and Windows PCs that surrounded me at work and at home. The Microsoft version of BASIC was ported to Microsoft's new JAVA clone – someone please tell me if Microsoft has ever had an original idea! – called ".NET".
I did, briefly consider building FoodDays in JAVA as an experiment but, time and skill lead me down the path of Visual Basic - that's how decisions get made, you build what you can in the tools you can.
Up until this point though, the apps I'd built before were traditional download-and-run programs. The Internet was not really too mechanized yet, it was mostly filling in forms and viewing the results. There were a few technologies floating around like Shockwave Flash, Java applets and even ActiveX controls. All of these 'felt' wrong and, actually turned out to be. One technology looked interesting; Active Server Pages which was a Microsoft version of Java Server Pages, it allowed you to mix code and HTML into the same page, so, you could have a text box display the results of a calculation. It seemed like the right idea but nothing like the ASP Web Forms that was in beta at the time. That separated the code and presentation so that you had HTML with the code behind it. It behaved as though the code was running on the web browser... sort of... it was actually a well orchestrated arrangement of forms being posted back and forth and the compute happening during the 'refresh'. That, along with the news that the 'code' could be any language compatible with the .NET standard sealed the deal, even if it was still in beta.
For the platform choice; I was still deep in Microsoft server world so, that seemed logical along with their database solution. The result was a stack:
- Visual Basic.NET
- ASP.NET Web Forms
- Microsoft Internet Information Server (Web Server)
- Windows Sever 2000
- Microsoft SQL server 2000
... It is so, so... so, different today except for ASP.NET Web Forms... that is still there today... for now...