An Optimistic 2019
CPG Gray and Myke Hurley have been talking about assigning a theme to a year on their Cortex podcast, in lieu of new year’s resolutions. I quite like this idea, and I’ve decided to adopt it. I’ve decided that my personal theme for 2019 is finishing.
Taking Notes
I loved Yojimbo for many years. I still think it’s the most “Mac-like” app for taking notes and storing data. The best thing about it was that when capturing data with the hotkey, it would look at your clipboard before presenting you with a UI, and customize the UI for the data. It was fast, fit in perfectly with the Mac, and was rock-solid reliable.
Day One, Ulysses, and Bear
I’ve been using, and subscribing to, Ulysses, Bear, and Day One for a while now. It seems a bit silly, especially since they all do basically the same thing. On the surface they are all writing apps, but once I start to think a little deeper about them I can see where the differences lay.
It’s Not About the Apps
David and Katie are great, they really are. I’ve enjoyed MPU, like most of you have, for years. I’ve bought the books, the scanners, implemented the workflows, heck, my paperless workflow is still a derivative of David’s book. Most of all though, I’ve bought the apps. Lots of apps, and there’s a couple things to say about that.
Thinking it Through
My favorite new-to-me site is Farnam Street by Shane Parrish. I’ve been experiencing a slow change of interests over the past several months as Apple and tech related news fails to grab my attention. The last time this happened I lost more than a professional interest in the open source community, an area I left years ago and haven’t looked back. I can’t find it in me to care enough about iOS 10 to read the book-length treaties on it at MacStories, in fact the latest iPhone or iOS barely interests me enough to learn what’s in it and if it is anything of use to me.
Files and Folders
I started writing this post talking about how I was using DEVONthink, and, as often happens when you write things down, I started thinking critically about how I interacted with the application. I took a folder full of screenshots, walked through some usage scenarios, and checked and double-checked what I was actually doing with the application. Then I exported everything to the Finder.
Overload and Archive
A few years ago I adopted David Sparks’ paperless workflow. I installed Hazel and TextExpander, bought a ScanSnap scanner, and started dutifully scanning all of my paper that came in the mail. I scanned the water bill, my bank statements, and notices from my son’s second grade teacher about upcoming snack days. Over the years, and 2000 documents later, I’ve got a massive database of useless facts.
Desktop Setup For a Sysadmin
My Mac is a finely tuned machine. I have been using a Mac for Unix systems administration work since 2006, starting with a PowerMac G4, and have developed a smooth and efficient workflow. Most of the important tools are open source, and the ones that are not are very high quality.
Zen, Art, and Tools
I’ve been a Mac user since returning to the states in 2003, but I’ve been a Unix user for a few years longer. Originally, I was drawn to the Mac because it was a fantastic interface on top of a solid BSD Unix core, but as I grew more familiar with the platform, I became more drawn to the level of attention to detail. The Mac is a quality machine, but today I’m writing this on a Dell running FreeBSD.
Quicksilver
Personal Information Architecture
For my computer to be useful to me I need to be able to quickly save information, and then easily retrieve it later. Saving and retrieving information sounds like a simple enough use case, but doing both quickly and easily does not. The more information you have saved on your computer, the more difficult it is to effectively retrieve the information you need the moment you need it. Researchers and developers have been tackling this issue for decades, but so far no one has come up with a single best solution that works for everyone. What we need is a way to store and retrieve information without having to stop and think about the method or means of organization. The organizational method should provide an effective affordance without resorting to decoding the method itself.
Energy Saver Preferences
My MacBook at work sits on my desk all day and all night. When I sit down to work on it, I expect it to be ready for me, and ready to ask how high when I tell it to jump. I get a bit annoyed if I come back after a few minutes or an hour and find that the Mac has gone to sleep while I’ve been gone. So, I spent a few minutes in the Energy Saver preference pane to configure the machine to my schedule.
New Mac Essentials - MacVim
Investing time learning a text editor is a serious commitment. Over time, you find yourself reaching for the editor’s built-in shortcut keys everywhere you type. In my case, I do almost all of my writing in MacVim. Unfortunately, MacVim comes with a fairly steep learning curve that many are unwilling to tackle. Part of the complexity of Vim, from which MacVim is derived, is the configuration. Over the years I’ve come up with a setup that works for me.
Living In The Technical Past
New Mac Essentials - Quicksilver
Introduction
The Winchester Imperative
Major Charles Emerson Winchester III was a fictional character on one of my all time favorite shows, M*A*S*H. While he had many memorable scenes, the one that I remember best is the first episode he is introduced. Winchester was sent to the 4077th to assist while they were short handed, and he was not used to the incredibly hectic pace that the doctors needed to work at to save the lives of the wounded. The doctors tried to prod Winchester to move faster, but he responded with a line that’s been echoing in my mind lately.
Keyboard Driven Safari Update
Since writing Keyboard Driven Safari I’ve updated my list of extensions that make Safari my browser of choice.
Letter to Lotus Notes Developers
I have some issues with the design of Lotus Notes. I’m a relatively new user, I started using Notes in 2006, and at the time we were using 6.5 on Windows. I’ve since upgraded to 8.5.2 on Mac OS X.
On TermKit - Steven Wittens
I’ve been administering Unix machines for many years now, and frankly, it kinda sucks. It makes me wonder, when sitting in front of a crisp, 2.3 million pixel display (i.e. a laptop) why I’m telling those pixels to draw me a computer terminal from the 80s.
Wallpaper
Desktop wallpaper is a cheap trick. It’s only purpose is to make your computer screen look pretty, but I have yet to come across a photo or a work of art that I found to be anything but distracting. There is very little difference between UI elements like windows and objects depicted in a picture behind the windows. If you can see it, your brain needs to identify it.
Imperfect Dock
Brent Simmons recently wrote about his dislike of the iCal interface in the latest developer preview of OS X 10.7. In his article, he says how the torn paper present in the interface of the latest build would eventually force him to find an alternative, because he would always want to finish tearing the paper off. What caught my attention in the article more than iCal was how Brent deals with the Trash in the Dock. He constantly empties the trash, a habit I share.
Principle of Least Software
Use only the software that you need. No more, no less. Choose one application for each task, and become an expert on that application.
Keyboards and Wheels
I have one wish for the next major iOS release: full keyboard support. The iPad works with the bluetooth keyboard, and the original iPad came with a keyboard dock, but support for doing things other than basic text is sparse at best. My wish list is small, but meaningful. I would like to see support for all the keys on the keyboard, the ability to command-tab between running applications, and arrow key navigation for apps that include table views.
Back in Black
Reading and Readability
Readability is a subscription based service that allows you to read the text off of websites in a beautiful, clean, consistent interface. Since I started reading the web through Readability a while ago, I’ve appreciated it’s consistency, meaning that one site looks the same as the next, as the next, and the next. Reading articles on the web becomes more about the writing, and less about design. Jumping from site to site can be jarring, distracting, but when using Readability, the entire web can feel like a single book, one with many chapters.
Delicious Bookmarks
Word leaked out yesterday that Yahoo has it’s popular Delicious bookmarking service on the chopping block. I don’t personally have an account, not anymore, so the closing won’t affect me. Twitter tells a different story, my stream lit up with people upset about the decision. Yahoo’s leak, coupled with their announcement that the company is laying off 4% of it’s workforce right before Christmas, caused a fairly good sized migration from Delicious to Pinboard. I do have a Pinboard account, and I think I even have a few bookmarks saved, but its been weeks since the last time I visited the site.
MobileMe Mail Revisited
Spit and Polish
After spending a week with Linux as my sole computer, I find it very refreshing to come back home to my Mac. FedEx says my wife’s PC should be here tomorrow, so she can go back to Word 2007 and I can have Mactimus Prime back. It’s not that I didn’t enjoy working with Linux, I did, but I’ve found that once the geeky pleasure of discovering something new wears off, there are problems.
Tough to Turn Down
I’ve been using Linux for nearly a decade now. I first had a guy I met in a Navy school install it on my old IBM desktop. Back then, it was very hard to find the right drivers, and just about impossible to get on the Internet, seeing how almost every modem that shipped with a PC was a WinModem. X11 configuration was error prone to say the least, drivers for the sound card were hard to come by, and out in the rural English countryside where we lived, broadband was almost unheard of. Installing software could be a nightmare. Say I wanted to install a music player to listen to my CDs. The music player would have dependencies, certain libraries that needed to be installed, so I’d go and download the dependencies and try to install them, only to find out that the dependencies had dependencies! So, I’d download further dependencies, and eventually I’d be able to listen to my music. And then I’d try to launch something else, only to find out that in fulfilling the dependencies of the music player, I’d broken the dependencies of the other application that used to be installed and working.
Shell Script Style
My co-worker and I spent the better part of yesterday afternoon going through a former employee’s shell scripts to try to determine what they were and what he was trying to do. The script worked, for a while, but there were several mistakes. The mistakes were not in strict syntax, they were in style. Here are a few simple rules to follow to write great scripts:
-
Always, always, always start off each and every script with a shbang line:
#!/bin/sh
. Starting off your script with this line tells your shell where to find the interpreter for the commands in the script. Without this line, the script is using your user’s existing shell, the one you are typing in at the moment. This is bad because you are sharing environmental variables, and maybe changing environmental variables outside of your script, and not keeping it self contained and portable. -
Keep your script self contained: If at all possible, try to avoid writing files in different directories. Or, even better, try to avoid writing files at all. Use variables when you can, write files when you have to.
-
Avoid sourcing other scripts or files containing functions: I read about this method in Wicked Cool Shell Scripts, but I disagree that it is as useful as they say. Writing a custom function to send an email is a great idea. separating it out of the script you are working on at the time is not. Again, keep the script self contained. There are obvious exceptions to this rule. If your function is over 50 lines of code, and reused in multiple other scripts, then by all means, source it. If your function is 10 lines, create a vi shortcut for it and add it to the top of the script.
-
Comment tasks: Each block of code in your shell script is meant for a specific task. Add a comment for this block. Make it easy to read, and simple to understand. Assume that you will not work there forever, and someone else will need to read your code and make sense out of it. Also assume that in a year, you will forget everything you did and why you did it and need a reminder.
-
Keep it simple: Scripts should flow logically from top to bottom. If you are creating functions, make it obvious using a comment. Reading a script should be as easy as reading a book, if it’s not, then you are intentionally making things overly complicated and difficult to read.
-
End each script with
#EOF
: This is purely a matter of taste, but I find it adds a nice closure to the script.
The easiest thing to do is to create another script who’s purpose in life is to create new scripts. Couple this script with a vi shortcut (mine is ,t) to create the skeleton of the script and you can quickly create powerful, well formatted, easy to read scripts. Here’s an example of mine:
#!/bin/sh
#
# scripty.sh: This script creates other scripts
# Created: 25 Feb. 2009 -- inbound@jonathanbuys.com
#
##############################################################
# A place for variables
VAR1="Set any variables at the top"
DATE=`date`
ANDTHEN="Whatever"
# A place for functions
some_func(){
echo `date`
echo "Whatever's Clever!"
}
# Get down to writing the script
echo $VAR1
echo $DATE
echo $ANDTHEN
some_func
# etc...
##############################################################
#EOF
This article doesn’t talk about syntax, only style. There’s plenty of help with syntax available on the Intertubes. Also, this is my style, as you progress as a sysadmin or scripter of some sort or another, you are bound to come up with your own style that suits you. My style is based on the documentation at grox.net. My style has evolved over time, as will yours, but this is a good place to start.
The Coffee Cup
I’ve had this coffee cup on my desk at work for the past year or so now. It’s just a plain white cup, with the Ubuntu logo on it. I got it from CafePress. I loved it, for one, because the Ubuntu logo is great. Best Linux logo out there. I also loved it because as I was thinking about how to solve one problem or another, the cup was normally there with hot coffee waiting to be sipped as I pondered the solutions. Today I picked up the cup, walked towards the coffee pot, and dropped the cup. My wonderful Ubuntu coffee cup shattered as it hit the floor.
I loved that cup, so I didn’t want to break it. However, it seems appropriate, as today I also switched back to Windows at work. I’ve been running Ubuntu as my primary desktop at work for several months, and running XP in VirtualBox when needed. Lately, I’ve been needing the VM more and more, as I do more diagramming and planning in VMWare Infrastructure Client and Visio, both Microsoft centric applications. Also, rumor has it that in the next couple of months we will be replacing our aging Lotus Notes servers with Microsoft’s Exchange 2007. IBM released a Linux native Notes client which supports Ubuntu, and really works great. When we made the switch to Exchange, I was hoping to use the Evolution client that comes with Ubuntu. Unfortunately, Microsoft changed the MAPI standard for communicating with the server in Exchange 2007, and there is no supported Linux client. Which left me with two choices. Run Outlook in my VM, or moved everything back to Windows and conform to company standards. I debated this in my head for a couple of weeks, but in the past three days I’ve had X crash on me three times in Ubuntu. When X crashes, it takes all of my X applications with it, along with the data… it’s like Windows ‘95 all over again.
X crashing for no apparent reason was the nail in the coffin for me. I moved all my data over with a USB drive, and Monday I’ll format the Linux partition and fdisk /mbr from the XP recovery console.
I’ve really enjoyed using Linux, but honestly, it’s kind of relieving to be back in a supported environment again. There are still quite a few desktop tools missing from Ubuntu that are available on Macs and Windows. My current favorite so far is Evernote, with the aforementioned Visio running a close second. Launchy is nice… not as nice as Quicksilver or Gnome-Do, but nice.
Mentioning Gnome-Do brings up another point. Gnome-Do has been acting up lately, catching on something or other and eating up 99% CPU. The developers are aware of the problem, and are working on a solution. However, using Gnome-Do as an example, the very idea of what they are doing with “Release Early, Release Often”, completely goes against the grain of a business desktop. Any Linux desktop will contain beta-quality code, and when I’m relying on a computer to do my job, I can’t have it acting as a beta tester. Ubuntu is doing lots of cool stuff with 3D desktops and cutting edge software, but I don’t need it to be cool, I need it to work. Reliably.
One last note about why I’m not using Ubuntu at work any more. My computer is a Dell laptop, mostly used in a docking station, attached to a 22 inch monitor. I noticed after a while that my laptop was getting really hot in the docking station, and I couldn’t tell if Ubuntu was reading the docking station correctly or if it was displaying on both the internal monitor and the external monitor. When I popped the lid on the laptop, the monitor either came on suddenly or was on the entire time, and the keyboard was hot to the touch. In the Gnome “Screen Resolution” preferences I found that I could turn the monitor off from there, and I think that solved that issue, but I’m not sure. I’d hate to think that I was actually causing the hardware harm by running linux on it. I don’t want to spread FUD, but if its true, its true. When I’m running Windows, I don’t have that problem at all.
So, now I’m looking for a new coffee cup… something to inspire me, and be my companion in my little beige box. Whatever the new design is, it needs to be something that will last, something reliable, and something that’s in it for the long haul. Ubuntu has been good to me, both the OS, and the coffee cup, but in the end, they both broke, and I’ve got to move on.
How to Fix Linux
It’s been nine years since I first installed Linux on a computer of mine. It didn’t last long back then, since I actually wanted to use the computer for surfing the web, sending email, and playing games. Linux has come a long way since then, and now it’s a reliable desktop system at work. However, my system is reliable (and enjoyable) because I am a geek, and I know exactly what it needs to make it run smooth.
Essentials
Inspired by Mark Pilgrim’s Essentials post, I thought I’d come up with my own list of essential software.
Moving to Ubuntu - F-Spot
I mentioned in my last post that I was giving up my MacBook so my wife could go to college, and (until I can justify the cost of another Mac) that leaves me with her Linux PC. After the first few days of using Linux at home,as opposed to managing Linux servers at work, here are my initial impressions.
My wife’s PC is a gigantic Acer laptop, with a 1.6 Ghz centrino processor and a one gig of RAM. Hooked up to my external monitor, keyboard, and mouse, the PC runs Ubuntu surprisingly well. I can’t enable the desktop effects, but since Gnome has built in compositing support now that’s not a problem. The install went smooth, all the hardware was properly detected, wireless, sound, monitors… everything worked.
Development Environments and Software Quality
In OS X, there is a small collection of very high quality software. This is a fact, and there is really no debating it. Mac software that was developed specifically for the Mac is generally well crafted and performs as advertised, every time. In comparison, in Linux, there is a very large collection of freely available software of varying quality. Some of it is outstanding, check my last post on F-Spot for an example, and some of it leaves much to be desired.
Ubuntu Scanning
My wife has recently gone back to college, and, seeing as she’ll need it much more than I do, I gave her my shiny, beloved MacBook. As compensation, I’ve got her old PC, running Ubuntu, which looks great on my 22 inch monitor. How long this will last, I don’t know. I’ve just recently started writing seriously again, and moving all of my “really important stuff” into Linux should give me lots to comment about as I note the differences between OS X and Ubuntu. However, I’ve heard rumor of MacBook Pro product refreshes… hummm….
My Optimized Windows Workflow
I love Linux, I really do. Compared to the older UNIX systems like AIX, HP-UX, and Solaris (who is trying really hard to catch up) Linux is head and shoulders above the rest. The main reason for this is that a lot of really smart people also love Linux, and try their best to make it the best server on the planet. For the most part, I’d agree that we are succeeding on that front. On the other hand, to date, I simply can’t run Linux on my desktop. If there are servers down, or an application fault somewhere, I need to be able to rely on my tools to be there for me. That’s why I run XP on my laptop.
Contextual Search
My personal browser of choice has almost always been Omniweb. Omniweb and I went through a tough time for a while when it (she?) was crashing frequently and generally having a tough time of it. The Omni Group has once again straightened things out, and she (yea, I’ve decided Omniweb is a she) is once again fast, sleek, and powerful. There is one small item about the browser that bothers me though, and that is the lack of a search function from the browsers contextual menu that pops up when you select a word and right click on it.
Linux is not for MacBooks
I recently gave Linux my second, and final, serious shot at running it full time as my primary operating system on my MacBook. This time, it lasted all of three days before I dug out my Leopard install disk and began the long migration back to OS X. To preempt any questions on the subject, no I didn’t dual boot, and no, I didn’t have a good time machine backup. I was going to force myself to learn to do things the Linux way on my laptop.
Writing and Word Processing
A friend of mine is having a heck of a time with his new MacBook. He’s a recent convert to Macs, and as a philosophy student he spends a lot of time in Word. When he first bought his shiny new MacBook, he was surprised to find out there was no word processor in it. I pointed out TextEdit, which he quickly dismissed as not nearly powerful enough for what he needed to do. So, back to the store he went to pick up a copy of iWork ‘08, and started working with Pages.
Agility
To create the perfect datacenter, what would you recommend? For me, the perfect datacenter would be based on agility. We would be able to add new capacity when needed, and reallocate resources whenever needed, quickly and easily. We would be able to backup everything, securely and easily, off-site. We would use, whenever possible, open source software so we would not be constricted by licensing schemes. Would we have a SAN? Yes, most likely something very simple to administrate, like a NetApp. We would boot from the SAN, have no moving parts in the servers themselves, so we would have very few hardware failures. Whenever possible we would keep to one style of hardware, ie: all blades, or all 1U rack mounts, etc…
The Little Things
Today I was out in the data center and decided to boot into Linux to get some work done on my Dell laptop. I was busy populating our internal wiki with hardware and OS data from our servers (how many dimms, what size, kernel level, etc…), which is a lot of work, lots of copy and paste, formating, grepping, going back and forth between the terminal and firefox. Lots of moving around, but not a lot of cpu or memory intensive tasks, just basic office tasks. I’m using Ubuntu, with Gnome and the desktop effects turned on, and I got so frustrated that I booted back into Windows. I hate to say it, but I was able to get more done in Windows today than I could in Linux.