Friday, February 27, 2009

Advantage Evangelist’s First Anniversary

One year ago today I made my first post on this blog. I started out very slowly only posting 6 more times over the next two months. However, beginning in May 2008 I made a commitment to post three times per week. Since then I have been much more consistent and having two rounds of daily tips in November 2008 and January 2009 certainly helped my posting average. My plan is to continue to post at least three times a week and I have plans for another round of tips.

I want to thank everyone who takes the time to read these postings and I hope that you are finding useful information here. I have been pleased with the positive comments I get from customers who have found posts that addressed an issue they were having.

I will continue to be an avid reader so there will be several more book reviews posted over the next year. I will also continue to post monthly FAQs so keep your questions rolling in. I also have a few example applications in the works so I will discuss the development process as they get closer to completion. Also keep a look out for some new Advantage Screencasts that I have been working on.

Thanks again for a great year and I am really looking forward to a great 2009.

Monday, February 23, 2009

Book Review – Smart and Gets Things Done

Joel Spolsky has put together another insightful and entertaining book in “Smart and Gets Things Done – Joel Spolsky’s Concise Guide to Finding the Best Technical Talent”. If you hire programmers I believe you would benefit from reading this book.

The book is relatively short (182 pages) and has seven chapters, an appendix and even an index. The first chapter is an overview of why hiring the best programmers is not only a good idea but a really good idea. Studies have shown that the best programmers are 5 to 10 times more productive than good programmers. But it is not just productivity, the best developers will develop the best products. 

Chapter two discusses finding great developers. His most interesting point is that the best developers almost always have jobs and don’t apply for many jobs. In other words the best developers are almost never out in the job market. Joel’s solution is to go to where great developers congregate, provide internships and building a community. He admits that these aren’t easy things to do although from his description of his internships I think he has that one covered.

Chapter three is a field guide to developers which can be very useful for those managers who did not start out as developers, not always a bad thing BTW. He argues against the status quo of the cubical farm and strongly recommends private offices. He references Peopleware and several other references to support private offices. Next on his list is the physical workspace. Developers deserve the best environment possible such as good chairs, desks, fast computers, multiple monitors, etc…. There are many other good descriptions of what makes up a developer and even something that most people don’t consider. Developers aren’t extremely concerned about money, they often times prefer to work on an interesting project with the latest tools for less money than grinding out a dull project with the bare minimum of resources.

Chapter four, five and six are about the selection process. Chapter four discusses resumes. The first idea in this chapter is that resumes are not a good way to identify great developers. However, he feels that they are a great way to find the people who aren’t great developers. In chapter five he discusses using phone screenings. This is a further step in reducing the number of people who will come in for an in-person interview.

Chapter six describes conducting an in-person interview, which is done by a group of people most of whom are not managers. Team continuity is a very important element in a successful product and business. The team who will be working with the new hire needs to have some stake in the game. Joel is a bit unforgiving in this process rejecting a candidate if two of the interviewers say don’t hire. He also states if your not sure vote don’t hire, in the end it is better to let a good candidate go than hire a bad candidate.

Chapter seven is about fixing a suboptimal team, which can be quite a challenge. He has some good suggestions like having the entire team fill out an anonymous survey identifying the strong and weak team members. Of course everyone will probably have a different opinion of who the weak link(s) are, however, if the same name keeps coming up then there may be a problem. He warns against using metrics and measurements to determine who the “poor” team members are since all of these measurements can be gammed. Additionally, they don’t take into account the intangible aspects many people bring to a team.

Don’t skip over the appendix unless you have already read The Joel Test. This test outlines 12 things that every development team should do to produce good code, they are practical and in most cases easy to implement.

The bottom line: I thoroughly enjoyed this book, Joel has an excellent writing style that is casual but covers complex topics very well. His writing is very conversational making it feel like you were listening to a presentation rather than reading, which makes the book very easy to read. There are many anecdotes and examples woven into the book which emphasize his points and selling his advice. Although many companies will not have the flexibility he does in his hiring process and may not be able to follow all of the advice. Again, if you have influence over the hiring process for programmers I would recommend reading this book.

Friday, February 20, 2009

FoxPro Developers Network of San Diego

Last night we visited the FoxPro Developers Network of San Diego. Just like many other FoxPro developers I have met over the past two years this group was very welcoming and friendly. The meeting was held at Denny’s in their meeting room which allowed everyone to eat if they wished.

