I’ve taken some time to build a new look once again based off of the iMarc Boilerplate, which I’ve been spending time on. Feel free to check out the most recent changes there, as most of updates have been related to font and color choices and the dropdowns, all of which I’m not using here.
I threw together a bookmarklet that I’m using to work on the ‘rhythm’ of a page. All this does is overlay a simple grid to the page which can be clicked on to remove.
Each square of the grid is 16px by 16px (meant to correspond to 1em by 1em), however there are lighter lines at 8px and 4px. At some point, perhaps I’ll make this configurable, but for now, its just this one size.
Bookmark the following link:
I’ve been spending more time using Git lately. In particular, more time working on team projects with multiple people working on the same project at once.
So far, iMarc is a Subversion shop. So, its no surprise that when we’re working with a Github repository (for example) we treat it like subversion. It’s not perfect, but it gets the job done as long as everyone is careful… Unfortunately I wasn’t, and in the process of trying to clean up my mess I discovered a quirk;
git checkout HASH and
git checkout HASH . are completedly different commands.
I’ve also spent time working with mercurial, which overall, I liked considerably more. I felt both its abstractions and default tools were much better than Git’s, but GitHub pretty much ends the debate. No one (outside of kernel developers) would care about Git if not for GitHub.
Not that I blame Git for being a poor tool for me; Git was made to fulfill the needs of the linux kernel developers. Where they have hundreds of developers working in groups, most of my repositories are only touched by one to four people, rarely at the same time, and nearly never working on different features or branches. I never pull commits directly from other machines or users. It seems like Git constantly has to print disclaimers out on the command line warning me about what I’ve done. Documentation is a good way to compensate for complexity, but I’d rather be using a simpler tool in the first place.
I don’t blame Git for being powerful, but I do blame GitHub for using Git when its not appropriate. GitHub encourages
- Users to create lots of small, personal repositories, that only they’ll be committing against.
- Encourages users to use Git like a centralized version control system instead of as a distributed one.
- Adds another layer on top of Git (pull requests in particular) to introduce a new level of inter-repository complexity.
Previous generations of version control (like Subversion) were designed to be centralized; Git isn’t. GitHub encourages misuse of Git, and while I appreciate the benefits GitHub provides the community, I do wish they had chosen some other version control.
I mostly blame the community. GitHub looks nice and was an amazing upgrade from Google Code or SourceForge, but switching from Subversion to Git is fundamentally much more costly on a project basis than the look and feel of the site. GitHub is nearly a monopoly for open source project collaboration. I still hold out some hope for Bitbucket. For a while, I was updating both Bitbucket and GitHub, but Bitbucket seems to have so little hold on the community that it seems like a lost cause. Still, as I uncover more of the pain of Git, I may stil switch back. Maybe if Atlassian throws together an even better BitBucket client and perhaps bitbucket pages, I’ll be able to drag some people with me. Or perhaps GitHub should add support for Subversion so for small projects, we can all opt out of using Git and still be part of their community.
I switched over to Unity from using XFCE for years to try it out. Over the years I’ve tried Gnome, KDE, WindowMaker, Enlightenment, Fluxbox, i3 and even xmonad. The only two that I used for more than week were Fluxbox, which I used to use with Gentoo ten years ago or so, and XFCE, which has been my primary desktop since at least 2006.
However, I try to make sure I try out new things as they show up. I briefly played around with KDE 4 and Gnome 3, but didn’t care much for either. I’ve considered giving Linux Mint with Cinnamon or LXDE a try, or perhaps Elementary OS with Pantheon, but haven’t done either. What really drove me to try Unity again was some of the demos of Unity on phones and tablets from CES this year, as nearly everyone one of them did an excellent job showing how well designed the interface was, especially to the tasks at hand. So, I installed Unity on my ultrabook last week to give it a go.
I have very specific demands of my environment, perhaps more than most people. I think most of these requirements are a result of using Linux in the first place; I’ve grown accustomed to being able to change or fix nearly anything about my system for years now and have had plenty of time to discover exactly what I want:
I want to know what’s open
This requirement seems to be the least popular, as Windows 7, OS X, Gnome 3, and even Unity have all obscured this information if not flat out hid it. Most of these follow a similar pattern:
- Reuse the same area used for shortcuts for common applications to show which ones are open, but providing some kind of additional indicator attached to that shortcut.
OSX uses one dot as long as there’s at least one window. Windows uses one kind of border if there’s one window, and a different border if there’s two or more. Unity uses arrows very similarly to OSX’s dots, except will show one, two, or three on the same icon.
First off, open windows do not indicate active processes. For example, Chrome will run another process for each of its tabs, but only take up one window. Other processes, such as Pidgin might be running without a window button at all.
These window buttons represent my personal activities or tasks. If I open a terminal, it’s because I’m planning to do something there. If I open a second, it’s because I know I’m still using the first one. I like to clearly see the list of my open windows because its a list of my current tasks that I can use to keep track of what I’m doing. I configure Pidgin to open incoming messages directly into new windows so that even if I ignore them to finish testing a code change, they’ll be visible in my list of things I’m doing until I intentionally close them.
Most of the time, I run
- a couple terminals,
- two or three GVIM windows,
- at least one browser window per monitor, and
- anywhere between two and eight Pidgin conversations.
With OSX, I’d only be able know about four windows. Windows, I’d know about eight. Unity, I can see up to twelve, which is high enough for GVIM and terminals, but falls short for tracking pidgin conversations.
XFCE doesn’t artificially lower limits like this. If you’re willing to settle for just an icon, you can have practically as many as you’d like. I prefer seeing the window titles (something that’s been removed by all of the others) instead of the icons, and often list them down the left side of the monitor. Like this, I easily have enough space.
Window placement should be keyboard controllable
One of the best usability features of Windows Vista was the hotkeys it provided for window management. Win+Left, Win+Right, Win+Up, and Win+Down are intuitive, easy to use, and were even designed well for multiple monitors. Being able to quickly position to things side by side is critical for me.
So critical, that since this wasn’t part of XFCE (until recently), I wrote a script to provide this functionality for Linux. Initially, it only used wmctrl, but now it also uses xdotool to get information about the focused window and resize and position it properly. I use it constantly.
Unity provides some shortcuts (Control+Win and an arrow key) however they didn’t quite get multiple monitor support right. Also, they don’t always work- they won’t reposition window if it can’t also be resized.
This functionality isn’t part of OSX, but other people have written small apps to provide this. I remember using 2Up previously, and a colleague has mentioned Moom.
I should be able to launch applications by typing only
Luckily for me, this is a popular thing these days; originally I had to rely on launchers like Launchy to add this functionality. Windows Vista added this to the start menu, and Windows 8 has improved it further. I don’t even know how to launch many OSX applications without using Spotlight. Unity also pushes the limits of a keyboard based launcher with Dash, providing access to applications, files, search results, or even products on Amazon. Unity also provides the HUD, which allows users to use the keyboard to search and select dropdown menus inside of applications. (OSX has this too, although I never remember the shortcut.)
Amusingly enough, this also isn’t a strong point for XFCE. Still, I use Synapse with XFCE without any issue, which provides enough functionality although it isn’t as integrated as what the others provide.
I’ve started playing DayZ, and have been working through building a quick web app for marking up a map for use with that game using the Google Maps API (v3.) It’s going pretty well, and hopefully I’ll finish up that project in the next few weeks and release it.
Second, I had my hand in getting the iMarc Boilerplate released on GitHub, so there’s that. I’ll have to update the markup and CSS for this to be in sync with the Boilerplate, as it is a great starting point.
Fairly busy weekend for me: I released Unframed, a chrome extension for looking at the page structure and classnames, and BecauseMinecraft, a dirt simple GUI-less Minecraft launcher for windows only. Feel free to check both out.
So, I’m slowly making progress. I have taken a few more steps to improving this workflow, but overall, I’m still skeptical. I may yet move this site to my VPS and setup Jekyll there. I’ve also started to look at OctoPress another other engines again, as I’m starting to realize how many ‘rough spots’ there are.
In particular, you may notice that tagging is broken. Anyway, we shall see.
The project I’m spending the majority of my time on this week and last week is working on updating iMarc’s boilerplate – the basic HTML and CSS we use starting new projects – up to HTML5 elements with an eye towards responsive site design.
Previously, we had
- A CSS Reset, based off of Eric Meyers’, which all sites were expected to have.
- A set of base CSS rules that were more or less “sane defaults” for most elements we use.
- An HTML file with lots of sample markup for testing the CSS on a given site. This fufilled two purpoess – to make sure we have a ‘complete’ set of base styles on sites, and to make sure any content added via WYSIWYG fields in our CMS would be displayed properly.
When we started moving towards building reponsive sites, we started using the HTML5 Boiler plate. The HTML5 Boilerplate was a great way to start, but we wanted something leaner. I revisited Eric Meyers now updated thoughts on a reset and sought out normalize.css, took a look at inkLing, and a few others.
My original goals were
- Support all of the HTML(5) elements that are implemented in IE, Webkit, and Gecko. We decided to go forward with using HTML5 tags on all new sites (and using the html5shiv to add support for IE7/IE8.)
- Keep the CSS file short. We noticed that that once a CSS file reaches, say 2000 lines, laziness kicks in and lots of rules get appended that should be organized appropriately.
- Implement markup that’s close to what we use most places. I looked a lot our recently finished sites and looked for what we did the most.
This commit is probably the closest to the state this was at this point. However, after working with this further, I realized I should revise my goals to
- Support only the HTML(5) elements that iMarc uses on nearly every site. Anything we don’t use, don’t reset. This substantially cleaned out a lot of CSS that wasn’t going to be important most of the time.
- Keep the CSS file short. No serious change here.
- Implment markup and CSS that reflects the ‘greatest common denominator’ of our typical sites instead of the ‘average’ of them. This was a big difference as well.
We’ll run through with this pass next, and it will probably influence our standard, as things like having a
div.site in between the body and parts of the layout for widths, centering, etc., seems like a practice we should expect and implement everywhere.
Anyway, for now this site is based off of the earlier version of the boilerplate, but once we’ve ironed out some more I’ll update this site to make use of it as well. I’d also like to recommend the Firefox addon CSS Usage, which was a great way to identify which tags and selectors were in use on a given page.
I hosted my site on Tumblr for the past couple years. Before that, I was using Posterous (which I liked more, but lacked the ability just enough customizability to annoy me.) Before that, WordPress, which I still find myself using for odd quick projects for friends. Before that, I tried a little of everything: TiddlyWiki, Trac, Textform, Drupal, Twiki, wikka, MediaWiki, even phpBB.
However, this iteration of BecauseRobots is built on top of of Jekyll and GitHub Pages. I did try out Octopress and Jekyll Bootstrap, but I’ve chosen to roll my own on top of Jekyll as I go.
So, please bare with me as I rebuild the site.