Wednesday, June 14, 2006

Using GDB to Debug Linux Applications

I had to refresh my memory over the last two week on how to use the debugging application called 'gdb'. I have needed to step through both Pound and Dovecot's delivery applications to help me nail down a couple of tough problems. Debugging Dovecot's delivery application is very simple, so let's walk through it really quickly.

First, understand how the application is normally executed; normally the MTA will pipe in the email content to the deliver process, but we can fake it by using simple re-direction.

>deliver -d kevin@boebel.us < email.txt

But we want to step through the code, so we need to run it through gdb.

>gdb deliver

Before we issue the 'run' command, we need to set a breakpoint, so let's say we are trying to debug this portion of code in deliver.c (lines 540-546)

env_tz = getenv("TZ");
home = getenv("HOME");
env_clean();
if (env_tz != NULL)
env_put(t_strconcat("TZ=", env_tz, NULL));
if (home != NULL)
env_put(t_strconcat("HOME=", home, NULL));


(gdb) break deliver.c:540
Breakpoint 1 at 0x8056e72: file deliver.c, line 540.

Ok, the breakpoint is set, let's run the program, giving it the correct command line arguments:

(gdb) run -d kevin@boebel.us < email.txt
Starting program: /var/home/kminnick/dovecot/dovecot-lda-0.1/src/deliver -d kevin@boebel.us < email.txt

Breakpoint 1, main (argc=3, argv=0xbfffb3b4) at deliver.c:540
540 env_tz = getenv("TZ");

Cool, the program is now getting ready to execute this line of code, let's run some commands to get the value and type of 'home' variable both before and after the line is executed.

First, we need to skip this line of code and get to the next one:

(gdb) n
541 home = getenv("HOME");

Now we can examine the variable:

(gdb) pt home
type = const char *

(gdb) p home
$4 = 0x3f1cd8 "ä[\023"


As you can see, 'pt' prints the type of the variable, and 'p' prints the actual value. The variable is currently pointing to some garbage in memory. Let's execute the line of code and find the value of the variable after it's execution:

(gdb) n
542 env_clean();
(gdb) p home
$5 = 0xbfffdf44 "/root"

This was a very simple example of how to use gdb to debug your applications, next time we will discuss a more complex example on how to debug a program that uses forks and threads. I'm sure you can't wait... :)

Friday, June 09, 2006

Review of 2006 Goals

Today I benched 200 pounds one time. This was my goal for the entire year, so I am very happy with my progress thus far. Now I'm going for 225 by the end of the year.

Here are the goals I blogged about in January for this year and the results thus far:

1. Blog More
I'm definitely doing this, probably boring everyone a bit. :)

2. Go to the Doctor
Hmm...still six months left.

3. Get my weight to 175 lbs
I'm at 167 (I probably started the year around 163), only 8 pounds to go.

4. Oversee the creation the fastest webmail client on the market.
We are very close...

5. Become the best hitter on my baseball team.
We've only had 2 games so far, but our team captain is kicking butt. I'm hitting .375 with 2 RBI and 2 runs scored. That puts me tied for third (with my brother) on the team. We are 1-1 as a team. Mannin, our captain, is hitting .778 with a homer and 4 RBI. I have a long way to go, perhaps second best hitter on the team will be a good goal.

6. Shoot a round of golf under 110.
I've only played 3 rounds of golf this year. All at The Hill in Blacksburg. I have only had time to play 9 holes each time, but I think my scores have been fairly good, 51, 55, and 60. They are actually terrible scores, but I've made a lot of progress since last year. I think I definitely have a shot of getting a round under 110 if I ever find time to play a full 18 holes.

7. Take my family to Disney World.
Done, we had a great time.

8. Successfully manage our ever growing group of developers.
Ask Pat.

9. Bench Press 200 lbs one time
Today I did this, next up 225.

