Category Archives: Computers

Sublime Text 2

The idea of shelling out $60 for a text editor in this day and age is absolutely absurd, but I’m seriously contemplating doing so in the near future, because Sublime Text 2 appears to be the answer to all the things I hate about text editors. I’d been pointed at it before, but don’t like to increase my dependency on proprietary software, so it took a couple passes of seeing it do things right before I was willing to look seriously. But oh how it does things right. I’ve been using the uncrippled demo version for a couple days, and am seriously impressed.

It has all the basic features of a programmer’s editor. It can open multiple files (it uses a browser-style tabbed interface). It syntax highlights almost anything, does intellitext-style autocompletion on pretty much everything, and has shortcuts for context-aware section jumping (brackets/functions/classes/chapters, etc.) and the like. It does all this while remaining fast (startup/execute actions) and responsive (UI), and lives in about 8MB of private RAM — which is to say it is lighter than some of the command line editors I see people using. It also appears to have an excellent pluign framework, because there are a great many available.

One of the things that most frusterates me about programmer’s editors is that they usually do wrong things with shortcuts ingrained into my fingers by every other program I use, which is unacceptable. ST2 uses “modern GUI” keybindings – C+x C+c C+v (cut/copy/paste) all work like they should, as do C+z (undo) C+s (save) and browser-stye tab management like C+w (close tab). Furthermore, all the key-bindings are editable both per-user, and system-wide, as a straightforward format text file accessible from the UI.
While talking about keyboards, I am apparently unusual in that I ride my navigation keys, and ST2 not only binds them, it binds them better than expected. One tap to Home takes you to the current tab level, two taps to the actual beginning of the line. Del deletes, Shift-Del deletes whitespace until it hits text or newline. PgUp/PgDn jump up/down a page, Shift-PgUp/PgDn jump to the top and bottom of the document. The mouse is bound like any modern program, such that selection and scrolling work correctly, unlike most command-line based tools. At least on Linux, both the select and middle click and select, right click, choose from menu copy/paste mechanisms work correctly. It even supports multiple selection and column selection in reasonably straightforward ways.

Another thing that drives me batty about editors is modality. Not only do I not want modes in a text editor that do things other than accept text input, I don’t want modal dialogs that can pop up and eat my text. ST2 has neither (Except for the About window, which is a modal dialog for no apparent reason). Things that might happen in modal dialogs instead happen in either a nonmodal dialog area that appears at the bottom of the window, or (for text-oriented operations) in a input-accepting bar at the top of the window. The top bar does a variety of amazing things, including acting as a launchable, hinting search of the command reference, so if you think of a feature you want, it will tell you if it is available and if there are currently key-bindings for it, or let you use it directly from the search. Imagine Firefox’s awesome bar done right.

It can hook most common build systems (Makefiles and the various language-specific tools).. and like everything, the mechanism is pluggable, so simply dropping a LaTeX plugin in the appropriate place got me C+b to spit out a PDF from my LaTeX document. It detects if these are relevant based on the file and directory, but the automatic choice can be overridden (for cases where you have a Makefile that also generates LaTeX formatted documentation or the like). There appears to be a project managment system that I haven’t even messed with yet, but it apparently works with a pair of human-readable dotfiles in the directory, instead of demanding a particular layout and spewing files like most IDEs.

The search mechanism is also exactly what I always want: it accepts regular expressions, as well as case/whole word switchable simple queries. It does this with obvious controls for direction, and supports highlight all. It also does it across files, with straightforward control over which files are included. As an incredible example of it just being right, a day after I started using it, I needed a “replace preserving case” feature to modify a LaTeX document… I didn’t expect it to exist, but went looking as a “Wouldn’t it be cool” item since it seemed to be wish-granting, and it was not only there, but in the first place I looked on the replace bar – and it did exactly what I expected.

