Monday, October 22, 2007

smart files syncronisation using rsync

I work a lot from home using my laptop. Alas, compiling and testing the application requires a very strong machine like the desktop I have at work. So working effectively from home means syncing files back and forth.
The fastest way to do that seems to be rsync, but running the script is a bit slow since I need to modify it each time according to the directory I'm located at. To help with that I wrote two nice scripts which I named 'up' and 'down', and placed them in the path.
One important fact is that I have the same directory structure in the local and remote machines. I.e. I have the same usernames and place the sources in the same place in both machines.

  • When I type 'up' in the command line the script is syncing to the remote machine the current directory with its subdirectory (recursively).
  • When I type 'down' in the command line the script is syncing from the remote machine to the current directory (recursively).
It is very helpful to have ssh without password (i.e. exchange public keys between machines).

Here are the scripts:

# Destination host machine name
# User that rsync will connect as
# excludes file - Contains wildcard patterns of files to exclude.
# i.e., *~, *.bak, etc. One "pattern" per line.
# You must create this file.
EXCLUDES=[full path to file]
PARENT=$(dirname $(pwd))
OPTS="-v -u -a --rsh=ssh --exclude-from=$EXCLUDES --stats --delete "


# Destination host machine name
# User that rsync will connect as
# excludes file - Contains wildcard patterns of files to exclude.
# i.e., *~, *.bak, etc. One "pattern" per line.
# You must create this file.
EXCLUDES=[full path to file]
PARENT=$(dirname $(pwd))
OPTS="-v -u -a --rsh=ssh --exclude-from=$EXCLUDES --stats --delete "

Does not work with whitespaces in the path. Tried replacing them with escape characters (see rsync man pages), bit didn't work.

Wednesday, October 17, 2007

Life is too short to stay at a job where you're not doing the things you want to do, where you're not enjoying yourself

This guy definitely nailed it, I probably couldn't say it better. Not that I didn't enjoy myself in IBM Research, but this is probably the main reason I ended here in LinkedIn.

Oh, by the way, we are also hiring. So if you happen to be a really really good Java developer, let us know :-)

Saturday, October 13, 2007

Extreme Blue 2007

In the last two years I worked at IBM I managed/mentored two Extreme Blue groups. The teams did some great stuff related to the Eclipse Open Healthcare Framework which I was heavily involved with.
Thanks to Brian for sending out this short video clip of an NBC report on Extreme Blue starring my team from Almaden Research Center (I'm not in the video).

Wednesday, October 10, 2007

Announcing the Java Posse LinkedIn Group

Yesterday morning when I biked to work down the Shoreline blvd I happened to be listening to episode #145 of the Jave Posse.
The night before was a bit rainy so was the road itself, so the user experience was damaged a bit. But thanks for the GoF (Gang-Of-Four a.k.a. Tor, Carl, Dick, and Joe) I enjoyed listening to some philosophy (properties in programming languages, and component oriented programming), religion (tabs vs spaces), and other fun stuff.
Nevertheless my mind was a bit districted with a how to test a small LinkedIn Groups feature I just implemented. And then, just when the posse called out names from the IRC room I had an enlightenment: how about creating a Java Posse LinkedIn Group?

Few reasons:

  • Looking at the activity in the Posse newsgroup (and IRC room) its apparent that a community is being created. This group could be a yet another community affiliation mark.
  • A way to publicize the podcast. People how might look at your profiles and think to himself "Lots of techies I know are in this Java Posse group; wonder what’s that all about...".
  • A way for you to publicize yourself: "only real Java masters listen to the Posse" or "Listening to the Java Posse makes you a Java master" (and wearing Nike makes you an athlete...).
  • You could more easily find how is that guy how wrote something about that subject in the Posse newsgroup.
  • I will be able to test the group’s features as a real user :-)
In his excellent post A Group Is Its Own Worst Enemy, Clay Shirky wrote that a good community should have some entrance barriers. I think he got something there, therefore I'll post the invitation URL only in the Posse newsgroup.
Yea, it's easy to get there and find the link, but many people will drop on the way and may only the fit remain. Placing the link on a blog will reduce the efficiency of the group. If that barrier won't be enough, or someone will post the link in his blog, then we'll probably have to kill him and think on other joining barriers.

So please go ahead and join the group...

Tuesday, October 09, 2007

JUNG - Java Universal Network/Graph Framework

Lately I played around with JUNG on an applet, doing visual modeling of networks. Knowing where I work lives a little room for guesses of the type of networks ;-)

