Save info   Get password
Home Submit your blog Edit Account Rules RSS-Archive Contact


Pedantically Speaking
2007-12-06 15:39:00
Spending your days programming a computer -- if you do it long enough -- will start to have a noticeable effect on your personality. Not that it is a big surprise, one's profession has always -- no matter how complex or simple -- gradually morphed their personality. If you think that all of the accountants you've met are basically the same, your not that far off base.Programming is a discipline where we bury ourselves in the tiniest of details. Perfection is necessary, at least to the degree that your work won't run on the computer if it is too sloppy, and it is exceptionally difficult to manage if it is even a bit sloppy. This drives in us, the need to be pedantic. We get so caught up in the littlest of things that we have trouble seeing the whole.Most often this is a negative, but for this post I wanted to let it loose into its full glory. It is my hope that from the tiniest of things, we may be able to draw the greatest of conclusions.Originally, the thoughts for this blog entry
Read more: Speaking

From Our Inner Depths
2007-11-28 22:13:00
The biggest problem with the World Wide Web is that it is just too hard to find anything "unique" anymore. In an instant, you can gather together at least fifty hits for just about anything. Are there any two word phrases left that don't at least get one hit? It is hard to imagine.Despite the existence of many other published uses, I'm still going to proposed a new definition for a pair of old words. Sometimes you can't let prior history hold you back, particularly when the terminology is so appropriate.If you've been using software for a while, you've probably been there. It is version X of the program; some function you relied upon, while still in the system no longer works correctly. Sometimes it a bug, sometimes it is a legacy problem, but often it is just because the new programmers maintaining the code were clueless. They had no idea how the system is really used in the real world, so they removed or broke something vital. They get so busy adding new crappy features and igno


Mind the Gap
2007-11-21 15:30:00
Sometimes to get a clearer perspective on a problem we need to leave its proximity and venture a little deeper into the woods. For this particular post, we need to go way out into the forest before we can come back and make sense of what we are seeing. With a little patience and time, I think you'll find that the rewards from exploring are well worth the stumbling around in the bushes and trees. As an abstraction, pure mathematics is nothing short of absolute perfection. It exists in its own idealistic dimension with no interference from our world in any way. As such, arithmetic for example is always consistent no matter where you are in the universe. It never changes, it is never wrong, it cannot be reduced to anything lower and it cannot be refactored into anything simpler. Quite an accomplishment and a model of perfection. The same is true of many other branches of pure mathematics.As more of the real world gets involved in the equations -- such as physics -- the details become mes


Acts of Madness
2007-11-14 13:27:00
Just a quick posting:What kinda madness would convince people to base Open Source projects on proprietary technology, particularly when the technology belongs to a company best-known for riping off other people's technologies?How much pain do people self-inflict because they fail to learn lessons from history?Apropos for this: "if you lie down with dogs, you get up with fleas".Software is a rigid set of fixed instructions that is constantly changing.
Read more: Madness

Is Open Source hurting Consulting?
2007-11-07 17:12:00
In an earlier blog entry entitled Is Open Source hurting Computer Science? I looked into whether the glut of Open Source code was causing problems for software developers. In the comments, Alastair Revell correctly pointed out that my arguments were biased towards shrink-wrapped software. While that represents a significant chunk of the software market, it is by no means the majority of development. As I was pondering how to respond, I realized that the circumstances for in-house development and consulting were far more complex than for packaged software. It was a dense enough subject to make for a good solid blog entry; a chance that shouldn't be wasted.We can start by noting that there is a trend away from in-house development. That's not a surprise. For decades the software industry has been selling companies on developing their own custom solutions, only to have the majority of the projects fail; this has left many organizations weary when it comes to development. It is expensive
Read more: Consulting

