
TIS-100: the Programming Game You Never Asked For - LukeB_UK
http://blog.codinghorror.com/heres-the-programming-game-you-never-asked-for/
======
pdkl95
> You know what's universally regarded as un-fun by most programmers? Writing
> assembly language code.

I beg to differ. Assembly is awesome. Some of the best times I've had
programming were writing networking code (ethernet driver, TCP/IP stack, and
HTTP server) in Z80 assembly. I wouldn't recommend assembly if you're writing
something like a modern GUI app, but assembly on an embedded micro can be a
lot of fun.

~~~
hvm
I've been working as a programmer for more than 6 years now.

I still think my best work is a graphical library I built in 9th grade in
assembly to use with my Pascal programs in MSDOS.

    
    
      mov ax, 13h
      int 10h      ;SCREEN 13 rules!!!

~~~
JustSomeNobody
Still have my copy of PC Intern[0] from which I was able to learn how to do
the same.

[0][http://www.amazon.com/PC-Intern-Programming-Encyclopedia-
Dev...](http://www.amazon.com/PC-Intern-Programming-Encyclopedia-
Developers/dp/1557551456/ref=sr_1_3?ie=UTF8&qid=1460723609&sr=8-3&keywords=pc+intern+system+programming)

~~~
sevensor
The good old days! After using edlin to write BASIC on my parents' 80286, we
got a Pentium with a modem, and I used it to download Ralf Brown's Interrupt
List and an assembler. Both downloads, I started before I went to bed and they
were done by morning. (So as not to tie up the phone line during daytime.)
Rbinter wasy my guide to causing a whole new world of exciting crashy
behavior. Ultimately I wrote a paint program in assembly before I gave in and
started using high level languages like C.

And kids these days, they just don't understand!

------
preordained
Am I the only one who finds it weird how articles like this seem to fetishize
programming talent? How we desperately need to come up with ever more
sophisticated filters (programming simulators, in this case) to extract only
the purest high quality programming material? Gattaca, here we come!

I mean, it's efficient...not sure how I feel about a future where a
conversation, or even the dreaded whiteboard become relics of more innocent
times. That said, great game :)

~~~
raverbashing
Yes

And of course to another programmer writing a 100 byte assembly program that
draws something interesting on the screen is just a fun gimmick and "real
programmers" are the ones making the same program 10x slower and consuming
1000x more memory while using some new Java API

(I'm more of the former myself)

~~~
rtpg
but if doing it through the Java API means you can ship it in an hour instead
of 2 days, still might be worth it.

In the end it's really dependent on what tools you're used to. And extremely
dependent on the goal. For most software, the objective is to accomplish the
task, and performance doesn't matter (until it starts to matter of course).

I think judging people on the level of abstraction of their tools could end up
being counterproductive and alienating. Maybe you never want to write in Java,
but dismissing those people out of hand could mean that you might not have an
opportunity to show them why you enjoy writing your assembly programs.

~~~
raverbashing
You're absolutely right that working in a higher level language has a value
and it would be crazy to do it another (low-level) way if you can do it using
Java or another higher level language

Of course the number of people that could do it in Asm is smaller than those
who could do it in Java (I guess in the same way only few people can drive a
Formula 1 car)

------
SeanDav
I must be an exception (or a lousy programmer) because I do not particularly
enjoy games that require programming to play, I write programs for fun (and
programming for me is fun) and I play games for fun but have not found a game
that appeals to me, that combines the two.

~~~
vintermann
Which ones have you tried? I have only tried SpaceChem, but it's certainly
different enough from work!

TIS-100 sounds more like one of the old ICFP programming competitions - 2006
and 2007 in particular, both were about reverse engineering esoteric systems.

~~~
hibikir
TIS-100 doesn't require any reverse engineering whatsoever: The game comes
with a very retro looking manual that documents the system pretty well. What
makes this fun, and not work, is that it's a pretty unique system: inter
processor communication between very primitive processors.

In comparison, The Human Resource Machine has far better production values,
but it's really an assembly class in disguise. The end level is to write a
sort, so I see it a lot more as an educational tool for kids than a game that
could be fun for programmers.

~~~
lfowles
> In comparison, The Human Resource Machine has far better production values,
> but it's really an assembly class in disguise. The end level is to write a
> sort, so I see it a lot more as an educational tool for kids than a game
> that could be fun for programmers.

I found it to be a good "ideal assembly" playground. It definitely could use
more depth, but more often than not I didn't meet the cycle count or code size
bonus criteria after finishing a level, which turns into its own challenge.

------
throwaway386q01
> Joel implied that good programmers love programming so much they'd do it for
> no pay at all. I won't go quite that far, but I will note that the best
> programmers I've known have all had a lifelong passion for what they do.
> There's no way a minor economic blip would ever convince them they should do
> anything else. No way. No how.

This isn't just a minor economic blip, but I took a non-programming (but still
technical) job out of college, because it was what I could get. I now have a
few kids and pretty firm roots in a town without a lot of programming jobs. I
make a six figure salary, I'm reasonably good at what I do and I like my
coworkers, so I feel weird complaining about my job, as I'm better off than
most people I know...

