Not only has it been a long time since my last post, but it has been exactly a year since my last post on my hometown NFL football team, the Pittsburgh Steelers. Sadly, last year we lost the AFC championship. This year we won it against the Denver Bronco's. This means we are off to the Super Bowl against the Seattle Seahawks. Superbowl XL is on February 5th, 2006. In preparation, my blog banner has been updated to "All Steelers, all the time" from the revolving banner of the past.
One of the great things about living in (or coming from) the Pittsburgh area is the friendliness of the people in and around the city. Last year, I blogged a bit about Myron Cope and the "Terrible Towel." One thing I neglected to mention is that all proceeds on the sale of the towel go to the Allegheny Valley School that provides care for children, adults, and seniors with mental retardation and physical disabilities. If you would like to support the Steelers, and the school, please use the above link (instead of the Google AdSense ones) so that the school gets additional credit.
I believe the Steelers have been playing for the 'Bus' - a.k.a. running back Jerome Bettis. The Bus has been a Pittsburgh fixture for years, not only as a dependable player, but as an excellent example of what a celebrity should be like. To illustrate my point, Hines Ward (a teammate and Steelers Wide Receiver) was in tears last year after the AFC Championship loss because he believed the team let Jerome down in his potentially last season. This year is different. Jerome will have the opportunity to play, and in his home city, Detroit. Jerome is active in the community, and is currently raising awareness about Asthma, a disease he is afflicted with, in addition to a program called "The Bus Stops Here," benefiting children from both Pittsburgh and Detroit. Jerome's parents, Gladys and John, have every reason to proud of their son, and the values they instilled in him.
Other team members have had tremendous impact on the Pittsburgh region. I don't want to leave out any players, but Charlie Batch, a backup quarterback, is also famous for not only coming from the Pittsburgh area, but for his contributions to it. There are several other examples of how the team and its players gives back to the community.
I believe much of the reason for the positive impact of the players of the Steelers goes back to the team's ownership and philosophy. The most famous owner is Art Rooney, a.k.a. "The Chief", who bought the franchise in 1933. If any Pittsburgher's have not yet seen the play "The Chief" at the Pittsburgh Public Theatre, you don't know what you missed! This play ran in 2003, 2004, and earlier this month - keep checking for it to return (possibly) next fall at the PPT website. Franco Harris (star player in the 70's) was talking about Art Rooney when he said, "He was always there to help and to give. And this feeling filtered down to the players. I think the Steelers' players give more to their community than any other team in professional sport."
I'm hoping that the Super Bowl in a few weeks does not bring on any additional heart attacks among the fans, but that you watch it with the understanding that many of the athletes on both sides of the ball are using their celebrity status and monies to better their communities. I think we can all learn from this.
To my readers in the Seattle/Redmond area - I didn't mean to leave out the players of your team, I merely am not familiar with their good works. I am, however, familiar with Victor's Celtic Coffee Company, and am currently out of the "Redmond Slough" blend as of this morning. I'd be willing to trade for some of that in exchange for posting Seattle Seahawks charity links and an equivalent amount of coffee from one of our local coffee houses (Coffee Tree Roasters)...
Go Steelers!
Sunday, January 22, 2006
Go Steelers Redux
Silence is a virtue...
I was looking for some way of explaining my recent blog silence. As one who likes to use the words of others to explain things that are difficult to explain in my own words, I hit the quote book and encountered this gem by Sally Berger: "You never saw a fish on the wall with its mouth shut." That doesn't really fit, but I found it kinda funny and that will have to do.
In addition to the typical excuse of the holidays, I also recently changed employers. This has the side effect of changing the type of development I do. Keeping with my philosophy that I speak only for myself and not my employer, I will not divulge the name of my current employer. I will also not divulge anything that could be considered something other than generally available developer knowledge. So in reality, the only thing that could possibly change is the type of content.
Most likely I will be delving into topics such as .NET Development, the Compact Framework, and native Windows Mobile (Windows CE) development/debugging. Some of these postings may be about deployment concerns in the Windows Mobile environment. Content suggestions related to this area of development are welcome. I also plan on finishing up a few posts on MSI related subjects I started a while back after some editing and reviewing.
If you have questions regarding MSI of other installer technologies, please keep them coming - many of the privately asked (and answered) questions I have saved as blog post drafts to be completed later, and I will continue to attempt to answer them time permitting.
In the meantime, constant reader, please bear with me while I adapt to my new environment and gather together some new (and old) content.
Sunday, September 25, 2005
Avoiding Disaster
This post is a bit off the usual technical topic - I will be talking about the duo of hurricanes, impact on the victims, emergency response, pre/post emergency evacuation of large populated areas, your individual family emergency plan, and how to help. Although I am not currently active, I was a volunteer paramedic and firefighter, serving poor and middle-class neighborhoods for several years, so I do have some background in this area - but far from an expert on the subject. To my loyal readers, I have some technical content in the queue for later...
Impact on People
It looks like Hurricane Rita was not as devastating as was feared. Katrina, however, was a nightmare. Ignoring the evacuation problems, lets look at the issues someone who evacuated early will encounter:
- Money. If you used a local bank, forget about getting cash from an ATM machine. As the banks were knocked offline, so was the ability of their patrons to access their money. Perhaps some distributed systems can be used in the future to alleviate this issue. In the meantime, I'd start depositing a good portion of my money in a nationwide bank or split assets between two banks housed on opposite coasts. Fortunately, lenders are claiming they are not going to report victims to the credit breuraus. Also fortunately, any cash you had in a banking institution should eventually be available.
- Housing. I'd venture to say this is perhaps the worst - you come back to a slab where your house once stood. Jewelry, important documents, photos of your great-grandparents, etc. are now all gone. Even worse is the potential backups of this information stored at the bank or a family member's house are gone, too. Is insurance going to cover any part of the replaceable damaged items?
- Job. Unless you work in construction, it could be a while before you can get your old job back. Hopefully, the owners of the damaged or destroyed companies will be able to rebuild at all. Without money, housing, or a job - I can't imagine surviving too well in today's society outside a log cabin house in the forest.
- Attitude. While there are several personality types out there, the two I am looking at are the "society owes me" and "I'd never take a handout" type of people. Both of these extreme personality types will require a make-over. If the "society owes me" folks continue with this attitude (or possibly get it more ingrained), they will never recover - assistance programs will decrease as time goes on. The "never take a handout" folks will not be able to recover until they do get some external assistance. Unless you are in that log cabin house in the woods, you live in a society, and participation is a two way street. This reminds me about a old and now not-so-funny anecdote about a man stuck on his roof during a flood. Three rescue boats floated past and the man refused the assistance saying "God will save me." Eventually he drowns, goes to heaven, and asks God why he wasn't saved. God's response - "I sent three boats..."
- Fixed income. These folks are the ones who tear at my heart-strings the most. In the previous paragraph I stated that "assistance programs will decrease as time goes on." These people are retired, and can't possibly rebuild their home, get a well-paying job (either because of age/health related issues or the fact that no company will hire them), or rely on long-term financial assistance. It would be nice to see a specific charity set up to help these people long-term who will soon be forgotten. Please leave a comment if you know of one.
- Social Structure. Coming back from complete devastation, it is likely a significant portion of what used to be society is no longer there. Neighbors, friends, church members, etc. could have either died or given up on their old lives. The remaining social structure will be slow to recover and ineffective. Small communal groups will likely form inside the shattered society, and their establishment should be encouraged. I see faith-based church groups as the foundation of these mini-communes, as many of these organizations typically group together people of different skills to repair an elderly member's house in "normal times". These groups of people can utilize each member to their best potential to serve the needs of the group. This was the old "American Western Frontier" mentality, which is exactly what is needed in these areas today.
The other subset of people, who did not evacuate prior to the devastation have all the above issues, plus some others:
- Mental scaring. I couldn't imagine being stuck in an attic with a gallon of water and a stale loaf of bread for a week - not knowing if I would eventually get rescued or not. Witnessing looting, fighting, and gunfire would put a damper on my ability to trust society when I do rebuild. Seeing bodies stacked on the sidewalk - unthinkable.
- Mental boost. The word "news" was formed from the first letters of "North East West South". I have been thinking that the "N" now stands for "Negative". I have heard many stories about positive things occurring in the aftermath, but stories without images have a way of being forgotten - images of people shooting at rescue choppers don't. I'm sure that many (but hopefully most) people in the midst of this disaster had positive interactions with others of their own species.
There is also an impact on the part of society that was not affected at all by the hurricanes.
- "How can I help" - I'm sure at least everyone in America has tossed at least a quarter in a fireman's boot for the relief effort. Unfortunately, this is not a very personal way of dealing with it. If this is as far as you have gone in the relief effort, shame on you. The money is needed later. Early on, the need was/is for water, housing, clothing, food, toiletries, sanitization supplies, ice, etc. The most effective assistance was immediate and non-financial. A local radio show got corporate and individual sponsors to get trucks full of various goods (from a specific list, donated by listeners) and convoy it to the affected areas. This was immediate assistance of exactly what was needed. Listening to the stories of the volunteers drivers in this effort brought me to tears - literally.
- "I'm not helping those looters" - I can't believe I actually heard this one (while dropping off a donation of goods for the convoy...). Repeat after me - "Not everyone in this world is evil". Taking it one step further, that attitude is not going to help society become less evil.
Emergency Response
Without getting overly technical, the response to any emergency is the same. It requires knowledge (as early as possible in the emergency) such as:
- Where is the emergency? In cases of mass casualty incidents, where is the worst emergency so we can attack that first.
- What is the emergency? Each response team has a different one (the engineers' emergency was to plug up the levees, as an example), but all efforts are focused on saving lives first.
- What are my resources? This is people (rescue workers), equipment (trucks, boats, choppers), and supplies (water, medications, etc) - just to name a few.
- Access. How close can I get to the scene? Can I get other, possibly more critical, resources in later? Can I get victims out?
- Mitigation. If there is a chemical spill, do I have to worry about keeping it out of the creek? For a fire, we would want to protect the building housing the explosive materials more than other surrounding buildings. How do we stop an already bad situation from getting worse?
This is where the concept of disaster planning comes in. Every area has one. In Pennsylvania, we have a bunch of coal mines, so dealing with fires, subsidence, and rescue is in our plans, and it may not be in your community's plan. To create the plan, you take a risk analysis of different disaster types, and attempt to answer all the questions posed above for the highest risks in advance.
For example, if there is a poly-methyl-bad-stuff chemical manufacturing plant, we would know, in advance, of where to go, what to do, and who to call. This is easy. Keeping it up to date is hard. When a parking lot next to the plant gets converted to an office building, you have additional concerns of more victims and less access. Was the plan reviewed and updated with this new development? Usually, the answer is no.Planning for disaster response on a large scale - like an entire city - is impossible. You just can't answer questions like the above in advance. For things like this, we rely on a list of resources. In my community's plan, we have several phone numbers for school bus and public transportation companies, heavy equipment companies, etc. If we need a drilling rig on Christmas Eve, we should be able to get one. Are these numbers and resources kept up to date? Likely - no. In a mass disaster situation, you do not have the resources to hunt down the current foreman of "Bob the Builder, Inc" to get a bulldozer to prevent one tragedy when there are 100 other tragedies going on at the same time.
This is where you, as an individual or business owner, can help. Contact your local fire department, and let them know what resources you have available, where they are located, and how to contact you or others that also have access to them. Notify them when this changes. There were cases where I wish I had an ATV or a snowmobile I can get quickly where it was rather difficult to get access or equipment to it. Ask what you can do in the event of an emergency to help out. Volunteer as a fund raiser or associate member of the fire and/or rescue squads to make sure these items are kept up to date and you and your community are protected. You don't have to go into a burning building to help save a life. Remember, after an incident starts, it is too late for planning.
Mass Evacuation
The infrastructure of all cities makes a mass evacuation impossible. Roads are designed (and in Pittsburgh, especially poorly) to manage the traffic of under 10% of the population using a major roadway on a daily basis. There is no way to manage this or mitigate it. Mass evacuations of cities will never go well. If you do have to evacuate, understand why you are evacuating - for a flood, if you can't get out, seek the highest natural ground or a flotation device. Have emergency packs where you keep items like water, non-email-based Spam, first aid products, sanitizers, blankets, maps, camping gear, and medical information/contact information tags for your family that they can wear, put in their pocket, or tape to their arms. You can grab this kit and go. Don't try to move that plasma TV to the attic and barricade the house from looters. Most people will try to get this stuff together before they leave. The earlier you leave the better.
Head for any area that is safe where you think other people won't think of to go. Going to the next major city where friends and relatives are is the first thing people think of. You can get to the friends and relatives later - for now get out of the danger zone and go where the route will be less crowded.
For businesses with large vehicles (trucks, buses, etc.) - make sure you know what to do before you get out in a mass evacuation. Where do you fit in the evacuation plan? Ask this ahead of time - you can be given a specific location to go to to pick up people and route to take when an evacuation is called. You are more likely to get assistance if you run out of gas if you are hauling maximum vehicle capacity of random people, than a car with one or two people full of useless stuff.
Your Family Emergency Plan
As a small kid in an amusement park, there was nothing more thrilling than being old enough where your parents let you go off on your own. Typically, you met at different times throughout the day at the same location so they knew everything was OK. But before you were old enough, I am sure your parents gave instructions as to what to do if you were separated - meet at the Merry-Go-Round, find an employee or security guard, etc. How many people have a plan if their house catches on fire? For something like Katrina? An earthquake?
There are plenty of sites that will help you create one. I'll leave it up to your Google-foo to find them. Here are some ideas to start you off:
- Sinking Titanic, Flooding, injured by a large explosion, etc. - Lets say the worst has happened. You are with your family now - but you may get separated. If not by the incident itself, rescue workers will need to separate people based on the criticality of the injury. Make sure everyone has ID - this could be as simple as putting a drivers license or credit card in everyone's pocket, diaper, whatever. Better yet is a Sharpie marker or something indelible where you can write directly on the skin - name, DOB, SSN, important medical information, and a few phone numbers of people you know. Trust me - in this situation scrawling "Diabetic" on someone's forehead is a REALLY good idea. Remember - you may get separated from your ID, clothing, medical bracelet, etc - and in the worst case, you may not be able to communicate. Make sure everything a rescuer could need is available, not only to medically assist, but to reunite you.
- Grabbing on to others. Same goes for tying a bunch of people together. In a water emergency, you may lessen the chances of both for survival. There are several techniques you can use, if you are in flood prone areas or like to boat, this is something you should research. I like the "The Worst-Case Scenario" series of books - they are humorous to an extent, but contain real and practical information. They are great coffee table type books to have around and page through, as an added bonus.
- Have a series of phone numbers handy, and on your kids at all times - not just in an emergency. Have not only the numbers of the local relatives, but the long-distance ones too. Explain that you are to call as many of these people as you can with your location to make reuniting easier. Cell phone numbers, although nice, are useless in a mass emergency.
Helping Out
Before donating, see if your company, like mine does, matches donations - then pick the best one from the list. Organizations that rate charities such as Charity Navigator are helpful. Remember that there is always overhead with these organizations, so try to get the most bang for the buck with your donation. Even better is to call a few local church groups and see if they are tied into a group in the affected areas with specific needs. Go out and buy these needs, and ship them down there. This way, 100% of your donation is being utilized.
My heart goes out to all the victims of this disaster, and to the families who lost loved ones. God bless them, and protect them.
Tuesday, April 05, 2005
A look in the keyhole
Google just added satellite imagery to their maps using their Keyhole technology. I'm wondering how long it will be before someone sells ads mowed into their front lawns on ebay. Perhaps I should patent the idea...
Thursday, February 17, 2005
Random thoughts
I apologize for not posting much lately. I've been fairly busy are work and some other side projects. I do have some nice articles planned for the upcoming weeks - from some installation related stuff to some specific Win32 programming topics (http.sys is one of them). Plus, I plan to finally publish the custom action dll sample for MSI that I've been promising since forever.
First, let me thank "G-Man" Geoffrey for offering some server space to store the custom action stuff. Also, thanks to Tim for kicking me in the behind for not addressing the Steeler's loss after the last posting - we simply were beat by a better team. Google's Ad program thinks this blog is completely sports related now! As a side note, Tim touched on the whole Mark Jen story, and I concur 100% with his thoughts, especially his 'fourth criteria'. You will notice that I don't even mention my employer in any way nor blog about work related items that are not general domain knowledge.
Looking at some blog stats, my largest referral was from Joel on Software. Second was referrals related to a tablet pc review I did a while back. G-Man is the third best referral, closely followed by Aaron Stebner. I don't get too many off-topic Google search queries, and MSN Search ignores me completely. Heck, there are 12 referral URL's in their index, plus I submitted the URL months ago, yet not one page was indexed yet!
I'm actually surprised that the MSI Custom Action in script topic keeps coming up elsewhere. Of course, when you look at some strange behaviors in the Scripting engine, I can see why! Not that any of us would write code like that anyway...
Saturday, January 22, 2005
Go Steelers!
In my hometown of Pittsburgh, PA we are in the midst of "Steeler's Mania." For my international readership, the Steelers are my local American style NFL football team. We are about to play in the AFC Championship game against the New England Patriots this Sunday (January 23, 2005) at 6:30 PM EST in Pittsburgh at Heinz Field. Assuming we win this game, we are off to the Super Bowl!
My normally revolving blog banner was changed to a panorama of Heinz field to celebrate this game. Some interesting tidbits about the stadium involve the implosion of the previous stadium (Three Rivers Stadium), some interesting specifications about the new stadium (including some construction pictures), and the difficulty it presents for kickers.
Our quarterback, "Big" Ben Roethlisberger is poised to become the first "rookie" to lead his team to the Super Bowl. Ben has become quite the Pittsburgh hero, having both beef jerky and hamburgers named after him, joining him in the same club as some of other elite Pittsburgh sports players.
Throughout the season, I have been disappointed in the quality of commentary presented by the television media outlets. My preferred way of enjoying a Steelers game (aside from being in the stadium) is to watch it on TV, but with the TV volume turned off, listen to the radio broadcast. Long-time (34 years!) Steelers announcer Myron Cope's birthday happens to coincide with the game on Sunday. I think a Steelers win, plus a Happy Birthday song at the end of the first quarter by the game attendees (As suggested by broadcaster Ellis Cannon) would make a wonderful present!
Myron was the inventor of a fan prop known as the "Terrible Towel," which is a bright yellow towel emblazoned with the "Terrible Towel" logo. It all started as a gimmick so that Myron could pretty much keep his job many years ago. Myron's take on using a towel for this gimmick was: "I'll tell 'em they can use the towel to wipe their seats clean. They can use it as a muffler against the cold. They can drape it over their heads if it rains." Aside from the practical, it provided both color and motion in the stadium. Any Steelers game, at home or away, you can be sure to notice the Steeler's fans because of these waving towels.
Myron is known for expressions known as "Copeisms" - especially the term "Yoi!" - meaning good - and its variants (double and triple Yoi's), with some Yiddish terms thrown in for good measure.
Watch out, New England Patriots, the Terrible Towel is poised to strike! Go Steelers!
Friday, October 29, 2004
Joel's best articles reviewed
Even though I have a billion other things to do, I couldn't help but get sucked into reading every one of the 112 (as of this writing) articled submitted to Joel's best articles on Software Development. This is a deviation from my normal content, but there is value to be gained for most all readers in the Software industry - designers, marketers, and developers.
Here are my favorites (not necessarily the best of the bunch, but ones that got me to think), I will link to the nomination post, suggest the audience type, and give my .02c. :
Church of XML. If you use XML and like sarcastic humor, this may interest you. At least, I hope it is meant to be sarcastic. XML is great for some things, but it is not the holy grail solution for everything data related. I remember in Y2k working for a company whose directors told the development staff that we must use XML. We quickly coined the phrase "buzzword compliance" to describe the requirement. There was no possible use for XML data in our application where XML was a viable alternative, much less a better one. At a later company, the value of XML as a method of integration with our customer's systems and as a communications mechanism (XML-RPC) was profoundly positive. Members of the Church of XML may want to defect after reading another few nominated articles: ant and XML, and Soapbox: Humans should not have to grok XML.
How many Microsoft Employees Does It Take to Change a Lightbulb. Any developer should enjoy it, but managers (especially ones driving deadlines) need to read it. I am a big fan of Eric Lippert's writing style. This one delves into the cost of fixing a bug. I prefer this one to the main article nominated since it is more to the point. Setup developers may want to read The anatomy of a bug as it deals with an uninstallation issue, and something you may want to think about. Both articles do not mention the cost of fixing a bug in terms of dollars (refer to your copy of Code Complete for more on this). Although you may disagree with Eric's line: "At Microsoft we try very, very hard to not release half-baked software," the point he is trying to make is if you do release bad code, it costs a bunch (in dollars and manpower) to fix it later. Almost on-topic is a 20 minute video of an actual bug triage meeting at Microsoft. Good stuff.
Plus ca change. Reading for anyone interested in how standards can be used to even the playing field for small software vendors. Or perhaps not. While I am not heavy into the web standards discussions today, at one point I was. To quote The Gunslinger, "The world has moved on." HTML's initial purpose (IMHO) was to allow me (the user) to render content as I (the user) wanted to see it. Netscape and Microsoft decided that their extensions to HTML would be the differentiators between their browser products. The content producers decided that web content should be shown to the user the way the content producer wants it to look, and with these extensions, they could. This seriously limits the accessibility of the content for people with disabilities, which was one characteristic HTML was supposed to give content producers (and users) for free. Flash and Shockwave further limited the control of content by the user. My thoughts on this today are for vendors to add their extensions whenever they want. If the extension provides enough value, other vendors will pick up on it and it will become a defacto standard. Today, implementing a standard in a web browser is not good enough to get you lined up at the starting gate. Look at Internet Explorer - massive share and not 100% compliant.
Lean Construction. Audience is general developers interested in planning. If you have read Code Complete, you will notice the use of metaphors throughout, one of which likens software development to a construction project. This article is the result of a software developer attending a class for construction foreman related to project planning. Some of the takeaways trumpet agile development methodologies. I especially like the quote: "master schedules are useless for planning work, contracting practices create islands of optimization, and there are large opportunities for productivity improvement." Is the author referring to current software development methodologies or old construction planning?
The 5 Pitfalls of Estimating a Software Project. Also see "Repeat After Me: I Am Not In the Software Business" in the same nomination. Everyone should read these. I have nothing else to add - they both have excellent points and are short enough to easily grasp it.
In the Spirit of C. Hardcore programmers. This one is fantastic. In the "managed" world of programming frameworks, it is easy to lose important roots in development. I am completely surprised by the number of programmers that do not know C or C++ well enough to code a real application. I've found that the best programmers are ones with roots in C. C developers tend to be able to learn new languages quickly, and pick the best language for any given programming task. Noteworthy quote: "In my experience there is almost no limit to the damage that a sufficiently ingenious fool can do with C++. But there is also almost no limit to the degree of complexity that a skillful library designer can hide behind a simple, safe, and elegant C++ interface. "
Ten Ways to Kill Design. Product managers are a good audience. This talks about new designs and pilots, and how/why they fail (unrelated to the design itself). For more information on the design, spec, and requirements, please check out another nominee On Reqs and Specs.
Hazards of Hiring. For anyone considering beefing up your workforce or looking for a job. It is an Eric Sink article that is very good, as usual. There are more worth reading that are related, such as programmers are not hackers.
Simple is Beautiful. All developers. Quote: "If you manage to write some code that a non-programmer can more or less understand, then you know you're there. The code should be simple and self-explanatory enough that should be a breeze to refactor in the future." Another nice quote is from Brian Kernighan (an inventor of C). I have this quote hanging up by my desk: "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it."
We built it but no one came. Product Designers. Quote: "the thing that engineers love most about their technology is precisely what prevents them from making money." I looked at Steve Johnson's blog and he writes lots of great stuff in the development/marketing arena. Subscribed! I recommend anyone in the position of designing a product for the Average Joe to pick up a book Crossing The Chasm by Geoffrey Moore.
Growing, Pruning, spiking an architecture. Designers. Quote:"Good architectures are those in which it is considered easy to create the features desired."
What is a Web Service. Anyone. I agree with the other commentator. This is more of a definition, but summed up well. This allows me to segue into the topic of dynamic vs. loose coupling in typical service oriented architecture, although this latter link is more specific to architects.
Exceptions vs. Status Returns. Developers. The age old debate on the use of Exceptions. My position is contrary to the nominee. If you take the debate further, there is the use of exceptions as flow control. Exceptions are good when used appropriately - for the exceptional case. Too many times I have seen code that encourages or uses exceptions when simply returning a status value would be better. There are some good examples here. An OutOfMemoryException is a valid use of an exception. No matter how deep in my code I am, this is something that is highly unlikely to be handled appropriately or anticipated.
How to tell your personality from your code. Developers. Quote: The Obfuscator: "while(*a) *b++ = (islower(*a))? *a++:*a++ + ('a'-'A');" I have not only worked with each of these coding personality types, but I have been them. I wonder what my code personality type was today?
Choose your competition. Entrepreneurs. Quote: "The existence of a competitor indicates the existence of paying customers." As usual, good stuff from Eric Sink.
State of Affairs in Computer Science Education. Everyone. I was going to write a blog entry about this one. Since I'm trying to get a new sheepskin, one of the classes I am required to take uses a book "Object-Oriented Application Development using Visual Basic .NET" by E. Reed Doke. The book stinks. The fact that I must take and pay for this "capstone" course instead of one where I could actually learn something new is one problem with the system. In this book, the author uses a phone number as the primary key on the Customer table! I guess with phone number portability, this is an acceptable PK! We are teaching people this? The brilliant author creates a method in the Customer class called TellAboutSelf() that returns a string representation of the object. Wouldn't it be industry-standard and expected to override Object.toString()? WTF! This simply adds to the retraining requirement of new grads that enter the workplace. This is another segue into yet another nominee Eric Lippert's Cargo Cult Series. If you are a new or experienced developer, and especially if you are still held captive by academia, this series is a must-read.
Saturday, October 23, 2004
Joel on Software's Best Software Essays of 2004
I noticed in my referral logs that a previous post of mine about Excellence in Software Development was nominated for the "Joel On Software" best Software Essays of 2004. If you haven't read that previous post yet, please do so. I'm impressed that "schmoe" found that post enlightening enough to nominate. It is certainly not the best work on the subject that could be done, rather reflections that came to me at 1:40 AM that evening/morning. Perhaps this is what blogging is about - a slice of time or history that impacted the blogger in some way that he or she felt important enough to share with others.
The nominator mentioned that my post is similar to the "Personal Character" chapter in Code Complete 2nd Edition. Sadly, I have not completed reading that book (including chapter 33) - it keeps getting pushed aside for other books because I read the 1st edition long ago. I'll have to put the book back to the top of the queue to catch this reference. I'm sure that I'd agree with Steve McConnell's philosophy - I have in the past.
Joel publishing a collection of these essays is a good thing, especially since he is so well respected in the community. Hopefully, he will allow some editing if that post is chosen - without having link context some of the points don't make sense, which is typical of a blog entry. If you don't read Joel, you probably should.
I haven't read many of the other ones nominated. I have read Joel's excellent essay on how Microsoft lost the API war. I disagree with Joel on "the new API is HTML" conclusion, but the points that he makes are well done. Perhaps I will blog a review of some of these other nominated articles after I catch up on some now mandatory reading at the expense of Steve McConnell.
Which Keyboard?
Last weekend, I spilled a little bit of coffee in my keyboard. Hey, accidents happen. I had a Microsoft Natural Keyboard Pro. It is a keyboard where the left and right side were split and a bit raised. I loved this keyboard. The feel was more "natural" than a flat keyboard, and I never had wrist fatigue. The keypresses felt perfect. Post coffee, the keyboard began to spit out more characters than asked to. After drying it out, tearing it apart, and putting it back together, I realized how sensitive these things are to manual reassembly. I also realized how much "flat" keyboards suck in comparison by how my wrist is feeling.
Today, I bought a Microsoft "Wireless Optical Desktop Comfort Edition." at Costco. The price was right at $60. I still like the feel of the keys, but this curved thing is making me crazy. I have never hit "backspace" as much as I have in the last two posts. Plus, after typing a bit, my wrist still feels strange, like using a flat keyboard. The "comfort edition" is curved, but not split or raised in the center. This may be the problem. Also, the function keys are shared shortcut keys. I won't get used to that.
Additionally, this duo has a nice "pleather" wrist-rest that I like. The mouse is plain plastic. I'd think they would both be pleather. I was wrong. The scroll wheel moves easily, but almost too easily. I don't get the feedback I am used to. Perhaps I will get used to it. The mouse "feels" right.
I think I am going to return this one and go with the "Wireless Optical Desktop Pro," which is most similar to what I used to have. Best Buy wanted $100 for it. I can get it cheaper online. I really don't care about wireless for the keyboard, but for the mouse it is useful.
Does anyone have other suggestions? I considered Logitech's similar offering, but I just don't know. Microsoft's hardware has always been top-notch.
Sunday, September 19, 2004
Too good to pass up
While I'd usually like to abstain from sharing personal or political viewpoints on a technical blog, this one was too funny. I take for granted everyone on the blogsphere knows about the Dan Rather / 60 Minutes II documents regarding Bush that appear highly likely to be forged. Well, there is a new product that can be used for document forgery. I can see Clippy saying, "So... It appears you are trying to forge a document..."
Saturday, August 28, 2004
New Look (aka the joys of CSS)
I changed the look of the blog today. I was getting tired of the "default" look and decided to customize it a bit. I started with the default Blogger "TicTac" theme, and then customized it.
I now have a banner image that randomly rotates on each page reload. The featured images (for now) are some excellent panoramic pictures of the City of Pittsburgh. Some are modern, some are from the early 1900's.
I also adjusted the feeds through FeedBurner. If anyone has problems subscribing, please let me know - it should be able to handle most RSS/Atom clients with a single subscribe link. If you are a blogger, give FeedBurner a try. See the sidebar for a link.
As for CSS, I think today is the longest amount of time I spent with it, and that was only a couple of hours. It was fairly easy to pick up. What is really interesting is how you can use CSS or HTML to define STYLES at design time, and at runtime you can change 99% of them. The :hover property of the 'A' object is not accessible from script.
One of the more interesting problems I had to solve was handling text coloring for the items that need to overlay the new banners. Of course, I need to specify certain things for each image - the color of the text/links, the color of hovers over the links, and the height of the image. At runtime, I randomly select an image, and the styles are changed to match. The title of the blog becomes a hyperlink to the main page if you are on an anchored article or in the archives. Since I couldn't change the :hover, I ended up cheating with handling onmouseover and onmouseleave events.
Anyway, if you want to check out the modifications to the modified CSS, you will have to view source, since I have no idea what the direct link to the CSS file is. If you want to use it, just send me a note or something!
Monday, August 16, 2004
Averatec C3500 Review - Part I
[UPDATE 2/26/05: Since this is my most popular article, I have updated the driver download versions and links, corrected a previous mistake in the CPU speed of the unit, and made several updates to points where Averatec has now provided downloads for items not previously available. Look for these UPDATE tags throughout to see the changes.]
This review pertains to the Averatec C3500 Convertible Tablet PC model as sold at Costco. This Tablet PC has generated a bit of buzz because of its price point and its features. The Costco model differs from the specifications as listed on the C3500's homepage in three ways:
- 80 GB Hard Drive (Instead of 60 GB)
- Carry Case
- $1279.99 Price (no rebate)
This review (Part 1 of at least 2) focuses solely on the hardware and software that can be discovered in one night of ownership. Issues such as heat, usability, battery life, and weight are not something that is easily determined or expressed after a few hours of use, so they will be covered in part II.
To put the review in perspective, I made this purchase on behalf of a student straight out of high-school going to college. Thus, the typical use would be for writing papers, with the bonus feature of note taking in the classroom. After showing a Tablet PC to this student, the features offered by the form factor and the OneNote application made it stand out from the crowd of traditional notebooks. However, my background is that of a software developer and general PC hardware enthusiast. Thus, the first two parts of the review will be mine and highly technical. The last part (assuming the student is willing) will be written from the typical non heavy-duty computer user college student.
Taking the unit out of the box, I noticed the case first, since the early message board reviews have not mentioned it much. It is a medium thickness, medium hard plastic, that is essentially a glove fit of the tablet. There are no pockets, and no storage space for anything but the tablet itself. It is also a purplish blue color. As this is not mentioned in the Averatec literature, it may be Costco model specific.
There are several images of the unit online, so I won't waste your time with putting more up here. I can confirm that there is a S-Video connector and not a composite video out that was pictured in some of the prototype models.
Plugging it in and turning it on began the typical Windows XP "finalize the setup" type stuff. I did specify an administrator password, which has a potential issue after rebooting the unit there is a logon box with the administrator name and a password error dialog that you must click OK to. Sometimes, this dialog is hidden behind the login screen, and selecting the user to login appears to hang. Use the ALT+TAB key combination to pop that window to the front, click the OK button, and continue the login process. Averatec does have an update on their webpage called "LogonFix" to correct this issue.
After booting for the first time, BEFORE going online/connecting to a network, I enabled the XP Firewall. If you do not know how to do this, I suggest Googling for it. I then grabbed Windows XP SP2 and installed it.
Once Windows was updated to SP2, I made a quick trip to Windows Update to see if there was anything else new. Turns out there are new drivers for the MSI 802.11g wireless card (released June 10, even though it is a Ralink card, see below) and the onboard SiS 900PCI network adapter (released July 11). Looking at the Windows Update history, looks like the person making the image for this tablet likely installed most if not all updates from Windows Update as of June 25th. I should have checked the installed updates previous to this point to have been sure. I installed these driver updates before checking the initial versions.
Hardware and Drivers
I always assure the latest drivers are installed before evaluating anything, so I checked with the hardware component manufacturers web sites to be sure. I hope this hardware and driver version list answers some questions related to the Averatec hardware components I have seen asked and not answered. Links are provided for the listed hardware for the geeks reading this (* means after the updates described above). [Update: Check Averatec's C3500 download site for potential updates to the below list.]
- SiS Northbridge chipset M741
- SiS Southbridge Chipset 963/963L (multiple chipsets listed at this link, make sure you are at the correct section)
- SiS Video - Mirage - Driver version 3.60a [UPDATE: 3.65 is available from SiS dated 1/11/2005 - also, a version 6.14.10.3600 (which might be older than the SiS one previously mentioned) is on the Averatecs web site and purports to fix some issues. If updating to SiS's latest version doesn't do the job, try the version at Averatec's download site.] The on board video uses 32 MB of the total system RAM.
- SiS AGP version 7.2.0.1170 (SiS's 1.17e), 7/18/2003 [UPDATE: 1.19a is available from SiS dated 1/25/2005]
- SiS 5513 IDE The Microsoft SiS IDE driver comes installed [UPDATE: (v2.04a is available from SiS, dated 11/18/2003) CAUTION: Be prepared to roll back the driver, as an earlier SiS version prevented a successful resume from hibernate mode.]
- *SiS 900 Fast Ethernet Controller v1.16.0.8, 7/11/2003 [UPDATE: v1.18 is available from Sis, dated 12/6/2004) ]
- UC-Logic Serial Pen Tablet to HID Driver v5.1.3.2, 5/4/2004. This means the digitizer is likely this model. The pen is likely similar to this one. The drivers on UC-Logic's website appears to be for their tablets, not for these modules. [Update: Check Averatec's C3500 download site for an update to v. 5.1.3.3 which may fix the disappearing floating input panel bug. One poster also claimed that a fix for this was posted on Windows Update.]
- LCD Screen - 12.1" LCD that is identified as a Generic type ("Default Monitor"). The max resolution is 1024 X 768. I remember seeing a post where someone states they could take it to 1280 X 1024, but the only thing that does is make the screen scroll.
- Hard Drive - Hitachi TravelStar 80GN (ATA-6, 4200 RPM, 12.0MS, 8MB Cache)
- DVD/CD-RW Slimtype COMBO SOSC-2483K, likely manufactured by Lite-On
- Alps Pointing device (12/5/2003, v5.5.1.2) [UPDATE: Version 6.0.305.5 is available from Toshiba.] Even though the driver is provided by another vendor, the control panel is much improved.
- Modem - Motorola SM56 Data/Fax modem (v6.07.06, 4/27/2004) [UPDATE: v6.08.01 is available from Motorola's website.]
- *Wireless - Ralink Technology 11g-RT2500 MiniPCI (6/10/2004 v 2.2.6.0) [UPDATE: v3.0.1.0 (1/20/2005) is available from Ralink's website]
- PCMCIA is identified as a generic cardbus controller
- Processor - Mobile AMD Athlon XP-M 2200+, runs at speeds between 400 Mhz to 1.667 GHz depending on AC vs. battery and system load. [UPDATE: Thanks to the anonymous poster for correcting my mistake here.]
- Sound - Realtek 650 chipset AC97 Audio (v5.10.0.5580 5/14/2004) [UPDATE: Version A3.69 dated 2/1/2005 is available at Realtek's website]
- USB - SiS 7001 PCI to USB Controller using Microsoft drivers
- RAM - 512 MB physical, 480 MB available to Windows (remember that 32 MB is set aside for the video RAM)
- built-in microphone which is located towards the base of the screen below the pen holder. This feature is not mentioned in the Averatec specifications.
Sadly, none of these drivers are posted on Averatec's website, nor provided on a disc with the Tablet. Although most of the drivers are available from the manufacturer of the component, some of them (ALPS touchpad and UCLogic's screen/pen) are not available from the component manufacturer. This makes restoration or a "from scratch" installation of Windows XP impossible. This same issue exists with the included applications, which I will cover later. [Update: Check Averatec's C3500 download site - the digitizer and touchpad drivers are now available there - Kudos to Avertec for posting most of them. See above for an update to the touchpad driver]
Software
As for included software, the Averatec has a basic configuration. It does not include the Office suite - just the OneNote application which is a part of the Office 2003 product suite. A complete listing of software is below:
- OneNote 2003 (w/o SP1)
- 1stMenuApplet (by FIC) 3.0 Alpha8 (Can't find this application or updates anywhere) [UPDATE: Check Averatec's C3500 download site - this is possibly what is in the Tablet Buttons download]
- Roxio Easy CD/DVD Creator 6 Basic [UPDATE: Check Roxio's site for newer patches]
- Adobe Acrobat Reader 6.0.0 [UPDATE: Please update this application, as 6.0.0 has some security issues. The latest version is 7.0. I highly recommend grabbing the PDF SpeedUp program after updating to reduce load times.]
- Cyberlink Power DVD 5.0 (Update available to build 1203 7/26/2004)
- Norton Antivirus 2004 (6 month trial edition)
- Windows XP SP1 Tablet PC Edition
It goes without saying you should update Windows to SP2 ASAP. This upgrades your Tablet OS to the "Lonestar" or 2005 version, in addition to the security and reliability enhancements in Windows XP SP2. At the time of this posting, this should be available to all users via Windows Update.
Likewise, Microsoft has made tons of enhancements to OneNote. Going to the Office Update site should allow you to easily update this to the latest version. However, Averatec left us with a problem - early models of this Tablet do not include the CAB files this update requires, nor is there a stand alone installation CD. Since I am a MSDN subscriber, and have access to this application, I was able to update it. However, those of you that do not have the same luck as myself will need to try downloading the full file version of the service pack (larger of the two downloads at the bottom of the page). Please leave some feedback as to if this worked for you.
The 1stMenuApplet program is what is used to control the hardware buttons. Unfortunately, it resides in the startup folder. Some people like to remove applications from there, but don't remove this one if you want the HW buttons to work! Also, don't uninstall it by accident, as this is not provided separately. This application is completely unusable due to its horrendous UI, and the readme found in the program directory indicates it is written by FIC and is an alpha version. I'm hoping that a newer and more usable version of this software is provided at a later time. [UPDATE: Check Averatec's C3500 download site - this is possibly what is in the Tablet Buttons download, although it states it is the initial shipping version, I am not 100% certain that this is the case.]
Lastly, the BIOS (Yes, I'm calling it software) is made by Insyde. This is the most plain-looking BIOS I have ever seen. Virtually no settings can be altered aside from boot device order. Some people have speculated the video is capable of 64 MB shared memory, and the chipset specs appear to confirm this. However, the BIOS does not allow you to configure this amount. Perhaps future revisions of the BIOS will allow this.
Benchmarks
I'm not a fan of benchmarks, but they can be a rough way to make comparisons. The methodology is simple: Two runs of the benchmark are done. One run with the AC power plugged in, one with the battery power. The software used is the PCMark 2004 Free edition. Drivers, applications, and OS are updated to the latest version as described above.
- AC power: 2013 PCMarks
- Battery: 2019 PCMarks
I found the unit to have a solid feel. The hinge also feels solid. The keyboard feels like most notebook keyboards, and I was able to type on it w/o missing keystrokes (My hand would be classified as "large" bordering on "extra-large" if you go by the manufacturer of most types of gloves).
There is nothing horrible about the layout, like most notebooks, the special keys are fairly inconsistent and reside in different places.
Wireless Networking
The wireless networking component can be turned on or off by using a switch. I believe this is to reduce the battery consumption of the receiver continuously scanning for an Access Point. One thing I noticed is even when the C3500 is near the AP (Excellent signal strength) Windows continuously pops up the "...is now connected" message. I am not sure if this is because the connection is constantly being broken and re-established or because Windows likes to annoy us with useless messages (ala Clippy). I will run a socket test application I wrote eons ago to determine what the problem is (if any) and report back in part II.
Overall initial impressions
I am quite disappointed that Averatec has not made the drivers and applications that are part of the restore image available as stand-alone install executables. This limits the end user's ability to repair themselves in the situation where inadvertent circumstances end up destroying the installed drivers or applications. Thus, the only way to recover from this is a fresh recovery image of the tablet with the user losing installed applications and data. [UPDATE: These are now available on Averatec's C3500 download site]
Secondly, although this is related to the first point, the Windows CAB files and OneNote cab files (installation files for reinstallation or patching) are extremely important, yet they are not provided. Averatec would do well by providing CD's containing these missing bits to the customers who bought early models without these installed. If the student were a web designer, IIS (the web server that ships with the OS) could not be installed with the CDs and computer as provided by Averatec.
On the plus side, the Averatec customer support rep I spoke with appeared to speak English as his primary language (contrary to some other posts I have read), and was able to answer the OneNote update question regarding the missing CAB files after a short delay. He did not point me to the full file download, although I am not sure if this will work or is an acceptable workaround (please let me know if this is the case). 24 hour tech support is provided.
In Part II of this review (expect it inside a week), I will cover more specifics of the performance of the hardware. Factors such as heat, boot time, battery life, included microphone performance, wireless networking distance and reliability, digitizer/pen sensitivity, and weight will be addressed. If there are any further questions as to the hardware or software not addressed in this article, please leave a comment as to what you want addressed and I will update Part I and add it to the Part II review. As a side question, what software should I add to this in addition to Microsoft Office student edition that would be useful for a college student?
Monday, June 07, 2004
Instant Insanity
One of my coworkers is attending a “Creativity Class,” and he brought over a puzzle made from blocks of wood. Essentially there are four cubes. Each side of the cube is painted with one color out of a palette of four colors. The object of the puzzle is to arrange the blocks in a single row and have only one of each color present on each of the four sides of the column of blocks. You may get a better idea of this visually.
Being in a group of people intrigued by riddles and puzzles, we attempted to solve this puzzle. After about 30 minutes, we gave up on it for the day. Thanks to Eric Lippert, I am now re-interested in writing algorithms. So I wrote one to solve this problem. It would have taken less time to have written the algorithm in the first place.
My solution is iterative, although a recursive solution is easier. I’d encourage anyone to try writing some code to solve this one. In a few days, I’ll post some comments as to the mathematics involved and give my solution. Go ahead and use the colors from the link above as a starting point.
Thursday, June 03, 2004
Welcome (or something like that)
This blog is dedicated to random musings in software development and related topics I (or you the reader) may be interested in. I hope I don't receive any death threats though...
A bit about myself... I am a software developer for a Fortune 500 company (not that it gives me any credibility :) specializing in software deployment technologies and enterprise application management, although I do other stuff as well. In a typical day I may have several applications open - Visual C++ 6.0, Visual Studio .NET 2003 (C++ and C#), Source Safe (yuk!), Wise 9 (double yuk!), InstallShield DevStudio 9, Visual Build Pro, and SQL Enterprise Manager.
As far as development, my current areas of development include MSI (Windows Installer), and the Win32 API. The MSI stuff is mostly Custom Actions in both C++ and script. The Win32 stuff is mostly remote machine management in nature. Since there is no Blogging policy in effect at my employer, I prefer to not be more specific.
In my past, I have done lots of cool stuff related to audio fingerprinting and recommendation, and some general algorithm work. This was done in a cross-platform manner to work on both Win32 and Linux systems, using wxWindows (now called wxWidgets) for UI work as necessary. On Win32 we supported both WinAmp and Windows Media in addition to MP3 and other generic audio types.
Since this is more or less an open blog, please feel free to suggest topics of interest that you may want me to rant about. Welcome and thanks for reading!