The Art of Encapsulation
2007-11-05 19:28:00
In all software projects we quickly find ourselves awash in an endless sea of annoying little details. Complexity run amok is the leading cause of project drownings; controlling it is vital. If you become swamped, it usually gets worse before you can manage to get it under control. It starts as a downwards spiral; picking up speed as it grows. If it is not explicitly brought under control, it swallows the entire project.The strongest concept we have to control complexity is "encapsulation". The strength behind this idea is the ability to isolate chunks of complexity and essentially make them disappear. Well, to be fair they are not really gone, just buried in a black box somewhere; safely encapsulated away from everything else. In this way we can scale down the problem from being a monstrous wave about to capsize us, into a manageable series of smaller waves that can be easily surmounted.Most of us have been up against our own personal threshold for keeping track of the project details


Repeated Expressions
2007-10-29 22:19:00
I'll apologize in advance. This blog entry gets a little weird, but it is the type of conceptual weirdness that comes directly from the underlying problems. You may have to squint your eyes a bit to get a really fuzzy abstract view of reality in order to understand the basis, but I think that you'll find it is worth the effort. Jumping right in, we start with the notion that users create piles of information that they beat on with their software tools. That's not too hard to handle, but if you dig a bit deeper into the idea of how to "express" the tools themselves things can get interesting.In a very abstract sense, a software design specification for a system defines a bunch of functionality operating on a set of data. Generally it is very imprecise, but it is a way of actually "expressing" a solution in one or more problem domains. The specification, which consists of various design documents with specific syntax represents a "language" capable of defining the capabilities. While
Read more: Expressions

Goto The Next Goto
2007-10-23 16:15:00
Goto statements raised angst because they were seen as the underlying cause of bad programming. Most believed that they accelerated the degree of 'spaghetti'-ness of the code. They allowed programmers to construct obscenely complicated logic that was nearly impossible for a human to follow, and consequently could never be fixed or expanded.Getting rid of goto statements, or at lest discouraging their abuse was a very good idea.Then along came pointers in C. The language was so accommodating, that the programmers were allowed to write all sorts of things that didn't work properly. You'd think we'd learn our lessons about abusing specific aspects of a language, but with each new generation of coders there seems to need to go back towards making a mess again. So we went though a prolonged period of having hanging pointers and strange crashes. It was, some people felt, a step forward to get away from C and start using some of the newer languages. In time there were excellent tools wri


First Principles and Beyond
2007-10-22 17:21:00
My brain uses an efficient algorithm for garbage collection. Sometimes, it can be a little too efficient. I'll be in the middle of using some fact and then "poof" it is gone. "Gee, thanx brain! Now I'll have to ask for that phone number again, ... for the third time". Wetware can be such a pain.Besides the obvious disadvantages of having such quick fact cleanup there are in fact a few bright sides to limited short-term retention. One important side effect is that I am constantly forced to go back to first principles, mostly because I've forgotten everything else. Re-examining the same ground over and over breeds familiarity. You not only come to understand it, but you also come to simplify that understanding; one of the harder things to do well. Because I can remember so little, everything must be packed as tightly as possible or else it is forgotten.That perspective is interesting if I used it to examine something such as software development. We always build up our knowledge overt
Read more: First , Principles

Wasted my Time
2007-10-13 23:08:00
No doubt it is my own foolishness. My expectations are too high. When I blog, I use Yahoo Notepad to write the draft entries. That gives me portability, and access to the draft articles wherever I am. The idea that I can access my writing from literally anywhere in the world is amazing. Something wonderful provided for me by the computer.I was struggling with a particularly hard to write piece, where I was trying to take the reader backwards towards using first principles. Not easy to begin with, and even harder for a novice writer like myself. I was happy with what I had done. I probably would have posted it. After agonizing for a couple of hours, I hit the update button. Something I've done a million times before. This time though, because I had been logged in for so long, Yahoo Notepad decided to ask me to confirm my userid. The session had timed-out. Ok. No worries. This problem has caught me in the past, and in Firefox if I hit the back button, I can get back to the original scre
Read more: Wasted

