Wednesday, June 18, 2008
Posted on Wednesday, June 18, 2008 7:18:43 AM (Mountain Daylight Time, UTC-06:00)  Comments [1] | 
Categories: Productivity | Software

We recently moved from using Exchange to Google Apps. The transition has gone really smoothly, but there have been a few hurdles - mainly surrounding synchronization of Mail and Calendar across multiple devices.

While the Google Apps are all web-based, accessing them in a browser is not always an option - particularly when on airplanes. Additionally - if you rely heavily on your calendar for reminders like I do, remembering to keep a browser open on your calendar page is just one step too many. ;-)

So - here's my device situation:

devices 

Under Exchange, my notebook and workstation would connect to Exchange for email and calendar, and synchronization was automatic. My phone would pick up email via IMAP to Exchange, but the calendar was synched when I connected the phone to either PC via a USB cable. Overall pretty good, but the calendar synch to the phone was a little more involved than I'd like - why not synch over the air?

Anyhow, with the move to Google, I can of course access mail and calendar from all three via a web browser. This is fine for email on the PC's, but a little less than optimal for the calendar. Needing to have a calendar open to get reminders is not good for me. Call me old school, but I like Outlook - as far as email and calendar go - it works for me. 

Connecting Outlook with Google Apps

Actually getting a single instance of  Outlook talking to GMail via POP or IMAP is pretty easy, and well documented. If you use IMAP, then you can have multiple clients systems connected and everything is synchronized for you.

The calendar is another matter. For PC's you need to run the Google Calendar Synch, which will copy items between your local Outlook calendar and a Google Calendar. It does the sync on a scheduled basis, so there may be some lag, but since you are planning things in the future, a 10-30 minute lag should not be a big deal.

On my phone, I'm using Mobile Outlook connecting to IMAP for mail, along with GooSync keeps my mobile Calendar in line with my Google Calendar. What's sweet it that this works bi-directionally - over the air - something which was not an option with our Exchange setup.

goog

If you are thinking about jumping to Google Apps, I'd say go for it. The transition has been smooth and everything we need is working with a lot less headaches for our IT staff.

Saturday, January 05, 2008
Posted on Saturday, January 05, 2008 10:43:35 AM (Mountain Standard Time, UTC-07:00)  Comments [0] | 
Categories: Productivity

I do a lot of on-line research and read a lot of blogs. Through all that I find lots of interesting "off-target" information - you know - things that are not what you are looking for right now, but are on your list of things to look at.

