Home About The Codist RSS Feed

MAMP, Best Thing For PHP On OS X
Aug 19, 2008 14:01 perm link Readers: 71

MAMP is best helper for coding PHP apps on OS X I've found since Textmate.

The abbreviation MAMP stands for: Macintosh, Apache, Mysql and PHP and it installs as a simple OS X application (drag folder into /Applications). Once you run it it starts up a local Apache and MySQL and shows a simple control panel which you can use to administer them. A full PHP stack is also included (either 4 or 5).

I was using the local Apache and PHP but this is actually much easier to work with, you can change configurations easily, making working with multiple sites much quicker. Although I don't use MySQL at this point (SQLite works for the small sites I am doing) I imagine it's a big help there too.

There is a pro version as well with many more features for managing testing and deployment of larger sites. It also supports external viewing of different sites for folks who want to let others see their progress. Base MAMP is not for serving to the public.

Sure you can do it yourself locally but this makes it totally painless.

My Tags:

  • Daniel: Aug 20, 2008 10:59

    ...except if you need the XMLRPC libraries in PHP, then you're S.O.L.

  • Add Comment

HIPAA, Your Healthcare Privacy, And IT
Aug 06, 2008 12:05 perm link Readers: 419

HIPAA (Health Insurance Portability and Accountability Act of 1996) is a big law which covers a whole host of things in the realm of healthcare in the U.S. Although the phase-in of its many parts are almost complete, the changes are still rippling across the country. Why a topic for this blog? I recently worked at a healthcare company and got to learn a whole lot of about it and its impact on privacy, security and IT.

Why Should I Care?

If you are alive in the U.S. HIPAA affects you. Most people have very little idea of what it is and what those affects (both public and behind the scenes) are, so I thought I would share what I learned.

HIPAA Overview

HIPAA has a number of sections, divided into two Titles (I) Health Care Access, Portability, and Renewability and (II) Preventing Health Care Fraud and Abuse; Administrative Simplification; Medical Liability Reform. Title II is further broken up into a number of rules (1) Privacy (2) Transactions (3) Security (4) NPI and (5) Enforcement.

Generally (I) and (II,1) are what the general public sees. Everywhere you go you need to give permission for people to look at and access your healthcare information; and finally you can take your healthcare coverage with you when you switch jobs (provided you follow the rules) and not be denied coverage. At my local pharmacy for example you can't stand in line direct behind someone picking up a prescription (so you can't see what they are getting).

Privacy

The key term for this type of private healthcare information is called "PHI", which means Protected Healthcare Information, and is relatively well defined. This type of data is anything relating to your health care and any information which might tie you to your healthcare (even such details as phone numbers or your geographical information, and certainly stuff like your SS number). Access to this type of information is restricted to those (1) you give explicit permission to (2) or those who have implicit access, name entities like Insurance companies and clearinghouses (more on those later). Even with either permission, there are many rules on where and how and how much access is enough and what must be done to protect it.

If it sounds onerous, you are right, it's supposed to be. It's your personal information of a nature you really don't want anyone to casually have access it. Before HIPAA, all of your medical and personal information could be accessed by anyone anywhere in any fashion without any real consequence. The wild, wild west of the 1850's had more law that this.

Electronic Information

The law however goes way beyond simple portability and privacy: the other major part of this was to standardize how medical information was transmitted and shared electronically. Before HIPAA everyone was free to describe health care information in any way they felt like; filing a claim with an insurance company was an exercise in futility as every one had different forms, different codes and even then you were lucky it didn't change without any notice. Electronic (EDI) claims were basically a joke unless the doctor or hospital limited coverage to very few plans.

HIPAA provides (1) a standardized set of transactions for different uses (2) a defined (and continuously updated) set of codes to define virtually anything in a consistent way (like a diagnosis or test or explanation). The upshot of all this is that a healthcare Provider can now file and interact with a Payer either directly or more generally, via a Clearing House) electronically and mostly be assured of success in the transaction.