10. Find more time to spend alone with my wife.
Still working on this, but my favorite memory so far this year has to be the great time we had at Bill and Beth's wedding. We also had a great 5th year anniversary weekend. It's amazing how hard it is to find time alone when you have two kids. I'll keep working on it though.

Windows Vista Tips

Thanks to "Rick H." for posting this tips for Vista:

--------
Just a quick note to say that you can change the default search provider in IE7. Click the drop-down arrow at the edge of the search box in the upper right. Select "Find more providers" and see if your favorite is available (most are). Then click the drop-down again and choose Change Search Defaults.

For the admin popups (It's called UAP or UAC depending who you ask), run secpol.msc. Navigate to Local Policies->Security Options. Set UAC:Behavior of Elevation Prompt for Admins to "No Prompt" and UAC:Run All Admins in Approval Mode to disabled. (Use at your own risk!)
---------

I'm not sure how you figured out the UAC issue but what a life-saver that is for me. Thanks! Now if someone could figure out how to get my transparent windows back I'll be all set.

Thursday, June 08, 2006

Windows Vista Beta 2 Review

After my computer decided to stop booting Windows XP Pro I decided to download and install Windows Vista Beta 2. It's been an interesting trial and error experience but I finally have it installed and running. I first had to ditch my old computer (Vista doesn't support the IDE driver that was built in 2001). I was able to install it on a brand new Dell, but I wasn't able to upgrade Windows XP Pro, I had to install from scratch. I'll probably be better off in the long run, I still hate how Dell insists on installing four million applications by default.

My first impression of Vista: "Cool Stuff". I like the visual changes they have made, I like the fading, the new transparency, the new start menu, the new explorer. I also like the gadget side bar, the new task bar, and the new task switcher. I also like IE 7, but there is no way to change the default search bar. It looks like it just hasn't been added yet, I am sure they will let me change it to Google eventually.

