QTQR

Inpired by Duncan Robertson’s BBC Logo in QR Code, as well as various similar attempts to make QR codes look pretty (I particularly like David Blume’s), and challenged by @danbri I wrote a little QR code (de)generator. It allows changing individual pixels, as well as adding a picture. Screenshots:

http://foaf-project.orgxmpp:bob.notube@gmail.com/tv743151

Whether the altered QR codes are still scannable is not measured by this tool, let alone guaranteed. You’ll need to scan them separately in order to make sure the message is still readable.

Things to add:
* a way of saving the code as an image file or SVG
* more than one picture
* “undo” functionality
* more complex pixel manipulation tools
* altering pixel shape and colour (using SVG filters, maybe)

This work wouldn’t have been written without Kazuhiko Arase’s QRコード JavaScript library. It is licensed under the MIT License. The source code is available on github.

Update: and here’s the link to qtqr. Doh.

General

Comments (1)

Permalink

Textorizer fixed

Since April, there’s been lots of reports of the application starting and only displaying a grey window. Since I couldn’t reproduce it anywhere, I had no idea how to fix it until a bunch of very kind people were able to help me track the bug down. So I am now really happy to announce a new release that fixes the issue. Head to the textorizer page to download the new version.

General

Comments (0)

Permalink

Commemorating the Moon Landing

I’d done it a few months back, but I thought I’d revamp my textorized Moon Landing poster. The text is the transcript of the Apollo XI landing.

This time, the SVG version is available for your printing needs.

General

Comments (1)

Permalink

Dutchr: learn any language in 24 hours

For a couple of years, I’ve been trying to learn Dutch, then Norwegian. And Javascript. I’ve failed at Dutch, but I’m still trying the other two. And to help me I wrote a little web application called Dutchr, which is basically a flashcard app: you give it a list of pairs of words or expressions, and a popup pops up at regular intervals, and invites you to guess one random entry on the list.

screenshot

You can try it right now in your browser, but if you want to customise your cards, then you have to download it first. See the instructions.

General

Comments (0)

Permalink

New textorizer!

arabian nights

There is a new version of textorizer available for download. It’s still the same deal, but it has been greatly improved: new fonts, new scripts, new settings, fewer bugs.

You can find it on the separate textorizer page, with examples and instructions.

General

Comments (0)

Permalink

Calendar Poster!

Rik Penny from ripedigital, a long-time supporter of textorizer, has sent me this big glossy-paper poster of the 2009 fractal calendar. Many many thanks!

General

Comments (0)

Permalink

uncanny resemblance

Sami art

Sami art

Seen in Oslo’s Folkemuseum today. Looks very much like the 2009 calendar, or rather, Sierpiński’s Curve

General

Comments (1)

Permalink

ell aah peh eee en, er… hyphen?

Here in Norway, many things work by email, and I’ve found myself having to give my email address over the phone about half a dozen times. Pronouncing, or even spelling out my last name in an intelligible way already takes a while, but my email address is even worse. Once I’ve had to describe what an hyphen is, because the person I was talking to didn’t know the term (nor did they know ‘dash’). It took me a good 3 minutes to explain. You can try, too!

Even individual letters are difficult. If you don’t speak Norwegian and don’t know the alphabet, or can’t say it right yet, and your correspondant doesn’t know English too well, it’s a challenge. You’d think that the NATO phonetic alphabet (alpha, bravo, charlie, etc.) was designed specifically for that, but it actually isn’t that good at it. (I hope aircraft pilots have a different experience).

Still, I decided to use it for a new address that would be simpler to spell out. I chose one of the most understandable words: tango, and avoided the ones where pronunciation varies a lot, like Juliet or X-ray. 

Then of course, I couldn’t buy tango.com, so I had to make it longer. Perhaps tangodelta.com? Taken. tangodeltacharlievictor.com? Available, but it’s a bit long, in the end, and you’d have to add “all in one word” when saying it. So I went for trailing digits: tango1.com, tango2.com. No, at least 2 before one is available. So which 2 digits? I chose 57, without thinking that much about it. They are simple in English and hopefully understandable in a few more language. 

