|
VB and C#
authority speaks ...
Interview by Stephen Ibaraki,
I.S.P.
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.
Discussion:
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.
|