It comes with a few new apps like Windows Calendar and Windows Contact Manager, but they don't seem very useful. There is also some sort of collaboration app built-in, but that doesn't seem very useful either. Perhaps I need a few other users to help me test. The built-in search bar in the start menu seems to be a Google Desktop wannabe, but it appears to work rather well (I don't have a lot of data to test with yet).

I have only needed to install the following applications so far (they all work great w/ Vista):
Firefox
OpenOffice (Site doesn't work w/ IE 7 yet)
GAIM
Putty
Programmers Notepad
TurtoiseSVN
Thunderbird (for testing)

One really annoying "feature" that took two days to figure out is how to make my fonts look like crisp and clear. I was about to give up when I stumbled upon this setting:

Start->Control Panel->System and Maintenance->System->Advanced System Settings->Performance Settings->Click "Custom"->Uncheck "Smooth edges of screen fonts"

That setting has made all the difference in the world. Maybe today I can go home without a headache from my monitor.

Another issue is that I upgraded the video driver to the recommended version and I lost all of the cool transparency and window effects that I had on day one. :( I also haven't figured out how to turn off the annoying security pop-ups that open anytime I try to access an "Admin-Only" section of Windows.

I am finding the new control panel very complicated. It reminds me a lot of Perl in the fact that there are 50 ways to accomplish the same task. Navigating around the new control panel is frustrating, especially with the annoying "Admin Only, Are you really sure you want to do this?" pop-ups everywhere.

Overall, it looks like Microsoft has security as a top priority for this release. They are also finally catching up to Apple's cool windowing effects. And it won't take much more before they are caught up to Google on their desktop search capabilities. I can't think of any real compelling reason for anyone to upgrade besides the improved security features. Perhaps I'll find more in the coming days...

Thursday, June 01, 2006

A Semi-Solution for My Internet Based File System Problem

After thinking about this more today, I have come up with the following solution that will almost work perfectly. First, we have an existing Subversion repository, so I created a "personal/kminnick" project for my own use. Second, we have an existing network drive called the "u" drive which can be used to store personal files. So, I installed a Windows based svn client called Tortoise SVN which is actually a shell extension that integrates directly into Windows Explorer. This basically means I can use Windows explorer to check out / check in files into Subversion, awesome stuff. I checked out my personal project onto our network drive (which is going to be available over a VPN eventually) so that nothing is stored on a local hard disk. To access the files from any location I can use a simple web browser to access the Subversion repository directly. If traveling, I could checkout all the files to my local hard disk, then check them back in whenever I have Internet access. Cool stuff. So with all of this setup and working I can:

1. All of my files are backed up automatically.
2. Have a history of every revision for all of my documents.
3. Access my files from any location that has a web browser.
4. Check out files locally for airplane trips, vacations, etc.

Not a bad solution, it was easy to setup and doesn't require a local hard disk for file storage.

Dead Computer

Today my desktop computer at work died. My dad gave me this computer about 2.5 years ago because he bought a new one, I'm guessing it was only about 2 years old when he gave it me. I was very attached to it, but all good things must come to an end. I was constantly asked by my co-workers why I never upgraded to a new machine. Well, for one, I never really “needed” a new machine. I spend most of my day inside of an SSH session, so memory, CPU, etc isn't that necessary. I'm curious though how many Word documents I'll need to re-type because I saved them to my local hard drive instead of on the network. I usually back everything up to the network or have them somewhere in my email for safekeeping, but I'm sure I missed a few. I use webmail exclusively for email, contacts, calendar, and tasks, so nothing will be lost there. I'm going to try to put in a new hard drive into my old machine and re-install Windows. But this time I'm going to try hard to move everything onto the network, the way it should be stored. In fact, I'm going to try to find a solution that will allow me to store everything I need onto the Internet.

This thought has really made the wheels turn this morning. I really need the following:

1. A web-based central repository that I can put / get files (any file type).

2. It should work like any good version control system (subversion), meaning it keeps track automatically of revision numbers, and I can view old revisions easily.

3. It would be great if I could open the files using “File, Open” from any application such as Open Office, Photoshop, etc. I shouldn't need to download the file first locally. I imagine this would require some sort of add-on to Windows Explorer. It needs to be fast though, so the plug-in should pull it down to a local temporary location, but automatically save it on the Internet when I click “File, Save”.

4. It should support sharing, so instead of having to email a document to everyone, I could simply email a note to everyone I want to share the document with and they can pull it down after entering an email / password. The link should always point to the latest revision so that timing isn't an issue. You should also be able to setup who can make modifications to the document.

5. You should have the ability to setup notifications so that you know when the document has been changed / modified.

6. It should be integrated inside of webmail.

For now, all I really need is #1. I think to solve that I'll setup a subversion server for myself and put all of my documents into subversion. I will be able to access it from home and work, the only downside is that I won't be able to open / save documents without the help of a subversion client. But at least everything will be backed up automatically and all of my documents will be accessible from the Internet.

If anyone knows of a solution that will meet the first five requirements above please let me know. I honestly haven't researched it yet.

Thursday, May 25, 2006

Trac

Yesterday I setup and installed Trac for our development team. Trac is one of those tools that once a developer sees it, they gotta have it. If you havent heard of Trac, it allows developers to easily browse Subversion repositories. Subversion is the tool we use to track code changes. Subversion doesnt have a good web-based GUI for browsing the repository, which is the primary reason we wanted to install Trac. Trac is easy to navigate, provides timelines, and makes browsing differences between revisions easy-easy-easy. The developers at Edgewall really have a winner with this product.

Trac also has a bug ticketing system, wiki, report generation tool, and milestone tracking tools built-in. The other tools need a bit more flushing out, especially the bug-tracker, but the SVN browser makes it worth the trouble to install. The installation process for Trac iswelltough. Ive installed hundreds of applications by source and RPM over the years and Trac was definitely one of the hardest Ive ever encountered. Not only are there a ton of dependencies, but you have to be very careful that you have the right versions of each dependency. Thank goodness Google was able to help quite a bit.

I can see the benefits of Trac already paying off; just this morning, Mike sent me a link to the change-set in Trac for the next upload. Clicking on the link takes me to a web page with a description of the changes, a list of all files that were changed, and a color-coded side-by-side diff for each file.great stuff.

Thanks to Joel, one of our latest hires, for directing us to this application.

Sunday, May 21, 2006

5th Wedding Anniversary

When I was in the basement today I saw a picture album from our wedding night and decided to reminiscence a little. First, it's amazing how much changes in five years. Second, it amazing how much stays the same. Velvet, Bill, Jason, and Velvet's parents all look the same today as they did five years ago. Pat, my parents, and my brother look totally different. I look like another person and wonder what Velvet was thinking...I'll bring the pictures to work if anyone is interested in looking.

To celebrate our anniversary we dined at The Summit restaurant in Christiansburg for the first time. Velvet suggested it and I heard three reviews all raving about the great food. I have to admit the food was really good (even though my steak came out a little too done). If you are looking to impress your date with some great food and a nice atmosphere I definitely recommend The Summit. :)

I'm more of a “look to the future” guy than “dwell on the past” guy; so I'll give you some insight on what will be going on five years from now, instead of what has transpired over the last five....In five years Drew will be in kindergarten and Jordan will be in 4th grade. I'll be working on my 11th year at Webmail.us. I'll only have 20 more years to pay on my house (haha). Maybe I'll have the driveway paved by then so I can put up a basketball goal for Jordan. Hopefully I'll still have my Jeep (gas will only be $6.00/gallon but that still beats having a car payment). Maybe my golf game will be in the 90s (OK, so I'm dreaming a little). Jordan won't remember a time when TV wasn't in high definition. Wireless Internet access will be available practically everywhere for free. Jordan will be using this laptop and think it's archaic. I might be caught up on the Sopranos. I hope Jordan can teach Drew how to play chess, read, and create his own blog. Jordan will still be in gymnastics (and will keep requesting a trip to Sonic after each session). Velvet and I will be celebrating our 10th Wedding Anniversary.


Monday, May 15, 2006

OpenLDAP Errors

I ran across the following error in OpenLDAP two weeks ago when deleting an entry:

"Additional info: entry index delete failed"

Huh? We've been using OpenLDAP since 2003 and I've never seen this problem before, but looking at the OpenLDAP code showed it was trying to delete an index. We use the BDB backend and apparently a BDB index was corrupt. I haven't found an easy way to repair these indexes besides dumping all the data and re-importing. Maybe a BDB expert out there has some suggestions but luckily we replicate all of our data across multiple machines so I just had to copy the data (zip up the /var/openldap-data/ directory) from another machine. Googling for the error above didn't return many results so I thought I would go ahead and post my findings for the next person who searches for this error.

Harbinger Beta Available for Public Testing

A beta of the latest version of our webmail client is available to any current Webmail.us customer. Simply log in with your email address and password at http://beta.webmail.us.

You will notice only a few minor interface changes as our primary focus for this version is speed and performance. We no longer use frames and we make heavy use of AJAX and caching to improve speed. The first time you log in to the application will take a bit longer than normal because the browser is busy downloading JavaScript code that will be cached for future sessions.

Switching between folders, calendar, contacts, and tasks is significantly faster than previous versions of our application. We believe that a web based email client has significant advantages over a desktop based client but only if the web based client can match the speed and performance of the desktop client.

I've been using Harbinger for a few months now and have been really impressed with the speed thus far. We believe this is only the tip of the iceberg though and will continue to push the limits of the browser to maximize the speed of every aspect of the application.

Sunday, May 14, 2006

Disney World Wrap Up

We had a great time at Disney World and I'm glad we were able to have a family vacation. I think that's the first family vacation we have taken since Drew was born. The kids did great on the plane flights, I'm so proud of them. Disney amazes me each time I go with how big they think. Nothing they do is too much, too big, too hard. They have big shows, big parks, big fireworks, and thus big crowds. They really do a great job and make you want to come back for more. We might head to Va Beach one weekend this summer, but otherwise I think we are done with family vacations for awhile. I'm glad I got to spend so much time with Drew, Jordan, and Velvet. If we do go back next year I'll have to remember these facts:

1. Go back to Magic Kingdom, Jordan loves it.
2. Don't go back to MGM Studios, it was fun, but not good enough to do two years in a row.
3. Make reservations at Cinderella Castle for dinner at least a month in advance.
4. Rent from a car rental place at the airport, not Hertz or Thrifty. (Hertz was great, but too hard to get on and off the bus.)
5. Caribe Royal is a great hotel, easy check-in, easy check-out, great pool, easy parking, but don't order the room service, very expensive and the food just wasn't that great.
6. Eat at Smokey Bones again.
7. Buy souvenirs at Wal-Mart in Orlando, nobody will know the difference and they are 1/10th the price.
8. Don't try to stay until close for the fireworks, the kids could probably make it, but I can't.
9. The "park hopper" option isn't worth it.
10. 10:30am is a perfect flight time, both ways. Connect in ATL at 1:30.
11. Mother's Day weekend is a good weekend to go because there is no baseball.
12. Jordan's favorite ride is the tram from the parking lot to the park, so ride it around a few times.
13. Jordan's favorite part of the trip is the plane ride and the pool, so take a trip to the beach with a Cinderella DVD and save some money. :)
14. Bring your own map of Orlando, the one from Hertz might as well been created by Jordan on the airplane ride down there.
15. Bring your own band-aid's so that you don't get weird looks from the first-aid people when Jordan gets a scratch on her leg.
16. Don't leave the diaper bag unattended next to the Haunted Mansion again, the next time someone might think it's a bomb and you don't want to be the one responsible for shutting down Disney World.
17. Invite some family so that you can go golfing while they take the kids to Disney World.

Wednesday, May 10, 2006

Disney World

Tomorrow I am packing up the wife and kids and heading to Orlando for our family vacation ... man I am old. :) Should be fun though and I'm sure Jordan will have a good time. We are heading back on Sunday.

Tuesday, May 09, 2006

Update on MySQL Issues

Last week I wrote about a strange issue with MySQL replication and what I thought I wouldn't see again for a long time. Well, around 1:00am this morning another MySQL server (a different cluster than previous) had the exact same issue as the first cluster. This time, my first step was to reboot the machine to see if it would fix the problem and thus not require me to spend a lot of time exporting and importing data. The reboot fixed the problem with the constant restart of the mysql server, but the replication thread failed to start. In fact, it was failing to start the slave thread on both machines. Issuing start slave produced this in the error log of the machine with the problem:


060509 1:32:09 [Note] Slave I/O thread: connected to master 'replxxx@xxx-slave1:3306', replication started in log 'xxx-slave1-bin.004981' at position 79
060509 1:32:09 [ERROR] Error reading packet from server: Could not find first log file name in binary log index file (server_errno=1236)
060509 1:32:09 [ERROR] Got fatal error 1236: 'Could not find first log file name in binary log index file' from master when reading data from binary log
060509 1:32:09 [ERROR] Slave I/O thread exiting, read up to log 'xxx-slave1-bin.004981', position 79


This time I was determined to fix the problem without dumping data so I Googled a bit for the error and found this great post:

http://archives.neohapsis.com/archives/mysql/2004-q1/2000.html

Ah, so after creating the missing file and issuing a reset slave the problem was fixed. On the other master I simply had to run a change master to…’ command and start slave and now replication was working in both directions again.

I think there is definitely a bug in the MySQL code somewhere, but Im not sure what triggers it. I dont think its related to the number of days a server has been up, but it might be related to the number of connections that have been opened since it was last restarted. It may just be a corrupt relay log file.

Wednesday, May 03, 2006

NCTC TechNite 7.0

Tonight the NewVA Corridor Technology Council (NCTC) is hosting TechNite 7.0. TechNite is self described as "the premier event honoring the NewVa Region's most promising technology companies, leaders, and entrepreneurs." Awards will be handed out in the following categories:

High Tech Leadership
Excellence in High Tech Manufacturing
Excellence in Life Sciences
Excellence in IT Development
Excellence in IT Deployment

Webmail.us is a finalist for the "NCTC Excellence in IT Development" award. Pat, our CEO, is a finalist for the "High Tech Leadership" award. It's quite an honor to be a finalist, especially considering the competition:

NCTC Excellence in IT Development Award
Webmail.us, Inc.
Phoenix Integration, Inc.
Synchrony Industrial Controls, Inc.
Integrated Imaging

NCTC High Tech Leadership Award
Margaret "Elaine" Carver, County of Roanoke
Kenneth Ferris, LUNA Innovations Incorporated
Patrick M. Matthews, Webmail.us, Inc.
Thomas A. Dingus, Virginia Tech Transportation Institute
R.J. Kirk, Third Security, LLC
Joseph W. Meredith, Virginia Tech Corporate Research Cent

Thanks go out to Trevor who played a big role in getting us nominated for these awards.

If you see Pat today be sure to wish him luck and ask him if he has that speech ready.

Saturday, April 29, 2006

MySQL Replication and Heartbeat

Velvet, Marisa, Joel, Robert, and Andrew all did great in their respective 1/2 marathons and full marathons on Saturday. I certainly have a lot of respect for anyone who can endure all of the pain and agony that is involved. After we got back to the hotel I laid down for a power nap before dinner (yes, it was tiring watching all of those runners). I woke up to a phone alert letting me know a MySQL server was acting up. I log into the system and I'm seeing all sorts of errors and continuous notices that MySQL is restarting for every new connection. I've never seen this problem before, so I stop heartbeat so the other master takes over the IP. We run most of our sql servers in a master-master configuration. Master-Master means either server can immediately take over as the master if one goes down.

Thanks to heartbeat and MySQL replication, it allowed me to take my time and debug the problem without any service interruption. As for the debugging, I didn't get very far. I spent about an hour looking through log files, moving directories around (including to a ramdisk to make sure it wasn't a hard drive acting weird), etc. I was about to give the order to re-image the machine and start over when I had Bill reboot the machine because sometimes that magically fixes things. Well guess what, it did. I didn't check the uptime before the reboot, but according the other master it had been up about 284 consecutive days without a reboot. Not bad.

After the reboot fixed the restart problem, I decided to take a few safety precautions and assume the data was corrupt. So I moved the data to a backup copy, dumped everything from the master, re-imported, ran several test, and fired heartbeat back up. Everything looked good, and the whole process took about 4 or 5 hours. The restore took awhile because we have some tables that have over 9 million rows.

So my vacation in Nashville turned into a work weekend thanks to a MySQL server going crazy. Luckily we have the proper monitoring, replication, and failover systems in place, thank you Bill and team!

Thursday, April 27, 2006

Big Weekend

This weekend I'm heading to Nashville via Knoxville to "watch" Velvet run in the Country Music Marathon and 1/2 Marathon (she's doing the 1/2). She's been training non-stop (I rarely awaken when her alarm goes off at 5:45am or whatever god-awful time she has it set to). I can't imagine running that far, but I can imagine that I will have fun this weekend. Our first stop is in Knoxville to go country line dancing at the world famous "Cotton Eyed Joe's". I haven't been there, but Jil says it's great so I can't wait. Based on the pictures from the website it looks like a grand ole time to me. And no, I won't be doing any dancing.