It does some neat things I haven’t seen before. The most obvious of these is that by default it has a tiny live view of the whole document next to the scroll bar, with the visible section highlighted, which is surprisingly useful for navigation. Furthermore, it supports almost every feature I’ve liked from the boneyard of rejected editors. Real-time underlining spell check? Present. Multiple views (ie. two simultaneous views into the same buffer which are kept mutually consistent)? Present. Split-window editing (think Screen/tmux)? Present. Code folding? Present. Bookmarks? Present. Case mangling? Present. Scope marking? Present. I keep finding amazing things, and it isn’t like vim, where you keep finding things because the learning curve is asymptotic. I haven’t even messed with the scripting and macro features yet.

This thing is impressive.

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

Dear web designers: Stop breaking my browser.

I’ve been running in to more and more sites which attempt to override browser features for no apparent reason. We know you can do all kinds of fancy things with CSS and EMCAScript, but that doesn’t mean you should. To pick out two examples I’ve hit in the last few minutes:

The Verge: Uses some sort of dynamic scrolling mechanism, so my scrollbars (and hence indication of length and position) disappear. There is no reason to do that, and it removes features you would otherwise get for free from the browser.

Gmail: For some reason, searches are done with a dynamic page, so the browser’s back button doesn’t take you back to where you were before the search, and even worse, hitting back from a message in the search results doesn’t take you back to the search results. They even replicated the back button in the interface bar because this is obviously how it should work. I leave a persistent Gmail tab up, and probably 1/3 of its reloads are because of this misfeature.

As my adviser is fond of reminding us, you could build a car with a tiller and throttle as easily as a wheel and pedals, and in the early days people did, but we (as a society) picked some acceptable standard interface elements to ease adoption and transitioning between vehicles. Until recently, browsers were one of the few places in computing like that: it didn’t matter what (GUI) platform you were on: the scroll bar moved you around in the page content, and the forward and back buttons moved you between pages you visited in chronological order. Now, the net is full of pages that break that paradigm, and I can’t find any compelling reason to do so beyond “Because we can.” Please stop.

Posted in Computers, Entertainment, General | Tagged , , , | 2 Comments

Touchpad Cyanogenmod 9

My Touchpad (AKA “The Mobile Platform Test Device”) has had both its OSes updated in the last couple days. WebOS bumped from 3.0.4 to 3.0.5, and I updated the Android install from Cyanogenmod 7 Alpha 3.5 (Gingerbread based) to Cyanogenmod9 Alpha0 (Ice Cream Sandwich based).
tl;dr version: Cyanogenmod9 is, by virtue of speed and features, at rough pairty with WebOS, even though its interactions are uniformly worse.
Details below.
Continue reading

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

January 18 Blackout

This post (and, for the day, banner) is my humble addition to the many, many sites blacked out or bannered today. I’m sure anyone who has found their way here is well aware that the copyright industry is trying to buy some laws (SOPA, H.R.3261 and PIPA, S.968) that will allow them censor the Internet, destroy website’s ability to host user-submitted content, break electronic security and verification systems, and generally harm both free speech and the technology sector. Under these laws, companies could compel search engines to remove search results, payment processors to block payments, and DNS providers to delist URLs without legal process or oversight, simply because they deem some piece of content objectionable.
The stated goal of these is to curtail copyright infringement – an objective for which these measures will be completely ineffective, as they are all trivially defeated by an even modestly determined or technically competent user. This means so the sole effect would be damage to free speech and technological progress.

This is unacceptable.

I have very little faith in the effectiveness of “Contact your Congresscritter” campaigns, but if you have not done so, please Contact your Congresscritters, and make sure the people around you understand that this is about keeping frightened content industries from attempting to destroy the Internet.

EDIT: Edited to add a link to Reddit’s breakdown of the relevant bills. It is remarkably compact and even handed, particularly considering this is Reddit we are talking about.

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

Another quick Linux aside/breadcrumb, I had some hand-written Udev rules start causing errors on my Arch boxes a while back, and just got around to fixing them. The basic problem is that the Udev rule syntax has changed, and statements … Continue reading

Posted on by pappp | Leave a comment

The previous post ended with “I have no idea why the nodes won’t boot.” Now we know. The problem is that, in terms of the mkchroot-rh script that Warewulf3 comes with, Fedora 16 is not a Redhat derivative. This makes … Continue reading

Posted on by pappp | Leave a comment

