The Difficulty of Simple Markup

XML was intended to be a simple markup language certainly simpler than SGML. It may have started out simpler than SGML to parse but it is by no means easy.

JSON is supposed to be simple but just read this investigation to get a sense of the complexity. Part of its complexity comes from under specification, but there are just plain confusing bits.

I had long thought of YAML as being simple but always found the spec a nightmare. It’s pretty expressive which is nice but hurts some aspects of simplicity. Here’s a good negative read on it.

S-expressions are genuinely simple although born pre-Unicode and rely a lot on the background Lisp implementations.

What I don’t have is a good sense of what complexity is essential and what is accidental. A lot of conflict comes from the tension between authoring, parsing, expressivity, and API niceness with interoperability as a pervasive issue.

Advertisements

Some Useful Lists

With a loving nod to Sei Shonagon.

These are programming related. I’m sure there is a list of lists programmers should know somewhere.

Well, the second just made me give up 😉

Musicmap

Musicmap is a very cool interactive map of popular music. (See discussion.) It’s sort of a superversion of the blackboard in School of Rock with lots of nifty search features, visualisations, and playlists.

It is at least a very cool toy. I do not say that disparagingly. Toys are cool, useful, and helpful. What I don’t (yet) know if using it produces the sort of understanding that went into producing it.

Compostable Dinnerware

I may be a travel mug and tea/coffee set addict. I have two stainless steel, vacuum travel mugs (one is in semi retirement). But my current daily weapon of choice is a pink eCoffee cup which is supposed to be mostly compostable and recyclable. It is a tad small, the heat sleeve doesn’t really work, and I’ve had trouble surge the lid. But it biodegrades! That led. E to find a whole line which is similarly biodegradable and beautiful. Bowls, plates, cups…the works. We may be upgrading in the near future.

I suspect I’m going to get a Stojo too because, I mean, it collapses!

Update: And, of course, this morning I discover I’ve lost the silicone lid to my eCoffee cup. I guess I have to get a Stojo to replace it!

Floating Point Explained Visually?

Tab cleanup time!

I’ve had this article on “explaining” floating point numbers in my phone’s browser for eons. Basically, my first glance made me go “huh” and I didn’t have the time or energy to figure it out at that moment and that’s what stuck with me.

But I need a post today and killing this tab suddenly was motivating.

One annoying thing about the article is that it doesn’t say what about floating point it’s explaining or why floating point works the way it does. It seems to be more about explaining how to convert from floating point notation in to standard decimal notation. Which…fair enough. I’m not sure the “scary formula” is such a problem or that the window metaphor is all that useful in the end. In the end, standard floating point is just scientific notation in base2 with a fixed width (thus a “moving” decimal point). If standard decimal scientific notation is confusing in the same way then maybe this visual/windowing explanation might help. But I’d start with scientific notation as most people will be a little familiar with it.

The big thing not quite explained is how (and why) various numbers are approximated and thus departures from various standard features of the rationals and reals. That seems to be the deep part of floating point, esp the bits that come from features of the base rather than features of the width.

Any rational number can be represented exactly as a pair (ie ratio!) of integers. The size of your integers constrain which rationals you can represent (ie max rational is maxint/1 and min (positive) rational (greater than zero) is 1/maxint). But in positional notations with a radix point (like standard decimal notation) we typically can’t capture all rationals because some rationals will have an infinite expansion. 1/3 in decimal, for example. (Though the decimal will be repeating.) Binary has a different set of numbers it can’t easily represent.

Ok the point of this isn’t to fully explain floating point but to get back to the idea that it has a lot of pieces so there’s a lot to understand. If you’re only going to explain a small piece of it say that! Say why this piece is useful to understand! Without this you’re problem typically making things worse.

Electronic Kanban Boards

I’m a fan of Trello.

Up to a point. I’ve made many a board and found it super useful until my efforts to use it inevitably peter out. But that’s probably me.

Kanban boards seem worth teaching in a software engineering course if only because they are so common. They are also fairly easy to grasp so you can have a pretty good discussion about organisation and management. There’s a lot of intellectual baggage associated with them but just getting students to think about writing down todo lists is a win.

I doubt I can force a class to sign up for Trello. Requiring students to use third party services has a lot of implications that were dodgy before the new data protection laws.

This article discusses five open source alternatives but frankly, even though there are some attractive feature lists, they don’t really appeal. Worst, the idea that I would either host such a thing or get some other part of the uni to host it seems impossible. I guess the students could run the one with docker images available…but that seems more impossible.

We can go back to post it’s or index cards…but we don’t have a shared environment.

So…maybe it’s better to focus on issue lists and bug reports? Keep off these larger management issues until the next class?

The Ink Programming Language

Ink is a programming language for interactive fiction type games with a strong default for “choose your own adventure” type games. It was invented by a game studio (Inkle) and they eat their own dog food. Games can be published on the web or integrated with the Unity game engine and development platform to add graphics (and other stuff, I’d guess).

The writing tutorial starts ok but quickly gets sort of reference/language toury like. There isn’t a real running example and the features aren’t built up organically. By the time you get to the tower of Hanoi example you’re pretty well lost. There’s some hand waving about some design choices (“it’s ok to use global variables all over the place because it’s a story!”) which is a bit annoying. I don’t know what writing a game with 50,000 words would be like or at all how to structure it.

Indeed, writing interactive fiction is at least as hard as writing any other sort of fiction! (Victoria Smith has a cool post about fighting tools when making IF like games which hints at the space of tools that Ink is competing with.)

Ink seems so easy to get into and publish for basic stuff, it seems a good platform for exploring educational uses. You could explore complex case studies (perhaps) in a more manageable for many readers way. Not only more manageable but more active learning like. Just as with lectures, it’s clear that many students treat reading as something fairly passive. They don’t question, anticipate, backtrack, jump up and down levels, interrogate structure, etc while reading. Like with light weight clicker use, an interactive text approach might incline them to be at least a little active.