Category Archives: DIY

Minecraft Survivalism

While looking for something idle to do after I was out of patience for code the other day, I came across the Survivalism mod of Minecraft. Minecraft is a good sandbox, and a fair social activity, but isn’t terribly interesting as a game due to lack of objectives. Survivalism adds requirements for drinking, eating, and rest that make the game considerably more urgent and challenging, and gives the player a limited number of lives which changes the dynamic by keeping games finite. It lends a kind of rogue-like feel, which makes it way more interesting as a game. As we all know, Dying is Fun.

Posted in Computers, DIY, Entertainment | 2 Comments

Haiku Alpha3

The Haiku Project pushed out an Alpha3 release over the weekend, and, having an abiding love for interesting little OSes, I pulled it down to fiddle with, just like the previous releases.

Just for fun, I wrote this post and did the requisite research and link gathering in a Haiku Alpha3 VM – although admittedly I brought it up in Chrome on the host system for a spell check before posting, as that feature, while nominally present, didn’t appear to work in WebPositive.

Since Alpha2 Haiku has gained some more polish, both in the OS and the growing collection of software, without gaining bulk. The clean, well designed interfaces, integral threading support, and search and media features that made BeOS so impressive (and portable) in the 90s have been showing up elsewhere (sometimes rather directly; Apple hired Dominic Giampaolo, who worked on the search and indexing features in BeOS and BeFS for Spotlight, which is an inferior clone of BeOS’s integral search mechanism), but using them on “BeOS” again is a reminder that Be was generally better, having been designed from the ground up with those features in mind.

The lack of bulk is the really refreshing thing – Haiku presents a POSIX system with a custom graphical interface in an incredibly light package. To make some examples, bringing up a Linux box with X and a modern desktop generally soaks up on the order of 200MB of RAM. Haiku A3 boots into 75, and isn’t missing anything obvious. Chromium routinely gorges itself on several gigabytes of RAM – presently, WebPositive (a webkit-based successor to the old BeOS native web browserNetPositive, which was charmingly full of puns and haiku, which are in turn the source of the Haiku project’s name) with eight tabs is using less than 85MB. We wont’ even talk about the other Desktop OS’s memory consumption behaviors.

There are a few things that are quirky to those acclimated to other modern OSes. Be’s window management behavior is a little different than other modern GUIs, but only takes a few minutes to get used to, and is certainly less aberrant than some of the more exotic X window managers. Similarly, the Alt- instead of Ctrl- based shortcuts take some instinct-breaking to use, but are sensible (they don’t interfere with terminals), and can be re-mapped if they become too frustrating.

The development process is pretty cool to watch too: I haven’t been involved or watching particularly closely, but every now and then high points like the row about package management(vitriolic external version linked) or the brilliant GCC Hybrid system that allows both legacy BeOS and modern software to work on Haiku pop into my sphere of attention and get me interested.

Admittedly, there are some unequivocal downsides. Hardware support is lacking, especially in terms of graphics drivers. Major strides have been made since A2 on the hardware front, with reasonably robust system for things like 802.11 wireless and printing in place now, but it is still deep in the second class citizen category drivers wise. Likewise, software for which there is no open specification (ie. Flash better than that provided by gnash) is completely absent. There is also the note that while it generally behaves better than the final releases of many pieces of software I’ve used, it is an alpha release. I managed to crash WebPositive with only a little bit of provocation, and I’m sure similar bugs exist elsewhere in the system.

The only new breakage I found with A3 is that it doesn’t seem to like to Boot in VirtualBox (at least v4.0.8) unless there is a serial device attached – I see no errors in the log it prints, but it likes to have it there. I just have it writing out to a log file in its VM directory to keep it happy.

If I had a resource-constrained system (particularly with limited screen real-estate and not much in the way of GPU, like a low end netbook), I’m pretty sure I’d try installing Haiku on it despite the Alpha-release roughness – it’s that impressive.

Posted in Computers, DIY, General | Tagged , , | Leave a comment

Internet Communication Failiure

