Skip to main content

Posts

My Git Setup on Windows

This is kind of a continuation of my earlier post about my terminal/shell on OS X and Linux . As I was recently preparing for my Git on Windows talk , I naturally started tweaking the setup on Windows as well in the same direction, and I figured I'd share this setup. Installing Git Either go with Git for Windows , or Git Extensions if you want more GUI as well as Visual Studio integration. I personally have grown a distaste for TortoiseGit , as it sometimes locks files in my repositories. But it's supposed to be good otherwise (as an alternative for Git Extensions). Git Extensions During the Git install, you need to select the scary red option , for integrating Git into Windows cmd-line, if you want to use it from Powershell/Console2 (we'll get back to that later). The cygwin-like Git Bash is not sexy. Update (30/4 2012) :  I think you could also  wrap Console2 around Cygwin , although I haven't tried this myself yet. This way you can avoid the scary ...

Trying again: Presenting Git on Windows at Bonn-to-Code.net

I have written this blog post before ! Regardless, this talk, which was cancelled last year, is now back on track for the 24th of April. The rest of this post is basically a copy of the old one, with a few minor updates: It's been a while since I ran Visual Studio on my laptop. In my early university-college days, around ten years ago,  .NET  was just coming out of the oven. We learned algorithms and data-structures doing Java, but when it came down to actual application development, desktop- and web, connecting GUI's with databases, .NET was the thing. I liked it. It was bit of an eye-opener for me, that I could actually use programming for building useful stuff, and not just fantasize about being a game developer. Later on, I fell back into the Java/J2EE world, and rode there for a while. While working for  Objectware 's Java department, it was always interesting to see what the .NET department was up to, and while they were part of them evil scheme of Microsoft...

My terminal/shell

Just a quick post about what my terminal looks like these days. Some things I value in my terminal: Good looking/easy on the eyes (using color-theme solarized )  Being able to bootstrap my setup fairly quickly on new machines Portable setup between OSX/ iterm2 (at work) and Ubuntu Terminal (at home) Good git support I strap the boot by cloning my prefs (collection of my environment/config files) into my home-dir (I still have to manually install zsh at some point): git clone git://gitorious.org/testing-git/prefs.git And then "deploy" the config files into my environment: cd prefs ./deploy.sh Now I could've probably used puppet for boostrapping this on new machines, but so far I've managed with just a little deploy.sh that copies the files into the right places, and a reverse-deploy.sh that copies them back into my  prefs  dir after I have played around with making changes locally. I use zsh , assisted heavily by the  oh-my...

Git-SVN mirror product: SubGit

Just a quick mention for you people who can't be bothered with my somewhat intricate Git-SVN mirror setup , there now is a now is a solution packed into a product: SubGit . I tried it out on a little local SVN repo recently, and it worked just fine. It delivered pretty much perfect two-way syncing/bi-directional mirror (which I've earlier deemed to be very impractical with git-svn ). The bad parts are: It's new (use at your own risk, in other words: DO NOT install it in your main-line subversion repo used by a 100 devs). It's closed source, so you're at the mercy of the SubGit devs for fixing any feature that you need in your special repository.  It requires instrumentation on the Subversion repository installation. If the repository is beyond your control (hosted externally, or by some separate department), you're stuck with my old setup . The good parts: Super-sweet functionality! I mean, bi-directional Git/SVN is highly sought after. Seems to...

Google Guava's Predicates

