|
Timely speech well worth the time it will take to read.
The American Way
by Alan Korwin
May 21, 2009
Author's note: Seems I touched a nerve with this uplifting piece about what makes America great. Many asked for a copy of the speech. Here it is. Permission to circulate gladly granted.
I was fortunate to be invited to a meeting of thirteen deep-thinking well-educated men recently, and for two-and-a-half hours over lunch we examined some of the critical issues of our time, from our perspective.
The question came up, "What Is America?" and I ask you today, "What is America?"
It seems to me this is a question without an answer, because America is as many things as there are people to define it. It is a complex and huge topic that could fill encyclopedias and not scratch the surface.
But it dawned on me that a few fundamental principles of America stand out. These are the principles that have made America great. These are the reasons America is a shining beacon of real hope for the entire world, such as the world has never known. These are guidelines that people have adopted in their hearts, instilled in their families. These are understandings that drive people from their homes across the entire planet and to our borders. These fundamental principles are The American Way, and this can be described.
I've been a champion of The American Way for as long as I can remember, and way before I even knew that this was what I was championing.
The American Way is hard work. It is keeping the benefits of your hard work. It is ownership of private property, and the sanctity of a contract between people.
It is the idea that you and you alone own the fruits of your labors. It is the idea -- of paramount importance -- of self ownership. You and you alone own and are responsible for you. It's a tautology. The king doesn't own you. The state doesn't own you. You own you.
This is not a right you demand, or get from the state, or earn. It is a fundamental right of the fact that you exist. It is a right that comes from your Creator, by nature. It is the natural order of things. And it is honored here like nowhere else -- that's why we've achieved so much.
The American Way is the idea that all you Americans can make something of yourselves, because you are free to do so. This is the great magnet that draws people here. In 2006, net immigration into 78 nations from Albania to Zimbabwe was below zero -- people were fleeing. In America in that year, more than two million people, risking life, limb, family and arrest, walked across blinding miles of blazing snake-infested desert to get here. That says something. Half got caught and sent back. Half snuck in. Those are problems for another time, but that raw drive speaks volumes about what we have accomplished that their native lands have not.
--
In one of the documents that helped start our country, Wealth of Nations by Adam Smith, published in the year of our founding, 1776, he described principles that drive The American Way (although it was too early for him to call it that). Wealth of Nations, in the country's infancy, identified what has led to unprecedented opulence, prosperity abundance, opportunity and freedom that is The American Way.
Smith recognized that private property, free trade, self interest, limited government and division of labor were the basics of capitalism and cornerstones of personal freedom and economic security.
--
So these are the factors that make you and me special, and make the land we live in special, and attract many non-Americans to this special place, seeking to be Americans. But along with the teeming masses yearning to be free are undesirable miscreants seeking to leach off our success, eat out our substance and do us harm, who must be resisted. Col. Jeff Cooper put it plainly: Some people prey on other people. I don't like it. That's just the way it is.
So I ask you: Do you intend to preserve, protect and defend these special attributes that make us what we are? You bet we do! Will you resist the constant forces that seek to diminish, denigrate, defeat and delete these special attributes? You bet we will!
The American Way can be summed up, not perfectly, and not for all cases, but it can be summed up for our purposes: The American Way is the idea that the people are the rulers and the rulers are the servants. Have we strayed from this? Yes. Does that make it less true or less valuable or less right? Not at all.
The American Way is the rule of law, individual responsibility and government of limited delegated powers only. It is free markets, free enterprise, low taxes, entrepreneurship and capitalism. The American Way is moral and just and yes, has a strong religious underpinning, whatever your religion may be -- so long as your religion does not include forcible coercion of others. It is "Do unto others as you would have others do unto you," but definitely not, "You better submit to our way," no matter how strongly convinced that your way is right.
Convince people to follow and you follow the precepts that drive much of what we are. Force people, and you are by definition the enemy of The American Way. Neither political party has a really good score card on this.
The American Way is what has generated the most opulent, abundant, prosperous, generous, productive, creative, inventive and loving society the world has ever known, light years ahead of whatever is in second place. Our politicians have lost support because they've abandoned our goals.
The idea that such a land could even exist was beyond the comprehension of earlier societies -- the ideas that made it possible had not been invented yet. The uniquely American ideals of freedom were born here. They were birthed by a lucky confluence that skeptics might say were coincidental. True believers might say it was destiny, or divine providence. And who knows who's right. The important thing is that it happened.
Our natural geography, limits of technology, self-selected pioneers and thinkers in a brave new land, the abuses and usurpations of a tyrant, the homogeneous nature of voluntary leaders, simultaneous existence of so many geniuses in one place and one time, an abundance of natural resources, existence of such vast expanses of untapped wilderness -- all contributed to the damn lucky creation of the Declaration of Independence, Constitution and Bill of Rights that set us on our way.
When people are turned free to do what they will, they do what we have seen here. Acting in your own self interest, you persevere, plant and harvest great seeds of innovation and wealth. And great wealth results from the work of your loins. True Americans, recognizing the great blessings that have been bestowed upon us, share those fruits, like no society before us has ever done. Americans donate and share more food, more wealth, more health care, more humanitarian aid, more power of righteous self defense, than the world has ever seen -- without exception.
And what of guns? Guns, guns, guns, they are so American. All nations have guns, but only in a scant few do the people have guns. And only in America is there a wildly western tradition of a gun for everyman. Only in America is there broad understanding that guns save lives. Guns stop crime. Guns keep you safe. Guns deter evil. Guns are good.
Colt, Remington, Winchester, Browning, Smith and Wesson -- is it just coincidence that Americans have guns, and use guns, and have invented some of the finest firearms ever known -- and the fact that America has been the freest nation on earth? It is not coincidence. Guns are why America is still free.
We know and easily accept that you can't let slaves have guns and expect them to remain slaves. Does that mean that if the forces of darkness were to succeed in their endless effort to disrupt our long-standing balance and disarm peaceful, innocent Americans, that America would be devolve into slavery? Is it safe to confiscate guns from the innocent? I'm not eager to find out!
Why is it safe to give all those dangerous guns to other people, just because they have government jobs and are paid with your tax money? Why can they be trusted any more than any of you who actually earn the money that pays them? What magical writing says guns are OK but only if rulers have them all? Where does it say that a man in government is more trustworthy than a man in his own home?
We know that just the opposite is true. It is our resistance to the bad idea that only leadership should have power that put power into the hands of the people and created The American Way. It is the understanding that the power to govern is only legitimate if it comes from the consent of the governed. When the power to govern is disconnected from consent, you have classic tyranny, no checks on leadership, only those latitudes leadership arbitrarily decides to offer. That, my friends, is the Anti-American Way.
Guns are indeed why America is still free. Guns in the hands of the masses help assure that leadership cannot just run wild. It stops them short. Guns are power to the people.
Slaves must be disarmed. Americans must never be disarmed. A disarmed docile subservient America would cease to be the magic magnet it is.
Now, there's corrosion in the aging machinery of The American Way. Jefferson's warning that the natural tendency is for liberty to yield and government to gain ground is true, and 200 years of yielding and gaining have taken us to a strange place.
Our great strides forward are at grave risk today. The idea of true human freedom, freedom from the state, freedom from arbitrary rule, appeal to a power higher than any government or man can exert -- these are what give us what we have. Today, far too many people, influenced by dastardly powers, reject the very things that give them the power to speak out against us.
We are now infested with czars -- a drug czar, an education czar, an environment czar, and now even a border czar. Czars are horrors yet we're embracing them, welcoming them into our midst. Czars are toxic waste, destroyers of freedom, autocratic tyrants who have no place in our system. Yet they are praised and promoted with glee by our failed "news" media. Tolerance of czars is a repugnant result of the insidious success of political correctness. Czars should be removed and replaced with representatives.
But our representatives need to be replaced with representatives, because they've long since left the scene.
We have reached a point where our laws are written by secretive government operators and clandestine conspirators, creeps working in deep basements without the light of public scrutiny, who draft endless edicts that cannot be read by a person of decent education. The edicts are thrust upon our elected hollow men, who are coerced and intimidated into signing before they have read what they are handed, and saddle us with unacceptable, anti-American crap whose contents they don't know.
Think about that. The laws are now written by people you don't know, can't name, can't see, signed by people without reading or understanding, and then held against you at the point of a government gun and prison. That, my fellow Americans, is corrupt. It is tyrannical. It is intolerable.
Our elected participants should fall to their knees in shame and tears for what they are complicit in forcing upon this great nation and its people. But they show no shame. They justify, and excuse and continue. How much further must that travesty go on before a few heads are on pikes on the K Street bridge? A bridge, by the way, actually named after Francis Scott Key, the author of the Star Spangled Banner.
Tyranny has its appeal. Especially in the young, a desire to follow rather than lead burns hot. It's easy to be sheep, to obey, to stand in line, take what's handed you, care not for the higher values. They are far from the roots that got this tree growing. And their schooling, run by the very government that schooling is supposed to tame and keep in check, encourages the collectivist antithesis of The American Way.
Freedom is hard work, but worth it. Socialism, the Anti-American Way and our arch enemy, seems easy, because it runs on other people's money and sweat. Too many Americans today have had their values turned upside down and actually crave socialism, or can't even tell the difference between craven collectivism and freedom's liberation.
________
We have our share of difficulties, and our ability to surmount them looks increasingly grim. And when you're the big dog, as freedom has made America, people and groups and nations and even ideologies nip at your feet.
The have nots, the do nots, the know nots, freeloaders and the useful idiots wound up into a frenzy by people of ill will and a disgraceful media, seek to take you down. Seek to hurt you. Seek to diminish your accomplishments, cast aspersions on your greatness, work to undermine your success, mean-mouth your achievements, deny, rewrite and twist history to say it isn't so. They would rather pick at the nits than recognize how far America has drawn humanity out of the primordial goo.
Americans know our greatness. America haters hate our greatness. Too many of our own countrymen are misled, misguided, propagandized and brainwashed into hating -- blind fuming hatred -- of the very hand that feeds them.
America haters are the most pernicious, deceitful and hate-filled enemies of all that is good and prosperous and productive and beneficial to humanity. Too many exist within our midst, in our Congress and schools and newsrooms and within the bureaus of the czars. And they are clever, and devilish in their cunning, and left unchecked they will indeed ruin the greatest society the planet has ever seen, and then dance in the bloody gore of the havoc they reek.
If you believe in The American Way, if you have benefited from The American Way, if you want your children and their children and generations to come both here and abroad to bask in the glory of The American Way, then you need to rise up -- in all your righteous glory and indignation -- and denounce the siren song of those who would rend and ridicule what we have achieved.
You need to always say the obvious, and flatly refuse to participate in the debilitating socialist disease of political correctness! Don't joke about it, which reinforces it, denounce it! You need to substitute e pluribus unum -- "From Many, One" for the leftwing sickness of multicultural divisiveness. You need to know that belief in limited government, low taxation, delegated powers, free markets, free enterprise, gun ownership, religion and personal responsibility makes you a moderate not an extremist. Those who tell you to reject these core American values, they are the extremists. The extremists are calling the moderates extreme, and the media helps sing that song. Clinging to The American Way makes you a centrist, a moderate centrist. Only a vile and corrupt media could see it otherwise and then promote an upside-down cake of the truth.
You must loudly and publicly reject laws that violate the separation of Congress and the States, laws that violate the 10th Amendment by delegating forbidden powers, laws that grow government illegally, laws that use color and sex and language to force compliance, quotas, and deceptive non-equality. Equal treatment under the law, not enforced treats and benefits through income redistribution. Special treatment to favored groups is the behavior of tyrants. We are and must remain a nation built on merit and compassion, not central dictates and giving away your money to other people.
You can do all these things, and keep America at her heights of glory. You can for generations to come preserve all the things that made America great and this shining beacon of liberty it has been for more than two centuries. You need to ask yourself, of every proposal that comes down the pike from central government, state government, local government, media pundits and all others who profess to know what's right for you, "Does it maximize freedom?"
Does it maximize freedom, that's the question. That's the benchmark.
If it maximizes freedom, it's good. That's what our Founders knew. That's what got us to this great pinnacle of success from which we are now slipping. If it would do good but does not maximize freedom, it must be rejected. If government could take action -- but has no authority to do so, it must be rejected. There is always another way. The American Way.
Thank you, and may God bless America.
| | Read / Add Comments (0)
| |
Freedom: To Your Own Well-being
|
|---|
| Thu 21 May 2009, | |
I didn't think I had enough to say on this topic to warrant a blog but after three comments on the same post on facebook I decided I probably do. A junior Democrat is proposing federally mandated paid vacation for part time and full time hourly workers. Can you see the problem with this?
First, yes I currently get paid vacation. But this is the exception, not the norm for me. I've been in the labor force for 23 years total - 18 where I really had to manage my funds well. In that time, only the last year and a previous year and a half included paid vacation, usually a couple of weeks a year. The rest of that time I took personal responsibility to save my money and then take unpaid time off to get a vacation. Yes - shocking - personal responsibility and unpaid leave.
The reason the concept mentioned in the story above troubles me is that it is furthering our detrimental national sense of entitlement. As I said on my facebook post, "I'm taking aim at the concept of entitlements in any form. We aren't owed anything whether it be a bail out, a bonus, a vacation or a job. If we want something, we have two options that are reliable: hard work and the grace of God."
Aside from the moral issue of demanding or expecting an entitlement, which I find reprehensible, there's the economic issue. When the federal minimum wage increased, costs were promptly passed on the consumers as it started hitting the balance sheets of affected industries. You may have noticed the cost of a dinner out (in the US) has gone up since then. Federally mandating another expense to business will mean more cost - but in this case the obvious loser will be salaries. If I'm going to get a week's less of productivity but still have to pay someone, it's simple math to deduct a week of value from their salary and pay them less each pay-day to offset the cost. I could also pass the cost on to customers but with the forced decrease in productive days, I'm already going to be straining my service levels so that's probably not going to happen.
What's more, this is going to hit already hard-hit industries like manufacturing and services where hourly wage earners are concentrated. This my friends is one facet of the many faces of Obamanomics - when things are bad, do whatever you can to make it worse!
| | Read / Add Comments (6)
| |
LotusScript: Tags to Field Values
|
|---|
| Sat 16 May 2009, | |
Lots of people use this technique, but as usual, I didn't have time to hunt for a function today so I just wrote one that will convert [[tagged]] text in a string to a field on a document if available.
Function parseTagFromDoc(inputstr As String, doc As notesdocument) As String
On Error Goto eh
parseTagFromDoc = inputstr
' find [[vals]] in inputstr and convert to fields if available in doc
Dim tmpvar As Variant
tmpvar = Split(inputstr,"[[")
Dim tmpset As Variant
Dim tmpstr As String
Dim i As Integer
For i = Lbound(tmpvar) To Ubound(tmpvar)
tmpset = Split(tmpvar(i),"]]")
tmpstr = tmpset(0)
If doc.HasItem(tmpstr) Then
parseTagFromDoc = Replace(parseTagFromDoc,"[["+tmpstr+"]]",Join(doc.GetFirstItem(tmpstr).values,","))
End If
Next
Exit Function
eh:
Error Err, "Error in parseTagFromDoc: " + Error + " at " + Cstr(Erl)
Exit Function
End Function
I elected to get all values and push them into a comma separated string instead of the typical field(0) data grab just for completeness. As usual, this is here so I can forget how to write it (as long as I remember it's here) and for peer review. I'm sure there are better ways both in terms of speed and robustness. | | Read / Add Comments (0)
| |
Freedom: Live Free or Die
|
|---|
| Thu 14 May 2009, | |
Some good reading and clear thinking underpinned by a good grasp on 'isms and history, Canadian born Mark Steyn gives us a lot to think about.
Hopefully, after reading it, you'll be interested in doing more than just thinking. | | Read / Add Comments (0)
| |
Corruption: Society Sinks Further on Ignorance
|
|---|
| Mon 11 May 2009, | |
So, with Wanda Sykes joking that she hopes Rush Lumbaugh's kidney's fail (much to the amusement of the President) and supposed advisors to said president, including himself, calling ideas "dead" instead of debating their merit as well as disparaging out of hand anything else they don't want there to be public debate on, our society, here in the U.S., has once again reached a new low.
It used to be that cleverly roasting an opponent was good form. What passed for good form these days is nothing but low class brandishing of hatred. This is THE problem with progressive mainstream ideologues: Whenever they don't like something, they simply brand it with some ignoble nomenclature and quickly move on. "That's a dead idea" (usually in reference to capitalism), "that's intolerant" (usually in reference to some expressed moral foundation of western civilization), "that's backward thinking" (usually in reference to anything conservative, fiscally or socially that actually produces measurable positive results), "you're a global warming/climate change denier" (usually in reference to scientists with scientific data that contradicts the religion of the Gaia worshipers)... and on and on.
Apparently for the left, the only way to win a debate is to attack their opponent or shut down the dialogue with some invective or pronouncement of superiority and quickly move on. Folks, that's not solving anything. Take the economy for example. All the media will report is what they like - which is anything that promotes more government. I hear phrases like "bring us in line with Europe" - as though that was the point of leaving England in the first place, "people want to get more services from their government" and "people want to pay more taxes". Oh? The vast majority of people currently voting don't pay taxes... hence the injustice of a scaled (progressive!) tax system - of course more people will vote for people who raise taxes when more people don't pay those taxes and the services paid for with those takes benefit them!
I don't know how many economics lessons these folks need, but it's really simple - remove the incentive to produce, and people will stop producing -- even the most dogged of us. Redistribution of wealth is a downward cycle and you can easily graph it. The more the government takes from and takes the place of within the private sector, the less efficient those things will be due to a lack of competition and market forces, the less profitable those things will become, generating less tax revenue, putting more people in need of government funded services, increasing the need for taxation etc until you are running into the red and then into the ground. We're presently running into the red pretty heavily. The fed is printing more money (poof! out of thin air!) daily, further reducing the value of the Dollar, further reducing the value of bonds held by our trading partners, further increasing the pressure on them to sell said bonds and turn over to Euro's.
How is this not as plain as the nose on anyone's face? There has got to be an awful lot of fingers in ears and la-la-la-la-la going on for the majority of people not to see this and be outraged! But, the media glibly reports on Obama and Biden getting burgers, Mrs. Obama getting her new shoes, Obama apologizing to Islam for not rolling over and playing dead for their global fatah... please people, have a sense of self preservation and dignity. The government is moving swiftly to deny you the right to both - you had best wake up and engage your gray-matter!
Something to ponder - I know many of you probably don't give a rat's rear about your 2nd amendment rights, but you should take note: Oklahoma's recent move towards passing a sovereignty law was precipitated by something. Scanning the Wall Street Journal last Friday, I happened to notice that the vast majority of ATF arms seizures were in Oklahoma. Now, we all know correlation isn't causality, but it should tell you something about the quiet way your federal government is moving to take away your right to resist tyranny. Some of my dear friends I know think they make plenty of money to share and that paying more takes is no problem - so then the government can placate those unwilling to work to keep them from committing crimes. Your nanny state is turning into a tyranny state and you're taking those of us who really do value freedom with you. We don't like it, and I don't expect it will be much longer before... well, you should never corner an animal defending its home - it's armed, tooth and nail, and has nothing to lose. People, when cornered, no matter how well intentioned, behave pretty much the same. I think that's why freedom is so appealing to many people - we would generally rather mind our own business and let the government (and everyone else) mind theirs -far far away. But, those pesky statists/progressives/socialists just can't seem to help themselves pushing everyone into a corner, all the while telling them how good for them it is.
I think next time I go to buy my groceries I'll just tell them to send the bill to Obama. He already took my grocery money. What I have left I'm investing in brass and lead by way of retirement, since his brilliant economics will have totally depleted Social Security by next year. I wonder how happy the boomers will be when their gravy train is all slurped up by the guy they elected. | | Read / Add Comments (10)
| |
JavaScript: Keep Alive
|
|---|
| Thu 7 May 2009, | |
The need to keep alive... You may have run into this once or twice in your web development travels - especially using AJAX to call agents that produce very specifically formatted XML or JSON which suddenly blow up when they wind up pulling the Domino server login page. Creating an unobtrusive Keep Alive™ is pretty simple (see below) but is it the right solution?
Mark and I covered creating an AJAX powered login in the past (the demo is not currently available I'm sorry to say) but, short of tying some sort of check for the login prompt or page into every asynchronous routine, is there any better way to keep things from breaking when the session times out?
So, confronted with this for a flex app I'm working on, I added a simple bit of JavaScript to the html page that spawns the .swf file. (using jquery as well, hence the following notation)
$(document).ready( function() { setInterval('keepAlive()',10000); });
function keepAlive()
{
$.get('keepalive.txt');
}
keepalive.txt is just a text file added to the db as a file resource with just a single character in it. I reasoned (perhaps in error) that a zero byte file wouldn't actually get loaded and wouldn't trick the server into keeping the session alive. Not sure about that part but seems right. For the sake of one less byte of net traffic, I probably won't test the hypothesis.
Anyway, that little bit of script (again - requires jquery) pulls the 1 byte file every 10 seconds. It seemed to keep my session alive as long as the page was open in the browser which kept me from getting an error in my flex app when it no longer could get to an xml feed and instead tried to decode an html file from the domino server.
Your mileage may vary - I can't really imagine a situation where an IT policy would prohibit this sort of work around, but you never know. That sort of frequent traffic may raise some flags if someone is really carefully watching their network. Then again maybe not - especially if you explain you're using an asynchronous app that makes many smaller calls rather than fewer larger page loads. That might sell the idea to those who would protest. Then again maybe not. :-)
I was surprised, too, that this worked as well as it did. I half expected a server session timeout set to a low threshold (about 10 minutes in this case) to be a hard stop. There may be situations where this wouldn't suffice and you might have to tackle the beast of capturing the login page in every asynch call and providing a login prompt in your flex or ajax application. | | Read / Add Comments (5)
| |
Corruption: Gangster Government
|
|---|
| Wed 6 May 2009, | |
It's an appropriate term - "Gangster Government". I read it over at the Washington Examiner, where there's presently a good article pointing out the corruption in the Obama Administration, probably in the man himself. Think carefully about what’s happening here. The White House, presumably car czar Steven Rattner and deputy Ron Bloom, is seeking to transfer the property of one group of people to another group that is politically favored. In the process, it is setting aside basic property rights in favor of rewarding the United Auto Workers for the support the union has given the Democratic Party. [emphasis added]
Think carefully indeed. Remember also that ACORN, which has had to quickly distance itself from and terminate "rogue" operatives who were paid to gather signatures and register voters, is now in line to reap huge rewards from the Obama Youth program. This isn't just subtle redistribution of wealth via taxation, it is direct, strong arm tactics and interfering with commerce - places the esteemed office of the President of the United States should NEVER go.
Really now, you progressives out there liking this? This is some seriously broken schlit. This isn't government "for the people and by the people" - this is the Gestapo, the Mafia - nothing shy of an illegitimate dictatorship. Glorious to you lot, no doubt. | | Read / Add Comments (0)
| |
Freedom: Oklahoma House Adds to Momentum
|
|---|
| Wed 6 May 2009, | |
Bypassing the veto of it's governor 10 days earlier, Oklahoma's House of Representatives passed a sovereignty bill 73-22, adding to the growing sovereignty movement in the U.S.
Key said HCR 1028, which, if passed, would be sent to Democratic President Barack Obama and the Democratic-controlled Congress, would not jeopardize federal funds but would tell Congress to "get back into their proper constitutional role.” The resolution states the federal government should "cease and desist” mandates that are beyond the scope of its powers.
Some may consider it showmanship or theatrics, but the Federal government needs to wake up and take notice as delivered by a continuing string of states that are serving cease and desist notices via such legislation. "We the people..." are increasingly displeased with the corruption in D.C., which has become all but a joke. | | Read / Add Comments (0)
| |
Freedom: Remember Khy Hak
|
|---|
| Tue 5 May 2009, | |
For those of you, young like me, who instinctively know that collectivism is bad, a little history might help you more firmly grasp just why it is you feel so. This is mandatory reading for those of you who would like a little history to back up your gut as well as for those of you who think that collectivism is the way to go.
I promise you'll have a different perspective on the Hope and Change offered by our increasingly socialistic government. | | Read / Add Comments (0)
| |
Freedom: Discomfort Motivates
|
|---|
| Thu 30 Apr 2009, | |
It's an interesting but often forgotten concept. We go to work because we need the fruit of our labors to quell the hunger in our bellies. We work because laying about does not make one warm, or strong or free. We are motivated by our circumstances. Glenn Beck had a great response to a reporter who challenged Glen's motives. Glenn takes on a critic who blasted Glenn, saying "Beck and Fox pretend to fight for the little guy but do nothing to promote equality." Glenn responded:
"It is a sad day in America when a reporter on a paper in Philadelphia doesn't even know the history of our country well enough, doesn't even know the history of the founding that happened in Independence Hall in Philadelphia, Pennsylvania, has not read enough of the founders' words to even know the words of Benjamin Franklin. I'm sorry. You can go to your Father Coughlin all the time and pine for the days of the anti‑Semite who also wanted to take wealth from people along the lines of Karl Marx. I would much rather go back and reach back to the founders and the words of people like Benjamin Franklin who you'd think this guy would know, living in Philadelphia and being an educated journalist, who said the best way to help the poor is to make them uncomfortable in their own poverty."
That's a darn fine response if I ever saw one. The entitlement mentality has become so pervasive in our society that those who desire the motivation of profit without repressive taxation to remain for their benefit are shunned and looked down upon. Society does not have a responsibility to make you comfortable, to keep you from being without need. You have a responsibility to yourself for that. As a society, the only thing we owe each other is decency. Your being born in this nation does not entitle you to the fruits of my labor, yet we allow our government to treat it as such.
We live in the later days of America where apathy has become the norm. 70% or so of the populace thinks a president who has expanded government spending to levels never before seen is doing a good job. Something is terribly wrong with this. We have come so far as a country from what the founding fathers gave us as to be the antithesis of what America once was and stood for. Individual merit, exceptionalism, shunning behavior detrimental to the family and a long list of other attributes are found wanting in America today. Many of you may find it hard to believe this was once a great nation. It could be again, but not until attrition has killed off the lazy drones by their own inaction and revolution of one kind or another has displaced or made undesirable those so enamored with administrating the affairs of others. | | Read / Add Comments (0)
| |
Press: Glimmer of Truthfulness
|
|---|
| Thu 30 Apr 2009, | |
It seems like the media has been so focused on advancing Obama's agenda and fawning over the charming young executive that when AP published the following, I was shocked at their blunt truthfulness. WASHINGTON (AP) - "That wasn't me," President Barack Obama said on his 100th day in office, disclaiming responsibility for the huge budget deficit waiting for him on Day One.
It actually was him - and the other Democrats controlling Congress the previous two years - who shaped a budget so out of balance.
And as a presidential candidate and president-elect, he backed the twilight Bush-era stimulus plan that made the deficit deeper, all before he took over and promoted spending plans that have made it much deeper still.
No joke! I'm so happy to see that a sliver of the media can be honest about where this crap-storm of an economy really came from. 'bout frickin' time.
I really have to say, Calvin Woodward deserves some sort of award for journalistic integrity. We just don't see this anymore. He levels Obama's farcical disclaiming of responsibility with some good solid facts. Congress controls the purse strings, not the president, and it was under Democratic control for Obama's last two years as Illinois senator. Obama supported the emergency bailout package in President George W. Bush's final months - a package Democratic leaders wanted to make bigger. Makes me a bit weepy. Someone still cares about the truth! | | Read / Add Comments (0)
| |
Policy: An Honest Politician
|
|---|
| Tue 28 Apr 2009, | |
Breaking news - Arlen Specter has announced he is moving to the Democratic Party - his first brush with honesty in recorded history. Pigs expected to fly soon. Oh - wait - swine flu has already been spread via air travel.
Specter was heard to say, "I just couldn't keep pretending any more... the constant pretending to be something, someone I'm not. It was time to come out. I know, you all suspected it all along - the way I rolled over for Democrat nominees or offered only perfunctory resistance... my burning desire to thwart true liberty at every turn is just too over powering, I can't contain myself any longer... I need to be me!!!"
(Update)Ok - he really said this, on March 17. I am staying a Republican because I think I have an important role, a more important role, to play there. The United States very desperately needs a two-party system. That's the basis of politics in America. I'm afraid we are becoming a one-party system, with Republicans becoming just a regional party with so little representation of the northeast or in the middle atlantic. I think as a governmental matter, it is very important to have a check and balance. That's a very important principle in the operation of our government. In the constitution on Separation of powers. Honesty is the best policy, no?
Good riddance to bad trash. | | Read / Add Comments (2)
| |
Freedom: Only the Well-off Will Have the Lights On
|
|---|
| Sun 26 Apr 2009, | |
In a time when finances are in short supply for a growing number of American families, progressive plans such as "cap and trade" and "carbon offset" schemes boil down to a tax on everyone. Consider that when electricity becomes too expensive, less well off families and those on fixed incomes will simply be unable to keep their accounts active. By artificially pushing the cost of electricity higher, the federal government is forcing us into a pay-to-play situation where only the well off will have the lights on, the heat running and the ability to simply microwave a meal.
Seems to me politicians often like to rail against pay-to-play politics, but the vast array of new nationalization efforts are creating precisely that situation. These visionary new plans totally overlook the direct impact to the least among us, painting a disturbing picture of detached elitism in Washington, D.C.. If this isn't true, I'd like Congress to show us the proposals that will counteract the costs that will bury us. I'd like Congress to tell us what new energy source is already available and competitive with Coal. I won't hold my breath because I know both of these are as imaginary as the benefits legislators claim will be brought to us by making it more expensive to keep our houses safely cool on a blistering hot day. France killed 10.000 of it's own people with summer heat by making electricity too expensive not too many years ago. Is this the aim of our federal government? Making electric power generators pay for C02 emissions (the LEAST of all green house gases in measurable quantity and effect) will force the cost down on consumers, unless Washington plans another money printing spree to nationalize the Utilities of our nation as they are now the health care industry and the auto industry. I wouldn't find it altogether unbelievable that Nancy Pelosi believes it to be more economical to let people die as a result of out-of-control electric bills as she does about many unborn citizens. The rancid elitism frothing over in D.C. must be challenged and dealt with before we are reduced to ashes amongst the nations. We know this is their goal, Obama has openly lamented our evil, despicable ways to foreign leaders around the globe. The question is - will you stand for it? | | Read / Add Comments (7)
| |
Freedom: Continues to Slip Away
|
|---|
| Fri 24 Apr 2009, | |
A handful of congressional Democrats and white house staffers are this evening crafting legislation that will nationalize 17% of our health care industry. There will be less than 35 hours of debate on it between both houses, and it will only require a simple majority. Why? Because the Democrats are using the Reconciliation rule, designed to move the BUDGET through in tight times - e.g. no money to run the government. That rule was authored by long time Senate Dem Byrd... and even he doesn't like his rule being misapplied.
It's a power grab, folks, and the media is silent. All in the name of giving Obama a "victory" before his first 100 days are up. Oh, and he's requested an hour of prime-time sweeps broadcasting for a "news conference" next Wednesday to congratulate himself. Our government has become a total sham. A charade. A swindle perpetrated upon the ignorant masses.
At long last, the mission of the Marxists and Socialists among us is nearly complete. Having destroyed public education by first removing the Bible from school and then continually watering down curriculum in favor of keeping inept union teachers employed - their success has been a population completely unfamiliar with history, civics and economics.
We produce today people barely fit to work in factories in large numbers, though not exclusively thanks to some stand-out communities and parents across the nation who do understand what an education is supposed to be. But, the more ignorant they are, the more conditioned to expect a handout and rely less on themselves, the easier they are to control. And so we have collectively become... well, most of you all anyway. Some of us will only be controlled by a boot at our throat, preferring to cling to what liberty we yet have rather than acquiesce to the steady march of ill conceived "change"™.
Those of you who claim to value freedom and liberty had better take note while you smugly congratulate yourselves for electing a zero-experience, restless social tinkerer to office. Your freedoms are being subverted in far more sinister ways than ever you imagined Bush was doing. At least a wire tap you can get away from. The creeping avalanche of devalued currency that will destroy your wealth, and burgeoning debt that will tax what remains out of existence will ensure you, your children, and many generations to come, should they be so fortunate as to be allowed to breath outside their mothers wombs, will have no concept of self direction or self determination. The state has insinuated itself into our conscience, our culture and our DNA. You are no longer free - you are a cog, a rivet, a washer grinding away between the large unyielding pieces of federal machinery.
Weep now, for a little while, and then consider the cost of regaining your freedoms, and whether you can muster the fortitude to pay it. | | Read / Add Comments (4)
| |
Freedom: Texas Governor Backs Sovereignty Movement
|
|---|
| Tue 14 Apr 2009, | |
Texas Gov. Rick Perry speaks in support of the sovereignty movement. [Video] "I believe that our federal government has become oppressive in its size, its intrusion into the lives of our citizens, and its interference with the affairs of our state," Gov. Perry said. "That is why I am here today to express my unwavering support for efforts all across our country to reaffirm the states’ rights affirmed by the Tenth Amendment to the U.S. Constitution. I believe that returning to the letter and spirit of the U.S. Constitution and its essential 10th Amendment will free our state from undue regulations, and ultimately strengthen our Union."
Perry continued: "Millions of Texans are tired of Washington, DC trying to come down here to tell us how to run Texas."
Awesome. | | Read / Add Comments (4)
| |
Freedom: Indiana Declares Sovereignty!
|
|---|
| Mon 13 Apr 2009, | |
Amazing happening over the Easter holiday - Indiana, by a vote of 44 to 3, declared sovereignty under the 10th amendment of the U.S. Constitution on April 9th, 2009. This is a triumph for freedom loving Americans who have become disenchanted with an overbearing federal government. The U.S. constitution lays out clear powers for the federal government and leaves everything not specified therein to the states. Unfortunately, it has become common practice for our federal government here in the US to fill those gaps by fiat in many ways. The current sovereignty movement working its way through state legislatures across our land reaffirms the rights of the state to self rule in all areas not specifically reserved for the federal government. This will hopefully lead to a leaner and more purpose focused federal government in the coming decades where people of the United States can live united under one federal flag in the manner they chose in the state they chose without interference from people in other states or the federal government. This should make all but socialists, Marxists and the power hungry, and their well meaning but misguided supporters, very, very happy. | | Read / Add Comments (0)
| |
Finance: Old Playbook - Same Goal
|
|---|
| Fri 10 Apr 2009, | |
Great comic was posted on Digg, hosted on flicker. From 1934, but could be in the paper today. (Click for full view)

Sounds all too familiar - especially the portion which reads: "Plan of Action for U.S. - SPEND! SPEND! SPEND! Under the guise of Recovery - Bust the Government - Blame the Capitalists for the failure - Junk the Constitution and declare a dictatorship", and off to the side: "It worked in Russia!" And here you thought this was the era of Change™ and New Ideas™. It's the same approach tried by the left 80 years ago. Last time, WW II came along and focusing the American psyche on Victory brought the nation together (and ran up our debt to unprecedented levels) and built a stronger industrial complex. The only new idea would appear to be that, learning from the mistakes of that era, our Socialist president is moving the USA into an era of appeasement doctrine, and the reaction from our enemies has been immediate and bold, sensing that we are now weak with Obama in control. North Korea and Russia are launching missiles, Iran boasts 7000 centrifuges and continues to be encouraged in that direction by a complicit White House. Improve our international standing? I don't see the E.U. giving us much in return for Obama's fawning - probably because he ineptly promoted Turkey's EU membership when our largest allies clearly do not favor it.
But I guess that fits right in with running the US straight into the ground. He's doing a fabulous job by that measure.
| | Read / Add Comments (0)
| |
Policy: Defund Profitable Planned Parenthood
|
|---|
| Fri 10 Apr 2009, | |
From FRC.org's Tony Perkins: Planned Parenthood (PP) released its annual report this week. It would appear that for Planned Parenthood, crime does pay -- as long as it is crime against humanity. Last year, while the rest of the nation was seeing a downward trend in relation to abortions, Planned Parenthood was perpetrating over 15,000 more abortions than the year before, for a grand total of 305,310 (while apparently offering no post-abortion counseling to the women who enter into PP's "clinics.") Added to this mayhem, Planned Parenthood distributed over 1.4 million "emergency contraceptive kits" containing the abortifacient called the "morning after pill." During this time the organization only did 4,912 adoption referrals. All this proved very profitable to Planed Parenthood as they posted a net profit of $1.014 BILLION. A clear 34 percent of that figure came from you - the U.S. taxpayer. Government grants to Planned Parenthood allowed the abortion industry to spend on a variety of things including contributing $10 million to elect President Obama and spending close to $1 million to lobby Congress for even more cash, claiming poverty in this time of economic crisis! This investment by Planned Parenthood has paid handsomely as increases in government funding have led to an increase in the number of abortions the group performs. Only when the abortion industry is completely separated from the government funding spigot will President Obama have any credibility when he says he wants to "reduce the number of abortions." Local governments like Orange County, California and Corpus Christi, Texas have realized this and defunded their local PP's - when will Congress? Indeed - the relationship between any organization which receives government funds and then turns around to campaign for partisan election results that will clearly favor them is beyond suspect - it's corrupt. Adding this to the already atrocious killing of the defenseless and shoddy treatment of patients as though they were merely cattle and we have something quite disgusting and revolting. Anyone who would like to argue for Planned Parenthood, feel free to do so, but I want you to commit to going and viewing an abortion sometime. When we begin to kill the least among us as a means to the ends of self preservation and enhancing the quality of life for a few, we are no longer human - we have become cold, calculating machines interested only in self. And that, if recent history has yet failed to educate you, is the greatest foil to Western society in modern history. | | Read / Add Comments (2)
| |
LotusScript: ArrayToList
|
|---|
| Thu 9 Apr 2009, | |
Seems obvious enough that there should be a way to do this in LS, but I don't seem to be finding one right off. So I humbly submit for review, a very simple arrayToList function.
Function arrayToList(myarray As Variant, orientation As Integer) As Variant
' Created by Jerry Carter - 4/9/2008 - Teamwork Solutions
' orientation 1 converts array to a list where the array values are the list tags
' e.g. myarray(0)="value" ---> mylist("value")=0
' orientation 2 converts array to a list where the array indicies are the list tags
' e.g. myarray(0)="value" ---> mylist("0")="value"
On Error Goto eh
' return values:
' List on success
' -1 on error
If orientation <1 Or orientation >2 Then
' bad orientation value, return null
arrayToList=-1
Exit Function
End If
Dim m As Integer
Dim tmplist List As Variant
For m = Lbound(myarray) To Ubound(myarray)
Select Case orientation
Case 1
tmplist(myarray(m))=m
Case 2
tmplist(Cstr(m))=myarray(m)
End Select
Next
arrayToList=tmplist
Exit Function
eh:
arrayToList=-1
Exit Function
End Function
The reason I wanted this was I have a function that references month aliases and I wanted the flexibility of looking them up while in a loop as well as by reference. I realize a list could handle all of this with the use of a companion integer being iterated, but I also find it expedient and useful to make my arrays thusly...
Dim monthsarr As Variant
monthsarr = Split(",Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sept,Oct,Nov,Dec",",")
So getting this to list format doesn't take 12 or so lines of code each time I want a list from an array, the function above is easily called as such:
Dim monthslist As Variant
monthslist = arrayToList(monthsarr,1)
So, some niggles; variants are presumably more expensive than strings - which is to say, lists of variants are potentially more expensive than like sized lists of strings. I don't know that for sure, but I'm led to believe it is so - correction on that point would be appreciated. Also, and likewise probably intangible, it is presumed that creating an array in the way shown is more expensive than writing it out in code long hand, if not simpler to code. One might also ding the readability or maintainability but I suppose it matters what source your feeder string is for your initial array creation.
Any thoughts as to how it could be better? | | Read / Add Comments (4)
| |
Design: Proper Design, Broken Down
|
|---|
| Mon 6 Apr 2009, | |
This is great, and 100% accurate advice to live by (for web developers).
| | Read / Add Comments (0)
| |
Freedom: Map of Protests for April 15
|
|---|
| Fri 3 Apr 2009, | |
This makes me proud to be an American all over again. This, my friends, is what a country full of fed up tax-payers looks like. Each map marker is the location of a TEA Party Protest (Taxed Enough Already?) Click the image to see the live map.