One further addition that only recently became required (for the most part) is NPI, the National Provider Identifier, which uniquely identifies all entities using electronic communications. Think of it as an IP address for healthcare. Note that the NPI defines the entity, there may still be additional identifiers such as a DEA number for a drug prescriber.

Security

You might think, I don't care really, I just go to the doctor and get well, and get irritated by all those blasted forms I have to fill out giving permission. That's where the other parts of HIPAA affect you, even though you don't see them. It's called the Security rule (and its brother, the Enforcement rule).

An electronic healthcare claim (I was working on the validation engine at a clearinghouse) is a wealth of personal information, highly suitable for (1) identify theft (2) blackmail (3) job loss (4) fraud and (5) mischief. Being a standardized coded chunk of information (generally in the X12 EDI format) in plain text it can be ripe for criminal usage. Protecting it during processing, storage and transmission is crucial otherwise there is nothing keeping it from becoming your worst nightmare. The Security rule covers a number of safeguards which must be followed to (hopefully) ensure that these nuggets of gold don't become someone's idea of a profit center. The rule covers (1) Administrative (2) Physical and (3) Technical safeguards, basically having procedures to protect the data from various forms of theft or attack.

Remember there are both explicit and implicit access to this data. Generally you give explicit permission to healthcare Providers (like your doctor or dentist), but Covered Entities (as they are official known under HIPAA) such as clearinghouses and insurance companies are granted implicit permission. Imagine if everyone who touched a healthcare claim had to obtain a consent form; the whole electronic system would collapse. So the law allows these folks to handle your PHI with the big requirement that they must follow all of the Security rule or face the Enforcement rule.

Insurance companies and HMOs are people everyone knows (and generally dislike as well). Clearing houses are not something most people even know about. Since HIPAA made electronic claims and other transactions available, most of this traffic is handled by thousands of these entities (from huge to one person places) who act as the intermediaries between the Providers and the Payers. Think of them as routers. Often a claim will move from a provider through multiple clearing houses before finally winding up at a Payer; then responses (such as rejections or notices of payment) flow the opposite way. The whole system is like a HipaaNet!

Enforcement

So what keeps your information safe? It's the Enforcement rule and is both really scary and really wimpy at the same time.

Generally each HIPAA violation can get an individual violating the basic rules a $100 fine up to $25,000 which doesn't sound all that bad. However the real teeth is knowingly violating the more serious rules which are considered a criminal felony, which can result in a year in jail and $50,000 fines for each violation. The documents I have read discussing how this applies seems to show that the government, if it cannot determine a precise number of violations, will use statistical calculations to come up with a number (e.g. you knowingly allowed someone to steal an unknown amount PHI from claims in your database with no audit trail, you processed 1M claims last year, we'll pick some percentage and thats the violation). Violations in a Covered Entity are supposed to be the higher penalties since they have the highest need to protect the information, and the penalties would fall to the corporate officers if no individuals can be found to blame.

For any healthcare provider, payer or clearinghouse, the penalties are pretty scary, and in the worst (and not unlikely) case a business-ender if convicted. So far it seems that the Provider community, which is generally liable for the lesser fines, has gone out of their way to be careful. So far very few prosecutions have actually happened, and that's the sad part, as there are no actual requirements for specific audits, and the government office responsible for enforcing HIPAA (CMS, the horribly named Centers For Medicare and Medicaid Services) will only investigate if a formal complaint is received. Violations of the privacy portion are handled by yet another agency (Office for Civil Rights).

Thus your HIPAA healthcare privacy and the security is tightly controlled yet loosely enforced. Are you at risk? Probably, at least until some major violators are prosecuted and publicly whipped. Like so many things in security (and even personal things like backing up your hard drive) nothing much happens until something really bad happens. Ask TJX about security and bad publicity.

HIPAA is a massive but generally well written law which was badly needed; it has made healthcare privacy, portability and transactability possible and public. How effective it is remains to be seen.

In a following post, I want to cover what a health care claim technically looks like.