So you can now email me at: max “little-monkey-tail” (to reuse the cute Dutch name for @) tango57.com. That gets redirected.

What a shame I can’t change my last name as easily. “Max Tango57″. That’s sounds so cool. Like a spy, or a robot.

General

Comments (1)

Permalink

2009 Calendar

It appears that my previous entry on calendars received some attention, so I thought I’d make a nice looking version for the New Year.

The design is somewhat arbitrary but it’s still possible to alter the parameters at the top of the JS file to change it. In fact there are now many more possible variations than with the last post.

To the download page!

If you’re still reading this, here’s a few technical notes:

  • I managed to somehow fit a year (and a few extra days) in the calendar by stretching horizontally on some values of x. Hence the irregular aspect of the overall shape. I’d have rather have found a proper rectangular curve, though.
  • Forget compactness! This layout may be defeating the purpose of the previous post, but it’s more practical in the end (e.g. for writing things on the calendar).
  • Now it works in Opera, Batik and Firefox. It seems that Safari definitely doesn’t support SVG masking.
  • I found a few other curve definitions (from fractint), but none worked better. They are in the source, though, so easy to play with.

Happy New Year!

General
in English
petits dessins

Comments (1)

Permalink

Efficient Calendars and space-filling curves.

After demonstrating a useless method for implementing a square magnifier and writing this post, I think I’m going to start a category called Useless Mathematics.

So today, we talk about how to increase your productivity tenfold by revolutionising the traditional calendar layout. Take a calendar. The sequence of days isn’t continuous on the page: it’s broken when months change. You have to turn the page, or switch columns. So if some period of time in your overloaded planning spans across a month change, your calendar becomes messy. You have to write the same thing on both months, you lost track of how long it actually is. It’s a disaster. Wouldn’t it be nice to have a view of your calendar where the whole year is on one page, organised in a continuous fashion?

The idea isn’t new. The Compact Calendar is one solution to it (and a very good one. I use it), but it’s not quite optimal: the flow of days is still interrupted when weeks change. No, we need something better. Useless Mathematics to the rescue.

Basically we are looking for a path (one step per day) that runs continuously through a page, and so that any period of however many days is represented as compactly as possible. And indeed, there is research in mathematics interested in just that: the locality of space-filling curves. So we go to our dearest arXiv and find a good match: “Locality and Bounding-Box Quality of Two-Dimensional Space-Filling Curves“. And in there we learn about the complexity of measuring how compact a curve is, and what candidates are good. And we start up Emacs and do a little SVG+Ecmascript coding.

In the SVG attached (SVG, JS), we show 3 types of curves: Hilbert, Moore and Sierpińksi-Knopp (you can change which curve the program shows by commenting in/out lines at the top of the JS file). Hilbert and Moore are overall the best for our purpose. Sierpińksi-Knopp is conjectured in the paper to have the optimal locality, but has poor bounding-box performance, leaving holes in the calendar which may in fact be useful.

Hilbert:

Hilbert calendar

zoom on January:

Moore:

Sierpiński variations:

Fantastic, no? David Allen eat your heart out.

Notes
* one problem is that the number of days we obtain running the L-system n times is 22n+1. Which means that if you want to show 1 year, you have to have d ≥ 4, i.e. at least 512 days (1 year and 5 months). I don’t know if there are rectangular curves that could work better.

* The SVG uses a masked polyline which at the time of writing works only in Opera.

Annex: the not-so-stupid part

The code uses the L-system definition of the curves we used. I started with Hilbert and Moore and found the definition in their respective wikipedia pages. Later I moved on to Sierpiński-Knopp, but couldn’t find an L-system definition for it, so I spent a few hours working one out. I don’t know if it’s been done before, but if it hasn’t perhaps this is actually new maths!

Rules:

A -> A+A-B+A

B -> B+A-B+A

axiom: A+A+A+A

terminals (final substitution done at the end applying the rules above):

A -> F+F-F+F-F

B -> F+F-F-F+F-F
F: move forward, -: Turn left 90˚, +: Turn right 90˚

General

Comments (2)

Permalink