And while bookmarks have worked for me (I'm a huge FoxMarks fan), I've recently run into a number of times where the book mark was not specific enough. What I really wanted was a way to hold onto a block of text - the actual thing I'm interested in - instead of just the Url of the page, which requires me to shuffle through the whole page to re-locate the item of interest.

As a quick search for "web clipping tools" will show, apparently I'm not the first person to want something like this. I had heard about web clipping tools like this a few years back, but never pursued it because what I had seen was a pay service, and at the time I did not need it. This time around, I found that Google has answered the call with a little gizmo called Google Notebook.

If you have a GMail account, it's free to use, and has plugins for both IE and Firefox. Now when I find something I want to keep around, I just select the text on the page, right-click and select "Note This". A little window pops up and allows me to specify the notebook I want to add the clipping to.

google-notebook

So simple, so clean. So Google. I've been using it for a few months now, and it's been really great. Everything is always available from any machine (Home/Work/Notebook), and it's really great when I'm preparing presentations - I can do all the web research, and then just grab the quote/fact out of Google Notebook and have the reference (url) right there. No more scratching my head saying "where did I see that..."

Saturday, December 01, 2007
Posted on Saturday, December 01, 2007 10:01:45 PM (Mountain Standard Time, UTC-07:00)  Comments [1] | 
Categories: Productivity

A month or so ago I was dumping another 2GB of photos and videos of my son Kai off our cameras and decided that I needed to get a more robust backup strategy - we've been using digital cameras since 2001 - I'd hate to lose it all!

I should preface this by stating that I had a kludgy "local replica" strategy. Basically a power shell script which dumped deltas from my home workstation to my home server, as well as an external drive. While that's good enough to ward off critical failures in hardware, it really does not address theft, fire, or other serious natural disasters. For that you need off-site backups.

Enter Mozy.com. I have to give my co-worker Mike Juniper props for giving me the little shove I needed on this. The price was certainly right - $5 a month for unlimited storage, but I was concerned about how unlimited Mozy's unlimited really was. Mike had uploaded 12GB without issue, so I took the plunge and see if I could jam all 36GB up there. And while it took about a week to get it all up there, it's been working very smoothly.

mozybackup

For home users it's ridiculously easy to setup. Your backups appear as a drive in File Explorer. Getting a file back is just drag and drop.

mozyfiles

In fact this is working so smoothly that we are likely going to use Mozy Professional for offsite backups in our new office. This is set it and forget it software and Sit sure beats setting up cryptic backup software and slogging tapes back and forth!

Monday, November 26, 2007
Posted on Monday, November 26, 2007 2:44:52 AM (Mountain Standard Time, UTC-07:00)  Comments [0] | 
Categories: Hardware | Productivity

The Build

For details on building out a system, read Jeff Atwood's posts re: building the Hanselman box (Part 1, Part 2, Overclocking). Since our parts list was virtually identical, his detailed photos and descriptions we're awesome. Here are just a few shots of us putting stuff together.

chris-jeff

Jeff & Chris putting the stock heat sinks on the motherboards. The Scythe heat sinks were back ordered, so we're going to wait until they arrive to overclock things...

mb-heatsink

Board ready to go into the case...

mb-case

Here's a motherboard mounted just prior to the initial boot to make sure it's all setup correctly.

install

By the end of Thursday, we had 4 systems built out, and the OS installation started.

On Friday we got our MSDN licenses and received our ESRI Developer Network kits. From there, we got the OS installed on 4 systems, and started running torture tests using Prime95. One of the systems has some stability issues (we'll tear it down Monday when we build up the final system) and it looks like one of the WD Raptors was flaky. Other than that all is well, and everyone had quite a bit of fun. The next "big" thing is getting into a "real" office - but that will have to wait until after Thanksgiving.

Monday, November 19, 2007
Posted on Monday, November 19, 2007 2:44:52 AM (Mountain Standard Time, UTC-07:00)  Comments [3] | 
Categories: Productivity

Now that we've moved on, the first task in setting up the new office was to order some workstations. Since I'm an avid reader of Scott Hanselman's blog, his Ultimate Developer Rig series immediately came to mind.

The timing could barely have been better - Scott worked with Jeff Atwood (CodingHorror.com) to build a rocking developer box. What they ended up with was a wicked fast, over clocked, nearly silent monster for less than $2000. You can read Scotts initial impressions here, but this is what stuck with me...

It's ridiculously fast. The word "obscene" comes to mind. It's working at least 80% of the speed of my thoughts (as opposed to 10-20% on my last PC.) I wait for little. Even opening a tab in IE7, once a chore that made me cry, happens instantly. -- Scott Hanselman

Sounds good to me. Moving on...

Since they built this rig over the summer, we were able to up the ante a little, and still come in just around the $2000 mark.

Here's a link to Scott's part list. We just changed a few things.

CPU: The Need for Speed

We initially decided to build out exactly the Hanselman box, but then I did a little looking, and found we could get 3.0Ghz Dual Core CPU's for the same price as 2.4Ghz  Quad Core CPUs.

Thus the debate what's better for ArcGIS Development: 4 cores running slower, or 2 cores running faster? I Googled for "quad core vs dual core" and the top result is Jeff Atwood weighing in on this question. Read his post, but suffice to say he does a lot of testing, and cites other studies, but the punch line is that in most cases, you will be better off with a faster dual-core CPU than an quad core.

As far as Visual Studio 2005 is concerned, Jeff notes that there is no difference between dual and quad cores (scroll down on this review @ xtreview.com)

Back in GIS Land, since ArcMap is not designed for multi-core systems, it's not going to benefit from extra cores - performance is going to be limited by the CPU speed. So if I'm mainly running Visual Studio and ArcMap, then a faster dual core CPU is likely the best bet. If I was to load up ArcSDE, SQL Server, ArcGIS Server, IIS, and Visual Studio on the same box, then I may see more bang out of the quad box, but we'll be getting servers to run the heavy hitting parts of that stack. Dual core it is.

More Monitors

Since we're starting from the ground up, we needed to get monitors. Two monitors is great, and really should be the minimum setup for any developer. The increase in productivity is enormous. How much better will 3 be? We'll find out! Since the price of pretty much every part had dropped since their build, we were able to get each developer a 22 inch wide screen to be flanked by two 19 inchers, all from Acer. The photo below shows 15 monitors lined up at our temporary location (Chris's living room)

monitors

Other than that, it's pretty much the Hanselman rig. Big props to Scott Hanselman and Jeff Atwood for sharing the details of the build - this makes it much easier for others to dive right in and build great systems.

Our Part List (NewEgg.com):

Total: $1945

Amazing what you can get these days. By building them our selves, we saved ~$1500 per workstation over similar boxes from Dell (see below).

dell-system

Thursday, October 04, 2007
Posted on Thursday, October 04, 2007 6:02:35 PM (Mountain Daylight Time, UTC-06:00)  Comments [0] | 
Categories: .NET | ArcGIS Devt | Productivity

Ok, just had to share this because I think it's so darn cool. I've posted about our internal tool "ArcDAL" in the past (follow that link for details), but the quick review is that we have created a set of code-generated data access classes which wrap the geodatabase API. These classes fully support data binding, and because they are code generated, we can change the geodatabase model with limited impact to our code base.

Anyhow - while I was involved with the design and initial template generation, this is my first time actually using it in a project (This is the second major project using ArcDAL). It's just so fun to see this all come together, I thought I'd share...

So - here's how we make Object Inspectors (little UI's that "snap" into ArcMap's Attribute Editor)...

1) Create an inherited user control in the project. We created a base control to ensure consistent look and feel, so that simplifies things. Here's the new control...

io-control

2) Create an object data source from the ArcDAL List related to the feature class of interest - in this case ForestDistrictList

add-objdatasource

3) In the data source window, Set the display style for the ForestDistrictList data source to "Details"