So the other day I was working away on some rather tricky rules for validating an incoming identifier code. Like 999392304II+TJAJEIAJTI901119 or EPFOOMNNVLLALOWEIITOE Now, the system where this code is going is rather picky about what these codes should look like. (For the sake of this blog-post, I'll invent some business rules here on the fly, in reality they are a bit different, but the nature of them are the same): A code cannot be null, or an empty string (of course) If there are only letters (A-Z) in the code, it must be longer than 10 characters, but fewer than 20 On the other hand, if there are letters mixed with numbers, it must be exactly 10 or 15 characters Numbers only are not allowed No other symbols are allowed, but + signs are allowed, if the code starts with 999. In this case, the max length is 10. Instead of just going straight for the if-else'ing my way through these rules, I implemented it using Predicates from Google Guava . I was pretty hap...

Some thoughts on Git vs complexity

I originally  wrote this  in the Git For Human Beings mailing list. The thoughts are stolen from Rich Hickey's Simple Made Easy talk . (Matthew McCullough  commented the same parallel  the same day, but I think his timestamp was a few hours afterwards). I wanted to tweet about it, but it ended up being a whole post, as I'm trying to gather my thoughts on it for my next Git talk . There's simple stuff, and there's easy stuff. Simple means the opposite of complex. Easy, on the other hand, means it's very close to the stuff you already know. Git is "simple" but hard. Subversion is "easy", but eventually complex. Git is *a lot* of features in one tool (think of the 100+ git plumbing commands). Each feature is simple, but learning to use them together is good bit of work. As soon as you've understood the model and you get that Eureka-moment, the tool never fails you, and you find it more and more fun to use the more you learn. (Th...

Presenting Git on Windows at the next Bonn-to-Code.net meeting

Update 18.11.2011: Due to Gad J. Meir visiting Bonn-to-Code.net all the way from Israel, we've postponed our talks that were planned for the 28th of November. Most likely I'll be doing the talk near the end of January next year instead. It's been a while since I ran Visual Studio on my laptop. In my early university-college days, around ten years ago, .NET was just coming out of the oven. We learned algorithms and data-structures doing Java, but when it came down to actual application development, desktop- and web, connecting GUI's with databases, .NET was the thing. I liked it. It was bit of an eye-opener for me, that I could actually use programming for building useful stuff, and not just fantasize about being a game developer. Later on, I fell back into the Java/J2EE world, and rode there for a while. While working for Objectware 's Java department, it was always interesting to see what the .NET department was up to, and while they were part of them evil ...

Be a Good Audience

So I'm sitting here reading Scott Berkun's  Confessions of a Public Speaker , pretty good book by the way (from the Viaboxx library). I'm just through the chapter about "Working a hard room". And then it hits me:  I actually spend an effort being a good audience at talks . I go to the odd conference and user-group meeting, and whoever is speaking, and even if the talk is not hitting home with me, I always try to... Sit down in the middle, close to the speakers where they can see my face Focus my full attention on them - no smartphone/laptop React to what they're saying with my face, friendly smile when they say something smart, raise my eyebrowsand smile  when they say something surprising Laugh at their jokes (I mean, not fake laugh, but be open to laugh) Ask questions when I wonder about something Hold my criticism till after the talk, if any, and give it in person Think about and note any questions I'd like to ask in the Q&A A good spea...

Why Releasing More Frequently is Good For You

So I was thinking a bit about frequent releases. There are many agile books and articles that explain how more frequent releases are a good thing. However, to many people in management, this is counter-intuitive. They say "Slow means safe. Slowing down means more time to improve quality, more time to test, and more time to fix bugs. Also slow is cheaper, because it's less overhead costs." I've seen a lot of projects where release frequency slows down, especially after the initial development burst and launch of a product, and I think this is a shame. So how do I go about explaining people that the slow-means-safe line of thought is wrong? I've come up with a little model I'd like to go through here. I start off with defining a  Rate of Development , which we'll assume is constant throughout the model (leaving out factors as motivation and skill). Now, having a high rate of development is not worth anything if we're not Doing  t he Right Thing ....

Git-SVN Mirror without the annoying update-ref

This post is part of  a series on Git and Subversion . To see all the related posts, screencasts and other resources, please  click here .  So no sooner than I had done my git-svn presentation at JavaZone , I got word of a slightly different Git-SVN mirror setup that makes it a bit easier to work with: In short, my old recipe includes an annoying git update-ref step to keep the git-svn remote reference up to date with the central bare git repo. This new recipe avoids this, so we can simply use git svn dcommit   directly. So, longer version, with the details. My original recipe is laid out in five steps: Clone a fresh Git repo from Subversion. This will be our  fetching repo. Set up a  bare repo. Configure pushing from the fetching repo to bare repo In the shoes of a developer, clone the repo Set up an SVN remote in the developer's repo In the new approach, we redefine those last two steps: (See the original post for how to do the fir...

My JavZone git+svn talk is online

This post is part of  a series on Git and Subversion . To see all the related posts, screencasts and other resources, please  click here .  Update : I've also shared my notes from the talk.  Here they are . So, the Cisco/JavaZone folks were lightning fast and uploaded the recording of my session at JavaZone the day after I held it. Here it is: Living with Git and Subversion in Parallel from JavaZone on Vimeo . You'll have to watch it fullscreen and in HD to follow the command line action, I reckon. I think this marks the climax, and probably the end of my adventures with git+svn. I mean, we're still using it at work, and I'll still help people with it when they ask on the "Git for human beings" mailing list . However, I won't submit it to any more conferences or user group meetings. It's been a really interesting topic, and an important one. The resources-page has gotten 6000 views (plus a lot more on the blog posts), and the screencas...

New job

In the end of June, I left IP Labs to work as a developer at Viaboxx Systems . I had a great time at IP Labs, and learned a lot there, but it was time to try something different. Viaboxx is a small company, much like a startup (although a bit more established). It's a small team of excellent professionals, and they are agile to the very core, much to my liking. I'm learning a lot: Groovy, Grails, with options of doing JavaScript and even some native platform dev in the future. But my favorite part is that I get to work on a whole product. From the user experience in the front-end, through software to the hardware components, the whole team is responsible for making it as good as can be. And just to mention a couple of perks: Waiting for me on my first day was a brand new top-o-the-line 27" iMac. We've got 20% innovation time (FedEx days). We work in a villa. We cook and eat together every day. And the company is sending me up to Oslo for the JavaZone X conferenc...

Speaking at JavaZone 2011

Some weeks back I got word that my Git-SVN talk got accepted for JavaZone ! Last time I attended JavaZone was in 2008, where I did my talk on Web Testing (video available). Since then I've moved to Germany, and haven't really had the chance to attend the conference. However, I've heard its kept getting bigger and better every year, and I have no doubt this is the best Java conference in the world. So I'm really looking forward to coming back there, meeting a lot of old friends, and learning a whole lot of new stuff. This year marks JavaZone's 10th anniversary, and as usual their marketing is hilarious: So, see you in Oslo, early morning Wednesday the 7th of September!

2nd day at GearConf

I was gonna post this Friday evening, but I got knocked out by a cold over the weekend. Anyhow, here's Friday's highlights from GearConf the way I remember it: Stephan Hochdörfer did a talk on building software using generators and DSLs. The message didn't quite reach me, but the idea of generative programming was interesting enough. Some concrete examples and demos would have helped. Afterwards, Martin Geisler presented  Mercurial's Query Language (PDF link)  - which was a really impressive array of features. As is obvious of this blog , I lean towards Git as a favorite SCM, but through this talk I feel I really *got* Mercurial. With bookmarks and queues , it's basically has the same firepower as Git. The only aber aber about Mercurial I find to be the GPL licensing. I reckon this will make it trickier for 3rd parties to implement tool support (example: FogBug's Kiln uses Mercurial ). Onwards to a double talk with Hans Dockter , the Gradle chief. Thi...

Git-SVN talk at GearConf 2011 done!

So, just a quick post to announce that I did my Git+SVN talk today at GearConf . I feel that the talk went pretty well. There were only 45 minutes at hand, so I focused on setting up a Git-SVN mirror with branches and tags . I also set up Jenkins to drive the git svn fetch+git push in the fetching repo, and in the end put the bare repo on GitHub (for full buzzword compliance). If you attended the talk, I would really appreciate to hear any kind of feedback! Either comment here, or rate my talk at SpeakerRate.com . Otherwise, 1st day of the conference was great! I got an introduction to Chef from Martin Eigenbrodt , heard an eloquent Maven rant from  Halil-Cem Gürsoy , and  Michael Leibfried talked about how to introduce Scrum in hostile environments. All really interesting talks. Also speaking in the revision control department was Stefan Lay presenting the awesome upcoming EGit 1.0 release , and Martin Geisler , a fellow Scandinavian, presented Mercurial, where h...