vael:
“Firefox summed up in one screenshot.
@demi’s reply: you forgot to mention the restarting in order to apply a theme ;}”
However, to be fair, these seem like themes. And themes are wonky voodoo magic, and aside from requiring a lot of effort,...

vael:

Firefox summed up in one screenshot.

@demi’s reply: you forgot to mention the restarting in order to apply a theme ;}

However, to be fair, these seem like themes. And themes are wonky voodoo magic, and aside from requiring a lot of effort, nobody gives a damn about your work. I’d say themes and other aesthetic extensions get abandoned far more often than extensions that add functionality.

Also Classic Compact is the best theme forever.

Aside from that, it’s pretty easy to force Firefox to accept add-ons that you know are working. Slight problem: if you update and an extension really doesn’t work, you’ll be sad. Anyway, I think this extension is the current solution. Alternatively, Is It Compatible? will let you know when to wait to upgrade Firefox.

PS: I can’t help being a Mozilla apologist, okay! In principle, though, I like that you can dig around in the guts of Firefox beyond anything that Chrome’s API supports. On the other hand, I can’t help but be envious of a lot of Chrome extensions that have no Firefox equivalent because they’re so much easier to make. All of which is to say that I realize I am a flawed human with illogical software preferences!

PPS: If you have to restart Firefox to use an extension/apply a theme, it’s because it uses an older API for Firefox. Which, I believe, uses an ugly mix of C++ and JavaScript. “Restartless” extensions use a newer JavaScript API, which is still a work in progress by my understanding. It’s more in line with what Chrome offers, but I don’t know if you sacrifice anything by leaving behind the double-edged sword that is C++.

Better browsing with an Xbox controller

About a year ago, Lifehacker had an article called “How I Improved My Life with a PS3 Controller”. I cheered inside a bit at the controller choice, because I find the shape of Sony controllers incredibly comfortable. Also, I’ve previously used a PS3 controller to play emulated games, and it was pretty good. However, Bluetooth has never worked on my old laptop (for other devices), and I suspect it’s from installing the janky MotionInJoy drivers. They actually replace the default Bluetooth driver, and so whenever you try to connect another device, it just plain doesn’t work. At least, it didn’t for me - I’d love to have my cake and eat it too, if anyone has had experience with this.

        That being said, a lot of PC games have support out-of-the-digital-box for Xbox 360 controllers. I suspect there are ways to emulate experience for PS3 controllers with MotionInJoy or other tools, but realistically it’s never going to be quite right. So for Christmas I asked for a nice wired Xbox 360 controller. I figured I could play more games on my PC if I didn’t have to go through the pain that mouse and keyboard games give me, and actually had sort of forgotten about this Lifehacker article.

        Unsurprisingly, I’ve only used the controller to play games three times in the last couple months.

        A few weeks ago, as I was cleaning my room, I wondered how I could make better use of the controller. I suddenly remembered the above Lifehacker article, and searched the Internet for a bit to find better software than AutoHotKey and Joy2Key for supporting the controller.

        Enter Xpadder. It costs ten bucks, though you can get an older version of the program for free. It works flawlessly, though, and surprisingly enough, has all the sorts of flexibility I would get from AutoHotKey (though you may need to read the tutorial posts to figure everything out). For instance, AutoProfiles allow you to switch profiles based on the current program. I haven’t started using the feature yet, because I’m such a keyboard junkie, but I guess I can imagine setting up various program specific shortcuts.

        It’s actually been surprisingly useful for web browsing. I basically copied the layout from the Lifehacker post. I actually browsed without using my keyboard or mouse at all one afternoon, and for a period of time where I couldn’t use my touchpad, controlling the mouse with the analog sticks was totally workable. My one complaint is that it has to be an all-or-nothing affair: it’s never going to be worth moving my hands way from the keyboard/mouse to hit a controller button. And the controller is only worth using if it can be independent. Luckily it can be, as long as you’re just consuming information.

        Anyway, I’ve put my config files on GitHub if you’re interested. The .xpaddercontroller files are controller specific setup stuff, if you also have a Razer Onza. The .xpadderprofile files have all the button assignments (you’ll need to have two sticks and… 16 buttons?). There’s only one right now, but I figured if I create more, GitHub is a good place to share them. The one thing that was hard to setup was alt+tabbing - I asked on the Xpadder forum and got a really quick response, which was nice. You can see the required settings for repeated alt+tab in the GUI here. Or just copy to your own profile the lines that involve Alt+Tab in my profile (including the turbo settings).

        I’m actually considering upgrading from the Razer Onza to the Razer Sabretooth, which reportedly has better build quality and some other niceties. I won’t unless my Onza really starts to get screwy, though. If I do, I’ll upload the controller configuration there too.

        PS: Ironically, I have never owned an Xbox system, because there’s too few exclusives I care about for me to take the leap. They just don’t really make third-party PS3 controllers that are any good (possibly because of the Sixaxis bits - remember that?). The adjustment has been pretty easy, though, and the level of OS support is way better.