Protests organizing near you (primarily US only). | | Read / Add Comments (0)
| |
Finance: Petition the Govt. to Return YOUR Money
|
|---|
| Thu 2 Apr 2009, | |
AFA has a petition they are hosting requesting the government send you back your tax dollars as it is more efficient for you to spend it than to pay Congress to do it. Sounds simple enough to me! Sign it today - tell Congress we're cutting them off - they're too intoxicated with power to govern and we're taking their keys! | | Read / Add Comments (0)
| |
Freedom: To the Bahamas!
|
|---|
| Wed 1 Apr 2009, | |
After reading about last nights ouster of taxpayers from a public hearing on Tax Law in the Iowa State House, I've decided to leave America.
That's right. I'm fed up with the sniveling leaches in Congress and all of you bleeding heart liberals sucking the life out of our economy. So, I'm packing up my family and using my off shore funds (you knew I had to have some) to buy a nice little house in the Bahamas.
From there, I'll be able to continue serving my clients over the internet while paying no more federal bull-crap taxes. I'll also be able to follow in the footsteps of George Soros, slowly building my fortune (currently an undisclosed but two comma bearing amount) so I can fund the campaigns of hard line militant conservative candidates here in the US through a network of 501c organizations.
Then we'll see who's the bigger fool! Happy April 1st! :-) | | Read / Add Comments (5)
| |
Domino: 8.5 Designer Client a Hungry Beast
|
|---|
| Mon 30 Mar 2009, | |
I went ahead and updated my Virtual Machine to use the Gold 8.5 release last week Thursday, and have already had to back it out. Running a VM on a 2 GB host system, even when I give the VM the lions share of the memory resources, was too puny to support the memory and CPU demands of the all Eclipse design client.
Even on the host machine, and with the JVM settings tuned to allow a larger heap start and max size, the designer client is just ungainly. I tried starting nlnotes.exe instead of notes.exe, but now with 8.5, you can't fire up the design client from Notes if you do that. I'm not one to complain about a bold new direction and tons of new features, but it seems we've lost quite a bit of ground with regards to performance going to the Eclipse based designer full-bore.
Now, I have been very impressed with how well the web mail client for 8.5 works and I'll keep that template update as our server is 8.5, but for the client, I'm finding that reliability and productivity demand I use the basic client rather than the Eclipse "standard" client, and for that to all be possible (inclusive of the Designer) I have to use 8.0.2.
Hopefully, some attention in coming releases will go to performance. I'm not sure there just needs to be a tighter and leaner JVM - which well may be the issue. One thing that won't be happening any time soon is me getting a machine that can sport 4 GB of memory (and address more than 3 GB of it) just to get the 8.5 client usable. Resources are too precious for that bit of luxury at present. | | Read / Add Comments (8)
| |
Clarity: Greenhouse Gas Data in Perspective
|
|---|
| Mon 30 Mar 2009, | |
Doug Ross posted a great chart with some comments concerning financial projections put forth that show the impact to jobs in the coming years resulting from Obama's environmental policy. Great stuff!

The only improvement to the chart would be an outset that shows that chart in comparison to the 100% of atmosphere, 2% of which it represents. | | Read / Add Comments (9)
| |
Policy: If it's broken, Congress can fix it!
|
|---|
| Tue 24 Mar 2009, | |
Another fine example of government just not being able to help itself. Benjamin Cardin introduced legislation to let struggling, small news papers become non profit, accept tax deductible contributions, and bars them from political endorsement.
Making this bill particularly stunning is Cardin's statement: "We are losing our newspaper industry," Cardin said. "The economy has caused an immediate problem, but the business model for newspapers, based on circulation and advertising revenue, is broken, and that is a real tragedy for communities across the nation and for our democracy.
So, let's recap. The news paper business model is broken, so let's denigrate it by making it a charity. "That's right boys, you just keep your little reporting going on that you do there and we'll just let you off the hook in the future because, like the spotted owl it would be a shame to see you die off." Give me a break! We're missing the entire point here! Yes, we have some tough economic times. It's called CHALLENGE. When you are CHALLENGED you ADAPT. You learn to overcome your obstacles, restructure, reformat, rebrand, advertise, monetize, downsize or you capsize. And if nothing works, you close the doors and move on to something that does.
If it isn't working anymore, don't make it another state sponsored entity by giving newspapers, which by the way would still compete with other media sources for advertising dollars, but would now have a built in advantage, cause - hey, it's tax deductible! This is more of the same kind of "Government is the answer to everything" kind of thinking that brings us subsidies for growing corn. If the free market won't support it, DON'T DO IT! Really, stunningly simple.
What we're not hearing yet is this is just the line up to force fairness doctrine down on radio. Sure it will. Stop rolling your eyes. Here's how it is going to happen if this bill gets through congress or along the way. Some struggling radio stations are going to say, hey, times are tough for us too. Can't we become non-profits too? Sure, just stop your political endorsements. Et viola, defacto fairness doctrine.
I'm going to keep saying it till the day I die. Government does not solve problems, Government IS the problem. The more pages of law that spill forth, the worse our situation becomes. I would love for Church's to lose tax exempt status as well - it's a gag on the mouths of preachers that SHOULD be able to tell their congregation which political candidate lines up with Scripture. No more of this hemming and hawing because the big bad IRS might come start collecting taxes. Let em! If we can't keep our church afloat then I guess we aren't giving like we should anyway.
Here's one thing I really, honestly love about China. Their government meets for it's legislative session annually - for two weeks, all done, go home. Back in the good old days, our Senators and Representatives used to do that too, and all they got was reasonable travel expenses. Kept them honest needing to run a business to have an income and only mucking with the Peoples business for a few days out of the year. Where's Mr. Peabody and Sherman when you need them?
| | Read / Add Comments (0)
| |
Finance: One World Currency
|
|---|
| Tue 24 Mar 2009, | |
China is proposing we move to an IMF controlled international currency, by default, away from the US Dollar as the most popular currency. Russia recently proposed a similar shift, but to the Rubel. Is any of this a good idea?
First we need to understand the problem we have with our own currency. As I eluded to the other day, our currency system has a runaway monetary base, according to our own government. The amount of dollars in circulation has been steadily increasing for half a century, but spiked in 2008 by nearly 100%.
Rewind to the Nixon era. France was holding a lot of US debt at the time, which under the Bretton Woods system, was still guaranteed and backed in Gold. France decided at that time that it wanted to call in its markers. In order to make good on all of those treasury bonds, it would have wiped out the US gold reserves. Nixon decided at that time that we would no longer back our currency with gold but would complete the shift to a fiat currency which began with the institution of the Federal Reserve 4 decades earlier. From that point on, our currency has been backed by nothing but the "full faith and trust" of the U.S. Federal Government.
Now, fast forward to today where China and Japan own most of our national debt in the form of Treasury bonds. The value of these bonds is determined by the trade value of the US Dollar, which is in turn determined in part by the number of US Dollars in circulation. The more the US Dollar is worth, the more China can profit when it sells bonds. But, the more bonds China sells, the less value the dollar has because it is being sold. When you increase the supply of something, the value decreases.
So, China can not risk selling or redeeming too many bonds at one time or they will devalue their investment. China, as our chief creditor, is stuck for the moment. Moving to a fiduciary device other than the US Dollar would disentangle China from the ups and downs of our currency where they hold 2,000 billion (t trillion) of our debt. This would ease the double jeopardy China finds itself in with the US Presently - one where a down turn in our economy means both a loss of investment value for the Chinese government and a loss of export revenues.
Going off the Dollar is attractive to China for another reason. Since we trade with them in Dollars, they can buy goods from us with US Dollars. The more the Dollar is worth, the more they can get for fewer Dollars, or to put it another way, the more they can buy from us. A weaker Dollar means less purchasing power for China. Warren Buffet once wrote about two islands, one that worked hard and produced an excess they could trade, and another who worked less and bought the excess from their neighbor island on credit. The debtors were eventually bought out by the creditors when the debt was so great that the creditors were able to leverage it to purchase the land of the debtor island. In the end, the debtor island was working extra hard to pay it's debt and pay rent. Sound familiar?
So, in order to avoid this fate, the US Government has pretty much one option - devalue the Dollar by printing more currency. What was once a subtle ploy to protect American capital assets from foreign purchasers has become an all out assault on the value of the dollar as the Treasury runs the presses white-hot. It's no mistake then that our government is looking for every excuse it can to create more money.
So, you might at this point be thinking - ok, printing more money not so bad because it keeps us from getting bought and owned by the Chinese and Japanese. (Incidentally, Japanese land owners are a significant part of the population in Hawaii) But what got us to this point? A faith based, fiat currency and a Federal Reserve that had the forces of cash creation and interest rates to try to perpetuate a healthy US Economy. You may have heard me erroneously refer to our free market economy in the past. It's not. It hasn't been since the Federal Reserve was created.
There-in lies the problem. It's a demonstrated fact that true, untainted, free-market economics work. Sometimes that means people lose, and lose big if they took big risks. Sometimes, that means people win, and can wind steadily if they are frugal and prudent. The reason we hear so much noise lately lambasting capitalism is because nobody really knows what true capitalism is - we've been perpetuating a sham in the US for the better part of a century and the bill is now coming due. Real capitalism is fair and predictable and not manipulated to give one side the advantage. It has as its foundation the laws of supply and demand and is really quite simple and efficient.
So what should we do? Correct the problem at it's root. Restore the credibility of our currency by restoring faith in it - that means, unfortunately, we have to stop printing it, and also unfortunately, that we can no longer manipulate its value to shield ourselves or create favorable exchange rates. It goes along with undoing some of what the Obama Administration and Democrats in Congress are doing - governing from the hip. We can't write hasty law and expect it to be respected or stand the test of time. Just look at the AIG debacle Chriss Dodd brought about. He added an amendment to the bail-out bill that allowed those bonuses to be paid. Oops! Now Congress wants to punitively tax it back! This is two wrongs not making a right, and it makes the US look like an unsafe place to invest capital. Who wants to put money in the hands of people who are going to change the rules every other week?
So, in order to fix things, we have to stop jiggering the rules of finance, and law, around to try and cover up the problem. We have to address the problem at it's root, clean up our debt and stop living on more than we make as a nation. The average savings rate for people in China? 40%. Currently in the US? about 2%. It was actually in negative figures earlier this decade. Does that tell you something about our cultural view of money? That's another thing we need to work on.
What we have to be now vigilant about is how we go about cleaning up our debt. Unfortunately, Geitner and Obama are currently pursuing the same course taken to clean up after Savings and Loan in the 80's - buy the bad debt. That will, unfortunately, continue to devalue the Dollar and will increase the pressure our creditors will feel to divest. Whatever method is finally used, it has to be one that doesn't compound the problem. We can't build on our current faulty principles of currency manipulation. Real losses have to be taken on the chin by those who incurred them, and then they have to clean up their mess and move on. The sooner this is done, the better for everyone. Perpetuating the current system and pattern of behavior is just adding more layers of plaster to a giant ball, suspended from the ceiling by a thin wire, increasingly strained by the weight.
| | Read / Add Comments (0)
| |
Freedom: Urgently Resist the Facts
|
|---|
| Fri 20 Mar 2009, | |
Point of fact - the current policies of the Democrats in congress and our current president are designed to bring about the collapse of America as you know it. At every turn, everything they are forcing through with mock urgency and outrage is a calculated step to attack the foundations of our Republic.
You may no longer expect legal contracts to be upheld. Signed a mortgage? Meaningless paper. Took a job on the promise of certain kinds and amounts of compensation? Even if you earned it by keeping the bonfire of an ailing economy from burning your company to the ground, don't expect to be able to keep it. The faux champions of the little guy will be outraged and tax it away.
One might think with spending like this, you'd want a tax base in the future to pay for it. Nope, abortion on demand, no parental consent, late term and partial birth abortion are coming at you soon. Killing is preferable (more economical according to Nancy Pelosi) than promoting behavior that reduces unplanned pregnancy.
 The impact of "Abstinence Only" education on instances of syphilis
We export it all now. Abortion, jobs, debt, unemployment... what's left? A shell, waiting to collapse. Do I sound pessimistic? I was actually called optimistic today. I am optimistic. Optimistic the people who still give a rip won't take this much longer. I'm down right positive the Obama presidency will be remembered as one of the biggest failures in history. I don't have to hope he fails, he's already done it - in EPIC style.
So, let me be one of many to suggest it: Impeach Congress, Impeach Obama, take your country back. Even those of you who voted for Obama - unless your plan and hope all along was to see the US burn down around you, you aren't getting what you voted for - as I told you would come to pass. You voted for ambiguous "change" and undefined "hope". I tried to tell you that the peddler was a Marxist, a socialist, but you scoffed. I have been warning you about the social and economic slippery slopes for years now, and how horrified I am to see it come to pass. Getting what you wanted? Don't give me that "you can stop griping when you have health care you can afford" bull either. FROM WHERE? The Marxist economic policies and crazed legislation pouring out of congress is going to make practicing medicine both unprofitable and unpalitable! What Dr., save the sociopathic, would want to be told to perform abortions against his conscience and not make too much money doing it or he'll get taxed to the floor??
 Trends in physician premium costs
