David’s Software & Programming Career

Created with Sketch.

Find out about my software, my programming career/experience and what I’m interested in doing next!

About my software

  • Free to download, but not public domain. I still retain copyright.
  • Please get in touch if you have any questions about it or problems using it.
  • Feel free to download and read the source code of any software of mine and take it apart and learn from it. But please don’t go and copy substantial parts of my code without telling/asking me.
  • I’m more than happy to talk about any of my software or about programming issues related to it.

About my programming career

Early years: BASIC, 6502 Assembly, HyperCard, itching for more…

  • 1988 Age 9, We got a BBC B computer. Interesting. Some nice little games and a good thick manual
  • Before long, I began programming BBC BASIC following the excellent user’s guide and devouring as many books on programming the BBC as I could get my hands on.
  • Then grew frustrated with the limitations of BASIC and started learning 6502 Assembler. Hard work, but fun. Not that many substatial programs came out of this. I was on the verge of stating to write some serious games when…
  • 1992 Dad got an Apple Macintosh Classic II and the whole new world of GUI-based personal computers was opened up to me. Trouble was I didn’t want to just use the computer, I wanted to program it – and make it do what I wanted. No command prompt – how was this going to work?
  • Turned out a wee program called HyperCard was included with that computer and it had an object-oriented programming language built in. Someone helped me unlock it, and then I had to figure out how the language worked. More manuals devoured. (only now they were quite expensive)
  • Soon started churning out some interesting programs, especially educational ones for Dad to use in his secondary-school teaching. Several were adapted from BBC programs.
    • Adaptations from BBC: Catch, The Hajj, Book Chapter & Verse, The Haber Process
    • Originals: Multimaker, FontGuide
    • Developments from others: World Religions QuizBase
  • 1995But eventually I again sensed the limits of HyperCard. You could whip up nice GUIs quickly, but it was slow, colour was a hassle, and the language not really sophisticated enough for doing interesting manipulations. Time to find some books on C/C++ and to buy a compiler for the Mac…
    • Colloque: a cute/annoying talking clock.
  • Picked up AppleScript as it came in, but resources within my price-range for learning it and other languages were very scarse. (Remember this was before most of the Web had got going.)
  • While at school we got fairly ugly but remarkably capable Texas Instruments Graphical Calculators.
    • They had a built-in language which was surprisingly good. It accepted user input and timing, thus enabling me to write several small games.
      • Bat & Ball (squash-type game)
        • I kept releasing harder and harder versions.
      • Connect 4 (with simple computer opponent)
      • something else I can’t quite remember – I think it was maybe a battleships game.
    • What made this really useful was that programs could be transferred between calculators with a simple cable.
    • The games spread through our year pretty quickly, especially popular since they could be played while you appeared to be working on your calculator!

Late 90s & University: Database & Web

  • Started playing with Access & databases, particularly as I did some work for hospital departments in Glasgow through a friend. Learnt quite a lot just by doing it. No idea of database theory really.
  • Web stuff was coming in, so I learnt HTMLand hand-coded my first web pages (I still do that a lot of the time).
  • 1997Then at university languages came thick and fast:
    • Java(very early days still – Swing hadn’t been invented when we started),
    • ML(a rather peculiar and not really very useful language),
    • x86 assembler (reminded me of 6502)
    • and several other ones I never did much with, such as Perl, Prolog, Lisp
    • UNIX stuff too was all new to me – Linux and Solaris.
      • (Reminded me of playing those text-based adventure games in the old BBC days where you hadn’t a clue what commands were acceptable so just tried typing all sorts of things in until the right thing happened.)
  • Group and then individual projects at university gave more experience particularly of Java, but also of software engineering and personnel issues.

Work Experience & Development in the Real World

  • Over the 1999 summer had a couple of jobs one doing Java/C++ and the other Visual C++ using lots of big expensive tools like Rational Rose UML modeller, and Microsoft configuration management SourceSafe.
  • With Wycliffe in Nigeria I worked on some Java-basedlinguistic software to help our work
    • ShoeShop was the major project of use outside our own work, but a bit rough & ready.
      • Several people since have expressed interest in it, but unfortunately I’ve not had the time to develop it further. There’s lots of potential here, though. Probably a re-write from scratch would be in order, especially to cope with new versions of SIL Toolbox which have replaced SIL Shoebox.
    • Toolchestwas a collection of tools for working on the lexicon and doing fancy stuff to the text-based database.
      • only once did it go wrong and corrupt the database!
  • In Oxford got a chance to brush up my Access/SQL
    skills and put the theory I had learnt into practice.

Lots of database stuff, Visual Basic programming etc.

  • Completed a big but nimble bespoke database solution to replace an expensive off-the-shelf package which had just annoyed everyone in the office. It was called KEVIN! (Keeps Extremely Vital Information Nicely)

 

  • While studying Theology 2003-5, then employed for 2 years afterwards, I started helping with our church information systems and website
    • First – online audio, and brushing up my HTML / CSS / Javascript after some years of disuse, and finally getting into Macromedia / Adobe DreamWeaver MX (2004 then CS3).
    • Then, as the list of recordings grew, I explored possibilities of PHP for improving presentation of the recordings & simplifying input, and investigating cookies and authentication systems.
    • Around the same time I completely re-wrote my useful multiple-choice test-generating program MultiMakerat the request of my dad for him to use in school tests
      • Using a Java engine to build self-marking HTML / CSS / Javascript pages.
      • The test production engine worked on Mac OS X or Windows, and the tests were usable even on ancient (10+ year old) machines, running Internet Explorer 4 or 5.
    • Picked up AppleScript which in several years had grown and become much better documented, allowing significant interactions with the UNIX / BSD command line to automate processes.
    • Then developed ways of enabling non-specialists to contribute to website information – like lightweight CMS systems.
    • Explored integrating & customising off-the-shelf PHP-based engines (forum, etc).
    • Explored PHP/MySQL for database-driven website development.
    • Started getting into AJAX / Web 2.0 style programming as means of fixing problems, making website more reliable, and presentable.
    • Along the way I explored setting up Mac OS X as a test environment
      • with FTP servers, Apache HTTP, Redirects, MySQL, PHP My Admin etc.
  • Since in Kenya studying to do Bible Translation:
    • I’ve been developing my PHP/Web expertise and intend to pull out my Java as well, and bring some old tools up to date, and build new versions of old software which still has a place.

 

Things I’m interested in getting into now:

  • Reviving ShoeShop
  • facilitating useful distributed work on lexicons, and possibly other work, in non-networked environments.
  • Writing other software to help with linguistic / Bible translation needs, especially in places like Africa.
    • Ever since my experience with lexicography in 2001 in Nigeria I’ve had ideas about more specialised software for helping make well-presented dictionaries for print and screen.
  • Porting useful programs to Mac OS X/ cross-platform.
    • either using Java or HTML.
  • Continuing to develop web based programming, and getting into AJAX

No Comments

Add your comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.