display-style

4) Set the Display Style of fields we do not want visible to "None"

field-none

5) Drag the List data source onto the user control... and watch it layout the controls for you

layout

Once the controls are on the form, you're almost done. For all the fields that are automatically populated, set the control to Read-Only. While this example does not have domains, those are handled and will automatically be dropped in as dropdown lists. Once the form is all laid out, we just have a minor bit of coding (~20 lines) to convert the inbound IObject into an ArcDAL object, and add it to the binding list, and handle some eventing so that changes are automagically saved.

I may have to create a little screen cast because it's just too cool to have it lay things out for you.

From a productivity stand point, this is amazing. And since it's data bound and code generated, even substantial changes to the geodatabase schema are relatively painless propogate up through the application.

Thursday, August 09, 2007
Posted on Thursday, August 09, 2007 10:03:48 PM (Mountain Daylight Time, UTC-06:00)  Comments [0] | 
Categories: Blogging | Fundamentals | Productivity

Back at the 2007 ESRI Developer Summit, I did a presentation on "Being Agile". At that time, I mentioned that we simply followed general agile principles, but did not particularly follow any doctrine. For a variety of reasons we have had to become more formal in our quest for agility, and have adopted Scrum.

For those not familliar with Scrum, it's a very light-weight project managment methodology that's based on agile principles. Work items are managed in a set of backlogs and are done in a series of 2 or 4 week sprints at the end of which they produce a "potentially shippable product increment. Here's a good diagram that shows it all. Every day the team meets for 10-15 minutes to repost status - this is the "scrum".

What's really nice is that there are alot of success stories that one can reference with "selling" Scrum within an organization and to clients. Not to mention a slew of great books. Including what I'd recommend as a really good intro to the topic  Agile Project Management with Scrum (Microsoft Professional) by Ken Schwaber.

