8 ms·
TIS-100: the Programming Game You Never Asked For
- Joof 11y agoTIS-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 11y agoIt'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 11y agoFinding 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?"
- Joof 11y agoWell I hack on an original gameboy; I think that counts :p.
- GFK_of_xmaspast 11y agoAs someone who (poorly) programmed their c64 in the 80s, I do not miss those days at all.
- lfowles 11y agoBingo, the best part of these games (TIS100 and HRF in particular) is having a well chosen instruction set and glossing over the other annoying parts of working this close to the hardware. I want the puzzle to be figuring out how to make do with only 2 jmp variants, not remembering to use a different instruction to access memory below address 0x100
- pdkl95 11y ago> 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.
- dalke 11y agoYes, "universally" should not then be restricted to "most programmers". Those are incompatible. It would be like saying that the Universal Declaration of Human Rights aren't meant to apply to all humans. I would prefer "what's near universally regarded as un-fun by programmers". Which would simply place you in the small minority, rather than being placed outside the universe of programmers. It could still be wrong, depending on the threshold for "near universal", but it wouldn't be obviously confusing.
- pessimizer 11y agoThe vast majority of programmers have never written 10 lines of any type of assembler. I wouldn't doubt that most would scowl at the idea of having to write it, but that's just because they've been told it's unfun, and it doesn't look like algol.
- hvm 11y agoI'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 11y agoStill 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-Developers/dp/1557551456/ref=sr_1_3?ie=UTF8&qid=1460723609&sr=8-3&keywords=pc+intern+system+programming http://www.amazon.com/PC-Intern-Programming-Encyclopedia-Dev...
- felhr 11y agoI've not coded any assembly for a decade but at college I enjoyed Microcontroller assembly courses way more than other programming courses
- SeanDav 11y agoI 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.
- OSButler 11y agoI fully agree. Plus, most of those games are lacking in at least one of the two areas, so that you end up with either a bad game, or a bad programming lesson. Maybe the new VR market is going to introduce some new ideas in that area, but so far I'd prefer to either play an actual game or follow a proper programming lesson, instead of a mediocre combination of the two.
- vintermann 11y agoWhich 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 11y agoTIS-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 11y ago> 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.
- preordained 11y agoAm 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 :)
- bobwaycott 11y agoYou are not the only one.
- raverbashing 11y agoYes 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 11y agobut 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 11y agoYou'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)
- nialo 11y agoI'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 11y agoSo... did you get an interview of any kind directly from the game?
- nialo 11y agoNo 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.
- nxzero 11y agoApproaches 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 11y agoIn 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).
- nxzero 11y agoStack Exchange itself appears unable to monetize the reps of users, and while there are exceptions, I would argue that on average user's contributions if are done for financial gain are not beneficial; clearly, learning, sharing, etc. are important regardless, though long-term Stack Exchanges future is concerning to me given what little I know of its financials.
- cauterized 11y agoBut is a system truly merit based if having enough time to do work for free is a necessary component of demonstrating merit?
- wagglycocks 11y agoIsn't that question like asking if a tree falls in the forest and no one can hear it? Unless you have a magical telepathic helmet that can access merit
- nxzero 11y agoIntrinsic valuations do not require giving away work for free, though in practice it's uncommon to have access to information required to do this. For example, say a developer worked on an open source project and was paid market rate for their work. At the very least, the code they've contributed is public.
- stevetrewick 11y agoI'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.
- xigency 11y agoTIS-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 11y agoI 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.
- addyy 11y agothanks for sharing
- yekim 11y agoAssembly 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.
- raverbashing 11y agoOn the same subject there's also http://box-256.com/ http://box-256.com/
- throwaway386q01 11y ago> 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 11y agoI 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 11y agoAgreed 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.
- jlees 11y agoI studied computer science at university, but didn't take a programming job straight away - one of the reasons was that I feared being bored (slow death by cubicle). After dipping into grad school, dropping out, starting a company (where I wrote almost all the code for our product, but did a lot of other things too) and spending several years as a product manager, I switched back to software engineering as a career, and I've never been happier. While I was working as a PM, I spent a lot of time as a hobbyist programmer, and a lot of time learning about how to engineer good software systems. After leaving that job I spent 6 months or so just building stuff. Games, android apps, whatever I felt like. It was awesome. I turned one of those projects into a consulting gig, then another, then got hired full-time from one of those gigs into a startup where I learned like crazy and sought out as much mentoring as I could get my hands on. I maybe could have done a similar side-step at my previous job, but having talked to some folks about what that would look like, I decided to just jump. It worked out. I hope it does for you too.
- Frenchgeek 11y agoIt'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...
- geoelectric 11y agoI 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.
- kazinator 11y agoNice. Looks like APPLE II assembly code there at the top? ACIA! "asynchronous communication interface adapter (== serial card)". Brings a tear to me eye.
- juped 11y agoTIS-100 isn't even the most hardcore Zach Barth programming puzzle came. That would be KOHCTPYKTOP (actually a circuit-design puzzle game).