Starting to recover - tweaking Ubuntu for my injury


It seems like I'm getting a bit better, but healing is still a slow process.  I have the feeling it's going to be another couple of weeks at least until I'm back on the bike. But in other news, I've been learning a lot of code. And trying figure out how to adjust my keyboard and mouse to work more efficiently. I'm not making a lot of progress, there, but I did find a couple of tweaks to make things easier.

So it's been a few weeks since the injury, and I've been trying to take things easy so I can heal. But I've also been really busy at work, so I maybe haven't been taking quite as good of care of it as I should have.

It's weird, though - I don't think that I've been hurting too much from the injury, but more from the ergonomics of my home desk / work environment. My monitors are too close so I have to swivel back and forth between them, and my arms are kind of caught by the edge of the desk and at a bad angle with the keyboard.  But it's my left hand that's been hurting, and my bottom forearm, not up by the elbow where I broke things. 

The more I thought about it and tried to figure out what was hurting, the more it seemed to be from simply the type of and amount of typing that I'm doing. The stuff that I do requires a whole lot of shortcut keys and camelCaseSyntax which has been really using my left pinky. It's about every 5-10 key strokes that I have to stretch my hand quite wide and press down fairly hard with my pinky. That was putting stress both on the joints there and then through my wrist and up my forearm. 

Trying to Streamline Things With a Boilerplate Package

I've also been working a lot longer days. I'm trying to set up for moving to a 4 day schedule working longer hours so that I have more time to work on stuff for the marketplace. There are a ton of ideas that I want to do, and it's a lot of hours to make all of them. I know that I could technically do a lot of really lucrative add-ons, but without time, that will never happen.  This week I kind of messed up thinking it was the week to start, so ended up doing about 40 hours Monday through Thursday, then had to do a bit more stuff on Friday. Since we switched to the new project management system it was my second highest week for billable hours, so it seems like it will actually be good for getting the work done, too.

Part of that is the fact that I have been working on a new package to speed up concrete5 development. I asked a couple of weeks ago in the chat for Totally Random what kinds of things the core team does to speed up development on basic sites. They didn't really have anything, so I decided to analyze it a bit myself. What I came up with was to make a 'boilerplate' package that has a lot of the common stuff that I do on every different site. Things like common autonav templates, elements for displaying things, etc.

Package Controller

The package controller so I can verify that all the necessary items for the site are installed. I create stacks for things like the header nav and sidebar nav, footer blocks, etc. That way I can code them into the template without errors, and they are only editable by admins in the dashboard, not every site user like you get with global areas. Sure, you could set permissions on them, but that's a bit of a pain to set up with code (I'm not even really sure how) and tedious to set up if you have a ton of areas site wide. There are functions built in for installing attributes (and installing extras in an upgrade) with commented out samples for each attribute type, creating attribute sets, etc. Another for installing page types, one for installing single pages, and of course a theme. There's an on_start function with an html loader and code for loading html and css from the package folders into the header, along with file stubs for those. It also has page events there, so that it can run code on page controllers automatically. There's also a function for installing blocks, so you can dev with standard blocks that you've generated then customized with Designer Content or whatever, and re-use them easily.  

Another great thing about doing everything in a package is that deploying to a live server is much, much easier. You don't need to wipe a whole database when you make a bunch of changes locally. You can just put it into the package upgrade. So schema changes, new attributes, etc, it's all just a quick change to the package version, push to the server, and then an update on the server. That made things a lot nicer on the site we're doing now, I thought that they were in doing content changes already and so didn't want to deploy large changes that might wipe content. 

This should help things a whole lot when we do new sites. Really, kind of for any application. There are still a lot of things to work on, but it's a great start.

Generic Theme

The theme is set up with html5 boilerplate, modernizer, a few default page types and package page types that we use quite often. There are several breakpoints set, some overrides, etc. There are some common elements that we use all the time, too. One thing that I started doing on this theme was to use package elements more than $this->inc() in the theme.  It really offers a whole lot more functionality, since you can pass in variables and do a lot more logic. With this, I set up a lot of our little secondary navigation things in the header and the footer differently this time around. Since they're usually something that's edited, we've done just content blocks in a stack in the dashboard. This time I made package elements that actually highlight the overall section that you're in. I'm probably actually going to make that into a helper, which might actually turn into a block where you can add a bunch of different pages one at a time, with page / handle options.

Block Templates

One thing that always kind of takes time on sites is customizing the view of different blocks. We often re-do stuff, but haven't come up with a good way to really track what was done on each different site. When we need to find an old autonav or page list that's 'almost' what we need, it can take a lot of time. If we're keeping everything in one package, then grabbing earlier versions is easier. This won't help a lot right now, but over the months it will be great.

