Testing MarsEdit

I’m testing out MarsEdit. I’ve been using TextMate for my blogging and I really like it. Except it has this nasty habit of screwing up my posts by escaping all my quotes and putting “\n” everywhere I hit return within my post (the posts are all written in HTML so it should ignore that stuff).

I just learned that MarsEdit supports editing in TextMate as an “integrated” external editor.

I’m hoping this will avoid my TextMate issue (MarsEdit does all the publishing instead of TextMate) and hopefully find some other useful features.

1 Comment

Merging with Subversion and IntelliJ IDEA 8.1.x

A few days ago I created a branch in Subversion to work on some refactoring ideas I had. I wasn’t sure it would ever see the light of day (and I’m still not ;-) ), but I wanted a “sandbox” to play in.

Today I wanted to update my branch with the changes the other developers were making in the “trunk”. In theory this should be straightforward, in practice, well… that’s another story.

The documentation for how to do branch merging with IDEA is lacking in many ways (unfortunately this is true for a lot of IDEA features :-( ). There is just the most basic description of how the dialog works, but no help for the actual process of merging your code from another branch.

First, make sure the local, working copy of the project is current with no changes to it. You want to be in a “clean” state so that the only changes to your working copies are the changes made during the merge process itself.

Next, choose the Version Control/Integrate Project… option from the menu. In the dialog that appears set the “Source 1″ path to the branch you’re working on. Select the revision # where the branch started (hopefully there’s a helpful note when the branch was created ;-) ).

“Source 2″ should be set to the path of the “trunk” with “HEAD” as the revision(remember, we’re merging the trunk’s changes into our working copy of the branch).

Next uncheck “Use Ancestry”, I’m not sure what this does, but when checked I tend to get a bunch of files reported as “different” that really aren’t during the merge process

If you want to see what files are effected by the merge without actually doing it, check the “Try merge, but make no changes” option.

Click “OK” and let it fly!

After a bit, you’ll get a report in the “Version Control” tool window that describes the files that were changed.

If at this point things look really screwed up, or you don’t understand what Subversion/IDEA did – you can “Revert” all your changes and go back to the way things were before the merge attempt.

The last step in this scenario is to commit the merge changes into your branch.

You should now be current with the changes from the trunk in your branch.

No Comments

And then there are bad days…

I’ve had my own consulting business now for a little over 4 years (wow, already? Man… time flies!) and I’ve really enjoyed it.

Having my own consulting business gives me more freedom to apply myself where I think I can provide the best benefit to my clients. It puts me in control of my professional life versus relying on some manager to “guide” me (”John, I really think you’d be a wiz at Struts and EJB 2.0!” – no thanks!). On top of that, I tend to make more money as well (not a bad thing! :-) )

I frequently recommend going “independent” to friends in a similar situation as myself so that they can share in the success that I’m enjoying.

However, sometimes Shit Happens.

About a year and a half ago the “vendor management” firm for my client declared bankruptcy (I wrote about it here). It was a real made-for-Hollywood style con game being run by a couple of thugs at Chimes (actually their parent company Axium). I ended up losing a bunch of money, but thankfully I still had work and my client at the time did all that they could to smooth over a very bumpy situation.

So for the last year and a half my company get tons of letters explaining how the bankruptcy trust is spending more money on accountants and lawyers. I filled out paperwork to try to claim the money my company was owed hoping to at least see some of it (though… I know Smalltalk has a better chance of becoming mainstream than I do at receiving any money).

Then last week I get yet another innocent looking letter from the bankruptcy trustee…

Ah… but this one was different! Not only did I lose money that was owed to me when Chimes declared chapter 7 bankruptcy, it appears that now the trustee wants my company to send back the payments it received FOR THE PRIOR 90 DAYS!!

So, due to no fault of my own (or my end client for that matter), these crooks believe they’re entitled to nearly 1/3 of my company’s annual revenue. They’re claiming that my company may have received “preferential payments” and according to the bankruptcy code the trustee has the ability to go back 90 days looking for questionable payments (and I’m not alone).

