Saturday, March 03, 2007

New Continuous Integration server - CruiseControl.rb

CruiseControl.rb. It's very nice.

And it's based on Ruby on Rails.
Reading its code is a fun, too.

I heard that the version 1 would be released soon.

Thursday, March 01, 2007

Allowing Remote Login with SSH on Mac OS X

Sounds silly but took a while to figure out how to allow SSH access on Mac OS X.
I expected that it would act the similar way as in Linux.
But it was different, at least from user interface.

Just to remember for myself, this is what I did:
"System Preferences" -> "Sharing" -> "Services" -> Check on "Remote Login"
Also activated Firewall:
"System Preferences" -> "Sharing" -> "Firewall" -> Click on "Start" button

The main problem is that Google search doesn't provide the answer.
When I search for an answer for Linux related question, Google search usually gives me a very good hit. But that is not the case for Mac OS X.

Sunday, February 18, 2007

Super Developer as recruiters said

At one user group meeting, recruiters said that companies are asking for so-called Super Developer, who can use e.g. Java, PHP as needed.

At that time, I thought that it is difficult to be such a developer unless you are in an Agile software development environment, especially, Extreme Programming using Pair Programming.

In Extreme Programming, developers work on different tasks, e.g. front-end, server-side, database, environment settings, switching to work on different tasks often. But if you work in non-Agile environment, you are only assigned to one task, such as front-end GUI development and you never have a chance to even look at the code for the rest of the system.

One recruiter said that you need to be able to work on both Agile and non-Agile environment. Of course, she is just a recruiter and doesn't know what is actually involved in software development. But you can't ask a developer to be a Super Developer while you are demanding him/her to work in non-Agile environment.

Also, I thought that they are missing that each language has its pitfalls. How can one person know the pitfalls when he/she is working on many languages for a short period of time each? What I observed from those developers is that they tended to use wrong solution for each language because they didn't know that there is a better proper well-established solution in a particular language because he/she hadn't had enough time to learn about them.

I also think that it may be an organizational problem in the companies that they demand Super Developer. Aren't they using improper stale technologies instead of improving to use better technologies that have learned from the mistakes made by other technologies in the past? If that's the case, even if the companies bring Super Developer, he/she cannot solve the fundamental problem and as he/she works in such an environment, he/she eventually stops being Super Developer because he/she is constrained to use only the technologies the companies force.

Instead, I agree with what Scott W. Ambler said in his essay on Generalizing Specialists.

Friday, February 16, 2007

Set up Pound to use HTTPS with Mongrel

I wanted to use HTTPS and followed what is written in Pound Best Practice Deployment and Pound Installation mostly. Also Think Again! >> Mongrel is useful.

Briefly, the following is what I did:
1. Install Pound
$./configure --prefix=/usr/local
$ make
$ sudo make install
2. Update mongrel to 1.0.1 (because I had one older one)
$ gem update mongrel
3. Install mongrel_cluster gem
$ gem install mongrel_cluster
4. Configure Pound
4-1. Created pound.cfg under /user/local/etc.
4-2. Filled the pound.cfg with the following content:

ListenHTTP
Address 0.0.0.0
Port 80
Service
BackEnd
Address 127.0.0.1
Port 8000
End
End
End

ListenHTTPS
Address 0.0.0.0
Port 443
Cert "/usr/local/etc/test.pem"
# pass along https hint
AddHeader "X-Forwarded-Proto: https"
HeadRemove "X-Forwarded-Proto"
Service
BackEnd
Address 127.0.0.1
Port 8000
End
End
End

4-3. Generated test certificate
$ openssl req -x509 -newkey rsa:1024 -keyout test.pem -out test.pem -days -nodes
5. Configure Mongrel Cluster and start Mongrel with Cluster
$ cd railsapp
$ mongrel_rails cluster::configure -p 8000 -N 1 (I set the number of clusters to be 1.)
$ mongrel_rails cluster::start
6. Start Pound
$ sudo pound -f /usr/local/etc/pound.cfg