My Tags:

  • Darrell: Aug 06, 2008 16:11

    The purpose of the HIPAA mandate is to promote an interoperable electronic system that includes all the nation’s healthcare providers, including dentists. Here is something very few know: EHRs were going nowhere in dentistry, even before digital records became so dangerous to maintain.

    “For any healthcare provider, payer or clearinghouse, the [HIPAA] penalties are pretty scary, and in the worst (and not unlikely) case a business-ender if convicted.”

    You only know part of it. If a computer is stolen from a dentist’s office, and the breach is acknowledged and reported according to the law, it will cost around $200 per patient to contact and protect the patients (Ponemon Institute).

    This means that if a dentist has 2500 patients on the computer, a half million dollars will be spent even before the penalties can be assessed. The practice will be bankrupt even before word gets around that the neighborhood dentist fumbled all of his or her patients’ identities. HHS intends to post such breaches on the Internet using the NPI number as reference. And you thought the NPI number was just for identification.

    It is easy to assume that breaches never happen in doctors’ offices because they are rarely reported. How good is that? Darrell Pruitt DDS

  • Add Comment

Rendering PHP Template To String
Aug 06, 2008 07:53 perm link Readers: 192

In my current project at home I had need to build a plain text report (for an email) which will be temporarily saved in a database in its final form.

Naturally I wanted to use PHP5 to generate the report layout since it is after all a templating system. It turns out to be quite easy to do.

// define data here, referenced in the report
if(ob_start())
{
  include_once 'inc/registrationreport.php';
  $str=ob_get_contents();
  ob_end_clean();
}

// in in the report, lines like:

Name:         <?= $reg_firstname ?> <?= $reg_lastname ?>

Birthdate:    <?= $reg_birthdate ?>

Easy as pie. The only odd thing was making sure I wound up with the right linebreaks I had to add blank lines after the data references. You also have to make sure that the ob_end_clean() is properly balanced with the ob_start() or interesting things begin to happen.

Yes, I know that the short form is deprecated.

My Tags:

How Does Your Organization Handle Production Access?
Aug 04, 2008 11:53 perm link Readers: 345

How Does Your Organization Handle Production Access?

In the past 10 years or so I have worked at, or as projects in, many different types of organizations and there are as many different ways to handle production security as you can imagine. Every kind of process from "we don't need no stinking production security" to "we won't even acknowledge we have production systems".

In most companies hardware and software systems are broken up into several categories, generally some kind of location development environment, perhaps a global development environment for initial testing, a higher level functional test area, a QA area and finally the operational production systems. The latter is where the company stores and handles whatever business data that supports or even is its business. For some entities this data is not central to the business, and its loss or theft (if there is even anything to steal) has no real impact on the bottom line. In more cases this data is vital to the continuing health and welfare of the business and care must be taken to avoid loss or alteration. In other companies this data contains private information of others, such as personal, financial or medical information, for which the loss of alteration could result in bad press, civil or even criminal penalties.

Yet I haven't found a consistent view on security at all. Some places have had tight security yet the data and systems were totally innocuous; other places adopted a "laissez-faire" view that allowed full access to anything anyone wanted despite a vast array of public trust information. Sometimes the level or security was based on the anality of the operational leadership rather than the nature of the systems and data.

It never fails to amuse me when I read about a big data loss, may it be unencrypted backup tapes or laptops that are lost, or hacked in systems that provide a wealth of credit card numbers (TJX Post). I always wonder how people got into positions of security leadership without being at least prudent, much less paranoid, about how information and systems at their organization are protected.

The types of security I have witnessed include these types:

  • Total Lockdown - only a few operation people have access to all production systems period. Even production logs must be requested and are scrubbed before viewing.
  • Mostly Lockdown - only a few operation people have access to all production systems but specific access is granted to other individuals who need it based on limited username/passwords with full audit trails
  • Mostly Lockdown 2 - like the previous but allow more full access but from limited IPs, using electronic keys
  • Careful Lockdown - only a few operation people have access to all production systems but other users have specific access rights to areas which have been set up for them (such as log directories)
  • Come On In The Waters Fine - production is protected by passwords known to everyone. No audit trails are possible since it's a shared "secret" other than possible recording an IP address.