The president Eric Lendavai started the meeting with a presentation on using VirtualPC to create test environments. He had several tips and tricks for configuring and using virtual machines.

After Eric’s presentation I spent about an hour and a half talking about Advantage database server and our FoxPro support. This group had many of the same questions as the LAFox group however, they had several more questions about web integration. Specifically dealing with Java integration and I was all to happy to talk about our JDBC Driver.

Many thanks to the members of the group and especially Art Bergquist for coordinating everything. You can get more details about the FoxPro Developers Network of San Diego on their website.

UPDATE: If you are having trouble viewing the screencasts we provided you may need a javascript file which I sent to Art. You can also view all of our screencasts on the Advantage Developer Zone.

Wednesday, February 18, 2009

LA Fox User Group

Last night we were able to present Advantage to the Los Angeles FoxPro User Group. Like most users groups this group is made up of very good friends who have been meeting together for a long time. The group was very welcoming and had lots of great questions. In fact the meeting lasted over two hours.

We covered the various Advantage topics highlighting our FoxPro support. Some of these topics included:

  • Overview of Advantage Database Server ( view the Getting Started screencast )
  • Converting an existing DBC to an Advantage Data Dictionary (ADD)
  • Concurrent access from an Application and a Native FoxPro application
  • Accessing DBFs larger than 2GB

You can access many of the Advantage FoxPro materials on our Getting Started for Visual FoxPro Developers page. There are also several FoxPro specific screencasts available on the Advantage Developer Zone.

Friday, February 13, 2009

FoxPro User Groups

I will be in sunny California next week speaking at two FoxPro User Groups (FUGs). I will be in Los Angeles for the LAFox group on Tuesday, February 17th and then in San Diego at The FoxPro Developers Network of San Diego on Thursday February 19th. I will be discussing Advantage Database Server, our support for FoxPro tables and data types and answering other client/server database questions.

LAFox meets at Councilman Bill Rosendahl’s Weschester office, 7166 W. Manchester Ave at 7:30PM. You can get  more information about LAFox at their website.

The FoxPro Developers Network of San Diego meets at Denny’s Restaurant, 4280 Clairemont Mesa Blvd at 6:30. You can get more information about the FoxPro Developers Network of San Diego at their website.

If you are in the LA or San Diego area feel free to attend.

Wednesday, February 11, 2009

Tools of the Trade

Windows Live Writer 2009 I have been using Windows Live Writer (WLW) to create content for this blog since I started it last year and I love it. Since I started using WLW it has gone through 4 different releases. I have always used the latest version choosing to risk the bugs for the latest features. The latest version was released in early January and you can get all the details on the new features from the WriterZone.

I really like WLW because it is configured much like an IDE. With tabs for switching between the WYSIWYG editor, a preview pane and the HTML markup. The editor includes a spell checker, a must for me, and many formatting tools making writing a blog post as simple as writing any other document. All of the common tools for formatting the font, creating ordered and unordered lists, blockquotes, hyperlinks, images and tables are all included.

The preview pane allows me to see how the post will look on the blog before publishing it. This allows me to make sure that the posting looks the way I want it to prior to posting. The preview pane works by downloading the layout from the specified blog site. You may occasionally see a post titled “Temporary Post Used For Theme Detection…” on a blog site. Usually the post is deleted quickly but sometimes it will persist longer. Since the layout is cached on your local machine you have to update the layout whenever you change it.

The source tab shows all the generated HTML markup and allows you to make changes. I find that the markup generated by WLW is quite good and rarely needs any adjustments. However, it is nice to be able to go to the source pane and make those final adjustments to get just the look you want.

SnagIt Another tool I use frequently is Snagit from Techsmith. Snagit is a screen capture tool that has many options for grabbing screen shots. I use the region capture which includes a magnifier so you can easily set your begin and end points and the window capture most often. I have also found using the time delay and include cursor to be very useful. I use many of these screenshots in my blog and other articles.

The Snagit editor has many useful features and effects. I use the resize functionality quite often to make my images fit with the article. I also like the edge effects which allow me to capture a region and put a torn edge on it showing that it is only part of the screen.

Next to the screen capture functionality my second favorite feature is the batch convert functionality. When Snagit is installed it adds a menu option to the Windows context menu. You can select a group of images in a folder and choose Bulk Convert Images. This brings up an application which allows for many options for converting the images such as; resizing, rotating, captions, borders, edge effects and even color correction. I have used it many times to resize images for posting on blogs or photo sharing sites.