Lost in Processing
2007-10-03 22:09:00
Sometimes it is like a long treacherous march through an endlessly dark and damp jungle. Whenever you think your nearing the end, another obstacle pops up to block your way. Behind every corner is only more pain, suffering and another corner. Every step of the way leaves you wondering if this time, it isn't really a death march. Will it end; can it go on forever? How many software development efforts feel like an aimless trek through an untamed forest? A haphazard stumble through hostile terrain?The goal when we start development is to try and find the shortest path towards getting it completed. Wondering around aimlessly only increases the stress and makes it more difficult. Staying on course during development comes first from knowing the path, but also from following it. A map through the jungle is obviously a prerequisite. But that will only get you part of the way there, the second half and often more dangerous part of the journey comes from testing. Most developers share the sam
Read more: Processing

Architectural Blueprints
2007-09-28 16:30:00
We are awash in an endless sea of data. Collecting it is easy. Storing it is gradually getting cheaper.All of this information we gather serves us absolutely no purpose if we are unable to structure it and then summarize its meaning. With so much data, if we can't abstract our representation into some geometrically simple form of presentation, then we can never understand what it is that we have collected.Crunching that much information is the job of a massive system. The type of behemoth that probably doesn't exist, but that most of us can image.You can't build systems in that caliber by yourself. We can't even build them with a team. We have the technologies, but not the methodologies for this type of work. Large systems require large groups of developers to come together.Directing a big group of people towards a successful end is not an easy task. When that task involves building something complicated with lots of dependencies, it becomes ever harder. Software, although virtual


Turbulent Waters
2007-09-20 21:46:00
I've been here before. The howling winds keep forcing me backwards. I'm drowning in a raging sea of technological insecurities. I hit a few highs from interesting features, only to be tumbled back by deep lows for bad implementation choices. The ups and downs of a perfect storm born of weak technology.I'm back, again. At that initial point in a new project where I am seeking new technologies. But instead of enjoying my evaluations, I am being tossed about by broken features and annoying flaws. All of the bad ideas over the years come together to produce unstable tools and awkward libraries. And I keep coming across more horrible things. Bad, really deplorable things. Things we learned not to do so long ago, but somehow we forgot. It is a nasty wind lashing at my attempts to find ways to work-around the problems. I long for the peace and quiet of a more stable technology base.Unfortunately, I'm sure I've surpassed my quota for ranting lately. I don't want to be negative anymore. A
Read more: Waters

Paddling Upstream
2007-09-16 15:54:00
Another shiver ripped violently through Coco. She stood on the dock, facing a huge dilemma: whether to get into the canoe or not. Only minutes before, she had been tied to a tree as we drifted silently across the lake, away from her. Our departure provoking loud yelps of displeasure and frantic barking.We had tried to get her into the canoe, but she refused. Possibly she didn't like the noise of the water pounding up against the side of the canoe, or maybe it was just the idea of sitting there and not being allowed to move that made her fear it. Whatever fears it was that were motivating her, she was clearly in turmoil.We returned to the dock to pick her up. She seemed to get the choice: either we head off again with her or without her, it was that simple.Poor Coco, but you have to see it from my perspective. My wife and I have gone to the cottage for a week off. There is a lake close by where we can canoe. We were looking forward to cruising around the lake and it was a beautiful day
Read more: Paddling

Patterns of Misdirection
2007-09-07 11:40:00
A while ago, I was reading a discussion group that I infrequent and I saw a post about design patterns. This particular post -- I remember -- was asking questions about the Visitor pattern. It seems that it is 'unpopular' to use this pattern, the author noted.At the time, I didn't pay much attention to it other than to realize that I wanted to stay far away from that discussion, but I didn't know why.For those few who are unfamiliar with them, design patterns come from a great reference book by the same name that was released in the middle of the 90s. Design Patterns has become so popular that it has its own set of Wikipedia entries. It has become a cult thing now.The book starts with a programming example and then lists out a large number of 'design patterns'. It explains them in detail, describing how each one can be implemented and shows some sample code. These are common 'patterns' that the authors felt occurred frequently while programming in Object Oriented languages.When