Summer 2012 in Desktop Shells

rabbit hole alert: I wrote far more about this than most sane people will want to read, feel free to skip it

“What’s a desktop shell?” I hear the non-Unix folks out there asking. Glad you asked! See, the thing you see when you boot up your computer is a “graphical shell”. On Windows, it’s Explorer.exe, and so on. And there are actually people who try to reimplement all those features and do one better. Or, more commonly, port over stuff that Unix folks have had for a long time (see the many and impossible to keep track of ports of Blackbox for Windows). Because the first one is hard.

        Aside from being incredibly ambitious and challenging to complete, replacement shells haven’t been terribly popular lately because since it’s really hard for them to compete with the years of work that have gone into modern graphical shells. It’s pretty hard to get the hackiest Windows replacement shells running on Windows 7 (or at least, on a 64-bit OS) because they’re from the days of Windows XP. And the people who develop them seem to be XP holdouts as well, and so they don’t know what sorts of features they’re trying to compete with for Win7 users.

        So where I’m headed for this is that I spent time over the summer crashing Explorer and replacing it with other things and then having to reboot my laptop when they didn’t work. SharpEnviro was okay, and pretty easy to get going, but it didn’t offer a whole lot over the default and had too many rounded corners and pointless chrome. I’ve read some claims that LiteStep works on Win7 x64, but I never really got it functioning properly.

