|
Interesting: Gravity Probe B
|
|---|
| Mon 12 May 2008, |
|
I have a long running desire to cram physics into my brain. I was getting a D in Highschool physics till my dad said "Pass with an A or don't go to college". I passed with an A+. The acknowledgement I made at that time was that I was a lazy being. As a lazy being, I had to have a motivation to overcome obstacles, tackle challenges and excell. I realized, too, at that time, that if I want to learn something, there is a basic formula: leave no stone unturned. If you run into a term you don't understand, a formulaic expression that makes your ears bleed, stop reading without understanding and go look it up. In this deliberate, thorough way, I have been able to begin to glimpse meager understanding of Einstein and the warping of space-time known as Frame Dragging.
Via digg, I read a great article that explains many of the basic challenges faced by physicists today in understanding gravity. If you feel up to a mental flossing, you can read about Spacetime and Spin and see if you can answer this question for me or yourself. What is the effect of frame dragging on the observed speed of light from a distant star (red shift)? My feable mind wants to think that the light of almost all stars would be blue-shifted as a baseline observation as a result of frame dragging local to earth- the net result of which would be to appear to make the light of all stars bluer, or hotter, than the light emitted at the source. This would be invalidated if the Hubble Space telescope were far enough from earth to not be affected by frame dragging. Lots of variables outside my reach right now - like how far is far enough away to not feel the effect, if frame dragging affects observed light at the point of observation (assuming it's here on earth or any other massive body) wouldn't the reverse be true at the point of transmission? The mind reels, gets a nasty bump from the nearby wall and falls to the floor in a useless heap. |
| Read / Add Comments (0)
|
|
Tools: Source Management
|
|---|
| Wed 7 May 2008, |
|
Last night I spent some time reviewing what I've learned from each of my colleagues over the past two years. Thinking about tools, there are some good ideas I've seen for project management - there's a couple good Notes templates floating around on OpenNTF - but source management is one I'm just starting to look at. What are you using?
I've been working with R6 mostly and R7 on occasion, so I'm not aware of what R8 might offer out of the box or via extension. I had thought to create a local agent to simply make backups of profiled applications on a scheduled interval to a specified storage device or path. Any one aware of any free or cheap and or good tools? I played with file hamster once, but found that it was too eager to rev my file. Just checking a property on a dialog was an update to the file and hence a revision. I also played with an old alpha works tool, vitafile, once upon a time. It was a fair sight better than a scheduled task but I'm not sure it's even available anymore. Also, I recently purchased a Seagate FreeAgent external backup - 160 GB 2.5 inch drive in a nice enclosure with nifty glowy orange bar down the side (USB powered too). But it does pretty much what vitafile did, keeping a backup copy - singular.
The way I'm managing today is setting up reminders in my calendar to make backups. This is kinda handy as I can set the reminders up for however many days I want to be pestered to backup, I can ignore them if I choose, and they end after a defined period. I still have a wee bit of manual process, but that could conceivably be addressed with a batch file or smart icon of my own design. Thoughts? Experiences worth sharing? Obviousness I'm overlooking? |
| Read / Add Comments (3)
|
|
LotusScript: Work Efficiently
|
|---|
| Mon 5 May 2008, |
|
I'm wrapping up a project for a client, which means we're down to unit testing some code, making refinements, squeaking out efficiency where possible. I thought it was a good opportunity to talk in general terms about making automated processes more efficient. One of my biggest kicks with batch processes is taking what someone else did and making it 3 to ten times faster or better. A few smart tweaks are all it can sometimes take.
The debate over which Lotus Script objects or collections are faster or better or more cool is not one I care to take up. I think most of you have figured out what works best for you (view collections are my personal fav) and have things working just right for your liking. More generally, though, the biggest performance improvement can be had not by using cool code to do work, but by not doing work at all. Eh? You read it right. A lot of what agents do, they do because the developer felt it was easier to program that way.
One of my mantras is "refactor often". Every time I touch code, I'm open to redesigning an entire interface if I think it will further push it towards simple implementation and reuse or efficiency. So, going back over some old code three or four times you might find areas where you can save some CPU cycles (and for you green-beans, that eventually may translate to saving power and hence the world as well ;-P ).
Let's say you have your typical loop. The example I have in front of me does a lookup within the loop. On the first iteration, the code looked something like this:
While not doc is nothing
searchkey = doc.somevalue(0)
strResult = processLookup(searchkey)
doc.replaceme=strResult
doc.save false,false ' try again later
set doc=dc.getnextdocument(doc)
Wend
If this is going to hit several thousand documents hourly, I can save some CPU with a bit of critical thinking. What if my searchkey is empty?
While not doc is nothing
searchkey = doc.somevalue(0)
if searchkey="" then goto nextdoc
strResult = processLookup(searchkey)
doc.replaceme=strResult
doc.save false,false ' try again later
nextdoc:
set doc=dc.getnextdocument(doc)
Wend
In the cases where I'm going to have a bad result from the processLookup function due to a missing key, I am going to save the bother of running through the lookup by just bailing to a label. I know, some people hate goto statements and labels, and I've gone back and forth over the years on whether I like them or not. The conclusion I've come to is that you can't program Assembly with out the use of JMP, so at least it's historically a good structure. I think perhaps it's academic to try to contort code around the need for them, but I digress.
Another work avoidance would be to consider whether my batch write needs to execute on each document. Adding a little test would mean potentially many fewer updates to the database.
While not doc is nothing
searchkey = doc.somevalue(0)
' bail if empty search string
if searchkey="" then goto nextdoc
strResult = processLookup(searchkey)
' bail if update unneeded
if not(doc.replaceme(0)=strResult) then
doc.replaceme=strResult
doc.save false,false ' try again later
End If
nextdoc:
set doc=dc.getnextdocument(doc)
Wend
So, two passes has provided the following. We started by processing every document in the collection and attempting a lookup each time no matter what. Then we cut down the number of lookups based on whether our key appeared to be valid for the lookup (this assumes a pattern where the key is externally provided or otherwise dynamic in nature). Finally, we cut down the number of document writes by comparing the new value to the old value. This last one should have some knock on effect when the update to the view index is much less. Our net efficiency has improved dramatically just by going back and refactoring our code a bit with some critical after thought. The difference, depending on variables, could be minutes or hours shaved off the agent run time. |
| Read / Add Comments (4)
|
|
Finance: Economic Stimulus Checks
|
|---|
| Tue 29 Apr 2008, |
|
No, this isn't becoming a finance blog - not yet anyway, but with the Economic Stimulus package (aka crack) coming to many Americans in the coming weeks and months, I wanted to promote some intelligent use of that windfall cash.
Are you in debt? Any debt? Then let me suggest the first thing you consider doing with free money is not buy more stuff. Stuff depreciates in value immediately and terminally. Eventually, stuff is worth nothing. Debt on the other hand, managed poorly, appreciates in value. Consider that the debt you owe is held by a bank somewhere. They are counting on you to make the minimum monthly payments each month for a very very long time. Why? You are an investment to them. You are paying dividends to their investors every time you pay interest on your credit card, student loan, car loan, boat loan, store credit, or mortgage.
All you have to do is listen to the news for a little bit and you'll hear either "mortgage crisis" or "credit crunch". These things are happening because a)banks are greedy and b)people are greedy. We want more stuff - more than we can afford. Banks want to make money - more than we can afford. Interesting parallel, eh? Loans and credit are a match made in heaven for greedy consumers (people with stuff-itis, e.g. "I'll be happier with just a little more stuff") and greedy lenders (machines, run by shrewd, perhaps unscrupulous, people, made expressly to extract a tax upon your ignorance.)
My suggestion to you, if you are receiving a check from the government soon, would be to divide it into three unequal parts. Take 80% of it and pay down your smallest debt. For some, this may pay OFF your smallest debt. Praise God if it does because you are now on your way to financial freedom. Next month, instead of the smallest allowed payment on your next largest debt, pay what you would have paid on that next debt PLUS what you would have minimally paid on the debt you (hopefully) just wiped out. Do this with each of your debts, moving up the ladder from smallest to largest, until you have "snowballed" your debt out of existence. My wife and I did this and eliminated $52,000 in debt (in the form of three loans) in 21 months. This works by using the principle of compounding interest (what the bank counts on to keep you in financial servitude) in reverse. You pay more of the principle debt you owe with each super sized payment, which reduces the base amount of the loan upon which the interest is calculated. This not only takes a little money from the bank and puts it towards your freedom but accelerates the rate at which you are paying your loan down by decreasing the interest you owe rapidly, shortening its lifespan dramatically. When you pay off a credit card, cut it up and throw it away. Keep only a debit card (most work like credit but draw from your checking, so you won't be tempted to spend more than you have in the future.) Some of you may recognize the hand of Dave Ramsey in this paragraph, a great teacher and author.
So, what about the remaining 20%? Well, here's something that may sound unintuitive if you are paying down credit, but I want you to save 10% of it. That's right. Save it and don't touch it unless you have a real emergency - something you would normally put on a credit card (in an emergency - like a flat tire). I want you to throw away those credit cards as you pay them down and when a real emergency comes up, use your emergency funds (interest FREE) instead of a debt accumulation device (credit card). Add to your emergency fund till you have about $1000 in it. Obviously, government handouts aren't going to completely save you, you'll have to work at it a bit. Guard that $1000 jealously when you get it. Don't let the wife or the husband or the kids or any other family member guilt you into spending it frivolously. It's there to keep you out of debt in an emergency and an emergency only.
The last 10% I want you to give away. But not just any place. If you've been reading the news lately, you may know that our country's fascination with bio fuels has driven the price for corn, wheat and soybeans through the roof. This is impacting the entire world. While credit mismanagement has weakened our dollar (the value of the dollar? It's largely valued on how much unsecured debt there isn't - paying off yours will help a tiny bit), and fuel (valued in dollars) has gotten more expensive. Our attempts to find some way to need less oil are slowly killing the poor. Did you catch that? Our mismanaged debt is killing people. Once again: debt -> weakens dollar -> raises oil cost -> drives search for bio fuels -> increases demand for corn -> decreases lands for wheat and soy and availability of corn as food stock -> increases price of food -> decreases buying power of consumers and eventually, people starve for lack of ability to buy food. It's happening around the world, and has recently begun affecting the availability of rice in California and Texas - the two largest consumer populations (of rice) in the US.
It's been called a silent tsunami, and folks, it's near. Give that 10% to your regional food bank or church. Larger organizations have more buying power than you and can turn that cash into food for millions of starving people. Many church's partner with larger organizations, so if you don't have a regional food bank like we do in Mid Ohio, put it in the collection plate (good excuse for some of you to visit church) and designate it by writing on the envelope(you can do that and they should honor it) for food aide and or disaster relief. You'll get more peace from that 10% given away in this fashion that you will by spending it on games for your Wii.
So, I hope it was of profit to you to read this today. In the time it took you to read this, you've started on your way to financial freedom, begun doing your part to fix the dollar as well as your part to save people from the horrible death of starvation. Time well spent I say. |
| Read / Add Comments (0)
|
|
Career: Change of....
|
|---|
| Sat 26 Apr 2008, |
|
Coming soon - a change of; venue, employment, tax status, drive time, time spent on Notes... just some of the things that will be changing for me in the next couple of weeks. I've accepted a job with Teamwork Solutions. Some of you may know Scott Good - someone whom I will soon refer to as... (dramatic pause)... "da boss".
This will be an exciting change for me, and not one I really saw coming. I've been looking to make a change to my work situation for some time. I've had lots of ideas as to what the form of that change might be, but through it all, I've tried to figure out where God wanted me. I have looked in many places and it has been clear where not to go. Then I noticed that a job was opening up with Teamwork Solutions, so I contacted someone I know there (a past contributor here on the Datatribe Blog) and within a week had a job offer.
It doesn't get much clearer than that. When God wants you somewhere, it's hard to keep it from happening. Along with this clear leading from God, it also makes a lot of sense. In fact, the more I look at it, and the more I learn about my new situation, the more sense it makes. Things I couldn't have guessed would come about, things I couldn't have planned - each falling into place and looking very much like what God would want me to be about if I were to be a diligent student of His word. So of course, praise be to God! And thanks to those of you who have been praying about this with me.
It will be interesting to say the least, and will push me as well. One of my first responsibilities will be to update my certifications. In the past, I've had a dim view of these. I now realize it's because nobody was pushing me to keep them up to date. I now feel as though I'll have peers who will hold me accountable to a standard of professionalism and excellence I've only managed to grasp momentarily here and there on my own motivation.
There is a lot that I will miss about my soon-to-be-old situation. The people, both at my client site and my sponsor company are all wonderful. Not one of them, I hope, should feel as though I am moving on because of them. It's more about what I can achieve, and I think I've peaked at my present assignment and with my present sponsor. Moving to Teamwork Solutions will mean becoming an employee again and not a consultant. Being independent has been fun, challenging, scary, and time consuming. Becoming employed will simplify my life. I used to really cling to the control being independent offered, but I think I've grown through the experience to the point where it doesn't matter so much any more. I will miss the interest I make holding my own taxes over each quarter, but it's a small price to pay for a more invigorating set of challenges.
There is rumor I may get to soon work on integrating Domino apps with mobile devices. I'm not sure yet how much I can share about these things, but I'll try to pass along the useful bits. Being that Scott is a fellow Domino Blogger, I'm hopeful I'll be able to blog about what I learn at a conceptual level or better. I'm optimistic in that regard. Most of you probably already know I'm professional enough to share technical goodies without giving away customer or company trade secrets.
At any rate, I expect my focus will shift more towards Domino in the future. I still have my steaming fresh MS Technet subscription to wring usefulness out of, so there will hopefully be some things to share there as well, but my main and immediate focus will soon be getting up to date certifications - across the board - with Lotus Notes technology. My brain already hurts! |
| Read / Add Comments (4)
|
|
Finance: Rethinking Taxation
|
|---|
| Fri 11 Apr 2008, |
|
I've had numerous discussions and debates over the years with conservatives and liberals alike over the need for and merits of taxation. Recently though, as I contemplate alternate taxes (like a luxury tax, flat tax, etc.) and think about the absurdity of stimulus checks (here, have some of everybody's money and please oh please spend it on something... no, not debt reduction...), I come back to the K.I.S.S. principle more and more. Keep It Simple, Senator.
The federal Government employs 1.8 million civilians. That excludes the Armed Forces (one presumes from the use of the word "civilian") and postal workers, according to the US Department of Labor. Out of a current estimated 303,831,000 US citizens, that's roughly one half of one percent. Assuming some radical plan for reform wanted to eliminate taxes as much as possible, all of these people could keep their jobs at a cost to the average (non federally employed) citizen of $387 (based on an average middle class wage of $65,000 per year.) If we look at our average actual tax burden, it's a lot higher than that or a lot lower than that depending on where you fall in the income brackets (whole lot higher for most IT consultants). Added up, that's $117 Billion. The 2008 federal budget spending request for $2.9 Trillion is about 25 times that amount. Wikipedia has a succinct breakdown.
So, most of the rest of our tax dollars are spent on something other than job creation. But this is oh so much interesting trivia. Imagine the economic impact of privatizing each of these jobs? If any of you have ever worked on any government contracts, think back and see if you can remember how efficient, cost effective and frugal the federal (or even State) employees were which you worked with. I'm guessing some of you have stories of excess and waste. The GAO this week indicated that 41% of $14 billion of government charge card purchases were not properly authorized. Things like massages, iPods, home improvements and the like were stolen from you (if you happen to be a US Taxpayer) to the tune of $5,740,000,000 ($5.74 billion USD) last year alone by these employees in your service (they are, after all, public servants.) Do you think, if each division of the federal government was privately contracted, a small or medium size, privately owned or publicly traded company, that they would be in business long if they ignored this sort of abuse by employees? Furthermore, if this is your service provider, and instead of taking a hit on their books, they pass the cost on to you, would you continue to contract this supplier?
Entertain if you will the notion of privatizing ALL federal government services. In fact, entertain the notion of the federal government being run like a publicly traded company, where you are a share holder rather than a tax payer. Aren't you going to do everything in your power to ensure you are getting your money's worth plus a return on the investment? I think there are two basic poles in the way governments are operated and organized. A communist dictatorship or a purely capitalistic free society. The more taxes we impose (and hence the more commerce we hinder and more damage we do to the economy), the more oversight we fail to exercise on our politicians and our federal public servants, all the more we slide towards the monolithic machine state of China and the former Soviet Union.
If we profess to be the wealthiest, freest nation on earth, shouldn't we be steadily moving towards the other pole? The fleecing we undergo each year is an open wound into which our very own government pours salt and vinegar with apparent glee. Are you happy with the way you are taxed? Wouldn't it be nicer to be getting a dividend this spring rather than a refund on the overage you loaned to the treasury, interest free? |
| Read / Add Comments (0)
|
|
Domino: Cascading URL Commands
|
|---|
| Mon 7 Apr 2008, |
|
Any Domino Developer worth their salt knows that a few handy URL commands can craftily be used to control the display of information to the user. Just append your arguments to a domino URL and have your pick of ways to consume them server side, or use built in commands. But did you know, query parameters cascade through to embedded elements?
Case in point; following an example from many years ago by Jake Howlett to use a page with an embedded view to create an RSS feed, I recently added some handy RSS 2.0 feeds to a system we use for project tracking at work. The page is used to layout the XML header for the RSS feed, and the view is used to render the items in the feed for subscribers to retrieve. Pretty cool, effective and elegant (credit to Jake).
I was playing around with some date information and wanted to make sure I was getting all the content I wanted, so I thought adding &count=100 should show me more than the 30 rows I had told the embedded view to display. To my surprise, it did. So, I wondered if Domino was just that smart and knew a view was ultimately what was being displayed or if there was something more happening. To test things out, I added @URLQueryString to the computed text used to generate the description node of the RSS feed and what do you know... The page could see the arguments as well as the embedded view could. Both were visible and apparently being honored. In a way this makes tremendous sense but for some reason hadn't occurred to me in the past.
Mind you, I'm working with R6 technology (it's for work after all and they aren't currently spending any more money than necessary), so forgive me if this is child's play in R8 or otherwise old news. But, I was impressed that Domino apparently will cascade the URL arguments through to all the embedded elements in a page. I imagine this would be true for a view embedded in a form as well.
I know, you're thinking - "big deal" - and in truth, this is a small discovery, but a useful one. It opens up the way I've been thinking about Domino web design a bit more than in the past, and that's always a refreshing thing.
I also wonder if this presents a vulnerability. Since the number of elements displayed in a feed this way can be overridden, can a Domino server be slammed by setting that count to the server max (or just a really large number) and innocently setting up a feed reader to automatically refresh every second? Can you think of any ways this can be constructively or destructively used? |
| Read / Add Comments (2)
|
|
Finance: SHEER STUPIDITY
|
|---|
| Fri 28 Mar 2008, |
|
AAARGH! I can't take this any more! I've lost count of how many times the FED has cut interest rates all in an effort to eliminate the risk from a system that is built inherently upon RISK. If you are going to have some parts of the economy profit, some will have loss. Trying to keep all the water in the basket just isn't going to work!
Now news comes that the treasury department wants to give the Federal Reserve MORE POWER?!? Whiskey Tango Holy Flying Foxtrot!?! I just am beside myself. Quick review: the US dollar is sliding in value, so the Federal Reserve INJECTS MORE dollars into the economy. No, that doesn't make sense - it's not your imagination. Apparently at ye old central bank, when something is losing value (e.g. there is more supply than demand) you make more of that something available... hoping, I don't know, it becomes trendy again?? Oh, and then there's this credit housing disaster thing going on brought on by money being too darn easy for people with no credit worthiness to borrow said money. Money too easy to borrow - let's see, then by reason of insanity (and the Chairman of the Federal Reserve) we should... mmm... make it MORE EASIER to borrow! Lower the interest rates! Ha! That will confuse those silly borrowers into borrowing more money.
Did I mention the cash back program? I do believe it was Mr. Bernanke again himself who uttered "let's get some economic stimulus into the hands of the working poor because their so darn stooopid they'll run right out and buy some plazma TVs and save our sorry arses"... (I admittedly take some liberty in paraphrasing him, but that's the gist of it).
Holy I'm having a cow man. When does this insanity end? Maybe next January. I don't know. I doubt any of the current candidates are going to change anything... Ron Paul maybe would, but his chances are about as good as Barak Obama being caught in a compromising position with Hillary Clinton. Hell freezes over, then Ron Paul gets elected, then moon pies become the state food of California and then, maybe, we finally get rid of the Federal Reserve. I know, I know, it's a long shot, but here's hoping an act of God happens in the right spot at the right time and I dunno, we stop printing money that cost more to make than it is worth. Maybe we'll standardize on the Peso... or better yet - the Chinese Yuan! HA! What the heck is Beijing going to peg its currency to then!? HA! Take that commie bast-a-ges! |
| Read / Add Comments (0)
|
|
Javascript: Pretty Code
|
|---|
| Wed 26 Mar 2008, |
|
I've been trolling through the Google open source code and found they have released a nice code prettifier which will add text highlighting to your code samples on your website. I'm already using a flavor of that here but this sounds simpler to implement, though it relies on a specific class name being applied to your html code tags. The one I use, highlight.js, just goes after the code tags automatically and works most of the time. I suppose it's a toss up between specific instantiation and specific tagging. Since I control the include of the highlight.js file in my html dynamically with a formula in my HTTPHeader, it's a no touch solution once deployed. With Google, I'd have to "call" it every time by adding the class specifier, but then I don't have to tell it which languages to look for. |
| Read / Add Comments (0)
|
|
C++: Key Listener and Message Sending Header
|
|---|
| Mon 24 Mar 2008, |
|
I've been getting back into C++ as a hobby interest and this weekend I started applying my work experience to the tutorials I've been working through. The first order of business was to get a toolset together. I opted for the freeware compiler Dev-C++ because it's free, uses GCC as its compiler, and has a minimalist interface. I'll gather more tools as I go. The other interesting bit has been building a toolset for my personal use. The first thing I realized I needed and didn't want cluttering up the main routine file in my projects was a key reading and message sending header file.
Borrowing from Andre Lamothe's Tricks of the Windows Game Programming Gurus, I put together the following to use as a standard include on future projects.
It has a couple of handy things - a definition for reading KEYDOWN and KEYUP events, and a couple of functions for SendingMessages to Windows immediately or in a Post fashion where they are processed in the order received but control returns immediately. No credit to me except for putting it into a header file on its own. All the code and comments are straight from Andres pen. As I continue to put together header files to go in my toolbox, I'll post them here for later remembrance, sharing, and comments from any C++ gurus who may have a better way to do it. |
| Read / Add Comments (2)
|
|
Design: Approaching a Universal Validation Pattern
|
|---|
| Thu 13 Mar 2008, |
|
Time permitting, I soon hope to have something to share along the lines of a universal (Domino Universe) validation pattern that would allow the one time declaration of validation rules which would operate and apply under a number of run time considerations. At the moment, I have Notes Client mass edit and document edit events in mind, but the pattern I'm working on would easily be extended to Domino web applications as well.
In a nut shell, there are three basic moving parts: - Validation Rules
- Validation Engine
- Validation Interface(s)
The rules can be keyword or profile documents or even an external data source if you prefer. The Engine is essentially a class or collection of classes which will: evaluate an input, identify the rule to apply, evaluate the rule against the input and finally return success or failure with message. With this encapsulated in a class, it is easily consumed by a number of interfaces. For client based apps it should be pretty clear how that might happen. For the web, a listener interface for AJAX calls would be needed. This would allow input level client side validation as you work through your form in the browser.
Before someone points this out, I am quit sure my thoughts are not original as they have grown from observing many other systems over time. My aim is to come up with something that is clean enough to be readily deployed to existing applications as we will have need of such services at work in the near future. At any rate, I am interested in hearing other thoughts around this. Also if anyone knows of an existing template that is publicly available that meets all the above characteristics, it would save me time to know about it. :-) |
| Read / Add Comments (1)
|
|
Policy: The Cost of Lying
|
|---|
| Thu 6 Mar 2008, |
|
I had the chance to hear of the struggle a friend is having with work, where a manager is directing him to represent false information to a customer to cover up a problem. We, there were several of us talking about it, all agreed that honesty is always the best policy, but who wants to lose their job for defying a manager?
What prompted the conversation was our weekly study which covered Ephesians 4:25 - "put away all falsehood". Don't lie. The context is specifically aimed at the body of Christ, but it should likewise extend to our dealings with the world. As Christians, whenever we lie or let a lie be propagated, we lose credibility for ourselves, our church and the entire body of believers. These things are obvious. But what other costs? If you need some more justification for absolute truthfulness, read on.
I come from a process improvement background. I'm always questioning what we are doing, what we are really trying to accomplish and whether the chosen approach is best. When a situation arises where an error has crept is, most people instinctively want to minimize it. Nobody wants to look bad. It's easy to justify it as taking care of business, business as usual to just hide the little errors in bigger ones that aren't our fault. There is a larger cost to pay with this aside from our own personal sin, which will come back to remind us of it at some point.
When we cover up a flaw in our work or the work of others, we are denying the opportunity for truth to work it's restorative power in the situation. There is a lot to be gained from admitting a fault, even when we fear the consequences. If we trust in God and His plan for us, whatever the consequences, we know He will use it for His good purpose. We therefore should be bold in advocating truthfulness. Let's look at an example.
Say I have uncovered an accounting error. I could easily find an opportunity to cover it with a change to the projected totals, or shifting the value of some other asset to absorb the error, but what then? Well, the balance sheet looks good, but we have a more serious problem. If this is business as usual and it becomes known within my company that it is business as usual, I have a rotten culture. I have a system incapable of detecting errors and taking true corrective action. I have a system that actively promotes deception. How will my company ever grow or improve if it constantly hides errors, burying omitted line items in later unrelated addendum's?
The core deliverable of truthfulness is positive growth. If I have a problem with training, accounting, metering, anything... I need to know about it or the aggregation of small lies will turn into a giant weight which will eventually crush me. Addressing it as soon as possible has lots of benefits. I can improve my process by openly discussing the issue with all stake holders rather than concealing it and keeping it to myself or inner circle. I build credibility with my customer by be honest with them about the problem AS WELL AS the solution I have devised to address the problem in the future. And, I create a culture within my company where honesty is valued - truthfulness desired. The whole character of my organization is transformed by embracing truth.
So, the cost of lying should be apparent. You lose your soul, and that of your employees and company, and eventually your business when lies of any magnitude are institutionally tolerated. |
| Read / Add Comments (0)
|
|
Games: Javascript Game Teaser
|
|---|
| Sat 1 Mar 2008, |
|
I've had a long standing interest in game programming, just no time or reason. With kids in the mix, I now have a reason. :-) Below is a screen grab of a simple hand-eye coordination game I'm making for them. The object will simply be to get the car (not shown but so far a wee little sprite which looks like the family APC) from one end of the map to the other using the arrow keys on the keyboard. I have a long way to go but it has been fun for me so far and hopefully will be fun for them as well. 
Next step is to take the sprite table I've created for the APC and get it on the screen as a layered div with transparent png images. The idea is that the car will turn to move in the direction you move it with the arrows rather than operate in 'drive' mode which would be unintuitive for a top down map... and a 4 year old driver. |
| Read / Add Comments (0)
|
|
Script Fragment: Double Delim String to List
|
|---|
| Fri 29 Feb 2008, |
|
Little things like this make like easier, especially for me as I have a tendency to prefer lists over arrays. They are more intuitive and flexible to my feeble way of thinking.
Function stringToList(strInput As String, strValueDelim As String, strItemDelim As String) As Variant
' returns a list from a double delimited string, eg as found in querpparms
Dim outList List As String
Dim tmpArr As Variant
Dim tmpArr2 As Variant
tmpArr = Split(strInput, strItemDelim)
Dim n As Integer
For n=0 To Ubound(tmpArr)
tmpArr2 = Split(tmpArr(n),strValueDelim)
outList(tmpArr2(0)) = tmpArr2(1)
Next
stringToList = outList
End Function
Some related links: Handling Double Delimited Strings in Formula
It's a no brainer in both cases but worth tucking away so I don't have to rewrite and re-unit test it again next time I need it. |
| Read / Add Comments (0)
|
|
Life: Buckley Dead at 82
|
|---|
| Wed 27 Feb 2008, |
|
One of the men I owe my political ideology to has been found dead at the ripe old age of 82. It's amazing where conservatives have come from, and gone to in his lifetime. With the passing of a man who characterized the Excellence which we should all strive for, the potential for an era to end arises. Conservatives would do well to make a deep study of the thought and leadership of William F. Buckley, Jr. and be sure of what they think they know, why they know it and how to promote it. Too many would-be conservatives run amok today with half baked thoughts and positions. The Right is indeed right, both of mind and motive - but jealously and desperately must we guard and seek to preserve the purity of those motives lest we become indistinguishable from the left, as many today have become. Rest in Peace, Mr. Buckley. |
| Read / Add Comments (0)
|
|
API: Design Element Flags
|
|---|
| Fri 22 Feb 2008, |
|
Show of hands, please, who likes to forget something you have learned? Me either. I had stumbled upon this a while back and FORGOT till Google reminded me what a cool dude Rocky Oliver is. He kindly provides a list of Design Element Flags, direct from the C-API Help, which today I needed badly. So I don't forget that Rocky is cool, here is a link to where he stashed this wonderful information about $Flags. If you see Rocky, give him a hug... or at least a doughnut.
And, so I don't forget I forgot next time I search my own blog, here is that files contents.
|
| Read / Add Comments (0)
|
|
Design: Clarity in Design
|
|---|
| Wed 20 Feb 2008, |
|
We were laughing yesterday at an error message for an ODBC data source that asked us to insert the proper diskette. A what? It made me think about how technological trends come and go, and how things we designed a while back to be friendly are today just confusing or even whimsically quaint.
It's definitely one of those modern day archeological conundrums... how can I clearly tell you what I need you to know without becoming dated down the road... assuming my software is still in use then. Sometimes something that would seem totally agreeable takes on new meaning with a simple shift in cultural expectations. Take this benign diolog box from Windows Media player (edited of course). It might better reflect current opinion as shown.
 Want some DRM with that?
To me, it seems clear that the same abstraction, resistance to tight coupling and configurable design practices we labor to put into our back-end design needs to be considered for the front end. Label text on the UI should be something that is easy to update as business rules and climate change, otherwise the message I once thought so clearly conveyed, owing perhaps to an abundance of verbiage, may one day be hoplessly confusing - unless I left myself a door open to replace the UI text strings in some upgradable fashion. |
| Read / Add Comments (0)
|
|
Email: Normal Notes Client Error?
|
|---|
| Wed 13 Feb 2008, |
|
Here's a question for you Notes Email Template experts. Is this a normal Notes Client error or did our well meaning super admin cum developer give us a little unexpected added value?
 This error popped up when one of my co-workers attempted to mark an email I had sent him for follow-up from within the memo. From the Inbox folder, this was not a problem. Any thoughts?" We're all using version 6.5.5 . |
| Read / Add Comments (0)
|
|
Hardware: 2GB DDR2 PC2 5300 For Sale
|
|---|
| Sat 9 Feb 2008, |
|
In the course of building the Mini-PC I'm selling, I accidentally ordered the wrong memory. Doh. My loss, your gain. Actually, a wash. I'm selling it for what I paid. You can view the product page to buy some extra memory! Tax and shipping will be calculated by Paypal. |
| Read / Add Comments (0)
|
|
Hardware: AOpen Mini PC
|
|---|
| Fri 8 Feb 2008, |
|
When I bought my Mac-Mini, I was impressed with how quiet it was, how small it was, and how good it looked on my desk. Having tried and failed though to get my preferred application server (Domino) in any Linux or emulated flavor running on it, it serves well enough as our household file and print server. I also use it for writing, but that's beside the point of this post. Wanting to be able to have my own power efficient Linux based server without giving up what I like about the Mac, I went for the AOpen MP945-VXR. It's been a bit of a ride getting it set up.
First, silly me, despite no clear marking as such on Amazon, this is a bare bones unit and only comes with the embedded hardware (sound, video, NIC) and a slim line DVD. At first, I tried both Ant-Online, the seller via Amazon, where I purchased, but after 60 days of run around from both institutions, I have no satisfaction in the way of an RMA and I'm stuck with an empty box. I decided to outfit it with the missing CPU, Memory and HDD with the intention of selling it, which I may yet do. (suffice to say, I don't shop Amazon any longer - the Atoz guarantee is largely meaningless). After some painstaking research (even as a bare bones kit, it is packaged as though it's a working unit), I discovered the CPU, Memory and HDD specifications through a ZDNet review. The product itself is devoid of any technical information upon arrival. Finally though, it has 2 GB of RAM (PC2-5300 SODIMM), 160 GB SATA3 Toshiba HD (141 GB Formatted), and an Intel Core Duo 1.66 T2300 Mhz processor. For those of you who haven't actually experienced a Core Duo yet, it shows up as two CPUs in System Monitor and generally rocks. This is the same CPU my work laptop has and I run a ton of stuff on it, although that machine has 3GB of RAM.
Tonight, I am loading Ubuntu 7.04 on it to make sure everything is in working order. After that, it's decision time. I can sell it for about $650 and cover all my costs - only trouble is finding a buyer at a time when most people don't have a lot of spare cash. I could also make a go of turning it into a server, but I think my wife really expects me to sell it... and that may have more bearing on what I do with it than anything else. Still, I'd love to upgrade our DSL to a fixed IP and put this up as a small Domino server for private use. It's a question of time and money... and happy wife. Happy wife usually wins. :-)
Anyway, once I give this thing a thorough shake down, it's probably going on CraigsList unless anyone of you is looking for a petite and energy efficient PC with pretty decent speed and specs. Any takers?
I've set up a page with a complete product listing and Paypal link for those interested. Buy It! |
| Read / Add Comments (1)
|
|
Tools: Visual Studio 2008 an Exemplary IDE
|
|---|
| Fri 25 Jan 2008, by Jerry Carter |
|
I'll give you a moment to get over the shock of a Dominoid uttering such things. *...* Yes indeed. I took the opportunity to start self paced study on Visual Studio 2008 express this week and have had to swallow a lot of Domino pride and be very humbled by what I didn't know. My track of choice was C# as most of my experience has been in LS and Java and that seemed to be the correct path "onwards and upwards" technologically. I also registered for the March 20th Microsoft 2008 Launch Party here in Columbus and am more excited now that I've had a play with some of the tools than I was at the beginning of the week.
To compare and contrast, the VS 2008 IDE does a lot of things we are only beginning to get a taste of with Eclipse as the underlying code base for Domino 8. (Domino 8.0.1, btw, also promises to knock your socks off). Coming from corporate environments which move slowly with the times, I've been stuck in the R 7 IDE (which is basically the R 6 IDE) for too many years. Let that also serve as my full disclosure - the comparison I'm making isn't really fair on that basis. But, the first thing that made my chin bounce off my space bar was the replete type ahead code completion - even including objects I've only just declared. Let's say you declare a System.Windows.Forms Form object and name it "Bob". As soon as I start typing another line of code starting with B, "Bob" is there to save me an extra key stroke just by hitting . or Enter. That is how you do type ahead properly.
The next thing that I was really impressed with was the debugger. In LS, it is generally good practice to not create compound or nested object assignments. e.g....
set db = wk.currentdatabase.database
... is better written as ...
set uidb = wk.currentdatabase set db = uidb.database
... because you then have two opportunities to set a break point and debug. In VS 2008 (and probably 2005 I would guess from comments my buddy Derek offered) a compound assignment can be debugged with some very advanced mouse-over context sensitivity. I can mouse over the compound assignment objects and am presented with an expandable object tree showing me all the properties and values of that object, including nested objects. Debugging a compound assignment is now simple - even fun.
Third impressive bit - with three controls on a form and one line of code I had a working web browser application due to the numerous tools, objects, controls, etc. available in the designer. The IE web browser appears to be wrapped as, obviously, webbrowser. Add a text field for URLs and a button to set the nav property on the web browser with a new Uri object and away you go.
Aside from this, the tabbed browser, docked property box, configurable IDE layout and general polish on the product makes it a joy to code in. After a half hour of playing, I turned around to try to help a coworker with a tricky Notes UI Design feature and immediately had to open up the box-o-hacks to get something to work just right. Faced with this contrast... it's hard not to dream about working with the Visual Studio IDE.
Now I feel duty bound to get Domino 8.0.1 installed and thoroughly examined. I have to believe IBM is at least taking a swing at what Microsoft has been working on. *sigh* so many years of mistrust and vehement dislike for Microsoft's deceitful ways, blatant thievery and security non(existent)sense will be difficult to overcome. But I'm always ready to learn something new and try ever so hard to keep an open mind. |
| Read / Add Comments (1)
|
|
Policy: Efficiency in your SDLC
|
|---|
| Wed 23 Jan 2008, by Jerry Carter |
|
In the past, the attentive reader may have noticed my punditry on economic and governmental policies. A sampling of thought in these disciplines would lead the reader to detect my fiscal, social and governmental conservativism. These viewpoints have grown from long term exposure to the indifference wasteful and inefficient management practices have surfaced in the employees burdened by them. However, there are levels at which process sometimes needs expansion and reinforcement. Having an effective balance between too little process and too much process requires a thorough knowledge of your organization.
Let's start with the reason most companies eventually adopt an SDLC: Cost. It costs money to support poorly developed software. It costs money to pay contractors - and more so when they have to work extra time or extend contracts due to poor project planning. It costs money - and lots of it - when a project is ill conceived from the start, makes it 80% through execution and then dies simply because the sponsor changes jobs. Having processes to ensure proper capital allocation, proper design and proper planning will save money now and down the road when the resulting software is humming along without so much as a peep. A lack of vision in these areas can lead to ruin. It would violate the trust my past clients have in me to tell you about the specific waste I've witnessed in the past, but I can tell you I've seen some spectacular waste - each time attributable to a failing in one of these areas.
Governance
On the front end of the process, it's good to have some governance to decide whether a capital project is a good use of funds or not. What is the TCO? What is the ROI? Is the later far greater than the former? Those are the sorts of questions asked at this stage - almost pre SDLC but critical to the SDLC ever being of use. I've seen purposefully complex and inaccessible governance (gate keeping) kill even the desire to run something otherwise good and profitable up the pole. "They don't care." "Nothing ever changes here anyway." I've heard the disaffected depression wash over someone as they speak about what they think can be better but, sadly, see no way their idea will ever see the light of day. If you have this sort of inaccessible governance to ideas of any kind, beyond just software development, you have a vision problem - it's called myopia, and it can cause many problems for talent retention, process improvement and cost savings initiatives.
The other side of the governance coin is having too little. I once saw a project run for better than a year, expending large sums of cash only to die a quick death because the one party that really wanted the custom tool moves to a new position and no longer needs it. All that money lost because due diligence was ignored. A person with too much direct control over IT assets and too little governance single handedly wasted the equivalent of a years salary for an upper middle class wage earner. Shameful.
The balance is having an open door policy for your IT governance and process improvement gate keepers. The people who have the ability and responsibility to set direction and approve expenditures need to have a communicated desire to the rest of the organization to hear new ideas, and an understood and absolute authority to control those allocations. Don't confuse this with a CIO. A CIO alone can't do this and shouldn't operate alone in this capacity. Many good CIOs have made poor decisions for a lack of council. The governance organization should have broad exposure, have a reliable and simple mechanism for raising ideas and requests for their consideration and the authority to give life or death to those ideas and requests. Care must be taken to ensure the door is clearly marked as Open though. From season to season as markets rise and fall, it's easy for a "belt tightening" message to be telegraphed to the organization and have it be misread as "stop thinking up good ideas". Sometimes, spending $10 on a needed part can save $100 later. Even if the budget is $5, the $10 is well spent.
Design
Proper design principles are critical. That should go without saying but I'll say it anyway. SDLCs often contain a lot of process that grows in accommodation of poor design principles. More quality check points are added when the IT organization demonstrates the inability to deliver quality from the construct phase. More testing steps and processes are piled on if the testing group constantly has long lists of rework items for the developers and coders. This is a necessary evil but it adds process cost. If it is needed as an environmental consideration, it must also then be context sensitive. Consider the case where only a small change is requested. If the full process must be applied, a 4 hour change can easily take 80 hours to implement. One size most obviously does not fit all. It's helpful to identify risk factors and evaluate them as part of the early design process to determine if the work deserves the royal treatment or just a scrub and a polish.
The potential pitfalls here are too much process applied unjudiciously to small projects, and too little process applied to large projects. Each has implications for cost now and in the future. The amount of process added to the SDLC should be constantly balanced against the cost of implementation and the impact to quality.
This ties in neatly with planning. You might think we have been on about planning already but there is a difference between the previously covered aspects - funding and hard skills application - and planning, which is largely an exercise in soft skills and speculation.
Planning
One of the biggest contributors to inefficiency in an SDLC is an improper view of the role of planning. And this view usually is held by the organization leaders. The common belief is that more planning, in terms of PMI Project Manager planning, will save more money. This is not always true. As I said, knowing your organization is critical to properly applying these disciplines. If you have a solid, level headed governance board utilizing an efficient process which is feeding work requests to product and software designers who have a long establish track record of quality and best practices, planning is more likely to get in the way if it hasn't been grown and nurtured along side of these other areas as they matured. A one time costly misstep should not be viewed as a reason to blanket the situation with Planning.
If however, the organization is managing resource level day to day and struggles with technology direction, standards application and is generally a swarming hive of omni-directional purpose and activity, Planning will be the saving grace and hero of the day. The important thing to keep in focus is that Project Plans are to be used as a rope to guide a project along the path. There should never be a noose tied at the end of that rope. The plan should not be viewed as an actual prediction of the future to be adhered to at all costs. A pitfall I've witnessed here is carrying forward with an SDLC step because that's what the process is and that's what the schedule is DESPITE the fact that there is clear knowledge things were horribly misunderstood during design and the customer is NOT going to get what they wanted. What's the point? Don't execute a plan for the sake of the plan or a process for the sake of the process. Be ready at all times to let go of the rope and turn around and address the problems creeping up on you.
Similarly, ineffective, weak Planning that sets no goals, no targets and has little structure is pointless. If an organization is efficiently running itself without an official "plan", don't add Planning into the mix on a whim. The balance in effective planning only comes from extensive knowledge of strengths and weaknesses within an organization.
Take Home
So too, an SDLC needs to be custom tailored to the needs of the organization. Too much process is going to serve as so much grit in the gears, and too little will grease the rails to hell. Finding efficiency within an SDLC starts with knowing what you are capable of as an organization - having self awareness on strengths and weaknesses - and having a realistic expectation of the tools you choose and the benefits the reasonably bring and risks they reasonably mitigate. Primarily, any SDLC should be written in pencil, not indelible ink. Maintaining agility is the best way to meet the challenges I've mentioned above head on rather than being run over by them. |
| Read / Add Comments (0)
|
|
Life: Recession?
|
|---|
| Fri 18 Jan 2008, by Jerry Carter |
|
It seems like there have been lots of grumblings about the in-process or impending recession. We are certainly seeing it at work - the grumblings that is. Presently there is an almost hair-trigger policy among some managers when it comes to letting talented contract IT folks go. There is also a shortage of work to go around, but I don't think that is being driven by the economy. My client is a very successful utility and it has more to do with recent organizational changes shaking out. But the mood certainly seems to be one of unrest amongst the majority of contract laborers.
There obviously is something going on as the chairmen of the federal reserve asked for some economic stimulus and the government immediately thinks to send cash to the masses. Does that really address the issue? Last time Bush gave us an economic stimulus package, I got a nice $600 check. I think everyone got something like that. What did you do with yours? If the government sends another "rebate", what will you do with it this time? Well, if you've been paying attention to the current source of economic woe in the country - mortgage defaults from flimsy lending agreements - you'd probably be smart enough to draw the conclusion that a "spend what you don't have" mentality is a good one. You might conclude that saving the money in nice 5% money market account would be a heck of a lot smarter than going out and pumping it directly into the economy in the form of wide screen TV's and Wii's.
At least I hope you're that smart. With so many people seeing their mortgages blow up in their faces I would hope peoples first thought is SAVE the money, not spend it. And surely, the brain trust in DC must realize the general public is starting to come to grips with the economic illiteracy that has been plaguing our nation for half a century or more. Surely, someone in that great city realizes just turning money over to the average citizen who is trying to sell a house, but likely having to foreclose, is either going to put the money into a mortgage payment, put it in a savings account, or pay down a credit card. If you're keeping score, all three destinations are the banking industry. Well, actually, someone does.
Bernanke himself indicated stimulus should go to the low and middle income people first and foremost. Why? Not because they would be able to save their homes, but because they are more likely to spend it right away - et viola - economic stimulus. *sigh* Does anyone else miss Greenspan? Greenspan was the sage elder who informed those who would listen that the American population has no idea what a savings account is for and that money management was not being adequately taught in the public screwels (thanks Rush). It's not. How many of you grew up with a good understanding of compounding interest? Credit? I think most of us grew up trained to see money only in the form of a paycheck to be spent. Well, now this drought of important fiscal teaching is now coming back to haunt the US. Because the general public is cash ignorant, many of us have variable rate mortgages (bad idea), carry a balance month to month on a credit card (bad idea) and are still borrowing money on top of it (really, really bad idea.).
Where then, does Bernanke and Bush really think Americans, now battered and bruised by their own lack of education, will put any windfall cash from the Gubment? My money is on trips to Vegas. |
| Read / Add Comments (2)
|
|
News: Change of Venue
|
|---|
| Wed 16 Jan 2008, by Jerry Carter |
|
Well, after a few months of inexplicable account charges from DDN, and week + turn around time for support questions, I've finally given up. This was only made possible, though, by the kind folks at Prominic .NET. Without their willingness to support the Domino blogging community, I would have not had many places to go within budget.
The difference in service level is amazing. I have a paid production level account with DDN right now and the turn around time on support requests is unacceptable and longer than what they publish. With Prominic, I have had less than 24 hour, in some cases less than 6 hour turn around time on support requests and I'm not even a paying customer yet! There are good business models and poor business models. If you put too much emphasis on automation and too little on customer service, you are going to shoot yourself in the foot.
I will say the DDN control panel is much more fully featured, and if I didn't care about what I was getting charged for and the occasional multi-day server outage, I'd probably stay put. But, even with fewer bells and whistles on the admin console for Prominic, the speed of response when I need help is lightning fast. Where will future customers of mine be hosted? I'll give you one guess. |
| Read / Add Comments (0)
|
|
Collaboration: Group Blog in the Future?
|
|---|
| Tue 1 Jan 2008, |
|
So far, there seems to be both interest and positive feedback on the idea of a group blog by Lotus professionals. I even have an offer to host from one of our communities most generous contributors. It can happen, but 'if' is up to those who feel called to be a part of it. But, how can you know if you feel called to be part of it if you don't know what it will be about? The thought had occurred to me, while trying to brainstorm ideas for a name with Bruce, to come up with a mission statement to help define what it is the blog is about - every magazine needs a focus. It's what defines the content, the audience and the impact.
A first stab at a mission statement went something like this: "Promoting professional grade approaches to utilizing, promoting and working with Lotus Technologies". Being that I feel strongly this should be a group effort - community focused and community based, I submit the mission statement to you for comment.
Also, I mentioned I am looking to add some contributors. We so far Mark Barton, long time contributor here (and one of the most innovative people I know along side Bruce Elgort) and myself. I think the ideal contributor is actively working in the industry with daily involvement with a Lotus Technology (Sametime, Quickr, Lotus Notes, Domino, etc.) and have a mentoring / willingness to share approach to how and what they write about. I would like to solicit input for nominees to be asked to join the project.
Bruce Elgort nominated Julian Robichaux (nsftools.com), Matt White (11tmr.com), and Chris Blatnick (interface|matters). It goes without saying that the fitness of nominees (and willingness to serve as members of the team) will be shaped heavily by the mission statement.
For the near term, this is mostly what I'll be covering here. The correlation we have been drawing is to A List Apart, a great web design blog by professionals for professionals, although I'm sure many hacktacular coders have found it useful in a non-professional context as well. Just one look at PlanetLotus.org (the reason, btw, my bandwidth started pegging back in November, I believe) and it's hard not to see there is a rich pool of ideas and talented writers who could head, contribute, or just cheer on a project like this. Your thoughts appreciated. |
| Read / Add Comments (0)
|
|
Journal: Future Direction
|
|---|
| Sun 23 Dec 2007, |
|
I made a little design change to the site the other night and cleanly inserted a way to turn feeds on and off. They will still post when called but have no items in them when the setting is off. This is a short term solution to the bandwidth crunch. Julian suggested Feedburner as a redirect - need to research that. It would be good to be able to save that if I get my mind set upon continuing blogging here. But, that's not all I wanted to chat with you about.
Mark and Alastair commented on my post the other day about starting a group blog for Domino akin to A List Apart - it would pretty much be an online Magazine for Dominoids by Dominoids. I can see benefits to this approach right off. More contributors means less stress on one person to manage things, more variety of content, better content control (group review / editing of posts comes to mind). Sounds fun, eh?
While keeping up a blog of my own doesn't seem like something I'm destined for, helping edit, setup and shape something like a group blog actually fits with my personal and professional direction nicely. At work I've been a Development Lead for the past half year. My chief responsibility is technical soundness and quality of the work we deliver. More time consuming but less to the point I try just to keep everybody fully allocated so hourly contractors don't have to take unpaid days. The main part of that job makes me feel confident, as well as excited, about heading up a group blog - not as the lead contributor but as the editor cum site admin perhaps.
So, open forum - who among you would sign on to something like that? One of the thoughts I have is the ability to use a writeboard style group document editing tool (maybe Google Docs or Writeboard itself to start) to allow group editorial review of proposed posts. The aim would be building each other up, helping each other make the best of an idea. Mark and I have used this approach in the past on some of the most popular articles here. Generally Mark would have the idea and assemble a skeleton article and I would come along and put meat on it. We'd both work it over a few times till it was something we were proud of and BAM - popular, interesting, well documented articles with what I would consider all the important pieces - visual aids, code samples, demo, etc.
I don't know about you, I suspect at least a couple of you are, but this is very exciting to me. Any takers? I think a good place to start is to ask who among you would be interested in contributing one or more articles a year? This is completely open to ideas, suggestions and feedback. |
| Read / Add Comments (2)
|
|
Poll: Should I Keep This Up?
|
|---|
| Fri 21 Dec 2007, |
|
Valued reader - I have a question for you and it is not at all rooted in any self loathing. Should I keep this site active? At this point, it's not generating any money for me as I don't have an abundance of time to handle freelance work and I stopped putting ads on board (which did little for us anyway.) Content updates have been fewer and fewer as I spend less and less time in the roll of Developer and more time in the roll of Dad at home and "Lead" at work. Is it worth it to you? Do you find this to be a useful reference?
Last November I got hit for about 1.6 GB of traffic, enough over the limit to cost some serious cash, at least in terms of what I have budgetted to maintain this site. So far as I know, most of this is people with feed readers pointed to the RSS feeds and it doesn't really reflect actual readership if I'm reading the (spotty at best) stats right. So, I need your help - should I keep the site and the library behind it up? Do you find it useful? Would you miss it?
I have two thoughts at the moment. I've been using Bloggar for my other writting interests and flickr for my photos. I would probably keep a running tech / industry related blog up but it would not be backed by a Domino database full of code samples and useful comments by my dear readers. It would just be a virtual white board with my scraps on it. I had thought about looking into exporting the site as flat html as I have some access through our good friend Mark Barton to a simple web server that could host the content staticly, but static means not searchable unless I want to build a PHP replacement blog engine (which you know I'd have to for my own satisfaction).
I guess a third thought is that I could make the .nsf file available on CD-ROM for anyone who wanted to have the library available locally. Some limits may apply if I do that though as it is all copyrighted content (aside from things I've reposted from other sources). So there would have to be some consideration for license if I do that. And to go to the bother I would probably need to sanitize the database as there's a lot of tripe in it that is just a waste of space.
I guess a fourth option is I could publish it via Lulu as a book. That might be fun if I took the time to edit the entire thing and put together the layout. Probably not worth much beyond historical interest as much of this blog has been experiments, dated techniques and technology.
Fifthly... I suppose I could turn requested favorites into PDFs and distribute those to anyone interested. I guess there are plenty of options that amount to me not paying monthly to keep it up anymore.
Yes - I do have a discount from DDN and space on the dedicated blog server, but I also have maintained a production account there to host a couple of sites for family "customers". They'd have to retool to something free or other hosting service. Bottom line is I need to get the bandwidth related charges off my back and it's probably best to just drop the site while I'm at it if there's no interest in the gallery. My interest is coming to an end, to be honest.
Thoughts are appreciated. I'm not looking for a pep talk or fishing for someone to host it for me. I think I need to move on and probably will with a guilt free conscience if there's not strong interest from the readership in keeping it on line. Not to sound artificially altruistic, but I keep this here only for me in a small part - mostly I keep it here for the value I perceive it brings to you, the readers. Is that perception accurate? |
| Read / Add Comments (9)
|
|
IdeaJam: Grid Enabling Domino
|
|---|
| Tue 11 Dec 2007, |
|
What's the number one problem with really complex Domino apps? Response time. Even with a beefy box... combine a half dozen Web Query Open agents and a few thousand visitors and you have one hot server on your hands. I think it would be a great addition to the Domino server if it could be configured to run on a distributed computer grid. There are similar solutions for Apache for handling memory and bandwidth. Domino needs to play in this space to become the Corvette web server (compared to the luxury yatch that is WebSphere).
|
| Read / Add Comments (0)
|
|
Journal: Managing Resource Levels
|
|---|
| Wed 28 Nov 2007, |
|
My most recent experience as a near-manager resource has been the daunting task of providing input to the worst question - which resources to let go when work slows down?
Work has mostly been about keeping people busy, moving documents between parties, ensuring quality of said documents, reviewing solutions and making sure balls keep rolling. Just recently, our forecasting indicated we would be running out of work for a couple of people. This caught us by surprise when two large projects were cancelled. The obvious answer for the client was to trim contractor resources. As a contractor, I am never surprised when this decision has to be taken and try to be prepared as possible for it to be me that is shown the door.
So, it was with understanding for all viewpoints that we consulted our client manager concerning who to let go. Fortunately, we had one resource whose contract was ending soon, by choice, and it seemed logical that this person should be the first let go. It wasn't the best timing for said person, but they understood and were happy enough to get on down the road to better things (a spouse, in this case, living a continent away). But, there is an underlying issue yet resolved. When we let people go, it is often a difficult decision to make if performance is good. You never want to let a strong resource walk away if you can help it being that it's so difficult to get good resources in the door to begin with.
So, why would a well oiled machine - a smoothly operating process - ever have a surprise that necessitates letting people go? Part of it has to do with load balancing. We are in an environment where there are a LOT of jobs needing done. But jobs need to be funded, approved, assigned, and the proverbial ball started rolling. So there isn't a constant stream of incoming work. I liken it to audio frequencies from different instruments. Occasionally peaks converge and result in louder volume (more work) and occasionally the reverse is true and troughs converge (no work). If work is being well managed and planned, an organization should be able to load balance this work so that when some projects slow down, filler work can be substituted. This keeps the highly skilled resource busy with work that is billable to a project rather than riding the bench or taking the long walk of no return.
I think like many environments, we are presently at the whim of the customers - everything is treated as high priority and done as fast as possible. Some projects, though, do enjoy a "high priority" designation. At the moment, the applicable bill rate is no different for "high priority" than it is for low or medium projects. A bit of brilliance on the part of a PM colleague of mine was to start tacking on a premium charge rate for the high priority projects. Obviously, contract resources are still paid the same rate, so any overage is basically held in account by the development team to provide the ability to pay resources during low demand times, should they crop up unexpectedly as they did recently. It's a bit like having a savings account for a rainy day.
The net positives here are two-fold. We have some future buffer if needed, but also, high priority work does have a disrupting factor where by other jobs are pushed aside, disrupting the flow and increasing the likelihood something is missed or forgotten. By charging a premium, a disincentive is created which might cause the customer to reconsider the priority of their request. If they accept a medium or low priority in exchange for a normal rate, we then can load balance the work physically and do it as we have time. In either event, we either have the work to do to keep resources busy, or we have the funds available to pay them if we can't. It's a great idea I wish I could say I thought of. :-)
It does, however, take some time to implement. A buffer fund has to be built up over time. So, we are still short on good resource, albeit only a few months ahead of schedule. Next time we have an unexpected trough, we should be a bit more prepared and able to maintain our hard won skilled resources. |
| Read / Add Comments (0)
|
|
Journal: Managing Off-Shore
|
|---|
| Tue 13 Nov 2007, |
|
For the past month or so I have been managing a large project on which upper management dictated we make use of off-shore resources. I have had misgivings from early on. Some have born out, others have pleasantly been dispelled. I have learned a thing or two about working with the guys from Delhi though, which you might profit from should the same fate befall you.
There are two paths by which you might like to send work off shore. Outsource the entire effort, from design to delivery, or outsource the bits of work you have least time for. Both scenarios present potential gains (predicated on a favorable rate of exchange and bill rate) but each also has pitfalls.
When outsourcing the entire project, Quality Assurance becomes your chief concern. Being disconnected from the design/build process, the check point is the QA before delivery to the customer. If you do not have Terms and Conditions mandating penalties for missed quality benchmarks, it will be too late to do anything about problems by this stage. In our situation, I have one project coming up with the off shore team which will fit this model. To guard against eleventh hour catastrophe, the design process we have worked out together will go something like this.
- Review requirements together, point by point, and ensure mutual material understanding.
- Communicate in house coding standards and request positive verification of understanding as to how they will be applied to the requirements. Likewise, any design guidance the project may require (environment specific design considerations come to mind) should be imposed
- Hand off to off shore team for design
- Checkpoint: review design for standards and design guidance compliance, provide feedback, iterate till acceptable
- Authorize build to begin. NOTE: it should be made very clear up front that build does not commence until this point
- Post build Checkpoint: code review to ensure standards compliance and design guidance is intact. Unit testing should be reviewed and verified at this point as well (ideally it has been documented for you by the off shore team)
- Resubmit to off shore for any rework, iterate until acceptable
You will no doubt notice a lot of extra communication. This is one of the hidden costs - full rate on shore resources spend as much time as they might to execute on their own in simply ensuring things are going smoothly with the reduced rate resources. As yet, we have not executed this approach, but I am hopeful it will work better than what we have tried so far.
And that would be the piece-meal approach. In my past two experiences, even with extremely detailed design documents created on site, verification that the designs are not ambiguous and are clearly understandable to a native of Delhi, and all the help we could offer in execution, things were still not completed accurately.
Diagnosing the problem remains to be completed, but my current suspicion is that apathy comes with distance. By that I do not mean the geographic distance but the distance between the designer and the coder. My belief is that when one person designs and one person codes, the coder has a tendency to give up when they run into problems all too easily. Also, when one person designs something and employs their pet code libraries, the coder has a lot of learning to do to understand how the code libraries benefit him or her. A lack of familiarity, to be expected on initial projects, can cause a lot or rework and redundant communication to be needed. Finally, I believe a certain amount of professional pride needs to be tempered early on. In our case, this could have been done by clearly stating the limitations imposed on our designs by our environment and the reasons for design decisions and standard practices we have adopted. Getting this out early might prevent the "I'm a better coder than this designer" type feelings. I think we had at least one or two instances where apathy for the overall solution stemmed from this sort of thinking.
Overall, we have not saved any cost yet. It takes time to get an off shore team in sync with on shore design practices and standards. Unless there is a strong will to establish the relationship somewhere in the organization, the early difficulties will no doubt make it seem fruitless. I am hopeful we can succeed in eventually turning this into a working relationship as it is what my client wishes and I wish to please my client. Personally however, I believe the endeavor is ill advised. Perhaps time and experience will prove me wrong, but my initial instincts are so far proving true. |
| Read / Add Comments (3)
|
|
Technology: VMware Instant Domino Server
|
|---|
| Wed 31 Oct 2007, |
|
If you've been tuned in, you know I've been looking to add a Domino server task to my Mac Mini. No luck there just yet... Darwine needs a lot of twiddling and the VWplayer for linux doesn't like FeeBSD. Mac-on-Mac is a non-functional alpha and Bochs and Qemu need to be built to run... I was hoping to not need to build something, but I might eventually. SO. Presently, I decided to install Domino 8 on my Win 2k virtual machine I keep handy for testing with IE 6, Opera, Netscape, etc. So far, it runs just fine.
One thing I haven't gotten straight yet (for lack of administrator sense)is cross certifying an ID from one domain to the one I just created. No doubt due diligence will see me through, but for the moment, just copying the files to the data directory seems to take care of deployment for testing. I was able to test my web apps thusly by just opening up the server to Anonymous and * across the board in the server document. It would be good, though, to have proper access so I can replicate changes up to the server or ever work directly on it.
This has really made me appreciate VMPlayer. I can restore and hibernate my domino server quickly and easily when needed without jumping between machines via KVM. For quick development work, this is so far the best setup for cheap. |
| Read / Add Comments (0)
|
|
Mac: More Flavors
|
|---|
| Wed 24 Oct 2007, |
|
It turns out running Domino 8 on a Mac mini is not going to be a trivial excercise blessed by uncommon grace. My research today led me to a nice list of Virtual Machine wares on Wikipedia which I thought was worth sharing.
What I have figured out for sure, so far, is that the Domino 8 linux distro checks the host architecture and is pretty much written for a handful near and dear to IBM: os 390, zlinux, linux, redhat and some flavors therein. I tried being crafty and iserting a line in the install script: NUI_ARCH=linux so it would default to that install scenario but the install just fizzles out on me.
So, trying something much more straight forward, I'll be trying out a couple open source VM clients to see if I can get something going yet. I hate to run a VM to run an OS to run a server... no doubt it's not going to rock. But, better than nothing considering it's only going to be for dev/test work I do while working from home. |
| Read / Add Comments (0)
|
|
Mac: Mit Domino?
|
|---|
| Tue 23 Oct 2007, |
|
Question for the audience. Anybody got Domino 8 for Linux running on OS X? Natively? I havn't tried it yet, but I aim to. Download in pro-o-o-o-ogress. Taking a while for 768MB at ~95 KB/s. Any way, the hope is to leverage my Mac-mini further as a little dev server. If not natively, I wondered about using parallels. Any one try that?
And sorry for lousy blog content consisting of a question. "True wisdom consists in knowing that you know nothing." At the moment, I get the ID 10 T error when I stare blankly at my Mac, so shared experiences (or links to them) appreciated.
Peace! |
| Read / Add Comments (2)
|
|
Tools: Script To Help
|
|---|
| Sat 13 Oct 2007, |
|
As my patient friend Mark will tell you, I've been extremely busy working on something that I started three times and failed at. It's for a customer but I ran out of time on their budget and decided to finish it on my own time, both as an act of good faith and customer service as well as an opportunity to make the lives of Notes programmers everywhere a tad bit easier. In fact, some of my closest friends have seen hints of this already when I circulated a preliminary XML transformation of an LSS file. Mind you, this is far more detailed than the output of a DXL transformation.
In the image below you can see a preview of the final state - Help documents in a familiar format. That has been the overall aim of this little project. I wanted to be able to take a library of existing code, and from it, generate help document stubs that could form the basis of support documentation and future reference documentation for developers not familiar with the code.

