Someone tried to marry the vim editor's uhm, ubiquitous keystrokes up with Firefox's web interface. Now we have one big happy family. Vim. Firefox. Yeah, right. Still, the vimperator plugin seems to work (mostly) okay, aside from one or two issues with fonts for hints. I can't seem to get my statusbar back, as this particular version (0.5.3) took it away and isn't giving it back, much like a bully that's got Johnny's medical erm, notes on female anatomy. Poor analogy, but I can't seem to get it back. It's either vimperator's statusbar, or mine. I choose. That choice is better than IE7 gave me, I guess. I get to "choose" IE7's crappy renderer, which doesn't always do the right thing. I don't get to choose from an alternative renderer, oh no. Frankly I can put up with Firefox's slowness any day, but at least it mostly puts stuff on a page in about the right place. Why it's so slow on my machine, I don't honestly know, but hey. It works. And with vim keybindings "at hand", so to speak, I find Firefox even "handier" than before. Very few things remain that require the mouse, and I can probably tolerate those, as I've been a bit mouse happy in the past few years. The mouse was a bargain, relatively speaking, if you can call half price a bargain (original cost NZ $99). It's a Microsoft Wireless Optical Mouse, and runs on a pair of AA batteries. There's a story about those too, if I could be bothered digging it up, suffice it to say that I got 17 months out of a pair of Lithium batteries, when the manual suggested I'd get a more normal 3 to 5 months. That figure, ironically, has been borne out by the times the other batteries have lasted. On average, about 7 months. And these aren't cheap batteries I'm putting in - they're alkaline each time, I replace them in pairs (because you're supposed to), and note down how long the last pair lasted... I ought to save up for a new pair (or four) pretty soon. Wish I could go back to those Lithium batteries, they were good! Now, back to vimperator. I was having a little trouble reading the tiny (12px on 1024x768) white text on red background labels that come up in QuickHints. Could I do it? Erm, not initially. But I did it eventually. Basically I ended up creating the .vimperatorrc file, stuffing somebody else's values for hintstyle into my file, then re-reading that file with vimperator. It turns out that 12px is fine, it's just the font I was trying to use that made it look really really tiny. I managed to change the font, and even managed to reduce the font size. Now I have nice readable (even at 10 px!) sans-serif letters. Okay, so they obliterate a fraction of the link I'm trying to see what the letters actually point to, but I can work with that. Now I can't actually use vimperator to submit a file into a text field, as I still have to use the mouse to do that.
06 April, 2008
Firefox, Vim, and (almost) no mice.
04 April, 2008
OhOh No? Yeah to OOXML.
The Microsoft OOXML submission to the ISO for standardisation acceptance has apparently got through the ISO voting process. Roughly speaking, enough votes were cast as "Yes" to sway the vote, even though it was clear that some countries changed their votes from No to either Abstain or Yes, possibly under pressure or incompetence. Thankfully, not that it's much consolation, New Zealand continued to vote no. There are further details at Groklaw.net, with a succinct summary at tideway.com. Appeals will of course be lodged, and there are suggestions that the passing of the OOXML as a standard (subject to appeals) will actually not help Microsoft's case with regard to anti-trust accusations. As I don't know anything else about this particular standard, aside from Microsoft pushing it, I'll leave that commenting to the excellent team at Groklaw.net. Suffice it to say that what I have heard of OOXML, that it can include a "binary blob" that is necessary for the operation of the document standard, is of note. Others have commented better in other arenas.
11 January, 2008
We mark the passing of a Good Keen Bloke.
The first man to ascend to the top of Mt. Everest, along with Tensing Norgay, Sir Edmund Hillary finally managed to climb the mountain no other man had succeeded in climbing until then. Not only that, but four years later, he was to chalk up another history-making moment when he arrived at the South Pole in 1958 as a member of the first team to achieve a land passage ahead of the British explorer Fuchs. Sir Edmund did many other things too, probably too many to mention here. A New Zealander through-and-through, he was self-effacing. I wish I had met him, and I think a lot of others did too. Now we won't get the chance, as he has died, at 9:00 this morning. The family have agreed to the New Zealand Government's offer of a state funeral, stating that they would be honoured by the gesture. I believe that the Nepalese Government is also marking the death with a memorial service of their own. Somehow I suspect that Sir Edmund will not actually get another of his wishes, that of not being marked by any statues or markings of honour. Surely someone will want to erect a statue to him, just to mark the fact that the man did the many things that he did. However, I imagine that his main wish, that of the continuance of the Himalaya Trust, will be eagerly continued. It is a sad day, but tinged with the sadness—at least for me—is a sense of what he has achieved, and what he refused to say about it says more to me than what he has said. He did not shout it from the mountains, aside from one comment of "Well Gearge, we knocked the bastard off". He simply got on with it, like the quintessential Kiwi Good Keen Bloke. I've said enough, and will let this tribute stand - one of few words, like the man himself. Sir Edmund, we salute you.
08 January, 2008
A cube, I profess.
They were the times. Shoulder pads. Electronic music. The Death of Punk music. The Rubik's® Cube, snake puzzle, links puzzle, and others. Children got so good at the Cube that competitions were held, and are still held on a semi-regular basis today. In addition, several hundred books were written showing how you could solve the cube. One book that I read was written by a 12 year old, and is still the clearest explanation I've seen to date. I've also seen some good websites that describe cube solving methods, including this website. Then, they came out with other cubes. Cubes with pictures on instead of just simply colouring each side. Of course, this made the cube just that bit harder, as now you had to get the middle piece of each face oriented correctly with respect to the rest of the face. That was harder than simply putting a coloured face into place, in any one of four different directions. Then there were the little cubes that became keyrings. Too small to really do justice to the job of being a cube, they were a talking point for about 5 minutes, and were then discarded for serious 'cubing. I think mine fell apart about six months after. Modern "twists" on the cube include Sudoku cubes, where not only do you have to get all nine numbers facing the right way, you've also got to make sure there's only one of each number on each face, just like a Sudoku puzzle, only there's six sides, you see. So it's more difficult. Then, there are cubes that got shrunk—such as the 2x2x2 Rubik's Mini shown on the left. And some cubes just got some grow juice—the 4x4x4 Rubik's Revenge, and biggest of all at 5x5x5, The Professor. I wrote about the other cubes I'd bought previously in my previous article all about Rubik's cubes back in June 2007. And I have an update. I've FINALLY managed to purchase The Professor. The Largest. The Meanest. The Ugliest. The Hardest Cube To Master. If you can master all the others, you'll probably do okay at this one. But if you gave up on the normal 3x3x3 Rubik's Cube when it came out in the eighties, then this one will send you running screaming for the hills. All ninety eight pieces to get right. Still only six sides, but might as well be twelve. Luckily, it was bought at the same store that I bought most of the other cubes from. And it wasn't much more expensive than the others, at only $34.95. So I now have the complete collection of cubes, with no more to buy. I heard that someone actually came up with working prototypes of both a 6x6x6 cube and a 7x7x7 cube, but I seriously doubt that anyone will bring them to market any time soon. And don't even think of trying to speed-cube with this monster. It's simply too fragile, and even the manufacturer doesn't guarantee the product against improper usage, stating on the base this disclaimer: I'd hate to drop it and have it fall apart, as I have no idea how it's put together. Nor is there a reassembly diagram available from the Rubiks.com website, even though there are reassembly diagrams for every other size available. I also don't know how to solve this cube. Thankfully, there is a "booklet" that describes some ways of solving sides of the cube. I'll let you know how I go, if I can do it at all. For those that are interested, I found them mentioned for sale via Winning Games, at Amazon.com; for those of us in Christchurch (New Zealand), they're on sale at the Natures Discoveries shops, so they may also be in other places in the country. Again, thanks go to the providers of the related images from Wikipedia.org. It's probably the last time I'll waffle about cubes in this blog, though I imagine I'll have fun trying to do each of the cubes in turn. I've got the 2x2x2 down pat, just about. I can do the 3x3x3 with help from the webpage I pointed to above, as well as the 4x4x4. But frankly the Professor is going to be difficult. Mathematically, the number of unique combinations is somewhat more than the number of combinations of pieces that we can actually tell apart, at least for the 3x3x3 and 5x5x5. This is because the middle piece of the 3x3x3 face has four indistinguishable directions; the same applies for the 5x5x5 cube. Additionally, for the eight pieces surrounding the middle piece, the corners are all interchangable, and the sides are all interchangable as well, without us actually knowing the difference. One way of telling them all is to actually print a pattern up on sticky sheet in six colours, then stick those to the cube faces. But then that makes your cube even harder to do. And it's already hard enough to do now, isn't it? Incidentally, paragraphs I forgot to add when writing this article before, about how to reassemble and solve the Cubes. Firstly, there are reassembly diagrams for all the Rubik's Cubes except for the Professor, up at the Rubiks.com website, though you may have to dig a little if these links no longer work. For the Professor, the diagrams are a bit more instructive, so I lead off with how to Disassemble the Professor and then Reassemble the Professor. This particular website also offers parts for sale for the Rubik's Revenge and the Professor, though these parts are not always in supply. Solution guides also exist for each of the cubes, try this link to find the free downloads or hunt around if it doesn't work. These are in PDF format, so that you can even print them off if you need. In addition, one good site I have found is here (www.waldsfe.org) and covers all four cube models I've mentioned here, though he mentions the Mini-cube in passing as being "all corners".Back in the eighties
![]()
The biggest of all
NOTICE: The 5x5 Rubik's Cube by its very nature has more moveable parts than the 3x3 Rubik's® Cube and is not recommended for “speed cubing.”. Be sure to align all rows before moving them and do not force pieces to twist or turn. Winning Moves Games can not be held responsible for damage due to improper use.
And so we have it. Gone to pieces
Count them. Count them all, and despair
Update to post
13 December, 2007
Now, what about that smalltalk?
Trying to learn programming isn't one of the easiest pursuits in the world, especially to me. In fact, I'm finding about the only real language as such that I have any proficiency in is the bash scripting language. Wonderful, that. In comparison to big brothers such as perl, ruby, or even tcl, bash doesn't have a whole lot to offer except the ability to string things together using pipes, and call external programs. It at least has arrays which is something, I suppose; I've made use of arrays in some of the bash scripts I've tailored for myself, as well as something called Indirect references (in essence, pointers, but in bash instead of C). That made my life a whole lot easier writing the programs I have, as I could simply wrap something in a mildly complicated forloop instead of hammering it all out into a temp file, then slurping in that temp file as part of the execution of the script. It's best ... avoided. But this isn't really why I'm here. After all, I talk about smalltalk. A lot. It hasn't overtaken my life yet, though I'll bet that plenty of 'talkers could say that it has for them—it being a just-about-complete development environment in addition to being an environment for running applications. Yes, in comparison to the big IDEs (namely Visual Studio, KDevelop, Eclipse, NetBeans) the smalltalk development environment can be seen as primitive, but then so is a text editor and gcc+make, which is my normal fare. And nobody would argue that at least they get the job done. I'm sure you're mostly aware of the typical development cycle of "create, compile, test, break, fix, compile, test...", and the attempts of the big IDEs to put that all in one place; some more successfully than others. In comparison to the "one window to do everything" approach of some IDEs, it seems that the smalltalk environment has one place to enter code (either of the System Browser or Debugger), a place to execute code (the Workspace), a place to view variables while the program is running (Inspector/Explorer) and yet another place to view output (the Transcript, or simply World). Sounds as inefficient as heck, and yet there's a certain sparse beauty to it. In the end, it does make sense to have various functions separated from each other. After all, you don't typically use your email client to do your budget, nor do you attempt to use your spreadsheet to send an email - there's separation of function. Otherwise we'd never get any work done. However, in the smalltalk world, there's less separation than what I've mentioned here, as you can literally view every program's code in a smalltalk environment, all at once. If you want, you can even lock down aspects of the environment so that it acts more like a single application, rather than an environment to run a whole lot of applications. However, the normal use of smalltalk is to have everything turned on; that way you can fix something then and there if it breaks, and you happen to know how to fix it. To extend the metaphor a bit, it's a bit like having Internet Explorer being the front end to the entire source code of Microsoft Office, Windows XP/Vista, Messenger, Media Player, Outlook Express, and even IE itself. Of course this will never happen in the Microsoft world, but you get my point. To provide an example of locking down the Squeak environment to make it act like a single application instead, I mention a commercial offering built in Squeak: Plopp. Yes, this funny sounding name is actually an application built in squeak. And no, it's not explorable in quite the same way as a normal Smalltalk environment - it's been built to be an application, after all, and the company doesn't want just anyone browsing their crown jewels. So what's been stripped out? Most of the stuff that make Squeak what it is: an excellent development environment. The browsers have (presumably, at least) all been removed, as has the debugger, Inspector, and anything else normally associated with development. What's been left in? Great graphics (they're 3D!), and sound support, all based upon the Croquet 3D version of Squeak, an immersive world where you can spend time making drawings in 3d. The program is aimed at children, so it just has to be simple to use, that's why everything else that would get in the way of children enjoying themselves has been removed. I came up against a small conundrum the other day. I wanted to run some code and view some variables while the code was running, but I didn't want to wreck a working codebase, which is what I had. I merely wanted to tweak, play, as it were. I couldn't find a way of doing that, without cloning the whole image and playing in that instead, with the ability of exiting without saving. It's the Smalltalk way, though I've got to still get used to that. I also couldn't start a program THEN invoke the debugger on the program, because I still don't know how to do that. The Debugger window is about the closest to what I want, yet I'm still hamstrung by what I mentioned at the beginning of this post - my lack of proficiency. And that's not just proficiency with smalltalk, or else I'd just get over it, and do the hard yards. Instead, it's the lack of knowledge about programming in general - what works, what doesn't, how to do really really common stuff that professional programmers take for granted. Stuff like lists, sorting, filereading, and output to screen being some examples. I don't know how to do most of that in any language I know. A useful idea I came across quite a few years ago in a related subject is the "Whole language" method of learning - in effect, chucking the subject in the deep end, and making their brain find connections for itself without the crutch of a translator to ease the process and hold back the progress. To address my attempt to learn programming, this is what I'd like to try for six months or so. I'd like to simply boot into a Smalltalk environment, use it to run smalltalk applications, debug code, save files and so on, then get back to booting to my regular Linux. I can't quite do that with Visual Studio, although some people would say that emacs comes the closest to that under Unix-like platforms. However, there's a problem with trying to do that with Smalltalk at the moment. At this stage, I can't boot into a Smalltalk without additionally having to boot an operating system underneath to supply what the smalltalk environment doesn't. And normally, that's quite a bit. The closest that Squeak comes (and it's not working well enough yet to be a viable alternative) is an alternative called SqueakNOS (No Operating System). In essence, what they've added to Squeak acts like the rest of the normal operating system, providing services such as reading from disk, writing to input and output ports for controlling items, and generally doing all the things we'd expect the normal operating system kernel to do. It hasn't quite got there yet, as all this code has to run through the VM, which itself sits on top of its ... yeah, well let's say it's messy. The critical thing, at least for me at the moment, is this: SqueakNOS can't write itself back to disk yet. The other point seems to be that nobody's really that interested in it at the moment, so it's not being maintained. The latest example I can get my hands on was released over three years ago, and is showing its age, compared to modern Squeak environments. So for the moment at least, I'll just have to go with the "run Smalltalk as an application on top of the OS" and be aware that things aren't quite all there yet. Besides which, I can gain the benefit then of running multiple Smalltalk VMs side by side, and study how they differ in their implementations. Fun ones to compare for me have been Cincom VisualWorks (now up to version 8) and Smalltalk/X (now up to version 5.3.4, at least for the Windows platform), as they both present similar interfaces to the user, both of them using the underlying windowing system of the operating system to manage windows; I mentioned this in a previous post. I believe that other Smalltalk environments (VisualAge being an example) also present themselves in a similar manner; I actually downloaded Dolphin Smalltalk to compare that. Given that it only runs under Windows, it's a somewhat unfair comparison to other smalltalks that run under multiple platforms. I've also avoided downloading anything that costs, as I can't buy it or justify the price of purchasing. Have you seen the per-seat price for Visual Age recently? Don't expect much change out of $7,500 if you want to use it in any significant capacity. Now, into Dolphin. It's ... well, a rather well written program, and what appears to be a rather well written smalltalk. The class library is huge, even in comparison to other smalltalks I've used, and has most items that the average beginning programmer would want. I've yet to play with Dolphin some more, as I have to keep booting back into Windows to start it up. Recent events and decisions have meant that the original authors of Dolphin have decided not to continue development on Dolphin, and as they have a serious bias against allowing the project to fall into the open source world, we aren't likely to see it made freeware any time soon unless someone does what happened to Blender (bought for $75,000). Frankly I hope that works, as I'd be VERY interested to see it tweaked even further. No it doesn't seem to have remained that. Frankly if I think about it, Smalltalk is chickenfeed in comparison to other languages such as Java, .NET or even C and C++. Yet Smalltalk presumably shaped the way interfaces were made, was possibly the driving force behind true object oriented programming, and hasn't gone away yet, even against the heavyweights mentioned before. It's not easy to learn, yet from learning it, there may be valuable aspects that will apply to other areas of programming. In saying that, there are apparently negative aspects to thinking Small, in that if you think in that manner, you're automatically counting out other ways of working that may actually fit the current problem better than Smalltalk. I don't know if there will be any consensus on that, given that programming can be a bit like trying to herd cats that are on fire. No further guesses from this corner, at least.How to walk the (small)talk
One look for me, another look for you
What? There are locks here?
Je ne parlez petit parlez-pas
No cute dummy here - more a powerful force in its own environment
This isn't a small talk, is it?