First computer – Tesla PMD 85-1

Once in a while people ask me what was the first computer I could get my hands on.  Mistakenly, I’ve often answered that it was Commodore 64.  But today I did some digging and realized that it wasn’t true.  I did use Commodore 64 too, but that was mostly for playing games – my uncle was a head of a nearby Fire Station and he had one of these in the office, but that wasn’t the first computer I used, and it wasn’t the one I learned to program on.  That honor goes to Tesla PMD 85-1.  Here is a picture to give you an idea (thanks to root.cz):

pmd85

We had a computer lab in school, with 11 of these things.  10 were used by the students and 1 was for the master station for the teacher.  Some of the highlights that I still remember: black and green monitor, cassette tape drive for loading and saving programs (sorry, no hard drives or floppies, or network really, except for printing on a slow and very load dot-matrix printer), a very uncomfortable yet colorful  keyboard.  The keyboard is worth a separate mention.  As seen above, it had blue, red, and grey keys.  It didn’t have an Enter or Escape keys.  But it had two EOL (end of line) keys right next to each other – I don’t remember why though.  And STOP and RST (reset) buttons.  And it was almost QWERTY.  Here is a close-up image from Wikipedia:

PMD_85-1

For some reason, I remember the keyboard slightly different.  Those blue K-keys were to the left of the main area, organized into two vertical columns.  But I was unable to find an image of such model, so it must be my memory failing.

When I was back in 5th grade (that must have been … hmm … somewhere around the year 1990), a new Informatics (that’s how Computer Science was called back then) teacher at school opened up an after hours Computer Club, which allowed all students, and not just the high graders access to the machines.  I don’t remember the name of the guy, or how I got involved with it, but I do remember that I got hooked on it pretty much immediately.

A few times a week, we’d stay for an hour or two after classes and learn Basic programming language.  He’d explain to us some basic concepts such loops, conditions, and variables, and then would let us work on our code.  For the rest of the days, I remember, I was walking around with the paper notepad, in which I’d write source code by hand, debug it, test it, and improve it, so that I could spend less time doing so in the lab.  Machine time was limited (an hour or two per session, with some of it taken for loading the program from tape, typing in changes, and saving back to tape), so you’d optimize for using it to actually run the program, verify the result, and, maybe, try one or two more ideas.

If I remember correctly, I worked on these machines for two or three years.  Then, my other uncle, who was the first real IT guy I knew, got me an IBM XT machine.  It wasn’t an original IBM, but a mix of Soviet countries manufacturers.  But that was great!  That was the closest thing to the modern PC – CGA graphics with 4 colors, 640 KB of RAM, 10 MB hard disk, and a floppy drive!  I thought nothing better was possible until I saw a VGA monitor with 16 colors.  I think then I realized that I’ll never catch up to the technology developing so fast.

And one last bit of memory.  Even though I wrote quite a bit of Basic code while learning English in a specialized school, it wasn’t until I came to Cyprus and started learning Pascal programming language in Intercollege, that I realized that all those words I’m typing into the computer to make it do things are ACTUAL ENGLISH WORDS!  Now that was both embarrassing and empowering at the same time…

Oh, good old days.

P.S.: Yes, I’ve played on Atari too at my friends’, but I never owned one of those.

Why Learning to Code is So Damn Hard

Erik Trautman of the Viking Code School Blog did an outstanding job explaining “Why Learning to Code is So Damn Hard“.  It’s a rather long read, but it’s easy to get, and it explains the different stages extremely well.

coding_is_hard_combined_chart

He looks both at the variability of confidence as one gets competence, the scarcity of resources for each stage, and the scope of knowledge.  Just to have it here for a quick reference, here are the stages:

  1. The Hand Holding Honeymoon is the joy-filled romp through highly polished resources teaching you things that seem tricky but are totally do-able with their intensive support. You will primarily learn basic syntax but feel great about your accomplishments.
  2. The Cliff of Confusion is the painful realization that it’s a lot harder when the hand-holding ends and it feels like you can’t actually do anything on your own yet. Your primary challenges are constant debugging and not quite knowing how to ask the right questions as you fight your way towards any kind of momentum.
  3. The Desert of Despair is the long and lonely journey through a pathless landscape where every new direction seems correct but you’re frequently going in circles and you’re starving for the resources to get you through it. Beware the “Mirages of Mania”, like sirens of the desert, which will lead you astray.
  4. The Upswing of Awesome is when you’ve finally found a path through the desert and pulled together an understanding of how to build applications. But your code is still siloed and brittle like a house of cards. You gain confidence because your sites appear to run, you’ve mastered a few useful patterns, and your friends think your interfaces are cool but you’re terrified to look under the hood and you ultimately don’t know how to get to “production ready” code. How do you bridge the gap to a real job?

I’ll also borrow the resource density chart, which is very handy:

coding_is_hard_resource_density

 

Not only the article explains why learning to code is so hard, but it also suggests how to make it easier, depending at which stage you are.

I think this is one of the best articles on professional development in software development that I’ve seen ever.  Do read the whole thing.  It’s that good!

awesome courses – list of awesome university courses for learning Computer Science!

awesome courses – list of awesome university courses for learning Computer Science!

While there were quite a few of these from before, this one is a really good selection.  I’m currently going through the slides of the Cloud Computing course from Cornell University.

Code.org – Learn an hour of code

Maxim mentioned code.org to me a couple of times last week, but I didn’t have the time to check it out.  Today, however, he said that “Learn an hour of code” was his homework for the computer class.  That got me quite interested.  After all, I was exploring looking for an easy way to get him (and some other kids) into computer programming.  We’ve tried bits and pieces of online tutorials here and there, YouTube videos, and I’ve even took a swing at it myself – all for nothing.  It was all too boring and broad and it always required plenty of effort to get into.

code.org

And I’m happy to report – that’s where Code.org succeded.  These guys have found a way to explain things in a very simplistic manner, with immediate practical exercises, which utilize drag-n-drop instead of typing (even a seasoned programmer is rarely a touch typist in my experience), familiar surroundings of Angry Birds and Plants vs. Zombies games, and short, yet motivational explanations of core concepts by computer industry celebrities, like Mark Zuckerberg and Bill Gates.  There also a familiar gaming incentive to the experience, with badges and achievements, but those aren’t the core motivator.

We’ve spent about an hour with Maxim, going through tutorials and doing exercises.   So far, it was a perfect balance of fun and education.  But for me, it there was also another important aspect to this.  I could finally show to my son what I do at work (well, not exactly what I do, but close enough).  Explaining programming with words and showing bits of code and chunks of website never looked too appealing.  Now however he has a better idea.

And for the first time he is actually excited about programming.  So much in fact that I could barely get him to go to bed.  We had to make plans for tomorrow to continue to calm him down a bit.

Thanks code.org!  You guys have done an amazing job.  Keep it up!

Teach Yourself Programming in Ten Years

Teach Yourself Programming in Ten Years

The conclusion is that either people are in a big rush to learn about computers, or that computers are somehow fabulously easier to learn than anything else. There are no books on how to learn Beethoven, or Quantum Physics, or even Dog Grooming in a few days.

The University of Nicosia launches the Bitcoin course

The University of Cyprus launches the Bitcoin course

unic-bitcoin1

 

THE University of Nicosia (UNIC) has launched a six week, free and open enrolment online course called “Introduction to Digital Currencies”, aimed at anyone wishing to gain a greater understanding of the fundamentals of bitcoin and digital currency in general.

The MOOC (Massive Open Online Course) is due to start on May 15, with other sessions starting each month thereafter.