In the setting I currently serve, this will be a huge bonus as they have a couple thousand apps with well in excess of 2 million lines of code. Not that dumping it all through this tool would be of use, but the more complex constructs would be illuminated sufficiently to make support possible in some cases where it is currently a whimsical suggestion.
I hope to have the tool cleaned up enough to show you more in the near future. For now, my apologies for having only an image to share at the moment. |
| Read / Add Comments (3)
|
|
Tip: Mac-Mini as Server
|
|---|
| Tue 2 Oct 2007, |
|
I was one click away from pulling the trigger on purchasing a decTop computer from Data Evolution when I looked down at my mostly unused Mac-Mini. Why spend $99 + $53 shipping when I could... just plug my USB printer into my Mac? It's running FreeBSD, stands to reason it's using CUPS as well.
Turns out, OS X does use CUPS, but somehow, Apple seems to have screwed it up. What is painless on Ubuntu is stupid difficult on OS X. Fortunately, I found a great tutorial covering all you need to know to set up a printer for sharing via your Mac-Mini with native driver support.
Mind you, I spent an hour trying to figure it out myself before coming to that blog. Hopefully one more link to it will up it in the Google page rank. :-)
The Mac-Mini works great as a server. It has super efficient power consumption and the built in wake-on-LAN pretty much means it is our new always-on server. Mac even has Apache installed natively so next I'm thinking of setting it up as our in house web server as well. |
| Read / Add Comments (0)
|
|
Hardware: Good Printer Buy - HP C4280
|
|---|
| Sat 29 Sep 2007, |
|
We're preparing to upgrade our print server here in the home office to an always on, low power device. Said device will save us a bundle in electric usage over time and make printing faster from anywhere within the building. I'll talk more about that later. But as the new server will not sport a parallel port, I thought it was a good time to upgrade our old ink jet printer to a newer multifunction device. We were able to do so for a fraction of the cost of the one we are replacing.
Staples is currently carrying the HP ColorSmart C 4280, featuring Vivera HP Inks, for $98. It has a couple of really nice features. One that we saw before taking it home - you have the opiton to buy 4.5 ml or 18 ml black cartridges. Similarly, color cartridges are available in 3.5 or 12 ml sizes. This is a nice cost saving feature. If you plan to do a lot of printing, you can buy the larger cartridges for approximately 2 - 3 times the cost and get 4 times or better the ink.
This handy device also features one touch color copying as it has a built in 8 1/2 x 11 flatbed scanner. Setting up the printer lets you try this out as it prints an alignment page, scans it and copies it as the first complete test of the system.
A bonus, we run Ubuntu on our print server and the print driver database has drivers for the HP C4100 which work just fine. It's also a darn quick little printer, spitting out a black and white document (from pdf) in less than 3 seconds.
If you need a USB printer or just want to upgrade, for the money this seems like a good option. The only change I had to make here in the office was put it on top of a file cabinet rather than on the shelf it was on as with the flat bed scanner we need easy access to the top as well as front.
I'll update this post if I find any down sides. |
| Read / Add Comments (1)
|
|
Announcement: Back on the Air!
|
|---|
| Thu 27 Sep 2007, |
|
Update:Comments are currently off line due to a configuration issue stemming from the recent system restore. The problem should be remedied in a day or so.
Well, that was fun. A few days ago, some of you may know, the blog server at DDN had two drives in the array go belly up. They were quick to stand up a backup server but in the mean time, I managed to delete my home directory on the FTP server and was then unable to upload my backup of the website. But now, things are somewhat back to normal. Hopefully the backup server will hold up! :-) |
| Read / Add Comments (1)
|
|
LotusScript: superString Class
|
|---|
| Wed 19 Sep 2007, |
|
Update:Added Prepend. v 0.0.8 10/4/2007
Update:Added a Trim wrapper that operates on the buffer. v 0.0.7 10/3/2007
Update: My appologies, some comments were lost when the Blog server took a dive this past week. Sean Burgess had previously commented and a coworker provided an update to the code, which appears below. Current version is 0.0.6 as of 9/28/2007.
Here's a little something I've been working on. It's a script library that offers a few string functions that we would otherwise be able to overload onto the Script data type if it was an actual object built on a base object like in Java, rather than a primitive.
I included some of my favorite String operations from JavaScript for the most part and added a few others I find handy. The class uses a string primitive as a buffer, which has an upper limit of 2 GB. Should be plenty for just about anything you want to do with a String.
Highlights:
- .Slice
- .Length
- .Append
- .pos
- .subString
- .Strip
- .Contains
- .ToList
- .setText
- .Text
Classes are hard to stop playing with once you start. If nothing else, this should serve to illustrate how handy a class can be for even mundane tasks.
'superString:
Option Public
Option Declare
''' Freely Distributable with copywrite intact
' Copywrite 2007 - Datatribe Softwerks, Ltd. - Jerome E. Carter, II
''' v0.0.8 - Jerry Carter 10/4/2007 - added Prepend Subroutine
' Should have been obviouse to begin with, but I didn't think of it till I needed it!
' prepends the supplied string to the buffer
''' v 0.0.7 - Jerry Carter 10/3/2007 - added Trim Subroutine.
' Simply wraps the buffer in the Trim command. Reduces complexity of
' code needed externally to perform the operation against the class.
''' v 0.0.6 - correction provided by M Burgo
' Substring was incorrectly finding the last instance of the suffix rather than the first
''' v 0.0.5 - Jerry Carter - 9/19/2007
' added Sub Strip which operates on the resident buffer. end result available via Text method.
''' superString - by Jerry Carter - 8/31/2007 - v 0.0.4
' Notes base data types are not derived from an object but are static final primitives
' therefore we can not declare a class like Public Class superString as String and be able to extend String
Class superString
''' Private Members
Private buff As String ' strings are limited to 2GB - should be sufficient for most things
''' Constructor
Sub new (initVal As String)
Me.buff = initVal
End Sub
''' Public Methods '''
'---------------------'
''' Append '''
' Adds the inbound string to the end of the buffer
Public Sub Append(inputStr As String)
Me.buff = Me.buff + inputStr
End Sub
''' Prepend
' Add the inbound string to the beginning of the buffer
Public Sub Prepend(inputStr As String)
Me.buff = inputStr + Me.buff
End Sub
''' ToList '''
' Breaks the buffer into an unordered list, removing the delimiter in the process
Public Function ToList(delim As String) As Variant
Dim tmpList List As String
Dim tmpArr As Variant
tmpArr = Split(Me.buff,delim)
Dim i As Integer
For i = 0 To Ubound(tmpArr)
tmpList(Cstr(i)) = tmparr(i)
Next
ToList = tmpList
End Function
''' Strip
' Removes the supplied string argument from the buffer.
Public Sub Strip(stripStr As String)
Me.setText Join(Split(Me.text,stripStr),"")
End Sub
''' Text '''
' returns the buffer as a string
Public Function Text() As String
Text = Me.buff
End Function
''' Length '''
' returns the total number of characters as a Long
Public Function Length() As Long
Length = Len(Me.buff)
End Function
''' SubString '''
' returns the string appearing between the prefix and the suffix
Public Function SubString(prefix As String, suffix As String) As String
Dim pstart As Long
Dim sstart As Long
Dim pend As Long
Dim strEnd As String
pstart = Instr(Me.buff,prefix)
pend = pstart+Len(prefix)
strEnd = Mid(Me.buff, pend)
SubString = Left(strEnd, Instr(strEnd, suffix)-1)
End Function
''' Slice '''
' works like java string.slice(startpos,endpos)
Public Function Slice(dstart As Long, dend As Long) As String
Slice = Mid$(Me.buff, dstart, dend-dstart)
End Function
''' SetText '''
' replaces the buffer with the inbound string
Public Sub SetText(newval As String)
Me.buff = newval
End Sub
''' Contains '''
' Simple test to see if the parameter is anywhere in the buffer
Public Function Contains(strIN As String) As Boolean
If Instr(Me.buff,strIN) > 0 Then
Contains= True
Else
Contains = False
End If
End Function
''' Pos[ition] '''
' returns the position of a substring is a Long
Public Function Pos(strIn As String) As Long
Pos = Instr(Me.buff,strIn)
End Function
'''Trim'''
' performs LS trim on the buffer
Public Sub Trim()
Me.buff = Trim(Me.buff)
End Sub
End Class
|
| Read / Add Comments (3)
|
|
Policy: Regulation
|
|---|
| Tue 11 Sep 2007, |
|
A good topic came up on Chris Linfoot's website when he made a comment that regulation, e.g. industry regulation, may have kept Microsoft from invalidating thousands of Windows licenses via the WGA authentication tool. I took issue with that idea, being a person who believes in free market economics, and wrote a lengthy reply that didn't get much reaction. I thought I'd post it here for further comment because I do think this is an important topic.
But, if I may, I did want to take issue with the notion that regulation is the answer. It goes without saying that regulation brings important safe guards to the public, and in many cases it is imperative that regulation be in place and in force. Good examples are measures. Auditors here in the US, county by county, certify and seal petrol pumps so that we as consumers know we are getting a gallon when we buy a gallon. This is a pretty indisputable and obvious piece of regulation.
Then there is social and economic regulation. Before I dive into this, yes, I'd love to see MS change - but let's look at what makes for the most effective means. If I have government regulation on free-market exercises, there is a cost associated with it either in enforcement and monitoring (a regulatory model) or in litigation (a jurisprudence model - ala the antitrust suits brought against MS by the government). It's easy to declare that the regulated body should pay that cost, but it is always passed on to the consumer.
Now, not knowing MS's exact internal financial details, I'm relatively sure we are paying the price today for, in part, the anti-trust legislation. We would likewise be paying the cost today for regulation that may have preempted the need for litigation in the first place. Where ever there is a business, and a business has expenses, a business has but one way to cover said expenses - through incoming revenues. So, I think it's fair to say regardless of model, we pay in the end - even if we say the Government should pay the cost - then it comes down on the tax payer and I'd rather the business pass on the cost rather than the government appropriate funding to cover it being that they are much less efficient that entrepreneurs.
So, my two p would be that regulation in any form is not the answer. The answer is free market consequences - namely loss of market share. This is starting to happen for MS with Vista. People are finally fed up with it, so the adoption rate has failed to deliver and MS is feeling it. While I love to gripe and complain about how MS has screwed us over time, they have screwed themselves royally with Vista. This is great because with a decline in market share comes a decline in perceived value and with that comes a further slide in demand. Eventually, MS only choice to recoup will be to cut prices or start delivering like the multi-trillion dollar firm they are. In that case, we win. Capitalism at its best.
Right now in my lovely state of Ohio, the socialist governor is making noise about returning our public utilities to regulated rates. Currently they are unregulated and by the end of 2008 or 9 the blanket coal delivery contracts will expire, driving up the cost to produce power. The argument is that the government should restore utility regulation practices because no competition has arisen to challenge the existing deregulated monopolies.
What he fails to mention or address is that even though rates are unregulated, there are many other plethora of regulations on an energy producing utility. Despite labels, it's not a free market economic model. The cost to entry is so high and the returns so meager and protracted that there is not a rush of investment capital to attempt to raise up any competition. So, would further regulation make sense in this case? On the one hand, utility rates are bound to rise and rise suddenly in the near future. On the other, if the rates are artificially suppressed, someone will have to cover the actual cost to produce the energy. Either the fuel suppliers will have to lower their prices to compete for the now capped contracts, potentially forcing utilities to consider cheaper off-shore sources, or the government will have to subsidize somewhere along the supply chain.
In either case, the people who consume the power will still pay the price.
Personally, I'm inclined to let prices go up and watch the innovation ensue. Just look at the innovation all the global warming hype has produced. Just imagine the fevered pitch of inventiveness and resourcefulness that will result if the cost of power rises steeply. Either option is a market force - the question is which one results in the most positive return? Would you rather have one large company trying to figure out how to solve the problem or millions of individual consumers?
My money is always going to be on the consumer - they have more at stake. Whether they choose to invest in a solar array or to switch to Linux, they are making a choice that promotes free market growth rather than being insulated from the pressure to innovate on their own from a nanny state.
|
| Read / Add Comments (2)
|
|
Integration: Coverflow - powered by Lotus Notes
|
|---|
| Fri 31 Aug 2007, |
 Technical Lead: Mark Barton Written by: Mark and Jerry Edited by: Jerry Carter Sniff Test: Alfie Sponsor: Flashloaded

