After years of inactivity, on yesterday's public holiday I took some time to tinker with my Python parser library, Omega. Previous tinkerings had been cut short by the usual backtracking-parser flaw where a syntax error in the input causes it to wildly backtrack out to unrelated parts of the grammar and you get some stupid error message like "expected EOF, found trailing data at offset 1".
So, this time I implemented the "cut" operator that prevents backtracking, so you get more relevant error messages, much closer to the source of the problem. The other classic problem with PEG/Packrat parsers is crazy memory usage, as they cache all the parser states they might backtrack to but probably never will - and because "cut" prevents backtracking, it's also a signal to the parser to discard old parser states, freeing up a bunch of memory. So, it's a double win!
The paper where I first read about "cut" suggested that cuts be automatically inserted as an optimisation pass, but I don't support optimisation passes yet so right now I've just been sprinkling them around manually, and it's working pretty well.
I really do need optimization passes, though: not just for "cut", I also need to transform the simpler parts of the parser into regexes that I can hand off to Python's (C-implemented) regex engine, rather than doing all the matching myself.. my current approach is simple, but it's not doing me any speed favours. :/
2016-08-21T12:06:01Z via Identi.ca Web To: Public CC:So, I'm watching the Larry Wall keynote from the Curry On 2016 programming language conference, about Perl 6:
Man, every time I read about Perl 6, I get really enthusiastic about the community and the ideas and the features (PEG parsers as a core language feature! Gradual typing! Custom operators! Every binary operator can be used for folding! Deploy on the JVM or their custom VM!) but then I go look at some tutorials and there's a million special-case syntaxes for different things and I start worrying about what happens when you mix and match them (for example: $ for scalars, @ for arrays, OK. What happens if you put the "wrong" sigil on a variable name? Are they separate name-spaces? Are there terrible DWIM defaults like Perl 5?).
I really want to like Perl 6, but it's just so... Perly.
Face likes this.
2016-07-30T09:12:24Z via Identi.ca Web To: Public CC:"From Monkey Island to Broken Age": The lead programmer of Broken Age, who also worked on the Monkey Island Special Edition games and the remastered releases of Day of the Tentacle and Grim Fandango, talks about the technology and implementation details of 2D point-and-click adventure games.
2016-06-21T09:30:32Z via Identi.ca Web To: Public CC:I had a wheezy cough this morning so I stayed home from work; rather than lounge around playing video games I decided I would try to wrap my head around a VT220+ terminal emulator state-machine in Rust.
As it turns out, just mapping out the standards documents where these things are defined is more than a day's work, let alone when your head's a bit fluffy. Maybe this is one of those things that should wait for retirement...
2016-05-28T01:23:46Z via Identi.ca Web To: Public CC:Time rolls on, and ideas and tastes froth and roll.
When I was younger, I was overwhelmed by all the ideas in the world, but I found a few that were fresh and exciting and that I enjoyed studying and learning about. Other ideas surfaced around me, but I figured I'd get around to investigating them sooner or later. Some of them evaporated before I got to them, some of them were replaced by more, newer ideas.
And now, mid-life, I feel I've got a good grasp of some of the basics, and I'm ready to stretch myself and start exercising these ideas and practicing them... but already, I notice there's not as many fellow practitioners as once there were, and the few really visible examples are the old-before-their-time people who write Kids Today Value Style Over Substance diatribes and hunker down trying to prevent the things they love from changing at all, ever.
I hope I'm not one of those people, I don't want to be one of those people, I can still find new ideas I'm interested in and want to explore even if they're rarer than they once were... but honestly, I'm worried.
2016-04-10T13:47:39Z via Identi.ca Web To: Public CC:When I was a kid, I had an Apple II+. It only handled upper-case characters, with inverse and (for special occasions) blinking. I was super-jealous of my friend with an IBM XT, with a ridiculously fancy character set that included card suits and Greek letters.
Somewhere I learned that newer Apple II models than mine had a thing called MouseText, whose purpose wasn't entirely obvious, but it was yet more fancy characters I didn't have access to. I felt more frustrated, but eventually I got my own PC-compatible and had all the fancy glyphs I could use, and moved on with my life.
But recently, I came across a TrueType font based on the old Apple II character ROM, which happened to include MouseText characters in the Unicode Private Use Area. And the Wikipedia article on MouseText (because of course there's a Wikipedia article on MouseText) mentions it was added to allow "simple text user interfaces resembling the Macintosh graphical user interface", which makes sense since the Apple II was much more limited than Macintosh hardware, but GUIs were all the rage in 1984. And even more conveniently, the Internet Archive happens to have a scan of the Developer's Handbook for the Apple II MouseText Toolkit!
So here I am, at quarter-to-midnight, with a line of mysterious glyphs pasted into Vim, shuffling them around and trying to shape them into something resembling the poorly-reproduced, ten-times-photocopied pictures in a thirty-year-old book, finally living out my childhood fantasy of making weird shapes into slick and professional-looking (for the time) displays...
You know, this probably wouldn't be the best excuse if I wind up late to work tomorrow.
2016-03-28T10:47:08Z via Identi.ca Web To: Public CC:Holy crap, a new Hectic City mix from The Kleptones:
joeyh likes this.
2016-03-13T21:40:15Z via Identi.ca Web To: Public CC:Some shower thoughts:
It's a common thing in hip-hop to use spoken-word samples that naturally fit the tempo of the track (for example). That works surprisingly often because (apparently) the syllable-tempo of spoken English falls more or less into the "danceable" range.
But there's languages with very different syllable-tempos; Spanish tends to run much faster, for example. But is it exactly twice as fast? Do hip-hop artists in Spanish-speaking countries have to stretch their speech samples to fit the music, or do they make the music faster to match? Or maybe it all winds up in some obscure timing signature like 7/4 so that everything fits?
2015-12-29T11:59:10Z via Identi.ca Web To: Public CC:Spending some holiday time on a pleasantly futile project; trying to figure out how to implement a DEC VT100 terminal emulator.
I'm beginning to understand why nobody, not even xterm, bothers to implement the VT100's "double width characters" feature, and I'm sorely tempted to pretend it doesn't exist.
2015-12-07T08:24:21Z via Identi.ca Web To: Public CC:Little Shop of Horrors, anyone?
2015-11-12T10:27:16Z via Identi.ca Web To: Public CC:MST3K is one of those things whose peaks are awesome and whose average is therefore high, but whose median is actually a bit dull. Still, I still know the theme-song(s) off-by-heart and I get all tingly when I hear that surf-rock chord at the end of the closing credits, so I'm gonna back this just because:
2015-10-11T02:48:00Z via Identi.ca Web To: Public CC:Huzzah, there's finally a new version of the TreeStyleTab addon that works with Firefox version 40 and above!
2015-08-24T09:17:59Z via Identi.ca Web To: Public CC:The BSD "ministat" tool is even smarter than copy/pasting a column of numbers from my terminal into a spreadsheet to see what they look like, and a good deal simpler and easier-to-use besides.
I'm glad it's in Debian, but it (or something like it) really should be in coreutils.
Olivier Mehani shared this.
2015-08-20T09:32:24Z via Identi.ca Web To: Public CC:Every e-book reading application I've looked at has gone to great lengths to support left-and-right page-at-a-time navigation. Even though every other application on my phone manges quite well with vertical scrolling. Even though "infinite scrolling" web-page technology has been around for years. Even on my desktop PC, where power and memory consumption is not an issue, and I have a perfectly good scroll-wheel. Some of these applications even add a page-turning animation.
I get it, it's a book, books have pages, it's cute, but it feels as appropriate as a rotary dial on a smart-phone. Why this particular skeuomorphism persists so thoroughly, I cannot comprehend.
Show all 5 repliesDiscrete page-turning, animation or not, works better with media that is already typeset to be on pages. For scrolling you need flawed auto-conversion, costly re-typesetting or you get what the PDF reader does in continuous mode, page margins breaking the scroll.
So it's partly a technical issue, not all skeuomorphism. The animation though, that's silly.
I'm not a fan of the infinite-scroll on ebooks. I don't use any transitional animations at all; I just go a page at a time. Why? Because I don't care about the animations, but swiping is a lot slower and less precise than a single tap for "next" page.
Isn't infinite-scroll pretty much the same thing as page-turning? Except that instead of eye candy to make something behave like a real-world object, it's making reading less convenient for the sole purpose of making it appear like a web page.I'm looking at EPUB and Mobipocket files, both HTML-based, so it's not already typeset to be on pages.
Page-at-a-time is sensible on an e-ink display, but neither my phone nor my desktop machine have e-ink displays, so that doesn't sway me.
I haven't actually come across any apps yet that support tap-to-turn-a-page, all of them have required various swipes when sometimes nothing happens because you swiped wrong, and sometimes nothing happens because it's reading in and decompressing the next chunk of HTML. Also, for whatever reason my phone's screen does not fit an integer number of lines of text, so when I flip the page I have to find the place where I was up to. At least with smooth scrolling, I can visually track my point of reference.
2015-08-11T11:44:19Z via Identi.ca Web To: Public CC:So far as I can tell, there's only three EPUB readers available for Firefox OS. "EPUBReader" is clunky and terrible, "Tea Reader" is less clunky but terrible in suspiciously similar ways, but now I've found some Russian thing called Ab FB2 Reader... hopefully third time's the charm.
2015-06-07T09:14:06Z via Identi.ca Web To: Public CC:How did we get into a place where my Linux machine can't play music in the standard, well-documented, freely-licensed MIDI format, but music formats whose only documentation comes from reverse-engineered Amiga assembly code works just fine out-of-the-box?
Olivier Mehani likes this.
2015-06-06T04:51:23Z via Identi.ca Web To: Public CC:By a hilarious concatenation of circumstances, which are probably my fault for using Debian Testing, "GNOME3 on Wayland" is currently the most reliable and stable desktop environment on my machine. However, Wayland seems to be missing some of the input niceties I'm used to from X11, like being able to swap my Alt and Super keys, or tell my trackball to send scroll-events instead of cursor-events while the 4th button is held down.
Does anybody know if Wayland supports anything like that? If not, is there a plan for Wayland to support anything like that?
2015-06-01T12:50:22Z via Identi.ca Web To: Public CC:Mozilla released the first stable version of their new programming language Rust recently, and they made an official t-shirt, so I bought one to support the project.
It arrived on Friday, so I wore it proudly to work today, even though it's nearly winter and not really t-shirt weather.
The number of people who asked me about Rust today: 0 :<