Archive | Tech

Maven Haikus

Jul 19th, 20101 Comment

You start a project

You initialize Maven

World is downloaded.

Dependencies Stink

What is the incantation?

Maybe God knows them.

Have some subprojects

Maven won’t find sibling code

Then chaos ensues.

New dependency

Not found in Maven repo

Now build is broken.

Do you understand?

Maven has many errors

Now you start guessing

All day on Maven

Now the project is worse off

And your hair is gone

On Android

Jul 8th, 2010No Comments

I recently put my stake in the ground on the side of Android and, while I’m not quite up to my first month in usage yet, I can’t think that the iPhone would be better than this.  If you are an iPod user, you won’t like having magical iTunes sync for music.  But you can manually copy the files over and, if you don’t like doing that, there are apps that do it for you.

I just got back from a trip and the GPS capabilities of our Android phones (wife: Moto Droid, me: HTC Incredible) were flawless.  The drive-by-drive directions were spot-on.  Need to find a gas station?  Literally hit the button and ask it.

I seriously couldn’t ask for a better phone.

My wife likes her keyboard on her droid, but she also likes how much lighter my phone is than hers.  I thought I would be annoyed by the Incredible’s keyboard but I have gotten used to it. Or, rather, it’s gotten used to me — I now have a number of words added in and now it is smarter about spelling decisions.

I really only have two gripes about my Incredible:  you can’t see the screen when you are in direct sunlight (this is a big deal while geocaching) and sometimes it can be real slow when I turn it sideways. That especially happens when I’m typing something in and decide that I want to two-hand type, so I turn it. The screen generally does not rotate with it.

But the value and the usefulness of the phone outweighs all of them.  I can’t think I would like an iPhone more than this.

Expanding my own “Oh My ZSH!”

Apr 2nd, 2010No Comments

I’ve been thinking about cleaning up my own ZShell config and putting it out in the wild, but that just didn’t seem to happen. I was looking for something in ZShell — I think it was getting version control information at the prompt and I stumbled upon a mention of Oh My ZSH which is a bunch of powerful ZShell configs arranged in a nice way.

I tried it and I liked it. But it didn’t have everything that I used. But, heck it’s on github — easy forking.  So I did. My changes are:

  • Change the xiong-chiamiov-plus theme to use vcs_info instead of being git-specific.  Gave the new theme the original name of mikeh.
  • Option to configure a terminal with strange settings (labor intensive on the first run, perfectly wonderful after that.)
  • Will automatically rehash the path, so new commands will be found immediately
  • Added realias to quickly make a new shell alias/function (EDITOR env variable required)
  • Removed upgrade checker (I don’t expect you to trust me)
  • Share history with your zsh’s on the same host

More changes coming as time permits.  Enjoy!

Weave: The Best FireFox Plugin You Aren’t Using

Mar 18th, 2010No Comments

I’m not sure how I stumbled onto it — I think I was reading something at Ars Technica and saw a link for this article about Mozilla Weave.  I never heard of it before — it sounded interesting.  After a month of heavy use, let me just say that it’s not just interesting — it’s downright, wicked cool.

Let me tell you my pattern — I use FireFox in two places: Work and at Home.  Many times I wish I stumble onto a site I want to read at home.  Usually I just save it to Diigo. But sometimes I forget.  The biggest annoyance is passwords. Yes, I save a ton of website passwords in FireFox.  But it stinks when I save it on the home machine but want to get into my account at work, and I can’t remember what password I used there.

Weave solves all these problems.  And ones that I didn’t know I even had.

So now when am I work, I don’t worry about saving an address to Diigo just so I can read it at home. Instead, I do nothing special.  When I go home, I start FireFox, I wait about 15 seconds and I see that it starts to sync. After that, I have all my history from my last session.  Yes, you read that.  All my history from my work browsing session.  Oh, and if I setup a web account during the day at work and save the passwords, that is synced too.  Preferences?  Check, but in a smart way. Like my proxy server config from the office is not moved to home.  That’s a good thing.  Bookmarks? Check. Yes, I still use bookmarks and I probably use them more now because they are synced between my machines.

A neat feature is tabs.  Yes, tabs are saved across browsing sessions on different machines.  So if I want to quickly see what I was looking at last night at home, I can go to History-> Tabs from other computers while at work.

Many of you may be thinking. “How is this different than the nasty FoxyMarks/XMarks crap?”  Well, not only does Mozilla not publish or track it but they also encrypt all data with a passphrase of your choosing. So, yeah, they thought of that too.  If you are truly paranoid you can setup your own Weave server.

So I think it’s worth a go, especially if you are still using FireFox instead of Chrome (which I still am on the fence about, but that’s another discussion.)

Getting It’s All Text to play with Cygwin

Mar 4th, 20101 Comment

I love the FireFox plugin It’s All Text – it lets me edit wiki pages, webmail, etc. in my beloved editor of Emacs and automatically refreshes the text field in FF with my new text.  But I recently moved from using NTEmacs to Cygwin’s version, and things simply stopped working.  And it made sense — Cygwin is just a layer on top of Windows, but it uses Unix-like paths, while It’s All Text would, naturally, use Windows-style paths.

I put up with this for a few months, mostly because I didn’t want to spend the cycles on figuring this out.  I did spend a few, and they were all pretty much worthless. I’m not sure why — the idea wasn’t hard, but it seemed to be.

A while back I decided to put some dedicated cycles to this.  I found this comment from the It’s All Text developer on his blog — it didn’t work , but it was a start.   I took his work and built my own version.  I was trying to do it with a one-script solution but seeing his I knew I needed two: one batch file and then one shell script.  After some experimenting,

The following batch script should be left alone.  It sets up the Cygwin environment, and then uses Cygwin’s “run” command to start a bash shell, when then runs our shell script.  The “%~f1″ is actually the most important component here.  It is a batch file command that says to give the full path of the first argument. Of course, that assumes that the first argument is a file but considering we are using this with It’s All Text, we are safe with that assumption.


@echo off
SET DISPLAY=127.0.0.1:0.0
SET CYGWIN_ROOT=c:\cygwin
SET RUN=%CYGWIN_ROOT%\bin\run -p /usr/X11R6/bin
SET PATH=.;%CYGWIN_ROOT%\bin;%CYGWIN_ROOT%\usr\X11R6\bin;%PATH%
SET XAPPLRESDIR=/usr/X11R6/lib/X11/app-defaults
SET XCMSDB=/usr/X11R6/lib/X11/Xcms.txt
SET XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
SET XNLSPATH=/usr/X11R6/lib/X11/locale

rem the %~f1 is the full path name of the argument given to the script.
%CYGWIN_ROOT%/bin/run.exe c:/cygwin/bin/bash.exe  /cygdrive/h/bin/text.sh %~f1

The following is our shell script, which we referenced as “text.sh” above. It’s much simpler — it converts the Windows path it was given to a Unix path and then calls our editor (“emacsclient” in my case, which will load up the file in the current Emacs instance).  You maybe thinking that I could have just was well as done this in the batch file above — and, you are right, I could have ran the editor but I had to also convert the file’s path first.  That is really why we need two scripts — using a shell script is the only way I could find that would let me use the cygpath command in a reliable way.  Note that I used “$*” at the path name — that will give all the arguments, which I need because there are spaces in the full path name (“$~f1″ above).


#!/bin/sh

/usr/bin/emacsclient "`cygpath "$*"`"

So not easy, but it’s possible. Of course, I made it a lot easier now for everyone else!

Page 1 of 5712345»102030...Last »