Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

March 21, 2008

FreeMarker TextMate Bundle

I had been using this for a while, and it only recently occurred to me that it might be useful to someone else. So, I finally motivated myself to create a Google Code project for my admittedly still very minimal Freemarker Bundle. I posted about it a few days ago on the mSpoke blog, but I figured I might as well give it a shameless plug here, too.

Here’s the first version. If you find it useful, drop me a comment here or there, and suggestions are most certainly welcome.

March 6, 2008

YATTMBU

Yet another Trac TextMate Bundle update. This one adds a hot key for formatting text as strikethrough, which was a pretty obvious oversight in my last update! It works just like the bold and italic hotkeys.

You can check out the (mostly uninteresting) Change Log, or just go grab version 1.1.3.

March 5, 2008

Small Trac TextMate Bundle update

I’ve been using Trac across two jobs for about the past 5 years, and until a coworker pointed it out to me yesterday, I never knew that it had wiki syntax for strikethrough by surrounding text with double tilde. For example, ~~Text to be struck~~ will appear as Text to be struck.

I ended up using it quite a few times over the past two days, so I decided to add a scope to the TextMate bundle. Now, anything that is struckthrough using the double tilde syntax will be scoped in TextMate as markup.deleted.tracwiki. I chose that over markup.strike or markup.strikethrough because many of the themes I have do not have formatting for the latter two, but do for the former.

Check out the Change Log and grab version 1.1.2.

November 19, 2007

Trac TextMate Bundle

I've updated the Trac TextMate Bundle with a major bug fix, and some updates to wiki CamelCase link recognition, including the ability not to link a CamelCase word by prefixing it with !. Thanks to sdevore for reporting the bug, and to Adam for suggesting the addition of preventing CamelCase links.

See the Changelog here, or download the update.

September 24, 2007

Feedhub.com goes live!

It’s been a lot of hard work by the very dedicated and talented folks with whom I work, and we’re all very excited to get it out there for everyone to try. So, if you use or know about RSS, go check out feedhub.com. We hope you like it!

June 12, 2007

Why people hate computers

The other night we stopped at Lowe’s on our way home to return the one unused box of tile from our bathroom remodel. That’s one box containing twelve tiles. One box, twelve tiles. The new employee working the returns counter started entering information into the returns software on the computer (Having new employees work the return counter because no one else wants to is a bad idea, imho, but that’s another post altogether).

She asked us the standard questions, “Why are you returning the tiles?”, “Phone number?”, etc. She scanned the barcode on the box, and then looked thoroughly confused as the software asked her a question she didn’t understand. “How many units??”, she mumbled. She asked several other employees about it, and after several who didn’t know whether she should enter one or twelve (one box, twelve tiles), they settled on twelve.

Unfortunately, that turned out to be the wrong answer. I learned later that because their inventory system stores the tiles as units by box, the correct answer was one.

Thinking she had entered the right answer, the employee continued through the software to a point where it informed her that she was about to accept a return of twelve boxes of tile.

Oops, but no big deal. She would just need to change the return quantity, or in the worst case, cancel the return and start over, right? Wrong. When she tried changing the quantity to one, the software created a new return item of one box of tile while also keeping the existing twelve boxes. Now the system thought we were returning thirteen boxes of tile.

After several employees came by and stared at the screen, and several calls to managers, who also tried changing the quantity to one (after a while, the system thought we were returning more boxes that we originally bought!), the conclusion was that someone needed to MIS. M … I … S, cue ”Theme from Mission Impossible” (with apologies to Lalo Schifrin).

At this point I thought, ok, she’ll make a quick call on the store phone, and an MIS geek (I can say “geek” because I am one), will swoop in, hit the magic keystroke, and all will be well again.

“What’s the number for MIS?”

“1-800-…”

Uh oh.

It turned out that “calling MIS” meant calling some central Lowes MIS division, probably located inside a concrete bunker, deep inside a mountain somewhere (there’s that theme song again).

She picked up the phone and called. After explaining the problem several times, and being transferred to the “right” person each time, she reached someone who was able to help. Apparently the tech support person on the other end had to use some administrative interface to the massive returns system to delete the return record.

About an hour, and several tons of frustration (ours, and the employees’) later, we had successfully returned our box of tile.

In my experience, the biggest reason people hate computers is because of poor alignment of the computer and software with the natural flow of their jobs and lives. Instead of being designed to function in a way that flows with and augments their lives, most software forces people to change the way they already do things. Worse yet, when the software doesn’t behave intuitively and the user makes a “mistake”, there is no easy or obvious way to correct the mistake or get help, either from the system itself or from a human deep inside a mountain somewhere..

May 28, 2007

New favorite screensaver