Note:
The following command shows Help for Mongrel (e.g. "mongrel_rails cluster::stop" to stop Mongrel with Cluster):
$ mongrel_rails help

Tuesday, February 06, 2007

Friday, February 02, 2007

Uncle Bob's blog about Specs vs. Tests

Specs vs. Tests.

I like RSpec myself and Behavior-Driven Development in general.
But never thought of it in the way Uncle Bob described.
Also the comments to the blog by Michael Feathers and others are interesting.
Interesting reading.

I just wish I could work with developers like them.

Wednesday, January 24, 2007

I thought using Mac was easier than Linux...

I was just trying to add a group, which is a very easy thing to do in Linux, especially when using GUI.
But it turned out that it is such a pain to do so with Mac OS X. Maybe it's because I'm new to it and not familiar with it. But I wonder if it is because of OS X or FreeBSD.

Also I found that copying and pasting an application on Desktop actually copies the entire application to the Desktop folder instead of creating a short cut on it like in Linux. So I opened a terminal window and created symbolic link inside the Desktop folder. But I wonder if general Mac users would do that or even know what symbolic link is.

It seems that I have a lot to learn. Despite of it, I'm enjoying using Mac. It's just that so far, Ubuntu is much easier to use for me.

Monday, January 15, 2007

Installed Ruby on Rails and Subversion on MacBook

Locomotive didn't work well or I don't know enough about it. Also I couldn't use Eclipse with it.

So I installed Ruby on Rails and all the dependencies from command line, including compiling Ruby from src.
Certainly my experience of installing it from command line on Ubuntu in order to install the latest one instead of the older one installed by packaging tool helped me.

Also installed Subversion server.
The steps I had to take reminded me of what I had to do when I installed it on Ubuntu.
But this time, I installed everything under /usr/local instead of using the packaged ones for the depending libraries. So it involved more.
Those libraries are in addition to what is written in Dan Benjamin's blog.

But I liked the process because it was Unix/Linux-like. Of course, it is Unix.

The steps I took for Subversion installation are as follows:

1. Install Apache Portable Runtime.
1-1. Download src.(http://apr.apache.org/download.cgi)
1-2. ./configure --prefix=/usr/local
1-3. make
1-4. sudo make install
2. Install Apache Portable Runtime Utility.
2-1. Download src. (http://apr.apache.org/download.cgi)
2-2. ./configure --prefix=/usr/local --with-apr=/usr/local/
2-3. make
2-4. sudo make install
3. Install WebDAV neon.
3-1. Download src. (http://www.webdav.org/neon/neon-0.25.5.tar.gz)
3-2. ./configure --prefix=/usr/local --with-openssl --with-ssl
3-3. make
3-4. sudo make install
4. Install Apache to eliminate warning during ./configure for subversion.
4-1. Download src. (http://httpd.apache.org/download.cgi)
4-2. ./configure --prefix=/usr/local --enable-module=so
4-3. make
4-4. sudo make install
5. Install Apache Portable Runtime iconv.
5-1. Download src. (http://apr.apache.org/download.cgi)
5-2. ./configure --prefix=/usr/local --with-apr=/usr/local/
5-3. sudo make install
6. Install Subversion.
6-1. Download src.
6-2. ./configure --prefix=/usr/local --with-openssl --with-ssl --with-zlib --with-apxs
6-3. make
6-4. sudo make install

Sunday, January 14, 2007

I've got MacBook!

I have just got a MacBook two days ago.
I'm enjoying using it.

Since I like Ubuntu, I installed it on VMware Fusion (Mac version of VMware) on it.

I still have a lot to learn about MacBook. It's different from Linux and what I'm not familiar with is how to manage applications, which you can do with apt-get, yum, etc. on Linux. Also the directory structure itself.

The next thing I do is to set up Ruby on Rails on it.

Well, I kept the promise to get one with a speaker at No Fluff Just Stuff conference last September. Of course, many other people recommended, too.

Tuesday, January 09, 2007

James Bach's talk: The Unbearable Lightness of Model-Based Testing

There was a talk by James Bach this evening.

The talk itself was OK. But the Question and Answer session was very interesting. Many good points and interesting concepts. "The Law of Leaky Abstractions", Pair Testing, Blink Testing (which is based on the functionality of a certain region of frontal cortex), etc.

From his past presentation, I knew that his background was from exploratory, more like hacking style. With that knowledge in mind, what he said today had good points.

Thursday, January 04, 2007

Most problems come from what is not written in specification

I spent the New Year's Eve at a small town and had a chance to have a dinner with someone who owns a software business.

He mentioned that most of the problems come from what is not written in the specification. And that big companies deal with it by making smaller contracting companies work long-hour over-time, which I think is terrible.

He was not familiar with Agile software development.
I mentioned that the essence of Agile software development is to accept the reality of what actually happens in software development and to deal with it. What those big companies are doing is completely wrong.
It seems that people who are not familiar with Agile software development is also noticing what it is identifying.
I felt that more people are in the same page with us.

Anyway, I enjoyed the conversation with him.

Friday, December 22, 2006

RailsConf 2006 Keynote speeches

There are good keynote speeches from RailsConf 2006.
You can view the video from here.

I watched the speeches by Martin Fowler and Dave Thomas.
I totally agree with Martin Fowler. What he mentioned is one of the main reasons why I like to use Ruby on Rails.
And Dave has good points.

And also watched the one by David Heinemeier Hansson at the local Ruby Users Group meeting recently.
Here is the slide for it. It is eye-opening.

I simply enjoyed listening to their talks.

Friday, December 15, 2006

Good and Bad Procrastination

XPToronto's post with link to Good and Bad Procrastination shed some light on my current situation.
I felt a little good about myself.
Mastering Ruby on Rails and using it in Agile way is important to me.
Even though I'm not earning money to make a living in order to give time to do so, it is a good way to spend my time.

Monday, December 11, 2006

Java SE 6 released!

Java SE 6

Things have been changing. Improvements have been done.

After I'm done with mastering Ruby on Rails following Dave Thomas and David Heinemeier Hansson's "Agile Web Development with Rails" cover to cover, I may go back to Java and try Java SE 6.

Saturday, December 02, 2006

Raptors Win! Raptors Win! Raptors Win!

My another passion, basketball, both playing and watching.
Yesterday, I had a chance to watch NBA Toronto Raptors home game.



Wednesday, November 29, 2006

Ubuntu 6.10 as a development platform

Ubuntu is very nice. Especially as a desktop.

But I was trying to use Ruby on Rails on it. And many necessary libraries were missing, such as gcc, etc.
So I had to do, "apt-get install build-essential", etc.
I don't mind doing it.
But it was just time-consuming to find the information.
I wish at least the minimum ones are already installed by default.

Thursday, November 16, 2006

Agile Vancouver 2006 - Speed Geek - Tools Demos, etc.

I liked the Speed Geek session after hours and fish bowl was especially good.

In the Tools Demos, one guy showed Google Stacks. One of them was Google Docs.
When I was going to write my blog, I found a new feature to import from Google Docs.
So I'm trying it out now.
I'm writing this in Google Docs and I'm gonna export it to the Blogspot (Google Blog).

Agile Vancouver 2006 - Speed Geek - fish bowl: Tools support for interative usage

There was half an hour fish bowl session.
The topic was "Does Agile development need a tool?"

At one time, I walked to and sat on one of the chairs in the middle and talked about my opition about tools in Agile development.

The point I made was that it is important for any tools we use should have bare minimum simplest features needed at any given point of the time in the project and as a need arises, we can plugin a necessary minimum feature or unplug an unused feature.
In other words, they should have plugin capabilities to allow iterative usage.

Analogy I used was Eclipse. When you download Eclipse, it has only bare minimum features and depending on your needs, you download the necessary Plugins.

I was glad that I got positive responses to what I said. I guess I made a good point.
Now I like the term I came up, "Iterative Usage."

OOPSLA 2006 - fifth day

To be added.