The lows are low, but the highs are home

Month
Filter by post type
All posts

Text
Photo
Quote
Link
Chat
Audio
Video
Ask

February 2013

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
Feb 27, 2013
#software
Summer 2012 in Games

The last section on my Summer 2012 to-do list was video games. Just for fun, I set aside five games I would have liked to finish. Just in case I fell into a time warp and found myself with infinite time and really needed some way to relax and keep myself entertained. Literally none of these got finished, and that’s okay. I don’t know what games I did actually play, unfortunately - it’s been too long.

  • Final Fantasy VI Advance (GBA)

        I don’t think I played the game all year, still halfway through.

  • Dark Souls (PS3)

        I set it aside when our PS3 died, and have yet to go back. I think I’m around Gapping Dragon…

  • Nier (PS3)

        I’ve finished the first playthrough recently, and continue to be in deep romantic love with the soundtrack. It’s a beautiful gem of a game, albeit one with a lot of rough edges. Probably a few entirely rough, even unhewn sides if we’re being honest. I’ve forced myself to do all the sidequests, with only two left to finish (one of which is absolutely awful, and the other of which was couldn’t be completed after a certain point in my first game and has yet to appear in the second) so I’m extremely overpowered. Because of that, in a couple of hours I’ve nearly finished the first New Game+, which is really more like 60%-of-the-game+, and it’s done a few rather interesting things. I don’t want to spoil it, but you really do have to play it more than once.

  • Xenoblade (Wii)

        About halfway through this one as well, and I think it’s probably the first true successor to what PS2 era jRPGs were trying to accomplish. Ni no Kuni (PS3) is another, but it’s newer so shh. Enjoyed the heck out of it, and I could generally be found grinning ear-to-ear as I ran around the world and completed stupid sidequests. The hour-at-a-time inventory management sessions were less joyous, but I suffered them gladly. Highly recommended.

  • Last Story (Wii)

        A bit less far in this, but early impressions are good. I missed the days when jRPGs had stupid frog catching minigames (FF IX and Quina, ‘nuff said), or rewarded you for smacking your head on signs and slipping on oranges. The fact that you can hit your head on low-hanging signs makes me really happy. There are character animations for walking through tight spaces, and lots of other things. It’s very, very polished. However, in retrospect a lot of things in the first few hours were too simplistic to be fun… My brother and girlfriend have both finished it and enjoyed it, so I suppose I’ll go back to see if I can find what they saw in it.

Feb 25, 2013
#gaming
Summer 2012 Projects II

Welcome to part two of the post about my summer projects! Odds are the only person who will read this is me from the future, so hello to future me. If you’re not me, you are probably going to be bored. Just so you know.

Post-summer stuff

  • Automatic backup - NAS?

        I got my mom an NAS so we could share files with each other, backup to it, stream media to various things, etc. We haven’t really gotten into the optimal usage of it, but it’s been useful for me. I’ve offloaded all my music and other media to it, and just go without when I’m away from home. I’m sure I could access the files elsewhere, but surely that would require uploading from our home network? Which is a hard sell with limited bandwidth. Also, around Christmas I got us a one year CrashPlan+ account for offsite backup (on sale 94% off!), which makes the NAS slightly less important. Nothing set up at dad’s yet, though.

  • Website - matthewdarling.com
    • Make a professional CV

        As of January 2013, matthewdarling.com exists by leeching off of Vael’s web hosting. Yay! As for the CV… I… really need to do that, and I intend to do it before the end of reading week.

  • Home Theatre PC (henceforth HTPC)

        I initially gave up on this one, because I decided it wasn’t worth spending my own money on. It also wasn’t a whole lot of fun to mess with because there seemed to be so much work involved, even though it’s simple in theory. However, as of 2013, I’m very close to having a system set up on a Raspberry Pi at my dad’s house…