Few reasons why I liked JUNG:
* Good generics utilization
* Fantastic plugability of views, model objects, grouping algorithms
* Flexibility and good separation of concerns
* The visualization runs on both desktop apps and applets.

Working with JUNG was a real pleasure, but had lots of drawbacks. First and foremost I have to mention that I used version 2.0 which is still in its beta. It reacted as a beta would react:
* Trowed NPEs when under pressure.
* Had problems with frequent updates to the graph (using the Swing update thread).
* Didn't scale good with dense networks with more then a hundred nodes.
* Very heavy on the CPU.

As a good open source user I know I should report the bugs and suggest patches. Promise I'll do it when I'll get back to it.
The bottom line is that it gave me a bad taste in the mouth about using Applets for intensive graphics and computing applications.

I'll give it a second round when JUNG 2.0 will finalize (anyone know when?), but unfortunately it looks like that in this case Java should stay in the backend and let Flash or similar technology run the browser side.

Sunday, August 12, 2007

The Pragmatic Programmer

The last two weeks where great! It was a rare period in my life where I was actually unemployed. Alas, I slept even less hours then I normally do. One of the highlights of this period is the hike to the top of Half Dome in the Yosemite. Considering the fact that most of my physical exercise in the last few years was moving around a laptop, its not half as hard as I expected. More details and pictures on the smiteam blog.

The book of this week is The Pragmatic Programmer. In my opinion every programmer should read it at least once, preferably once a year.
Like the Design Patterns book and the Worse is better article, It is one of the classics that will be relevant for decades to come. Though we are still being hit by waves of "programming without coding" prophecies, I do believe that the essence of the book will be relevant for long time.

The things I found most appealing in the book where:

  • Use Tracer Bullets to Find the Target: I like tracer bullets a lot. At night, in real life combat when chaos is all around, communication is blocked, and all the nice high-tech toys we had stopped working it was the only way we could see what we're doing and communicate it to the rest of the team. You can see similar things in rapid development projects where you enter a new territory.
  • Don't Live with Broken Windows: Fix bad designs, wrong decisions, and poor code when you see them.
  • Be a Catalyst for Change: You can't force change on people. Instead, show them how the future might be and help them participate in creating it.
  • Remember the Big Picture: Don't get so engrossed in the details that you forget to check what's happening around you.
  • Invest Regularly in Your Knowledge Portfolio: I usually refer to it as "Sharpening The Saw", that fable from the 7 Habits of Highly Effective People won me over.
  • Critically Analyze What You Read and Hear: Don't be swayed by vendors, media hype, or dogma. This one is not that easy.
  • DRY–Don't Repeat Yourself: copy-paste is the root of all evil.
  • Keep Knowledge in Plain Text: I have some problems with this once since I'm a fan of GTD softwares, WIKIs, and MindMaps.
  • Design to Test: Start thinking about testing before you write a line of code.

Sunday, August 05, 2007

Good is the enemy of great...

Just came back from lake Tahoe. I'm in my mid-unemployment vacation now and I'm more busy then when I did work! Anyway, I have a brief trip report and pictures posted on the family site.

Next book I'll mention is Good to Great of Jim Collins (read his Built to Last too). Next I'll mention none business books too, I do have some programming and lifehacking books in my stack.

Like any other book of this type, Good to Great has a lot of very interesting stories. But in this book he really tries to emphasize the research his team made and why the reader should trust the book's conclusions. Though there are some questions about the research itself, I do think he is right about the basic concepts:

  • Level 5 Leadership - Makes you think what do you need in order to get there (if at all)
  • First Who... Then What - Very important. You can't think about everything, and you should take it as a fact that your plans will change. In the long run, only the right people in the right places will make it a win.
  • Confront the Brutal Facts - and we know we like to hide from them. The main conclusion is don't get sentimental with your own doing. Be ready to look for a new cheese even if you really love this one.
  • The Hedgehog Concept - I liked this one. The bottom line if FOCUS.
  • A Culture of Discipline
  • Technology Accelerators - as a techie its hard to digest, but I know its true. Technology is never a silver bullet. it will help you a lot, but its not enough.
I have nothing smart to say about these concepts other then that they do help you understand concepts and put them in a box. I see these concepts similarly to programming design patterns. In their classical book, the GoF helped us think clearly about how we design our code. Good to Great help us in similar ways to think about our none technical decisions.

The best thing I liked about the book its the slogan "Good is the enemy of great". Its very easy to get into our own comfort zone and being good is usually pretty easy. On the personal level, one of the ways I look at it is - having peaceful life is the enemy of having real fun.