Financial entities such as banks and investment companies, healthcare companies and the like you would think always operated in a lockdown mentality but in my experience it hasn't been universal. In one place I saw total lockdown, but the reason had more to do with hiding the failures of the operations team than any real desire for tight security. I have often heard the excuse for a "Waters Fine" system that people need quick access to solve production problems; also since the outer security walls of the company are so solid that no possible issue exists with external attackers hitting internal systems. [I'll pause while you either laugh or gag].

When I was working on a big project at a large company (customer) around 1999, me and my project partner initially had access to both our test and the production systems (generally during most the 12 month development and beta roll out) which ran in a small data center on the same network. This system had both an external web application for the external customers and an internal one for the team that processed the data. The database was highly complex with both full audit trails and a workflow system. We were given access to the network with username/passwords/ip filtering/electronic key generator but otherwise allowed to do the work. Near the end of the project the company hired EDS to take over operations and all of our access was completely revoked, making it impossible to actual continue the project in any reasonable way. We were limited to calling an operations person who would type into a command line what we needed done, and have them read the result to us over the phone. Yet the two of us were the only people would were able to do anything with the code or database so progress came to a complete halt. So we did what enterprisey programmers always do; we put a backdoor into our application (protected by two levels of passwords and IP filtering) with full access to both databases. Needless to say it worked because EDS didn't care about the application or the project at all, and the folks we were building it for only cared about getting the system finished and working. Eventually the entire system was automated to the point that the backdoor was no longer necessary (and more sane access put into place anyway).

The point is that there is always a balance between the need for some access to production systems with the need to protect them.

So what can go wrong? Unfettered access to systems that should be secure can lead to:

  • Errors
  • Mischief
  • Theft
  • Blackmail

I'm sure you can think of more. Yet every day you read of people who failed at the basics of how to properly protect their production systems or data.

Statistics show that most operational security problems come from inside your own staff, yet defending against the proverbial "hacker" from outside seems to pervade most corporate security discussions.

I can see the most reasonable path has to be tough protection combined with limited, fully auditable access. Sometimes it's hard to imagine how to do this since systems, software, databases and platforms are not consistent in how they provide access, authorization and authentication, much less provide easy single-signon interoperability. These types of challenges often lead to diminished security since it's considered "too hard" to overcome and thus nothing is ever done. Sometimes the cost of doing it right seems too high compared to doing the easy way (or not doing anything at all) and hoping for the best. Hoping is not a great security system. It's like leaving your house unlocked and hoping no one will open the door and take your stuff.

I'd love to hear stories from other folks on what people are doing in their companies.