My colleague, and fellow Mac advocate, Evan always seems to find the coolest screensavers. I’ve been running several of his finds over the past couple of months, until I stumbled onto EuclideanGarden a few weeks ago. So, here’s a bit of payback, Evan. It is definitely my new favorite. Static screenshots just can’t do it justice. Trees grow, leave, bloom, turn, and even sway in the wind. Beautiful.

Well done, Phillip Nguyen.

I’ve always had a fascination with fractals and L-Systems, and I have to imagine that is what EuclideanGarden is based on.

May 6, 2007

Trac TextMate Bundle update

Had to write a few more Trac wiki pages recently, and in the process I took a little time to update my Trac TextMate bundle. See the Change Log for details, and snag version 1.1 here.

February 25, 2007

Tube 2.0

I just ran across this post about a guy using Twitter to broadcast real-time London Tube delays. Now that’s a very useful thing to do with Twitter, and is definitely headed in the direction I had in mind for using Twitter as a message delivery API.

I’d sure love to have this for the 1B and D buses that I now take to and from work every day. PAT are you listening? No? I thought not.

February 21, 2007

TextMate Trac bundle

I’ve been an avid TextMate user and fan for the past couple of years, and I’ve also used Trac at several jobs now. I never like editing anything substantial, like Trac wiki, pages in a web browser text widget, so I use TextMate’s “Edit in TextMate” plugin exhaustively. Over the past couple of years, those things led to my creating and evolving a Trac bundle for TextMate.

It’s still pretty simple, which I think is a good thing. I haven’t had a need for it to do anything very complex. So far, it has a fairly decent language grammar for Trac wiki syntax that defines some reasonable scopes, following the conventions of markup scopes defined in other bundles. It has several useful wiki formatting snippets and commands, from simple stuff like bold and italic, to a rudimentary snippet for creating tables. It also parses wiki headings (e.g. == My Heading == ), and wiki links as TextMate symbols, so you can jump around in wiki pages easily using the symbol pop-up.

If you’re interested, head on over to the Google Code project page and try it out. Please let me know if you find it useful. Suggestions are always welcome, too.

February 14, 2007

Adium is great, but ...

... why does it eat so much of my laptop?

Over the past few years, I’ve bounced back and forth from iChat to Adium more times than I can count. Until recently, I had been using iChat for quite a while, mainly due to only needing AIM, and the fact that Adium eats my laptop. Many of the folks at mSpoke use Yahoo! Messenger, so I switched back to Adium for integrated AIM/Yahoo messaging. Here’s a snap from Activity Monitor:

Adium eating my laptop

That’s with Adium as the frontmost app (snapped with the wonderful Capture widget). I’m using some very simple themes, and when I snapped that, I had no chat windows open, and my buddy list was hidden. Adium consistently hovered around 11 - 13% of CPU time.

Adium developers, what’s going on?

For the record, the CPU usage is similar when my buddy list is visible. The memory usage seems reasonable, but it tends to shoot up when I have message windows open.

Here’s another snap with Adium not as the frontmost app.

Adium eating less

Interestingly, in the background (with the same theme settings, no chat windows, buddy list hidden) it eats much less CPU, from about .8 - 1.2%, even though the number of threads is the same. That’s much more tolerable, but it does make me wonder what the heck is going on inside the app when it is in front.

Don’t get me wrong, I really do like Adium, I just wish it was a bit less resource hungry, especially when I choose to use (what I perceive to be) very simple settings.

February 8, 2007

Design and Engineering

A few weeks ago, a colleague pointed me to this article, which led to several other sites, including this one. This colleague and I have discussed the issue of the role of graphic and interaction design in software before, and we tend to agree that there’s a lot of embarassingly unusable software out there. However, I feel very strongly that putting the blame solely on programmers misses many of the more important aspects of the problem. It’s an easy cop out to point at the people who wrote the code and say it’s their fault.

To understand where I’m coming from, consider this question: Who created the specification for the visual and interaction aspects of the software to which those developers wrote the code?

One possible answer is that there was no specification for visuals or interactions—not even a napkin drawing. If there was no specification, then it's extremely likely that no one has really thought about it, and by no one I am including the domain experts, customer liaisons and reps, managers (both technical and non-technical), and developers. If no one has thought about it, it seems a bit ridiculous to expect a beautiful, elegant, and highly usable interface to emerge out of sheer hacking or luck. Unfortunately, in my experience, that seems to be an acceptable expectation in industry.

Yet another possible (and typical, in my experience) answer is that the developers themselves created a specification, either in some document or set of drawings (paper or electronic), or in an ad-hoc way, possibly even on the fly as code was being written. One big problem with this is that developers are not trained in design. They are trained in algorithms, data structures, network protocols, etc. In advanced programs, that training can extend to object modeling, software architectures, and even software project management and the business skills necessary for running a software company. Their training may even include the dreaded GUI programming course(s). In my experience, however, it is extremely rare for any areas of the typical computer science or software engineering curriculum to include interaction design concepts such as mental models, metaphors, and affordances, or visual design concepts such as layout, typography, color theory, etc.