Blackbox

        Then there’s the grand mess of Blackbox clones, which allegedly work great - if you read some forum posts that no longer exist and download the right revision of the right code branch which is actually a mod three times removed from the original source. Or something. There’s a really difficult to follow list of forks on BB4Win’s SourceForge website, which is somehow one of the two main hubs for Blackbox. There’s also BB4Win.org, not to be confused with the former, which seems to actually have a community. Oh yeah, and then there’s boxshots.org and LostInTheBox has a forum for shells and sub-forums for BB4Win and its descendents (click the previous link, you'l see them).

        Anyway, near as I can tell most plugins are compatible with every version. Unless you’re using an 64-bit build, but then it may just be better to stick with 32-bit builds. So! BBLean, xoblite, and Blackbox Zero seem to be the only modern-ish ones. The former, while old, has a 64-bit build and can be downloaded here. xoblite has a release candidate from 2005, but it also has a nightly build from 2011. I think it’s only 32-bit, though. If you try out xoblite, there’s a pretty comprehensive FAQ available. Finally, there’s Blackbox Zero, which seems to be the most recent of all. It has, I think anyway, builds for 64-bit. And, thankfully, it’s fairly well-documented (in the sense that there’s no hidden options that require you to ask the developer, like in xoblite). Anyway, this post on DeviantArt also recommends just using BBLean - there’s some useful stuff in the comments, too.

Emerge Desktop

        So the moral of the story is that Emerge Desktop is the most functional option out of the box. Even though it has an intentionally bad first time user experience. To teach you how to make it not-ugly, I guess. Anyway, once I made all the icons small, minimized the chrome or made it invisible, I got this user interface that I really fell in love with. I had a 32 pixel tall border along the top of the screen for the “taskbar” replacement, and a 32 pixel wide border along the left side for app and folder launchers, and that was it. Nothing extraneous to waste precious pixels on my laptop’s screen. I just had to smile whenever anyone wanted to use my laptop and yelled about how they couldn’t find anything.

        But I was always bumping into little annoyances. Things I missed from the Win7 version of Explorer. As you can see in that thread I linked to, I was considering contributing to Emerge. And I made myself a list of tasks to work on. I thought about how cool it would be to be the guy who merges Emerge’s “running programs” functionality with its “app launcher” functionality (something XP lacked, but Win7 makes you wonder how you lived without it). To write code and improve the software I was using right away.

        It was, to be honest, an… ambitious list of things I wanted to improve. I probably couldn’t have found time for more than one of those features, since things are never as easy to implement as they are to think up. There were eleven items on the list, and maybe that doesn’t seem like a lot if you’ve never written a decent amount of C++ code. Granted, some of them are on the scale of small bugifxes - at the time, it was possible to scroll past objects placed at the corner of your screen, so that you wouldn’t be able to interact with them. There’s probably a better way to do it, but you could easily hack it together by resetting their cursor position whenever it goes outside their current resolution’s height/width. Then there were whole new features, like adding support for the Windows 7 jumplists, Aero Snap, and that cool progress bar thing you can get in the taskbar.

        So, full of the confidence of the young, I figured I could guesstimate how to implement all those things in C++ by myself. If I had infinite time, sure; but as the summer progressed, I realized that I didn’t really want to be a C++ ninja. So I set these goals aside and never even looked at the code for Emerge.

        Still, I’m posting this list of things for their sake. Just in case some C++ wizard decides to do the world a favour. I’ve submitted them as feature requests, too. So maybe someone will act on them.

The list

  • Jumplists in Launchers for Win7
  • Key to minimize/maximize current window
  • Aero snap with win+arrow
  • Default launcher keys for one launcher, ie, Win+#
  • System tray that expands better - scrolling?
  • System tray upper level hitbox - can’t mouse above it
  • Notify on window title change (ie download compeleted)
  • Flashing for notification (ie new message in Miranda)
  • Download progress?
  • Combined launcher and emergeTasks, or quick transfer of running program to launcher (this is a HUGE annoyance - in order to add an item to a launcher, you have to open up its configuration GUI, click through a few things, go browsing through your entire PC for the executable you want to add, and then a few more clicks to finish. Realizing that a program you’re currently running is one you’d like to have easy access to is a practice in weighing short term pain for long term benefits, and for me, laziness often won out)
  • Bettery system tray hiding (see SysTray from the AutoHotKey forums on how to interact with the system tray)
  • Something like Desktop Media

Summer 2012 Projects I

Next up is the list of my summer projects. Like most students, I tend to build up a pile of things I wish I had time for. Like most students, I also expect to have literally infinite time in the summer, since I’m not taking a full course load. Following that logic, I set out fifteen items on my list of potential summer projects. Only three are what I’ll call “complete”, while three are “kind of complete?” because I did actually get somewhere. There are three others that I’ve worked on since the summer. Two I decided weren’t worth the effort. In the end, that leaves four in limbo.

        Because the post got insanely long, I’m making this first part about “stuff I accomplished in the summer” and the second part about “everything else”. Also, bear in mind this is just me talking about my to-do list - there’s going to be another post about generally evaluating the summer.

Stuff I did

  • Read Code Complete

        I finished this one, by setting myself a goal of 60 pages per week. I did most of my reading on the bus (yes, I carried a 1300 page tome with me), which is weird for a programming book. However, I didn’t take notes on the entire thing, because it would require a lot of typing. I would like to go back and take more notes, in order to learn the material better and share with others. On the other hand, I worry about copying too much of the content. As if a ten year old book is really selling all that well these days.

  • Learn a programming language?

        I consider this one done, from reading half of Learn You a Haskell for Great Good. Which is an awesome book, by the way. Actually, it’s so good that it actually makes me question whether I like Haskell because of the language, or just because I started with a well-written book. But then I read these code snippets and I think “man that is cool” and figure it’s probably the language.

        Here’s why I can’t wholeheartedly say I completed this task: I’ve never actually written any Haskell code. I read the book on an Android tablet while on vacation at a lakeside cottage. And yet, months later, I can read Haskell code examples. I mean, I can basically read Ruby code examples despite knowing nothing about the language. But Haskell is extremely different from all the other languages I know - unlike Ruby, I couldn’t have intuitively parsed those FizzBuzz code examples a year ago.

        But it has to be said that I don’t yet know how to go about solving problems in Haskell. Maybe it’s more honest to say that this one is partially complete. But I’m happy enough with what I did learn, and intend to finish the book soon. Oh, and I also plan to check out the tutorials from these dudes.

  • Coursera courses

        There were two courses I thought were interesting running over the summer - Design and Analysis of Algorithms I, and Algorithms I. So I put them both on my to-do list, because their descriptions claimed they covered different stuff. However, in the end I didn’t bother doing Algorithms I. It seemed like a simpler course - focusing on implementing different algorithms in, I believe, Java. I will admit the Java part influenced my decision not to take the course, because I never want to go back to that. But I found the challenge of Design and Analysis of Algorithms I exciting, and didn’t feel like going over similar material again at the implementation level.

        So I took Design and Analysis of Algorithms because it ran first. Apparently, it was the more difficult course. It focused on mathematical analysis of algorithms and dealing with implementation in the abstract. Students had to fill in the implementation details in their language of choice. I didn’t complete all the credit stuff for the course, but I watched all the lectures, took notes, and learned a lot of great stuff. By which I mean, I struggled to find the time for (and feel comfortable with) all the typing necessary for the assignments. I figure I’ll retake the course at some point and just do the assignments so I get the credit. Even if I don’t, the material was really good and it taught me a lot of useful stuff.

Stuff that was partially completed

  • Super thumb drive, including security

        Semi-complete - “super” originally included having a setup for any computer I came across, not just ones using Windows. It seemed lightly possible to have portable Mac apps, but on the Linux side it looked like a wash (for understandable reasons, but still). Given that I don’t know enough about either ecosystem, I gave up on those. Also I’m lazy about security (at least, security defined as “repeatedly scanning your flash drive with portable antivirus software that’s known to be crappy”). However! I do have a USB 3.0 flash drive with all my browser customizations and LastPass installed, my Frankenstein IM client, 7zip, Workrave, and more via PortableApps. I also have some instructions for setting up portable Emacs. Using unconfigured Emacs is painful to me, so this is important. Once that’s done, I’ll consider this complete. Although, now that I think about it, anything that depends on Cygwin and other external tools may be impossible to get on another computer. Hmm.

  • Have the perfect Emacs setup

        This one is partially complete, but then, is it possible to finish? I still have hundreds of bookmarks to look at…

  • Paper with Sebastien, investigate PyPy for scientific computing

        I did investigate PyPy, but despite one or two reminders to Sebastien, the project stalled. I consider this partially complete, because I read a master’s thesis and gave some genuine thought to the implementation. That sounds like it took ten minutes, but no, it took a lot longer than that. Less time than actually implementing the whole system, obviously, but we’re talking a 100 page master’s thesis and a couple of hours looking at API documentation.

Installing the Windows 7 SDK on a new computer

[[if you’ve stumbled onto this trying to get the Win7 SDK installed, skip to the bottom]]

When I got my new laptop, I needed to get ispell setup for spell checking in Emacs. ispell itself on Windows is a wash, but I know aspell and hunspell can work. aspell can be had from Cygwin, which is great! Except that in September something was wrong with it/the mirror I chose, and it wouldn’t install. I got it a few weeks ago and all is well, but before that, I tried to get hunspell working.

Now, the instructions for Unix-based systems are pretty simple. Less so for Windows. I tried the 2.1 compilation instructions, for installing and running through Cygwin. Didn’t work for me (at the time, haven’t tried recently). The 2.2 installation was no better. So, off I went to try and get the Win7 SDK. I hoped that would be easier than futzing around with Cygwin

I was wrong.

I got two different errors (the numbers for which I’ve lost, sadly), and Microsoft’s help was no use. After a couple of solutions that “worked for this author”, including one involving registry editing, I finally found the problem.

My computer came pre-installed with a higher version of .NET and Visual C++ 2010 Redistributable than the ones in the SDK.

So, uninstall those, run the SDK installer, and then check Windows Update to get the newest versions back.

Anyway, this isn’t terribly useful without the exact error codes. But I don’t really feel like replicating the errors now that I have it working! It’s all a moot point now that I got aspell installed, but there you go. Just in case I ever need to install the SDK again, or someone else needs to.

Windows 8 Pro for $40 - probably worth it

I was checking out a Maximum PC article about reorganizing your music library with MediaMonkey when I stumbled onto their review for Windows 8. It’s a fairly measured review of what Windows 8 has to offer for a happy user of Windows 7 on the desktop. They don’t spend any time on the touch controls, or what the OS means for tablet users, or any of the sort of thing you’d find in Ars Technica’s wonderful coverage.

If you happen to be one of those users, it’s probably worth a read to decide if an upgrade is worth it. It’s actually fairly concise, but for your benefit and my own, here’s a quick reference:

  • The second page touches on using Metro and the state of multi-monitor support in Windows 8. The moral of the story being “Tablet Mode probably has nothing to offer for you on a desktop” (but you may be able to hack it away with the free Classic Shell or RetroUI which is $5 for three PCs)
  • Third page discusses the improvements to the desktop experience - most notably startup speed (which, in terms of time saved per day, could be worth a lot of money over time)
  • Fourth page is short and mentions some other new features, noting that it’s probably worth $40 for an upgrade to Windows 8 Pro (from XP through to Win7)
  • Fifth page has some performance analysis of Win 7 vs Win 8 (surprise: there are pretty much no downsides to Win 8), talk about price, provide a few recommendations for minimizing the Tablet Mode side of things, and list a lot of miscellaneous improvements (better USB 3.0 drivers, better rendering stuff, and suspending desktop processes)

So, the thing about this upgrade is that it doesn’t have a lot of immediate value, but it has a lot of long term value. Some time next year when almost everything is compatible with Win8 (and tools to remove the Tablet Mode are perfect), the improvements would be nice to have - but not quite $200 worth of nice. But definitely $40 worth of nice. I guess January 31st is plenty of time to buy in, but I might hold the license a bit longer than that before using it. Even if there are restrictions on the $40 digital version, it would probably still be worth $60 for the physical version.

Plus, this is an upgrade to Windows 8 Pro - there are a number of nice features in the Pro versions of Windows, especially when it comes to compatibility. For example, Win7 Pro has “Windows XP mode” which is either a virtualization tool or a super-powered compatibility mode (I don’t know which, I haven’t used it). Win 8 Pro would probably have that and a similar mode for Win 7, if things do go wrong.

All in all, I actually think this is worth jumping on. Write the license key down and hold onto it for a while. Don’t worry about the touch stuff, don’t worry about the Windows Store, because it sounds like they’re entirely optional (provided you can stay in desktop mode). Everything from Windows 7 should work the same way, but with some bonuses. As a bonus, QTTabBar sounds like it will support Win8 fairly quickly so you can make Explorer not suck and, hopefully, remove the Ribbon.

Well, I’ve convinced myself that I should invest in this. Hopefully you’re convinced, too.

(this is actually an even better deal for me and anyone else who buys a Win7 PC between June 2nd and January 31st, 2013 - just $15)

Adventures in New Laptopia, Pt 1: Security

Running as a non-admin in Windows, for the first time ever

Before I started laptop shopping, I stumbled onto a pair of blog posts suggesting that you should run as a standard user. The first is from Jeff Atwood, and the best part is the quoted list of stuff in the middle of stuff you’re protected against by being a standard user. Somewhere around the same time, I found a blog post about configuring Windows 7 to run primarily as a standard user. Unfortunately, there’s not enough info in that blog post on the pros and cons of running as a limited user, but here’s what I’ve found in the last few days:

  • Some regular actions will prompt you for admin rights on a daily basis (eg Lenovo updater service). This is an absolute pain and I so dearly wish to figure out a way to make exceptions for specific applications. I’m investigating a few options right now, but I’ll update if I find a perfect solution.
  • You can’t add administrator privileges to a program that’s already running, and you won’t get a UAC prompt when you need them. The program will just fail with some cryptic message. You probably won’t think of it until it becomes a problem. Example that I dealt with on three separate occasions today as I was setting up new software: I wanted to edit a configuration file stored in Program Files. I open my editor, make minor changes, then try to save. “Access denied”. I have to save my new version as a copy in a folder I own, open explorer, and cut+paste my edited version into Program Files. Explorer, thankfully, can prompt when I need admin privileges.
  • The “Run as administrater” option, and the command line utility runas don’t work the way sudo does in Unix. Unlike sudo, they suck terribly. SuperUser has a pretty good explanation of how they actually work and one answer recommends Sudo for Windows, which is complicated but seems workable. If you do check out Sudo for Windows, the Wayback Machine has rescued its documentation from the depths of Internet history (the year 2007).
  • If you leave it with the default settings, MediaMonkey (which seems quite awesome so far - check out the files to edit section of your library! *swoon*) will re-check file associations every time you start it. For some unknown reason, while this can be done without admin rights in some other programs, MM will prompt you for admin rights/UAC whenever it starts. If you turn that option off, it seems to work fine. Extremely thankful to this thread for helping me out on that.
  • Otherwise, everything seems to work more or less fine. Because I’m running as a standard user all the time, I don’t run into issues with files having different ownership thanks to the terribleness of “run as administrator”. Having to enter a password to install software really didn’t bother me, even though I installed a ton of stuff on this computer. The problems I’ve had so far have mainly been centered around common actions requiring admin privileges, and as mentioned above, I’m looking into ways to make exceptions.

Hardware security features

My new laptop is a Lenovo, and I’ve jokingly told people that I needed one because I am a serious business person working at a serious business. It’s quite a change from my consumer/media focused HP Pavillion laptop. For instance, I added a fingerprint reader for twenty bucks. Hard to tell so far whether it’s actually useful or just a novelty, but it’s generally faster than typing a password to login. At least, once I figured out that it only works if you swipe left-to-right (but it doesn’t say that anyewhere). Now, I know fairly well just how imperfect finger prints are as a biometric, considering I read a handful of papers comparing different biometric approaches over the summer (they can be fooled by replicas and other means, your fingers can be cut off, not 100% reliable, etc). I definitely don’t want to rely on it (aside: but then, Windows passwords aren’t particularly hard to reset…). Not to mention that shoddy firmware can make you less secure than ever. Still, it’s convenient to have it as an option alongside my password.

However, let it be known that I’m prepared for the worst. Lenovo’s software allows you to register any fingers you want for the scanner, so I’ve registered my least useful fingers. If you want into my laptop that badly, please, just take my left pinky.

Some other things that provide hardware security in a different way:

  • “Airbag protection” for my inexpensive spinning platter harddrive. If excessive motion is detected by the system, it will turn off the disk so that it isn’t damaged (or at least, not so badly damaged?)
  • They have some pretty good diagnostics of the health of your hardware, like the battery. For instance, they have a measure of your battery’s “wear” - how much its max capacity has decreased from its theoretical maximum. It’s a very welcome feature after the silently degrading health of the batteries for my previous laptop (its original battery is nigh-unusable now).
  • There’s a yellow warning icon in my taskbar chiding me for not having a backup solution yet. Sheesh, I’m still investigating rdiff-backup and saving money for a NAS at my dad’s!

I haven’t dug too deeply into all the pre-installed stuff, because consumer focused OEM software is either crappy or driven by greed… often both. Some of Lenovo’s original stuff seems like it might not suck, so I’ll definitely have to investigate. The above are a few examples of things that have yet to annoy me - and in fact, I’m actually glad to have - which is pretty high praise for OEM stuff from someone used to Dell and HP.

As for the pre-installed software they didn’t make… The less said about their generous offer of a free 5 gb SugarSync account (as if that’s somehow a special offer), the better.

Light Table - an IDE that goes beyond text4

I’ve been watching Chris Granger’s Light Table project for a few months now (apparently, since April) and the more I think about it, the more I like it. According to their Kickstarter, the rough estimate for release is May 2013. When it comes out, it’s supposed to support Clojure (a Lisp dialect that initially ran on the JVM but has a variety of ports), JavaScript, and Python - all dynamic languages with powerful tools for instantly providing feedback. The link in the title of this post will get you to the version 0.1 demo, which currently only supports Clojure.

        Even though I like Emacs and have no trouble using a command line tool like Leiningen (aka lein), I see a lot of things to like about Light Table. I like the fact that lein is now built-in, and you can get started with a project right away. The Instarepl is fun to play around with, and it’s something that would be difficult for a purely text based editing environment. With the addition of the Table in the latest version is, things have gotten a lot more interesting. What they’ve done is emphasize the structure of functional programming through the structure of the IDE - you work with a bunch of discrete, self-contained units and gradually combine them into a unified organism (to take some inspiration from the preface to Structure and Interpretation of Computer Programs).

        Working in a buffer of code, if you find that you need to re-arrange some units, it’s a lot of work. Light Table presents these units as being completely distinct from each other, making it easy to navigate between them and move them around. I assume the final product will make it easy to travel between the different views of your code - I’d love to shuttle a bit of code between the Table for editing and the Instarepl for testing, for example, but at the moment that doesn’t seem to be possible. The constant documentation lookup presented in the Kickstarter pitch+video is nice, as well, and I think it would prove to be more useful than having a hotkey to go looking for a bit of documentation.

        The moral of the story, though, is that these are the kind of things you put together when you look at the logical structure of code. Extending Light Table in JavaScript, as demoed by Chris, actually winds up leading to more impressive extensions than most of what you see for Emacs. Emacs has tons of awesome extensions like Org mode; but your power starts and ends with text processing. You can make nice tables in Org mode - I’ll happily concede that you could write a similar benchmarking mode that outputs an Org file. That’s pretty simple in plain text.

        What about displaying the contents of a database on the fly? It seems to me that Emacs isn’t so great at displaying constantly changing data like that (ie as you change the code in the associated buffer), but I could be wrong. But until someone completely revamps the rendering engine in Emacs (which could be a long time coming) you just can’t embed a webpage in Emacs. Full stop. No, viewing it in plain text with w3m doesn’t count. No, converting the webpage to a pdf and displaying that doesn’t count (yes, Emacs can do that). I mean honest-to-goodness embedding the webpage, such that you can interact with it and see it true to life, including its JavaScript and other stuff that probably stumps text-based browsers like w3m.

        This isn’t just an abstract problem - displaying text with heavy formatting is basically impossible in Emacs. I’ve been looking at using Emacs to write LaTeX for papers, and the workflow is pretty crappy. You write your LaTeX document, you compile it and output a pdf, then you display the pdf in Emacs or in a standard pdf viewing program (on Windows, SumatraPDF is a good choice because it won’t lock the pdf file while you’re viewing it). Compare that to Gliimpse - personally, I’d like a version with instant transitions, but that’s just me. With or without transitions, it’s the same idea. You write your markup, you take a second to see what it looks like, you switch back to the markup to make some changes. Tada!

        Contrast that with the current workflow - you write the markup, compile the new version, open the pdf, check out your changes, make some adjustments, recompile, re-open/refresh the pdf… A dual-pane environment for writing Markdown is actually available online, but I’m having a hard time finding anything similar for LaTeX. If Emacs had a rendering engine capable of displaying LaTeX documents accurately, it would provide leverage for a plethora of useful tools, stuff above and beyond the demos Chris put together.

        Until then, we have Light Table.

Tales from the RSI crypt

It’s kind of strange to think about it, but I’ve probably been at a PC nearly every day for the last 12 years. I’ve never chosen my own computer setup, though - I’ve always made the best of whatever furniture my parents picked up. That changed a few months ago when I dropped more than $300 - three hundred bucks plus tax and shipping - on a Kinesis Contoured keyboard. First, a few words on my ordering experience with ErgoCanada - if you’re in Canada and you want some crazy thing like a $300 keyboard or $100 vertical mouse, do yourself a favour and order from them.

        As a child of the internet age, I thought it was kind of… quaint… to have to confirm my order over the phone. When you’re used to Amazon, where you click three times and receive your item two days later, it seems sort of old fashioned. But that assumes you know exactly what you want to order, and you know better than anyone else what you want. This wasn’t one of those situations. I was thinking of paying extra for the Linear Force model of the Kinesis Contoured - a version that basically doesn’t have a “click” when you activate the key. When I spoke to the lovely folks at ErgoCanada, they spent a good half hour asking about how I work and what my needs were before recommending I go with the normal model instead. They were completely right, so I’m really quite happy with the service I received.

        Back to the question you’re all asking yourselves - why in the world did I do this? I swear it has nothing to do with tech lust (ok, mostly nothing, it’s a really cool keyboard). I actually did it because earlier this spring my years of extensive (and unhealthy) computer use finally caught up with me. There was no gradual build up of pain, I just crossed some threshold and suddenly everything hurt. The triggering event for my right hand seemed to be buying a new mouse - but my left hand started to hurt at the same time, which doesn’t make any real sense. For the first few weeks, if I used the mouse any longer than an hour, I wound up in serious pain. This sort of explains my extreme prejudice against the mouse. Either way, this got to the point where I had to stop typing my notes in class and give up on doing the last programming assignment for my C++ course before the deadline. The minor split in the Microsoft Natural Keyboard 4000 just wasn’t cutting it, and after reading more or less rave reviews for the Kinesis Contoured, I took the plunge.

        I don’t want to complain too much, but in all seriousness, this absolutely sucks. I spent a few weeks when I started work in May just using a regular mouse and keyboard, and it was terrible. With a regular default Dell mouse, I was still getting about an hour of painless mousing. Typing wasn’t so immediately painful, but after a few weeks I realized it was starting to hurt. To solve the mouse problem, I picked up a Logitech Wireless Trackpad, and it’s pretty comfortable to use. For both the mouse and the keyboard, I bring them with me to work every day (though if I work late during the week, I may not bother bringing the keyboard home). If you haven’t heard me complain about how it hurts for hours after I type on a bad keyboard, you may think that’s ridiculous. But I don’t know if I could survive doing anything else. It’s certainly not annoying enough to validate buying a new keyboard, anyway.

        I’ve mentioned Workrave before, and if you spend any significant amount of time at a computer, I highly recommend using it. It’s configurable to whatever frequency and length of break you prefer, and it’s smart enough not to prompt you to take a break when you haven’t been doing anything. It’s also portable, so you can run it off a flash drive at your work computer. I care about your health, dear reader, and there is absolutely nothing to be lost by using it. The reality is that it’s terribly unhealthy to use a computer for hours without taking a break. Yes, you have important things to do. So do I. But I still take a 25 second “microbreak” every two and a half minutes, and I use the time to take a drink of water or stretch. It definitely helps. The microbreak can be taken passively, though - if you spend 25 seconds thinking without typing (which you probably will), you won’t be prompted. Over the course of an hour, assuming I was typing constantly, it would only enforce about 8 minutes of thinking time.

        For my real break, I take ten minutes away from the computer every 30 minutes of working (this could take more than half an hour of real-world time). These breaks are longer, and more frequent, than what I started with - but I’ve found that I needed them. You can take five minutes out of every hour for your break, and not take microbreaks at all. Or do 15 seconds microbreak every ten minutes. Again, in all seriousness, do yourself a favour by ignoring your innate feeling of invincibility, and taking some breaks now and then. Three cheers for preventative care!

        Things still aren’t perfect, though. My random mishmash of furniture at my homes really doesn’t provide a perfectly ergonomic office space (chair’s too short, desk’s too short, chair arm rests are too wide, etc.). But the trouble is that desks and office chairs can’t travel from my mom’s to my dad’s every two weeks, so I need to buy two of everything. That’s a pretty strong disincentive. Plus, you know, I don’t really have the cash to get the perfect chair and desk. I’m thinking of starting with a good keyboard tray, because they’re <$200 and that would resolve my desk problem. Aside from that, I’m looking into physio (I got a recommendation from the family doctor) or a chiropractor (my mom and my brother already visit one, so I could just go with them). Should make a decision on that before the end of the month.

        I’ll come back with a further update when I’ve found the perfect setup. Until then, please do ask for more detail if you need to be disabused of the notion that you’re immune to all of this! ErgoCanada has a really nice page about creating a good work setup. If you’re not working towards this, and at the very least using something like Workrave, I will be quite happy to argue with you.

Keyboard > Mouse4

vael:

I want you to take this post very seriously. This could save your right index finger.

http://www.lytebyte.com/2009/06/09/how-to-change-double-click-to-single-click-mouse-selection-in-vista-and-windows-7/

Recently I installed Linux at work, and I have found very little reason to continue…

Ha-har! You think this is the best thing you can do for your mouse, but you would be wrong. The best thing you can do is to stop using a physical mouse at all. At first I thought it would suck, because not every program is keyboard-shortcut friendly. Then I installed something called AT Mouse, and I’m happily mouse-less.

Allow me to direct you to their help page, which describes its usage. You can move slowly for accuracy, you can move quickly for speed (double-press), you can pop the mouse from one side of the screen to the other (press left/right when at the edge), you can quickly jump across the screen (repeated presses of 7/9/1/3) - all using the numpad on your keyboard. If you’re one of the few people in the world who type so many numbers that you use the numpad, good news: you can still use it when you want! Though it no longer turns on the “Num Lock” light on my keyboard, but if I find the mouse isn’t moving, I just press NumLock+/ and we’re back in business.

In all honesty, it’s responsive enough that I can browse the web with it (though I’ve never tried Firefox’s Caret Browsing, and got too lazy to try out the mouseless Firefox dubbed Conkeror). Enough that I can stop using my laptop’s trackpad, which is the bane of my existence. Check it out, ‘cause it’s free. I’m a bit upset with some of their keybindings of other keys, mainly because it messes with my AutoHotKey scripts. Luckily, there are many alternative options that use AutoHotKey, which provide the benefit of being easily modified to add some of the nice features of AT Mouse.

So, to summarize our options:

  1. Quick and easy
  2. One or two of many AutoHotKey versions
  3. Take one of the AutoHotKey versions and add your own features

I can’t ditch my existing customizations, obviously, so I’m going to cheat and steal take inspiration from AT Mouse to add things to one of the scripts I just linked to. It may take a while, because I have actually important things to do, but I’ll post here when I’ve got something worth using. Toss it up on GitHub or something, make life easy.