Have fun!

Wednesday, August 01, 2007

The Tipping Point

I'll start blog about few book I've read so I'll be able to keep some reference for where did I get some of my odd ideas. You may call it my recommendation list.

First would be The Tipping Point: How Little Things Can Make a Big Difference by Malcolm Gladwel who's other book Blink I also read and liked. The only reason I'll start with this book is that its most relevant for my latest career change. I.e. The Tipping Point is a lot about social networks and what effects do they have on the Life, Universe, and Everything. If anyone would ask me what business impact do social networks have and why should anyone invest money in it, I would first point him to this book.
The most relevant aspects of the book to on line social networks are:

  • "The Law of the Few" where he describes the three types of people (connectors, mavens, and salesmen).
  • "Law of Context" where he talks about the environment in which a message spreads.
Locating the connectors, mavens, and salesmen in groups, and understanding the spread of messages is extremely valuable. Providing one has some information about the network and can extract information out of it, you may have a potential gold mine.

New chapter

Today was my last day in IBM. After about seven years, working in two sites (Haifa and Almaden), and tons of interesting project - it was over.
View Eishay Smith's profile on LinkedIn

Anyway, I'll take now two weeks off.
First thing tomorrow morning I'm headed to Lake Tahoe with a tent and a jumping toddler. After few days of camping I'll head to the Yosemite. I'm planning to run from the valley floor to Half Dome and be back way before sunset. For the Yosemite I have no reservation. I hope to get there early enough to catch a tent camping site for early come early serve, wish me luck ;-)
I'll probably post about it in the Smiteam blog / gallery.

Sunday, July 29, 2007

Podcasts to register on

When moving to a new working station I'll need to re-register to my podcasts. Don't have much of them, and many I dropped along the way. My favorites are:

  • The Java Posse - My favorites, followed them from the beginning.
  • Parleys - Has some good technical talks. I actually listen to only 25% of them since a lot of them are not interesting / with bad speakers, but its worth it. I especially like the JavaPolis talks.
  • Drunk and Retired - Their good, no doubt about it. But usually I don't have enough patients for their bullshit and humor. If the topic is interesting I'll listen in.
  • 43 Folders - Some of it is good, mainly in the area of GTD and some stuff for Mac users. The video cast they have for may users is much better.
  • FeatherCast - Not extremely interesting, but they sometime have interesting discussions about some of the products. Good to be kept informed.
  • IT Conversations - Need to be very selective here, though some are interesting.
The problem is now that I have much less time doing commuting :-)
I'll start riding the bike to work (~40 min), that will give me enough time to listen to all I want.

Saturday, July 28, 2007

Applications to install when setting up a new workstation

I'm going to loose my precious MacBook Pro since I'm quitting my current job.
So just few days before I'm handing it off I'm backing up my personal files and preparing a list of stuff I need to install when I'll get my new workstation. I consider this list as a must have for every programmer/architect/project lead.

  1. QuickSilver - obviously. A necessity for every Mac user interested in productivity and not afraid of the keyboard.
  2. iGTD - If you're juggling multiple context activities and sometime feels that sometimes things are getting out of hands, then you need to take a look at iGTD. On the Mac, iGTD is the best GTD tool I know of.
  3. FreeMind - For similar reasons as using iGTD and much more, FreeMind had become a necessary working tool. I index and organize there tons of information. There might be better MinddMapping tools, but this is free and runs on all platforms.
  4. PTHPasteboard - This is a real necessity! I don't understand how people can't work with any multiple pasteboard application. I use it all the time, especially when I do programming. Its free and minimalistic, things I like about software.
  5. iTerm - Better then the default Mac terminal in many ways. Top of all is tabs which helps me keep the desktop sane when multi tasking...
  6. Eclipse - The best Java IDE I know of.
  7. TextWrangler - My favorite text editor on Mac.
  8. Google Desktop - It does a better indexing job then Spotlight.
  9. Growl - Like QuickSilver, its a Mac basics.
  10. MenuMeters - I like to know what's happening with my computer.
  11. muCommander - When getting down to business, its my favorite most productive file manager application on Mac.
  12. KeePassX - The way I keep my gazillion accounts in control.
  13. MagiCal - Far better then the default Mac calender.

Needless to mention, but there's also Skype, Adium, Firefox, NeoOffice, Gimp, VLC, Acrobat, The Unarchiver, and probably few other basic/trivial apps I forgot about.

Wednesday, July 18, 2007

Leaving IBM, Moving on to LinkedIn