The fact is that, most developers simply are not trained in these areas. However, in my opinion, that is the not the problem. The problem, I believe, is that the general expectation of most executives, managers, and developers themselves, is that all developers can do these design activities effectively. To put it simply, developers are expected to do something they were never trained to do.

Developers are very good at solving problems that involve logic and complex algorithms to process and transform data, but they are typically not good at creating, for example, a color palette that evokes a certain emotional response, or a text and widget layout that leads the user effortlessly through filling out an online form, yet we consistently expect that developers take on the role of design experts. Would it be reasonable to expect a graphic designer to write a program that solves the Towers of Hanoi? Or to create an XML parser? Or better yet, to create efficient and elegant implementations of those things? Or how about a well-defined system architecture for an inventory system to track millions of items across multiple geographically distributed warehouses and distribution centers in near real time? These are not reasonable expectations because designers are not trained to do these things, and typically do not have industry experience doing them.

I think the revival of design in Web 2.0, along with several higher profile companies who have focused on design has started to change the expectations a bit and to educate people on the benefits of good design. Unfortunately, I think it will be a while before the benefits of good design percolate up to the point that expectations really start to change on a large scale.

February 7, 2007

IMified and that Twitter idea

A short while back, I posted about the possibility of Twitter becoming an input modality and a information delivery service. I just found IMified (via LifeHacker), and it sounds like it does a lot of the things I was envisioning, but uses IM directly as the transport, rather that Twitter. They seem to have several interesting points of integration (look at the icons in the main graphic) already.

One thing that will be interesting to see is whether they strive to provide an additional integration across the multiple services that they talk to.

I still think Twitter would provide a more useful layer of integration since it allows various input (including IM) and output methods. I’ll probably sign up for a free IMified account to evaluate it and post some thoughts later.

January 25, 2007

CallWave Dashboard widget

I’m liking CallWave more and more, and now they have a Dashboard Widget. It’s a little clunky, especially when you first activate the widget if you already have a CallWave account (check the bottom red bar of the widget for an “Already Registered?” link), but once you log in it works very well. I’d say it’s easier to use than getting the messages in Gmail. I don’t know if it has Growl support yet, but here’s hoping!

Keep up the great work.

Twitter as a message router?

Twitter is fun, no doubt about it, but I think the novelty of it is starting to give way to some interest in finding ways to make it more useful. I had been thinking about it for a while (almost ever since I started using Twitter), but this post on their blog, pointing to Eric Meyer’s post got my wheels turning again. If Twitter had the notion of public and private posts (as Eric points out), it would be fairly trivial to do some interesting stuff with it.

It could be used as an input layer abstraction for various other web services I already use. For example, I could post something like “cal: lunch with Bob tomorrow 9am” from my mobile, and use a service like rssfwd to have posts routed to Gmail, where I could set up a filter that would forward it to 30boxes. If I happen to want to start using Backpack calendar instead of 30boxes, I probably rig up something similar. The key is that I would still create events using Twitter—only they would go to Backpack instead of 30boxes.

I could do something similar with notes that I want to send to my Backpack page or to Stikkit from my mobile. In essence, it could be used to add an SMS interface to apps that don’t already have one.

Similarly, it could be used as an delivery system for more useful things. For example, it might be interesting to setup a Twitter stream for team meeting reminders, that way the meeting could be scheduled on a single calendar, but a reminder could be broadcast via Twitter to all the team members who have added that private team meeting Twitter feed as a “friend”. Granted, that could be done by setting up an email group or alias, and using SMS gateways, but I think Twitter could present a much more elegant solution by abstracting away the particular calendar service being used. I think that’s just scratching the surface, too.

At it’s core, RSS is a message delivery mechanism, and Twitter puts a useful, near real time face on it. Who knows what the Twitter developers have in mind, but for an app that is about nothing, it sure seems like it has big possibilities.

January 23, 2007

twittereeze

Yesterday I started working on an Applescript that would set my Twitter status and my iChat status if iChat was running. I’m sure this kind of thing has been obvious to most people who have started using Twitter, but I hadn’t found any app that had done it yet. Today, along comes twittereeze, and totally blows away what I was doing in Applescript because it uses SIMBL to integrate seamlessly with IconFactory’s wonderful Twitterrific.

Well done. No more applescript for me.

January 19, 2007

How to make Twitterrific work

A couple days ago I discovered IconFactory’s lovely new Twitter app Twitterrific. I had been using the Twitter site, or the twu command at yubnub via Quicksilver, so I was pretty excited to try Twitterrific.