Underlying Issues
2007-09-03 21:19:00
Imagine -- if you have a moment -- that you've been hired to reveal the source of some critical problems. A string of dangerous accidents has occurred at a new housing development project, leading to some serious injuries. They want you to get to the bottom of it.To analyze this, you head out immediately to the housing site.There are three phases to the development, one where people are already living, one that is in progress, and another that is just starting up. The accidents have all happened in the first phase, and have ranged in severity.To get a feel for the issues, you visit the second, 'in process' phase and while there you see several disturbing problems.Blueprints exist for the individual house designs, but you find they are strangely incomplete. Sections of them are expressed in great detail, in fact too much detail, crammed together so you can barely read the underlying details. Contrasting that, some sections of the design are missing altogether. The lines in the design
Read more: Issues

4 Easy Ways to Design Better Software
2007-08-31 15:58:00
I'm standing on the other side of what I think is some type of huge wall. A great wall that stretches for I don't know how far and is higher than I can see over or even climb. It is an obstacle through which I cannot pass.We are drawn in by the simplest of things. You for instance, probably started reading this post because of its title "4 Easy Ways to Design Better Software ". Your probably curious as to what simple and easy things you can do to design better systems, and this seems like a great place to find that information quickly. A quick simple solution is what you really want. Having to think about it, particularly thinking hard about it, will not do.And so, software developers, programmers and other techies are drawn to the many fads that make up our daily fare of literary pulp for technical articles. 12 ways to do that; 5 ways for this; the best 20 of these. Most are seeking the easy answers, not understanding.The things you didn't stop to read had big ugly titles, or maybe


Is Open Source hurting Computer Science?
2007-08-29 17:24:00
Reality is bursting with counterintuitive examples. Thinking deeply on this statement shows that it makes perfect sense: we are still fairly limited intellectually, so we are drawn towards the conclusions we like, rather than the ones that are actually correct. Our intuition sometimes leads us astray.You'd think that a whole lot of free stuff would be a good thing, wouldn't you? A movement, such as the Open Source one, of people willing to donate their time and effort should be a noble cause.Not that the core of Open Source is really about free stuff. It is not. It is about having access to the underlying computer source code for all of your software dependencies. At least that was how it all started.Poorly documented proprietary solutions that required Herculean effort to understand were driving people nuts. These early systems were often rushed to market, neglecting documentation as a consequence. There were few resources available for finding information, other than trial and erro
Read more: hurting , Computer , Science

Few Technological Conveniences
2007-08-22 19:30:00
The photocopies are long overdue, even though there are several other more important things on my agenda for the day, I've delayed doing them for so long I have no choice. I rush up to the photocopier and insert my clump of papers. I enter a security code and a few other options causing the machine to spring to life, sucking paper in at one end and spiting it out in several places at the other.But then -- as one always knows will eventually happen with photocopying -- the sounds of activity cease. It all comes clanking to a halt, my work being left undone. The lights blink ... then there is a message on the little console screen: please change the paper in tray 2. Ok. No problem, I think. I can handle this. As I look down, to my horror I see that there is no tray 2. There never was. For some insane reason the machine has gone on a bender half way through my work and is now pining for something that never existed in the first place. Foog! Stupid technology. Fooled again.But hey, I'm a


Driving Design
2007-08-20 18:55:00
It was late. I was sitting in front of the keyboard, excitement flowing through my veins like the swarm of electrons that was feeding my computer's circuit board. The statistics for my site were excellent, I think. Both the visitors and the subscriptions were at an all time high.The fan on the computer was quietly humming in its case, drowning out the stillness of the night. The cursor silently blinking, begging me to get to work.The problem with technology is that you can find out too much information too quickly. Without a proper context you may know something, but do you really understand it?Inspired by the statistics from my site, I figured I needed to do it again. Another post, but this time I'll really push the envelope; perhaps I can lead with a scene that has lots and lots of color. Way back, I should have remembered being disgusted: it was while reading some technical book where the author went on and on about his dog. Apparently I learned little from that experience, as I q
Read more: Driving

