Thursday, February 9, 2012

Putting Apache in front of Tomcat

Download and install Apache as a service.
Download mod_jk.so and drop in Apache/modules/ directory.
Modify Apache/conf/httpd.conf

   LoadModule jk_module modules/mod_jk.so
   Include conf/extra/httpd-vhosts.conf

Modify Apache/conf/extra/httpd-vhosts.conf

   JkWorkersFile "/Tomcat/conf/workers.properties"
   <virtualhost *:80="">
      JkMount /* ajp13-8080
   </virtualhost>

Start Apache.
Download and install Tomcat as a service.
Create Tomcat/conf/workers.properties

   workers.tomcat_home="/tomcat"    
   workers.java_home="/Program Files/Java/jdk1.7.0_02"
   ps=/    
   worker.list=ajp13-8080 
   worker.ajp13-8080.port=8009 
   worker.ajp13-8080.host=localhost 
   worker.ajp13-8080.type=ajp13 
   worker.ajp13-8080.lbfactor=1

Start Tomcat.

That's it!

Wednesday, January 25, 2012

Presentation - Agile Points FTW!

Download the presentation here: Slide Deck

Abstract:
Why estimate in Points instead of Hours? Come learn how playing poker can give you more productivity at work and eliminate those wasteful estimation processes.

Wednesday, October 12, 2011

Presentation - Hudson/Jenkins: Beginner to Expert

Here is the presentation I gave at COJUG


Abstract:
Come learn appropriate practices for Continuous Integration in an Agile age. Jenkins (a.k.a. Hudson) is a flexible CI solution. I'll walk us through its simple setup, show some of the plug-ins, and then dive into leveraging Jenkins for a multi-application, enterprise solution. I think you'll see that Jenkins can not only perform the CI duties of build with unit tests, but can also serve as a dashboard for numerous deployment and automated tasks.

.

Friday, September 30, 2011

Migrating from Git to Svn and Svn to Git

The following steps will migrate to and from GIT while maintaining all commit history.

svn2git
# First, create a new GIT Repo
# Then, do the following
git svn init <svnUrl>/<svnRepoName>
cd <svnRepoName>
git svn fetch
git svn rebase
git remote add new <user>@<gitRepo>
git push new master

git2svn
# First, create a new SVN Repo (with at least 1 file in it)
# Then, do the following
git svn clone <svnUrl>/<svnRepoName>
cd <svnRepoName>
git remote add old <gitRepo>
git fetch old
git checkout -b old_master old/master
git rebase --onto master --root
git svn dcommit

Wednesday, September 28, 2011

SVN Migrate folder to new repository root

Since I've been asked about Subversion's "svnsync" command more than once, here is a copy of my post on stackoverflow.

The svnsync option worked for me with subversion 1.5.3.

Here is a Windows batch script to accomplish this:

SET OLD_REPO_URL=https://old-project-repo/my-project
SET NEW_REPO_URL=C:/Repositories/new-project-repo
SET NEW_REPO_FILE_PATH=C:\Repositories\new-project-repo

svnadmin create %NEW_REPO_FILE_PATH%
echo exit 0 > %NEW_REPO_FILE_PATH%\hooks\pre-revprop-change.bat

svnsync init file:///%NEW_REPO_URL% %OLD_REPO_URL%
svnsync sync file:///%NEW_REPO_URL%

Note: You will not be able to browse the new repository until the sync is finished.

Tuesday, September 6, 2011

Explaining 'Agile Coach' in Social Circles

It was hard enough for me to explain my job before, when I was an IT Consultant. Half the time I'd say things like: "Well there's my software development job for the client... Then there's the company I work for..."
Now that I am an Agile Coach, it's even harder to explain, and I see people tend to shutdown when I try - i.e. it's too fuzzy and unfamiliar for them to ask any follow-up questions. As a result, sometimes I just resort to saying, "I'm a Software Developer." Problem is, that implies two things, neither of which are true in my case:
  1. That I am a computer programmer writing software.
  2. That I sit in a cubicle all day, getting my "Nerd" on, and not interacting with people.


Here's my latest thought on Explaining 'What I do as an Agile Coach' to Social Circles (i.e. non-IT people at parties, family events, etc.)
  1. I teach IT people on Teamwork.
    - It used to be people sat in front of their computers all day in offices or cubicles (like "Office Space"). Now we stick teams of 10 in a room and make them collaborate and design together. Software Development is a very creative process so we often have toys and colorful rooms like an Art Studio.
  2. I teach IT people about being Transparent. (and honest and realistic)
    - Since we're typically a bunch of engineers - not the most social animals - we are not very good at communicating with the business and users of the applications about issues and progress of their new features of their website or mobile app.
    - So it sounds like Kindergarten, but we write the features on index cards or post-its and stick 'em on a wall. And we talk about them everyday and have demos on work-in-progress frequently with anyone who cares.
    - There are people committing to deadlines and I try to ensure that expectations are realistic given the challenges of creating something that's never been done before.
  3. I teach Managers to Trust.
    - As you can imagine, the transparency thing only works if you have upper management bought-in and trusting that their people are doing the best they can given the circumstances.
    - So instead of managers telling the people under them what to do, I teach them about "servant leadership" which completely reverses their thinking.
    - Instead of command and control, micro-management, I coach the Managers into asking the Teams things like, "What do you need from me today to be successful?" or "How can I help you?". It flips the organization upside-down and the Team begins to feel empowered to work better. They have the full support of their Managers to unblock issues for them and now everyone can work toward the same, common goal of creating a better - and more profitable - company.

Wednesday, June 22, 2011

IDEs for the Polyglot Programmer on Windows

First off, I'm never going to pay for an IDE. It goes against my nature of being resourceful and cheap. Here is what I've found in the Open Source space. I am not talking about pure Java Enterprise development. (For that you should standardize on one of the big 3: eclipse/netbeans/intelliJ). This is for the person who enjoys playing in Ruby, Groovy, PHP, or your language of the day. On a Mac, I'm told the favorite is TextMate. But what should we use on Windows....???

IDE
1. Komodo Edit - very lightweight (50MB RAM). Ctrl+J for code completion. Add-ons are great and done like Firefox add-ons. No Groovy.
2. Aptana Studio - awesome Git integration. it's eclipse with better layout and color scheme. but it's a bit bulky (150MB RAM). No Groovy.

Just a Text Editor with Syntax Highlighting:
Notepad++

No
RubyMine - cool, but only 30-day trial is free.
SciTE Scintilla Based Text Editor - just a text editor. Notepad++ is better.