Warewulf, and the Kernel Documentation

Earlier, while trying to instrument a failing boot from some peculiar nodes we were trying to provision, I came across the following gem in the Linux kernel documentation, from Documentation/filesystems/ramfs-rootfs-initramfs.txt:

Note: The cpio man page contains some bad advice that will break your initramfs archive if you follow it. It says “A typical way to generate the list of filenames is with the find command; you should give find the -depth option to minimize problems with permissions on directories that are unwritable or not searchable.” Don’t do this when creating initramfs.cpio.gz images, it won’t work. The Linux kernel cpio extractor won’t create files in a directory that doesn’t exist, so the directory entries must go before the files that go in those directories. The above script gets them in the right order.

Yup. If you follow the documentation for the tool, it renders your system unbootable. The linked documentation is actually pretty cool – it explains the rationale for the current state of the boot process, including that charming behavior, and links to the original discussions. But the particular behavior is still kind of psychotic.

Upside: After today’s digging I know all kinds of neat things about the current Linux boot process, which I hadn’t relearned after it changed at the the 2.4/2.6 transition. Similarly, the last couple times we had problems with Warewulf 3 (or, actually, Redhat-isims interfering with Warewulf) brought me back up to speed on interpreting raw packet logs from Wireshark, so this has all been thoroughly educational.
Downside: I have even less idea why the nodes won’t finish booting – the check I was adding was to test our theory that they were running out of memory, and they don’t seem to be.

Posted in Computers, DIY, General, School | Tagged , | 1 Comment

The best of 28C3

I already posted deeper thoughts about some particular talks, but I’ve been watching talks from 28C3 all week, and now that the high-quality permlink videos are up, I want to share some of my favoites. If you would like several hours of background video that will make you a smarter, and possibly better, person, these are excellent.

Roger Dingledine, Jacob Applebaum – How governments have tried to block Tor (Video)
This is the real hacking to change the world for the better situation. These are the hackers who are protecting the people who will get chopped up and mailed to their families for what they say. They deserve all the respect and support in the world. I’m not intellectually equipped to help with Tor, but it is always good to keep humanitarian aspects of engineering in mind – both what you can do to help, and when you may, even inadvertanly, do harm.

Bunnie Huang – Implementation of MITM Attack on HDCP-Secured Links (Video)
I hadn’t really considered the collection of non-infringing desirable things that HDCP ruins (Ever wonderd why Picture-in-Picture stopped being so common? Blame the copyright industry and HDCP.) Bunnie thought about it, and made a consumer-grade product that fixes it. The FPGA crypto+signal work is badass, the hardware platform is awesome, and seeing how it went together as a consumer product is inspiring.

Meredith Patterson – The Science of Insecurity (Video)
Thoughts in a previous post here.

Cory Doctorow – The Coming War on General Compution (Video)
This is why you invite SciFi authors to technical conferences. It lacks the technical depth of most of the other talks I bumped, but it’s insightful and far looking and right.

Evgeny Morozov – Marriage from Hell (video)
This was the keynote, and, unlike most keynotes, really did set the tone for much the conference. The basis of the talk was discussing the issues of large scale surveillance technology, and the role of western companies and governments in creating and perpetuating the industry. A big part of the message is that the technology being paid for for monitoring employees in commercial settings and “lawful intercept” is being sold to authoritarian governments for whom such technologies would otherwise be out of reach, to hunt their citizens.
I thought the Tor talk above actually made a more forceful argument, but this is a better starting point. The hackers have been harping about this for far longer than the rest of the world: these are the people who have been handling the forbidden knowledge computing opens up, and they saw the disaster coming. The freakout isn’t about what large scale surveillance is going to do to hackers – we have the tools to protect ourselves – it’s what it will do to everyone else.

Ang Cui, Jonathan Voris – Print Me If You Dare (Video)
There was some stupid news responses to this (of the “OMG T3H H4XORS WILL BLOW UP YOUR PRINTER” variety) when it was first disclosed, but the hack itself is terribly clever. The reverse engineering foo is tight, the hole they exploit is a classic “I would have done that but … facepalm” kind of hole, and the attacks it enables are a massive evolution of a known mechanism.