In the Still of the Night
2007-08-16 21:49:00
I'm outside walking the dog; the air is cool and calm. It is a nightly ritual -- generally occurring right after watching the news -- giving me time to mull over the days issues. I'm not sure what it is about being alone on a cold dark street, wandering around leashed to 65 pounds of pure panting energy but my mind wonders. The dog pulls, we twist and turn down various streets and gradually my thoughts fall into place. They began taking a shape all their own.Claude Shannon delved into the nature of information and rolled it into a comprehensive theory. He might have started with wondering about how few bits you really needed to represent specific data. Building it up based on simple questions like that. Information Theory is a incredibly important branch of mathematics that has helped shape the foundations of software.In the same way that he examined how little we need, I've often come to contemplate on how little 'code' we need to represent a large sequence of operations. In a se
Read more: Night

Return to the Dreaded M...
2007-08-14 17:16:00
Your being spontaneous. You buy a huge collection of tools. Everything from hammers and saws all the way up to clamps, shovels and drills. You order in tonnes of concrete, wood and drywall. Perhaps you even throw in a bit of re-bar -- those steel rods used to reinforce concrete -- just for extra strength. With all of your energy and a few of your closest friends you hit the dirt and start digging like mad. Dig, dig dig, and then you pour the concrete. Creatively, of course; in various spots around the excavation. A few truck loads at least if not more. A bit here, a bit there. Your not sure yet were it really belongs, but you'll figure that out as you go. You pound in some boards: big and small. Then it is time to whack up the drywall. So you add a wall here, maybe a window or a doorway over there. A bit more concrete; then some more wood; you keep going. It looks like some stairs might help at this point. Towards the end you toss up some "roofing" areas to keep the rain out. Add in a
Read more: Return

With Cat-like Dignity and Grace...
2007-08-11 11:51:00
And I thought I was doing so well. I had found my voice, knew what I wanted to say and was starting to express it an enlightening and hopefully entertaining way. Then why, you ask would I deliberately go out and make my readers cough up a hairball?"Why not", I say. "Sometimes, you just have to talk about the things that people really don't want to talk about". Sometimes they should listen.Building software is challenging, but many of our problems spring from the way we are going about it, not from the technology itself. At the very heart of all development is the dreaded m word. Muggle, you say after having read too much Harry Potter? No, the other one: methodology. It is the 'thing' that sets the steps of the process; laying it out for us.Perhaps it is an infancy thing, but for software the range of methodologies used is unusually vast, ranging from virtually nothing, all of the way up to inches and inches of documented process. The size of the range speaks volumes about where we a
Read more: Grace

As Written
2007-08-07 20:53:00
Verbicide. "That's a rather interesting name for it", I say to no one in particular. While that thought is rolling lazily around in my head, I stretch my feet, lean back and enjoy the summer sun. I appear to be sitting in the middle of some type of insect super-highway. They travel back and forth around the yard, buzzing as they go, constantly passing me. The grass is green, the air is cool in the shade and I am reading a book on effective writing. I burn the sounds of the insects into my memory, but only because I am in the middle of reading a chapter on color in "A Writer's Coach", an excellent book, beautifully written by Jack Hart. In the chapter on humanity the use of a vignette is suggested, which seems as I read it to alert me to the present of the bugs, but for me the pages reveal more appropriate wisdom.If I am writing in Microsoft Word and I ask the grammar checker to highlight passive sentences, I always get an unusually large number of them. Somehow I skipped grammar in s


Two Great Problems
2007-07-31 19:41:00
For me, the two greatest programming problems in Computer Science right now are a) how to bring masses of data together and b) how to easily deploy functionality. Certainly there are lots of people working on parts of these problems, but it does not seem as if people have really put the issues into focus or looked at the bigger picture.Underneath, software is just a tool to manipulate data. We can capture mass amounts of data, but we have trouble using it. There are enough degrees of freedom in our technologies that each group of developers can choose to implement their models differently. As such, it is a higher order problem in general to combine any two sets of data. No amount of code or algorithms, will ever solve this issue. If we can't bind the data together, than we can't make use of it as a single collection. Concepts such as data warehouses try to avoid the issue by making copies of it in other locations in other formats. The amount of effort and administration to make this
Read more: Great , Two Great