From there we head over to Nashville (first time for me) to check in at the hotel an get settled in before the big race. I'm sure Velvet will be nervous as hell (hehe). And with 20,000 participants I hope I can at least find her in the pack.

I wish Velvet, Jil, Marisa, and everyone else we are going with the best of luck...

Webmail Load Balancing Improvements

Last night we completed a behind the scenes project for webmail that will help us improve the scalability of our webmail server farm, improve our ability to measure the performance of our applications, and improve the overall speed up our applications. I started this project way back February and I previewed what we were doing in this post. By utilizing a piece of open source software called Pound we will be able to accomplish all of the goals listed above.

The primary reason for starting this project was our need to differentiate static web pages from dynamic web pages and send them to different clusters depending on the type of traffic. This would allow us to better cache the static content and get a better measurement on how well the dynamic pages are performing. We also wanted an easier way to manage all of our SSL certificates. Bills team (Tony and Korey) created a set of web pages that our support team can use to install and configure new SSL certificates. Mike also chipped in any necessary code changes that were need for webmail. And finally, Vinny helped me re-configure the control panel application for the new cluster of static servers.

I appreciate everyones help in making this project a complete success.

Friday, April 14, 2006

Tech Talk

I benched a personal best of 155lbs 10 times morning (which means I can pretty much bench my weight 8-10 times which is pretty good), but that's not what inspired me to post a blog...