I’ve had a dynamic DNS beacon set up to get back into my home machines for a couple years, and until yesterday it worked perfectly. When I went looking for why I couldn’t get to my SSH server, I found that I couldn’t log in to my DynDNS account, and a stream of errors from the router. Upon further investigation, DynDNS apparently sent a 5-day warning before expiration — which gmail helpfully marked as spam/possible phishing and kept out of my inbox until the account had expired. I guess people trying to do sketchy things with dyndns sub-domains have caused all of them to be blacklisted with the major email services.

I’d really like to have a DynamicDNS path attached to a subdomain from here, but none of the attractive hosting services had the feature included, and I haven’t figure out if/how to go about setting it up for myself. Until I have a chance to sort that out, I’m setting it back up with DynDNS (with a different domain, the old one was under “selfip.org” – not on the free menu anymore), but it’s an interesting failure for a collection of services designed for communication. It is also rather interesting how rarely Insight (the local Cable ISP) turns over IPs.

Posted in Computers, DIY, General | 1 Comment

WiiU Controller

I don’t really get excited about consoles, but the WiiU’s newly announced enormous, screen bearing controller looks to me like it will be joining the Wiimote and Kinect as a delightful object for hacking- lots of buttons and sensors, radio (presumably Bluetooth), large screen, and high-volume consumer electronics pricing. It should enable some neat multi-player dynamics (always Nintendo’s strong point), which I honestly expect to be a load of fun, but I’m more interested in seeing the inevitable uses as automation controllers and the like.

Posted in DIY, Electronics, General, Objects | Leave a comment

Natty Virtualbox

I’ve been playing with virtual machines a lot lately, and one of the more interesting uses was getting to check out the mess that is Ubuntu 11.04 without devoting any hardware to the experiment. In the same spree I have also installed a bunch of the mobile OSes that run on devices slated for release this summer – if I get to it I’ll put up another post about the results of trying to indulge my curiosity about those later.

The short version is “Everything bad you have heard about Unity is true.” Lots of places have taken some time out recently to hate on it, but it is so hatable I just can’t resist. It really reminds me of broken OS X, with even fewer configuration options. I also has lots of things that happen automatically… under circumstances that take some experimentation to figure out: for example, the dock-thing that lives down the left side of the screen (no, you can’t move it) will sometimes side out of view – it has to do with occlusion by other windows, but the circumstances under which it appears and disappears seem almost non-deterministic. The dock-thing also handles large numbers of displayed applications very poorly, collapses extras toward the top with a sort of accordion fold graphic, where they aren’t easily visible. I didn’t catch a picture of it, but it also uses a mac-like “all menu bars in the top bar” scheme, in which it occludes the application’s name with it’s menu in a move reminiscent of the centered apple menu on early OS X builds.

The main menu emerges from an unobtrusive little rectangle in the top left corner, which is part of the dock-thing, not the top bar it occludes. The menu itself is one of those Freeform Search + Icons things that so many platforms have adopted recently – I’m pretty ambivalent about the design in general; well made examples do have a lot of potential in that they hook both “Knowledge in the head” (name of program/task) and “Knowledge in the world” (visual memory for icon, etc.). The problem is they tend to ruin spatial/hierarchal modes by dynamically re-ordering programs under some ambiguous scheme. This one is neither the best nor the worst example I’ve tried to use.

Some familiar desktop interface elements are missing or replaced with less flexible alternatives; for example the system tray appears to be gone – you still get dbus notification popups (for which there is no dismiss button, they just time out when they are good and ready), and fixed-function messenging and media tray objects, but there isn’t a general-purpose tray for tray applets or things like VLC and Pidgin to dock themselves. In a related behavior, I spent about 20 minutes trying to figure out the integrated media player features – a tray-thing for Banshee lives inside the volume icon in the not-a-tray, whether or not Banshee is running, and because of its launch behavior it is really hard to quit Banshee, or even figure out if it is running. It also doesn’t appear to be removable, and there doesn’t appear to be any way to replace it with another media player.

Another thing that combines many of the above problems: the workspace and task switching behavior is actually worse than OS X’s – something I didn’t think was possible. There is no straightforward way to get a window list, anywhere – at best, there is a pip next to each icon in the dock-thing for each active window, which counts over all virtual desktops. If you click the dock-thing icon for an application with multiple windows, it does an exposé-like action and tiles large thumbnails of all the application’s windows in front of you – regardless of which desktop they are on.