Our Health care crisis has been brewing as long as our entitlement mindset has been being spoon fed by the Democratic party, who famously adopted every plank of the American Socialist Party's platform under the guise of liberalism. You can't afford to go to the Dr. because millions of mindless "gimmes" believe they should sue every physician that can't work miracles! They're entitled to fool-proof, God-like miraculous healing, no?
Our economic crisis has been brewing since the Federal Reserve was given the power to determine what power the commercial sector has by arbitrarily tweaking the value of the dollar. How can you have stability and prosperity when there's a new 5 year plan every three months?
 Monetary base - a reflection of money printed by the treasury
Our problem is not that we have government, it's that we expect so much of our government and turn a blind eye to their excess and stupidity. After all, if we turn the keys over to them and THEY crash the car, it's not our fault, right? That seems to be the majority mindset. Our government has become what our founders most feared: big enough to provide everything and therefore big enough to take it all away.
In all this chaos, nobody seems to be interested in a calm or deliberate approach to doing the right thing, the best thing or the reasonable thing. The emphasis has been, right from Obama's mouth, "do something". Any qualification he has made to clarify what "something" is has thus far turned out to be almost pure lip service.
I'm thinking, some of those teeny tiny islands I can see in the South Pacific on Google Earth? They look pretty nice. | | Read / Add Comments (8)
| |
Design: Xpages or Flex?
|
|---|
| Thu 12 Mar 2009, | |
I was asked a very good question yesterday while synopsizing Flex for my esteemed colleague yesterday: why Flex instead of Xpages?
The reasons I gave centered around my experience with Flex from a developers perspective. Before I dive into those though, I want to reiterate a point made by Jake today - use the right tool for the job. We've heard the axiom, "if all you have is a hammer everything looks like a nail". There are times when Flex is a better choice than XPages, and I'll get to those. But there are also times when Xpages is going to be the better choice than Flex.
First some compare and contrast. The design preview in Flex is intuitive and very representative of the finished product. XPages looks like very old Domino HTML development in the Design view. It's difficult to interpret and understand what you are getting. To me, this is an issue of time savings. I don't want to have to preview or build the app to see that the UI looks right.
From a source perspective, both options produce prodigious XML. What can I say - you have a bit of a learning curve in either case but nothing to cause an aneurysm.
Then there is browser compatibility. Presently, XPages uses a series of style sheet hacks (if you use the standard application OneUI styling) to achieve cross browser compatibility. That means that when browser technology changes, you have to update your server to update these files that are part of the server deployment, if IBM makes updates available in a timely fashion. Flex, on the other hand, is running a compiled .swf in the Flash Player plug-in, which has been written to abstract away these concerns regardless of browser or platform. If there is a flash player for your browser, the application is going to render consistently everywhere. Here, the pitfall is the potential lack of a plug-in.
Finally there is Rapid Application development. From purely a UI perspective, Flex wins. It takes literally minutes (seconds if you're quick) to put together a mock-up of something visually with Flex. There is already available a wide array of desktop UI-like controls which require no additional coding to have them work. XPages is pretty much making the task of getting Domino controls to the web easier but these are not the complete UI package - think dragable sections, scrolling frames - all things achievable with CSS and XPages, but EASY with flex. You can turn out something quickly for a look with XPages, but you can put a lot more into a Flex UI with a lot less effort initially.
Now, I did say right tool for the job. In the case where you are building a website that needs to be easily indexed by search engines or contains a lot of print, Flex is both overkill and the wrong tool. XPages may even be overkill but is the better choice of the two. If however you need an application that is like a desktop application with smaller data segments, data grids, menus, sliding resizable sections and a plethora of UI friendliness and you don't want to hassle with JQueryUI, Dojo, or endless days fiddling with browser compatibility issues, Flex is the clear choice. You can stop worrying about "will it render?"
Data delivery is another consideration. XPages is designed to deliver Domino data EASILY. All caps. If you know Domino is the core of your app unto eternity, XPages close relationship to Domino data structures is a huge factor. Flex, however, is data source agnostic, so to deliver Domino Data, you're going to have to provide a data translation layer that converts your documents and views to d4x XML. This is good and bad. Good because it means your Flex UI can be adapted to anything, SQL, flat file, what have you. XPages may have a ding here because adapting it to other data sources then means reengineering your application after the fact by inserting a data translation layer. Breaking XPages lose from Domino data may be a huge consideration if you know you will need to scale to a relational data source later.
On that note, it's worth pointing out that Flex encourages clean abstraction of application layers, while XPages makes it easy to ignore. You do this at your peril if you ever hope to scale beyond what Domino can deliver. So, cost of ownership becomes a question. If and when you need to redo the backend of the application, will you need to spend a lot of time or a little time doing it? If you take an MVC approach from the beginning, which XPages seems to avoid (somebody feel free to correct me if I'm in error here), you're shielded later on from huge upgrade costs. But, we're digressing into a discussion of architecture and we started out comparing tools.
In the end, I like both options for different scenarios. While I tend to not be Domino-centric in my view of solution design these days, it's not totally off the table - far from it.
| | Read / Add Comments (7)
| |
Domino: 8.5 Precision Still Lacking
|
|---|
| Fri 6 Mar 2009, | |
I guess it's been a known issue for some time now that math in LotusScript lacks some precision. I was able to recreate this on this sunny morning in 8.5 using a simple button in a rich text field with some script behind it.
Below are the results of summing and recombining the value 1.23, typed as a double, 100 times.
--- Scroll down for precision loss example ---
2.46
4.92
7.38
9.84
12.3
14.76
17.22
19.68
22.14
24.6
27.06
29.52
31.98
34.44
36.9
39.36
41.82
44.28
46.74
49.2
51.66
54.12
56.5799999999999 <--- eh?
59.0399999999999 <--- huh?
61.4999999999999 <--- doh!
63.9599999999999 <--- etc.
66.4199999999999
68.8799999999999
71.3399999999999
73.8 <--- and suddenly...
76.26
78.72
81.18
83.64
86.1
88.56
91.02
93.48
95.94
98.4
100.86
103.32
105.78
108.24
110.7
113.16
115.62
118.08
120.54
123
125.46
127.92
130.38
132.84
135.3
137.76
140.22
142.68
145.14
147.6
150.06
152.52
154.98
157.44
159.9
162.36
164.82
167.28
169.74
172.2
174.66
177.12
179.58
182.04
184.5
186.96
189.42
191.88
194.34
196.8
199.26
201.72
204.18
206.639999999999
209.099999999999
211.559999999999
214.019999999999
216.479999999999
218.939999999999
221.399999999999
223.859999999999
226.319999999999
228.779999999999
231.239999999999
233.699999999999
236.159999999999
238.619999999999
241.079999999999
243.539999999999
245.999999999999
248.459999999999
Here are the same results as rendered by MS Excel.
4.92
7.38
9.84
12.3
14.76
17.22
19.68
22.14
24.6
27.06
29.52
31.98
34.44
36.9
39.36
41.82
44.28
46.74
49.2
51.66
54.12
56.58 <---- OK
59.04 <---- OK
61.5 <---- OK
63.96 <---- OK
66.42 <---- OK
68.88 <---- OK
71.34 <---- OK
73.8
76.26
78.72
81.18
83.64
86.1
88.56
91.02
93.48
95.94
98.4
100.86
103.32
105.78
108.24
110.7
113.16
115.62
118.08
120.54
123
125.46
127.92
130.38
132.84
135.3
137.76
140.22
142.68
145.14
147.6
150.06
152.52
154.98
157.44
159.9
162.36
164.82
167.28
169.74
172.2
174.66
177.12
179.58
182.04
184.5
186.96
189.42
191.88
194.34
196.8
199.26
201.72
204.18
206.64
209.1
211.56
214.02
216.48
218.94
221.4
223.86
226.32
228.78
231.24
233.7
236.16
238.62
241.08
243.54
246
So, what's happening here? Let's look at 54.12 + 1.23 + 1.23. Calc.exe produces 56.58, as does excel. Even increasing the decimal place precision in Excel I get 56.58000000. But LotusScript produces 56.57999999, shaving .00000001 off. What's strange is this is consistent. I can run the test over and over again and LS produces the same result.
I can't think of a good reason for this to happen, but suffice to say, do not launch your satellites with LS derived flight parameters. What's unfortunate is that this can make you, the developer, look bad unless you're prepared to handle it. Happily, this small loss of precision does not produce inaccurate rounding results, so if you round your output in LS to two decimal places, it behaves properly.
2.46
4.92
7.38
9.84
12.3
14.76
17.22
19.68
22.14
24.6
27.06
29.52
31.98
34.44
36.9
39.36
41.82
44.28
46.74
49.2
51.66
54.12
56.58 <--- rounds correctly
59.04
61.5
63.96
66.42
68.88
71.34
73.8
76.26
78.72
81.18
83.64
86.1
88.56
91.02
93.48
95.94
98.4
100.86
103.32
105.78
108.24
110.7
113.16
115.62
118.08
120.54
123
125.46
127.92
130.38
132.84
135.3
137.76
140.22
142.68
145.14
147.6
150.06
152.52
154.98
157.44
159.9
162.36
164.82
167.28
169.74
172.2
174.66
177.12
179.58
182.04
184.5
186.96
189.42
191.88
194.34
196.8
199.26
201.72
204.18
206.64
209.1
211.56
214.02
216.48
218.94
221.4
223.86
226.32
228.78
231.24
233.7
236.16
238.62
241.08
243.54
246
248.46
| | Read / Add Comments (20)
| |
Travel Log: On the Road in Miami - Part IV
|
|---|
| Thu 5 Mar 2009, | |
My final day and a half in Miami was the best. I slept really well Wednesday night and so Thursday I felt really on game. Thursday night was the interesting part as my client was kind enough to take me out to dinner.
I know, usually it's the vendor taking the client out, and I tried twice to pick up the tab for dinner but was politely overruled. I'd never been to Miami, as you know by now, and so taking a trip over to see South Beach was a must. Miami is a beautiful city in terms of architecture, both at the macro level with its gleaming white towers glistening with blue and green mirrored windows as well as the micro level, where art deco is prevalent.
One bit of northerner hilarity, I kept seeing plants here and there adorning the sidewalks and various buildings and common areas and the strangely familiar feeling that I had seen many of them before kept coming to mind. I realized some of them I had seen in Michigan of all places - inside my Aunts house and other indoor places. I almost asked aloud, "what are all these house plants doing outside?" before remembering, you're in the tropics now, gringo!
The strip along Miami Beach is an amazing sight to see. A never ending stream of high-dollar clubs and restaurants. As we walked to our destination, a Cuban eatery by my request, we were barked at by barmaids hawking two for one drink specials, a very carnival sort of sales approach, in front of elegant eateries. This seemed very strange to me. The premise of exclusivity and reserved mannerisms was absent, perhaps due to the competition and perhaps due to the off-season or down economy. Not a few of these girls had Russian accents.
Also apparent was a surprising number of beggars. Some were brash enough to shout at near by diners, "Sir! Sir!... Sir!!", acknowledged, they followed with an outstretched hand, "can you give me a few dollars for some food?". This refrain was heard many times that night, though with varying levels of civility and dignity. Almost all of the beggars were over weight and disheveled. The later I would expect, but Columbus beggars are usually also thin and gaunt. Either panhandling yields a healthy living in Miami or there are many recently homeless or unemployed people making a living in this manner now.
We had dinner at a cafe table on the side walk, allowing many of the locals to stop by for polite chats and requests for handouts. I had (gonna spell it wrong) Marsitos De Peurcos with beans and rice and Moroso. That's: chunks of pork with fried plantains - with fresh lime. Excellent!! For desert, Tres Leches - three milks, or rather, sponge cake soaked in three kinds of milk and vanilla with a cream topping. I had two bites of this and three bites of Flan, which is a custard. All too good to do it justice in words.
Another interesting item was the rental runabouts or trikes. They usually consisted of a small dune-buggy like front end married to a scooter back end. Very light weight, fun looking rides for getting up and down the beach quickly. If you're going to be there for a few hours or more, probably worth checking into.
Returning home was great. I spent my last half day on site and then the remainder of the afternoon working on documentation and traveling home. I had a long lay over in Charlotte and had dinner at Philips Sea Food - blackened Salmon steak, medium rare. Also excellent and worth the airport food price. I had the good fortune to sit next to a Cuban American and fellow fiscal conservative on the flight up from Miami and so passed that entire flight in conversation. I was pretty tired by the time my connecting flight boarded and tried to sleep on that leg, unsuccessfully. Being tired must have contributed to not quite getting my camera all the way in my pocket, because I think it fell out on the plane. Efforts to recover it are underway. Meanwhile, if a video of me giving a tour of a hotel suite winds up on YouTube, drop a line if you please.
Overall, I think the trip was very worth while. I missed my family a lot and was very happy to be home with them again this past weekend, though the lingering fatigue of travel made me a grouch most of Saturday and Sunday. Having face to face time with a customer while kicking off a project is very good and I recommend it. Based on the utility of that alone I'm willing to repeat the whole exercise as needed, so long as that's not more than once or twice a year! Anyway, that's it for my Miami Travel Log. I know, not the most exciting read but it's partly for me that this is recorded here, and partly for any friends or coworkers who ask. Technical content will resume in the coming days or weeks. | | Read / Add Comments (0)
| |
Travel Log: On the Road in Miami - Part III
|
|---|
| Wed 4 Mar 2009, | |
Join me for another pulse pounding, spine tingling day of mayhem in Miami!
Living away from home for any amount of time is hard on a family. Talking with my wife on the phone while the kids are going ballistic over some random toy or other preschooler rant reminds me I both miss home and my family needs me there. It's hard to keep the attitude up and be positive.
One of the things I do to keep myself focused is to adopt and keep a healthy mental routine. I get up at the same time everyday, shower, pray, have breakfast and read the newspaper over tea. The whole process puts me in the right frame of mind to be my best for my clients.
Proper rest is also critical, which is why tonight I'm turning in at 9:00 sharp. Being in a different city, eating different food, drinking different water, being around different people, it all brings new stresses and strains as well as attacks on your body and immune system. Without good nutrition and plenty of rest, you quickly deteriorate.
I'm keenly aware of this today as rest has been difficult for me on this trip. It's just not home and while I'm sleeping, my mind knows it. Sleep is restless, almost uncomfortable - that persistent feeling of being out of place yet trying to be at rest and at peace with it. It's a skill I've lost over the years. At one time, I could fall asleep any where - literally. I once fell asleep on a 12 inch wide ledge and in High School, it was common to spend the night at a friends house on the weekend and sleep on the floor with nothing but a folded towel for a pillow and my coat for a blanket. I remember one day in school I wasn't feeling well and just went to the back of the class room and slept right on the thinly carpeted concrete floor. Liz Morgan asked, "Jerry, are you asleep?" to which I replied, "yes", to which she replied, "weird."
I can't over emphasize prayer. If you have a spiritual life, you know what I mean (or I hope you do). Putting my problems in context is a huge help. Knowing God is both in control and capable of giving me the ability to overcome my challenges is an uplifting and empowering thought. It brings me peace just thinking about it now as I'm writing. Whatever I am not capable of but need to do, God can enable me to do. It's a belief, yes, but a belief that is more powerful than facts.
Eating has been no problem. The cafeteria at my client site serves a wide array of healthy food every day and I've been getting a steady and solid supply of vegetables and proteins. Breakfast at the hotel (complimentary!) is very well done and provides again a good supply of morning carbs and fiber. For dinner I've been eating light but healthy. Whatever the assault on my immune system and health a lack of good sleep is taking away from me, nutrition and mental focus coupled with spiritual grounding is making up for.
Tomorrow I'll be having dinner with my surrogate team hear in Miami and Friday morning should be just getting work done before leaving early to fly home. God willing all of that will happen without problem. | | Read / Add Comments (0)
| |
Travel Log: On the Road in Miami - Part II
|
|---|
| Tue 3 Mar 2009, | |
This is the continuation of my travel log from last weeks trip to Miami.
Tuesday - Last night, I realized my lack of athletic socks and how that would hamper my ability to run... because you just don't run in dress socks... period.
I headed over to the nearby strip mall to see if there were any likely suppliers of white fluffy socks. There was but one small shoe store. As I approached, I realized it was mostly a woman's shoe store, but I saw socks on one small section of the wall behind the counter, so I went in to ask.
You may have heard that English is a second language to many in Miami, and it is true. Spanish is so prevalent, I listened to an argument in the office today that was thoroughly a mix, on both parties part, of English and Spanish, often bisecting sentences. I noticed though that the particularly heated exchanges were is Spanish. I also have noticed a degree of polite rudeness - I think it's the passion of the latin-american influence. People are quick to aggrandize and raise their voices, but also quick to understand their neighbor.
The pretty lady selling shoes and socks asked me if she could help me, in English. I asked for athletic socks. She turned to her muscle bound interpreter and he spelled out what I was looking for along with ankle high gestures. She did have some thigh high white socks, which she offered for me to examine, but they were thin dress hosiery. Muscle man kindly gave me (later proved inaccurate) directions to a Big-Kmart a ways off down the road.
Thus began my night time tour of south Miami. I headed for the target coordinates and began a cross search pattern. Not finding the Big-K east of the target intersection, I doubled back through a few side streets to the south and headed back north through the intersection so as to be able to see all corners clearly. No sign of it so I assumed I got one of the streets wrong and headed north. I was well past the air port, about 2 miles or so, when I figured it couldn't be that far north. So, I headed south again. I experienced many amazing smells along the way from various local restaurants, none of them bad. One thing South Miami does NOT lack is eateries.
Heading back South, I found I'd come a surprising way Norte. I continued past the original search zone to see if I could as yet locate the Grande-K. After going about 20 miles South, I figured I was loco lost. Fortunately, tieno un Map! (say "Map!" - for all you parents with kids who watch Dora). I located a highway on the map that I was probably near and hadn't seen yet and headed a bit further south to it, then West, just for the heck of it.
Nothing but residential areas. Some nice ones too. I hear it's a good time to buy here in Miami as the market is down quite a bit. Winter here is very nice, but you can have and keep the Summer from what I hear and remember of Orlando in August. Plus, Miami is in el tropics. It gets mucho caliente here in summer.
Eventually, my westward travels brought me to the main street my hotel is on, just far to the south. I headed north only to find that street actually was a very narrow two lane affair through a mix of bueno y mal neighborhoods. I was treated again to a wide array of aromas, from various flowers to folks grilling out doors. The sounds through my open windows reminded me so much of summer... voices echoing in the night, the songs of random insects I assume are crickets or cicadas or something... the breeze through the trees. Magnifico.
Finally, I made it back to where I started and went to Publix to get some food for the fridge (humus, spinach and tostadas, couldn't find any pita bread), but no socks. As I went to leave, I couldn't turn left to go to my hotel and had to go right, south again. I decided to turn around in the CVS parking lot. Then I decided to see if CVS had socks. Score! I tried out my Espanol on the cashier. "Como esta?", "bien, gracias... tienes un blah blah blah blah blah?" Holy crap - what? I just laughed and shook my head. "Ok, you don't have a CVS card, I'll just scan my own." Clever. She realized both my major gringo status and the fact that I was proffering no CVS card in one go.
Finally back to the hotel, now with proper socks, and I've still not gone and properly exercised. Seems I forgot to bring spare t-shirts as well! | | Read / Add Comments (0)
| |
Travel Log: On the Road in Miami - Part I
|
|---|
| Sun 1 Mar 2009, | |
When it looked like I was going to be spending some time away from home, my stomach sank. I hate being away from my family, and generally I'm not overly fond of travel anyway. I usually get sick, forget things, etc. Though, I do like a good adventure and pride myself on being able to summon the skills needed to survive any situation.
Towards the end of January, it looked more and more sure my client wanted me to come for a visit - and it was a long way from home. Miami, Florida, is about as far away as you can get from Columbus, Ohio, and still be in the same time zone in the United States. Since I loath flying, my thought was to drive. It would take two days or require a co-driver to do it in 22 hours flat. Either way, it meant a lot of sitting and tiring time behind the wheel.
So, after a little persuading from Scott Good, I opted to fly. Making it easier, Kat, our office Mom, took care of all the arrangements. All I had to do was show up at the airport Sunday afternoon and look dumb - harder than you think - I was smartly dressed. My father-in-law was kind enough to drive me and hopefully will pick me up when I return.
I'm writing this on the road to post when I return for security reasons. Which brings to mind out of office notification as an aside - I set up my friend, Ramon, with Gmail the other night when he and his wife Carmen were over. I showed him the vacation responder and said, "never use this.", explaining that it advertised to anyone sending you email that you were out of town and your house possibly unwatched and empty. Same thing applies for a blog entry that says you're out of town. Post it after your trip. Your family may thank you.
At any rate, flying down was a little choppy - brisk cross-winds in Charlotte, North Carolina in a small Embraer 50-seater. Fortunately, despite snow and wind at Columbus, my flight was right on time for my connection having departed right at 2:00. Even got to watch them hose the wings down with de-icing solution. I stood waiting all of 5 minutes for my flight on to Miami aboard a Boeing 737. Much smoother ride and landing. The Bonine, suggested by Scott, was also a huge help.
Kat set me up with Avis for rental which was great. Catching the shuttle was a bit of a game - only had two Avis shuttles pass me before I gathered a couple other Avis renters and we waved manically at a shuttle. After waiting in line for a half hour for my car at Avis (pick up bag, shuffle forward, set bag down, wait 5 min, repeat), I was told to go left out the door. Well, I went left, looking for a silver Pontiac G6 amongst trees as instructed. What I found instead was where the cars are washed and detailed, the repair area, and several nearly destroyed rentals. Some people are hard on the cars they rent! I think I saw the burnt out remains of a Corvette sitting next to the thoroughly mangled remnants of a Pontiac Grand Prix, or something GMish.
By the time I decided I was a bit too far off track, I turned around and realized I'd wandered a quarter mile with my bags looking for my car. A kind senorita pointed me back to where I came from and clarified "straight from door!". Ah - left out of the rental office, then straight. Got it. Found my car, nice too. Went to leave and realized - I had no clue where the heck I was. I knew where my hotel was from the airport, but not from Avis and riding the shuttle in the dark made it a bit difficult to tell where I had come to.
Looking up I saw which way the planes were taking off and headed that way. I found the airport no problem and started looking for the surface street Google Maps had shown would take me to where I wanted to go. But, uh, a bit out of date would describe the map. No way to turn where the road was supposedly at, so I did the circuit with the rental shuttles, this time it was me dodging people trying to catch rides and speeding past as though they weren't there. Somehow both gratifying and unnerving.
Coming out of the airport again, I was able to catch my turn past the fuel tanks and meandered over to my hotel, which turned out to be very nice, once I got there. Some other turns and roads shown on Google maps were also (no longer) surprisingly absent.
I had put off eating all day to keep my motion sickness in check, so I was starved by the time I got to my room at 8:30. Thankfully, the front desk had recommended three nice restaurants that deliver, so I ordered a chicken and mushroom kalzone from an Italian place, which took 45 min to arrive... yeah, starved about covers it. But! it came with a bottle of Perrier!
My first night of sleep wasn't great but was sufficient. Breakfast at the hotel was really nice, scrambled eggs, cottage cheese crepes, sausage, tea, milk and a banana. Another nice perk I found, complimentary Wall Street Journal. I was up early enough to read it leisurely in the lobby, which I enjoyed as it's something I've never done.
It was also handy to have the WSJ to read as I was about a half hour early for my appointment with the client. First day was productive, off to a great start, and gave me a good read of what I would be able to accomplish in the 4 1/2 days I'm scheduled to be here.
A good first day of work. Miami weather has been very pleasant and I love the smell of the breeze off the ocean. Cloudy today but still warm enough to only really need a t-shirt. It also occurred to me that I'd like to see more of Miami, which I'll get to next time. | | Read / Add Comments (1)
| |
Finance: A New Era of Transparency in Government
|
|---|
| Fri 13 Feb 2009, | |
Transparency? How can it be a transparent administration when it endorses ramming through legislation NOBODY has been allowed to read in full before a vote? It's sad than only 7 Democrats in the House have the integrity to resist.
| | Read / Add Comments (4)
| |
ActionScript: Organizing ActionScript Source
|
|---|
| Wed 11 Feb 2009, | |
If you've followed Jake's Flex tutorials, you probably have a very wet appetite for more. Not meaning to trump on tangent, I want to get into what matters to me, and share it with you. Well organized code.
The first thing you want to do when creating a flex application, naturally, is start scripting events. It's difficult to do much with out it. Jake already got us well on our way with some embedded script routines using the <mx:Script> tag. The next step making this script usable in other .mxml files is to put it in a standalone .as script file, using the source attribute on the mx:Script tag as you would with Javascript. This is where ActionScript is a bit more like JavaScript.
<mx:Script source="commonRoutines.as"/>
You could also add unstructured ActionScript to you file with the include statement.
include "commonRoutines.as";
This puts the contents of the included file right where the statement is, very much like ASP.
This is well and good, but unlike JavaScript, an .as file included in this fashion can not contain classes. To do that, you're going to have to go the more Java like route of creating packages. This is a whole lot more complicated, and Flex Builder can be very finicky about how you set this up, so details are going to be important. Let's have a look at import first.
import ts.core.commonRoutines.MyClass;
This imports the MyClass class definition from the ts.core.commonRountines Package. You define this in an .as file as follows.
package ts.core.commonRoutines
{
public class MyClass
{
}
}
If I had more than one class in this package, I could have said import ts.core.commonRoutines.*; to get them all in one go, but my compiled code would be heavier.
Now - an important note about using packages. The package name, like with java, defines a path structure. Also, the file name defines the class name contained within. Additionally, components that do not contain ActionScript but only contain mxml are also accessible as classes via their file name. Confusing? Took me a little while for that all to settle in.
The correlation to Notes is if you created a subform and put it in your "class path" if Notes had one, which it actually does - the database root itself. That subform and its fields would be accessible as a class in LotusScript if it were an mxml component and ActionScript we were talking about. Really rather cool. But, as for packages...
ts.core.commonRoutines.MyClass
should look like this in the file path structure:
ProjectFolder/libs/ts/core/commonRoutines/MyClas.as
Rigid is what it is. But it keeps us straight when we have hundreds of classes and packages to deal with, so good thinking I say.
That's about it for option on organizing your ActionScript code and fragments thereof. Aside from syntax, figuring out all the ways I could access ActionScript and Flex objects through it was the most challenging part of jumping into Flex thus far - at least for me it was!
| | Read / Add Comments (0)
| |
Tools: IDE's and more
|
|---|
| Mon 9 Feb 2009, | |
Several gentle reminders lately to the fact that I've been short on technical content have arrived from various sources. I have also been learning a lot lately thanks to the efforts of Jake Howlett and his super flex introduction. As I've had a lot of xml to work with as well as a lot of varied development, the following short list of new tools you should give a look came to mind today.
Aptana - The community edition is powerful enough to be very useful for CSS, Javascript and more. I used it extensively for a month or so with the built in jquery support. It comes with a pro version 30 day trial and that, so far as I can tell, buys you a few more project start up options and JAXTER (server side JavaScript) support but the community edition is powerful enough. Based on Eclipse.
XMLPad - there is a simple xml pad type tool available for windows, which is what I was looking for when Google turned this up. I downloaded it and love it for a quick, light-weight, XML browser and editor. Very useful for analyzing and editing static XML or browsing its structure. Free!
DiffMerge - from SourceGear, more use for analysis than coding, but very very nice for comparing files and folders to find those elusive little errors. Free!
It goes without saying that I've been playing with FlexBuilder (60 day trial) as well. Will probably be getting the pro version through work as it's definitely not free. But, that brings to mind that most of these new IDEs are taking advantage of the Eclipse base. Running Same Time in Eclipse, plus Flex Builder 3, plus Aptana (I run Notes in basic mode as the eclipse version has yet to win me over) is too much for my lowely 2 GB laptop. Adding more memory probably would help, but Win XP only will make use of 3 GB from what I hear. So, memory utilization has to be considered when loading up a lot of new tools, which is why I like the smaller specific purpose tools so much over the larger general purpose IDEs. Note that with Aptana you can download it as an eclipse plugin to add to your existing instance of Eclipse, but your mileage may vary. I'm not sure what performance would be like with Domino + Aptana or Flex Builder + Aptana plugin.
That's about all for now - madly learning flex at the moment, so back to it! | | Read / Add Comments (0)
| |
Finance: Creating Jobs
|
|---|
| Fri 6 Feb 2009, | |
Job creation is a funny thing. First, you need an idea, then a product, then a market, then growth. It's a delicate balance of supply meeting demand, timing and environmental factors. With the wrong business climate, one in which buyers are skittish or few, or one in which competition is strong, creating jobs requires more skill, more refinement of core business practices, tuning of your offering and better communication of your value proposition.
Creating jobs is an art. There is very little historical evidence to suggest that a hastily conceived formula can work broadly or repeatedly, except in times of war where creating jobs is not so much done as met. There are, though, some factors that must be in place and can be measured and predicted (to an extent), bringing a bit of science to the mix.
The obvious prerequisite to creating and sustaining jobs is cash flow. A one time infusion can help a company ramp up production, but that infusion usually is a loan that must be repaid or investors that expect a dividend. After that is used, the business model has to sustain the cash flow or the jobs can not be sustained. If the cash flow declines, more money has to be found, and if borrowed, repaid.
Generally speaking, smart businesses don't borrow more money than they need - and more to the point (as my Great-uncle Lou said) - "don't borrow more money than you can make with the money you borrow". There has to be an ongoing net positive in order for the business to continue as there will always be costs beyond just paying wages.
That brings me to this week's criticism of our elected representatives and public servants in government. Here's what some of them (erroneously) believe makes for smart job creation economics.
Sen. Mitch McConnell (R-Ky.) pointed out that Democrats continue to insert amendments that add to the bill's $1.1 trillion total. "What people don't realize is how much it costs to create some of these jobs," McConnell said. "Here's what [analysts] found: $524 million for a program at the State Department that promises to create 388 jobs here at home. That amounts to $1.35 million per job. [Another] $125 million for the D.C. Water and Sewer Authority. That comes to $480,000 per job. Surely there are more efficient ways to create jobs with taxpayer dollars than this."
Surely. Remember what I started out with - you need a product, but also a market. Public services, such as those provided by the D.C. Water and Sewer Authority, provide the service of clean water and waste treatment. Their market is the tax-payers of the District. That makes for a tricky business model. Indeed, you'll oft notice that public works seldom show a profit. When the market declines, the tax base declines and services must be contracted rather than expanded. Creating artificial expansion at a time of natural contraction just widens the gap between cost and value. Tax-payers are also harsh consumers who demand the services are provided at cost or a loss. It's difficult to see this as the basis of a sound business plan. If all the world were public works, taxing those workers would never sustain the system. It's called "diminishing returns".
So, it can't be said that public works jobs are sustainable. Indeed, public works and government services should not be viewed as something to be sustained as it should never provide more than can be funded through the prosperity of the tax base. Funneling money, then, into public works and government services dose not constitute economic stimulus. It constitutes expenditure, and in this case, deficit expenditure.
What then creates jobs? The previously mentioned basics. Idea, need, product. Job creation can only happen in an environment that provides the opportunity for the person with the idea to engage in business with the folks who have a need of the product. When taxation prohibits this, when pork spending upsets the natural balance of price-value competition in the free market by artificially stimulating some portions but not others (picking winners and losers), there is little hope or incentive for the entrepreneur and little chance jobs will be created.
Indeed, it has been said and I agree, the government can't spend us out of trouble. The balance in the market has to be restored by removing government interference from the free market in as many ways as possible. The sooner a public service oriented institution stops trying to play the role of the profit motivated entrepreneur (which they are not), the better it will be for everyone. Nationalization crushes the free market by replacing it with public-works style business models, which always operate at or near a loss and never truly create sustainable jobs. We need to prevent our leaders from leading us further towards nationalization if we really want economic recovery. | | Read / Add Comments (0)
| |
Freedom: Population Control Good for Economy
|
|---|
| Mon 26 Jan 2009, | |
I wish I could say we didn't see this coming, but it seems almost cliche that socialist ideals ultimately lead to preventing the birth of more people. I guess the notion that people are bad for the world goes hand in hand with the notion that people are expendable. Nancy Pelosi, speaking to Georg Stephanopoulos, made no apologies for adding birth control to the economic stimulus package working its way through the senate now.
So, for those of you hating my right wind paranoia, let me paint for you the picture of sanity. Having children stimulates the economy, generally. Children require food, clothing, education, entertainment. These things are generally purchased, one way or another, thus stimulating the economy. The exception, and this puts the class warfare to Pelosi's ideals, is of course in the case of low income, welfare receiving families. To her, birth control is going to save states money because she is only all too aware of the growing number of those dependent upon welfare - a situation fomented and propagated by socialist ideals. So naturally, she sees limiting their breeding potential as a cost savings. One dares wonder how long before it becomes compulsory.
Thank God for Christian (and other God fearing) ideals where every child, regardless of economic status, is worth conceiving, bearing and raising. Rather than fund the prevention of life and fund the termination of life (as our president's recent overturn of the Bush ban of federal funds to international abortion providers) we should fund organizations that bring hope and life in the same sentence. Compassion International is one such organization. They provide education and nourishment to children in desperate economic situations along with a hefty dose of hope, the best kind, the kind that comes from knowing Christ as your savior rather than the government. In it's emerging incarnation, our government is becoming the destroyer and reducer of life. Where's the hope in that?
Do low income Americans (predominately black) feel this is the hope and change they voted for? I would guess not. I pray president Obama utilizes his line item veto authority on this - otherwise he risks the attrition of the base that elected him, as well as a good portion of our collective future. | | Read / Add Comments (15)
| |
Freedom: Things To Come
|
|---|
| Thu 22 Jan 2009, | |
Dick Morris has a visionary, if not (sadly) easily predicted, write up of what we can expect of our new president. In summary:
...Obama will accomplish his agenda of “reform” under the rubric of “recovery.”...
...In the name of short-term stimulus, he will give every American family (who makes less than $200,000) a welfare check of $1,000 euphemistically called a refundable tax credit. And he will so sharply cut taxes on the middle class and the poor that the number of Americans who pay no federal income tax will rise from the current one-third of all households to more than half. In the process, he will create a permanent electoral majority that does not pay taxes, but counts on ever-expanding welfare checks from the government. The dependency on the dole, formerly limited in pre-Clinton days to 14 million women and children on Aid to Families with Dependent Children, will now grow to a clear majority of the American population.
Will he raise taxes? Why should he? With a congressional mandate to run the deficit up as high as need be, there is no reason to raise taxes now and risk aggravating the depression. Instead, Obama will follow the opposite of the Reagan strategy. Reagan cut taxes and increased the deficit so that liberals could not increase spending. Obama will raise spending and increase the deficit so that conservatives cannot cut taxes. And, when the economy is restored, he will raise taxes with impunity, since the only people who will have to pay them would be rich Republicans.
I sincerely hope this does not come to pass, but it seems terribly likely. There will no doubt be a few rich Democrats, but those not politically connected will feel guilty about their wealth and will have no problem with higher taxes, and those politically connected (most elected officials) will have or know of the loop holes to avoid it.
We're headed for a socialist bent that will last decades. Perhaps we'll get back to social and fiscal conservatism in the late 2020's. But, like the current federal girth, no one will ever have the political will or ability to pair it down. You can't ever cut government generated jobs because it would raise unemployment, and a glut of government generated jobs is unsustainable as it generates no new money, only takes it from tax payers.
Here's my contribution to the conversation: We've held long dear in this country the principle of No Taxation without Representation. I think it's high time the reverse were made as dear - No Representation without Taxation. If you are not paying into the system you should not have a vote in how it uses the tax dollars of those who do. Again, the best and surest way to save America from a myopic glut of non taxpaying voters is a FLAT tax for all. Placing the burden on the wealthy alone will be the quickest and surest way to kill the economic power of America. But I suspect our president understands this well as he has surrounded himself with a cabinet full of people who have agitated for this for many years. | | Read / Add Comments (4)
| |
LotusSphere: Relevant?
|
|---|
| Fri 16 Jan 2009, | |
So, as you might expect, my cool bosses are going, my customers are going, a couple hundred product reps are going... and still, after having been once and only once, I wonder what the allure is.
Mostly, I wonder what the value is. Most of the things I see people present are things that can be presented in written form just fine and without the expense of travel and admission. Webinars, blogs, social software - all of these combine to provide the substantive content. From that perspective, are big expensive conferences relevant as a means of information sharing and dissemination any more?
Allow me to beat several of you to the punch. One thing electronic media will never replace is human contact. Going to a big conference isn't the power point presentations or the swag, it's making contacts - meeting your customers, your competition and lots of friends. Computers are great, but they are not flesh and blood. Words on a screen don't laugh, sweat before a hundred onlookers, crack a joke over a drink or show a tell while trying to bluff you.
So despite having only been once, and only having been on a vendor pass, the experience was worth while and as long as we are all still humans and not just scripts running on servers, getting together, even for a pricey pool-side party, is worthwhile. :-) | | Read / Add Comments (2)
| |
Freedom: Pelosi Shuts down Debate
|
|---|
| Tue 6 Jan 2009, | |
If you know me, you know I love debating the issues in a civil and well reasoned manner. The Dems crown of three-branch power is still steaming ripe and here we go with Kremlin style politics. Cheers! (from FRC)... So much for a spirit of bipartisanship. While President-elect Obama pledged to make the government "open" and "transparent," House Democrats are making it virtually impossible for him to keep that promise. Today, Speaker Nancy Pelosi (D-Calif.) kicked off the 111th Congress by stripping Republicans of any input in the legislative process. By a vote of 242 to 181, Democrats reversed a set of fairness rules that dated back to Newt Gingrich's Contract with America. As a result of the vote, House Republicans can no longer offer substantive alternatives, propose certain amendments to Democratic bills, or force a free and open debate.
It's classic good vs evil - really. The good guys you can count on to make fair rules and play by them even when the bad guys break them. The bad guys you can count on making rules that benefit them and throwing out the ones that might benefit the good guys, even though they themselves were aided by them in past legislative sessions.
At this rate (socialist monetary policy: check, stifled political debate: check) we're not too far from Russian "democracy" as currently employed by the former KGB - reporters on the Right, take note, possibly take cover, and definitely take out a life insurance policy. I hope folks take note of a couple of things here: Putin (via his puppet, Gazprom) cut off heating fuel to Ukraine on the coldest day of the year (to date) today, hearkening back to the merry old days of Joseph Stalin, who, using a strong central government model (you 01dsk00l3rs know it as communism) starved TWENTY MILLION people in the dead of winter. It's no longer the slippery slope, comrades, it's the elevator shaft straight to hell - sans carriage. How do you like your freedom, rare? | | Read / Add Comments (5)
| |
Experiment: Currency Split
|
|---|
| Fri 2 Jan 2009, | |
So I see in the news today the Democrats want $1 Trillion (what is that, 12 zeros?) to spend on their socialist schemes. Here's an idea. Let them. Let them print their own D$ (Dem Dollars). The Republicans can do the same with p$('pub Dollars - to keep the catchy name appeal going). Businesses can start converting their money to D$ or p$ and their employees can decide to accept the denomination of their preferred affiliation or demand their employer back the proper currency. Products and services can be made available in one or the other or both. Public demand for the currency of the party will determine the failure or success, as well as ability to screw with tax-payers, of the given party.
I wonder how far that D$1 Trillion would go and how long it would take one currency to beat out the other. That would be an interesting experiment. After both currencies collapse we can convert to bottle caps... or honey-roasted peanuts... mmm... | | Read / Add Comments (4)
| |
CSS3: Alpha Shading
|
|---|
| Thu 1 Jan 2009, | |
Works with: Firefox 3, Safari for Mac. Any other browser this just isn't as pretty.
Alpha shading has come a long way over the years. For the laymen, that's the transparency (or conversely, amount of opacity) of an object. With the CSS style selector opacity: 0.7 you would set something to 70% opaque. If you apply this to a container, the entire contents are now at this level of transparency, not always the effect desired. What if you want just the background to be transparent or just the text?
With more up to date browsers, you can specify a color like so: rgba: (255,255,255,0.5); This allows you to only change the color of a given item - specifically useful if you're styling the background of an object and don't want to apply the transparency to descendants. Yes, you could add more tags and give each item it's specific opacity, but using the rgba notation can save you some hassle by allowing you to style the color attribute only.
Here's an example with the following style applied: #test1 {opacity: 0.5; border: 1px solid black; background-color: white;}
#test2 {border:1px solid black; background-color: rgba(255,255,255,0.5);}
The first div is transparent in all respects, notice the border. The second only has the transparency applied to the background color. | | Read / Add Comments (0)
| |
Cool: Apollo 8 Christmas Greeting
|
|---|
| Thu 25 Dec 2008, | |
| | Read / Add Comments (2)
| |
Faith: Merry Christmas!
|
|---|
| Wed 24 Dec 2008, | |
What an interesting time we live in. I forget what language has it, but it's a curse - "may you live in interesting times". I don't know if we're cursed above and beyond the curse of our sin, but I know we are blessed. Thank God for making a way for us to have peace in times such as these. I sat at a table at church tonight during fellowship, following our Christmas Eve service, with folks who were laid off or losing jobs and some who had jobs or job offers. Have you ever known a person with an unworldly sense of peace about them? I'm so fortunate as to know many. They're Christians. Sure, things can get us down but when we're most down is when the peace we have in Christ is most close at hand.
I hope this Christmas finds you full of this same peace. It's not the presents under the tree that makes this a really special time, it's what happened on a tree so long ago. Christ crucified for you and for me, so we can know true peace, no matter what stormy season the world may hurl our way. God bless you this Christmas and in the new year to come. | | Read / Add Comments (2)
| |
Life: Raise the Gas Tax?
|
|---|
| Fri 19 Dec 2008, | |
Wired contributor Dave Demerjian posted today that he believes it's time to raise the gas tax. Aside from many other misleading analogies in his article, I dealt with the most salient in a post that will be lost in the flood of comments from other readers. Copied below for conversation sake.
The problems with tax as a means of pushing social change are many.
Firstly, social change is fluid and nimble - taxing authorities are not. Long after you got what bit of change you wanted, the government will still be taxing and a repeal will be coming shortly before hell has snow days.
Secondly, juxtapose free market influence to governmental influence for a moment. Folks are penny conscious right now and have stopped buying inefficient cars all on their own. Your answer would seem to be that this isn't good enough and the government needs to hold our faces to the tail pipe like naughty little dogs who have stained the carpet. The government answer presently, in response to our free market choices and their effect on certain manufacturers has been? - bailout. That's right. We're having an impact via our buying decisions and the Fed is stumbling all over itself trying to keep THAT from looking like it works.
Lastly, you environmental and or ecological motives may be noble, but you are faced with the difficult job of selling a tax to a populous you would sacrifice in the name of your principles. Taxing gas taxes working folks - those who sweat more to drive the gears of the economy behind the wheels of their cabs and semis. Then there's the millions of us who commute. Increasing our cost doesn't change our behavior, we have no choice. What you will do is change our buying habits. It's called the law of unintended consequences. What goes first? Entertainment, dining out, buying gifts, charitable giving... if the high gas prices didn't already show you the knock on effect to the economy, you're blind, my friend.
The other faults in his pitch were "digging into our national parks". I get the feeling a lot of environmentalists have never actually a) been to the proposed drilling sites or b) looked at a map. The areas set aside for work are mere postage stamps compared to what is there. The whole unhappy elks in Alaska up at ANWAR is a crock too - the drilling site proposed is nothing but barren rock. I think it's probably visited by humans less frequently than the moon. I know a guy who rode his bike up there and brought back pictures. You might as well be on the moon for all the scenery you see. In fact, you pass the northernmost tree in the US several hundred miles south of there.
One thing I do agree with the author on. A time of turmoil is a great time to think in experimental and inventive ways about how we do things. Government, to me, seems like the biggest area where we could stand some reform and improvement - and no, of course I don't mean growth.
When is the last time the government said "We're going to _______" and every one said "Yeah!" - right - afore mentioned moon shot. Point being, a large and powerful government can do really amazing things, but for the most part, a bureaucracy awash in bureaucrats is just a bloody inefficient mess. If the government were a private enterprise, they'd be brought before congress to explain themselves. I understand services must be provided, but our government has gotten very good at embellishing those services to the point where the IR$ makes sense to the bewildered masses.
I'm not about to hoist aloft the lightning rod of suggesting we disband that merry band of tax collectors. But I do suggest we get serious about the way we allow ourselves to be governed. I said before - the greatest thing in an Obama victory was that the down trodden masses of indifferent souls got off their collective posterior and took action. If one segment of the population can say "enough is enough" and do something they deem effective, can't we all?
This is the information and knowledge age and we as a populace, I would think, should be well worn of bloated governments with wasteful spending. It's a ripe time for innovative ideas in governance to be openly discussed without fear of reproach. It's about time governments learned to live on a budget like businesses and families do. It's beyond absurd to pay into a system demonstrably wasteful. No, I don't have an answer yet - but I'm working on it. Hopefully many other folks are doing the same.
| | Read / Add Comments (0)
| |
Life: Unemployed? Congress Gave Self Raise!
|
|---|
| Fri 19 Dec 2008, | |
It beggars belief. Congress voted themselves a nice little pay raise. No, I'm not kidding. Oh, wait, I get it - this is the "Change" we are to expect with Obama firmly in control. Crazy. | | Read / Add Comments (2)
| |
JavaScript: JQuery Event Binding Tip
|
|---|
| Tue 9 Dec 2008, | |
I've been using JQuery a LOT at work lately and loving it. It lives up to its promise to allow you to do more and write less code. Presently I'm working on a totally dynamic interface using JQuery a lot. I discovered an interesting thing with Event binding though worth noting.
When you bind an event, it's like writing the Javascript directly into the HTML. For example, $('#somediv').click puts your function in the OnClick event for the target element. What I found was that this is an append, not an overwrite by default. So if I call a function that performs the Event binding more than once, my function is now 'bound' multiple times, which would cause my OnClick event to fire the target function multiple times, likely or possibly with unintended consequences.
To prevent this from happening, just call .unbind before you bind.
$('#somediv').unbind('click');
$('#somediv').click(function() {stuff;});
After that, the function is only bound a single time each time, not cumulatively. You can imagine that took more than a couple of minutes to figure out! | | Read / Add Comments (0)
| |
Life: Newsweek Gets it Wrong
|
|---|
| Mon 8 Dec 2008, | |
Apparently, Newsweek has been making a very selective reading of the Holy Bible. A recent article claims the Bible doesn't support monogamous heterosexual marriage as an institution and in fact supports homosexual marriage. *sigh*
Well, regardless of my personal feelings, that's just plain inaccurate. The author first makes the case that marriage as related in the Bible is flawed (it's a historical record in some aspects and records mans faults, obviously), then she states that it is given 'lukewarm endorsement', but then claims it offers many good reasons for gays to marry. Gays but not straights? That's intellectually weak on its face, I'm sorry to say.
Furthermore, the Bible (whether we may like it or not) DOES clearly speak about homosexuality as a sin. Romans 1:18 through 1:32 makes it pretty clear that homosexuality puts the creation and body before God - turns the heart away from God, and is unnatural. Debate the finer points all you like, scripture is quite clear here. Anything that takes our focus off of God and puts it on our own desires separates us from God. When that happens, we can have no relationship with Him and no real or lasting personal peace.
During Old Testament times, under Levitican Law, homosexuality, incest and bestiality were considered the same - capital crimes. Here again, it doesn't matter what we think about this or how we apply it, it's clearly not speaking in favor of homosexuality. To the contrary, the Bible repeatedly paints a picture of man and woman in a God fearing union. Go study it for yourself - there's a lot to read.
So what does the Bible have to say to gays? A lot, actually. Contrary to popular misleading, Christians, Christ and the Bible do not teach or preach hatred of people because they commit what the Bible calls sin. Christ said he came for the sinners, not the saints. He came to earth to enable us, by His sacrifice, to be restored to a relationship with God like that originally had by Adam and Eve before the fall of man. In order for us to realize this, however, we have to die to our lusts, our self centered passions, and start living for God with our hearts (followed by our minds) opened and turned towards Him.
This same rolationship is available to all of us. Until recently, I mistakenly believed it was a cognitive process coming to Christ. The more I learn though, I realize we can never have a cognitive realization while our hearts prevent it, and our hearts just aren't willing until the Holy Spirit moves in us. It's a mystery, but I've witnessed it enough times (and experienced it myself) to believe it. I don't expect everyone who reads this to feel the same things or understand - but I wanted the record to be set straight in one small corner of the web.
So, am I "hating" on gays? Far from it. I have friends I care about and respect who have decided to live their lives this way. It's not hateful for me to hope they come to experience a relationship with God some day too, and I'm not one to say their experience will be the same as mine. One thing can't be disregarded though - if we claim to know and love the God of the Bible, we can't twist the Bible to our liking. At some point, every sinner - each of us - has to come to grips with The Bible and God and either accept it or reject it.
If you think the Holy Spirit might be speaking to your heart, all you have to do is pray God will make it clear to you. You might start by praying something like: "God - I know I've sinned according to your standard, and I know you sent your Son to die as the payment for that sin and without him the payment for my sin is death. God, I ask that you forgive me for my sin so that I might live a new life, as your word teaches, renewed and restored. I accept the gift you freely offer me in Christ's sacrifice. I want to live anew in Christ's resurrection. Thank you God, Amen." If you felt led to pray that prayer honestly, you are now a Christian! Pretty simple really, but a challenge every day. Get yourself a good study Bible and start studying - find a Church and start attending, and pray for wisdom. Here's a good online resource: The NET Bible
If you disagree with me or think I'm wrong, don't sweat it. It doesn't mean I don't care or hate you - golly... it means you can talk to me if you want to and I'll be happy to talk back. No strings attached. A guy I knew in High School used to say "nobody's perfect and I'm the perfect example". I think most of us can fit in there somewhere most days. The trick of it is to try to do better.
Thanks for reading!
| |
Web: JSON or XML?
|
|---|
| Mon 8 Dec 2008, | |
The question, JSON or XML, is not posed so much as a turf war inducing prod but as an examination of propriety. When would you use either and what are some favored methods (and frequent pitfalls) worth discussing?
In my brief experience with these two data encapsulation formats, I've learned things are never as easy as they appear. With XML, you have schema and validation concerns. With JSON you have validation in the sense that it must be valid JavaScript. With both you have to have a way to communicate the meaning of the content to the consumers, either via a description file (like a WSDL) or through documentation.
Bandwidth concerns really aren't so much a concern as they were in the past. The fact that you're loading the data as a message and not the entire page makes any delay small in either case, but likely smaller for JSON as there is very little space wasted on markup. But this does raise the question of security. An easy way to access JSON data is to use an eval statement. Unless you're the only consumer, e.g. you don't plan for others to use it, you would have a difficult time convincing folks to use your service. It goes without saying (which is my way of saying I'm going to say it) that you should never eval or use a hosted script you don't own or explicitly trust.
So, presently, it seems the arguments for and against each balance out. The only real effort is coming up with a schema and designing your object. In that case, JSON is the easier choice though there are plenty of tools that make it a simple task for XML as well. Processing time likewise could be considered to be function of the complexity and size of the message.
Horses for courses, in the end. If it's a small bit of data, JSON is probably the quickest way to get rolling. If it's going to be a complex affair with public exposure or you have standards based concerns (there is presently little in the way of adopted JSON standards) you probably are warranted the minor extra effort and thought that goes into XML.
I will say, though, XML requires far more planning and forethought than JSON. So again, here we have not so much a detraction for XML as a qualifier for when to use it. Robust systems designed to scale well should probably use XML. Small systems (or small components) with little or no plan to ever expose the functionality are probably quickest served by JSON.
As a side note, I found it interesting to know that the State of Ohio has totally disallowed AJAX for the moment as it presents "too much surface area" for potential attacks. I found that to be an interesting statement, but these are the folks that are paid to be paranoid and keep our private data private, so I take it with some authority. If you found yourself in this situation, JSON will be harder to implement without a special server component to evaluate JavaScript server side (something that is becoming more common by degrees) and XML (readily consumed by many server side languages) becomes the clear choice. This brings up another instance where you'd want to use XML - where the data provided must be consumable by a server based service. The abundance of XML parsing tool kits for server side processors makes it a defacto standard in this scenario.
Any one have strong feelings one way or the other? | | Read / Add Comments (8)
| |
PHP: Write to Text File
|
|---|
| Thu 4 Dec 2008, | |
The longest journey begins with a single step - so the saying goes. On my way to mastering PHP (lofty goals make good targets) I'm breaking down the basics. Writing to a file back on the server is something we take for granted with Notes - it happens every time you save a document. Being more nuts and bolts, but also a bit more elegant than LotusScript, PHP requires its own approach.
<?php
// get values passed in from html form
$url = $_REQUEST['url'];
$link = $_REQUEST['link'];
// the name of your file
$filename = "linkvals.txt";
//insert urls to txt file
$inserturl = '<a href="'.$url.'" target="_blank">'.$link.'</a>';
// compose string
$fp = fopen($filename,"w");
// open file in write mode - note, file must exist or you get an error. File will need permissions 777 for php to write to it
fputs($fp,$inserturl);
// write to file
fclose($fp);
// close file
echo 'done!';
?>
There's the nuts. Here's the bolts. You'll need a simple HTML form to submit to this page.
<html>
<form action="writefile.php" method="Get">
<fieldset>
<table width=30%>
<tr><td>Link URL:<td><input id=url name=url type=text />
<tr><td>Link Text:<td><input id=link name=link type=text />
<tr><td><td><input type=submit value="Save" />
</table>
</fieldset>
</form>
</html>
And that's all you need to start appending text to a file. Next time I sit down I'll have put together a demo for reading and making use of the info above. After that, I plan to get into XML serializing/deserializing. Yes, Mr. Barton, XML. :-) Baby steps. | | Read / Add Comments (2)
| |
Life: Terrorists Still at Work
|
|---|
| Sat 29 Nov 2008, | |
My deepest sympathies to those of you with relations (or are living) in Mumbai / Bombay. The senseless acts of a few will be felt for a long time. Good friends of mine have close family living there and I know this past week has been a trial for them as well. Our prayers and thoughts are with you.
To the rest of the world, and please don't read this as me being opportunistic, I hope the significance is not lost on you. Terror attacks have hit every major continent in the past decade. This is a marked increase in frequency over the past 50 or 60 years. I hope and pray the nations of the world never lose the will to fight this form of tyranny, or any other. Political winds are changing in the US and amidst other powers lining up a new cold war - but turning our focus only to brinkmanship with a decentralized and emerging communist power base would be a huge miss.
The need to continue the effort to root out radical extremists bent on nothing but death and destruction should be readily apparent. Please do your part, where possible, to remind your elected officials (where applicable) to stay on task. | | Read / Add Comments (0)
| |
PHP: Custom Home Page
|
|---|
| Sun 23 Nov 2008, | |
One of the tools I use to teach myself new languages is recreating things I know well in the new language. When I first was learning JavaScript a while back, I created a JavaScript driven version of my custom home page. It's a simple table, divided into columns, with links I use frequently. I find it more friendly than bookmarks or favorites. Here's a boiled down version in PHP, which I've started studying a lot more lately just for personal interest.
This uses the tagged lists in PHP to make a two part array simple. A basic loop with some branching logic draws the table, adds section headers and sets up column divisions based on key value for the list item. It's really basic and my first go at utilizing PHP outside of connecting Domino to Paypal (my first experience with PHP, in which I took a PHP page, a PHP manual and a couple long weekends to make a Java equivalent for processing paypal payments.). If you see any room for improvement (techincally, not features so much), feel free to point it out.
<?
$linkstart = "<li><a class="linkage" target="_blank" href="";
$linkmid = "">";
$linkend = "</a></li>";
$links["Email"]="section";
$links["http://mail.google.com"]="Gmail";
$links["http://hotmail.com"]="Hotmail";
$links["col2"]="column";
$links["Reference"]="section";
$links["http://net.bible.org/bible.php"]="NET Bible";
$links["Shopping"]="section";
$links["http://CBD.com"]="CBD";
$links["http://half.com"]="Half.com";
$links["http://overstock.com"]="Overstock";
$links["http://fatwallet.com"]="Fat Wallet";
$links["Social"]="section";
$links["http://linkedin.com"]="Linked-In";
$links["http://facebook.com"]="Facebook";
$links["http://flickr.com"]="flickr";
$links["col3"]="column";
$links["Dev Links"]="section";
$links["http://codestore.net"]="Codestore";
$links["http://codeplex.org"]="Codeplex";
$links["http://datatribesoftwerks.com"]="Datatribe";
$links["http://devguru.com"]="Dev Guru";
$links["Help"]="section";
$links["http://dev.mysql.com/doc/"]="MySQL Docs";
$links["News"]="section";
$links["http://drudgereport.com"]="Drudge Report";
echo "<table id="linktable"><tr><td>";
echo "<ul>";
foreach ($links as $key => $value) {
if ($value == "section") {
echo "</ul><h3>$key</h3><ul>";
}
elseif ($value == "column")
{
echo "</ul><td id="".$key.""><ul>";
}
else
{
echo $linkstart.$key.$linkmid.$value.$linkend;
}
}
echo "</ul></table>";
?>
This week and next, unless something comes up, I'll be spending work time learning more about - dramatic pause - SharePoint and .NET - something we hope will broaden our competitiveness. Time spent at home will be on more of PHP, MySQL and again Linux. For the most part, I've moved over to Ubuntu completely at home. Everything I need to do can be done here now except gaming, which I'm doing on a windows 2003 server customized to be a drop dead fast gaming platform. So far so good an all counts, and the geek in me is full up on happy. :-)
Footnote: in preparing this post I found this handy tool for formatting PHP to display as HTML. I used the ' encode text to html ascii entities' option. Simple but effective. | | Read / Add Comments (3)
| |
Business: Healthy Competition
|
|---|
| Fri 21 Nov 2008, | |
Here's a quandary - two sales people, selling different products with a slightly overlapping product space are selling to the same customer. Generally, no problem. Competition like this is healthy. The losing sales person will take a way a life lesson and try to do better next time. Normally. What if the sales people work for the same company? Each has a unique message for the customer, a unique offering and each is trying to convince the customer the correct solution is the one they offer. If they come from the same large international business (selling machines perhaps), what is the customer to think? Moreover, what is the sales person supposed to do with themselves when their executives promote the other product right over their head? Or, lets say the losing sale in this case is a partner in business with the vendor and the vendor tells the customer to ignore the business partner in favor of the flavor of the month? How can a person or a firm succeed in this?
The story presented here is far from allegorical as many of you personally know. What should further concern you is an experience I had to see a separate set of sales people, from separate companies selling similar software but with a critical difference. They were cooperating, even complimenting each other in the way they operated and in what they offered. The overlap was carefully orchestrated into a mutually beneficial strategy. These vendors from, we'll call it MacroSales, had what the folks selling those machines for business internationally are totally lacking - coordinated mutually beneficial tactical and strategic sales operations.
And witnessing it was a breath of fresh air. Some of the creeping market share erosion we've seen for our beloved product is no doubt directly linked to this. What really makes it a sad tale is that people I've come to respect are caught up in this machine doing their best to make a buck and help grow the market but are getting picked off by so much high level executive sniper fire. This is a tragic state of affairs, but one long rooted in the culture of old Intercontinental Ballistic Missiles.
Healthy competition, as I said at the beginning, is looking at what the competition is doing right and trying to do that, or conversely, looking at what the competition is doing wrong and avoiding that like a flaming ball of Limburger cheese. One of these companies has been paying attention and profiting in the long term, and the other has been sputtering and grinding gears. Both approaches will make money, but which one makes the customer happier and more sure of your offering, thus ensuring a happy future relationship for years to come? | | Read / Add Comments (0)
| |
Finance: Spinning Wheels
|
|---|
| Sun 16 Nov 2008, | |
Oh noes! I was so wrong!
Well spun, as spin doctoring goes. GM portrays a worst-case-scenario in order to put the fear of economic Armageddon into you. What they cleanly and neatly pass right over is the fluidity of the market. A GM Bankruptcy doesn't mean total and imminent collapse. It means Chapter 11, which means many people keep their jobs, assembly lines keep rolling, and GM figures out how to restructure its way into profitability. Under Ch. 11 Bankruptcy filings, GM would be able to renegotiate anti-competitive deals they currently have with the UAW. They would be able to renegotiate existing debt and clear out a lot of dead wood.
In the mean time, total collapse of the entire auto industry would not happen. GM would eventually die unless they get smart and put more emphasis on Aerospace and modular home manufacturing - our burgeoning population doesn't really need a hundred thousand new cars a day, but it does need loads of affordable, inexpensive portable housing. But even assuming they changed nothing but went Ch. 11, the entire economy would not collapse. Why? Nobody will buy a car from a company that may not be around to honor the warranty in a few years - this much seems intuitive. What they will do is shift what little buying power being currently exercised to the other players in the market.
In short, if GM can't figure out how to balance their books, Chrysler and Ford will be well positioned to pick up the slack, which will help their slumping figures turn around in the near short term. If the economy can no longer support the Big Three (plus Toyota, Honda, Kia, etc.) it would seem clear it could better support the Big Two.
I also had to laugh at their proposition that America would have to rely on foreign powers for military manufacturing in a conventional conflict. That's so funny it hurts. Everyone should know by now that the money GM is proposing to borrow is just being printed on demand. Don't you think that if we were going to go to war with China or Russia, the Treasury couldn't put two and two together and just do the same to fund domestic war time production? What better way to put all those unemployed workers back to work? GM should work on their intimidation tactics. Current QOS = 0 | | Read / Add Comments (0)
| |
Freedom: Thank you, Veterans
|
|---|
| Tue 11 Nov 2008, | |
It's Veterans day in the USA today. If you cherish the freedoms you enjoy in this country, thank a Veteran today. A good number of my friends and family have served in the military and to them and all those I'll never know, I am eternally grateful for the freedom they were willing to die for, freeze/bake, be displaced, be lonely, miss home and loved ones and or travel to unfriendly shores - to protect. God bless each of you, wherever you are today. | | Read / Add Comments (0)
| |
Finance: When Business Fails
|
|---|
| Tue 11 Nov 2008, | |
I'm a recovering small business man. I know what a working business looks like and I know what a struggling business looks like. I've worked for both and ran both. One of the prime lessons I've learned from business, and I apply it to my daily life, is: know when to quit.
I know, winners never quit and quitters never win... so the saying goes. But what it should say is "winners know when to quit, and quitters don't know when to win". Basically, if what you are doing is not working, stop it. Look at why it's not working, make adjustments with no limit to scope. Then, look at what works, where the needs are to be filled, and do that. Really stunningly simple. It's the basis for how we learn to walk, feed ourselves, assemble Lego kits and write code.
You would think then that where there are greater concentrations of brilliant people, there would be more capacity for this sort of clarity of thought. Unfortunately, the reverse is true. The more people you have working on a problem, the more nostalgia you are going to suffer from. Everyone has one little thing they don't want to give up - take everything else away from them but they'll fight for that one thing, whether its a logo, a product line, or a business practice. Whatever it is, they are convinced the problem has nothing to do with it and vice-versa.
Get more than a few of these people together, each with their own pet concept, and you pretty soon find there is nothing the whole group can decide on getting rid of. This is where strong, even dominant (or at least clearly defined) executive power comes in. One person has to have the final say and the skill to tactfully tug lose the heart strings that hold peoples pet notions firmly in place.
So it is with the Auto Industry at present. There is much about it that is broken and has been for years, regardless of the current economic climate. Bailing it out is a refusal to throw out the things that are not working. Nobody wants to let go their pet idea about what makes the rust belt the rust belt. Our present government, unfortunately, has made it abundantly clear its intention to allow any one with enough pleading and enough cheerleaders get a loan for any amount, regardless of the business sense. Nobody is willing to let failing businesses and bad ideas die.
If there could be some such willingness to make tough decisions as to what to get rid of, what to let die, there would be sooner rather than later be incentive, need and realization of trying something new or better. When we cling to the past, we are not able to consider fully the future. Much like the recalcitrant sinner, unwilling to give up vice, so too our politicians are unwilling to give up their special interests and pet industries.
So what, then, let millions of people lose their jobs? In an uncreative world afraid to lend money to businesses with real, capitalizing ideas focused on building new ways rather than propping up old, apparently so. If we could simply let the fever break on throwing bad money after bad business, good business would have half a chance to do something truly remarkable with all those billions in loans being thrown around. But, who, really, wants to build the future when the past is so familiar and comfortable? | | Read / Add Comments (2)
| |
Domino: 8.0.2 Standard - Dialog Bug
|
|---|
| Mon 10 Nov 2008, | |
We ran across an interesting difference in the standard and basic client here recently with NotesUIWorkspace.dialogbox which appears to be a bug with the Standard Client. The problem is reproducible by creating a form for your custom dialog and calling it with no OK or Cancel button flags set. Add you own button, call it anything and set the button type as Cancel. Place code in the button as simple as @Commang([FileCloseWindow]). Upon calling the dialog from an action (or other means - not tested) in a view and clicking the X button on the title bar, not the Cancel button you added, the code in the Cancel button will fire.
The fact that the code fires may or may not be a bug in itself, but what happens in this case is that the request to close the current window using the @Command throws an error in the standard client and not in the basic: Document command not available.
Here's the workaround. Changing the button type to Normal for your cancel button breaks whatever association there may be with the X and buttons of type Cancel. Using @Command([FileCloseWindow]) will still return false when you make this change.
What is interesting to me is why this doesn't throw the same error in the basic client. It seems the handling of the call to the underlying api in the standard client is not the same in this case as the basic client. I was never aware of the automatic association of custom Cancel Buttons with the X button either (haven't taken my R8 exam yet though) which would seem to be an important thing to know about. I can see arguments for and against this, but defaulting this behavior is a little worrying unless you know about it. Any way - caveat emptor.
| | Read / Add Comments (6)
| |
LotusScript: Simulating Elapsed Time for Agent Runs
|
|---|
| Fri 7 Nov 2008, | |
I recently was responsible for creating agents that ran on a somewhat eclectic schedule. That part was easy to figure out - testing was a bit more interesting. For starters, the agents needed to run cooperatively, meaning sequenced in order. Then, one needed to run monthly and the other needed to run quarterly. To test this relationship over the course of a year, I resorted to some Windows API trickery.
Mainly, I wanted to advance the system clock to regular intervals and rerun the agents at each interval to test the code over time. To do this, I first had to disable the Windows Time service to keep my clock from being reset during the test. Administrator access to the client computer is required for this (thanks to my friend Seth for that tip). Then, all I needed was a custom type and an API declaration. Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Declare Function SetSystemTime Lib "kernel32" Alias "SetSystemTime" (lpSystemTime As SYSTEMTIME) As Long
Next I created an array of desired dates, got some handles to my agents and ran through a loop of the array, calling my agents as it went in the order they needed to run. Dim times(17) As String
times(0) = "10,2008"
times(1) = "11,2008"
times(2) = "12,2008"
times(3) = "1,2009"
times(4) = "2,2009"
times(5) = "3,2009"
times(6) = "4,2009"
times(7) = "5,2009"
times(8) = "6,2009"
times(9) = "7,2009"
times(10) = "8,2009"
times(11) = "9,2009"
times(12) = "10,2009"
times(13) = "11,2009"
times(14) = "12,2009"
times(15) = "1,2010"
times(16) = "2,2010"
times(17) = "3,2010"
Dim lpSystemTime As SYSTEMTIME
Dim nyear As Integer
Dim nmonth As Integer
Dim timevals As Variant
Dim i As Integer
For i = Lbound(times) To Ubound(times)
timevals = Split(times(i),",")
nyear = timevals(1)
nmonth = timevals(0)
lpSystemTime.wYear = nyear
lpSystemTime.wMonth = nmonth
lpSystemTime.wDayOfWeek = -1
lpSystemTime.wDay = 1
lpSystemTime.wHour = 1
lpSystemTime.wMinute = 1
lpSystemTime.wSecond = 0
lpSystemTime.wMilliseconds = 0
'set the new time
SetSystemTime lpSystemTime
Print "Setting date " + times(i)
Call agent1.Run
Call agent2.Run
Next
I found this much easier than running the agents one at a time and then adjusting my system time by hand. Don't forget to reset your clock and re enable Windows Time when you are done, though, or you may run into other network and client issues. This was preferable to changing the time on the server as it didn't interfere with other folks tests and didn't require access to the server. From a logic standpoint, it proved the code - not the environment or security settings, was accurate, so bear that in mind.
Another take away lesson, after running through this, I realized the condition I actually wanted to test was the collision of agent runs at a specific point in the future. Running this a few times helped me realize I was really waiting for the final scenario each time and the intervening runs leading up to it weren't as important. This led to the creation of a simpler test scenario which eventually was more useful, but the above technique can be very useful for watching processes interact over time. | | Read / Add Comments (2)
| |
Freedom: The End of Apathy?
|
|---|
| Fri 7 Nov 2008, | |
Ben posted a moving story about helping a woman get to the polls on election day. It's a great story and it hits one of the more positive aspects of this election for me. Despite my concerns we'll lean more heavily socialist under Obama, this one thing give me hope. When people feel strong enough to get out and get involved in our democratic process, we are insulated that much more against sliding towards apathy and indifference. Those two blights have been the most damaging to our Republic over the past several decades than any other I can name. When someone who arguably has many reasons to become apathetic to what is happening in government has the will and strength to get out and participate in the process, it is a great day for us all, regardless of how they voted. I hope that spirit continues to live in this woman and is passed on to her children. That is the hope we have for the future - that fewer of us daily take for granted the privilege we have in this country.
Now I hope more of us will take seriously our call to be involved in civic matters. Corruption withers in the light, and the more light we collectively shine on our elected representatives, the more difficult it will become for them to do anything other than their sworn duty. I hope now that every person who voted will do their part in holding their representatives, senators, local politicians - and their new president, accountable to the campaign promises and the standards of good conduct and responsibility to constituents these public servants claim to prize so highly.
Now that the elections are over, the work begins. If you cared enough to vote, I hope you'll care enough to stay involved. Following action with apathy amounts to taking no action at all, or worse, having taken action cavalierly and without care for what the future will bear. | | Read / Add Comments (0)
| |
Vote: Pray, Vote, Pray
|
|---|
| Tue 4 Nov 2008, | |
I voted this morning amidst a small crowd in our rural town. I parked in the autumn leaves along side the road in a slightly muddy spot just behind another car, 4 houses from the township hall. It was pleasantly warm and overcast and everyone I saw was smiling. After standing in line, listening to a conversation about when Steve would bring the Deere out to mow Connie's lot, and reading through my ballot I had been there for a total of 15 minutes. Five minutes later I was on my way with the sticker to "prove" it. What a great honor and privilege.
Last night, as we sat down for our evening meal I offered up a prayer for our food and that God's will would be done today. My 5 year old, ever observant, said that wouldn't be Mr. Obama. I smiled and told her it well could be, but if it was, we would be obliged to pray for him just as we would Mr. McCain. Whomever our president turns out to be, it is God's will and things remain firmly in His control. Christ commanded us to love one another as he had loved us. Again, we are told to love our enemies. And again we are told to pray for our leaders because they are installed according to God's will.
Whether or not your choice candidate wins, I ask you to pray for our next president. Whomever it will be will need God-sized wisdom to face the many challenges ahead. Pray too for our nation. While we are all overjoyed today to still retain the privilege to elect our government, tomorrow, half of us will be disappointed. Some of those will feel cheated, and some of those may decide to take matters into their own hands. The need for prayer should be apparent.
As much as I advocate our right to keep and bear arms, we must remember that our first duty as citizens, if we be Christians, is to pray, then petition, then and only after it becomes clear the lives of our families are in the direct path of harm, reload. I still love the quote, paraphrased, "Americans have need of four boxes. The Soap Box, Ballot Box, Jury Box and Ammo Box-- to be used in that order." Pray today, and tomorrow, that the ballot box is sufficient. | | Read / Add Comments (4)
| |
Vote: Obama's Brown Shirts
|
|---|
| Sun 2 Nov 2008, | |
I hope you haven't missed this. Obama recently called for a Civilian National Security force. I just about lost control of my bowels when I heard that. I took a class on the Holocaust in college, even got to meet Elie Wiesel, see the tattoo on his arm from the concentration camp, hear about Kristal Notch, the Brown Shirts, etc. Obama's call for this Civilian Security force is all too similar sounding to the Brown Shirts - Hitlers thugs charged with promoting adherence to his ideology. A little googling found other bloggers see this similarity too. Political Pistachio Too has a good commentary on it which I recommend reading. This is not to even mention how Soviet Russia and Communist China (in addition to numerous other communist regimes in history) have used civilian forces and youth organizations (not much unlike the Hitler Youth) to create fear in the citizens - whipping them into shape - making them more than just citizens of their nation. . . it gave them the opportunity to accept the responsibility to do their part to change their country. It was promised that if they did so their lives would be richer, and the nation would be stronger. After all, the rising leadership proclaimed, they could not longer rely only on the devastated military in order to achieve the national security objectives they had set. They argued that they needed a strong and powerful civilian national security force to keep the citizens safe. I hope by now you are reconsidering that vote for Obama.
If not, I can only hang my head at the ignorance going around, like that of the supporters visible in the background, clapping on auto, while Barrack delivers this statement all the while looking around to see if anyone caught what he just said. If Obama gets elected, "civil war" will be a mild euphemism for what we are in for.
| | Read / Add Comments (11)
| |
Vote: Did you Watch it?
|
|---|
| Thu 30 Oct 2008, | |
Obama (we're automatically shunned for using his full name these days) last night splashed out with wads of cash to buy air time networks used to give to the presidential debate (and evenly split) taking advantage of the untraceable funds from foreign donors reaped after breaking his promise to only accept public funds. It amounted to a huge pile of spin, well chronicled by the Associated Press.
In a nut shell, Obama has nothing to offer but promises of hope. And those are fully resting on a fictional budget. The cold hard facts are that Washington will have to cut spending. McCain's populist statements will face similar post election revision if he is elected, but he's promising a lot less unsupportable pie in the sky than Obama. | | Read / Add Comments (9)
| |
Freedom: Vote Values
|
|---|
| Thu 23 Oct 2008, | |
A nicely produced video underscoring the importance of your vote. | | Read / Add Comments (0)
| |
Life: A Democrat I Agree With
|
|---|
| Thu 23 Oct 2008, | |
Orson Scott Card wrote a great piece concerning the state of the modern media, calling it "just the public relations machine of the Democratic Party." Wow. Shocked and refreshed at the same time is how I felt when I read it. You should give it a read too. There are a number of significant, and damaging things to Obama that the press simply refuses to cover, but this reporter gives it fair and honest treatment. My hat is off to this guy.
| | Read / Add Comments (1)
| |
Cool: India Launches Moon Probe
|
|---|
| Wed 22 Oct 2008, | |
A quick note of congratulations to all of our Indian colleagues out there in Notes land. India launched Chandrayaan 1 today, a first for the nation. The part I'm excited about is the 3D mapping function the probe will perform during its 2 year mission. This, coupled with the mineral distribution map will make planning mining operations on the moon that much easier in the future. With the growth occurring in Asia, this will become extremely compelling in the future unless deep sea mining comes into play first. | | Read / Add Comments (0)
| |
Finance: Stop Paying
|
|---|
| Thu 16 Oct 2008, | |
I found this tongue in cheek (but effectively accurate) portrayal of the bailout plan on over extended mortgage payers to be both humorous and cutting as a commentary. It makes me laugh, but cry also as it is so true.
And, I fear, our nation will fully embrace mediocrity, entitlement thinking and welfare with Obama making a clear case for more of the same kind of economic planning. Unfortunately, our fate would be little different with McCain. Republicans are as out of touch with reality, fiscally, as Democrats are with real democracy. I honestly wonder, what motivation will hard working Americans have when their efforts are taxed punitively, redirected to those who don't work hard ("spread around") and the government tells them increasingly what to do and how to do it? I thought to myself, after the debate, McCain needs to have said "Look folks, it's simple. My esteemed opponent wants to take more from taxpayers with the express intention of controlling more of what you do in your every day life. I want you to keep what you earn and get the government out of the business of micromanaging its citizens. If you want to give up your choices, give up the thrill of pursuing the American dream and trade it in for handouts and government programs brimming with bureaucrats, by all means, vote for the gentleman from Illinois." I think that would have covered it. No doubt a real speech writer could do better, but that's about the size of it.
But I digress... indeed, I can't think of a better response to our benevolent overlords than to stop paying your mortgage and credit card debts. Just give me a couple of days to draw all my cash out before you go tearing down the financial institutions around our ears, em-k? | | Read / Add Comments (0)
| |
Freedom: AFA Voters Guide
|
|---|
| Wed 15 Oct 2008, | |
You can view the American Family Association's voter guide online. If you're on the fence, this simple run down of issues on the two major candidates should help you decide where you would like to cast your vote. | | Read / Add Comments (9)
| |
Freedom: Don't Talk to Me About That
|
|---|
| Mon 13 Oct 2008, | |
The liberal side of American politics for a long time was typified by choice, freedom, people's right to decide for themselves free from government or theological influences. Today's liberals are something quite different. An instructive commentary from Michael Barone alerts us to this change and the coming cost to freedom of speech. It reminds me all too much of the selective speech enforced by Hitler's Brown Shirts.
I mean no exaggeration by the comparison to Hitler's Germany. While Obama may be a far cry from a eugenics crazed mad man, he is at least as charismatic and his followers seem to be willing to do anything for him. The comparison is made valid in my mind by the apparent coordination and direction these "atypical" supporters posses. ACORN has already made some serious flaws in tipping their hand early by using some strong arm and otherwise deceitful tactics. What is to come? Nothing good, I'm afraid.
I've heard many leftist supporters refer to right leaning conservatives as wing nuts, gun lovers, racists and worse - deserving of being locked up and "reeducated". It's patently false to assert that everyone who has an interest in firearms, protecting their freedoms and speaking their mind is mentally unfit. It's also false to assert they are racist if they raise questions about Mr. Obama's past. Should black Americans who disagree with Mr. McCain be likewise labeled?
The greatest danger to our future way of life is not which candidate is elected - it's the followers who will do anything to suppress free speech and open debate about the issues. It's the followers who would advocate violence to have their way be the dominant and only way.
There is likewise no good that can come from the hatred erupting on the right. True conservatives don't advocate violence, they take due precautions against it. Likewise, true liberals should be advocating free speech, not thwarting it as has become common to day. I'm afraid in our desire to be right (as in correct), as individuals, we have become blind to being right in the sight of God. Oh, you know I must go there. We started this country with the Bible as our guide and the further behind we leave it, the less civil we become. Respect for women and minorities are Biblical principles - as are the respect for authority and others. When the liberals sought to restrict the speech of Christians, removing the Bible from American schools, the slide towards real intolerance began.
If you seek to retain the gifts of our forefathers, you would do well to observe the customs they embraced, among them respectful dialog, discerning thought and reverence for God with respect for one another.
| | Read / Add Comments (6)
| |
LotusScript: Simple Profile Doc Examiner
|
|---|
| Wed 8 Oct 2008, | |
There are some really nice tools out there for viewing your profile documents, from scanEZ by Ytria to tools like Noteman and Notespeek. I'm doing some testing today and just wanted a quick way to check my profile documents without installing a tool to the testing workstation. Hence, this simple agent.
Profile Examiner - v 0.1.0 | | Read / Add Comments (2)
| |
Domino: Basic Reversion
|
|---|
| Wed 8 Oct 2008, | |
I'm a little bunched up at the moment - I have been having really odd problems with the "Standard" client running on Eclipse. Random screen region inaccessibility, like to property box controls, loss of UI focus for hot keys even after clicking, UI refresh problems... I've given up. I am reverting to the "basic" version as of today for R 8.0.2.
Thanks to my coworker Don for pointing out the simple change to the desktop shortcut from "notes.exe" to "nlnotes.exe" was all it took. Many problems have been immediately resolved, much to my great relief. I'm still a bit distressed though as I was really hoping the Eclipse version would prove out to be stable and reliable. Unfortunately, at the moment, this just isn't the case. *sigh*
Dutifully, I hold out hope for 8.0.3 but for now, I'll rejoice in the fact that things are much more stable - at least for the moment! :-O | | Read / Add Comments (4)
| |
Finance: Speaking Up
|
|---|
| Mon 6 Oct 2008, | |
I got an email from one of the grass roots organizations I keep in touch with asking me to sign on to a form letter. I agreed with what they were saying but had a few thoughts of my own. Here's the text of the letter I sent to my congressmen. If you are less than pleased with the current situation, exercise your right and your voice. My customizations in bold
Gentlemen, I am one who is fed up with the way Washington is being run.
This bail out plan is history repeating itself. I ask you to recall the
vain attempts to ward off the great depression, efforts that actually
prolonged it by removing the incentive free markets have to succeed by
layering on hand outs. I also ask you to recall the Marshall plan - and
the like effect it had in slowing the reconstruction of Western Europe
after WWII - while West Germany, suffering no such encumbrance, recovered
much more quickly.
We, your constituents (read as "employers") demand an explanation on how
this financial crisis happened and who was responsible for it. We want to
hear from you that you support open hearings. We hold Congress responsible
to get to the bottom of this matter so that it will never happen again.
I personally would like to see a much simpler approach going forward in
dealing with the compulsion Congress seems to feel to involve themselves
in every hiccup in the market. Instead of literally acres of pork-barrel
legislation, wouldn't it be far more sensible to let bad companies go
bankrupt, the rot to burn out of the system and then investigate and
prosecute where the public trust has been violated? Free market forces
work best when left free to do so. History has proven this time and again.
Clearly, those who voted in favor of this bill either have no great grasp
of basic economics or thought pork was far more savory than actually doing
something fiscally prudent. This bail out bill is an abuse of the public
trust and I strongly suggest you make every effort to take corrective
action, starting with a repeal.
Sincerely,
Jerome E. Carter, II
Sorry to belabor the point, but hey - it's our future their messing with - all of us. It's not just socialism vs democracy - the path we're on is going to lead to a big time collapse and we need to see it reversed. | | Read / Add Comments (2)
| |
Domino: Performance Tweak Comparison
|
|---|
| Mon 6 Oct 2008, | |
Andrew Pollack posted last week concerning a performance tweak for R8 that has turned a few heads here at work. An unofficial test was conducted by our manager and turned up some pretty good numbers, reflective of the experience of most people here who have tried the tweak. Time is in seconds and each line is a load time milestone, so imagine it's a time line. With the tweak, the entire process is done before the splash screen even appears as compares without the tweak!
 I'm not 100% sure what the last two items refer to but I thought it had to do with the folder side bar.
The challenge now will be configuring R8 to deploy with this tweak. Some ideas are floating around at the moment from installation scripts to plug-ins. Whichever, it seems to me crucial to improving the user experience to have this setting properly tuned to the client machine. The default setting (would be great if this was dynamically allocated upon install) is just too spare for good performance.
| | Read / Add Comments (8)
| |
Finance: Tax Policy Exploration
|
|---|
| Mon 6 Oct 2008, | |
I think we would all agree, taxation without representation is abhorrent. It happens the world over, but it was one of the main impetus spurring the American Colonies on towards independence. Here's a philosophical question for you - if taxation without representation is bad, is it likewise bad when those who are not taxed have representation in determining the taxation of others?
There are two contemporary examples you may be thinking of, one of which is foremost in my mind. The obvious one is our beloved Legislature. They themselves do not pay the same taxes they happily saddle us with. The less obvious is the 30% of Americans, who by right can and do vote, who do not pay any income tax - whether by income level being too low or via itemized deductions.
I saw some survey results1 this weekend that indicated a full 70% of these 30% non-tax paying Americans favor higher taxes, on those who do pay, to further the expansion of social services. FTA, a majority of the 30 percent of Americans who don't pay federal income taxes agree with Obama's $65 billion plan to institute taxpayer-funded, universal health coverage.
Does it seem right that people who would pay nothing for such a program should have a say in approving it? In short, if someone does not pay taxes, should they be allowed to vote on issues that would affect the tax the rest of us pay? I'll confess, in my youth, that seemed like fine math. Before I learned what hard work felt like and also how helpless I felt watching my paycheck be whittled down by various taxes, I thought the government should of course magically fund everything under the sun.
The problem is, hard work is its own reward in more ways than one. It teaches you that working hard produces results and that being shrewd with those results can have dividends. It also teaches you that those who don't work hard are often oblivious to the efforts you produce to subsidize their lack of effort. Taxation of any sort is effectually redistribution of wealth. And though it may be little that I have been entrusted with, I am beside myself when I hear of those who have not gleefully cheering the further erosion of my efforts.
So, we have something of an imbalance here. Some citizens vote for penalties they will never themselves need worry about. It wouldn't really be American to deny them their right to vote - that's the basis of our republic. But, it would be fair to ask them to pay a like portion so as to have a stake in the game as well.
I think then, it would be fair to have a flat tax, as I and others have proposed before. I would further remove all deductions. No one should be allowed to escape, not even senators and representatives in Washington. Not only would it simplify the tax code, it would be fair. It would also change some minds about further taxation and government spending. I suspect that if every voter was footing the bill for last week's bail-out, the results would have been much different. If every voter stood to lose out when the government blew it on another social engineering project, I suspect they would be more observant of what their elected officials are up to. Though someone may be technically poor, they are by no means mundane. The current tax system suppresses their incentive to get involved. Taxing them at the same modest rate we are all taxed at (say 8%) would incentivize them to be more informed, more educated on the actual cost of social programs such as universal health care and hopefully make a much better decision when it comes time to vote. The savings generated by actual, cost conscious participation by all Americans would make up for the loss in tax revenue such a system would create as I suspect pork and social welfare programs would quickly become less attractive.
[1] As detailed in "The Audacity of Deceit", by Brad O'Leary - as discussed here. | | Read / Add Comments (0)
| |
Domino: R8 Mail Template Oddity
|
|---|
| Fri 3 Oct 2008, | |
I'm making some customizations for my client to the stock mail file template and ran into something a bit curious. When I add an entry to NotesMailOutline or NotesMailOutlineH, whatever I link to only displays a message : No Mail Service. Anyone seen this yet?
One of the clients named callers is going to put a PMR in Monday I believe but I was surprised by this result. No matter what I point the outline entry to, it comes up like that. Experimenting a bit, I tried copying and pasting existing outline entries. No problem, till I modify them. Just pointing a copy of the Drafts outline entry to a different folder caused it to disappear from the display altogether when rendered. What gives? | | Read / Add Comments (3)
| |
Finance: House Approves Bailout, Stocks Dive - Looking Ahead
|
|---|
| Fri 3 Oct 2008, | |
Expected, yet still unbelievable, the House approved the Marxist bailout bill today. Apparently, members of Congress were not paying attention when the second draft of the bill was adopted by the Senate two days ago - stocks took a steep dive. Investors have no confidence in this - at least not those with fiscally conservative views. No doubt, the steep decline will create some buying pressure later today and stocks will rally somewhat, but we are not likely to recover the 1000 point loss in the next few days.
I think I've beaten the horse into the ground on why this is bad and why I'm philosophically and fiscally opposed to it. What we need to do now is look ahead to how we can prosper in this sort of new world order where free market economics have nearly, totally been wiped from the face of the earth. With the passage of this bill the United States joins Europe, Russia and China as having the most convoluted planned economic systems ever seen in human history. With control of the economic engine now firmly in the hands of the federal government(which has a demonstrated history of fiat currency and elimination of share value without recourse for investors) we have an environment patently risky and hostile towards investors. This will no doubt create a shrinkage of capital flowing into the equity and credit markets, causing the depression the government claims to be trying to avoid.
But, there are things yet safe. In this new era of oppressive government control federal, state and municipal bonds look like the most attractive investment device available. Since the government has time and again asserted its power to tax without direct representation, seize property without recourse and dictate terms of settlement to firms on a whim, it seems certain they will always be able to collect the money from tax payers to pay back bonds.
Cash is also a good place to put money. It won't earn terrific interest in savings, but with the government now providing Money Market accounts similar protection as that provided by FDIC, as they do savings and deposit accounts, these higher rate savings devices will be safer, if much lower performing than securities and stocks. I used to think real estate was a very safe place to put your money, but now that this has to be done with abundant caution and an actual business plan in mind. Gone are the days when you could purchase property and count on appreciation to return to you a sizable dividend. Indeed those days may not return for a decade or more, long enough for people to forget what has happened over the past 9 years.
A real estate business plan should center around rental or agriculture and you should be prepared for an immediate and active role in deriving value from such properties. Also, in order to shield against wanton imminent domain seizure, you should disperse your holdings geographically. So instead of purchasing 20 acres to develop a strip mall, you might consider purchasing 10 of farm land and leasing it, and 2 of urban and renting it.
Overall, I think we have still many economic opportunities. Look at the ways people manage to prosper in countries where the government has been practicing systemic abuse of power for more than 30 years. There will assuredly be fewer people profiting - only those with deep cash reserves will be able to invest profitably in our new economic order, but with extreme fiscal conservatism and lowered expectations, it can be done. Don't expect to see any more pop-up millionaires until trust is restored in our financial institutions and the federal government cedes control back to those who make the market - private enterprise.
Finally, money can still be made in services where credit needs are light. If your brick and mortar business requires no inventory and has a steady head count and client base, your need for credit should be low and maintaining profitability actually just doing business doesn't look terribly difficult going forward. If however, you rely on credit to keep an assembly line running, you'll need to look closely at one-part-process-flow methodologies which can reduce the inventory needed to maintain production levels and bring capital outlay more in line with income. If nothing else, a credit tight economy forces good fiscal policy on individuals and business, whether they like it or not. With that, overall risk to businesses and individuals should attenuate over time. | | Read / Add Comments (4)
| |
Finance: Marx's Proposal Number Five
|
|---|
| Tue 30 Sep 2008, | |
Go read this.
As Friedrich Hayek wrote in 1932, “Instead of furthering the inevitable liquidation of the maladjustments brought about by the boom during the last three years, all conceivable means have been used to prevent that readjustment from taking place; and one of these means, which has been repeatedly tried though without success, from the earliest to the most recent stages of depression, has been this deliberate policy of credit expansion. ... To combat the depression by a forced credit expansion is to attempt to cure the evil by the very means which brought it about ...”
My apologies for the onslaught of Finance related posts. I consider finance and a proper understanding of it to be critically important - especially to those of us engaged in freelancing or small business. It's very helpful to be able to see trends when you're trying to understand who your clients might be in the future and what they might be doing with their IT budget. | | Read / Add Comments (0)
| |
Finance: Signs of Common Sense In DC
|
|---|
| Sun 28 Sep 2008, | |
Thank God for Gingrich.
"You have the former Chairman of Goldman Sachs asking for 700 billion dollars, and in his initial request, asking for it in such an un-American way that I think he should have resigned," said Gingrich. "I think Paulson has terminally misunderstood the nature of the American system. Not just no review, no judicial review, no congressional accountability. Give me 700 billion dollars, 700 BILLION dollars! 'I'll be glad to spend it for you.' That's a centralization of power that is totally un-American."
I'm appalled at the willingness of both Democrats and Republicans to buy into this bail out nonsense. It's a total crock. I saw an email that joked... what if instead of 85 billion to AIG every US Adult got $425,000 before taxes. That sounds good too, till nobody wants to go to work anymore to check you out at the grocery, drive the delivery trucks, bake bread (maybe that... baking is actually fun) or deliver the mail. Maybe it wouldn't be all that bad, but it would be just as bad as a bailout - cart blanc redistribution of wealth.
America needs precisely one thing at this moment - strong leadership and steady hands at the helm. No quick fix solution is going to make us better in any lasting way. Normally, I'd stump for McCain right about here, being I'm a Republican... but he seems to be going along with the notion, and Bush is all over it. Obama says it has to happen. I think they're all drinking from the same tainted water (read as "hitting the meth pretty hard"). This is such a looney idea, Newt is right. It's so un-American I'm beginning to think that if it goes through, we'll live to witness the much accelerated demise of our way of life as we know it - and not just in the US.
No sooner did I post the above than I spotted this, via Digg.
I don't know about all his ideas, but he offers the best explanation and best alternative plan that I've heard thus far. | | Read / Add Comments (0)
| |
LotusScript: Simple File System Object
|
|---|
| Fri 26 Sep 2008, | |
LotusScript has for a long time had a number of handy file handling commands. Today, out of my natural aversion to repetitiveness, I started roughing out a wrapper class for some of these functions. Here's the first cut, with just the basics for folder management. I haven't needed to delete folders yet today so I haven't written that function yet as part of the class. Improvements to follow, I'm sure.
' Version 1.1 10/24/2008 - Jerry Carter - Teamwork Solutions
Public Class FileSystemObject
mountedDrive As String
Sub new(mnt As String)
Me.mountedDrive = mnt
End Sub
Public Function folderExists(folderpath As String) As Boolean
On Error 76 Goto nopath
Dim fp As String
fp = Dir$(folderpath,18)
If fp="" Then
folderExists = False
Else
folderExists = True
End If
Exit Function
nopath:
folderExists = False
Exit Function
End Function
Public Function createPath(pathname As String) As Boolean
Dim f As Integer
Dim testpath As String
testpath = Me.mountedDrive
Dim dirArr As Variant
dirArr = Split(pathname,"\")
If Right(pathname,1) = "\" Then
pathname = Left(pathname,Len(pathname)-1)
End If
For f=1 To Ubound(dirArr)
testpath = testpath + "\" + dirArr(f)
If Not(Me.folderExists(testpath)) Then
Mkdir testpath
End If
Next
End Function
End Class
Updated 3/12/2009: Here's a little example implementation to go along with the above.
Dim FSO As New FileSystemObject("C:")
If Not(FSO.folderExists(folder)) Then
If Msgbox ("The folder specified, " + Chr(10) + folder + Chr(10) + "does not yet exist. Create it now?",36,"Create Folder?")=6 Then
FSO.createPath(folder)
Else
Msgbox "Can't proceed with ...your process name here... target folder does not exist. Exiting.",16,"Error"
Exit Sub
End If
End If
| | Read / Add Comments (0)
| |
Finance: Clinton, Democrats to Blame for Subprime Crumble
|
|---|
| Thu 25 Sep 2008, | |
I saw this comment on an ABC story about today's meeting at the White House concerning the horribly ill conceived bail out. I'd heard as much elsewhere but this is a nice concise write up.
NYT Revealed True Cause of Fannie Mae Crisis -- In 1999!
In a move that could help increase home ownership rates among minorities and low-income consumers, the Fannie Mae Corporation is easing the credit requirements on loans that it will purchase from banks and other lenders.
The action, which will begin as a pilot program involving 24 banks in 15 markets -- including the New York metropolitan region -- will encourage those banks to extend home mortgages to individuals whose credit is generally not good enough to qualify for conventional loans. Fannie Mae officials say they hope to make it a nationwide program by next spring.
Fannie Mae, the nation's biggest underwriter of home mortgages, has been under increasing pressure from the Clinton Administration to expand mortgage loans among low and moderate income people and felt pressure from stock holders to maintain its phenomenal growth in profits.
"Fannie Mae has expanded home ownership for millions of families in the 1990's by reducing down payment requirements," said Franklin D. Raines, Fannie Mae's chairman and chief executive officer. "Yet there remain too many borrowers whose credit is just a notch below what our underwriting has required who have been relegated to paying significantly higher mortgage rates in the so-called subprime market."
- New York Times, September 30, 1999
Also worth noting, Nancy Pelosi and John Kerry have made a nice sum of money investing in Fannie Mae. I'd like to see some oversight on how much profit THEY can make. That might solve many problems originating in Washington.
Update: Read the full story linked above. Great, prophetic quote: ''From the perspective of many people, including me, this is another thrift industry growing up around us,'' said Peter Wallison a resident fellow at the American Enterprise Institute. ''If they fail, the government will have to step up and bail them out the way it stepped up and bailed out the thrift industry.'' | | Read / Add Comments (4)
| |
Lotus: 8.0.2 Impressions
|
|---|
| Thu 25 Sep 2008, | |
I've been holding off really putting my thoughts out there on the R8 Clients till IBM had some time to release a polished version. With 8.0.2 slated for roll out at my current client site, I've been developing with it for the past month or so, this week most intensively. A summary, to save you reading the rest of this, would be to say R8 is the thickest thick client I've ever used.
But, that's been my experience with most Java based UIs. Java is still just a bit slower than C (but pretty much on par with .NET) and while IBM has done an admirable job porting our favorite environment to Eclipse, there are a lot of little things that just are not consistent.
I've lost track of how many things just don't seem to stick. Smart icons started getting flakey in R6 but they are apparently a bit worse now. I can't for the life of me get my Designer smart icons back. I'd probably have to edit bookmarks.nsf to rectify the problem.
For some reason, view performance seems to have degraded from R7 to R8. We do have the desperately needed multi-threading on view refreshes, but why should I ever see that message on any view or folder when there are only 5 documents in the database and it's a local copy? I shouldn't. Switching to a different view and back clears the apparently hung refresh. In short, it's not really an index problem, it's a UI problem.
And, that seems to be where most of the issues are. Proper UI Redraws and Refreshes are the biggest complaint I have. Either they don't fire or the redraw area is incomplete. Some things seem randomly broken as well - such as document properties. On one machine, I can't click on the field list to view the properties for different fields, but on another install, I can.
Also randomly not working right, on one install, my R6 names.nsf worked pretty well after the initial start up took about 10 minutes to do whatever it was doing. On another machine, I waited an hour and it never got past the initial start up. I had to drop someone else's R8 names.nsf on my machine before Notes would start.
There are some bright spots though. The UI is really nice to look at, if not completely skinned (many dialogs still use the ugly system tri-tones). The multiple side bars are also a great addition. The integrated Same Time client works very well and I've seen the desktop sharing to work much better than previous releases.
I'm not totally sold on some of the updates to the mail template yet but as yet I don't have any problems with it. It does have a much update look and functionality over the previous product releases - regular use will reveal if it really offers any functional benefits.
My biggest, ongoing issue with release 8.0.2 is how easily the client hangs. Just a quick key combo at the wrong time (often) and it hangs up for a long period of time. This is probably the most annoying issue I've encountered to date. I'm inclined, as with many of the problems, to attribute it to the Java running under the covers. Hopefully, 8.5 or 8.0.3 is much snappier and has more of the kinks worked out. I think my client's help desk is going to be fairly busy when the roll this out though.
Anyone have a totally different experience than this? Anything special needed doing to make it all work magically better? | | Read / Add Comments (2)
| |
Formula: @IsAppInstalled Weakness
|
|---|
| Thu 18 Sep 2008, | |
I was just working with another developer here and we discovered something interesting one of the Admins suspected was happening with @IsAppInstalled. It's used here to determine if the Admin client is installed, as the help file advertises. What's interesting is how the function makes this determination.
When you pass it "Admin", it appears to consult the system Class Path and then begins looking in ALL of these places for Admin.EXE and Admin.EXE.dir. It should be immediately apparent why this is not a good idea. It hits such folders as your java home path, system32, Program Files... each of these places runs a good chance of having some OTHER non Notes Admin.exe installed as, I think you will agree, it's not a hugely unique file name.
So, we had a hunch false positives were being returned on some client machines. A survey of computers showed that yes, some users had installed other software with the Admin.EXE file name in one of the other not-necessarily-notes paths. Et viola, false positive. Consider yourself duly cautioned. | | Read / Add Comments (1)
| |
Life: Reasoned Debate vs. Blind Religiosity
|
|---|
| Wed 17 Sep 2008, | |
Not wishing to be misquoted and asked to resign my self appointed post and defender of sanity in thinking, I thought it useful to compare and contrast from recent events to illustrate the difference between reasoned debate and blind religiosity.
You may have heard... Professor Michael Reiss has quit as director of education at the Royal Society following the controversy over his recent comments on creationism. which was rightly commented on by Lord Robert Winston that... "I fear that in this action the Royal Society may have only diminished itself.
"This is not a good day for the reputation of science or scientists.
"This individual was arguing that we should engage with and address public misconceptions about science - something that the Royal Society should applaud."
Lord Winston demonstrates what we could call a reasonable mind. He illustrates the basic premise of science, found in its Latin root, scientia, from scient-, sciens having knowledge, from present participle of scire to know. Further reading at websters
, 1: the state of knowing : knowledge as distinguished from ignorance or misunderstanding
The only cure for ignorance and misunderstanding is the acquisition and exposition of knowledge. Knee-jerk, out-of-hand, rejection of expository discussion only breeds ignorance and misunderstanding, as advocated by Professor Chris Higgins, vice-chancellor of the University of Durham... "There should be no room for doubt - creationism is completely unsupportable as a theory, and the only reason to mention creationism in schools is to enable teachers to demonstrate why the idea is scientific nonsense and has no basis in evidence or rational thought." - emphasis added
Taking the approach that a competing theory is out-of-hand ludicrous is essentially non-science itself, or if you prefer, nonsense. Truncating discussion and debate on a topic by attempting to roll over competing ideas with slanderous terms is the mark of blind religiosity. Prof. Higgins demonstrates he is as much a zealot for Darwin as the Anglican Church is for Christ. In itself, that is not a problem, as long as he is willing to admit to his own religious bias. But I don't mean to take point with him as an individual, but rather as an archetype of zealous "scientists" who immediately throw creationism in the bin with UFOs.
Simply put, an absence of evidence is not evidence of absence. Selecting one viewpoint over an other in an exclusive fashion is fine when discussing it within a closed group as a matter of convenience. If you wish to be true to science though, an open mind must be maintained when others wish to test their understanding of an alternate theory. How else can science truly advance?
Regardless of your view on Evolution vs Creation, I would hope you would not be so sure of your knowledge as to assume finality. Evolution, as Creationism, is after all theory, not law, until definitively proven otherwise. To lock in on one without considering the other is to completely miss the opportunity to consider other theories that may be a synthesis of many different ideas, and ultimately a disservice to all. | | Read / Add Comments (7)
| |
Life: Blown Away
|
|---|
| Mon 15 Sep 2008, | |
Most Ohio Domino Bloggers probably already know, we had one helluva storm here in Ohio yesterday as the remnants of Ike blew threw town. Listening on the radio in my car last night (no power for about 5 hours or so) the weather guy likened it to a small tornado hitting the entire state. Winds were officially reported at 78 mph but some gusts locally were said to be measured in excess of 100 mph, meaning Ike was a Cat 1 Hurricane when it came through, or nearly so.
I was pretty surprised to see on the radar yesterday that the eye of the storm was still discernible as the storm came up through Indiana then took a right turn at Dayton and headed for Lake Erie. At our house, we had construction debris strewn everywhere from the pile of leftovers sitting on the lawn. We're having new windows put in and some structural mods made and thank God the framer thought to really button things up last Thursday when they called it a week for the coming rain.
Today, Franklin County, where Columbus sits (Ohio's capital) has about 55% of it's customers without Electric. Numbers vary across the state but the impact is obvious. Gasoline is going for $5 a gallon, as is a bag of ice. Without power for more than 4 hours or so, many people are facing the loss of their food stores kept in refrigeration. Fortunately for us, we only keep a small amount of meat and dairy in the fridge. We could have lost about $30 of food, but the power returned. Some folks will probably have rather expensive food bills and replacement costs, so I anticipate a run on food locally as power returns and people throw out tons of spoiled food.
Some other interesting wind effects at our house: Our 180 lbs. stone topped picnic table blew over, our 300 lbs. grill (on wheels) rolled from one side of the deck to the other (it takes effort to wheel that thing around) and my pull-behind dump cart for the garden tractor managed to cross the driveway on its own without hitting any cars. Fortunately, no wind damage to the house and no apparent loss of trees in our yard, though just around the corner had plenty of trees and branches down. | | Read / Add Comments (5)
| |
LotusScript: Binary Registry Values Made Easy
|
|---|
| Wed 27 Aug 2008, | |
For a long time, you've (probably) known that you can use the Windows Scripting host to read and write string values to and from the Windows Registry. With it, you can also read and write short REG_BINARY values. But in some cases, you need to write long arrays of REG_BINARY data to the registry and the Windows Scripting host won't help you.
First, the obligatory back-story. I've been working on a very particular click saving requirement the past three days for my current customer. Simply put, when program X file save dialog is activated, it should automatically be in the predesignated folder. Easy enough when you are calling the File Save dialog yourself, not so easy when you are shelling a program and waiting for it to raise the File Save itself.
I spent considerable time playing with the RegSetValueEX API function found in the advapi.dll. (Considerable time means you're getting quite a bargain just for the price of reading this article.) I eventually got to the point where I could get it to write REG_BINARY values, but there was a problem. My data looked like this.
0000 28 89 DB 04 10 89 DB 04
0008 BF 05 00 00 0E 00 00 00
0010 01 00 01 00 07 00 00 00
0018 B8 CC BB 08 00 00 36 00
0020 00 00 00 00 70 64 66 77
0028 72 69 74 65 72 2E 65 78
0030 65 20 63 3A 5C
That 70 I have highlighted at address 0024 should be at address 0000. Wondering about the addresses? Think Hex. In Hexadecimal, 0010 is not 2 greater than 0008, it's 8 greater. (0008 0009 000a 000b 000c 000d 000e 000f 0010). I have no idea where the garbage characters preceding my data came from, but they were pretty consistent regardless of whether I passed ASCII or HEX values.
After much research, I found mention of the Windows Management Instrumentation COM object on an MSDN article. Based on that example, I created the class shown below which provides you a simple and easy way to send up a string and have it properly inserted into the registry so that up at position 0000, we would see the expected hex value 70. Here's what it should have looked like.
0000 70 00 64 00 66 00 77 00
0008 72 00 69 00 74 00 65 00
0010 72 00 2E 00 65 00 78 00
0018 65 00 00 00 43 00 3A 00
0020 5C 00 49 00 6D 00 61 00
0028 67 00 65 00 73 00 5C 00
0030 78 00 78 00 31 00
Notice also, the characters are spaced apart with an empty byte. At this point, I'm really not totally sure why. What we see here are the hex values of the ASCII values derived from the input string. A spacer provides enough room that you could put a Unicode value within the Basic Multilingual Plane across the four positions. I'm still learning about Unicode and the windows registry itself, though, so I could be way off there. What I do know is I put hex in, and get decimal ASCII values back, which is strange - I would have though, hex in, hex out... but then again it's Windows. :-)
WMI Wrapper Class
This ONLY wraps the functionality discussed above. Have fun, and be careful.
Class WMIWrapper
Public wmi As Variant
Public haserr As Boolean
Public lasterr As String
Sub new()
Dim strComputer As String
strComputer = "."
Set Me.wmi=GetObject( "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
End Sub
Public Function writeBinRegKey(regnode As Variant, keypath As String, keyname As String, keyvalue As String) As Boolean
On Error Goto eh
Dim sValues() As String
Call makeHexArray(keyvalue,sValues)
Me.wmi.CreateKey regnode, keypath
Me.wmi.SetBinaryValue regnode,keypath,keyname,sValues
writeBinRegKey = True
Exit Function
eh:
writeBinRegKey = False
Me.haserr = True
Me.lasterr = "public function writeBinRegKey - " + Error + " at " + Cstr(Erl)
Exit Function
End Function
Public Function readBinRegKey(regnode As Variant, keypath As String, keyname As String) As String
On Error Goto eh
Dim sValues As Variant
Me.wmi.GetBinaryValue regnode, keypath, keyname, sValues
readBinRegKey = AscArrToString(sValues)
Exit Function
eh:
Me.haserr = True
Me.lasterr = "public function readBinRegKey - " + Error + " at " + Cstr(Erl)
Exit Function
End Function
Private Function AscArrToString(ascArr As Variant) As String
On Error Goto eh
Dim i As Long
Dim buff As String
For i = 0 To Ubound(ascArr)
If Not ascArr(i) = 0 Then
buff = buff + Chr(ascArr(i))
End If
Next
AscArrToString = buff
Exit Function
eh:
Msgbox "Error in AscArrToString - " + Error + " at " + Cstr(Erl)
Exit Function
End Function
Private Sub makeHexArray(inputstr As String,tmparr() As String)
On Error Goto eh
Redim tmparr(0)
Dim i As Long
Dim tmpasc As String
Dim tmpstr As String
Dim pos As Long
pos =1
For i = 1 To Len(inputstr)*2
Redim Preserve tmparr(i-1)
If (i-1) Mod 2 = 0 Then
tmpstr = Right(Left(inputstr,pos),1)
tmpasc = "&H" + Cstr(Hex$(Cstr(Asc(tmpstr))))
tmparr(i-1) = tmpasc
pos = pos + 1
Else
tmparr(i-1) = "&H" + Cstr(Hex$(0))
End If
Next
Exit Sub
eh:
Me.haserr = True
Me.lasterr = "private sub: makeHexArrap - " + Error + " at " + Cstr(Erl)
Exit Sub
End Sub
End Class
| | Read / Add Comments (0)
| |
LotusScript: Cross Compiling with Ambiguous Interfaces
|
|---|
| Tue 26 Aug 2008, | |
One of the challenges I ran up against lately writing code for a mixed R6 / R8 environment was writing code that would compile and run in both environments. Specifically, the signature has changed slightly between R6 and R8 for NotesUIDocument.Print
It now accepts an alternate parameter, as a fifth value, for the name of the printer driver to print to. I didn't see this in the documentation but read about it somewhere and the type ahead shows it, as pictured below:

At any rate, if you want to take advantage of this parameter, and have code that will compile in R6, you need to combine version detection with an ambiguous interface in order to get it to work. Here's an example of writing an interface that is signature insensitive - meaning it will ignore the compile time check on the "Product" object signatures.
Public Class pPrint
uidoc As Variant ' type is important here
Sub new(source)
Set Me.uidoc=source
End Sub
Public Function Print(parms As Variant)
If vers < 301 Then ' external global
' Anything earlier than R8
Call Me.uidoc.print(parms(0),parms(1),parms(2),parms(3))
Else
' Anything later than R8
Call Me.uidoc.print(parms(0),parms(1),parms(2),parms(3),parms(4))
End If
End Function
End Class
A couple things to note. I declare uidoc as a variant. That's what breaks the compile time check against the product signature, so this code will compile under R6 or R8. It's the line that goes up to parm(4) that would throw an error compiling in R6 - too many parameters for the .print method.
Also, I borrowed a page from a lot of old C examples I used to study and allow the parameters to the class to be passed as an array. Making it a Variant was just expedient. This way, I can pass varying numbers of arguments through a common signature and interface.
Incidentally, this is similar to the issue I raised last week concerning good interface maintenance. uidoc.print was done right - the new parameter is optional and at the end of the line. I only get into contortions when I decide I want to compile in two environments. In this scenario, the burden is on the developer, not the code originator, to work around the issue. In the situation with db.AllDocuments, I could use a similar strategy to cope if the change to the underlying API had been exposed via an optional parameter. | | Read / Add Comments (0)
| |
LotusScript: db.AllDocuments - Code Regression
|
|---|
| Mon 18 Aug 2008, | |
Bob Balaban mentioned a change made to the NotesDatabase.AlDocuments code sometime in the past few versions of Notes that kind of gave me a "holy crap" moment. It has to do with deletion stubs if you haven't read his post already.
That all changed sometime in between Notes 5 and Notes 7 (I don't know exactly when, I was off doing other things...), and deletion stubs are no longer stripped out. Now when you want to iterate over all the documents in a database using NotesDatabase.AllDocuments, you have to check each NotesDocument instance with either (both is probably a better choice) the NotesDocument.IsDeleted or .IsValid properties before you try to access the document contents.
Bob inadvertently highlights an important aspect of maintaining an API. When you make a change to a published API, you have to carefully consider the impact downstream. Sun does a pretty good job preserving old interfaces and creating new interfaces instead of breaking old ones when they want to add to the functionality or change it in the Java name space. The fact that a core LS function that many people use had such a subtle, and potentially application breaking, change stuns me. It's not only bad practice, it has probably caused untold hours of cost and frustration (and maybe discredit to Notes).
But, not meaning to rant on, I just wanted to raise the issue of clean and predictable interface maintenance. Remember first why we make interfaces and wrappers - to ease coding, make it more intuitive, predictable, reusable and reliable. If we change the behavior of the underlying class after it has been deployed, we own the responsibility for making sure the functionality degrades gracefully if someone is expecting our code to work the way it used to.
A better approach to this change in NotesDatabase.AllDocuments would been to have introduced an optional boolean parameter for StripDeleteStubs which would default to true if omitted. That way, whomever thought the class should change (presumably a minority within IBM) would own the responsibility for changing their use of the code to fit their preferred implementation rather than surprising the rest of the world. | | Read / Add Comments (0)
| |
Design: Your Best PDF Solution
|
|---|
| Tue 5 Aug 2008, | |
I'm not invoking the lazy web, a couple of us have been looking at this for days and have found a few solutions to PDF creation from Notes. Solutions generally fall into one of a few categories and I wanted to know - what is your solution for generating PDFs from Notes?
Here are the general patterns people around the web have documented. - PDF Print Driver - in this pattern, some flavor of PDF printer is installed. The user clicks Print, selects the PDF Print driver, and the selects the file path for output when prompted.
- PDF via COM - Using something like Adobe Distiller, SnagIt, or other COM objects, using a scripting language to control the export of information, usually involving a capture phase.
- Win 32 API - The hardcore approach - translate a document, piece by piece, to printer output using API calls and then routing to a PDF Printer driver. Our initial research seems to point to using Midas as the best bet for parsing rich text for this sort of export operation.
- Java - There are (I think) a couple of libs floating around, most notably iText. Again, this seems to provide an interface for building the output of the PDF file piece by piece. For Notes Rich Text this also would require the ability to disect the rich text as you go.
Our current effort is aimed at reducing the number of clicks the user has to execute to get to the file name prompt. I tried using the NotesUIDocument.print method but that has a problem. If you provide no parameters, the Print Dialog appears as well as the File Output dialog. I'd like to skip the Print Dialog. But, to do that, you have to supply at least one parameter. When you do, the Notes Client seems to supress the anticipated file dialog as well.
What have you done? What were the specific (non IP violating disclosure) requirements? What would your ideal solution be? | | Read / Add Comments (12)
| |
Email: Notes Links Not Hot
|
|---|
| Fri 1 Aug 2008, | |
I had a question from a new reader in Australia (Welcome Tim!) in my inbox this morning that had us both stumped. Links in emails were not automatically turning into hotspots when mailing from a Domino application into Outlook clients.
My first thought was that some versions of Outlook now use Word instead of IE to render rich content to avoid problems with Active X exploits. Tim tracked it down, though, to the server. The specific conditions follow.
In a mixed environment, some with Outlook 2003 and a scant few with Outlook 2007 (most or all running Windows XP), the Outlook 2007 clients always turned Notes URLs into hot links, e.g. Notes://yourserver/yourapp.nsf. Many of the Outlook 2003 users received this only as text however, and only sometimes.
Further analysis on Tim's part showed that Rich Text, doclinks sent from his Notes client, were converting all the time. Doclinks manufactured by agents did not. He figured out quickly it was a setting difference between his Client and His server. Looking to the server configuration, he discovered that on the MIME tab,
Conversion Options tab, Outbound tab, Message Content field, it needed to be set to
"....from Notes to Plain Text and HTML".
After that adjustment, Tim reports "Tad Dahhh!" - success! I thought that was a good bit of problem solving on his part. Random, seemingly unreproducible errors are often the hardest to detect. Having wrought a solution, I thought it was worth sharing and do so with Tim's permission. Thanks, Tim! | | Read / Add Comments (0)
| |
Life: MRI
|
|---|
| Thu 31 Jul 2008, | |
I had the pleasure of having my first MRI yesterday at our local hospital. They have some pretty up to date equipment. I envisioned a CT scan on my way to the appointment, the kind that takes the form of a giant ring with sliding table. The MRI I'd heard about plenty of times, my Mom's had dozens, but had never experienced for myself.
It being a newer unit, it wasn't as loud as I've heard they can be. It was largely soothing in the way it heats up your body, especially as it was focussed on my lower back, which has been the source of much whining and complaining on my part as of late. The pulsing heat the radio frequencies impart felt at times therapeutic, and at others actually mildly painful. I described pass #5 to the tech as feeling as though a three inch section of my spine was burning.
Fortunately, I don't get claustrophobic, so the time spent on my back, in a small tube, with classical music in my ears and high energy waves gently cooking my innards was mostly a fight not to fall asleep (which makes me twitch sometimes - not sleeping, the process of falling asleep) and not really unpleasant at all.
The unpleasantness didn't come till after I got home. I felt really sleepy and kind of crappy, like I had the flu. This passed after a nap and some food. The effects of fall out? It reminded me of when my friend Sean was on the roof of our TV station back in college, right near the microwave link we had set up down river at an outdoor venue. All day he was manning the 'sky cam' right next to that receiver. After that he had the flu for a day or so and generally felt like crap. Makes me think there is probably something to the idea that too much RF is a bad thing, like when your oatmeal boils over in the microwave oven... messy. | | Read / Add Comments (0)
| |
LotusScript: SuperString Updated to Version 0.0.9
|
|---|
| Thu 31 Jul 2008, | |
I spent a little time reworking my SuperString class, you may remember from some time ago. A new function, GetAllSubstrings, has been added which makes markup processing a lot easier. See the original post for the updated code.
| |
Tools: Very Nice Connections
|
|---|
| Thu 24 Jul 2008, | |
The move to my new office is nearly complete. You can see some pics of what it looked like before I moved my desk and book cases down over at Random Fortification if you're interested. Doing so has also given me the opportunity to rethink the way I had hardware laid out, and how I connect to things.
The first thing I wanted to do was declutter my desk. You can see in this old picture...
 that I had just about everything on one desk (and that doesn't show the Mini PC that came to live between the monitors and the speakers I later piled on behind the monitors!). Now I have a smaller desk behind me where the Mac-mini, AOpen Mini PC, Router and DSL Modem live along with my second monitor. I can turn around to give these items direct attention any time I like and my main desk is looking trimmer and cleaner.
But, I still want the convenience of having direct on demand access to the machines behind me at any time - so I started playing with VNC servers and clients. As it turns out, OSX has a nice built in VNC Server, ostensibly for use with Apple Remote Desktop (which is insanely expensive). Fortunately, just by enabling the option to allow VNC Viewers to control the machine (secured with a password), any old free VNC Viewer will work.
For this task, I chose TightVNC on recommendation from my good pal Derek. TightVNC pretty much does everything you need at the right price. Ubuntu also has a built in Remote Desktop Server which was really easy to set up. With TightVNC, I can connect to both machines simultaneously with my Win XP box and be ridiculously productive. And those are some Very Nice Connections. | | Read / Add Comments (2)
| |
Design: Dialog List Comparison Chart
|
|---|
| Tue 8 Jul 2008, | |
I had a question today as to which control in the Notes UI allows you to type ahead to pick an item from a list. In this case, Names was not the data type, so my comparison form I threw together (pictured below) does not include @picklist. But, it shows you every other kind of selection list control the Notes UI (R8) offers and what some of the features, including aesthetics, are.

For most single value pick list needs, @Prompt is a big winner as it allows you to tpye "p" for "peaches" in a list and the "u" for "pumpkins". This result is reflected in the Type Ahead Continuous column. All other items shown only support first character type ahead selection.
I thought it was interesting that none of the multivalue versions support type ahead selection. That would seem to be a nice feature.
One note of correction - the Combo Box defaults to single value and disables the Allow Multiple Values option in designer. I was attempting to demo it as multivalue, hence the mislabeling in the Demo column. | | Read / Add Comments (1)
| |
Fun: U of Mass invents the Dalek
|
|---|
| Tue 1 Jul 2008, | |
This is awesome - a robotic arm with a cylindrical mobile base that bristles with what appear to be future placement nodes for mysterious robot equipment pods (clearly for exterminating humans) is invented by a University on Earth - thus completing the mobius strip of time that is Dr. Who and the Daleks. (via digg | | Read / Add Comments (0)
| |
LotusScript: OpenNotesDAO Updated
|
|---|
| Tue 1 Jul 2008, | |
I added a bunch of functionality, as well as some contributions from other developers over the past year, to the OpenNotesDAO class and it is now up to version 1.4.7, ready for your use, abuse, feedback and comments. I decided lately I'm not happy with some of it, but thought I see what others think. Some functions were geared for a specific environment and only ever return strings, nothing more complex. Should they? Let me know. | | Read / Add Comments (0)
| |
Design: Flash No Longer Invisible
|
|---|
| Tue 1 Jul 2008, | |
For a long time, web developers have relied on various meta tag and hidden text tricks to get websites with flash content indexed by search engines. A recent announcement by Adobe, however, is cause for some celebration (via Slashdot).
While Google and Yahoo will now have the magic recipe to search and index flash content, thus bringing many volumes more content to search results everywhere. FTA, static text within SWF files has always been indexable, but the changing state of dynamic content within [these files] has made it difficult to index in the past.
So, your embedded SWF files are probably already indexed by the Domino Full Text index, but the dynamic content will continue to be out of reach for native Domino searches, though Yahoo! plans to expose this capability via Yahoo! Search, so there remains the possibility of using a mash-up of some kind to search your (publicly accessible) embedded SWF dynamic content within your domino site from your domino web pages.
Knowing my friend Mark Barton like I do, I bet he's already working on just something like this, or already knows how to do it. :-) | | Read / Add Comments (0)
| |
Help File: (n)convert Documentation
|
|---|
| Fri 27 Jun 2008, | |
Try though I might, I can't find this online anywhere or in the help files. The ONLY place I could find it was by running the command from the prompt with out any parameters. So, for those of you who have been searching, like me, here is the documentation for convert/nconvert (NOT the video decoder, but the Lotus Notes mail template conversion tool). The below output was generated by running the terminal from the notes directory with Notes 8.0.1 installed.
The 'Convert' Domino/Notes utility tool
is used to upgrade a user's mail file design, or to convert
the mail design from one language to another language.
The Convert tool can also be used for mail file
migration to Microsoft Exchange.
Usage and options:
load (n)convert -? /? -a -c -d -e -f -g -h -i -l -m
-n -o -proxy -r -s -u -w -x -z arguments
-a "Admin Name" : Send mail to the administrator when
the convert tool completes.
-c : Convert categories to folders.
-d : Do not convert categories to folders.
-e or -e- : Enable or disable NSF support for IMAP.
-f : Read the list of databases to process
from a text file.
-g'Language Name' : Replace the mail file design with the
user's preferred language.
-h : Adds the IMAP-specific items to optimize fetches.
-i : Convert categories to folders, even if
there are more than 200 categories.
-l : Generate a list of mail files by reading people's
mail files from the Domino Directory.
Write the list to a text file.
-m : Enable or disable folder references
which are needed for IMAP.
-n : NOOP - Show the databases that match
the file name and template name criteria,
without actually updating anything.
-o : Remove IMAP specific items.
-proxy : Enable display status and error messages
in a console window.
-r : Enable recursive search of databases.
-s : Ignore the preserve flag for folders
when replacing the design
but always preserve them.
-u : Enable the upgrade of folders to the
same design as the $Inbox design.
-w : Enable fix up of names in Notes in
all mail files on the server to allow
for Microsoft Exchange Mail Migration.
-x : Enable exclusive design element keys:
-z "User Name" : Distinguished username for migrating
R5 IMAP seen flags to unread marks.
-inherit : Inherit future design changes.
-noinherit : Do not inherit future design changes.
-? /? : Display command line help information.
Examples:
Upgrades V6 mail design to V7 mail design from Windows Domino server:
load nconvert StdR6Mail mail7.ntf
Upgrades old mail design and its folders to V7 mail design
from Unix/Linux Domino server
load convert -u * mail7.ntf
Changes the user's mail language design from English to German:
load (n)convert -g'German' * mail7_en_de.ntf
Generates current mail user's file list on this server
and writes it to the file maillist.txt
load (n)convert -l maillist.txt
Upgrades all previous user's mail designs which are listed
in the file maillist.txt to Domino V7 mail design
load (n)convert -u -f maillist.txt * mail7.ntf
Performs address fix-up for all Exchange-migrated
mail databases in and its subdirectories.
load (n)convert -w
Performs address fix-up on the given Exchange-migrated
mail database.
load (n)convert -w
Generates a text list containing all Exchange-migrated
mail databases from the primary mail directory,
excluding replicas. This feature is of lesser-importance
than address fix-up, but it is necessary in the event
that the subsequent option is required.
load (n)convert -w -l
Performs address fix-up on all Exchange-migrated
mail databases listed in the given text list file.
Provides flexibility in allowing the administrator
to manage the databases that need address fix-up.
load convert -w -f
| | Read / Add Comments (3)
| |
Domino 8.5: XPages Right on Time
|
|---|
| Fri 20 Jun 2008, | |
You've no doubt been reading the buzz, news, great tutorials and reviews about XPages. I've seen a couple of worried comments though that it's too little too late. Is it? I think Xpages has arrived right on time.
Web development has been streaking along through the evolution of server pages to web 2.0 to mash-ups... it was only a matter of time before we saw commercial offerings. This year at the Microsoft Hero's Happen Here event, they unveiled Visual Studio 2008 which includes a great concept knows as XAML. XAML, unlike XPages, is for both the desktop and the web. Fortunately, we have a credible rumor that IBM will enable Xpages for the client in a future release.
You might be tempted to point out the web only availability of XPages as a weakness, a Johnny-come-lately symptom of an incomplete release. I think it's unimportant at the moment. The important thing is that the back end is nearly completely there. It should be a short job getting this working in the client. IBM may have to throw out some backwards compatibility (IMHO that would be a great thing) but it should be readily doable.
So earlier this year, when my head was spinning and I thought - man - things are so much easier in .NET and XAML is just da bomb... I had no idea Designer 8.5 and Xpages was going to come right up along side and rev its engine provocatively. :-)
At any rate, the next thing to do is to get a test server set up. Jack Dausman mentions using CentOS to set up a Domino 8.5 server and that's just what I think I'll do this weekend. Hopefully Prominic will be upgrading the development environment soon. :-) | | Read / Add Comments (2)
| |
Life:The Precipitous Decline of American Professionalism
|
|---|
| Tue 17 Jun 2008, | |
I've worked in many environments in the past 23 years of employment that I've logged. While coarseness and crass talk have long been staples of hourly wage earners daily discussion, people once upon a time knew when to call it quits, quiet down, or just get back to work. I've observed over time a steady decline in the tolerances and thresholds involved in this banal banter. On this present course, American workers, both blue and white collar, run a great risk of irrelevance in the work place as more professionally behaved individuals out work and out perform them.
The steady decline in classiness in the work place though extends to our neighborhoods and schools as well, cutting across economic and racial lines. Parents tend to ignore their kids more, teach them less at home and expect "the system" to pick up more of the slack with each passing year. As a culture, we have been steadily buying into the ideas pushed on us by the socialists - "trust the state", "trust the system", "don't judge for yourself what is right or wrong", "don't impose your judgment on others", and so on. We have been fed and have been willfully consuming this steady diet of shirking personal accountability for long enough that the effects are manifest everywhere you go.
I hear coarse language, angry, mean spirited speech and disrespectful attitude not just from the teens bagging groceries but the customers in the stores as well. Very few public events exist any longer where you can show up with your family and not hear one or more expletives or hear someone speak disrespectfully to or about someone - often in violent terms. When I was a young boy going to the store with my mom or grandma, it was unheard of for a child to be allowed to carry on a tirade against a parent, or spew a line of obscenity and hatred into a cell phone.
Those of us who are still making an effort to be accountable for our actions, for our kids, for our conduct and theirs have an upstream swim most places we go. We shut off public and commercial broadcasts at my house years ago. We still watch DVDs of our favorite television shows (one's where respect and creative problem solving are the staples of life) and let the kids watch with us, but the culture around us oozes and reeks with self hate or self worship, disrespect, materialism, eroticism and more. It's a virulent fetid stream of puss when compared to two, three, four decades ago.
Fracis Shaeffer draws a picture in How Should We Then Live? of a society in decline. He points to the decline of Roman civilization that followed a steady falling away from solid moral priciples, dedication to objective truth and aesthetic values towards polytheism, hedonism, and mediocrity. Sound familiar? Western culture in the last half century could accurately be portrayed in these terms. When we don't know what we believe, and worse - claim it is a social taboo to state what we believe if it at all makes anyone else uncomfortable and at the end of the day settle for partial success in promoting any kind of moral, professional or social integrity - we fail as a society. We devolve into a hive of loosely associated tribes, clinging tennuously to bare threads of commerce and perceived social freedoms.
I wonder what today unites America? Our culture? That is splintered into hedonism (gay rights, prevalent pornography), gaianism (environmentalism) and materialism (hip-hop, pop, mainstream youth culture). Morality, Christian values have become perrifereal, all but discarded. Could it be our economic ties unite us? The only uniting factor in todays economics is the taxation imposed by the government. We all suffer under the same burden and hence are united in our suffering. But apart from that, left to doing business with those whom we find it wise, profitable and sensible to do so, would we hold together as a nation? Politics divide us more than ever. If we have any hope for unity in the future, we can't continue to worship ourselves. We have to agree upon common priciples, once again, that benefit the most people most of the time . We can't continue to pull our society apart to cater to the minority whim in the name of inclusiveness. There are certain limits to what government should force us to accept.
My hope is that we will remember the root of reasoning, the root of modern science and the root of our great nation lies in reliable truths, facts in evidence, critical thinking, objectivity and kind heartedness. My hope is that with time, and a moral compass freshly polished and restored to working order, that we might find our way back to professional conduct, having "class" rather than being "crass", and an environment where strangers are met with polite beneavolence rather than suspcion and hatred. | | Read / Add Comments (5)
| |
Agent: Run on Behalf Of
|
|---|
| Fri 13 Jun 2008, | |
I guess it should be obvious what the Run on Behalf of field will do on an agent, but I ran across a novel implementation of it this week and wondered if it would really work. In this case, an agent scheduled on a server, running under one authority, grabs another agent, changes the run on behalf of to that of a signer id for another server, a specific id, etc., then calls runOnServer with that second agent.
My first thought was - what about the actual signature? If I'm just using the canonical name of someone else, what about that string is sufficient to properly sign something? The key appears to be running it on a server where the server presumably has access to the public key stored in the Person document in the NAB. I tested locally first and it was just my id that signed documents in another application when they were updated. Running this on the server the "signer" agent can be set to sign each document with the id of the original author just by changing the value in run on behalf of at then letting it rip. There is obviously other logic to determine which documents are being selected. In this case, to be brief, we're updating several databases at a time, so having one agent do the driving and a slave agent do the signing is a nice combo, especially where we do not want the target signatures to be changed to some other id.
Some prerequisites: the signer of the driver agent needs to have proper rights in the server document. This includes the ability to sign agents to run on behalf of someone else as well as (in our case, since we're using an API call to do the signing) the ability to run unrestricted agents, otherwise known as Full Administrative Access. Overall this is an effective way to manage mass touching of other documents or design elements without disturbing the signatures. | | Read / Add Comments (0)
| |
Mobile: $$Return
|
|---|
| Thu 22 May 2008, | |
I just learned something interesting that I do not want to forget. That's the usual reason for posts of this nature. The $$Return field you know and love for its ability to send you someplace after a form is processed. Apparently, the method by which this functions uses a meta tag not supported by all browsers - I'm not actually sure but that seems to be the case from my experiments. The IE6Mobile browser, for example, happily prints what you had in your $$Return field upon submit rather than taking you there.
Using this to my advantage came with a sacrifice. I had wanted to redirect to another form - a place where the user can click "Again" or "Done" - or something to that effect. I also wanted it to have the same look and feel as the form I was saving. To get $$Return to work for me, I wound up placing all of my HTML into the $$Return field for the form I wanted to display next. So, I see my links, but I'm missing some swag.
No big deal - the cleaner look removes distractions. And if I wanted to, I could just cram more html into the formula to get my style sheet going as well. This brings up an interesting possibility - the pregnant form?! An embryonic form embedded within a form, merely in its DNA code state... waiting to be born to realize its full potential. I imagine you are only limited by your imagination and the text capacity / formula capacity of the $$Return field itself. Lots of possibilities here.
As with all things, your mileage will vary. Not all mobile clients play by the same rules, use the same browser interaction, or in the case of the iPhone, even let on to the server that they are mobile in nature. Experiment amongst yourselves and have a fun day with Domino today. :-) | | Read / Add Comments (0)
| |
Life: What's happenning to America?
|
|---|
| Tue 20 May 2008, | |
Not a rant - more bewilderment than anything. We're burning our food (corn to ethanol), making light bulbs that contain enough mercury to poison 6000 gallons of drinking water and calling it more "environmentally" friendly, neglecting our strategic reserve but keeping ourselves dependent on foreign powers by not drilling our own oil, allowing our politicians to cater to extremely small numbers of individuals at the expense of the masses... what happened to America?
We used to have this mentality that we could do anything. More and more lately I hear from the people who are being laid-off talking like they are totally cut off - as though there is nothing else for them to do. When I was just out of college, I went and got two jobs making peanuts to pay my bills. Eventually things turned around and got better. I sure didn't wait for a union to straighten things out for me, and I sure didn't take welfare or unemployment. I took the cheapest housing I could, saved my money and ate cheaply. We used to have this mentality that the economy was the flow of money between people, not our life blood.
I know that things are very serious for people out of work, that they have children depending on the next paycheck to bring food to the table. But how many pay checks are going to beer, cigarettes, cable TV and the new car? How much is going to credit card interest? I know it's hard to change people, and I know it's hard to make ends meet when the money is slim to none. But there are a lot of things we have become lazy and slothful about that are easy to change with a little will power.
Optimism is one of those things. I hear so much pessimism in the media, and have been for so long that it has become a self fulfilling prophecy. The American people have come to confuse entertainment news media with reality. American news media has come to confuse fact reporting with entertainment. We've come to confuse public service with bringing home the most pork to the constituents. Has it occurred to anyone that we wouldn't need our duly elected representatives to bring more money back from Washington if we didn't send so much there in the first place? That if we applied critical thinking to what we see in the news that we might see it for the hype and thinly veiled social engineering that it is?
Folks, your government needs to go on a diet. Your politicians need to stop thinking of themselves as the elite class and start thinking of themselves as the servant class. The usual counter reasoning to this goes something like "but then nobody will want to serve". Not true. There are many people in this country who would gladly serve as a senator or congressman for NO pay. It used to be that those were the people who did so - it used to be that the compensation was a token payment, not intended to be a living wage (or better as it is by far today).
Along with our government going on a diet, so do we. We live a selfish, self defeating lifestyle. Pluck up folks. Not only is America more than the sum of its parts, each of us is more than our job description, more than the economy, our paycheck and how much stuff we have. My attitude has been do more than requested, more than required with more than I'm given. I think if we adopted an attitude of family, as in the American family, we would have a different view of our jobs, of our country, and of the economy. We would stop externalizing our problems and just take care of business.
A recent example comes to mind. My county along with 5 others on the Mad River valley passed local law to fund river cleanup to remove debris that contribute to flooding and erosion along the river. The same thing was voted down as a levy. The populace isn't interested in being taxed for it. Some how our County Commissioners got it done in a way that many folks are getting assessments in the mail, some for thousands of dollars. Twenty or Thirty years ago, the county would have asked for volunteers with chain saws to clean the log jams and dead-fall from the water ways. We've become so self interested, so selfish that the mere thought of volunteering to help our community for something mundane seems foreign to us. Our governments assume the need and right to tax us indirectly as a result of our self centered lifestyles. We have become so "me" focused that "we" are all suffering.
Aside from encouraging folks to turn back to God and the Christian principles of Stewardship (conservation - not environmentalism), selflessness and service to others, I want to encourage Americans to use the brains God gave them. Stop waiting for Washington to fix your problems. Stop waiting for the Union to fix your problems. Stop blaming other people for taking your jobs. Yes - there are hardships - but guess what - there are still Americans all around you who need work and need services. What a perfect microcosm. Global trade is fine when considering economies of scale, but when we are talking about local economic depression and regional recession, we need to address local and regional economic changes first. Global trade, foreign trade and jobs need to come second.
Fortunately perhaps, with the weakening dollar, we should see an influx of jobs in the future. But I wouldn't wait for it. Look around, step out of your comfort zone. Don't think like the drone the public school system trained you to be. Think like an American - like a person who can do anything they put their mind to. Don't believe the lie of entitlement. Believe in the promise of hard work, innovation and courage to step out and step up. Things are getting pretty bad - but the power to turn it around rests in our own idle hands. Wake up folks. | | Read / Add Comments (5)
| |
Domino: HTML Field
|
|---|
| Mon 19 May 2008, | |
Here's a quick tip for you - if you are creating a web form and use the field name "HTML", whatever is in that field will be the only thing to display on the web when the form is in Read mode. In Edit mode, all your other content will appear, but the default access mode, read, only shows that field.
So in effect, you have an override of all other content simply by adding this item to a document. This brings to mind a couple of interesting possibilities - well, one interesting possibility and one pitfall. First, the pitfall is obvious - you carefully create your nested subform based modular web page only to have it all disappear, showing only your HTML field. I renamed my field, of course, and the problem is solved on all new documents. The one test document went bye-bye.
Then comes the interesting possibility. If you have the task to mass update a Domino website and need some way to hide or blanket modify content in such a way that preserves all document data and you can't add any design elements, you could write a simple button script to update all documents, adding the HTML item to the documents. Even when the form no longer contained this item, the document did and hence the override occurred. Using this as a way to quickly move a large amount of web content to say, "Not presently available to web browsers" or something like that without mucking up everything else presents a powerful triage method. | | Read / Add Comments (0)
| |
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 (4)
| |
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 GetAllSubstrings, rewrote Substring. v 0.0.9 07/31/2008
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
Class superString
'superString:
''' Freely Distributable with copywrite intact
' Copywrite 2007 - Datatribe Softwerks, Ltd. - Jerome E. Carter, II
''' v 0.0.9 - Jerry Carter 7/31/2008 - added GetAllSubstrings, rewrote Substring to wrap it as it's easier to understand and troubleshoot
''' 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
''' 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
''' GetAllSubstrings
' returns all instances of the substring found between the supplied prefix and suffix
' e.g. My <%tagged%> markup should produce <%bonus%> material
' returns a list containing "tagged" and "bonus" if <% is the prefix and %> is the suffix
Public Function GetAllSubstrings(prefix As String, suffix As String) As Variant
On Error Goto eh
Dim blist As Variant
blist = Me.ToList(prefix)
Dim clist List As String
If Islist(blist) Then
Forall chunk In blist
If Instr(chunk,suffix) > 0 Then
clist(Listtag(chunk))= Left(chunk,Clng(Instr(chunk,suffix)-1))
End If
End Forall
Else
clist("error") = "A substring list could not be formed with the supplied prefix and suffix"
End If
GetAllSubstrings = clist
Exit Function
eh:
Msgbox "Error in GetAllSubstrings: " + Error + " at " + Cstr(Erl)
Exit Function
End Function
''' SubString '''
' returns the string appearing between the prefix and the suffix
Public Function SubString(prefix As String, suffix As String) As String
' Updated 7/31/2008 to take advantage of new function GetAllSubstrings
Dim blist As Variant
blist = GetAllSubstrings(prefix,suffix)
Forall n In blist
Substring = n
Exit Forall
End Forall
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 – all the components you’ll need to make it sit up and roll over
So, by now you are probably eager to see how this comes together. Read on to see how the flash control is populated from Domino, passes back a message and loads text details back from the selected record, again from Domino.
It’s worth noting that the widget is installed as an additional component into the Flash authoring client and has a myriad of customization options which we will not cover here – except where its relevant. Suffice to say, you are getting your money’s worth if you decide to buy it, which Mark did.
The flash player has a sandbox security system – similar to a browser security model which prevents cross domain resources being used. This means the component has to be hosted within the same domain as any pictures you wish to display. It is possible to define what pictures will be displayed across domains using either AJAX + Proxy or an injected script tag technique. To keep things simple we are hosting the component and the data within the same Notes database.
1. Flash Component – Photoflow
As we mentioned, the control accepts a number of parameters. You’ll need to feed it, groom it, and take it for walkies, details below.
As far as feeding goes, we need to get some pictures down its gullet. There are 3 ways to define the pictures which are displayed in the component:
- Hard code a list of URLs within the Flash authoring environment.
- Build an XML file and point the component to it by defining a URL for the XML file.
- Use Actionscript to dynamically add pictures
In this case we have decided to use the XML option delivered via Notes Agent as it allows us the dynamic output of data we require.
<?xml version="1.0" encoding="utf-8" ?>
- <photos>
<photo name="D7184A93ECCF39658025731E0037D161" url="0/D7184A93ECCF39658025731E0037D161/$FILE/notes.jpg">Lotus Notes 8</photo>
Notice our name property in the “photo” node above. That’s the UNID of our document in Notes and will serve later as a pointer for our use in the photoflow control.
The Agent approach will allow you greater XML bandwidth (no Domino server view limitations), so we took that route to create the XML file. The agent just loops through our example documents, an “Application Description” document in this case, and extracts the UNID and the filename of the attached image.

A view, or a combination of a view embedded in a page, would give you the same result, but as mentioned above, there are Domino server settings to be concerned with and sometimes forcing a view to output XML is more work than just writing the agent. From a code maintainability perspective as well as choose-your flavor of scripting (Java or LotusScript), agents win over views for this sort of work.
Ah, we mustn't’t forget the grooming. The other settings we have used are:
- Background Colour (black, of course – Alfie’s choice)
- Width and height of the pictures
- Width and height of the control.
There is an option to include a scroll bar which would facilitate a much larger catalogue, but for our short demo that seemed unnecessary. With our visual elements on a leash, there’s also some script-fu to attend to.
2. ActionScript
The authors appreciate your support.
We’ll want to capture the event when the user clicks on one of the images in the display. This event will in turn trigger an external Javascript function. To do this we can use a custom event which is exposed by the component and the ExternalInterface API which comes with the Flash authoring environment.
The ExternalInterface API is a class which allows Flash to call external Javascript methods (and pass properties) or vice versa.
The following Actionscript in frame 1 of the Flash movie will accomplish what we need:
import flash.external.ExternalInterface;
var lis={};
lis.onSelectPhoto=function(evt){
trace("selected photo");
trace("name:"+evt.name);
trace("photo index:"+evt.index);
trace("desc:"+evt.desc);
trace("url:" + evt.url);
ExternalInterface.call("jsFunc", evt.name);
}
photoFlow.addEventListener ("onSelectPhoto", lis);
This code will call our afore mentioned external Javascript function, jsFunc, passing the name property from before. Remember, we threw out UNID of the Notes Document in the name property in the XML feed (Alfie – fetch!). Now we are making use of it.
We then publish the SWF and HTML from the Flash Editor. This produces the HTML we’ll put into our Notes demo.htm page as well as the flash animation file, which we’ll import into our next bit, the Notes Database, as a file resource.
3. Notes Database
Into the Notes Database will go all the good chewies we’ll need to server up:
- The .swf file
- AC_RunActiveContent.js – this file is used by Flash to get around the click to activate issue with IE - its a standard file produced when you publish
- Mootools Javascript Library
- A CSS File
- We’ll also be creating an agent (towards the end of this article), a form to manage our Application Description documents and a few other sundry items
Darn handy containers, Notes Databases are. It’s worth pointing out that with other technology beds, our solution would be much LESS portable at the end of the day.
4. HTML Page
A Page design element, in our Notes Database, will act as our HTML page to display our composite interface in. Just set the Mime type to HTML.
From here, we add a reference the mootools JS library, CSS page and the AC_RunActiveContent.js. We’ll also need to copy in the Javascript and HTML produced when we published the Flash movie. Nothing tricky here, just make sure you don’t miss any pieces or it won’t work.
One customization made to the generated HTML was to add an empty DIV container below the Flash movie. This will be populated with the information returned from Notes which describes the item selected. While fetching up text seems mundane compared to the stunning visual provided by the Flash component, getting the text provides quite a bit of fun in its own right.
5. AJAX / JavaScript
Ah – some raw meat to chew on! Adding flash into a Domino app is certainly cool, but nothing satisfies like hand wrought code. To enable the communication between Notes the Javascript running in our browser, we have used the mootools library’s built in method to deal directly with JSON data.
So, all told, we have added 2 custom functions to the page:
- 1 to send the request to Notes to the item description text
- 1 to handle the resultant JSON data returned as a reply
The first Javascript function is called jsFunc and takes a string parameter. Remember this is the name of the function registered in the Flash movie to call when a picture is selected.
//Mootools JSONRemote method
function jsFunc(objName){
// Assemble our target URL (note the computed text below)
url='http:///Query?openagent&key=' + objName;
// instantiate the Json Remote subclass
var jSonRequest = new Json.Remote(url,{onComplete: function(jsonObj){
outputResults(jsonObj);
}}).send();
}
The computed value uses the following formula to determine the correct URL to call (a handy tip in its own right):
@GetHTTPHeader("HOST") + "/" + @WebDbName
Notice the onComplete method in the above JavaScript. It will call the outputResults method and pass it the returned JSON Object. I know, lotsa muvin partz. Read on.
The outputResults method looks like this:
function outputResults(myJSONObject){
// start fresh
Output="";
// Hai. I has valid c0d3z?
if(myJSONObject.error!="")
{
Output+="Error = " + myJSONObject.error +" ";
}
// construct an unorderd list HTML fragment to display
else{
Output+="<ul>";
Output+="<li>" + myJSONObject.title+"</li>";
Output+="<li>" + myJSONObject.team+"</li>";
Output+="<li>" + myJSONObject.description+"</li>";
Output+="</ul>";
}
//Mootools effect to hide the output container
myHolder.hide();
//Set the output - note innerHTML is not supported by some earlier browsers
document.getElementById('infoHolder').innerHTML=Output;
//Mootools method to set opacity to 10%
var myFx = new Fx.Style('infoHolder', 'opacity').set(0.1);
//Mootools - slide in the info box and then fade in the opacity to 100%
myHolder.slideIn().chain(function(){
var myFx = new Fx.Style('infoHolder', 'opacity').start(0.1,1);
});
}
As indicated in the comments, we trap for errors coming back within the scope of the JSON object. Other errors are going to have to be handled by the flash movie internal code. It’s a good practice to trap for the errors you are reasonably able to. Some things like communications or serer errors might not be trapable, but the JSON object does have an error property we can query, so it’s a good idea to take advantage of that.
After we have an error, or hopefully, a valid response, we use some of the moo tools tools to create a little bit of cinematic magic which hopefully makes the half of the display we are adding to the mix seem less plain than the shiny flash component.
6. Last one – promise! Lotus Notes Query Agent
But wait! What was listening for our AJAX call back when we requested the information about the selected image? A simple agent has been created to be the endpoint for the AJAX query. The agent expects a UNID to be passed as a parameter in the query string as we indicated back in item number 1. (“Now the circle is complete… “)
The agent extracts the UNID from the Query_String and uses it to lookup the correct document. From this it constructs the JSON object for sending back to the browser. Since the user interface is essentially blind to what is happening on the sever, the agent’s error handling is also configured to return JSON formatted error information so we can gracefully handle it in the UI.
Fin
There you have it – a walking, talking, best of show pure-bred mut. We pulled together a small pack of technologies and managed to get them all on a leash.
The overall architecture is:
Flash—> Javascript—> Lotus Notes Agent—> Javascript—> HTML
and looks something like this:

Drooling for the download? You can get it here: PhotoFlow.rar 333K Good dog!
| | Read / Add Comments (2)
| |
XML: Parsing WSDLs and Making SOAP
|
|---|
| Thu 30 Aug 2007, | |
First, a bit of an update. It's been a busy month. I was recently promoted, still a contractor, in an official sense to Development Lead. I've served in this capacity before but with the current client the top two spots on the team were full until a little mini reorg hit us, leaving one lead in charge of one half and the other in charge of the other half. Effectively, our total bandwidth was cut in half so that we could have more packets. So - that left a vacuum into which I was sucked and there you go. I'm heading up 6 projects over night as a Dev Lead and no longer have 12 projects under me as a mixture of developer and project manager (which was my unofficial part time designation).
So, it's been busy, crazy, fun and exhausting. Which is why an article Mark Barton and I have been polishing up for you has been in our pipe here for about a month. I'm just tracking down the last few dots to go over some i's so we can present it to you. Mark is doing some last bit of cleanup on the demo (yes, an article with a demo - all good!) and we should have it to you... sometime.
So the thing keeping me busy this week was the sudden realization that the method we have pinned our designs to for 5 projects in a row, and now a sixth (which would be all 6 of mine) uses SOAP Toolkit, which we call via COM. But, the soap toolkit uses late binding and the only way to write a bit of LS to actually call the methods of the class once it is configured is using the Execute statement. This was fine, so long as our input was only text values. We ran into a snag this week with outbound complex data types.
I've previously talked about handling inbound complex data types - it's really just about node parsing. But, using the somewhat narrow pipe of the Execute statement, we have a bit of an issue. It's no longer just a simple one liner to call the method.
errFlags = Execute({ strResult = mySOAPWrapper.} + preferredMethod + {(} + argument1 + {)})
With a complex type, let's say arugment2, I have to pass a UDT reference. Problem. Execute accepts a string. mySOAPWrapper is a global variant, so it works in Execute. But my UDT has to be passed not as a string but as an object reference. This means if I want dynamic allocation of the UDT, it has to be all written inside the string that is Executed as a much larger temporary module. This make debugging a pain and as far as supportable, well, we have some good people down stream from us... but I wouldn't want something like that coming at me and being responsible for up time.
So, my new approach (which came to me in the shower this morning) is to not use the SoapToolkit because our access to it is somewhat restricted (It's a COM object written for VB 5 and up, not LS, which is pretty much VB 4 in many regards) from our perspective and we have this problem with setting up all the values to push through it just right. Instead, I elected to remove the SOAP toolkit from the line up and use a cached and tagged (ala jsp) SOAP envelope, which would contain all the proper elements (including any complex data types) and then parse in our values and POST the soap envelope to the Web Service.
This actually takes a couple of issues out of the way. One, all the work I am doing to get the value sequence out of the WSDL is overhead everytime we make a call to the web service. The others were already mentioned. So the idea is this: When the business logic fires, it first looks for the cached SOAP envelope markup in a keyword document. If one doesn't exist, we will proceed to parse the WSDL and create one. This gives me more forward compatibility, better performance once the cache is established, and will make it more deployable to other solutions in a shorter period of time.
One final teeny problem. I don't have a super clean way to parse the WSDL and make a reliable SOAP envolope... yet. I've got a good start though and one of the Integration Architects at work is pulling some Java examples for me so I can look at the methods and structures they use and see if it's translatable to LS (remember, we are avoiding java as a matter of administrative policy for anything that requires external libraries, and most Java XML solutions do). With any grace and luck, I should have that nailed by close of business tomorrow... Tuesday at the latest. | | Read / Add Comments (0)
| |
XML: SAX, DOM and Transformers
|
|---|
| Mon 20 Aug 2007, | |
Sounds like the cast for a Jazz movie about the mafia and limousines that turn into robots. But of course, we are talking about the action packed, titillating word of XML. Nothing so riveting, eye popping, bat to the back of the head amazing like overloaded text markup to transport the number 42 over a long distance.
A recent quandary arose at work, one I spent most of my day trying to force feed my brain through. We are living (we meaning me and my coworkers) in an SOA environment. That's Service Oriented Architecture for the note takers in the audience. In this world, we consume (read as send messages to and get messages from) Web Services in the form of SOAP formated (scrub often and preen? or Simple Object Access Protocol) XML messages. In order to know how to formulate these SOAP messages, we configure our SOAP connector via a WSDL (Web Services Description Language) file. And, as you might guess, the SOAP and the WSDL are all in stunning 3D XML.
So. We have these Notes Documents. And they contain some very important information. Information a web service can't refuse. But, we need to know how to get information A into pocket B without Authorities C knowing about the transaction, capice? In order to facilitate this business transaction, some of my associates need to know how the fields in the document map to the NODES (not an acronym, but I caught ya looking) in the SOAP message. And, as we are using a SOAP Connector provided by the MS SOAP Toolkit, we need to know the order in which these pieces of information need to be laundered... er, delivered.
Now, the DOM parser doesn't have the ability to parse the WSDL and return a node based on that nodes name attribute. We can only get nodes by their tag name. Well, in a SOAP WSDL, at least in the RPC Literal flavor we use, XML nodes have names like xsd:element and wsdl:definitions. But I want the node where name="UltraMagnus". You might say that what we have here is a failure to communicate.
Enter into the picture the NotesSAXParser. The afore mentioned NotesDOMParser is actually built upon the NotesSAXParser. There are some things the NotesDOMParser does all on it's own that we would like to have some control over, which is why we choose the NotesSAXParser. I think.
You see, this is the point where I had to pack it in and head home today after a long day of reading up on and experimenting with this stuff. The last thing I did was start fiddling with the NotesXSLTransformer (I'm betting it's an Autobot). Into this you feed three NotesStreams. An Input Stream, an Output Stream and an XSLT Stream. That last bit may be my nugget of gold in the pan. An XSLT is essentially a style sheet for XML as we have discussed before. What I need to do is transform a WSDL into an XML format, or any format really, which allows me to retrieve the Operations made available by the SOAP Web Service along with the names of the properties it takes, in the PROPER ORDER required.
I'm pretty confident this is achievable as IBM discusses this very method for working with WSDLs. My task tomorrow will be to come up with an XSLT which will do the job. Anybody have one handy I can borrow? More later - maybe along with some of the utility classes I've been churning out. There's a chance I might try to use Dreamweaver to do it, but I only have a license at home and not at work. Pitty. | | Read / Add Comments (4)
| |
Skills: Shell Scripting
|
|---|
| Mon 13 Aug 2007, | |
I just got a new book in the mail thanks to Mark Barton, who for some reason was self possessed to honor me on my birthday with an Amazon gift certificate. (THANKS MARK!). I wound up getting four books in all. The one of particular interest is Beginning Shell Scripting by Eric Foster-Johnson, John C. Welch and Micah Anderson.
Why shell scripting? Part of my life long passion with computers is putting them to practical use. Shell scripting in Linux or in windows with something like cygwin (or powershell?) brings automation and raw hores power into play.
Automation is a life long passion for me when it comes to computers. I'm the kind of Notes developer who is far more pleased with a really keen scheduled agent than I am a flashy bit of UI. Automation is the real powerwell of computers, in my opinion, and having gone so long without having a good understanding of Shell Scripting is just silly of me.
Look for future articles as I begin to delve into the world of the command line and the linux API
| | Read / Add Comments (0)
| |
Hardware: New Camera
|
|---|
| Wed 8 Aug 2007, | |
My new camera arrived last night and I was so excited I did what every child (man) with a new toy does - run out and use it before reading the manual. I had good results (below) and eventually did read the manual. It's a Pentax k100d as previously mentioned and it's just perfect for what I like to do picture wise.
Here's a flower on the shrubs out front of our house. No idea what it is but they put up pink blooms like this just about all spring and most of the summer.
 larger version
I managed that with just the zoom on the 18-55mm lens and the manual focus and image stabilization turned on (hence the gauss effect) and no tripod. Perfect. I'm very excited about this camera. I can't wait for a clear night to try and get some more starry night long exposure pictures taken. I also have a 300mm zoom lens on order that doesn't ship till September. It'll be a long but worthwhile wait for that one.
The happy bit is I got it for a good price, had a tripod and bag already thanks to my now retired 35 mm Vivitar 2000, and have plenty of summer left to take out door photos. I am at this point a very happy shutter bug. :-) | | Read / Add Comments (0)
| |
Hardware: Microsoft Comfort Curve
|
|---|
| Wed 1 Aug 2007, | |
As seems inevitable, even really good keyboards die. My gorgeous clear acrylic Mac keyboard I've been using for a year and a half died a swift death when I knocked over a bit of water. I turned it up end right away but it was too late. The thin membrane circuits shorted out and it was all done. I even disassembled the whole thing, scraped the fouling off the membrane (the paths all looked good to me) and put all 25 screws back in but to no avail. Apparently the controller board was fried, so I had to pick up a new duty keyboard for the house.
Anyone who has watched me shop for a keyboard would think I'm mad. I try every keyboard on display at least three times, and look for boxed ones I can open to try if they are not on display. I'll try any wildly priced model looking for one thing - comfortable key action. I've really come to like the low profile keys and light actuation weight on laptop keyboards as I've been working remotely with my work-supplied Dell D120 lately and so I was really tickled to find this one.
It actually looks a bit cheaper in person than the photos let on, but it feels just right. AND it's spill proof to boot! The other nice feature is the built in Calculator key which launches Windows calc.exe in scientific mode with a single button press - just above the numeric keypad where it ought to be. No driver needed either, which surprised me.
For the price, I think I paid $19 at Microcenter and it looks like you can save about 4 with Amazon, it was well worth taking the time to pick out. It didn't take very long at all to get used to the curved key layout either. I can't swap key caps for Dvorak like I used to, but I touch type now anyway so no loss there. Definitely recommended as a cheap replacement keyboard or full size add on for your laptop workstation setup. | | Read / Add Comments (0)
| |
Life: 35 today!
|
|---|
| Tue 31 Jul 2007, | |
Well, here I am in the middle of my 30's. Half way to "over the hill" which I suspect means I'm on top of the hill for the moment? 35 feels like a mix of young and old. I'm more adventurous now than in the preceding 13 years or so, more willing to think differently and try new things but also I have way more aches than I did 13 or 15 years ago. My responsibilities are larger (two kids now, mortgage, retirement to plan for) but my stress is lower. I am at once comfortable with life and wish I could go back in time to the 2nd grade.
After pining for a nice digital camera for so long, I finally broke down last night and ordere |
|