Category: Computers

  • I’m no longer cutting edge on PHP

    I just realized this; I haven’t used PHP 5 at all since it came out, so I’m terribly illiterate about this latest version of PHP. I still use PHP 4. That means I’m no longer cutting edge on PHP! Or maybe that just means I’m no longer bleeding edge, since PHP 5 adoption has been terribly slow.

  • Intuit Master Builder

    Being a construction company, we use Intuit Master Builder pretty extensively at work. It’s basically an all-in-one accounting/construction management package and while it does the job reasonably well—for the average user—I thought I’d relay some of the problems with it from an IT/computer programming standpoint. (Kind of an anti-review.) Which is sure to be amusing (or frightening) for other people in my position.

    First of all, it’s a database-driven application, which is fine, but the underlying database format is Visual FoxPro—and not a new version of FoxPro. I’m not even positive it is FoxPro for that matter: the tables are all in DBF format, and the indexes are CDX files. That’s one problem—I mean, it’s 2005, and we’re still having to deal with DBF files? Even worse: each table name and field name inside the tables is constrained to exactly six characters long. No exceptions. So you either have ridiculously-abbreviated field names (like “invttl” for “Invoice total” or “lstupd” for “Last updated”) or short names that are padded out with underscores (“state_”). Uhm, hello? DOS called, and it wants its lame database back.

    Second, the relational qualities of such a database are a joke. Sure, there are key fields that build relationships to other tables (foreign keys), but there’s no consistency between them—primary key field names are duplicated, fields in different tables linking to the same foreign key field are named differently, etc. But—and here’s the dealbreaker—you can only have one “company” per database; in other words, if you have multiple companies (or projects), then each one requires its own database in a separate directory. And there’s no inherent way to combine these separate databases to share data among them (like a master list of vendors or cost codes) or to build consolidated reports of any kind. This is probably the single biggest flaw in Master Builder.

    So one of my tasks is to build/maintain consolidated reports and software to manage the data among the databases. This, of course, is a huge pain, but I have a variety of tools that I use to do this (which illustrate how hackish this all really is):

    • Crystal Reports. Great application, it’ll hook into just about any data source and build just about any report you can think up, so I’ve built a number of consolidated reports in Crystal. Here’s the problem: I’m stuck using CR version 8 because that was the last version which allowed you to compile the reports into standalone executable files that people can run without needing Crystal Reports installed on their computers. I have to do this because at least half the PCs here are still running Windows 98 and we don’t have a server capable of publishing Crystal’s distributed reports.
    • Microsoft Access. This is like, the hacked method of managing the databases. I connect to a Master Builder database via ODBC, and I can directly access (no pun intended) the data. The drawback is because of ODBC, I can’t connect to more than one database at a time—if I want to copy-and-paste data from the Master Company (the source) to any of the others, I have to close Access completely after each database to sever and then renew the ODBC connection.
    • PHP. Yep, PHP. I’ve built some web form interfaces to the databases (running on the server intranet in-house), one of which is a utility to copy vendors out of the Master Company and paste the new or updated data into each subsequent database. I’ve also done a bunch of consolidated reports via PHP, accessible through a browser—I find it’s much quicker and easier to write the reports in PHP than in Crystal Reports. The drawback? You have to have a web server and PHP running on the intranet. And, have ODBC connections set up for each database on the server as well. And, you have to know PHP.

    What really sucks is when a new company/project is added, and I need to go through the existing consolidated reports and update them to include the new database. In the PHP reports, this is pretty much a cinch. In the Crystal reports, though, the pain level ranges from moderate to severe, depending on which report I’m modifying. All of them make extensive use of formulas, so I always have to weed through and update all of those. The worst report is one that uses subreports to break down data from each company, and global variables and formulas to consolidate all this data into the master report; each subreport has to be formatted exactly the same (which is anal retentive beyond words) and I’ve got this daisy chained house of cards of formulas in various sections of the master report relying on an EvaluateAfter cascade to properly calculate certain values… the anxiety levels creep higher and higher just thinking about that damn thing…

    The end result is I’ve got a lot of scripts, reports and techniques for handling Master Builder that are only known to me, and would be very hard to explain to someone else. Some might say this is “job security,” but I was talking with someone about this today and we decided it’s much more of a “lock-in” (and not in a good way).

    Now, compared to much of the competition out there, Master Builder is a good program. It does accounting voodoo that is a total mystery to me, and seems to do it well. It’s got a low barrier-to-entry user interface that makes it easy to learn and use for non techie types. It’s an open system to the extent that the database schema is available and there’s an API that allows the development of independent software that ties into it (a lot of third party developers have developed PDA modules for it, for instance).

    But good god, I pity the poor fool who has to administer the system…

  • Quantum Link

    This is indescribably cool if you’re an old-time geek who cut his/her teeth on the Commodore 64: Quantum Link Reloaded. Basically, someone has reverse-engineered the original Quantum Link online system that was for the Commodore 64, and made it available online (for free), and you can actually connect to it via a Commodore 64 computer—or an emulator.

    Read this Wikipedia article on Quantum Link. What many people don’t know is that it became… America Online.

    Via Slashdot.

  • Maybe it’s a good time to learn COBOL

    Two interesting factoids from ADTmag’s 2005 Salary Survey:

    [Application Programmers] Programmers in mainframe and Unix shops make the most, topping $59,000 a year in base salary. By development language environment, programmers in CICS and COBOL shops fare best, drawing average salaries of almost $62,000 for CICS-based development and $59,000 for COBOL.

    [System Programmers] Mainframe skills continue to be a strong suit for systems programmers, who earn an average of $71,100, outpacing their Unix counterparts by about $2,000. By development language environment, systems programmers in CICS and COBOL shops fare best, drawing average salaries of $72,100 and $70,200, respectively.

    $59K to $70K per year for being a COBOL programmer? Whoa.

    Oddly, it ties into my COBOL note from almost exactly a year ago.

  • BittyWiki

    Just for grins, and to flex my PHP chops, I decided to write a simple wiki system. The catch, though, is to see how short I can make the actual program; I was inspired by this Shortest Wiki Contest, though I can’t profess to be quite as fanatic as those guys (I prefer readable code—squishing it all into a minimal number of obfuscated lines just seems like cheating), I think I did pretty well so far. Read through if you’re interested; it’s pretty technical and I include the PHP source.

    (more…)

  • 10 years of PHP

    The PHP programming language is 10 years old today. A large part of what I do these days is PHP development—I’ve got it running web sites, parsing web server log files, running command-line batch processes, and more. Thanks to Rasmus and the PHP community for making it all possible!

    For a good roundup of the 10 year coverage, go here and here.

  • Still no internet at work

    Okay, that’s not exactly true: we got our internet service back at work around 3:30pm or so. But that still means we spent the better part of a day without.

    The problem, as it turned out, was a dead SAS unit. (I have no idea what “SAS” actually stands for; it’s basically like a cable modem for the wireless broadband nonsense.) Not the cranes at all. What’s truly irritating is that it took OneEighty two days to figure this out, and most of today for the tech to “prep” the new unit. What, are they stored in a vault under guard somewhere? Seems to me techs should have spare SAS units in their trucks, ready to swap out at a moment’s notice.

    So I spent the better part of the day in a bad mood at work, continuously fielding the inevitable “Is it fixed yet?” and “Why aren’t we up yet?” questions and basically spinning my wheels. Ridiculous. Now we’ve lost two days of productivity and I just know I’m gonna be in a bad mood at work for the rest of the week.

    Needless to say, I plan on switching us over to a hard line as soon as possible; I’ve already got some paperwork in motion. What a pain in the ass.

  • Sucks when there’s no internet

    At work, that is. Our internet connection was down the entire day. And there wasn’t a thing I could do about it except wait for the tech from OneEighty Networks (née HighSpeed Communications née EmpireNet) to try to fix it. With no luck.

    The problem? Well, for starters we have OneEighty’s goofy LMDS “wireless broadband” service, which, instead of an actual T1 or DSL or other hard line, employs a line of sight microwave relay system to connect to the internet. “Line of sight” means that anything getting between the roof antenna and the transmitter on Awbrey Butte will block the signal and put you out of commission. Oh, and really foggy/rainy/snowy/etc. days can interfere with the signal too.

    (This was all set up well before I started with the company; I just inherited the problems.)

    So today it was offline, and the tech can’t figure out why, but his favorite theory is that one of the new giant metal construction cranes that went up last week is blocking the signal. Sounds reasonable, except the crane went up last week and we didn’t start experiencing any problem until today (or possibly yesterday but no one was in the office to tell for sure).

    So work sucks when there’s no internet, because it really drives home just how much we rely on having a live connection. Probably 90% of what I do requires internet access. Stupid crappy “wireless broadband.” I think I’m calling around tomorrow for quotes for a real connection.

  • 20 questions

    Okay, so I must be easily impressed. From this post on Boing Boing I found the 20Q.net site and began trying to stump the system. I can’t do it. No wonder; the guy that created the neural net (a type of artificial intelligence software) started it back in 1988, and it’s been “learning” ever since, entirely by people playing 20 questions with it. Crazy.

    I remember having a 20 questions “A.I.” game that came with the Logo programming language for the Commodore 64 (way back in the day). Same deal, it was preprogrammed with maybe three items, but as you played it, it remembered every new item you fed it and got “smarter” each time it played. The only drawback was that on a Commodore, you couldn’t really save the state of the program, so it would “forget” everything each time you started it up.

    Funny part is, I remember the first time I played it, I figured I’d stump it with “ostrich.” I just about fell out of the chair when, after about five questions, it says, “Are you thinking of an ostrich?” I was hooked, but ultimately didn’t fully capitalize on that for another few years… at the time, I simply considered it to be an exotic toy. Now I write software for a living. Go figure.

  • Bend Bulletin article: Tech Town

    The Bend Bulletin (our local newspaper) has an interesting article online today: Tech Town, a profile of the local computer/tech industry and how it’s pulling “young, technically savvy people” to the area.

    The conventional wisdom is that Bend is a great place to retire, but increasingly it is a great place for young, technically savvy people to live and work, too.

    Bend officials envision an industrial park and university campus at the north end of town. The so-called Juniper Ridge project could become the cornerstone of an invigorated regional economy based on science, engineering and innovation.

    If those companies materialize as planned, they will bring even more skilled workers to the region, workers like Marshall Simmonds, Morgan O’Neal and [Chris] Reese.

    All three pointed to the character of Bend and outdoor recreation as drawing and keeping them here. That foundation, they said, makes the region ripe for new technology companies that will need to attract talented young workers.

    The three people they profile are Chris Reese, technical director for Sony Bend (whom I’ve blogged about before); Morgan O’Neal (“a throwback to some of the early entrepreneurs of computing and the Internet. He has little formal training in technology”—is the Bulletin trying to be complimentary here? jeez), web developer with my old employer, Alpine Internet; and Marshall Simmonds, vice president of Enterprise Search Marketing for The New York Times Company by way of About.com. That’s a pretty diverse group, considering.

    Still, it’s not entirely news that Bend is a high-tech region; technology is one of the industries that’s been growing like a weed for at least a decade (along with tourism) since the older industries like logging have been waning. Even so, this part is intriguing:

    City officials and local business leaders for the last few years talked about bringing more high-tech companies to the community. Most recently, the city has been eyeing the Juniper Ridge project as a potential home for such businesses.

    The first phase of Juniper Ridge development is already in the works, the city having annexed 500 acres it owns on the northeast edge of town. The city will select a master developer for the project, but the council is working with the region’s legislative delegation in Salem to site a four-year university there that can complement a contemplated high-tech industrial park.

    Almost sounds like the play Klamath Falls made for high tech (“Silicon Basin,” anyone?)—the difference being, of course, that Bend is already supporting a viable tech industry. But what’s this about a university? Ah, I see from this Bend.com press release that it appears to be for OSU-Cascades and possibly Cascades Academy of Central Oregon. Interesting.