Stuff I gave up on

  • COMP 2004 Assignment 4

        I didn’t do the last assignment for my C++ class, because I was just noticing I had RSI when it reached an intensity that has thankfully not been the norm. I knew there was no way I could type enough code to finish the assignment, which was fine because our grade was based on our best three assignments. I just studied the material in theory rather than in practice. Thankfully, I did fairly well on the final exam.

        Fun fact: I’ve never typed any templated C++ code, but I have written it in pencil for the final exam. Anyway, I wanted to go back and do it for my own benefit, but. Eh. Heavily OOP C++ code. Having to write eight constructors + destructors, yet another linked list class (this time with templates!), a display based on ncurses. Educational, sure, but incredibly tedious.

  • Install and test out Conkeror

        I cancelled this one because I couldn’t, for the life of me, figure out how to actually install and use Conkeror. I was obviously missing something important, somewhere, but after trying a few things and reading a few wiki pages I decided it wasn’t worth it. Still, an Emacs-esque browser that from my understanding supports my wacky Firefox extensions and userscripts and so on… Actually, I recently discovered it doesn’t support LastPass, which pretty much makes it a no-go for me. Ah well.

Stuff I didn’t touch

  • Copy ATMouse in AutoHotKey

        I guarantee there’s a lot of similar software, but I thought it would be fun to make this. However, I’ve found an alternative solution that you’ll read about when this series is done!

  • Combine f.lux, the Ikea Dioder, a hack that makes it USB-based, and write some messy Python code/shell script to create lights that change with the time of day

        I still really want to do this, but a more robust home automation solution may be a better route to take.

  • Miranda IM - fix the Xfire plugin’s interaction with the Metacontacts plugin

        This seems to have resolved itself, or I’ve just found a way around the issue, but I was originally going to go into uber C++ debugging mode and write whatever patches I needed to get them to play nicely.

  • Set up the perfect home office

        If I had the money for this, and to do it at both of my parents’ houses…

Feb 22, 2013
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.

Feb 20, 2013 1 note
#programming #software
Summer 2012 in Tumblr posts

So I had a really awesome job over the summer! And I did fun stuff. And I didn’t write nearly enough because I’ve never had a full time job before. And then I went back to class in the fall, and I intended to write about how the summer went, and I didn’t. So now I’m doing that, in a series of posts about different things I wanted to do, things I actually did, and so on. Not sure how many there will be, but I’ll space them out. Once it’s done, I can move on to the fall.

        At the start of the summer, I created four different to-do lists and added very few items to them later. So my first few posts are going to be about how I did on finishing those tasks. I actually first did this for Reading Week last year, which I sort of mentioned in this post. Anyway, Reading Week is great because it’s totally unstructured time. So I set out a list of stuff I could do with my time, including productive stuff that needs to be done and fun stuff I’d like to do. Importantly, the list has more stuff than I could conceivably accomplish.

        At any given time, I pick whatever’s on the list that sounds like the most fun. By the end of the week, most everything is done, and it’s really relaxing because I’m always doing something on the list. It doesn’t matter if I don’t finish everything - I get through most of them, or I realize many were stupid, or whatever. So I made four lists like that last summer, and the first one I’m going to subject you to is posts I wanted to write. I set aside seven posts, and I wrote five of them (eventually), which is… eh for a four month period. The full list of posts I wrote:

  1. PAX, socializing, and the party April 25th
  2. Work with Mako + pictures
  3. Keyboard and ErgoCanada
  4. RSI (combined with above)
  5. Light Table

        Then the two I didn’t write:

  1. Why Emacs?
  2. AutoHotKey practical examples (I know roughly how to do most of these, but haven’t written the code or record a macro)
    • Having ctrl+backspace and ctrl+delete work everywhere in Windows, rather than sometimes inserting unprintable characters (this presumes the text area supports ctrl+shift selection)
    • Firefox add unsorted bookmark with keyboard shortcut (the default ctrl+d puts them in Bookmarks Folder, unlike the default behaviour for clicking the star in the address bar, which places them in Unsorted Bookmarks - I think I recorded a macro for this)
    • Windows Explorer focus the address bar with keyboard (this I have done; there’s an existing shortcut, but modern browsers use a different key, so it’s just a simple remapping)
    • Explorer Ctrl+b to go to favourites folder (this is useful because then you can just start typing the name of the place you want to go to select it and hit enter, instead of mousing over to the side panel)
    • Console2 and WinActivate to send focus back to the previously selected window (I was using some slightly borked code to have a “dropdown” terminal as in PC games, and it didn’t return focus when you sent the window away)
    • Toss the lot on GitHub

        Now that I write it out, that AutoHotKey post wouldn’t be so hard now that I have a good macro creator. Hmm. Maybe it will happen after all. I don’t feel the need to blather about getting into Emacs anymore, though. There’s way too many of those out there.

