Journal

Much of the old blog's contents consists of timeless articles, that are now scattered throughout the various thematic sections; however, some blog posts were highly time-dependent, and were preserved as such. A separate page for posts made from 2011 to 2015 was considered, and rejected: old posts belong with the new. Mind the five-year gap.


Create new post in category: AssortedProgrammingUpdates



journal


2022-09-07 Assorted

Hey, folks. Turns out I just barely missed a link for posting last month's roundup too early:

No comment. Let's look instead at more positive news from the rest of August:

Last but not least, September opens with Défis fantastiques : 40 ans d’aventures dont vous êtes le héros: a French language story about the Fighting Fantasy series of gamebooks, which as it turns out still gets reprints, and spiritual successors. So enjoy, and see you in October.


2022-08-28 Updates

It's been a while since the last update, and fans probably want to know what's happening around here. There are three big items this month:

  • started work on a web port of Tipsy Turtle, and promptly set it aside, but will pick it up again before too long, promise!
  • resumed getting rid of tags, and moved more articles to the main site — a slow process, but it's getting there;
  • last but not least, added some more old links to the archive section.

Otherwise it's still relatively slow because summer, but at this pace there's probably going to be a link roundup on time mid-September, so see you then!


2022-08-07 Assorted

Link roundups are funny. With vacation season still in full beat, activity picked up again. No theme this time, just a few links from July:

And a couple more from August:

No comments either way. Next one... probably in September.


2022-07-22 Programming

If you happen to be in the market for a version control system, may I recommend Fossil?

Why Fossil: imagine having your own little GitHub running locally, out of a 7-megabyte executable, with no other files to worry about. Well, except for the repos, and each repo is also a single file starting from 220KB. You get all the usual goodies, including forums and chat if you share with other people. But even while working alone, bug tracking and a project wiki can help. Besides, the browser interface is so convenient when it comes to seeing changes from version to version and such.

Why not Git: everyone uses Git today. That's just wrong. Git is made for projects with millions of lines of code and thousands of contributors. You know, like the Linux kernel. Is your project even remotely comparable? Besides, Git is infamously arcane and unforgiving. It can and will delete all your work if you make a tiny mistake. Pro tip: people make mistakes. It's how we can learn and adapt. Any design that ignores this simple fact of life is fundamentally broken.

Fossil has its quirks too. Think twice before doing a commit, because you can't back out of it. (You can, however, yeet it to a hidden branch named "bloopers" or some such.) And binary files are managed separately, outside of the regular revision workflow. On the plus side, it has niceties like tracking all your (local) repos, changing tags after the fact or showing you a heat map of recent changes to a file. Once you get its philosophy, that will open new doors.

You can work without a safety net (I did, for years). You can use Bazaar, another fine VCS. Fossil is different. And a change is welcome these days.


2022-07-14 Assorted

It's peak vacation season in the northern hemisphere. The world of games slowed down after last time, but picked up again in time for another monthly roundup.

To begin with: belatedly (but this is big enough), David Ahl places all his classic computing publications into the Public Domain. Also in the way of game history:

Yep, it turns out there are tabletop RPGs literally as old as Frankenstein.

That's damn cool! Now for the complete opposite, some tales from the crypt... o:

Funny how anything related to crypto seems to involve art theft. See you next time.


2022-07-09 Programming

You know that XKCD strip that pits programmers against bridge builders and aviation engineers?

Do you know why the latter two categories can be reasonably confident in the relative safety of what they make?

Because they're highly trained people who follow procedures, don't skimp on safety features, and when disaster strikes? They learn their lesson!

We programmers keep backups, do some testing... and that's pretty much it. We hate redundancy, fallbacks or procedures. Heck, we hate learning our craft. Then we have the guts to act surprised when the houses of cards we build fall over and suddenly nothing works because we were unprepared again. Just like the previous nine times.

Pro tip: never eliminate cash, analog radio or manual overrides.


2022-06-29 Programming

How did I not know about this?! Turns out there's a CSS pseudo-class called :target, that always matches at most one element: whatever document fragment is currently pointed at in the URL. Which means you can have links pointing at parts of the page <a href="#there">like so</a>, and only have the element with id="there" be visible, while all its siblings are not, with only a two-line stylesheet:

	main article { Display: none; }
	main article:target { Display: block; }

What can you do with it? Why, stateless CYOA, of course! In other words, Ramus lite. Which is exactly what I'm calling it for now.

Stay tuned for details; meanwhile, many thanks to Snail Legs for enlightening me.


