CIPS CONNECTIONSINTERVIEWS by STEPHEN IBARAKI, I.S.P.
VB and C# authority speaks
This week, Stephen Ibaraki, I.S.P., has an exclusive interview with the internationally respected writer, author, speaker, and talented developer, James Foxall.
James is vice president for development and support for tigerpawsoftware.com, a Microsoft certified partner specializing in database applications. Together with his many responsibilities, James manages the award-winning CRM product, Tigerpaw Business Suite, and is an expert on application interface and behavior standards of applications.
He has authored many reader favorites such as Sams Teach Yourself C# in 24 Hours, Practical Standards for Microsoft Visual Basic .NET, and his recent, Sams Teach Yourself Microsoft Visual C# .NET 2003 in 24 Hours. His widely read articles have appeared in Access-Office-VBA Advisor and Visual Basic Programmer’s Journal.
James holds a degree in MIS and the Microsoft Certified Solution Developer (MCSD) designation.
Q: James, it’s a pleasure doing this interview with you—thank you!
A: It’s me who should be thanking you - I really appreciate the opportunity!
Q: Please provide a profile of your career leading to the present. What motivated you to get into computing and writing? What challenges and lessons can you share with our audience?
A: I’ve been professional coding full-time for about 15 years now. We have a family company that my father started about 20 years ago. My first tasks were to go in after school and perform backups of critical data to 5.25 floppy disks! No fun there – usually just jockeying disks for hours on end. As I went through high school, and then for a while after that, I pretty much worked in every area of the business: sales, support, documentation, graphic design, etc. For a while, the graphic design-side of the business took up most of my time, and I even had my own graphic design company on the side. I was really still noodeling in life. About that time, Windows 3.0 just came out. Of course, everything we were doing was DOS based, and I was constantly harping about how we needed to move to Windows. Finally, I think my father just got tired of hearing me complain, so he came in one day and dropped a box on my desk: Access 1.1. He said: “you want a Windows program, you write a Windows program”. Well, that did it! There was no Internet back then, so I got on CompuServe and read every post and downloaded every sample file I could get my hands on. I also went to the bookstore and literally bought every single book available on Access – and read them all! I moved back into my parent’s house and pretty much wrote code for 14-18 hours a day for about a year and half. We actually released that product using Access 2.0, and I’ve been in development ever since.
As for writing...One day, we were at Comdex in a special section Microsoft had set aside for Certified Office Compatible products (our product was certified). This man came by our little booth on his way to meet someone and stopped for a moment. He was amazed by some of what he saw in our Access product – and rather surprised that it was written by some Midwest ‘kid’ of 24 that no one had ever heard of. When he turned to talk with me, I saw on his name badge that he was Cary Prague. As a geek, this was a cool thing for me because I knew who Cary was from his books and his company. I mentioned that I had a small image editor called Button Designer Pro (written in VB4), and he was interested in selling it. He made arrangements to come by our hotel room that night for about 15 minutes. He stayed for well over an hour. For the most part, he sat on an end table and showed me screenshots of one of his applications, telling me how they worked and asking me how he did what he did. Some of my answers were better than the actual approach he used in the program! He then said to me “do you want to write a book with me”? Well, duh! It took about six months to get a contract and there were many times I was afraid it wouldn’t happen – I just didn’t want to get too hyped up about it. I flew down to TechEd in New Orleans and we signed the contracts. That was it – I was off and running as a book author. Of course, that’s when I learned how much work it is and that you don’t actually get rich (or even eat sometimes) as a tech author.
I could ramble on for hours, but that pretty much sums up how I got my start! I worked VERY hard for quite some time, and then things just started to pop for me. I’m a firm believer in ‘luck comes after you earn it’.
Q: Who should read your latest book? Why would someone want to carefully study this book—what makes this book particularly unique and special?
A: The Teach Yourself books are interesting in that they have a very specific structure and are aimed at a very specific group of individuals: those new to a technology. The books are broken into 24 chapters, each taking roughly an hour to complete. My book isn’t designed to make you an expert, but it is designed to make you productive. I’ve tried to distill a LOT of information down to useable information. I truly want a reader to be able to write programs – albeit not commercial applications, as soon as they finish the book. The format of my book teaches you the material much in the same way you’d use the knowledge. First, you learn about the Visual Studio .NET environment. Then, you move on to designing an interface, then adding code, debugging, using databases, and then finally how to distribute a .NET application. In the last chapter, you actually build a complete working application using all the skills covered in earlier chapters – it’s a great way to end the book. The information in the book is practical and approachable. I think a lot of readers get turned away when an author talks down to them, or when an author tries to show off to the reader. When I write a Teach Yourself book, I have to operate under the assumption that a reader doesn’t know much or anything about the topic at hand. This doesn’t mean the reader is an idiot, however, and I don’t treat them like one. I try to clearly and concisely cover a topic without being condescending, and without too much technical fluff. When you read my book, you should feel that I really want you to learn the material, and you will find an organization and cohesiveness of thought that will help you move through what can often be a confusing topic. That’s my goal at least!
Q: How have your experiences contributed to the writing of this book?
A: For starters, I actually write commercial software applications for a living. Many authors are consultants, popping from project to project. I write a suite of applications that go through regular revisions and get distributed to thousands of users. By ‘doing it’, I believe I’m better able to sift through the material and determine what is important and what is fluff. I’ve also taught programming at the college level, so I’ve seen the looks on student’s faces when I cover something using too complex of an approach. This experience has helped me enormously when it comes to writing my books.
Q: What are the pros and cons of using Visual Studio .NET?
A: On the plus side, once you learn the Framework it’s amazing how easy it is to accomplish some tasks. I like strict typing, and some other improvements that either force or encourage better coding practices. The forms engine is awesome too. For me personally, the biggest con is the really poor success rate of migrating VB6 projects to .NET; this is keeping us from moving our flagship products to .NET. I’m also not a fan of the distribution tools that come with .NET. Another drawback is the lack of good sample code. There are literally hundreds of thousands of lines of sample code available for languages such as Visual Basic and C++, but they aren’t portable to .NET in most cases, and this is a shame; there’s a lot of good code out there available for free that just can’t be used in .NET. There are a lot of pluses and minuses to using .NET, depending on how you use the product.
Q: Discuss the application interface and behavior standards of applications.
A: This is a big topic – a book’s worth! I don’t think I can do it justice with just a paragraph or so. Essentially, it all boils down to the user experience, which usually means ‘give them what they’re used to’. There’s a fine line between being creative and giving your users some slick new interface, vs. giving them a tried and true interface that they’re used to. For example, most Windows applications use the same image for the Print button on a toolbar, and most use Ctrl+P to print. You might come up with a better design for the button, but why? A user is used to the standard print button. They know what to look for, and where to look for it, and changing this just causes unnecessary stress for the user. The appearance, position, and behavior of the controls on an interface should mimic the same properties in a widely accepted application, such as a Microsoft Office application. That isn’t to say you can’t be creative, but when it comes to designing interfaces, this usually isn’t a place to show off. Obviously, specialty applications such as MP3 players or skinnable apps have their own set of rules, but for business applications, adhering to acceptable policies is usually the best route. Remember, it’s all about the user. No matter how much you love your project, it’s still just a tool to the user. The user shouldn’t have to think much about using the tool. Using the tool should be as transparent as possible so the user can think more about the task that he or she is trying to accomplish.
Q: What are the most important factors to consider when creating robust applications using modern exception handling?
A: Protect every line of code with an exception handler, and centralize as much as possible! It’s easy to think that a certain code statement will never fail, but some of those statements will – protect them! Also, using a central error handler will allow you to enhance the functionality of your application. For example, you might add an email function to the exception handler. We do this – if our application generates an exception, we’re emailed details about it, including the files loaded in memory, file versions, how long Windows has been up (very good to know when trouble-shooting resource issues in 9x machines), and more. The better your exception-handling mechanism, the better you’ll be able to make your code, and your product, in the long run.
Q: What are the main advantages and disadvantages of using C#?
A: C# is a very strong language that is gaining popularity at a fast rate. It seems to be Microsoft’s preferred language (over Visual Basic .NET), so you’re more assured of not getting screwed in the future like VB6 users have been regarding migrating to .NET. Personally, I hate all the semi-colons and the curly braces, so I prefer the syntax of Visual Basic .NET. Other than a few differences, choosing your .NET language is largely a matter of preference.
Q: Do you have a few particular little known secrets to share?
A: No specific secret, but something that people really need to do is study the Framework; that’s where all the power (and goodies) is hiding!
Q: What do you see in the future for the .NET framework?
A: My magic 8-ball says to ask again later. In all honesty, I would imagine that we’d see more and more added to it so there will never be a need to go to the Windows API. Obviously, this is the core of Microsoft’s initiative, so they’ll be constantly improving it. Perhaps we’ll even see cross-platform capability – I really don’t know.
Q: Describe in detail your current work?
A: We have a CRM (Customer Relationship Management) suite that we market internationally. I’ve always tried to stay on the bleeding edge, but at the moment I’ve taken a step back from the technology and I’m focusing on ROI for our clients and prospects. In this economy, getting sidetracked by the latest technology can bury you. We’re adding new features and improving our products, but we’re using Visual Basic 6 and SQL Server 2000. I’ll be re-evaluating a move to .NET later next year, but for now we are focusing on adding more and more value to our products, using our current skill-set and proven technologies.
Q: Can you describe future projects, books, and articles?
A: I’ve paired down some of my commitments for the first time in years. I have three books in print and I plan on keeping them current, but I don’t plan on writing any new ones. The technical book market is depressed right now (so are many tech authors). It still takes as much work to write a book as it always has (more in some ways), but the payback isn’t where it used to be. I have two children, so you can imagine there’s not a lot of ‘free time’ to write. We’re planning on next year being a growth year for our company, so that’s getting my professional attention. At the moment, I’m quote happy with the status quo – I think that’s one of the advantages to writing part-time.
Q: As a renowned developer and IT expert, can you share your views on the major competing technologies today, the nature of these technologies, similarities and differences, their strengths and weaknesses, market penetration, and where you see them in the two year and five year time frame?
A: Actually, I can’t. Other than .NET, I haven’t spent any time with competing technologies. I think a lot of people are in the same boat. Everything in IT has slowed down the last few years, and people are more focused on the bottom-line right now. It used to be that everyone had oodles of resources (and the revenue) to absorb new technology. Now, it’s more about getting done what you can with what you have. There are some really great new pieces of technology out there, but if they can’t demonstrate a real positive ROI that’s achievable in a relatively short period of time, I’m just not interested at the moment.
Q: Any additional predictions about specific technologies, future trends, winners and losers; “killer apps?”
A: If I knew this, I’m not sure I’d be sharing! Actually, I’m constantly amazed at what become ‘killer apps’ for me. For example, I use Google’s Internet Explorer toolbar – what an awesome little application! I love how it places your search words on the toolbar as buttons (clicking a word finds the next appearance of the word), and how you can click a button to have all of your search words highlighted in the document. It’s these types of programs that make you go ‘why didn’t I think of that?’ I think that if you can pay attention to what you’re doing, and start noting the areas in which you find yourself doing the same or similar things over and over, you’ve got a candidate for a ‘killer app’. For example, how many of us used to filter through our in-box, manually deleting SPAM every day? How many of us recognized the need for a product? How many of us ever took the time to write some code to solve this problem? I, for one, recognized the need for such a piece of software but never took steps to address it (duh). The most successful people not only recognize the need for a new solution, they actually go to work fulfilling that need. I think there are opportunities available every day; we just don’t often recognize them. When we do, we often dismiss them as good ideas but never pursue them. For what it’s worth, I think there’s a huge market for $15 applets that improve the overall user experience. These are the types of applications a lone developer can write and make money on –just a thought.
Q: What are the hottest areas in IT? Which skills and knowledge sets must businesses and IT professionals have to remain competitive? How will these evolve over time?
A: I’m not really sure anything is ‘hot’ at the moment, at least not compared to how it was 4 or 5 years ago. We’re in a weird time right now, and I’m not sure how everything will shake out. I’m in the process of trying to hire a programmer, and I’ve been trying to separate the wheat from the chaff – it’s hard. Certainly, having some sort of relevant certification helps. It may not get you the big bucks it once did, but it will help you stand out when you’re being compared to 50 other applicants or people vying for a similar promotion. As for businesses, technology is important but not more important than what you do with the technology. In my case, we’re using older technology (i.e. Visual Basic 6), but our customers don’t care – they want a robust feature set that works. As we create more web extensions, using .NET makes a lot of sense; we try to use technology to solve problems. If you can create a killer .NET web service that improves your product (and therefore your bottom-line) – do it! However, migrating all of your code to .NET web services just to stay current with technology may not add to your bottom line, and may side track you from other important tasks such as adding real value to your products. I think the key to your question is ‘remain competitive’. Sometimes that means acquiring and incorporating new knowledge and technology, sometimes that means something as ‘mundane’ as using resources to reduce clicks in your application. I think companies and individuals need to stay fluid, but shouldn’t change just for change’s sake.
Q: What are your top ten recommended references and resources for business people and IT professionals?
A: I’m not a good one to ask on this. I’ve been doing this for so long, I don’t frequent too many specific spots anymore and I’ve cut back on my subscriptions. You can probably tell from many of my answers, I’m trying not to be so ‘in the thick of it’ if I can help it; digesting every tidbit of technology information you can find can lead to indigestion! I currently subscribe to Maximum PC, Computer Gaming World, and Guitar One. When I need a technological answer, I Google.
Q: Where do you see yourself in two, five, and ten years?
A: Older. Seriously, I hope to continue to help our company grow. I would like to double our development staff in the next five years. I’d love to have more resources to accomplish some of the cool periphery things that we can’t always get to. I’d like to spend more time researching the application of new technologies, but I can’t do that much now because I’m still writing a lot of code.
Q: Describe your computer setup?
A: My personal computer at home is a 2.4GHZ Intel proc with 1GB RAM. I use a GeForce4 ti4400 as my main video card along with a GeForce2 PCI to run a second monitor. Both monitors are these incredible 19” Hitachi monitors I picked up a few years ago. I have a few hard drives in there – a 60GB and a 40GB. I run an Audigy2 sound card for gaming and listening to music, and a Delta 44 for my audio recording (I play guitar and write music). I have a home studio, so I have LOTS of music gear hooked up to my PC. I use a Logitech optical mouse (the funny looking one you can’t find anymore), and I use the full-size Microsoft Natural keyboard. My case is aluminum with a side window, and it’s lit up by liquid neon – yes, I’m a geek! Surprisingly, my work setup is very similar to my home setup, except for the music peripherals and neon! I’m very particular about my gear, and I like to use the same mouse and keyboard on both setups. I tend not to run lots of garbage applications and I keep a pretty clean system.
Q: If you were to do it all over again?
A: I would eat better and exercise more!
Q: From your work and experiences, you must have many stories to tell including humorous ones?
A: OK, here’s one. I went into a video store one day to rent a video. When I showed my ID to the clerk, he said: “Are you the James Foxall that worked at Tigerpaw?” Something about his tone made me a bit uncomfortable. I said, rather sheepishly, “yes.” He then replied “you’re that guy that always locked up our computers! We used your software, and someone was always bitching about James Foxall locking up their computer!” Remember how I said our first Windows project used Microsoft Access? Well, the default user in the Access database was me, “James Foxall”. Heck, I was the only guy working on the project at the time. Access was constantly experiencing contention issues, and you’d get an error that someone else had a lock on a record so you couldn’t update it. The problem was, it would display the name of the Access user, not the name of the software operator. So, the message “Can’t update, currently locked by user James Foxall” appeared on screens all over the country! So much so that this guy recognized my name years after the product retired. Needless to say, I’ve learned to NEVER code your name into ANYTHING. I was pretty mortified by the experience; fame might be cool, but infamy sucks!
Q: If you were doing this interview, what two questions would you ask of someone in your position and what would be your answers?
A: This is tough; you’ve asked some good ones! I would ask if I have a personal web site, which conveniently enough I do. The address is www.jamesfoxall.com.
I might ask if I have any recommendations on software that I really like. A few of the little lesser-known gems that I’m fond of are HyperSnap-DX for screen captures, AWIcons for icon design, Ad-Aware for removing spyware, and of course, the Google toolbar!
Q: James, you have a multitude of valuable experiences and knowledge. Thank you for sharing with our audience.
A: Thank you – it’s been fun to re-think some things that I now take for granted.