August 18, 2008
On the third Monday in August, 1998 I began my first IT job: first-level support for a bottom of the barrel PC maker whose low-quality computers were sold on a home shopping network. On one hand it seems like a long time ago; on the other hand it seems like it was just yesterday.
I've learned a few things since then. In no particular order here are 10.
- Be realistic
You may be able to write cool programs or admin Unix boxes like a pro, you may be the best at what you do, but most people don't care. Your manager wants you to get projects finished on time and make him look good. Your coworkers want you to be reliable and personable. If you're a lazy jerk, it won't matter if you're the best: no one owes you loyalty, friendship or a job.
In other words:
- Know thyself
Know your strengths and use them to help yourself and others. Know your limitations and either work to overcome them, or at least compensate for them.
- Remember and respect those who help you
The IT field is full of opportunity, but no one makes it on his own. You'll meet plenty of people who will help you out: teach you something new, or give you new opportunities, or help you improve yourself. Be sure to thank them, and show your appreciation by following their example.
- Keep your resume updated.
I'd barely begun my first IT job when I realized that the company probably wasn't going to exist much longer, and I saw that it was a good time to update my resume. You may not be looking for a new job, but management might be looking for the opportunity to cut costs. You may not be looking for a new job, but a new job might be looking for someone with your skills. When you complete a great project, update your resume (to make sure you don't forget to add the project later). When you master new skills, add them to your resume.
- Always learn something new
Five-year old skills run the risk of becoming irrelevant in IT. You never know it all. No matter how much you know, there's always more to learn: new subjects to discover, new depth in the ones you already know. Always work to make yourself a better programmer, sysadmin, network engineer, whatever you are.
Spend some time learning outside the IT field too.
Learning other languages is fun and good for your brain. Pick one that interests you and give it a try. Learning a little Chinese or Gujarati or Russian (or whatever) won't make you a millionaire or the king of your particular discipline, but someday it'll sure impress your coworkers or your boss or the new contractor at the office, and you never can tell what new opportunities you'll find.
- Keep your eyes open.
You have noticed that this list contains more than 10 items, haven't you? Computers are exact; programs are exact; look at that config file or program or data and see what it really says, not what someone else tells you it should say.
The IT field is full of opportunity, but it's rarely going to come looking for you. Keep watch for new opportunities to help, to improve your own job or skills, to make someone else's job easier, to fill a niche. Keep your eyes open to make sure that your company is doing well; if it isn't, keep your eyes open for new opportunities.
- Keep your mouth shut until you have something worthwhile to say.
Don't talk too much. Don't ramble. Don't say things that shouldn't be said. Before you say something, say it to yourself silently and then decide whether you should say it out loud. "I'm thinking about it" is a valid answer. Don't be in such a rush to be the first or loudest to speak; try to be the first to speak correctly.
- Be optimistic
IT is a field full of opportunity. You can choose your direction and goals and make them happen. Your only limitation is your ambition.
- Keep on track: in career, in your speaking, in your writing, in your programming. Be short and to the point.
- Get involved
It's easy for the keyboard and the screen and the server room to become your whole world, and that's actually a fairly lonely world. Find opportunities to get together with people who share your interests: user group meetings, programming conferences, language classes, and make some friends.
And whether your community is online or in person (or a little of each), pitch in and help out: teach something, train someone, write some documentation, clean up code or clean up a meeting room.
Finally, the most important of all:
- Have fun.
August 08, 2006
Borland Brings Back Turbo
Today I read at PC Magazine that Borland (formerly Inprise, formerly Borland) is bringing back the Turbo line of compilers. In anticipation of the September 5 release date, the turboexplorer.com website has gone live and begun the countdown.
Wow. The Turbo line was one of the most unfortunate casualties of the 90s. Back in the 1980s when the personal computer was on the rise, very few programming tools were available for home hobbyists. PCs typically came with the MS BASIC interpreter and there were a few shareware/freeware tools available, but real compilers for real languages (Pascal, C, etc) were only available for hundreds of bucks each--a lot more than the budget of many experimenters.
Then Philippe Kahn created Borland International, packaged up his Pascal compiler and started selling it for $49.95. It was smaller, faster and cheaper than anything else, and it sold like crazy. While other packages provided a command line compiler, Turbo languages gave you an IDE, a command line compiler, programming tools, examples and great documentation. Borland grew and created more Turbo compilers such as Turbo C, Turbo Prolog, Turbo Basic and Turbo Assembler. Suddenly average Joes could afford real production-quality programming tools for the PC, and it created a flood of new software and small software companies. Hobbyists and kids could try their hand at writing real programs in real languages.
I was a Turbo C fan. Late in 1997 I picked a C book at random and bought the second edition of Prata's C Primer Plus. It was a great book, but I didn't have a C compiler (all C compilers cost $300-500+) and couldn't run any of the examples or do any of the exercises. The next spring Borland released Turbo C 1.0 and I plunked down my hard-earned $99.95 for it. It was a great little compiler, and I upgraded it to 1.5, then Turbo C Professional (with Turbo Assembler and Turbo Debugger). Although I never sold any software I wrote with it, I spent many hours during my college years with Turbo C and Assembler, and got a lot of enjoyment out of the package. In 1991 I made my final upgrade to Borland C++ 1.0. After that I had no time to program until I finally reached the Linux world.
Now Borland is planning to resurrect the Turbo brand with the release of 4 new compilers: Turbo C++, Turbo C#, Turbo Delphi and Turbo Delphi for .NET. They'll be giving away an "Explorer" edition for free (but you can only have one language installed per computer); those who need more capabilities can purchase the "Professional" edition for "less than $500". Looking at the feature list, the Explorer editions already look pretty capable.
Although I'm happy to see the return of Turbo and wish Borland the best, I have to ask the question: does it matter?
Once upon a time, if you wanted to get into programming on the PC you had to use BASIC or cough up money for a real development system. Borland made real development systems at affordable prices (and Microsoft soon followed with its own line of "Quick" compilers) and opened up programming to "the rest of us".
Nowadays, though, it's a different world. Young 'uns who are technically-oriented and interested in programming have a whole universe-on-a-disc in Linux, with all the tools and compilers they could possibly want.
Borland is aiming to attract Windows programmers: kids who want to learn to program "visually" on Windows, programmers who want to try out a new programming environment, programmers who are tired of Microsoft's tools and are looking for an alternative. Alternatives are good.
Will Borland's alternatives be good enough to lead programmers away from Microsoft? Personally, I can't say (my only experience with Microsoft was that copy of Visual C++ I bought and barely used). Borland knows the challenge. We'll see if it can live up to that challenge. Go, Borland!
August 04, 2006
In 1996 I pulled the motherboard out of my former-286 and replaced it with a 486SX handed down by my friend Matt. He sold it to me for $50, the cost of the 4MB of RAM. I don't remember how fast it ran, but it was something like 33MHz. Very speedy: the DOS DIR command generated output faster than I could possibly read it.
This machine ran DOS 6.2, Windows 3.1 and clocked a lot of WordPerfect time. There was no need for communications programs since I lived in far western Minnesota, out of range of BBSs or internet.
The important software, though, was Linux. I'd met a local ham who'd moved back to Montevideo, Minnesota after spending many years in the real world. He was shocked that anyone in Nowheresville Minnesota had ever heard of Linux, and invited me to come over to his workshop to discuss radios and computers. He dug around and found an extra 4MB of RAM to bring my system up to a full 8MB to run X, and gave me my first multi-CD multi-distribution Infomagic set with Red Hat 2, Slackware 1.something, an old Debian and the sunsite archives. Great stuff.
Over the next week I spent numerous hours trying to figure out how to install Slackware on my system. Partitioning the hard drive was simple. The hard part was figuring out and manually performing a lot of tasks which are done automatically now. It was a serious learning experience, and it was a dream come true when I finally booted to the Slackware login prompt.
I made the 45 mile trip to the nearest bookstore in Marshall, Minnesota and bought the only Linux book to be found in that part of the state: the second edition of Running Linux. I finally had a chance to check out Unix, and it was a whole new world: fun and full of new things to learn. Ten years later I'm a Perl programmer who uses Linux every day, thanks to that little 486SX and that set of Linux CDs (which still have a place of honor on my CD rack).
August 03, 2006
Yesterday I wrote about my old 286. Today is 3/8/6, so how about my old 386? Well, I don't really remember much about it. Sometime in the mid-90s (I think it was 1995) my friend Matt gave me his 386SX motherboard when he upgraded to a 486SX. I vaguely remember that I used it to run Windows 3.1, X-Com and Ultima VII, but didn't have enough RAM to run Linux.
And I'm fairly sure that I didn't use it for long before he upgraded again and sold me his 486SX. More (much more) about that tomorrow.
August 02, 2006
Someone pointed out that today is 2/8/6, so I thought I'd reminisce about my old 286.
I bought my 286 in 1989. I can't really remember why; I think I'd caught the upgrade bug. My old Epson 8086 machine felt a little slow for Turbo C and Ultima IV or V, though realistically it was probably fine--I just wanted to upgrade.
So I sold it to a classmate and started reading every page of Computer Shopper (back then it was as thick as a phone book). Finally found the absolute cheapest price and bought a 286 from an outfit called Syntax Computers in California. It was junk: froze up randomly and was generally built very shoddily. I returned it and waited a month to get my cash back. The world is a better place without Syntax Computers.
While waiting for my refund I read some reviews of PC clone makers and ended up buying a 286 machine from a place in Chicago. It ran at a blazing 12MHz, had a full 1MB of RAM and a 256K VGA card. I bought my own 65MB hard drive and a 2400 baud Cardinal modem and installed them myself, then loaded DOS 5 or 6.2.
I probably got more use out of that 286 than any other computer I've ever had. It ran without a problem or a change for at least 6 years. During that time I used it for a lot of C programming, a lot of Ultima and Wing Commander, Civilization I and Might & Magic III, F-15 Strike Eagle II and F-19 Stealth Fighter and the SSI Gold Box AD&D games and many other PC game classics.
Then there were the hours spent on the local BBS systems in Milwaukee, on ExecPC (are they still around) and even on the Internet in 1992. I remember going to yahoo.com back when you could look at all the new websites listed every day. I didn't have any form of Windows, so it was all text-based browsing. I used gopher more than www. And I remember seeing a notice about a little homebrew Unix-alike called Linux, but was disappointed that it required at least a 386. I'd always wanted to try Unix.
More than all of those combined were the hours spent running WordPerfect 5.1. The 286 took me through college with my own papers and the papers I typed for others (at $1 per page), all the way through seminary with many, many papers, and through at least my first year of my first church. It never quit.
In 1996 or so I started replacing parts and the motherboard was one of the first to go (I still have it packed away in a box, though), but I used the case for up until 2002 or so: over the years it held a 386, a 486SX and various Pentia. It's still sitting in my basement with a 100 or 200 MHz motherboard and CPU.
So I bought the 286 out of the pointless desire to upgrade for the sake of upgrading, and ended up learning that the specifications of your computer are far less important than getting real use from it.
March 31, 2006
Since the motherboard on my 2002-vintage Athlon 800 system was on its way to computer heaven, and since Windows 98 was steadily becoming less and less stable, and since I got a job with much higher pay and almost zero commute, I decided to put together a new system.
The old computer had some salvageable parts--DVD writer, 120 GB hard drives--so all I really needed was a new case (with bigger power supply), motherboard and CPU, RAM and video card. I shopped Newegg this time and would definitely buy from them again. I got the parts last Friday and had the system together in an hour or so, but Windows XP took another 2 to install. Overall it's a great system:
Athlon Sempron 64 3100+
Biostar TForce6100 motherboard
ATI Radeon X1300Pro 256 MB video card
On Saturday morning I went to Meijer's and got Oblivion and am very pleased with its performance on the new system.
I'm also very pleased to be able to run Linux on the system without having to dual-boot, thanks to Qemu. Now I can run Slackware in a separate window on Windows XP, and it's even pretty snappy. What a crazy world.
February 16, 2006
Back from the Future
One evening sometime late in 1987 or early 1988 I stopped at a local computer store and discovered that Borland Turbo C 1.0 had finally been released. That was big news to me: I was a poor college student who had been learning C on my own, and all commercial C compilers at the time cost at least $300-500, far more than my budget would allow. "Borland", "Turbo" and the $100 price tag made it a sure bet, and I plunked down my hard-earned cash.
I spent a lot of time in Turbo C's yellow-on-blue IDE, upgrading to 1.5, 2.0, and then Borland C++ over the next few years. After college I no longer had time to program, and Turbo C still remains packed up in a box somewhere (no, I never throw anything away).
Back in those days I had the dream of becoming a self-made C programmer, but it never happened. Until this year, when I finally (18 years after learning C, 7 years after becoming a self-made IT guy) was hired to be a C programmer, anyway. The large corporation where I work provides all employees with laptops, but we aren't allowed to install any software other than the officially approved packages. That's fine, but the officially approved packages don't include any C compilers. There's no way to do C programming unless we're connected to the corporate network and its servers.
Where there's a will, there's a way: I've figured out how to do local C programming on my (company-supplied) laptop. In November I bought a 512MB USB drive, very handy for carrying my own documents and software apart from the company laptop. And several years ago Borland (or whatever it's called nowadays) released several of its "antique" (hey, I think I resent that term) software packages free to anyone who wants to download them. One of those packages is Turbo C 2.0. After a short download and installation to my USB drive, I have a working C compiler without installing anything to the company laptop. After 18 years, I'm back to the familiar 80x25 yellow-on-blue text mode IDE.
Who says that you can't go back home?
I found some nice stuff for USB drives at portablefreeware.com, specifically MPUI, a media file player which can handle a bundle of different formats. SLAX includes MPUI, and it's very slick. It's even slicker to have it completely portable on my USB drive. Now I can watch my (DIVX-encoded) Japanese shows on the laptop without installing anything on their sacred hard drive.
For programming purposes, I'm also carrying elvis on the drive. Now I just need a nice portable version of ksh or bash for DOS/Windows, and my life will be complete.
January 11, 2006
Certification as a means of avoiding knowledge?
Spotted on comp.lang.c: "Leo" wrote,
"I just had a job phone interview. Somebody asked me a lot of C questions which I was not prepared well. To avoid such questions in the future job interview, I hope to take some kind of C certificate."
"Leo's" request caught my eye: the place I work is doing a lot of hiring, and C is a required skill. If you have an interview, you WILL be asked C questions. I hear that some interviewees take 5 minutes or more to answer simple C questions; I'd guess that these are the guys who don't get hired.
If you go to an interview and they ask you if you speak English, you can't expect to point to a piece of paper which says, "I speak English" and hope that they'll be satisfied. If you interview for a job which requires knowledge and use of C, you really should expect to demonstrate knowledge of C. Maybe some skills can be certified away, but you can't fake it with C: either you know the language or you don't.
Hmmm. It makes me wonder if there ARE certificates you can get which will deflect any requirement of proving the skills in an interview. Scary thought.
January 02, 2006
Back to the Computing Future
All this working with C really brings back the 80s. I started learning C in 1987 and started programming when I bought Turbo C 1.0 on release day in 1988. Those were the days.
Of course, reviewing C leads naturally to reading Let's Build a Compiler and Compilers and Compiler Generators, and that leads to assembly language and cool articles about preserving/reviving old computers and I ended up spending several hours yesterday working on my VAXstation.
Unfortunately I hadn't fired up the VAXstation in over a year and couldn't guess the system password (it wasn't the usual password I use). Fortunately a former coworker had enlightened me to the fact that you can still break into a VAX and reset the system password, so I managed to accomplish that. However, all my software licenses expired in 2004, so I need to get new ones, and naturally that has to wait until my new Encompass/DECUS membership number gets registered with openvmshobbyist.com.
Yikes. All this just to do some VAX MACRO programming. I could do it on the 3600, but it might seem antisocial to spend the entire weekend in the basement. I really need to get that thing networked.
Operating system fans, be sure to check out The Operating Systems Handbook, now freely available in PDF form. I really wanted this book 6 or 7 years ago and am really looking forward to reading it. It could be a great resume-booster.
Also, be sure to check out The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!). I wish it were about 3 times as long, but it's a great start if you know absolutely nothing about the subject (except the "fact" that "Unicode is simply a 16-bit code where each character takes 16 bits and therefore there are 65,536 possible characters"--completely untrue).
December 01, 2005
I spent Sunday afternoon and evening working on our database group project at the apartment of another group member. As midnight approached I really needed to get home, but we also really needed to keep working. The solution turned out to be our good friend Skype. With Skype we were able to keep working till 3am, and the next night until 4am. Wait a minute. Is this supposed to be a good thing? Oh well, at least we handed in our project on time.
August 03, 2005
Too many languages, too little time
I have quite a wish list for programming languages.
I want to learn C++. C was my first programming language, back in 1987, and it'll always have a special place in my heart. C++ is a much bigger language but it has more capabilities. Java? No thanks. Give me a compiled language with some history. And jobs with C++ seem to pay pretty well too.
I want to learn Lisp. Ever since reading an introductory article in Scientific American back in 1986, I've wanted to dig in and get going. Several times over the last year or two I've felt like I was pushing the limits of Perl. I've known that I could do some things more easily in Lisp, but never learned enough to make it work.
I want to learn APL. Now there's some history, and who wouldn't love a language which uses such weird symbols...and binds such power to them?
I want to learn Forth. I want to learn Ruby. I want to learn assembly. Heck, I want to learn them all.
That's why I never get around to digging into any one of them. For now, I'm narrowing the focus to C++ and Lisp. That should be enough computer goodness for a while.
July 24, 2005
Slax: cooler than ever.
A while back I wrote about the goodness that is Slax, a live-CD Slackware distribution which fits on a cool 210MB mini-CD. Last night I spent some time on the site and am impressed with the pace of Slax development. Slax now gives you a boot option which permits you to store your Slax configuration on the Slax servers, giving you some real portability. I look forward to the day when Slax also permits you to store your configuration on your own servers.
Slax now also supports the ability to load the entire OS into RAM (256MB required), freeing a CD or DVD drive for other uses. I'm running Slax from RAM right now, and it is really snappy.
I've always been a fan of portable bootable Linux systems (Cramdisk, tomsrtbt, Knoppix, etc) but this is the best one I've ever used. I'm really interested in putting together my own version with a lightweight window manager and crammed full of programming tools. It'd make a great portable system to take along...well, anywhere.