Geeks and depression panel(video)
The geek community tends to have depression issues – this isn’t news. The hacker community is an amazing, close, supportive community – this won’t surprise many geeks, but it might surprise others. They talk about this reality. The session is, by the way, really hard to watch. I’m not ashamed to say it made me tear up.

I haven’t seen every session, or even every English session, so I’m no doubt missing some good stuff. There were definitely some other awesome talks; the GSM and USB Reverse Engineering ones were awesome but don’t have quite the same “YOU MUST WATCH THIS” pull to them. I welcome suggestions for other amazing things I may have missed.

Posted in Computers, DIY, Electronics, Entertainment, General | Tagged , | 1 Comment

Touchpad Dual-Boot

I dual booted my Touchpad with CyanogenMod last week, and it has made me notice a lot of things about the Touchpad, WebOS, and Android that I hadn’t fully appreciated before. I wish I had thought to post these as snippets instead of a wall of text, but I foolishly gathered them up and am posting as a set.

Details about putting CM7 on the Toucpad are here in this RootzWiki forum thread. Yes, their page and documentation are a forum thread with 100+ pages of screeching morons obscuring the content – that’s how the Android community tends to be.
The whole CM7 install process is pretty graceful – I had a minor hiccup in that it claimed the gapps would be installed on the first ACME run if I put them in the cyanogeninstall directory, but I had to go in with ClockWork and flash them later – then it hung on the setup autorun on the next boot. Fine after that. During the initial install, I found myself using the phrase “Oh jeez, there is some Linux shit going on”  — it looks like the ACMEInstaller is just a fancy initrd image with some utilities and scripts baked in that does some FS manipulation and archive decompression.  I appreciate it when Linux is Linux. 
Onward to notes:
Continue reading

Posted in Computers, DIY, Electronics, Entertainment, General, Objects | Tagged , , | 1 Comment

Canon Cat

Clip from Canon Cat Advertising Materials

I’m not sure why there has been a spate of tech news artcles about the Canon Cat recently, but it’s really refreshing to see. I assume it started because someone spotted this nice document dump, and the tech news world is an echo chamber.

Many of the articles note that the manuals and such come with (mostly) complete circuit designs, but they miss the other interesting bit of technical openness – Cats were running a totally introspective user accessible software stack written in a dialect of Forth. In addition to having a UI that is still a popular example for application specific computing devices, it was also user programmable/modifiable almost down to the hardware. I’m not a fan of Forth, but it demonstrates that 1. It is possible to make an embedded computer programmable without interfering with its UI model, and 2. It is possible to design introspective systems which are usable, which are right in line with what I want to be doing with myself next, and totally out of line with current trends in computing. It brings to mind Alan Kay‘s work, or a more reasonable LISP machine.
The other reason I’m fascinated by the Cat is that it manages to make a completely modeless text editing system, and its development spawned several papers (in the linked documents) on the topic. I despise implicit modality in user interfaces (this is why, despite having all kinds of wonderful features, the traditional progammer’s editors just end up making me furious), and good through theoretical and case studies supporting that stance are a beautiful thing.

That dump is slightly different collection of Canon Cat materials that I put together when I was curious after reading The Humane Interface a couple years back. I’m still integrating the collections, but there seems to be some different stuff in each – piles of arbitrary format documents are hard to diff, especially when there is no name correspondence and some are binary formats. I think there may be enough material in the various available sources that, given access to an operable CAT and a reasonable digital lab, it would only be a large 10s/small 100s of man hours of work to emulate or even hardware simulate one.
I’ve never (actually, I think I ran into one as a kid but did’t know what it was at the time) had a chance to play with a real Canon Cat, and owning one would be a mixture of all the standard problems in owning vintage computing stuff – they’re expensive and collectible, and like most computers of the era, bulky and fragile, and they require problematic media… but I would still probably get one if I had the chance for a reasonable price, because they did so many interesting things right. More and more I think CS/EE programs should include (probably just as an elective) proper History of Computing courses – if my intended life pattern continues, I may even get to teach one for a while. I think it would be a blast for all involved.

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