‘Programming’ Category Archives

12
Aug

Book Review : Why new systems fail

by Taliesyn in Business, Education, Engineering, Programming

While I am not involved in the specific field, I found the book “Why New Systems Fail: Theory and Practice Collide” educational.

This brief text is written in a casual style that makes it easy to read, while at the same time seeming less “professional” and less likely to be taken seriously by senior executives in corporations that might be about to make the mistakes the author, Phil Simon, clearly identifies.  But he does identify a lot of completely valid reasons why new enterprise software implementations are not the successes that are hoped for when they are begun.

However, based on my experience in the engineering and construction business, where we execute large, complex projects, many of the lessons are transferable (and in fact seem strangely familiar).  Failure to plan effectively, failure to consider that things will not go perfectly, failure to schedule with some slack or float to allow for recovery should things go off the rails during one stage or another.

Additional flags are about not selecting consultants or providers based solely on the apparently up-front cost – the idea of you get what you pay for appears to be as true in enterprise software as it is in heavy construction.

Having also spent some of my career trying to develop, implement and support data management software for engineering (not exactly enterprise class) and discovering that we had all the same problems – significant underestimation of the resources it would take to accomplish the task, failure to ask enough questions of the commercial-off-the-shelf software vendor about what the product could and couldn’t actually do (or how much customization it might take), and failure to sufficiently understand the problem we were trying to solve – which resulted in what Mr. Simon would call either a “Big Failure” or and “Unmitigated Disaster”.

Anywho – if you are interested in enterprise (or other) software development and implementation, or any manner of project execution – this is a good read.

18
Feb

Why can’t the car adjust it’s own clock via GPS?

by Taliesyn in Engineering, Programming

My wife has a nice new car that came with a built in GPS navigation system.  While we find this to be a useful piece of technology, and the fact it has voice activation and all of that is rather amazing.

But I’ve identified something missing that should have been quite simple for the programmers to implement:  Getting an updated time from the GPS system.

The GPS system keeps very good time because they have too in order to work.  The GPS satellites know the UTC time to within microseconds and report it to any GPS device.  As a side note, the GPS satellite system also has to keep track of the relativistic effects of their speed and location compared to the surface of the Earth.

Now, if the GPS device in the car is getting the UTC time from the GPS system with each update, how come the car isn’t programmed to update the CLOCK in the car via NTP?  How come if my clock runs a little fast or slow it required human intervention to fix it?   Additionally, the car knows where I am!  It should be trivial to add a time zone overlay to the map in the navigation system so the clock can also automatically adjust for daylight savings time and when I drive across a time zone boundary.

Just a little request from the car makers for my next vehicle.

6
Mar

If I were a young ambitious computer scientist

by Taliesyn in Programming

I have an interest in computer science and programming, although my career path was only briefly related to this field. However, I frequent many computer programming sites and blogs like The Daily WTF, Coding Horror and programming.reddit.com. I have programming experience, albeit limited using languages like BASIC, Pascal, VB, Python and Common Lisp. I’m just starting to learn some minimum PHP to handle wordpress and other concepts I’m working on.

If I were a young programmer keen on learning something valuable and developing an interesting tool, I would probably learn things in the following order:

  • Learn C because of it’s use of pointers and manual memory management. If you are going to be an uber-programmer you need to know these things. Also browse the source code of your C compiler because that will help you in language design.
  • Learn Assembler, because if you need to optimize something to the last degree, you need assembler to make things fast. It will also help with a later step.
  • Learn Scheme and Common Lisp. This is because as many have stated, once you “get” Lisp, it will change your outlook on programming forever. Especially data as code/code as data, macros, closures and the level of abstraction Lisp allows. Also learn the CLOS and MOP because it is perhaps the most flexible and powerful OOP example around.
  • Learn Erlang. Figure out how Erlang does concurrent execution using lightweight processes and minimizing the challenges of using shared memory, mutexes, locks, etc…
  • Finally, build a better mousetrap. Use your knowledge of Assembler and C to build the basic framework and then build up a language that has all of the expressive power of Lisp with the concurrency of Erlang. Concurrency is the future of programming but many of the current tools commonly used for concurrent programming (C, C++, Java, Python) don’t make it easy.

Now I expect thousands will disagree but that’s the way I see it.