What kinds of blogging tools do you use?

Monday, February 9, 2009

Book Review – The Best Software Writing I

The Best Software Writing II started reading Joel Spolsky books in May 2008 on JD Mullin’s recommendation. I have previously reviewed two of Joel’s books User Interface Design for Programmers and Joel On Software. So I was happy to read The Best Software Writing I which is a collection of talks, articles and blog postings from 2004. Each of the selections were chosen by Joel and he includes an introduction and some footnotes for each.

The introductions are classic Spolsky filled with humor and some very clever insight. Some of the footnotes seem a bit basic describing what a child window or a control is for example. Although other footnotes really do add to the content of the article and demonstrate why the content was chosen.

Although I got something out of each of the essays there were a few in particular that stood out. I’ll highlight them roughly in the order they appear in the book.

Michael Bean wrote a great article on “The Pitfalls of Outsourcing Programmers” which does an excellent job of outlining some of the difficulties with splitting up a development team. The main point being that you need to keep your core business close so you can manage it. By separating the programming, your core business, from your managers and designers you can loose innovation. Michael uses a chocolate shop near his home as an example of good outsourcing. The shop makes its own chocolates but purchases its packaging from a company in the Philippines. The core business, making chocolates, is kept close while other operations can be outsourced.

Bruce Eckel’s take on “Strong Typing vs. Strong Testing” was very well done. I have always liked strongly typed languages, even though I started in Visual Basic. The first thing I added to each of my Visual Basic projects was Option Explicit which means that all variables must be declared and typed. Bruce’s point is that it is not always necessary to strongly type your variables if you have good testing practices. Strong types can help in ensuring that your functions work as expected, however, if the function passes the test then all the variables are being handled correctly. I will still stick with strong typing but I know that strong testing is a critical element as well.

If you are developing social software, your application has a social component or you use social software (i.e. Instant Messaging, Facebook, Linked In or maybe a weblog) there are three articles which you will find useful. The first by Danah Boyd called “Autistic Social Software” discusses how software attempts to address human social interaction. In general it does a very poor job at this since social interaction is not procedural. As Danah states:

If we are really trying to build sociable media that supports social interaction, shouldn’t we do it based on what social life looks like? Shouldn’t we allow for the vast array of nuances that allow people to interact differently depending on their needs?

Whereas Danah’s article discusses why social software doesn’t fit the reality Clay Shirky gives us another perspective on why the software fails and some ideas on how to make it more of a success. Joel chose two of Clay Shirky’s writings, “A Group is Its Own Worst Enemy” and “Group as User: Flaming and the Design of Social Software”. The first paper discusses how interaction between people changes as they get into a group and how software needs to be able to adapt to this different dynamic. It is a lengthy essay but it contains some excellent information and good advice. The second article discusses a topic near and dear to our hearts as Internet users: Flaming. Ah, the power of anonymity! Clay describes why flaming can occur along with some good methods of dealing with it. 

I really enjoyed “Starbucks does not use two phase commit” by Gregor Hohpe since it does an excellent job at describing asynchronous processes in layman's terms. I have always tried to use analogies to help describe concepts and I though this was an excellent example of a good analogy. Perhaps someday I can even come up with something this brilliant and simplistic.

I read several of Paul Graham’s articles during my computer science classes and I found his insights to be very interesting. Joel choose “Great Hackers” for this collection which is a great essay on what makes a great programmer, for Paul’s definition of a hacker read his essay “The Word Hacker”. Paul paints great hackers as coders who like to use open source tools and who are free sprits and like to have the flexibility to choose their own development environments. He believes that the very best hackers are stifled by companies who enforce specific development tools and environments on them. I agree that many of the best developers work in the open source arena, however, I also feel that many of these elite coders work just fine within a set of loose guidelines. In fact I would contend that most great hackers work developing commercial products. Although many of them spend a lot of their own time working on open source projects which is their true passion.

I was happy to see three essays written by Eric Sink which were also in his book which I reviewed in June. These essays include: “Closing the Gap, Part 1”, “Closing the Gap, Part 2” and “Hazards of Hiring”. I have to agree with Joel’s introduction on this section:

I started writing a long introduction to this article, but gave up because I’m so deeply in agreement with everything Eric Sink says that there’s no point. Everything Eric Sink says is right. Do what Eric says and you can’t go wrong. – Ed.