Web 2.0 is still fresh on our lips and Web 3.0 is already attempting to gain some buzz. One thing the emerging future of the web is sure to bring is drop-dead gorgeous User Interfaces that would have been excused as science fiction 10 years ago. With the dissemination of good design practices modeled by the iPhone, and before that Mac OS X, web application designers are following suit by creating stunning visuals that are intuitive to use as well as functional. The barrier between what we can imagine and what we can do is getting thinner by the hour. But, getting it all to work is still a bit of string and a pinch of chewing gum behind the scenes. Evidence suggests that even the bleeding edge will reach maturity soon, as evidenced by the not-quite-three-year-old technologies utilized below.
Overview
The popular and beautiful Apple coverflow UI effect has been “covered” by the guys over at flashload.com It’s good enough to charge money for, and they do. But it’s a small charge for the component (and, full disclosure, we get a smaller commission) and well worth the price in visual impact. Even those dreary old corporate applications can use a brilliant interface now and again. Mark came up with a couple ideas for usage: Application Libraries with screen shots, Team Directory, Book covers etc. After kicking it around in my own head, I thought the best use is a visual directory. ;-) Alfie, when asked, wagged twice and turned about, summarily receiving a treat.
You can check out the demo and see for yourself this beautiful control in action (download link at end.) As per usual with the real “mad scientist” projects we often post here, Mark has pulled together Domino, Ajax (via mootools, JSON, and Flash to create a Domino powered, data driven mix of technologies.
Kibbles and Bits – |