Custom Helpers

This will take longer to get working, but it should help out a lot too. I'm thinking about things like attribute displays, text formatters, better form helpers, etc. Being able to have these available and getting in the habit of using them will be great.

Future Plans

I want to keep expanding things, probably keeping everything in a github repo and branching it for different sites.  I want to release it for people to use, too, probably not with every bell and whistle that I could do, but with enough that people could start using it at their own shops and some good documentation about how to do it. I also want to create some custom attributes for it as well, maybe add some options to require certain packages on install.  I might also put up some options for installation, maybe some starting points and options to handle site defaults, like the company address, google api credentials, etc, using config variables and a dashboard page to update after installation. 

Giving up on Ubuntu on the Laptop

Anyway, most of Friday and the rest of the weekend trying to figure out how to tweak Ubuntu to let me do more with my keyboard, mouse and Wacom Bamboo tablet. I have to say that I was really, really disappointed with the options available.

Really, the keyboards have been the bane of my existence on Ubuntu. My laptop keyboard has never worked right since I installed Ubuntu. It would type for about 10-15 strokes and then stop for a second or to, then repeat. One thing that I'd done on that was to try installing a pirated version of Windows7. The OEM disks that came to re-install the os don't work, so I had to use a pirated version. Everything worked perfectly, so I knew that it wasn't a hardware issue. But then the OS started crashing and wouldn't update, so I tried out a different linux installation. I did some research and Mint seemed like it was going to be the best option. I first tried the Debian branch, but ended up not figuring out how to partition through the installer. Then I switched to the Mate desktop edition, and that seemed to be great.

It did work a lot better. I haven't used it much, but it all seems zippier. But then again, I don't have anything installed.

Trying To Customize Ubuntu's Interface

I have a whole lot more invested in my desktop than on the laptop. I kind of gave up on the laptop soon after getting it, so there aren't really any apps and no real data. On the desktop, I have an OS that I've been using for a long time, a lot of customizations, I really don't want to lose things on it. But what it had been doing is stopping inside of applications every few minutes. Things would come back as soon as you click into another application and back, but that really tore into production. Every few months I would search again, log into the IRC, post forum messages looking for solutions, but nobody ever had any advice.

That problem I am hoping went away today. I'm not really sure how, but I have installed a lot of different software trying to figure out how to configure extra keys on my keyboard and my mouse to run key commands. I tried several different things. 

  • BTNX - This was recommended by a lot of people, but it didn't seem to be maintained any more. I found downloads, but the documentation domain was taken over by a domain squatter. I installed it and got it working, but it didn't seem to work at all. It detected all of my keys, but didn't actually apply any of them to the mouse. I'm not sure if I did something wrong or what, since the documentation site is down.
  • EasyStroke - this seemed like it would be great, but I couldn't get it working at all, either. Though, actually, after a reboot, logging into gnome3 for the first time and then running it again, it seems to be working now. But then I tried to assign it to the secondary thumb (back/forward by default) and it didn't work at all. I couldn't get it working with the tablet at all.
  • Compiz Settings Commands - I was trying to use these with some keyboard command thing, but it didn't work. Now I can't remember what the command thing was. Kind of frustrating again.
  • Wacom Tablet Settings - these didn't really seem to do anything, either. There's a tab in the system settings for the wacom tablet settings, but it doesn't let you do anything for the key strokes. It's supposed to support mutli-touch, but that seems all sorts of wacky. The configuration for the buttons doesn't show any actual buttons when you launch it.  However, I did finally figure out how to get the tablet working in a windows VirtualBox VM. In photoshop, it hadn't shown the cursor, making it really hard to use. It turns out that disabling pointer integration gets it to work. It makes things quite a bit funkier switching back and forth quickly between windows and ubuntu really annoying. But for drawn out sessions in photoshop or illustrator, it will actually work now, which is awesome. That was one of my biggest annoyances with linux - not being able to use that in a VM. I tried to install a second copy of windows from another OEM disk, but it came up not recognizing the network or video card. I'm not the best with Windows, so I kind of just let it go. Now that I know how to get the VM working, I have a a 1TB drive that can free up. 

In the end what I ended up figuring out that worked to help quite a bit was to turn on sticky keys. So instead of holding down the left shift or ctrl, I can just hit the keys once and then hit the modifier. It only works with one key shortcuts, but for copy, paste, or camelCaseNotation it seems like it's a lot easier on my hands. Still not great, but a lot better.