My Tags:

  • Project management faqs: Aug 04, 2008 18:38

    Yes when your organization grows it would not be possible to give production server access to even top members. It should be only accessible to System administrator group

  • Michael Chermside: Aug 05, 2008 05:12

    I work for a bank... not just a bank, but a bank which is obsessed with security. (Anyone curious can tell which one from a quick web search.) And while there are a few things I would change if I were in charge (aren't there always?) for the most part I would say that we do a pretty good job.

    First of all, production machines are a separate domain. Several years ago there was a time when some developers had at least read access to these machines, but that has been removed quite some time ago. Instead, there is a separate group, the "Application Support" team, that responsible for (1) deploying code (after it has been thoroughly tested and signed off), (2) daily monitoring of systems and (3) troubleshooting problems as "Tier 2 support". (Tier 1 is the help-desk that directly fields user issues.)

    Of course, the truth is that some issues are just too difficult to be resolved by "Tier 2 support". After all, they're smart people and they've gotten a description of the system design and some instructions, but they aren't programmers and are simply not in a position resolve all issues. So whenever they need to, they contact "Tier 3 support" -- that's the developers. We (I'm one of the developers) try to resolve things by discussing it a little, recreating the problem in QA or development, or by reviewing a log (which Application Support will send us). But when that approach isn't enough, the one or two individuals working on the issue from the development team ("Tier 3 support") are added to the necessary production access groups. We're expected to resolve the issue as quickly as possible, then give a full report afterward (and the access is removed).

    This seems to strike a reasonable balance between security (only a limited group of people have production access) and the ability to resolve problems (I, too, have seen places where nothing could get fixed because the people able to fix it were not permitted to).

    Your point about building a back-door into the application is a good one: unfortunately, it is extremely difficult to protect against this kind of thing. We have policies against it (obviously!), but if done right it is the sort of thing that QA and application support would never be able to identify. We have made some attempt to use commercial code analysis tools to identify such things (but I am skeptical: I feel confident that I could evade that if I were trying, and so I'm sure a malicious insider could as well). Our main lines of defense against this are (1) careful hiring including background checks and (2) code reviews.

    -- Michael Chermside

  • Add Comment

Professor Dewar Is A Very Smart Smart Smart ... Moron
Jul 29, 2008 15:38 perm link Readers: 1767

The 'Anti-Java' Professor and the Jobless Programmers

Reddit comments

In this rather inflammatory article, Professor Robert Dewar seems to belittle almost everything but his own inflated ego and the language he makes his living on.

I can only imagine how sad it must be for someone to be so out of date. Like an aging rocker who can't escape his hair-metal days, he clings to the idea that what was important in the 80's is still no less important today. Concepts which predate most modern applications are still the only right way to teach student how to become useful programmers; as if we should still teach hunting and gathering just in case it becomes necessary for survival.

I started in 1981 as a software engineer working for a defense contractor right out of graduate school. No, not CS, but Chemistry. I've only had 0.5 college hours of computer science (and only that to gain precious computer access) yet I've forged a long career at the leading (and sometimes bleeding) edge of technology since. Unlike the dear Prof I've actually had to change with the times and grasp something new every day of my career, moving swiftly from Basic to assembly to Pascal to C to C+ (sort of) to C++ to Objective-C to Java to PHP and moving forward to Ruby, Groovy, Scala, Erlang or whatever is next. This industry has changed from mainframes and superminis to PC's (and Macs), from terminals to client-server to web applications to programming on a damned phone (oh AT&T Where IS My IPHONE). The thing is, programming is all about change, working with change, dealing with change, being changed.

The only thing that never changes is change itself. And Professor Dewar apparently.

Java is not a bad language, neither is Python or Lisp or Scheme or Erlang or Ruby or PHP or dot dot dot. Maybe BrainF*ck is a bad language, but then it's supposed to be. Programming is all about writing programs that people use (or sometimes machines). It's the only way to learn how to program. You can't teach people how to program, you can only help them along but Computer Science (what a stupid name) isn't about teaching people to program; it's all about teaching them to teach computer science to other people who think they are learning programming.

I've never met a programmer with a computer science degree unless they already were programmers before they ever started. Graduates become programmers like everyone else: when they starting writing real programs for real people. In real programming languages. Like Java or Lisp or PHP or (name your poison). So asking a Computer Science Professor about programming languages and programming is like asking a hot dog vendor to explain hitting a 96MPH baseball 514 feet.

Ada was designed by a committee and started appearing just as I left GD in late 1984 (to program in C, on a Mac no less). Its direct predecessor, Jovial, was what I worked with (mostly on compiler runtimes and tools), and was a fairly nice language for its day. Ada appeared to be a conglomeration of every feature imaginable and seemed perfect for defense department projects (over time and over budget here we come). Imagine if the web had started out in Ada. The first browser would have been out in 2014.

Dissing Java is popular and I can forgive that. Denigrating the web as insignificant is unforgivable today. Somehow thinking of Google or yellowpages.com as some meaningless web applications that any clever child could write and thus is ripe for exploitation by some other clever child is sort of silly.

Sure, I might not want to write the Space Shuttle code in PHP, but look at the good all those expensive $7000 lines of code did: they still lost two of the shuttles to system failures. Another thing no Computer Science Professor would ever think of, that programming is only part of the system. There is a whole lot more to the world that a program lives in then whatever stupid programming language the stupid programmers (who are not Computer Scientists of course) came up with. Like UI design, testing, hardware, scalability, maintainability and a host of other unScientific ilities. Even how to deal with stupid management and development methodologies also favored by our Computer Science elite and still somehow get the project done.

I think that Professor Dewer might consider exiting his flask and talking with people in the real world occasionally, unlike his customers who live in DOD land. Maybe he might even consider contributing some code to an open source environment to show his deep insight and mighty programming ability. Even BrainF*ck could use a dose of Science.

Yes every language sucks but a good programmer with an open mind, an open Google, and a wealth of cross language and cross project practice, can write anything in any language.

Even Java. Or BrainF*ck. Or (lordy no) Ada.

My Tags:

  • Eric TF Bat: Jul 29, 2008 17:32

    Oh good. A rant about a rant. I should rant about it but, you know, at this rate the internet will fill up and I won't be able to get to my LOLcats.

  • Rick: Jul 29, 2008 20:21

    Cheers!

    Programming is a beautiful skill. It marries artful limited creation with critical static logic. The emergence of new languages is accelerating. We will probably look back and see why Ruby or Python or whichever language came to the forefront and it won't be because of its virtues. It will be accessibility, resourcefulness and availability of reference materials and tutorials.

    The first language I learned was BASIC. If you were on an apple II it was staring you in the face, such goes the internet. Elitism sells cars and useless rocks on metal bands. Accessibility spreads information and ideas. Limitations breed creativity.

  • : Jul 29, 2008 20:31

    You made a good counter argument in my opinion, however there is some truth in what the Professor says. And that is to know about hardware a bit. Us programmers ought to know the hardware aspect a little bit and usually developers, programming in Java are unaware of the hardware.

    To cut a long story short, Prof. would develop really good programs in ADA for the DOD and you would develop really good Web Applications in Java, Ruby, PHP....... Things turn sour when the ADA programmer says that the Web application programmer is no good.

  • y: Jul 29, 2008 20:35

    If you want some code from Pr. Dewar, download the gnat compiler; I believe he wrote a bunch(most?) of it along with his article co-author Pr. Shonberg.

  • codist: Jul 29, 2008 20:51

    The Gnat compiler only worked on Win95/NT and has been dead since about 2001.

  • Bad Karma: Jul 29, 2008 20:58

    ...moving swiftly from Basic to assembly to Pascal to C to C+ (sort of) to C++ to Objective-C to Java to PHP

    PHP you say. Yeah, no doubt about it, you've not only ridden the "bleeding edge of technology", you've descended to guiac positive status.

    Oh...and Dude? The space shuttle(s) came down because of some o-ring and foam debris problems. The technologists and the managers, with their love of cutting corners and aversion to Doing Things Right (you know, like "real world programmers"), were the ones who brought down those ships....not The Scientists.

  • codist: Jul 29, 2008 21:07

    Yes I know why the shuttles came down, I making the analogy that there is more to development than being perfect programmers in that you have to consider the entire system and how everything works together. Making a huge investment in perfect coding and then overriding the engineers understanding of the system by management fiat is inconsistent and something you need to understand in the real world. It's not taught in schools.

    OK so PHP is not state of the art for everyone; for me it's something new to get the job done at home. I changed, that's the only point.

  • Steve: Jul 29, 2008 21:44

    "Yes every language sucks but a good programmer with an open mind, an open Google, and a wealth of cross language and cross project practice, can write anything in any language."

    The way I see it is this: Let's take two equally good newbie programmers and subject them to learning different languages. The first is Scheme, the second is PHP.

    While PHP can technically do anything Scheme can do because it is Turing complete, do you really think the programmer learning PHP will even attempt to reproduce the higher-level features in Scheme, if he isn't exposed to them in the first place?

    That's the crux of the issue. Computer Science isn't about learning how to do UI design, unit-testing, Agile methods and other industry skills. Those are software engineering skills, which isn't to say they aren't useful, they are very much useful, but they are hardly substitutions for solving problems mathematically (think discrete math) using lateral thinking skills to simplify complex problems.

    "So asking a Computer Science Professor about programming languages and programming is like asking a hot dog vendor to explain hitting a 96MPH baseball 514 feet."

    In this particular case, you couldn't be more wrong. Professor Dewar has authored and coauthored a handful of languages back in the days when writing programming languages was a lot harder than writing them today. Not only that, but he's also been active contributing to the development of ADA. In other words, he seems pretty qualified to talk about programming languages. They may not be the "best" programming languages out there, but he's certainly put in his time.

    How about you?

    I find it funny how people love to put down professors as not being impractical people who are disconnected from the world/industry. I hate to break it to you, but it's been academics who have practically invented every significant concept you're using today. I'm serious. You give me a significant concept or technology, and I bet you can trace back to an academic. (GUI's, the MVC pattern, object-oriented programming, distributed systems, the relation database, regular expressions, virtual machines, just about every useful feature you love in your favorite programming language, etc. etc. etc.)

  • Michael: Jul 29, 2008 22:23

    > Like an aging rocker who can't escape his hair-metal days, ...

    Dude, that hurt. Seriously.

  • jermu: Jul 29, 2008 23:37

    your article was tl;dr, but do I understand right that it is ok to you that the programmers coming from the schools nowadays have only peripheral skills to software engineering?

  • Larry Lard: Jul 30, 2008 02:44

    > I think that Professor Dewer might consider exiting his flask

    That zing would have zinged so much better if you hadn't spelled his name wrong while zinging it.

  • Someguy: Jul 30, 2008 02:45

    I think his point was that the skills being taught are too easily outsourced, so teaching them is setting students up for failure and disappointment.

    The software market has to distinguish itself from other countries if it hopes to be relevant: why pay some punk kid 20k to show up late and not meet deadlines when you can outsource?

    I think universities have to higher their standards (and the cost of tuition) not because Java or the Web is irrelevant but because of the competition that exists!

  • codist: Jul 30, 2008 03:21

    I didn't put down all computer science professors, only those who refuse to learn that the industry changes. Sure, Prof Dewar in his day may have been a champion programmer, but from his comments it's clear he hasn't learned much new. I have talked with many CS majors over the years, worked with them, even hired them. Virtually all of them lamented how little useful information they've learned that actually helped them in their careers as programmers and how out of touch many of their teachers were. Does that mean those teachers weren't smart and whatever they researched wasn't important? No, I'm simply echoing what most of them told me they learned getting a BS degree in CS.

    I'm saying that simply teaching CS fundamentals plus a pet language and a smattering of weeks in different languages is not going to create great programmers; you don't become a programmer until you write real programs in the real world. I'm also not saying that having a CS degree is a handicap either, but for Prof Dewar to say that CS programs in this country are substandard when they teach Java and web programming is being out of touch and that these programmers are only going to deliver pizzas unless they graduated from MIT is rather silly. The only thing any college professor should teach their students is how to learn, and make sure they are fully prepared to learn every day for the rest of their lives. Graduating with a CS degree is no assurance you can be great programmers no matter how fundamental your learning was.

    Most of the folks I've worked with since the early days of my career either learned on the job continuously as the industry changed or stood on what they first learned and became obsolete, moving into non-programming technical jobs.

    What really constitutes fundamental knowledge in CS? What do you really need to learn to be a great programmer in whatever job you find yourself in? I've know teenagers and college-age programmers with no formal college education who were brilliant. The industry is full of stories of amazing people with no CS degree who changed the face of programming. It's also full of brilliant PhD's in CS who invented a lot of our basic technologies. My point is it's the makeup of the person that determines wether they become a great programmer, not how they got that way. For every Sergey Brin there is a Steve Wozniak. Programming is one of the only technical disciplines where you can become an expert programmer even with no formal training.

    If I were teaching CS in a university, I'd make sure that the students wrote a lot of larger programs in teams in at least there major languages, one procedural (C maybe), one OO (Java or C++) one dynamic (Ruby or Python or PHP) and one functional (Scheme or Erlang etc.). Sure you can throw in fundamentals but the major emphasis would be working in teams on real world problems and in as much of a real world atmosphere as possible (project management, specifications, agile/iterative methodologies). I'd want them to do web programming (HTML, CSS, Javascript), desktop application development, embedded systems and client-server. Always writing code in every class that bears some resemblance to the "real world".

    Even with all that, working as a programmer in the real world will still be a new experience where new things are thrown at them everyday. That's the real challenge and it's totally up to the makeup of the programmer how they deal with that.

    >Dewer -> Dewar oops, never write blog posts after 3 hours of dental surgery!

  • codist: Jul 30, 2008 03:28

    Now here's an academic I agree with

  • Anonymous: Jul 30, 2008 09:49

    You seem to have missed the professor's point. It is important to have both theoretical knowledge and experience, and in actual problem solving, not attaching lego blocks. Best wishes.

  • Codedog: Jul 30, 2008 11:19

    Dude, first off, ad hominem much? You seem to have, to put it delicately, "issues" with higher education. Even your last comment, "Now here's an academic I agree with", sounds vaguely racist, as though you're a Southern sheriff who is referring to "one a dem akademmiks who rightly knows their place!" Ugh. Please, do get over it.

    Secondly, you "might" (might?!) not want to write Space Shuttle code in PHP? Please, never write Space Shuttle code. Thank you.

    Finally, you write this: "So asking a Computer Science Professor about programming languages and programming is like asking a hot dog vendor to explain hitting a 96MPH baseball 514 feet."

    This is boldly stupid. Roy Fielding has taught classes at UCI. He still advises as a professor there. Is he like your analogous hot dog vendor? Or is it that the people he learned from and is still working with are just a bunch of morons benefiting from him? Oh, please, do explain. So many compsci profs move in and out of academia and the private sector, through consulting, social networking, and projects for hire, that it's difficult to say at times who is solely in the realm of the academic sector. Even long-standing professors do funded and important research. You don't know what you're talking about, and you sound adolescent.

    Please, more code, less hate.

  • Clayton Nash: Jul 30, 2008 13:34

    CS is not the place to learn programming. Leave that to the engineers and business computing types. My CS degree we hit about 14 languages across all the major disciplines but it was pretty much a small part of the real degree - the real work was in understanding computing in the abstract, complexity, computability, operating systems, data structures, FSMs, lambda calculus, database theory etc. I've looked back on the same degree now taught and there's some Java thrown in there as well, but you never learnt to program you learnt to understand. Programming came simply after that.

    Secondly, you've utterly missed the point of what the professor was saying - not that you shouldn't teach Java, but that teaching only Java delivered students who had only marginally useful skills and no ability to think. That's not a degree - that's a pretty useful technical qualification but not a degree.

    In my last job I hired programmers, and directed their activities - They were all much better Java programmers than me, and had understandings of ORMs that I couldn't match. They still ended up building databases without indexes (they'd never heard of them). Their lovely XML config files were implemented in such a way that we had to restart production services to change rates (but boy were they fast to read the first time compared to my version which used expiring cached values read from a database). They failed to consider the notion that packets might arrive out of order on a network. They adapted business processes to the libraries they found, not the other way around. In short, they did everything this professor is complaining about.

  • RickJWagner: Jul 30, 2008 18:35

    I agree, the good prof. seems to no longer be learning.

    For *some* applications, super-tight levels of precision might be necessary, but for *many, many more* applications some degree of slop is happily traded for *greatly* improved time to market.

    The refusal to recognize the benefits of tools provided by others is the mark of a troubled mind. I hope ol' prof. makes a nice recovery and publishes some good open source stuff-- that would be a magnificent redemption!

  • MrPotatoHead: Jul 31, 2008 14:38

    Someguy:

    "I think universities have to higher their standards (and the cost of tuition)..."

    If they "highered" their standards then you wouldn't be able to go there.

  • Add Comment

Name:


Optional URL:


Comment:


Save Cancel

Copyright © 2007 By Andrew Wulf