The familiar dynamic “Tiny representation of each virtual desktop” switcher that has been around since the mid 80s is gone – instead, there is an ambiguous static button in the dock-thing, which brings up an exposé-like overview of your desktops. The same view can be summoned up with Super+S. You can at least interact with windows while it is zoomed out to the overview, like you otherwise would in the dynamic switcher.
All these “wonderful” 3d features descend from a common misfeature- the entire desktop is GL. Not composited – GL. Its interactions with other GL programs are fascinating and generally horribly broken. While playing with it I had to kill a glxgears instance because the display corrupted and stopped updating while it ran – there isn’t a GL program simpler than glxgears. I also get some weird GL redraw issues switching in and out of the virtual machine, but that is an interaction, not an intrinsic problem.
There are a handful of good things, in particular, the installer does something very right: once you have given enough input to begin installation, it starts moving things over to the hard disk, and it does everything requiring input up front in one pass, rather than the usual intermittent prompts that cause the installer to stop wait for input. More installers need to do that; keeping state isn’t hard, and stopping at random intervals to prompt for user input is broken. It’s also worth noting that making Unity work in Virtualbox is easy: enable 3D Acceleration in the VM, tap the menu item to install VirtualBox Guest Additions, give the password for the automatic installation script, and reboot. Next time it comes up, you get Unity.
I agree with the idea that computer UI could use improvement; I wouldn’t be looking at it as an area of research if I didn’t believe it was an intresting problem. If Unity were being presented as an experiment, I would be looking at it like E17– not exactly practical, but interesting, and good enough for the dedicated to run full time as part of the experiment. Instead, Canonical has foisted it upon the world as finished software, and set it as the default in the currently in vogue “easy” Linux distribution, and it is totally unacceptable from that perspective.

Posted in Computers, DIY, Entertainment, General | Leave a comment

XBMC Lives On

I just upgraded my (ancient, bought used, and thoroughly hacked within hours) Xbox’s XBMC install to the new XBMC4Xbox 3.0.1 stable release that came out Thursday. I continue to be amazed that there is still a team of hackers maintaining XBMC for the original Xbox hardware (the main XBMC team deprecated it as a target platform over a year ago), and that it is still the slickest media center I’ve ever used. It actually took me a minute to remember how to update the dash, since I hadn’t changed the configs on the Xbox in almost two years (fyi: in my configuration, shortcut xbe named “xbmc.xbe” as that is the default boot dash, xbmc.cfg contains the path to the default.xbe you want to launch – this is a breadcrumb for myself). Eventually I’ll have to replace the thing with a (quieter, more capable, and less hacked) PC running XBMC on top of a Linux system with a suitable remote, but for standard definition the Xbox is so good I just never feel the need to pay for the replacement parts. Maybe when I’m living somewhere more space constrained I’ll build a proper machine for that and roll my household server in as well.
It’s always sort of incredible to think back to how the Xbox scene was largely the prototype for all subsequent consumer device hacking efforts, and that XBMC is basically the model after which the current generation consoles media and development features were designed. It’s also mind blowing how capable a 733Mhz Coppermine Celeron and a chopped down Geforce3, sharing 64Mb of RAM between them is when running bloat-free dedicated software – designers of the current round of corpulent crap take note.

Posted in Computers, DIY, Entertainment, General, Objects | Leave a comment

More Spiffchorder

While I was on my hardware-fiddling spree, I came across the Spiffchorder project pile tucked into the keyboard drawer of my desk. Last time I played with it I had written off the perfboard assembled one, which had been reworked so many times it looked like a solder ball, and left a working one on a breadboard. This meant it was taking up surface- and breadboard- space, and that would not do. So, I sat down, laid out a less-insane board, and soldered it up in one pass.

The design isn’t well suited to the individual-pad perfboard I had around (lots of n>2 component nodes), so I tried a fabrication strategy I hadn’t used before to help simplify: I almost completely populated the perfboard, ran a piece of tape over the components, flipped it, and soldered, rather than re-adding the components as I went. It actually worked pretty nicely. It is a little bigger than the last layout I used, but this one worked on the first try – or at least the first try where I had a programmed UC plugged in to the socket…