However, I really want to write software. I contribute to open source
projects, and when there is something I can automate at work, I do it. I'm
also somewhat concerned that if programming were to become my day job, I would
lose interest in it. Has anyone else made the transition from hobbyist to
professional, and have any advice to give?

~~~
Rudism
I haven't made that transition, but I can say from experience that (for me, at
least) hobbyist side projects are a lot different than working on software
full-time. When you're coming up with your own side-projects or picking FOSS
to contribute to you get a lot more freedom in what you're doing and how you
do it than if it's handed down to you filtered through managers and other more
senior engineers. Unless you're lucky, there's a good chance you'd end up
working on something that doesn't really interest you or stimulate you in the
way that solving your own problems can.

That being said, I work full time on software that doesn't always align 100%
with my passions, but it hasn't dulled my interest or excitement in
programming in general or my side projects at all.

~~~
libc
Agreed though I find that as a professional I'm not as motivated to see side-
projects through to completion because I'd rather spend my free time doing
other things.

------
stevetrewick
I'm with Robin, this sounds like a ton of fun, and I also love crafting up
random VMs and emulators. This kinda reminds me of an old ICFP Programming
Contest featuring the mysterious Cult of the Bound Variable [0] which starts
off with requiring you to implement a VM to a spec and just gets weirder (and
more awesome) from there on in.

[0] [http://boundvariable.org/task.shtml](http://boundvariable.org/task.shtml)
[1]

[1] Fair warning, this rabbit hole is deep.

------
Joof
TIS-100 made me wish I could have programmed in the 80s. I doubt it means I'm
a good programmer, but god is it fun.

~~~
ksherlock
It's not to late. For a few bucks you can buy an Apple II from Goodwill. For
10-100x a few bucks you can buy one off eBay. (There are also plenty of
emulators which are more practical but lack that 80s feeling.)

~~~
jackhack
Finding the hardware may be the easy part. You'll also need a DOS boot disk,
and a LISA compiler.

I fired up my Apple ][ recently and was amazed it still worked -- those floppy
disks are amazingly durable. 30+ years of sitting in a footlocker and yet
they're still readable. Amazing!

There is no substitute for the charm of a flickering greenscreen monitor, the
whirr of a 5.25" disc drive, 40 columns of text, a clacky keyboard, and the
smell of dust burning off the power supply. Yet I found myself asking "how did
I get anything done with such primitive machines?"

------
yekim
Assembly language can be fun and awesome!

For me, if I'm ever working in assembly, which is pretty rare these days, it's
_usually_ on an overall "smaller" system. Ie an embedded system where all the
SW, HW, and tools can be grokked by a single person with out multiple
cascading levels of increasing complexity and abstraction.

Good times for sure, though to be real, the good part usually comes after many
moments of banging-head-against-brick-wall.

------
xigency
TIS-1000 is a bunch of fun, the way it combines assembly programming in small
bits with the puzzle of connecting different black boxes.

Interesting trivia: the creator of this game, Zach Barth, created Infiniminer,
the precursor to Minecraft.

~~~
jlees
I really enjoyed playing it too. One of the more fun things was seeing the
scoreboard and competing against engineer friends of mine... it's fun to see
that there is a better solution, and also fun to see that yours is more
efficient. It feels egotistical, but to me it's a form of feedback.

------
felhr
I've not coded any assembly for a decade but at college I enjoyed
Microcontroller assembly courses way more than other programming courses

------
Frenchgeek
It's a nice game, but the difficulty for some puzzles can really ramp up ( I
do not consider myself a programmer, so your mileage may vary ) : I've been
stuck on the sequence sorter one long enough to lose all interest in
completing it. I understand what should be done, I simply can't find a way to
subdivide the task in a way that fit into the cells...

