Author Archives: Sudhakar Ramasamy

Exploring Design Patterns in the JDK

Design Patterns are software design solutions that can be applied in our daily software development to help us develop code that is flexible, resilient to change and easily understood (when you are familiar with the pattern). The JDK APIs employ patterns in several areas. So even if you aren’t familiar with patterns if you’ve programmed in Java, you’ve been developing against APIs that have been built using patterns.

Continue reading

Avoid merge hell when committing from Git to a Subversion repository

Previously (I sound like an episode of desperate housewives!) we saw how we can easily commit an existing Git repository into Subversion. That was great and we can commit changes to our git repository and execute git svn dcommit all day long to send the changes up to Subversion. Now things get a little hairy when you throw a second developer into the mix who is committing to the same Subversion repository.
Continue reading

How to commit an existing git project into Subversion

In my last post I mentioned how Git’s stash feature finally convinced me that it made sense in my subversion world. Well, once I was well underway on my new project, I’d reached the point where I was ready to commit version 0.1 to subversion. Googling for how to commit a Git project into Subversion will lead you to a few resources. The one that was spot on with a minor wrinkle was this post. I’ve taken what Brandon posted there and condensed it here with the update for the –root option for the rebase command.
Continue reading

One good reason why Git makes sense

When I first heard about distributed version control systems and Git about a year and a half ago, I was very much a Subversion user both at work and at home. I knew how to setup Subversion, it’s ACLs and make it available over http via Apache. You could say I was committed (pun intended). And then all this noise about DVCS and in particular Git and I was wondering why in the world would anyone give away control over their code repository. If I wanted to work disconnected from the network (say on the airplane like everyone seemed to want) I would just work and worry about checking things back in when I connected to the network next.

In spite of being a non-believer I stayed with Git and what seemed like the hype around it. I read up on it and I even got myself an account on github and setup a few projects there. Git seemed interesting but it wasn’t really solving any problems for me that Subversion wasn’t already. And then I had my first ah ha! moment yesterday.

Continue reading

Musings of a SpringOne 2009 Attendee – Day 4

This is the last and final part on my SpringOne 2009 experience. It’s late catching up to the 3 earlier posts but it’s here now. This post summarizes the sessions I attended from day 4 and wraps up with a summary of my take aways. If you want to catch up here are the three earlier posts:

  1. Musings of a SpringOne 2009 Attendee Day 1
  2. Musings of a SpringOne 2009 Attendee Day 2
  3. Musings of a SpringOne 2009 Attendee Day 3

Read on for day 4.

Continue reading

Running a Technical Book Club – Take 1

Last year I coordinated a technical book club here at Source Allies. This was my first experience doing one and I wanted to share my experience for the benefit of others who may be looking at starting one.

The fact that we even started a book club was a big positive because it is one great way to geek out with very smart people. You get the opportunity to voice your opinion on a certain topic and hear counter-points or similar views that expand your own perspective. Continue reading

Unplugging an LVM partitioned USB drive

Recently I had the heartbreaking experience of having to reboot a Linux server. Normal usage should almost never require you to reboot the OS like you have to so frequently in Windows. In this case I had an external USB drive partitioned with LVM humming along on a Linux server. I needed to pull the drive, so like I’ve done with other drives I unmounted all partitions on the drive. Then proceeded to unplug it from the USB port. All well and good. But when I plugged it back in, the lvs command was showing error messages on the partitions and I was unable to mount them.

Some Google searches later I found that when it comes to LVM partitions the OS keeps references to it unless you explicitly tell it to unhook them. Only then can you tell the OS to hook the LVM partitions back up when you’ve plugged the drive back in. In my case I had to resort to rebooting the server in order for the OS to hook all the pieces together for the LVM partitions. Short of this I would have to manually delete certain files and move things around to get the LVM partitions to work again. So here are the magic incantations that will save you the headache.

Before you unplug an LVM partitioned USB drive, you must run the following commands:

lvchange -an /dev/your_volume_group_name
vgexport -a

Use the man command to explore what these commands do.

Now you should be able to unplug the drive. When you are ready to plug it back in, stick it back in the USB port and run the following commands:

vgimport -a
lvchange -ay /dev/your_volume_group_name

You should now be able to run lvs and see you LVM partitions on the USB drive without any errors and proceed to mount the partitions.

Hope you found this useful. Are there other or different ways of doing this? Please add your comments below and Happy Holidays!

Musings of a SpringOne 2009 Attendee – Day 3

Agile Architecture – Technologies and Patterns – Kirk Knoernschild

Some of the questions this session set out to attempt to answer were

  1. What is architecture?
  2. What defines architecture?
  3. What are architectural decisions?
  4. Is architecture a forward only decision?

Several definitions of Architecture were quoted from prior literature. Such as architecture being the the shared understanding of the system being built. Shared understanding between a group of people who need to communicate about it — developers and architects, or technical and management etc.
Lean principles are you delay Continue reading

Musings of a SpringOne 2009 Attendee – Day 2

Running a day late on my posts. Here’s day two (yesterday)

Grails Quick Start – David Klien

David walked through the creation of a Grails web application to track a JUG’s meeting schedule. I liked his presentation style or maybe because the room wasn’t very crowded things just registered better. Picked up a few tips such as the Bootstrap class. Grails still has a ways to go in the eclipse tooling. It would’ve been nice to have been able to File –> New Project and follow along. Too bad IntelliJIDEA CE doesn’t support grails though there has been plenty of buzz on the latest STS. Downloading this right now. Only 3 more hours for the download to complete!

I think I’m beginning to dig duck typing. All in all the presentation encouraged me to put my head down and hammer out a sample app to start building some grails knowledge. More homework! Continue reading