The Nature of Simple
2007-12-19 21:05:00
The phone rang; it was so long ago that I hardly remember it. It all comes back in that hazy historic flashback where your never really sure if those were the original facts or just ones that got inserted later.It was another support call. I was the co-op student back then; one of my duties was to handle the very low volume of incoming calls. For some software that might not be hard, but in this case, handling support for a symbolic algebra calculator was anything but easy.This latest call was interesting. A PhD candidate working on an economics degree was asking questions about simplifying complex equations. All in all, they were not hard questions to understand, not like the ones where I end up struggling to answer questions on how to relate some obscure branch of mathematics back into something that could be computed. Both ends of the question, the mathematics and the computer science were often fraught with details and complexities of which I had no idea. An average question would
Read more: Simple

Fixing your Development Environment
2007-12-14 11:57:00
In any work environment some of the circumstances are a little less than perfect. If your job is not completely awful then it still has great potential. You just have to alter it to make it closer to your desires.Some people have the pessimistic view that they are simply peons; it is all beyond their control. They must live with things the way they are. The truth however, is that each one of us has a huge influence over our own working environment, whether or not we really understand it. For this entry I want to examine some of the things that software developers can and should effect in their work places. We get out of our work what we put into it. Positive changes make work easier and make you feel better about the time you spend working.Obviously, if you not the boss you can't just leap out and make huge sweeping changes. That doesn't mean you won't have any effect, it just happens slowly. Patience and perseverance are necessary. Continually making gradual small changes is the ke
Read more: Development , Environment

The Science of Information
2008-03-11 19:35:00
My last couple of blog entries have -- once again -- been procrastinations from finishing off a difficult post. Most often, my difficulties in completing a piece come from uncertainties about the essence of what I am saying. Probably a good thing, as I am often trying to stretch my understanding to a new level.In this case, since what I'm talking about is what I think can be, there is no foundation for me to fall back on. I can't check my memories, or facts, or even look to other people for help. I have a vague outline of what I really want to say, but it's not as entirely as certain as the words I used to describe it.Because of that, I would suggest reading this one lightly, it may prove to be substantial, but then again it may not. Of course, comments are welcome, and any addition though
Read more: Science

In Object-Orientation
2008-03-04 20:35:00
"Familiarity breeds contempt" is a common cliche. It sums up an overall attitude, but for technology I don't think it is that simple.I am certainly aware that the more we work with something, the more we come to really understand its weaknesses. To the same degree, we tend to overlook the most familiar flaws just because we don't want to admit their existence. We tend towards self-imposed blindness, right up to the instant before we replace the old with the new. It was perfect last week; this week it is legacy.Software development has once again come to that state where we are searching for the next great thing. We are at a familiar set of cross-roads, one that will possibly take us to the next level.In the past, as we have evolved, we have also dumped out "the baby with the bath-water", s
Read more: Object

Testing Perspectives
2008-02-26 17:20:00
I just finished listening to a discussion between Jim Coplien and Bob Martin:-martin-tddand there were some really interesting things in that conversation.The most stunning was that Jim Coplien works with systems that are hundreds of millions of lines of code. That is a massive amount of code. Shouldn't a higher paradigm like Object-Oriented save one from such a difficult fate? How long does it take to assemble that much code? Why hasn't millions of it been refactored?The next is that even though Jim was dead-on about his observations of having to start close to the underlying understanding of the actual domain in his example of writing software for a bank -- otherwise you'll spend 40 years reinventing a well-known wheel -- that center of the conversation just died. If you know how you nee
Read more: Testing

Page 1 of 2 « < 1 2 > »
eXTReMe Tracker