I found myself really disappointed at the lack of current documentation or programs for updating keyboards. My keyboard is 8 or 9 years old, and it recognizes the calculator, log off, sleep and audio buttons. But that's it. There are 5 'favorites' buttons that you can use to launch apps in windows, and then 5 more on the left along with a zoom bar. I can't control any of them with software in Ubuntu. The same way with the mouse. It has left/right buttons, two thumb buttons, then a scroll wheel with a button and left and right tracking as well. But every thing that I tried to use to map the thumb buttons to different things didn't work. 

Why isn't there some simple interface to simply record and assign keystrokes? Hit a record button, then have someone hit the key 5 times, then hold down for 5 seconds, then type in the command or record the secondary keystroke that you want to turn into a macro. Btnx seemed like it would be the closest, but it didn't work and had no support or documentation.

I wish there were better things to use, but I guess that's one of the limitations of using the OS that I do. If anyone has any recommendations on how to set the extra keys up, I'd love to have some tutorial links that actually work.

I was also hoping to try speech recognition / commands out, but there was very little about that, too. It seemed like it was going to be a good solution, but for some reason there's nothing out there. I really don't get why that is, but it seems like a pretty big limitation. 

Healing Up / Getting Back To Riding

This is going to take a lot longer than I thought it was. They said about 3 weeks until it was mostly healed, but I think all the typing I've been doing and keeping it out of the sling slowed that down a bit. So I thought that I was going to be ready mid-way through next week to be able to commute normally, but there's no way that's going to happen. It was nice out Saturday afternoon, so I decided to try and ride the 5 blocks to the liquor store. That was seriously hard to do. Just simply taking off from a stop was almost impossible. I'm not good at taking off one-handed and with a messenger bag on putting weight on the left arm sent shooting pain all up and down the arm. I tried a couple times to use the front brake with my left hand and almost couldn't squeeze the lever hard enough to slow the wheel down. Doing a panic stop where I needed both brakes would be pretty much impossible. Riding with both hands on the bar was pretty painful, too. It might have been better with panniers, but I don't think that I'd be able to lift the bike. It would be safer for stopping if I had a fixed gear with a right hand front brake, but I don't and I haven't ridden fixed in quite a few years.   I don't think that the middle of winter, one handed, while injured is the best time to start up again.

So I'm thinking that it's going to be at least another 3 weeks before I'm able to ride again. That really sucks. With my next paycheck, I'm going to try to pick up a fork mount for my rollers so I can ride those inside to try and stay a little bit in shape. I am already slow enough, another few weeks and I'll be moving at like 5mph. I'll never be able to go out on anything faster than a pub crawl, and maybe not even keep up with them :(

It's been nice though, a lot of friends have offered to help, so I know that anything I need will be covered. But really, most things that I need I have within walking distance. Especially since I did some calling around and found out that the Fairview Riverside pharmacy has my meds for like 6 dollars. I was really worried about picking those up, getting to the Costco in St. Louis Park when I run out on Thursday. Being able to walk to get what I need is really great.

Honestly, though, it's not big stuff like grocery shopping or getting to the pharmacy or whatever that I need help with. Or, more, to the point, what's hard is stuff that I wouldn't feel comfortable asking any of my friends for help with. Putting on socks. Tying shoes. Stuff like that.

It makes me really worry about the future with how solitary my life is. The likelyhood is that my body going to end up slowly shutting down as I get older, and honestly that's going to be a really lonely and frustrating thing. Realizing how that future looks is seriously depressing. Days and nights fighting through pain to do simple tasks that I now take for granted.  Dunno, I just feel pretty bleak about it.

I ended up with a lot of bills and making a big payment on my credit card and to my regular clinic, plus bought some new ball chairs that are much nicer and have a frame and don't puncture. Oh, and a magic flight launch box. So I'm already pretty broke. It doesn't really matter since I have enough to cover food and beer and I don't need to go anywhere. Heh, really can't go anywhere. 

Kind of bummed about all of the time that I spent this weekend trying to get my systems set up. I really meant to do some stuff around the house, cooking and cleaning. Shopping. But really didn't get any of it done. Hopefully that doesn't mess up the rest of the week, one of the reasons that I'm trying to do the 3 day weekends is to dedicate a day to cleaning and cooking to make the rest of the week go better.

I was also doing some playing around with my Note2 this weekend, trying to get better with the stylus and drawing programs on it. Not everything has turned out, but I got a few that were OK. Here's one of them:

That's really all that's been going on around here. Or at least, all I'm willing to actually take time to type up...