Feb 18, 2013
Class Presentation about Language Abilities and Brain Degeneration

This semester, I’m taking a class called Language Processing and the Brain with Dr. Ann Laubstein. There’s been some pretty interesting things so far, though admittedly we’ve covered mostly psycholinguistics (psychology of language) rather than neurolinguistics (language and the brain) material. When we’re not reviewing the material from last class (which I suffer through for the sake of people who find it helpful), I’m pretty engaged with the material. Specifically, I want to argue with everything. That’s… probably good, but I think there’s other fields for me in the long term.

Side note: I realize I haven’t posted about what classes I’m taking this semester. The reason I haven’t posted about this semester is because I still have to post about last semester. And the reason I haven’t posted about that is because I haven’t posted about my summer. But I’ve written that post! I just need to break it up into a series of posts because it’s long.

Anyway, back to the point: one of the required projects was a group presentation. We were assigned groups by last name, and my group presented this past Tuesday. The task was to find a recent paper that had made a significant contribution to the field, and present it to the class in ~10 minutes. On the advice of our TA, our group went with the paper Cognition and Anatomy in Three Variants of Primary Progressive Aphasia (note: paywall, sadly). I realize no one has any idea what that means, but I’ll get to that in a minute.

You can see all the materials over on UniNotes. The “Merged notes” documents have the notes each person took while preparing their section (plus full paper notes from me), so that’s the best free explanation you’re going to get about what the paper is about. The images are the graphs I created for the presentation, using the data I pulled from the HTML version of the paper, which is in “aphasia.csv”. Which took way too long for me to reformat for proper processing (Me: “Why is this being parsed as ordinal data rather than numeric…?” Professor Biddle: “Great question, let me know when you find out!”). Then the code for producing those graphs is in “aphasia.r”, which was a five-hour long foray (plus time spent looking at online help and such) into programming in R.

Then there’s the presentation itself. I was handling the introduction and conclusion, and by virtue of being relatively comfortable presenting, spent too much talking about. We put the presentation together using Prezi, because the first group that presented used it, and now the entire class is forced to. I mean, it would just be rude to assault their eyes with PowerPoint slides. So that’s available online here, if you’re curious. In case Prezi dies, I’ve got it on UniNotes too. Anyway, you can see there’s very little text in the sections I handled, which makes the whole thing pretty confusing for anyone who wasn’t around for the presentation.

Anyway, I actually like this paper. Their results are genuinely compelling, to me anyway: “damage in areas X, Y, and Z led to problems X, Y, and Z”. “We’re pretty sure Area Y is related to Problem X, so that suggests Areas Y and Z are related in some way to Problems Y and Z.” “Based on genetic profiles, the underlying cause may be X rather than Y.” Direct links like that are pretty rare, generally speaking.

Feb 16, 2013 1 note
#language #neuroscience #Carleton
Feb 13, 2013 1,871 notes
#personal
Feb 2, 2013 21 notes
#gaming #Pokémon
Next page →
20162017
  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December
201520162017
  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December
201420152016
  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December
201320142015
  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December
201220132014
  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December
201120122013
  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December
201020112012
  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December
20102011
  • January
  • February
  • March
  • April
  • May
  • June
  • July
  • August
  • September
  • October
  • November
  • December