The bottom line: I really enjoyed this book both for the content and Joel’s insight and quips. Although all of the essays in the book are available on the Internet it was nice to have them neatly wrapped up in book form. I think anyone working in the software industry can get something out of this collection of essays. I second Joel’s assertion that we need more software professionals who are also good writers.

Friday, February 6, 2009

Blog Updates

I have changed the look of my blog slightly over the past week. I added links across the top for several topics and for the Advantage DevZone. All of the tips that I have done are now gathered together with a Tips label. They also have their original labels (i.e. Server Tip, ARC Tip, SQL Tip) so you can still search for them that way. All of the topics will be displayed from newest to oldest and you can navigate through them at the bottom of the page. All of the other topics are listed underneath the Blog Archive listing.

I added a search form to the sidebar as well. Hopefully this will make it easier to find content on the blog. You can still see postings listed by date and you can filter by category from the category list. The search form just uses the built-in blogger functionality which seems to work pretty well. I have considered using Google Custom Search but I am not yet convinced that it is any better. Feel free to leave me a comment about the search functionality.

As a final note I have been using feedburner to manage the RSS feed for this blog. Feedburner was acquired by Google about a year ago and they are still working on integration tasks. As part of the integration all Feedburner accounts are being moved into Google accounts so I moved mine last week. This migration has changed the feed address, although the original feed should continue to work. I recommend updating your subscription to the new feed address: The subscribe link on the sidebar has been updated to the new address or you can use the link below.


Wednesday, February 4, 2009

FAQs – January 2009

9000 Class Errors

9000 class errors indicate an error within the Advantage Database Server. On the Windows platform the server will automatically generate a dump file which we can use to determine the cause of the problem. You can use the Advantage Support Capture tool to package the dump file, error logs and event logs to be sent to technical support.

If your server reports a 9000 class error do a quick search of the Knowledge Base. I was able to find articles for 9008, 9014, 9016, 9023, 9029, 9036, 9055, 9063, 9077 and 9084. Next you can review the list of fixes in the latest update. This includes version and version as of this writing. I would recommend subscribing to the Advantage Announcements RSS feed for the latest information on updates.

If these solutions do not help you can contact Advantage Technical Support about uploading the dump file. I would recommend using the Advantage Support Capture tool which will package up the error logs, event logs and dump files into a single archive which can be sent in.

Replication Requirements

Advantage replication was introduced in version 8.0 of Advantage Database Server. The server that will be replicating the data (publisher) sends changes to receiving server(s) (subscribers) in real time. All changes made at the publisher are queued in a replication log and sent to the subscribers whenever a connection can be established. A replication queue (table) is created for each subscriber.

To enable replication there is an additional cost but only for servers who will act as publishers. Subscribers must be Advantage Database Servers but require no additional fee beyond user licensing. However, subscribers may require additional user licenses since the publisher does count as one license on the subscriber.

Advantage ODBC in a 64bit Environment

Sybase iAnywhere does not currently ship a native 64bit ODBC driver for Advantage. However, the 32bit Advantage ODBC driver does work in a 64bit environment. 64bit versions of Windows ship with two separate ODBC managers, one for 64bit drivers and one for 32bit drivers. Unfortunately they are both called ODBCAD32.exe.

The 64bit ODBC Administrator is found in the Windows\System32 directory and the 32bit ODBC Administrator is located in the Windows\SystemWOWx64 directory. With Windows Vista an entry for both will appear in the start menu making it easier to distinguish between them. If your 32bit ODBC drivers do not appear in the list when you run the administrator verify that you are running the 32bit version.

Does Advantage Work with Distributed File System Technologies?

Distributed File System (DFS) technologies are included with Windows Server 2003 R2 and Windows Server 2008. DFS consists of two primary technologies Replication and Namespaces. DFS Replication copies files across multiple servers over LAN or WAN connections. DFS Namespaces allow administrators to group files and folders which may be located on separate physical servers together so they appear as a single folder tree to users. For more information on DFS use this link.

Advantage Database Server can access data stored in a DFS Namespace by using Server-Side Aliases. The Advantage Server cannot directly resolve a DFS namespace if it is passed in as the data path. By specifying a Server-Side Alias the DFS namespace will be resolved by the operating system and Advantage will be able to find the data. For more details see this knowledge base article.

At this time we do not recommend using DFS Replication on folders containing Advantage data. Enabling DFS Replication on Advantage data may cause unexpected errors or data corruption.

Monday, February 2, 2009