2022-06-14 Assorted

You'd think people would be on vacation by now, but if anything activity is picking up again.

To get an ugly story out of the way: “Abusing you was by the book” (documenting two years of abuse from Game Journalism, after sharing my #metoo… the whole painful story all in one place). Just in case anyone thought that stuff was over by now. It's never over.

But there's also game design, a couple of things this time even:

And in the way of assorted news:

Which made me go on for way too long again, so enjoy, and see you in July!


2022-05-21 Updates

Took long enough, but it feels like the great wiki cleanup is finally getting somewhere. The full effects should be seen in another couple of months; for now, the wiki finally got its mission statement, a must-have if it's going to function as a wiki, as opposed to a glorified dumping ground. Current plans include:

  • continue migrating old articles to the main website;
  • phase out the underused and broken tag system;
  • profit!

Speaking of which, this is a good opportunity to thank a couple of recent donors, whose generosity ensures the domain and hosting for this site are covered come June. With any luck, No Time To Play will be around for a while yet. Join the joyride!


2022-05-21 Assorted

It's spring! Three weeks into May to be exact, and there's been a lull in game-related news, so might as well.

For one thing: NFT Market Collapses Just As Square Enix Sells Tomb Raider To Bet Big On Blockchain (followed by GameStop a few days later). No comment.

In better news, we have a couple of game design pieces: Designing the City of Glass and The AI of DOOM (1993). Good article, I just have a nit to pick: what the game does is really scripting, just in a hidden way. This is why you want to do it on purpose instead of improvising.

Anyway, we can also learn a lot from history, so let's move on to Playing It The European Way – A Discussion On The European Gaming Market In The 80s, and also Business Wargames: Early Complex Text Games, a surprise bonus from the 50 Years of Text Games project, as the book is taking shape.

Last but not least, last month's momentous release of Inform 7 as open source also got some French language coverage. Enjoy, and see you next month!


2022-04-30 Assorted

Another month, another link roundup. And what a month. For one, the end of April brings up the news of the season, or possibly the year, in game development.

No comment, really. In other news, we have a couple of game-adjacent write-ups:

Yep, that's Nathalie Lawhead. In simpler news:

Before I finish, let me go back for a moment with a couple of RPG news:

But this got scary long already, even without commentary, so until next month!


2022-03-30 Assorted

It's the end of the month, and I'm so distracted. There wasn't a theme in March, either, and links came haphazardly, but I can still do this. In reverse order:

Moving into the first half of the month, there are some personal news:

  • My new article on scripting was translated to Russian! Site appears to be some sort of forum or collective blog; looks legit and safe enough either way.
  • On the same note, I wrote about what we lose with progress (graphics are almost a theme this month).

And near the start, on an adjacent topic:

Whoops, this got long. Cheers, and see you around Easter.


2022-02-25 Assorted

Hello, everyone! My intention was to wait for the end of the month to post another link roundup, but weekend is coming and chances are small that many more headlines will gather until Monday. So let's see how things went in the world of games during February. Without comment:

But also:

And then:

Last but not least, some actual game design talk; CityCraft: ten tips for building better game cities. See you!


2022-01-28 Assorted

It's been a month since the No Time To Play newsletter was discontinued, but the site goes on, and the world of games isn't standing still either. For the past ten days, there's been a whole bunch of headlines that don't fit in other sections, but they're worth sharing anyway. Without any comment:

Not bad, given the circumstances. See you around.


2021-12-10 Programming

This post expands on a recent conversation from Discord.

As of 2021, I'm the proud owner of a 2008-vintage Dell Optiplex 780 with a Core 2 Quad CPU. People go "tsk tsk, poor you" when I tell them, but my previous machine must have been even older, probably from around 2005 or so.

On that older machine, I made a voxel renderer that ran in real time in software. In Python. It was kinda slow at 25 FPS, so I also ported it to Lua. That version ran at 40 FPS on the same hardware, or 60% faster.

On my new PC, the Python version runs at the framerate cap of 60 FPS without maxing out the CPU. I have no idea how fast it is.

That's the exact same code. Never touched it again since the first release. And it was naive code in the first place, because that's how I roll. No fancy tricks. The simplest thing that can possibly work.

Then again, my old computer could emulate the Super FX chip in software. In a web browser.

Do you realize how inefficient an app must be to slow down a configuration from at most five years ago? While doing much less? And using the GPU as well?

There's simply no excuse for bloat. None whatsoever.


2021-08-18 Programming and community

Over on Mastodon, a friend essentially asks why someone would use GitHub when they make software to self-host. I gave a short answer there already, but let me make it very clear: GitHub's real value isn't as a software forge.

  • You don't need GitHub to make software.
  • You don't need GitHub to publish software.
  • You don't need GitHub to collaborate on software.

People go to GitHub to make themselves known. It's the Facebook of software development. That's it. Everything else can be done better elsewhere, but people don't bother because what's the point if no-one hears about it?

And just like with FB, we need to figure out some sort of alternative already. But it's not going to happen any time soon, because just like with FB, nerds are focusing on the technical solutions. Self-hosting! Federation! Go! Rust!

Fossil has been around for literally decades at this point. It powers a lot of websites. I run across it in the wild all the time. And nobody's heard of it.

What we need is communities of practice with shared values. Apps are easy.


2020-10-07 If programmers built bridges

If programmers built bridges, each bridge would last for only a year and a half before having to be torn down and replaced. After repeated protests, they’d finally come up with an “extended support” bridge that lasted for all of five years. The catch? It would be designed for the traffic from ten years ago, making it obsolete from opening day. Yet somehow it would still require maintenance every three or six months, so only half the traffic lanes would be open at any one time, making the bridge unusable in turn for cyclists, then buses, then trucks… breaking something else every time a problem is fixed.

When asked why things have to be that way, the builders would say that if they took the time to anticipate future needs and build something to last for five decades instead, a competitor would just erect their own bridge a hundred meters away and everyone would be using the shinier alternative.

Because, isn’t it, essential infrastructure is built for profit and/or bragging rights, as opposed to everyone’s benefit. Ah, modern technology.


2020-09-15 Procedural is simple

Years ago, I wrote a couple of games using the curses library bindings for Python. Later, I used that knowledge to write a quick start guide that’s still one of the most popular across my sites.

More recently, being between projects and not in the mood for much else, I finally got around to learning how it’s done in C. Turns out, it’s a lot simpler than in Python for the ABCs, and comparable at worst for advanced uses.

How come? In their drive to make everything fancy and by-the-book, Python programmers forgot that the typical curses program isn’t exactly a clone of the Turbo Pascal IDE. More like a glorified menu that the user can pick from by pressing a number key. It could be done in shell script, really, with the tput utility, and in fact it often is.

That’s the problem with object-oriented programming, you see. Practicality also means being able to tell when using an industrial power drill is overkill, and you’re better off drilling holes with an ice pick.


2015-08-11 No Time To Play is five

It says much about my state of mind this year that on the blog's fifth anniversary I waited until evening to write a few lines. Two years ago I complained that things seemed to be on the downswing. Turns out, they can always get worse. For a while after that post, I didn't work on games at all. Then I started coming back in a way, slowly and half-heartedly. Guess it showed, because basically no-one noticed my games from the past few months. More recently, finances and ISP outages alike threatened the blog itself, to the point that I decided to write a book and start a Tumblr so No Time To Play can at least survive in other forms should the worst come to pass. Sadly nobody noticed those either...

The upswing from all this? Unlike a couple of months ago, I want the blog to survive. Five years is a lot of time, and good things have accumulated here. Moreover, I do see a future for videogames now, though it's far from the glorious VR-fest everyone else seems to dream of. If things seem slow for the moment, it's because these days I'm working on a different kind of game, that only involves computers tangentially. But I'll come back eventually. I always do.

What matters is that you, my readers, are still here when that happens, or else there's no point to me plodding along. So, happy reading.


2013-04-25 Announcing Square Shooter Enhanced Edition

DeletedPage

When I first wrote Square Shooter in 2009, use of the canvas element was uncommon enough to earn me entrance into multiple game directories. Fast forward four years, everybody uses HTML5 and my little shooter was long in the tooth. The physics were broken (I had fixed them in the Python edition), it had no sound, and didn’t really adapt to different resolutions as it was supposed to. Worse, many of my friends now had touchscreen devices, and Square Shooter was unplayable on them.

A combination of burnout and indecision caused me to postpone this rewrite for a long time, and then it took quite a bit of experimentation to get things right. But it’s here now! The new Square Shooter runs more smoothly (thanks to the requestAnimationFrame shim from Three.js), looks good on any screen (except it strongly prefers portrait mode) and also runs on modern phones and tablets (though you need a fast CPU). It also features awesome sound effects courtesy of Open Game Art. I can never give enough thanks to the awesome people who make art for the rest of us to use.

So I give you the Enhanced Edition in all its glory. Play it. Fork it. And see if you can reproduce that one weird bug (you’ll know it if you see it), because I can’t figure it out.

Oh, and stay tuned because I plan to add graphics as well. Cheers.


2013-04-24 New Ramus story out there

Hello, everyone! I know it’s been quiet as of late, but we’re still around. There is an announcement coming soon, but in the mean time let’s welcome You I Give the Helm, a new multiple choice adventure by Roger Kenyon, which enhances Ramus with neat typography. It’s fairly replayable for its short length, too, so give it a go. Thank you, Roger!


2012-12-03 Random awesomeness

Just a couple of things I’ve run across today. First, via IndieGames and True PC Gaming, a little Star Wars-themed roguelike written in HTML5 that’s exquisitely tactical. You play (of course) a Force user, which gives you a variety of cool powers to combine smartly — and you will have to play smart. Caution actually helps, and luck can be in your favor for a change. The game is complete as it stands, but of narrow scope, and I hope to see more of it at some point. Bonus points for the tutorial and nice UI.

Second, the always enthusiastic Sophie Houlden humorously turns an old question on its head by asking, Can Art Be Games? And she’s damn good at highlighting the absurdity of this fake dilemma. We’ve touched on it ourselves, so I’ll say no more.

All this almost makes me wish to start making games again…


2012-09-11 Square Shooter under the microscope

DeletedPage

Look what my friend @jerobarraco just found: a trio of articles from exactly one month ago in which the author dissects, I mean refactors, Square Shooter.

I left some comments there, but I’ll write a detailed article of my own, because this back-and-forth between two programmers is immensely instructive. Until then, enjoy!


2012-03-24 Original Ramus story and more

This announcement is one week late (pesky real life…) but just after I published my port of Starborn — and Nitku graciously promoted it — a new user of Ramus surfaced and promptly did some very nice things with it.

Meet Conrad Cook. Not only he posted a minimal, “starter” Ramus document, a useful thing I failed to do myself, but followed up immediately with an original work called Unicorn Story. Which I am now hosting on the Ramus website at his request. Thank you, Conrad.

I also took the opportunity to flesh out the aforementioned website a little more, including an answer to the frequently asked question about (not using) jQuery. Hope this helps.


2012-03-18 Ramus in the real world

No, don’t get too excited. This is something I did myself, and it’s not even an original work but a port of Juhana Leinonen‘s Starborn. I meant to do it when the game first came out, but there was too much going on behind the scenes, or so it seemed from looking at the source code, and I hesitated. In the mean time, Nitku ported it to Undum himself, thus proving that in a keyword-based game a few boolean flags may well be able to replace a full-blown world model. So I took a closer look, and it turned out that more than half of the original [[Inform_7?]] code was dedicated to disabling the parser, implementing keywords as a game concept and other such changes.

On the Ramus side, development turned out to be very easy indeed. The only real problem is that I keep typing href instead of rel — understandable after over a decade of Web development. It may be worth implementing URL autodetection, like in HTML TADS, but my laziness is stronger than the annoyance factor.

Anyway, you can download the game here. Enjoy!


2012-01-31 New Ramus website

As promised last time, I got around to setting up a new website for Ramus. Right now, it contains the exact same information as the original web page, except this time it has room to grow. And because it’s a wiki, you can suggest additions directly inline! See you there, and thanks.

(Edit: for a while, Ramus had its own subdomain at ramus.notimetoplay.org, which at first ran on PmWiki.)


2012-01-22 Minor Ramus update

Remember Ramus? I can’t blame you if you don’t — the last update was half a year ago. But recently, a new user (hi, John!) pointed out some missing stuff in Ramus, such as an example of how to link to multiple fragments at once, or include a fragment inside another. (The latter doesn’t work, by the way. See the F.A.Q.)

I also want to write some documentation, including a getting started guide, but that will require setting up a proper website for Ramus first, instead of a simple homepage. I’ll get around to it, just not right away. Thanks for your patience.


2011-07-06 Ramus update

We interrupt our regular program to let you know that Ramus has been updated. The new version has two changes:

  • A bug was fixed whereas the the starting fragment was not being parsed for templates when initially displayed.
  • Smooth scrolling has been added, based on this ITnewb tutorial (edit: dead link as of April 2020).

The latter may still need some fine-tuning, but I cleaned up the most egregious idiocies in the code, and in any event it’s better than without the effect. Enjoy!

More...