home · blog · groups · about us · contact us
DevelopmentNow Blog
 Friday, May 18, 2007
 
 

FYI I started up a new VSN on Ning called GeekBuddy. You can find it at geekbuddy.ning.com. I built it mostly to learn more about the Ning platform, since I think it'll be a viable candidate for people & organizations who want a straightforward, attractive, hosted social network. You can even request the source code (as I have) & make direct modifications. I'll post more thoughts on Ning as I work with it more, but for the time being, if you want to join the GeekBuddy network and say hello, that would be awesome. :)

There are at least two things about Ning that make it not right for everyone, though:

  1. It's a hosted solution, which means you don't have full control over performance, uptime, and upgrade schedule.
  2. You can't 100% remove all Ning.com branding (although you can remove a lot of it). So you don't have a fully-encapsulated user experience, and people will know you used Ning to make your site (which isn't necessarily bad).

For point #2, I think some people worry competitors will see that they used Ning & quickly crank out a clone. I don't think it's as much of an issue as one would think -- for example, no one has that concern about putting a forum on their web site, even though forum software is (now) easy to install.

If your competitors are smart, they probably already know about Ning or some other quick SNS solution. And since software is becoming increasingly commoditized, the way you beat your competitors isn't going to be the software -- it'll be things like your capital, partnerships, content, creativity, marketing, and any customizations you've made to the platform.

Of course, it would be better if your competitors didn't find out about how easy it was to make a social network, but anyhow...

May 18, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Monday, May 07, 2007
 
 
I wrote about being able to use TFS with Visual Studio Pro before, since the typical instructions are to uninstall VS Pro, then reinstall VS Team Suite. However, I am happy to announce that the instructions in my previous post are correct & do work. So I saved, oh, like 4 hours.
May 7, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Saturday, May 05, 2007
 
 

I found a good script for backing up MySQL databases that's simple to install and configure -- automysqlbackup (alternate sourceforge link). I suggest reading Marius Ducea's post about automysqlbackup for some tips on how to use it, but you basically download it, edit a few settings at the top (e.g. database connection info), make the script executable, and then either run it manually or add it to a cron job for regular scheduling. It uses the well-known mysqldump utility to make organized directories of backups, and it rolls backups so you don't end up with a bajillion dump files after running it for a month.

MySQLhotcopy is another Perl script (that isn't based on mysqldump) that can also back up your MySQL databases. It actually backs up the database files themselves instead of creating a big text dump, and some people say it's faster and better than mysqldump-based solutions, especially for very large and/or active databases. I haven't used MySQLhotcopy, but it may be worth checking out if for some reason automysqlbackup or mysqldump won't work for you.

Lastly, 33% of our readers submitted this great tip for copying a MySQL database from one server to another (thx Scott):

mysqldump --opt --compress --user=USERHERE --password=PWHERE
 --host=SOURCE.HOST.HERE SOURCE_DB_NAME | mysql --user=USERHERE
 --password=PWHERE --host=TARGET.HOST.HERE -D TARGET_DB_NAME -C
 TARGET_DB_NAME

Note that it should be entered all on one line.

May 5, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Friday, May 04, 2007
 
 
Dan North has a nice intro to BDD over on his site. BDD = Behavior Driven Development, an evolution of TDD (Test Driven Development). He also has some other blog posts about BDD that help illustrate the difference between BDD and TDD and explain why BDD isn't just TDD with prettier names.
May 4, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Tuesday, May 01, 2007
 
 

I've been doing some work with full-text searching in MySQL lately & came across a few solutions that could really use a wiki. So I wanted to recommend a free, hosted wiki solution, but the only one I've used is Wikispaces (which IME is slow & annoying). But I learned/read about a few others, so here's a short list of free, hosted wikis, in case your community needs a wiki, but you don't want to bother with installing/hosting one yourself:

There are many others, of course -- wikipedia has a big list of wikifarms showing which ones are free. The biggest risk in using a third party wiki IMO is that they have your data, and if it's a free plan and/or a small company, what guarantee do you have that your content won't go "poof" one day & disappear? Oddwiki (one place you can get a free wiki) even tells you

"Nothing is permanent. Use at your own risk. We plan to delete all wikis that were not edited in 180 days"

Heh. So, that's one reason I'd go with a bigger provider if you don't feel like installing your own wiki (which is pretty easy to do if you have a server you can install one on).

 

Hosting | Web
May 1, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Wednesday, April 11, 2007
 
 

I've been trying to do more meeting and networking here in Portland, OR, and I also enjoy a good cup of joe. And I need to get more anyhow since I work from home. So when I read some posts about Open Coffee Club, I thought that sounded like a great way to interact, socialize, & meet some of the other web-centric folks in PDX.

"The OpenCoffee Club was started to encourage entrepreneurs, developers and investors to organise real-world informal meetups to chat, network and grow."

Since there wasn't one listed for Portland, I decided to register an Open Coffee Club for Portland. If you're in the area, feel free to swing on by. I'm not yet sure when the best time/place to hold the meetings is, but I figure that can be ironed out.

April 11, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Tuesday, April 10, 2007
 
 

I may have mentioned before that I'm doing a LAMP project these days (among other things). As I go along I'm taking notes on various tasks, etc. so I figured I could post some of them to my blog. Currently the site is hosted on a virtual dedicated server running Fedora Core 4. Anyhow...

Logging MySQL Queries

You may need to turn on query logging for mysql from time to time in order to see what SQL is being passed to the database. Here's how to do so in Linux. This makes some assumptions about directories, so you may need to execute the commands in different places depending on your setup. FYI, I did the following on a Fedora Core 4 distro. Also, if you're running a busy server, your query log will probably get really huge, so be forewarned! I wouldn't leave query logging running all the time, or at least not on a production machine.

Anyhow, shell into your server, log in with an administratively enabled account, and follow the below steps.


Create the MySQL logging file

If you haven't created the MySQL logging file before, you'll need to do so.

First create an empty file with

touch /var/log/mysqlq.log

That makes an empty file. Now change the ownership to the mysql account to it via

chown mysql /var/log/mysqlq.log

Now the mysql user account can write to that file.


Enable MySQL logging

Now you need to stop mysql

/usr/bin/mysqladmin -u root -p shutdown

you'll be prompted for the root password, enter it and mysql will shut down. You may need to hit ENTER after you get the shutdown message in order to get your prompt back.

Now start mysql with logging enabled.

/usr/bin/mysqld_safe --log="/var/log/mysqlq.log" &

The trailing ampersand is important, otherwise you won't get your shell prompt back.

You should see a message about logging and mysql starting. Hit ENTER to get your shell prompt.


Using the Log

You can now run some web sites or do some things that query the MySQL database and the results should be logged.

You can look at the log using vim or other editors. You can look at the last 100 lines of the log via

tail -100 /var/log/mysqlq.log

Note that your log will get pretty big, so to turn off logging, stop MySQL using the shutdown command above, and then start it back up with

/usr/bin/mysqld_safe &


Clearing the Log

You may want to clear your log from time to time if it gets too big. To do first, first make sure that MySQL is not currently logging to the file. You can see if any process is accessing the log by running this command & seeing if anything is returned. If no lines return then nothing is using the log.

fuser /var/log/mysqlq.log

Before clearing the log you could make a backup of it using

cp /var/log/mysqlq.log "$(date +%Y%m%d)-mysqlq.log"

That will create a copy of the log file with today's date in the filename, e.g. 20070408-mysqlq.log

You can then clear the log file using

> /var/log/mysqlq.log

Yes, you type the > in that command. :)


Troubleshooting

If you don't see commands being written to your log, look at the /var/log/mysqld.log log file to see what the problem is.

April 10, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Sunday, April 08, 2007
 
 

Well it's been a while since I wrote something, and even longer since I wrote something management-related. So I need to play a bit of catchup.

Programmer To Manager

Before I came to Portland, I was the software development director at ShopLocal, a Chicago-based startup that did a lot of growing, a lot of changing, graduated to medium-business status, did some acquiring, got acquired, and became a popular comparison shopping site, among other things. I was with ShopLocal for over 6 years and started out in 1999 as the (main/only) programmer, working in ASP, VB6, and COM+. The company grew & grew, and over the years I had the opportunity to move up in leadership roles, first as a team lead, then manager, then director.

Towards the end I still considered myself a technical person, but I didn't do any programming, and instead dealt with staff, departments, projects, clients. It was an interesting transition, from programmer to manager, and when I left ShopLocal I thought it would be helpful if I wrote down some of the things I learned and/or struggled with, since I felt that there would be a lot of programmers & other techies who would become managers, some reluctantly, some willingly, some in order to get a pay bump, some to grow professionally, and some in order to stay employed.

Whew. Ok, that's out of the way. Blah blah blah, I wanted to write stuff for new programmer-turned-managers. :)

New Managers Need a New Focus

Anyhow, if you're a new IT manager, and you used to be a programmer or other technical person, you have a new focus and role that you need to bear in mind. I'll just assume you used to be a programmer, but you can mentally substitute in what you used to do.

When you were a programmer, your goal was pretty much to produce code. Your personal technical productivity and effectiveness was the measure of how valuable you were to the company and how well you were doing your job. Sure you mentored others, worked on a team, collaborated on things, etc. But at the end of the day, it was mostly about how well you could produce.

As a manager, it's different. The technical productivity and effectiveness of your department (or team, or group, or whatever) is the new measuring stick. You are judged on how well your team does as a whole -- your personal productivity doesn't matter.

Your personal level of technical productivity is of secondary importance. I can't stress that enough, because many new IT managers (myself included) go through a phase where they're trying to "be a manager" but also crank out code, and they sometimes find themselves doing programmer-type tasks because they are "better at it," or they're the only one who knows how to do it, or it's fun, or it's "only an hour" of work, or whatnot. Don't fall into that trap.

To be a good manager, you need to make sure that your department is producing at optimum level. If you're still cranking out code at a rapid clip, and everyone else in your department is under-utilized, or coding slowly, or putting out too many bugs, you have failed. It doesn't matter if your personal code output is stellar.

Your Department is Like a Web Server

Think of it in terms of multithreaded applications, e.g. a web server. Web servers get tons of simultaneous hits, and their output is measured in requests per second. In order to have a fast web application, the total output of all involved threads is what matters. If you have one thread that's really fast, and all the other threads are dog slow, that's not as effective and scalable as if all threads are decently fast, but you can scale out to dozens or hundreds of threads.

You should keep that in mind as you ponder the question, "now that I'm promoted to manager, how can I be even more valuable to the company than before?" Because that's the truth -- you got promoted, and the last thing your company wants is for the IS department to get worse (other than an initial adjustment period). The irony is often really good programmers have an opportunity to get promoted to managers, which can be a big initial blow to the team's productivity. So to be a successful programmer-turned-manager, how can you help the company produce even more software before, when you're no longer coding as often or at all? The key of course is to ensure that your staff becomes more productive. Think of your staff as the threads of a multithreaded application, and work on ways that each of them can be more effective.

That may be harder than you think. If you were a good programmer, think about why you were good. Was it because you typed quickly? Was it because you knew the API and coding environment? Were you good at managing scope and detecting pitfalls ahead of time? Did you estimate well? As a manager, you'll have an opportunity to teach your staff some of your tricks. Plus, you'll probably be involved in projects enough to still utilize some of your skills (e.g. detecting project pitfalls).

Ok that's probably enough rambling for now. Remember, you are now orchestrating a multithreaded application, and your goal is optimimum combined output. Don't worry about the performance of a single thread (e.g. you) if the other threads (e.g. your staff) are doing poorly or average. Instead, focus on ways to make most or all threads better. You can cherry pick caveats to this, but you need to focus in the right direction first.

April 8, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [1]