I assume the code is there to catch a situation where crook knows he’s about to go bankrupt so he decides to pay off his friends first before he goes under and everything is turned over to the courts.

However, in my situation that is clearly not the case. There is a clause to the code that excludes “ordinary course of the business”, but its on me to prove it. So it looks like I’ll be talking with a lawyer…

So, back to my original comment about being an independent consultant: Today is NOT one of those days where I’d be recommending it. :-(

1 Comment

Quick Eclipse Tips

So… these days I’m bouncing back and forth between Eclipse and IntelliJ IDEA. I prefer IDEA, but my client prefers Eclipse. * sigh *

One of the things that I really missed in Eclipse was IntelliJ’s convenient “navigate to implementation” feature.

When I’m developing interface-based-design (especially when using Spring) I’m constantly wanting to jump to the implementation of an interface, but the normal way of navigating in Eclipse only takes me to the interface (holding down control while clicking on the method you want to navigate too). There are no “gutter” indicators like IDEA has.

Finally, I discovered Eclipse’s shortcut for going to an implementation: Ctrl-T!!

It may even be better than IntelliJ’s implementation… maybe.

With your cursor on the method anywhere in your code (where its declared or where its used) hit “Ctrl-T” and Eclipse will display a popup with all the classes that implement that method. Very slick!

At first I thought I was probably the only guy who didn’t know about this shortcut, but it was news to at least two of my colleagues as well… so I thought I’d share!

Also, while I’m thinking of it: Ctrl-O is another shortcut that I’m using a lot these days. It brings up a list of all the methods in the current class that can be filtered as you type.

1 Comment

Trying Baseball

Agile is the buzz word everybody uses these days. A lot of places claim to be doing agile development, but follow very few if any of the practices. Then when the inevitable failure comes around they blame the “Agile” for it and run back to their old, unproductive process that the never really got away from.

This is an old post from Ron Jefferies that I missed when it was posted. Just thought I’d share in case you missed it too. ;-)

1 Comment

Best Blog of the Week

I ran across this today and thought “He could be describing me!”. Enjoy!

No Comments

NFJS Day 3

Sorry I’m a day late with this post.

Usually I think of Sunday as the low point on the NFJS session list. In years past most of the sessions were kind of “ho-hum” and I’d have to admit that going into Sunday… I was thinking the same thing.

Boy was I surprised!

I started the morning listening to Matthew McCullough talk about Git version control. I’ve looked a little at “distributed version control”, but I didn’t get it, nor did I see a need for it. Was I wrong! Git is one of the coolest things I’ve seen. It really is hard to explain so I won’t try to do it here. Instead go pick up the PragProg’s book on Git here. I think approaching Git for me right now is like approaching CVS was after working with “locking VCS” systems for years. I thought it was going to be total chaos. What happens when two people edit the same file? Won’t you constantly be stepping on each other’s toes? Well, as I’m sure you all know… it doesn’t really lead to chaos, but instead gives you great flexibility and freedom. I think Git is that same freedom granting experience taken to the next level!

Next I sat in on Nate Schutta’s talk on “Making Web Apps Suck Less”. I kinda like the names of sessions that are in your face like that. Nate is an old friend of mine. Life being the way it is, this seems to be about the only time we see each other these days and it was fun to catch up. This session was a lot of review for me. That said, it contained a lot of good ideas that it pays to be reminded of. The main point of his talk was: Usability matters! It matters way more than how elegant your code is, how nice your domain model is, etc. The UI is the application as far as your users are concerned.

The first afternoon session was back with Matthew McCullough talking about Maven. He went over a lot of intermediate level stuff with Maven and I learned a few things that I was immediately able to put to work on Monday (like setting a default goal!). It was a good presentation. It appears that Maven’s acceptance is really growing which I think is a Good Thing!

Finally, I wrapped up the day back with Nate again with his talk “Hacking your Brain for Fun and Profit.” This was a really useful talk. Nate covered a lot of stuff and it built upon some of the things I learned from Andy Hunt’s book Pragmatic Thinking and Learning. Some of the stuff was pretty basic – get sleep and exercise. The interesting part was some of the statistics to back it up. He covered the Pomodoro technique for staying focused and talked a lot about things you can do to improve your work environment. I learned the term “Walking Desk” and I’m considering building one for my office at home. I now have several more books I need to read like A Whole New Mind and Brain Rules, Mind Hacks.