In a related matter, one of the two chips I thought I had burnt with the appropriate firmware doesn’t seem to be working, and because there is a bug with the -g flag in the current version of gcc-avr, I can’t burn another from the boxes I have set up for working with AVRs (the VUSB stack needs the -g flag).

The actual chorder I made still sucks almost to the point of being unusable, largely owing to a mistake on the particular tactile buttons I got when I ordered the parts. Eventually something will have to be done about that, but the chorder is on a header, and the project is now in an electronically working state, not taking up prototyping supplies, and can be shoved in a box when idle.

Posted in Computers, DIY, Electronics, General, Objects | Tagged , | Leave a comment

CNC Update

I’ve been in a very mechanical sort of mood for the last couple days, no doubt owing to the all-software (and intangible even for that – what does that thing you’ve been working on do? – well, if I were sure it was working it would verify that an input sequence is valid in this language I made up…) sorts of things I’ve been doing of late. So, I pulled out my pile of mechatronics parts and started fiddling with it.

I’ve previously documented some of this elsewhere, and this isn’t a finished project, but I need a brain dump to package up various information, so I’m going to do a fairly thorough write up.
Continue reading

Posted in Computers, DIY, Electronics, Entertainment, General, Objects | 2 Comments

Hundreds of dollars of parts, hours of fiddling and “Hey! It almost drew a circle!” (I’ve been playing with my CNC parts pile again – more later)

Posted on by pappp | Leave a comment

PSN Outage Reading

I don’t have any stake in the PSN outage issue, not owning any Sony products more complicated than headphones (The last console I bought was an original Xbox- used- to ‘chip and run XBMC on), but it has made interesting reading on the interwebs. There are the official releases, which until today were basically “The system is down.” There is also all kinds of amusing speculation, because when you take video games away from geeks, they suddenly have all kinds of time for that sort of thing. A fairly credible and highly publicized bit of speculation comes from this thread at reddit, where someone from PSX-Scene places the root of the problem on custom firmware that allowed consoles onto the developer network, which subsequently allowed users to purchase paid content with bogus credit card information. The specific details aren’t that interesting to me – the interesting thing is that almost all the speculation has something in common: that Sony was, at least in part, relying on a client-side security model*. If true, this is seriously fucking stupid, even by Sony standards. Ignoring security concerns, when writing software there is a standard adage “Never trust the user.” Usually, the user can’t be trusted because the user is a fucking idiot. Occasionally, the user can’t be trusted because the user is malicious (where, in this case, “malicious” is defined as “Wants to run their own code on hardware they own”).

Back in December there was the excellent Fail0verflow talk at 27C3 where they eviscerated the security model on the PS3, and pretty much demonstrated that Sony screwed the pooch on that front (watch the talk if you haven’t; it is by far the best security presentation I’ve ever seen). Even before this, the PS3 was fairly deeply compromised by a variety of other techniques, and the PSP has been compromised (and re-compromised) almost since it shipped, so they didn’t just have a reasonable assumption that clients couldn’t be trusted, they knew it for certain.

There was also the rootkit scandal with the copy protection on some Sony BMG audio CDs. All together, this sets up precedent for an almost unlimited degree of poor design in Sony security systems.

Now, Sony is saying that a huge quantity of personal information on every user may have been compromised, and there are a spate of complaints about bogus charges on cards used with PSN services floating about on the ‘net (complaints of unknown correlation and reliability). This leads to the really interesting questions: Was all this information stored in plaintext? – it sure sounds like it was if it was extracted on such a scale. If both the Sony release and the speculation about access being gained through compromised consoles is true, why was this information accessible from clients? And finally, how did a system with all the above properties come to be designed? I’m seriously hoping this gets analyzed in public, because it will make an amazing instructional case study, and something of worth might as well be salvaged from this clusterfuck.

* There are a couple non client-side attack theories too. The boring “Organized criminals did it” option, and the theory that Anonymous (big A) is doing their gleeful mayhem thing, like they threatened. These aren’t any more or less credible, they just aren’t as interesting.

Posted in Computers, DIY, Entertainment, General | Tagged , , | Leave a comment