Thus far, I have to say that it's the best way to develop software that I've ever seen. It's easy - nothing in it seems to be "extra" - to put it another way - no TPS reports. Things proceed smoothly, the team is all bought in, and we are cranking out the code. Last week my co-worker Chris Spagnuolo and I attended a "Certified Scrum Master" training course in Denver. Led by Mike Cohn (blog), this was a great two day class that covered everything you need to know to run a scrum team - aka being a "scrum master".

We liked this initial class so much that we are heading out to Orlando in September for Mike's course on Agile Estimating (here's Mike's book on the same topic and YouTube videos - part 1 and part 2 - of a presentation he gave @ Google in March 2007). We are really excited about this because it will be driven by the detailed historical data from our team's sprints and it should be more much more accurate than other "gut-based" estimating systems.

If this sort of thing strikes your fancy, Chris Spagnuolo (our "scrum master") has started a GeoScrum blog where he will be covering the on-going journey of managing a cutting edge geospatial development group with Scrum. We are constantly adapting the process and our tools and Chris will share tips on what works and what doesn't, as well as general project managment zen.

Monday, August 06, 2007
Posted on Monday, August 06, 2007 5:10:01 PM (Mountain Daylight Time, UTC-06:00)  Comments [1] | 
Categories: Productivity

Thought I'd share a little about two tools that help keep my computing life sane. I regularly work on 3 different PCs - my development box at work, my home PC and my notebook, and I need a few things to be consistent across all of them.

Bookmarks

Like a lot of people, my bookmarks have become an extension of my brain. I don't pay attention to a site's Url, I just remember where I filed the bookmark. So it's really important to me that all 3 systems have the same bookmarks, and that they all update each other. I'll also note that I've also become totally addicted to the FireFox Bookmark toolbar. Having all my bookmarks easily available in folders across the top of the browser is very efficient.

 When I used to use IE, I would create folders below Favorites\Links and get the same sort of functionality.  

But, to the point of this - FoxMarks is a FireFox add-in that facilitates synchronization of your FireFox bookmarks across multiple machines. It's super simple to  use, and it just works. Get it. Use it. Love it. 

File Synchronization

While I don't need everything synched up all the time, I regularly need files moved between all three systems - particularly presentations. Foldershare solves this problem really elegantly. You have to install a small program that runs on each PC and connects across the net to securely synch pre-determined folders. The synchronization is real-time while you are connected. If you go offline for a while, it will automatically re-synch as soon as you re-connect.

Additionally, you can access the shared files from any web browser by simply logging into the FolderShare site - a nice feature (although I've never used it), and a good reason to use a strong password!

Although you can share whatever folders you want, I try to keep this simple, I just create a "Shared Desktop" folder on my desktop. Anything I want replicated I just drop in there. This is sooooooo much easier than toting things around on USB memory sticks etc. I'll also mention that Microsoft bought FolderShare and thus this is now a "Windows Live service". And it's in "beta". ;-)

Wednesday, June 27, 2007
Posted on Wednesday, June 27, 2007 9:32:51 PM (Mountain Daylight Time, UTC-06:00)  Comments [1] | 
Categories: General | Productivity | Hardware

While I was out at the ESRI User Conference having a pretty good time talking GIS and software development with all sorts of fun people, my workstation decided that it was jealous, and consequently killed the system disk.

Not apparent reason (power spike, kicking of said system, misc. magnetic fields, UFOs), but upon my return, it was cooked. We tried a few repair options, but it seems that the boot sector was beyond repair, and a new primary disk was on the agenda.

For a while now I've been reading Jeff Atwood's blog - Coding Horror , and his February posting on 10,000 RPM boot disks stuck with me. Quite incidentally, I had also just read Scott Hanselman's posting on "The Ultimate Developer Rig", which also extols the virtues of the 10,000 RPM boot disk.

Since I was now in the market, that's just what I got. Since time was an issue, I had to hit the local bog-box electronics join and paid a little more than would be ideal - NewEgg has the same drive for $169 (after mail-in rebate).

After fighting with the Dell SATA drivers (apparently they were having some issues with their FTP site because the driver I downloaded crashed the windows xp installer! - we had better luck copying the driver from another system), I got the disk mounted, partitioned and the OS installed.