I’ve got some more general thoughts about takeaways from NFJS this year, but… I’ll save that for another post. :-)

No Comments

NFJS Day 2

I just wrapped up day 2 of NFJS and overall it was another good day. I started with Stuart Halloway’s presentation on Clojure. I’ve no real exposure to functional languages and its quite a brain-bender to understand how Clojure (which is similar to LISP) works. Stuart walked through porting a couple of small, but useful Java utility functions to Clojure. It was very interesting to see and I definitely had an “ah-ha” moment where I saw some of the power of functional programming. Stuart definitely piqued my interest in Clojure and if time allows I’m going to have to play around with it.

I attended Neal Ford’s presentation on “Refactoring in the Real World” which was pretty basic refactoring 101 kinda of stuff. Good stuff for a lot of people, but nothing real new for me. However, the one thing that I didn’t know of was a tool called dbDeploy. dbDeploy is a tool to give the rest of the world the same database versioning management that Ruby on Rails’ migrations provides. It looks pretty promising and worth a look.

I also sat through Neal’s talk on “The Productive Programmer”. This was a lot of review for me as I’ve already read his book. He had a lot of good tips for helping you limit distractions, improve your focus and work more efficiently with your OS and IDE.

Finally, I attended Ken Sipe’s on “Hacking – The Dark Arts” which reviewed a lot of the ways websites can be compromised. I’ve almost “ignored” security for a long time. This is because most of projects I’ve worked on over the years have been internal. It was a bit of an eye opener for me. If you’re not concerned about security… you should be!

A couple of other things heard in the hall: Mingle is very slick for an “agile project management” tool. Clojure, Scala and Haskell seem to come up a lot (a lot of talk about functional languages). This is in the same way that Ruby was being talked about 2 ~ 3 years ago at these same conferences. Spring 3.0 is really Spring 2.6 RAKE is the build tool to use.

Tommorrow, the third and final day…

No Comments

NoFluffJustStuff – Day 1 – The Stuart Halloway Show

Just got home from the first day of NFJS where I spent all three of the sessions listening to Stuart Halloway of Relevance talk about how his company does agile.

All three of his sessions were excellent and I got exactly what I’d hoped to learn from him – How they’ve adopted agile development and been successful as a project outsourcing firm.

He covered a lot of good stuff with respect to agile development and told some great “learning experiences” he’s had running a business along the way.

A couple of things I found interesting: 1) They use stories for everything – new features, bugs, documentation, etc. Estimate them and assign points. 2) They give their clients limited control over their process focusing them on things that directly provide business value: What stories to work on and accepting the story.

I’m planning to take in his Clojure session tomorrow. I’m hoping he can convince me that the whole “functional language” thing is worth my time. ;-) Stuart is an excellent and engaging speaker. If you get the chance to see him speak, I’d highly recommend it!

Neil Ford gave the keynote speech and it too was excellent. His topic was a cross between content from his book The Productive Programmer and Andy Hunt’s Pragmatic Thinking and Learning (both excellent books). One his major points was the necessity for focus and creating an environment for creative thinking. Both of which he maintains (and I’d definitely agree with) are difficult in many corporate environments.

One of the things he described is the state of “flow”. Flow is that state you reach when you’re hyper productive, time ceases to exist, and you’re deeply into your work. Its a hard state to reach and easy to lose. All it takes is a minor distraction. His great analogy is that its a lot like sleeping. You can’t control when you fall asleep and even if woken for only a little bit, it can take a long time (if at all) to fall back to sleep.

That’s it for tonight… I’ll try to post more after tomorrow!

No Comments

Job Hunting Advice

Though I’m fortunate enough to still have work it could change anytime. I spotted this article today and thought I’d pass it on. I think its great advice even if you’re not looking, but want to expand your network.

No Comments