I just announced my departure from IBM. IBM Research was a great place to work in.
If we'll not include the military (four years), then IBM was all of my career until now. I started at Haifa Research Labs when I still was a student at the Techion, and after few years moved on with my family to the silicon valley and started to work in Almaden Research Center.

I did worked on Healthcare projects in the last two years in Haifa, but things really took off in Almaden when we got into the Eclipse open Healthcare Framework project. I wrote some code, did lots of talks and blogs, and saw the great community comes into life.

I do hope to still be involved in this domain, in the next few months I'll have a better idea of how I can still contribute to the OHF community and be involved.

Anyway, now its the brave new world of Social Networks which really fascinates me. LinkedIn is a great company with fantastic people and technology. I'm excited to see what's next, but as always - looks like I'm going to have some fun :-)

Saturday, July 14, 2007

The Smiteam web site is up!

With few command lines on my Dad's Ubuntu box, I installed Gallery2 and WordPress. Its so easy to do and here we go, we have our own family server :-)

Friday, June 29, 2007

How to deal with contextual unstructured info

I work in a big company. Actually, work in a very big company.
As part of what I'm doing I'm in contact with many people and juggling many contexts.
Lets say I'm related to five projects, active in two open source groups, have some kind of relationships with few dozens of ISVs in the same vertical, few conferences I need to attend / send papers / speak in... You got the point.
So each of the above is a context associated with people, links to web sites, phone numbers, etc. Some of these references are shared between contexts, so sometime you want to have just a reference to information.

Of course, there are address books of all sorts that can help you do such things. But I find them too much structured to help me dump the full context out of my head and be able to recall it few months later. A simple text file is unstructured enough, but its hard to create associations in it and over time it can be so cluttered so its getting out of control (similar problems I have with WIKIs I try to maintain).

More restrictions I have is to be able to port the information between machines (my main OS is Mac, but I do work with Windows and Linux), derived for that is that it must be a file I can send around. I also want to be able to embed a representation of it in a web page, plain old HTML or a WIKI page, and so share my knowledge around.

The best solution I found so far for these kind of problems is MindMap. It is indeed a must as far as I see it, without it I would keep loosing information off my head as new information is trying to find its way in. Mastering these MindMap and GTD which I wrote about earlier is in my opinion a must have skill for every person that need to deal with a massive set of information and tasks.

The image above is of one of my MindMaps created using the great FreeMind tool (Java, Open Source). It is my grand context MindMap which points to other MindMaps. I would be hard to even start describing all the ways I use MindMaps, and I'm sure that anyone will find new ways to utilize it.

Tuesday, June 19, 2007


Reading the Getting Things Done (GTD) I said WOW. I knew that there's a better way to somehow organize my daily mess but until then i didn't know how.

Then I knew how.

But it didn't work.

I did try, honest. In few deferent ways. I tried out software and paper, both didn't really work. The main reason was probably that they where either too structured and not flexible like the Thinking Rock, or too loose like the Hipster PDA.

Eventually I bumped into iGTD (sorry, comes only on Mac), and its great!
Its very well integrated in my Mac. Works fantastic with QuickSilver, and can be very easily integrated in the daily work without getting in the way.

Tuesday, February 13, 2007

Actually I *am* blogging

But on the OHF blog. My "public" activity is mainly around OHF, so I figure the OHF blog is a better for such posts :-)

Monday, February 05, 2007

Talking in a conference with Matt (both of them)

I'm speaking at SCALE 2007

At the end of this week I'll do a talk at SCALE (California Linux Expo) with Matt Excell of Possibility Forge. I guess we better start making a presentation :-) I hope they won't mind I'm coming with a Mac. At least its not windows...

I'm speaking at EclipseCon 2007

The second will be a BOF and a short talk at EclipseCon,
Generating Web services from Eclipse plug-ins, this time with Matt Davis (IBM).

Wednesday, January 31, 2007

"wasting time" hunting for licenses :-(

In the last day I spent most of my time trying to figure out what jars out of Axis2 do we really need for OHF. It involved hunting references in the source code, figuring out what we must have. Since we are using both server and client side of Axis2, with attachments, it looks like we need almost everything but the stand alone server...

Tuesday, January 30, 2007

Movig to Mac

A month ago I moved to Mac!!!
I hacked the life out of this machine, installed every geek tool I could find (inclugin geektool) :-)
Still missing some windows stull, but when I touch windows again, I understand I can't go back.

Creative Commons License This work by Eishay Smith is licensed under a Creative Commons Attribution 3.0 Unported License.