Then I started to install apps. It took about 2 minutes to install all of Office 2003 (yeah I'm going to switch to 2007 but I have not quite figured out all the ribbons yet!). This seemed fast, but I had not done that in a while, so it was hard to tell. I timed the Visual Studio 2005 install at 14 minutes end to end. And I have done this a few times, and that's a pretty big change from the expected 30-40 minutes. I was going to time the ArcGIS Desktop install, but I was doing a bunch of other stuff (work - how dare it intrude!).

I'll report back again in a few weeks with more info on how this impacts my daily work flow, but so far it's definitely faster.

Oh - and the dead disk? Just the boot sector was fried. I was able to mount it as a secondary disk and pull everything off. Ran chkdsk, had it mark the bad blocks and it's good to go. Now I just need to get an external USB enclosure for a SATA disk, and I'll have a local external back up drive.
Tuesday, March 27, 2007
Posted on Tuesday, March 27, 2007 9:48:57 AM (Mountain Daylight Time, UTC-06:00)  Comments [1] | 
Categories: Productivity
I've had a few mini-posts about various handy things lying around, and I thought I'd lump them up into a single post. Here goes...

EDN Batch Files
If you are like me, and have loaded your entire EDN subscription onto your development box, you may have a whole mess of services gobbling up resources when you really don't need them. I got a little sick of this so I created some batch files to start and stop services as I need them. These are super simple to create, but I thought I'd throw the code up here so you can simply copy/paste.

arcstart.bat
net start MSSQLSERVER
net start esri_sde
net start "ESRI Image Server"
net start "ESRIImageServerReporter"
net start "ESRI Image ServiceProvider: 3983"
net start ArcServerObjectManager
arcstop.bat
net stop ArcServerObjectManager
net stop esri_sde
net stop MSSQLSERVER
net stop "ESRIImageServerReporter"
net stop "ESRI Image ServiceProvider: 3983"
net stop "ESRI Image Server"
[Notes: If you're running Image Server on a different port, you'll need to change the 3983 to your port number. Also - if you're using SQL Express, the service name is MSSQL$SQLEXPRESS]

I also created some subsets of these scripts to start just MSSQL/ArcSDE if I'm working with ArcMap only, just Image Server if that's what I'm up to, and just ArcGIS Server if that's what I need. It's nice to have these packages on my workstation, but when they are all up and running they can easily eat a more than a gig of RAM - so it's nice to be able to start and stop them as needed. To make this even easier to user, I map these scripts into SlickRun...

SlickRun
For anyone who spends their day working with a PC, SlickRun is awesome. Get it now. Really. Now. I'm not kidding. It takes a little getting used to (like 5 minutes), and then you are hooked. Basically it's a n application launcher, but a pretty smart one. When not in use, you can set it to be hidden so it does not clutter up your desktop. When you need to do something, just hit the hot-key (configurable) and it will jump to your mouse and you can type in what you want. A simple example would be mapping "vs" to open visual studio - this is the most basic usage. You can get more complex though.

For example - if I want to search EDN for IWorkspace, I hit my hot-key <win+Q> type "edn IWorkspace" and hit enter. It then opens my browser and executes the search. Nice.

Here are some of my Magic words...

Magic Word
Description Target
' Google Search http://www.google.com/search?hl=en&q=$W$
edn
EDN Search
http://edn.esri.com/index.cfm?fa=search.results&c_2_a=on&dl_1=on&sa=2&q=$W$
map
ArcMap
C:\Program Files\ArcGIS\Bin\ArcMap.exe
cat
ArcCatalog
C:\Program Files\ArcGIS\Bin\ArcCatalog.exe
em:<name>
Email someone
C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE /c ipm.message /m "<email address>"
msdn Search MSDN
http://www.google.com/search?q=site%3Amsdn.microsoft.com+$W$
2003
VS2003 C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.exe
2005
VS2005
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe
blog
my blog
http://blog.davebouwman.net
arcstart
Start EDN Services
c:\batch\arcstart.bat
arcstop
Stop EDN Services
c:\batch\arcstop.bat

You'd be suprised just how much time slick run saves over a given day.