When I first launched it, it magically logged into Twitter and grabbed all my latest updates! Cool. I briefly wondered how it knew my login and password, but quickly came to the conclusion that it must rely on WebKit or Keychain, since I had been logged in to Twitter via Safari at some point during the day.

After that little mental detour, I quickly typed in a new tweet and hit return. The progress spinner did its thing for a second and then disappeared, along with my tweet in the text entry box. My computer science instincts kicked in and I waited for Twitterrific to check in with Twitter and refresh with my new tweet, which never happened. To make a long story short, I tried for about a day with the same results each time, having to resort to my previous methods for posting tweets.

Then, I noticed this little tidbit on the Twitterrific page:

Before installing Twitterrific, it’s best if you first log out of Twitter’s website - you can log back in after Twitterrific is up and running.

I quit Twitter and used uApp to delete it’s preferences and cache, Safaried to my Twitter account and logged out. Then, I launched Twitterrific again, and after a few seconds, it popped up a sheet allowing me to enter my Twitter login info. After entering the info and a few seconds of network activity, it again pulled my latest tweets. This time, when I fired off a new tweet, it worked.

If you’re having trouble getting Twitterrific to post, this might work for you.

Kudos to IconFactory for the very simple and useful app!

January 14, 2007

I want a new Desktop

I think the Desktop as we know it needs to be done away with. It needs to be transformed into or replaced by something more useful. I can’t make any claims about knowing what that new and more useful Desktop might be, but honestly, I can’t find a single, truly useful function of the current Desktop in OS X, or Windows, or X, or insert favorite windowing environment here.

(I’m a primarily OS X user, so I will write from it’s perspective, but I’ll bet that most everything in this post applies to nearly every other modern desktop computing environment)

I typically have used the Desktop for only a few things:

  1. To Display a nice background that suits my mood.
  2. To hold temporary URLs that a drag from my browser for later reading.
  3. To hold a few files on which I am currently working that don’t yet have another suitable home.

The first is not something I would call truly useful. Don’t get me wrong, I like nice desktop pictures, but I don’t feel that a landscape, still life, or anime character provides any more utility than a plain black backdrop. Some folks have indeed come up with some clever and more useful types of desktop pictures, such as calendars, etc. However, rather than this being in support of the usefulness of the current Desktop, I would argue that these actually highlight the problem. It means that the Desktop did not do something useful for these people, so they took it upon themselves, in essence, to hack the Desktop to do something useful for them. They have changed the Desktop metaphor, and by doing so, in my opinion, have provided more support for the argument that far more useful things that could be done in a new Desktop model.

The second item above, storing temporary URLs, is already handled more elegantly by other, more specialized software, including URLWell (site is MIA), Yojimbo, Trapper Keeper, del.icio.us, and a myriad of others—simply pick the one that fits how you work. I have tried all 4 of the ones listed above, and finally settled on using del.icio.us with a toread tag. I’ve been able to make this process even more efficient by customizing this quick posting bookmarklet to my needs. I don’t even think about dragging URLs to my desktop now.

The last item, holding files for easy access, is also already done in a more elegant way by any number of software applications and tools, including Spotlight. Dragging and dropping files onto the desktop changes their physical location in the file and folder hierarchy. No longer does that design document live in the folder with it’s other supporting documents (e.g. a requirements document). Dragging files out to the Desktop breaks up an already logical and useful grouping of documents for the sake of quick access. One better solution, in my opinion, is to use a Spotlight comment, or Finder label to identify files to which you need quick access. Then you can either use Spotlight to find them via a Spotlight or Finder search, or by creating a Finder Smart Folder that contains only items with the particular comment or label. There are any number of other solutions that use third party software, as well.

There are even several applications for OS X that attempt to hide or dim the Desktop, or automatically move files from the Desktop to another, presumably more useful, location. The fact that these applications exist at all means to me that there are other people out there who feel the Desktop is in many cases just a cluttered distraction and needs to change.

In fact, there are already computing environments where the Desktop as we know it has been redesigned or even left out entirely in order to make the environment more useful. A good example is mobile devices, such as phones and PDAs, most of which have a simple status screen, application launcher, or “Today” type screen showing upcoming calendar and todo items. Even Apple’s iPhone, which they tout as running (a scaled down version of) OS X, ditches the typical Desktop metaphor, apparently in favor of a simple launcher. Notice that it doesn’t even have a picture behind the icons.

With all of that said, why do modern desktop environments still have the same old concept of The Desktop? Honestly, I think it all boils down to one major thing: incentive. There doesn’t appear to be much incentive stemming from criticism of the current metaphor, from competition from a new and better metaphor, or from potential financial gains of expending the resources to create a new and better metaphor.

So, while I do feel there is an opportunity to do some exciting things with or in place of the Desktop, it seems at least for now, without any critical, competitive, or financial incentive, the current generation Desktop will be around for a while longer.