TextMate extended attributes corrupting files

My development setup right now is a VirtualBox Ubuntu Server x64 guest running on OS X Snow Leopard. I use the VBox shared folder feature to share the document root of the sites I’m working on from OS X to Ubuntu, and edit the files natively using TextMate on OS X. This setup has worked very well for me, as I can emulate the server environment my apps will eventually deploy to (as well as reap the benefits of Ubuntu’s much-superior-to-Apple’s command line). I have no need to buy any third-party ssh-mounting software; it is a completely turnkey solution.

Except for one minor flaw:

Posted in Uncategorized | 1 Comment

Discounted Cash Flows and Software Development

In finance, there is a concept called discounting cash flows. The idea can be summed up as the following: since money earns interest over time, $1 today is worth more than $1 a year from now. Adjusting for the time value of money is called discounting a cash flow.

There’s a parallel here. When doing a startup (or nearly any type of software development), code written sooner is worth more than code written later. Discount your code flows. The sooner the code is written:

  • the sooner you can start validating ideas internally
  • you can release to customers
  • you can get feedback from customers and iterate on it
Posted in Uncategorized | Leave a comment

Cloudspace is Getting Ready for Halloween

Try JibJab Sendables® eCards today!

I think that Roozbeh has a bit too much time on his hands…

Posted in Uncategorized | Tagged | Leave a comment

Agile Principles #6: Say it to my face.

The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.

I’ve previously mentioned we have an IRC channel. That’s due to practical considerations. When we need to frequently and quickly share information among a group of people who deal with each other often throughout the day (and are generally on the same page to begin with), IRC will work. Notice how many qualifiers I put on that sentence :D

Posted in Uncategorized | Leave a comment

Testing the Halting Problem

I wrote a piece of code recently to follow a linked list. We were linking records together in a way that a few records would normally be grouped together in a tree, with one parent above them all. However, because of the way the records were linked, it was also possible for a loop to occur — that is A would reference B, B would reference C, and C would reference A.

Posted in Uncategorized | Tagged , , , , , , | 3 Comments

Database.yml and multi-stage Capistrano deployment

If you’re using Capistrano’s multi-stage deploy addon, it makes things work really well. Staging servers are excellent for testing and demoing new features and code before releasing it to your users. If you need to change your database.yml files, or another config file, here’s a technique for changing passwords or API keys depending on which stage you are deploying to.

In your main deploy.rb, add an

after "deploy:symlink", :update_config_file
after "deploy:symlink", :update_database_yml

And just throw as many of these in as you need. This will call these tasks no matter which stage you are deploying to (and as an added benefit, if you forget to define a method for a stage, it will error and alert you). Next step is to define an “update_config_file” or “update_database_yml” file for each stage. In your /config/deploy/ path, you’ll have a file for each stage that you deploy to. Go in there and add something like this:

Posted in Uncategorized | Leave a comment

Agile Principle #5: A team of motivated individuals

Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.

This Agile principle is such good business advice, I could approach it from many other non-Agile directions. It almost transcends business and applies to all human endeavors.

Starting with the motivation issue. Larry Bossidy, one of the world’s top CEOs, says that when hiring, a person with absolute determination to succeed will always do better than someone with a high IQ and elite education who is cruising.

Posted in agile development | Tagged , , , | Leave a comment

Agile Principles #4: Product Owner and Engineer relationships

Time for Agile principle number four, where we talk about the relationship between product owner and engineer:

Business people and developers must work
together daily throughout the project.

In the post on agile principle number two, I gave the example of a Secret Santa management system, as an example of how being able to accommodate changing requirements can benefit a project. As a refresher, here’s the key story points of the project:

  • A user should be able to sign up
  • A user should be able to log in
  • A user should be able to get a recipient assigned
  • A user should be able to add notes to their recipient
Posted in agile development, team cloudspace | Tagged , , , | Leave a comment

Cloudspace Testimonials – United for Families

“United for Families has worked with the excellent staff at Cloudspace for over 5 years. Their work is consistently high quality – whether it be in coding or graphics – and they often know what we need better than we do!”

Tammy Tappan, PMP
Systems Administrator,
United for Families

Reblog this post [with Zemanta]
Posted in Uncategorized | Tagged , | Leave a comment

Fast MySQL InnoDB count. Really fast

Last night I was pairing with John on a feature for an upcoming release. I wanted to count the number of rows in a table so we could run analytics and track performance. I <3 metrics, ya know?

“Tim, this is simple. Why are you writing about this?”

select count(*) from messages;

And it is simple. If this were MyISAM. See, MyISAM always stores the number of rows on the table header. So, whenever we ask “how many rows are there?”, it can just grab the count and return it. Not InnoDB.

In InnoDB (for internal reasons), the number of rows has to be counted. Every single time. One of the tables we were counting was over 1.2 million rows. On a small EC2 instance with no other queries/major processes, this takes 1 minute and 20 seconds. This is unacceptable.

Posted in tech | Tagged , , , , , , , , | 1 Comment
Page 7 of 15« First...678...Last »