------
raverbashing
On the same subject there's also [http://box-256.com/](http://box-256.com/)

------
geoelectric
I enjoyed the time I've spent so far with TIS. My takeaway wasn't so much
about programming assembly, though, as much as managing pipelines and
concurrency.

It reminded me a lot more of the work I did with software-configurable
processors in the early 2000s than any of the 8-bit assembly I did back in the
80s.

------
juped
TIS-100 isn't even the most hardcore Zach Barth programming puzzle came. That
would be KOHCTPYKTOP (actually a circuit-design puzzle game).

------
kazinator
Nice. Looks like APPLE II assembly code there at the top? ACIA! "asynchronous
communication interface adapter (== serial card)". Brings a tear to me eye.

------
nxzero
Approaches like this lead to systems where talent work for free just to gain a
reputation.

Stack Exchange, which was co-founded by the author, does exactly this.

~~~
egjerlow
In a merit-based system, though, that reputation actually does translate into
a "resource" that you can leverage at some point, so even though it's money-
less work, it does pay off.

And, of course, if you're having fun and noone is forcing you to do it, I'm
not sure it can be classified as 'work' anyway (depends on whose viewpoint
you're taking, of course).

~~~
cauterized
But is a system truly merit based if having enough time to do work for free is
a necessary component of demonstrating merit?

~~~
egjerlow
It's still merit based, though it might not yield the world's best candidates,
since they might not have the time. And that's going to be a problem, of
course, but other things you might do to demonstrate merit except for actual
paid work (open source projects etc) also take time. The exception being
technical interviews, which for various reasons are undesirable or at least
seen as suboptimal by many.

I suppose a system like stockfighter can try to take into account the fact
that not everyone has time to optimize their solution, but also, at the end of
the day, how you prioritize your time I suppose is a factor in the whole
merit-equation - the more driven you are the more 'passion' you are seen as
having.

Stack overflow is different in this respect, though, I will admit that -
although some answers are really high quality it is probably the people
spending the most time there that end up with most reputation. And I guess
that's fine as well, if some recruiters want to use SO points as a basis for
recruitment they know (or should know) what kind of people this process
singles out.

I hope to see many projects like stockfighter in the future, each focusing on
their own aspects of work in software so that employers can look for their
candidates in the appropriate 'pool'.

~~~
cauterized
"How you prioritize your time" reflect passion if all else is equal, but
someone raising a family or commuting two hours each way is just plain not
going to have as much time to spend playing a programming game as someone with
no responsibilities other than themselves and a 15-minute walk to work -- no
matter how "passionate" the former person is. And yet the former person may
make a far better employee.

I just really think that measures like this severely distort the employment
market and are a terrible measure of actual merit. Which becomes even worse
when people talk about those with "merit" being more "deserving" of whatever
we consider to be "success".

------
nialo
I've finished Stockfighter, and wrote a clone of the official stock exchange
server. You can find that here:
[https://github.com/bcoburn3/forex](https://github.com/bcoburn3/forex)

I'm looking for work as a programmer in NYC, my email address is
bcoburn3@gmail.com please get in touch if you also think that a game like
Stockfighter is a good test of programmer skill.

~~~
jonaldomo
So... did you get an interview of any kind directly from the game?

~~~
nialo
No interviews yet, but I did just write a response to an email asking about
interest in a specific company.

The impression I get is that people have gotten and will get interviews
through this, but that the amount of time each one takes is more than expected
and that Thomas/Patrick/Erin are generally overwhelmed.