Last night Me, Mike, and Pat gave a 'Tech Talk' on the Virginia Tech campus to a small group of computer science students. Basically we talked about Webmail.us, our development environment, our projects, the technologies we use, and we answered a lot of questions. I think it went well and we had a good time. One question that I did not get to answer was from a student who wanted to know what it was like to start your own company in Blacksburg because he was pondering the idea. Pat gave a great answer, but I couldn't help but think about this on the drive home.

My advice to anyone who is coming out of college and thinking about starting their own company is simple. As long as you are ready to put in long hours and are not afraid of failure, I think you should go for it. I think you will fail. But that's OK. Life is short, if you take that high paying job at IBM and Microsoft, that is the safe thing to do. It takes absolutely no courage to be that person. It will also prove to be unrewarding and boring in two years. Even if it's exciting work, you haven't learned the tough lessons that go along with starting your own company. You haven't learned how to fail, and you won't appreciate what it means to really work hard. If you are 22 and coming out of college, there is no better time to learn life's tough lessons. You have no kids, no mortgage, no obligations. It doesn't take a lot of money to start a company, you basically need an apartment and a work ethic. There is no better time than the present.

If you have an idea, a passion for that idea, and are not afraid of failing, GO FOR IT!!!

Of course, if you are afraid of failing, or you just don't have a great idea, I suggest working for a small company as a first step towards starting your own company. At a small company you will see and experience what the owners of the business are challenged by on a daily basis. You will see it's not easy. But this is great experience. After you work for a small company you will quickly realize that either that's the life you want to live or it's not. Perhaps you will find out that you do belong at a big company. Whatever the case may be, don't be afraid to take chances every once in awhile. That's my advice for all you graduates, good luck with whatever you do decide.

Thursday, April 13, 2006

Product Development Releases Last 60 Days

Looks like I forgot to post this last month, but here are some of the great things we released over the last 60 days:

* Website: Printable Pages
* Control Panel: Improved Alias Management
* Control Panel: Simultaneous Logins
* Control Panel: Redesigned Login Page
* Website: Email Traffic analyzer
* Webmail: Address Book Import / Export Improvements
* API: Added 3 new functions
* Website: Redesigned Home Page
* Control Panel: Improved Availability
* Webmail: Spanish Language Improvements
* Webmail: Ability to select default language, and html font

There's plenty of stuff I can't mention too, but overall we are really busy around here and are constantly pumping out bug fixes, new features, even a beta. ;)

Friday, March 24, 2006

March Bench Press Results

Technically I have another week in March, but I don't think next week will be better than today, so I'll go ahead and post this month's progress:

185 x 3
195 x 1 (2 with a spot)

My bully spotter made me try 205, but I needed a little help from him with that, maybe next month. I definitely should be able to hit my goal of 200 next month, so I might up the ante to 225 by the end of the year. The best part of all of this is that it's been the same two people in there spotting me every Friday since I started in January and they were saying today they can really tell a difference. Hopefully the progress will continue...oh, and I weighed in at 165 today.