USPS wants my Money! For a package never sent!


I got this in the mail this morning.  Shock! Gasp! What?  I haven’t sent a thing using the Post Office in months and here they are trying to get money from me.  Somehow I get the feeling that this may be a fake!  A Scam!  Ok, being a bit facetious.

Yes, kiddies a new scam is going around.  What is this?  A weekly event?  I remember when it was months between this events.  Now they come at you faster than ever.

So you’ve got:

image

All the links go to:

image

DO NOT type in this link yourself.  If you do, it’s at your own risk.  No links in this notice should be clicked.  Delete it as fast as you can.

image

Amounts change a little. So do the links!

image

and again

image

You would think that they’d send only one.  Multiple with different amounts with the similar or identical verbiage…

image

Another interesting link…

But, thanks to them, I can write a quick blog post…  Smile

Boy! Am I popular! Free Money! Linked In Friends


Well, maybe…  or could it be another slew of phishing attempts? 

Gee, I really could use a few extra bucks, you know?   Hey, maybe the eMail fairy has sent something.

Wow!

image

How did they know I needed $1500? 

Really?  Click this link and you’ll probably be asked to provide you bank account information.  By tomorrow, that $1500 you were expecting never materialized and in fact, your whole bank account is wiped out!

I have a new co-worker! 

And they want to connect via LinkedIn!

image

You know, it’s great that my Co-Worker Vaughn wants to be friends!  Really!  That is if a person named Vaughn worked for my company.  Besides having no Vaughn past or present, the copyright is for 2010 and that is like a couple of years ago.  Either LinkedIn is slipping or this is BOGUS.  You know my vote: BOGUS!

What’s fun is to take a look down Junk Mail lane…

Reach Your Peak Performance

Gain size while you sleep!

Some Canadian Pharmacy has:

Save-8O%-0ff-Viagra©-Cia1is©-Levitra©

Now back to LinkedIn

image

They couldn’t even get the copyright symbol correct on this one…and lastly?

image

My classmate.  I may have known a Griffin and certainly a Trevino but not a Griffin Trevino. 

Make it stop…

Make it stop…

How I challenge problems or troubleshoot challenges…


Some History

As a kid, I love to take things apart to see how they worked.  Ok, so this is a radio, you open it up and see things you can adjust.  What happens when…  Ok, maybe I’m not so far from that kid.  I still open things up and make changes just to see the result.  That’s how I learn…  Now, this short blog is about my approach to problem solving.  I’m sure there are others who have written similar articles on similar methods.

imageyup, I used a Swiss Army knife too!

Not my concern.

This is my approach and if it bears any resemblance to anyone living or past…  Well there is one who has past on that served as the nucleus to my process.  That one is JRR Tolkien’s own Bilbo Baggins.

What have I got in my pockets?

When you approach a problem, how do go about it?  Do you look at the challenge and immediately see that you have nothing on had that can address the issue?  If that’s the case, then really there are three paths to choose from:

image

Ok, says you, what happened to the fourth option of “just buy new”?  If you just buy new, there’s no more problem to solve.  That’s always the golden option with it’s own set of issues.  So really the above becomes:

image

What’s interesting is that the amount of effort to “Do the minimum” and to come up with a solution is about the same.  Many times, coming up with a solution results in many side benefits.  My thoughts on the matter are:

Coming up with the Solution is FUN

Doing the Minimum is Depressing

Speaking of Fun, are Visio diagrams fun?  I digress…

OK, now it’s on to “What have I got in my pockets?”

That phrase was muttered by Bilbo Baggins in the Hobbit when confronted by Gollum in the riddle game.  Bilbo was simply thinking aloud, trying to come up with an appropriate question for the game so Gollum would lead him out.  Gollum jumped to the conclusion that what Bilbo said aloud was the actual question…and the story continued on.  If you want to know what happened, read The Hobbit by JRR Tolkien.

What Have I Got In My Pockets

You have a problem/challenge and you need to find a solution.  The easiest path would be to just buy new but… there’s no budget.  The “do nothing” path isn’t a solution either because what you need to resolve is either failing or has a specific termination date (don’t worry, there are times you can “do nothing”).

Look around – Solution not the problem – Take Stock

A lot of folks try to solve the problem immediately without stepping back to take stock of their situation.  The key is to ask “What do you really need solved?” 

You need a widget to do something.  You are surrounded by tools that can provide you a widget like substance but they all require some resource.  The quick folks (sometimes this is the only choice you really have) use a widget like substance that only takes care of 10-20% of the problem.

10-20%

So you got a 10-20% solution in place and that will tide you over until the next iteration. 

You got past the crisis and it was all good right? 

Just like ol’ Bilbo and the Ring of Power.  He turned invisible, escaped Gollum and had a nifty new invisibility ring.  Neat right? 

Like any quick solution, if the long term results aren’t looked at and the wizard of knowledge not consulted, the solution could turn into disaster. 

This is not to say that quick solutions don’t have a place, they do but unless you are at the 80% mark, there’s still a lot of work to do.

Getting Past 20

Now the diagram looks like:

image

But that’s not quite it either.  It really should look like:

image

But wait, there is no end!  Even if you do nothing, the odds are pretty high that if the issue came up once, it will show up again.  So, in my problem solving model, the problems never go away… bummer!

The Stage is set

Up to this point, I really haven’t talked too much about how the problem is solved. I’ve addressed identifying the issue and the possible paths to the solution.  Congrats!  Step one is done.  The whole effort up to this point is to gather information on what the problem is, what is the needed result (immediate and long term) and what can be done now to get the process moving.

When doing nothing is the right answer

I love it when folks get so wrapped up in the idea that there is a “problem” and no one stops to look around and see if it is just groupthink.  In this situation, the solution may be to do nothing because that is the right move.  Sure, that the issue came up may lead to some interesting facts about the whole process and MAY identify a different challenge that needs addressing but doing nothing about the “BIG ISSUE” is ok.

Why is only doing 10-20% ok?

Often, challenges are really composed of many different pieces and are lumped together into a challenge forest.  Maybe all you need is a path through the forest and the rest of the trees can be taken out late when more room is needed.  The key is to make sure that the initial items addressed are the immediate blockers.   Using the forest analogy, just taking out some random trees does very little if the goal is to make it to the other side.

But I don’t have a chainsaw!

You may not have the tools to quickly cut down the trees right in front of you.  But maybe, that’s the wrong action anyway.  If you don’t have the perceived right tool, look and see what tools you do have and how they can be applied to the landscape.  In front of you, you see trees but if you look to the side, you see a river flowing through the forest.  Perhaps instead of an axe or a chainsaw, all you need is a boat and you have a lot of boats sitting around.  The river may not be navigable all the way to the final destination but creating a portage around some falls is a lot less effort that plowing through the forest.  Less destructive too.

Wrapping it up – What have I got in my pockets

Gather

Don’t assume there’s a problem.  Take a breath or ten and clearly define what the challenge is and what roadblocks are in the way.

Choose immediate actions to take

Can you take the pressure off?  The dam is filling with water too quickly, letting out some water now will keep it from overflowing allow time to build a new dam upstream.

Make sure the goal is the right goal

Remember the forest?  Just because a challenge is stated doesn’t mean that the problem to solve is right in front of you.  It may be off to the side from a different  perspective.

Revisit and revisit and revisit

You’re never done.  Job security?  Maybe but if you are always tuning a process to make it better, it certainly helps keeping you around.

We’ll I’ll be dipped…


Surprised smile

We’ll there doesn’t seem to be a consensus on where the term “I’ll be dipped…” comes from.  It was probably from some form of entertainment.  I mean, the American language, like any other, twists and turns and morphs through time.  But where was I?  Oh ya, did you know I’m a CPA?  Well, according to an email or ten:Winking smile
image

Really, news to me.  I thought you had to pass a test or something…

image

Some more SSDD stuff….  Text is a little different but not much.  But wait, there’s more:

image

Hey, looky looky… I’ve filed for a tax appeal.  But, I haven’t that I know of.  Wow, must have done this in my sleep…

It’s tax time and the Phishers are at it again…


First I get this…

image

Huh?  “With intent”?

Then along comes…

image

This one was from onlinebanking@ealerts.bankofamerica.com…

B of A would not send out an email solicitation on behave of Intuit…

Ok, this is bogus.  Similar but bogus.  If you are concerned, please call Intuit or go to their official website.  Companies never send out direct correspondence this way.  Only criminals do.

Some other examples:

image

Or..

image

If this does worry you, call the BBB.  They are in the phone book.

I have to say this, the crew doing this has improved.  The English is better but still has a way to go.  I mean, “Here with the Better…”  really?  “Here with”?  Who the freak speaks like that anyway?

Oh Hail the Mighty Customer… or is it Oh Hell!?


Openers

As I started down this train of thought…

Visions of the future crowded in…

Then a ditty popped into my head and it’s ok now.  I mean, what do you do with a drunken sailor? Especially early (err..lie) in the morning. 

This is about Customers and their ways of expressing what they want in contrast to how a lot of technical experts (Consultants, programmers, architects…you name it) interpret those requirements.  I mean, it’s all covered with SDLC or Agile right?  Personally, Agile seems to me a better approach.  As long as the project remains a manageable size.  What do I mean by this?

The Grand Example

Perhaps it’s the Grand Illusion?  Yes? No, STYX!… To keep this short, I’ll use a very basic example where a customer provided me with an input form and a report/input form.  Not really grand…but it will work…

To break it down:

The system definition:  Provide a means by which exceptions generated by customers could be recorded and reported on.  The reported information needs to be generally available to specific groups and easily maintained.  There are two processes by which this information is obtained.  A daily review and an on demand special review.  Kind of looks like:

image

The normal path on the left, occurs daily.  Exceptions are reviewed, reported and resolved.  The “Special Case” on the right only happens on demand and all records reviewed are accounted for.  Those with exceptions follow the same basic path as the daily review of exceptions.

The first pass of the forms received looked something like…

An Input Form;

image

and the combo form:

image

The Input Form was pretty easy to start with to begin the database modeling portion.  It had some selection entries, basic business processes etc.  So here’s how that part went down…

You’re right but I’m right… conveying why the physical model is different

The customer in this case was pretty user savvy with databases.  Running queries were second nature.  ‘splaining how the tables were derived was initially a challenge.  Now, the easy approach would be to take the basic assumptions from the initial design discussion, run back to the lab and crank out a prototype.  Then negotiate change requests…  I didn’t want to do that this time and it was important that the customer fully understood the data design for future support issues.

When is a Model a Model and how do you get there?

One of the bigger challenges I run into is turning the concept from idea to model.  The customer always has a vision.  The vision is always the right one. It’s just up to you to build it, right?  You get there but it’s after cost overruns, delays, and other unsightly events. 

Or worse yet, the customer has a vision but so does the architect.  Then the customer’s vision is taken as just so much advice and adhered to where convenient.  Under that scenario, nobody is happy with the outcome.  The customer isn’t happy because the final product is not what they requested and the architect is unhappy because everybody thinks the baby is ugly.  Back to cost overruns and hurt feelings.

So, back to the scenario at hand.  So far, all that exists are some drawings of a potential system and it’s time for a little show and tell.  Now, taking time out to go and create a database ruins the moment and delays the process so here’ s where a prototyping tool like Microsoft Access comes in real handy.  Even better if the the customer has a smattering of experience and you can drive them to drink …no… create the structure.

Creating the Model as a basis of discussion

Let’s face it, the best system is define/designed when all parties have a clear understanding of what the point is.  Too often have I seen a construction project go awry because the end goal was not understood.  Going back to the original request.  Had I just ran off with the drawing and a base understanding, the end product would have been something other than requested.  Never happens right?  Always a clear understanding, yes?

This is where build and discuss is such a great thing and really stresses RAD (rapid application development).  I’ve worked with some interesting tools for model driven architecture and they all have their strong and weak parts.  Bottom line, use the tool that you are comfortable with and can show results quickly.  I like Access 2010 because you have all the parts there and upsizing to SQL is a snap.

Back to the process and the application under discussion.  What appeared to me as a report, actually turned out to be a hybrid between data gleaned from the system plus some additional manually input data stored as it’s own unique set.  Not only that but a whole other set of requirements came out of the modeling process.  It took quite some time but even at it’s rough stage, the final product is already shaping up into something the customer is happy with and can see additional offshoots for future enhancements.  This is a much better approach than building some ornately complex system that only you can support.  Scary thing is that some folks do this unintentionally.

Structure out of chaos

Software development requires a structure mind, a structured process and a structured result.  That works very well when you are creating a finite system of inputs and outputs.  For example, a real estate listing system is concerned about the content which is composed of properties.  There’s a pretty finite definition of a property and it’s uses. 

Where chaos comes in to play has to do with systems that track or deal with variable content.  While there is only one way to accurately describe a house in a listing, there are a lot of ways to creatively change or embellish the basic data such that the house stands out or appeals to a specific group.  Which is why there list such things as Equal Housing Laws.  Some Real Estate professionals were a bit more creative than others…

So how does this come around to Modeling?

When you build the app with the customer in small bits with lots of discussion, the application starts to take shape from some basic building blocks.  Asking key questions about values and if those values should be limited to a specific set, yield sub tables with relationships where initially there were none.  When you start out, you basically are working from the logical model of the data structure.  As the discussion progresses, you can start to build out the physical model for the application.   With a tool like Access, you can quickly throw up some basic forms and ask questions like:  is this how you envisioned it?  What happens when “this” event occurs?  How do you see the data changing over time?  Experience helps tune your crystal ball for those futuristic type questions but you get the gist.

Normalization What?


History

A fellow by the name of Edgar F. Codd came up with the concept of Normalization in the early 70’s.  From there additional contributions were made by Ronald Fagin, Raymond Boyce (with Codd) and C. Zaniolo.  From 1981 to 2002 the Normalization front was pretty quiet until C. J. Date, Hugh Darwen and Nikos Lorentzos added the 6th normal form.  All of this mainly pertains to relational databases the support transactional data.  Why do this?  There are lots of good reasons to apply some depth of normalizations.  One of the primary ones is data integrity.  Normalization through the reduction of duplicate objects within the database enforce data integrity by controlling the objects that can be introduced.  Objects can anything from a single field value to the whole database.  Another reason is for ease of data updates. 

Example

You have a record that describes a house.  Some attributes of the record could include roof type, number of bathrooms, kitchen counter type, room floor type and so on.  Of these attributes roof type, kitchen counter type and room floor type can be problematic for updates and consistency.

image

Why? 

You’ve written the application that only allows certain values.  That will keep it consistent right?  Sure.  That works.  But what happens when you decide that “Shake” is not what the value should be?  You need to update it to “Cedar Shake”.  Ok, that’s simple, just replace all instances of Shake with Cedar Shake.  You’re done now.  No problem right?  Well, what happens if you have a million records and each record has to be inspected for the value of roof type.  Does it contain “Shake”? If yes, replace and if no, skip to the next record.  A bit labor intensive but doable.  I’ll skip the point about going into record and table locks and other nastiness.  If you applied some normalization to the database and decided that something with the word “type” is a natural for separate table you’re well on your way.

A simple answer

With the same example, with a “Roof Type” table, you simply have to update the description in the type table.  How does this work?  With a simple type table you have two items, the Key and Value.  The important thing to remember is that keys are immutable.  Once created they cannot be changed.  The value is updatable and can be modified.  In your main table, the “Roof Type” key is stored in the house record.  When you display the record, you join the main table with the type table and display the “value”.

image

Data Type for the key fields has been changed to int type to match the field type in each of the type tables

image

image

image

The final data model looks like:

image

This way when you update the value in any of the “Type” tables, the change is reflected n the main table without having to update it at all.  This means you only have to process one update to affect every matching record.  So if your table had a million records, the roof type in question existed on a quarter of those records, you updating once instead of 250,000 times.  Make sense to me…

Summary

This is just a quick snack on database design and why normalize.  Hopefully, there’s enough here that if you do not know what normalization is that you’ll be able to read up more on the process.

A good place to start is this overview of normalization.

Almost Got Me…


I was poised to click….

It looked ok at first glance and the message was pretty well written…

But Wait!

Where’s the official logo stuff and where did that email address come from?

SNAGHTML240b8eb4

Again, the CYA approach is to log into linked in directly (not clicking on any link in this email) to verify the validity of this claim.

Looking a little closer, you see that they did get some things right…

The fake header

image

vs

image

The real thing:

Font and colors look pretty good…

The fake footer;

image

VS

the real mccoy

image

Again, pretty good but the footer is not as good as the header.

The clincher?  Why send one note when two will be better?

The second note…

SNAGHTML241897aa

Both look pretty good and the link at the bottom is the same.  The “Follow this link” on both notes is different and probably the link that does something evil to you or your computer. 

Daily Rant


Phishing is so…

Are we really so desperate?  I mean come on people…

Male insecurity…

First, if you are a Gentleman there are…

image

I really don’t think they meant ESP but really meant ESPN (other news channels followed but I liked “ESP”).

Well, if it has gotten larger, you need to make sure it’s usable right? 

image

Little blue pill to the rescue.

Mystery package at my door…

Now, we’ll take a look at the something for nothing category…

image

Courier, Parcel, Post, Global Express…whatever.  Really?  In todays tech world where Fedex and UPS provide you with all sorts of data on their sites…  I mean, if you didn’t order nothing, then why would you be getting something?

Now on to travel…oh the places to go

I’ve been to the Westin Diplomat Resort and Spa but I don’t remember…

SNAGHTML1f55b08e

but I must have had a really good time and lost my credit card…

I didn’t know Mc Donalds had a credit division called Mc Manager…

SNAGHTML1f56b455

Must have been when I lost my wallet after the good time at the Westin…

But wait… more money…great I can pay off the charges run up on my lost card…

image

Huh?  I gots ta pay for this?  Smells like rotten fish…

Seeing as I’m going fishing, I might as well got to Maui

SNAGHTML1f595747

See, I even get a refund.

MDA The Next Iteration…


This is a food for Thought post…

Background

MDA?  Search Google and you get one list for the term.  Search Bing for a slightly different list.   That sounds like an association for a medical condition.   The Object Management Group is pretty hot on MDA.   Other than that, doesn’t seem to be a very hot topic. 

What is it doing in a technical blog?  Did you know that Gartner stated that MDA would be the way of the future for development?  OK, before going further, MDA = Model Driven Architecture for the purposes here.  Yes, there was a big hype about it a few years back.  It didn’t really materialize. 

My first real exposure to MDA came while I was working for Care (CAR-AY) Technologies headquartered in Spain.  I worked for the US Branch out of San Jose.  They have a product called the Olivanova Programming Machine.  Generates code in C# or Java.           

This tool is a very interesting application of MDA and has specific niche situations where it is very practical.  In their model, the “engine” that generates the code is housed back in Spain.  The application sends out the model to the engine and the code is returned basically ready to run. 

The technology is popular in Europe but has only had limited success in the US.  Many of the companies that were presented this technology were skeptical of code generators and even more skeptical of having to send their code offsite.

The Next Iteration

Why is this the next iteration?  MDA and code generators have been around the edges for sometime now.  Talk to many appdevs and they’ll tell you with confidence that no “machine” can write code like they can.

I’d agree with them…  A machine will write the same code, the same way every time.  A person… not so much.  History books will probably look back at this time when machines took over the task of programming machines… no not in “Terminator” parlance but in typical, boring, industrial revolution style.

Forces for change

People are the root cause here.  Let me put down just a few reasons…

  1. People get bored –> repetition has never been a highly valued trait
  2. People make mistakes –> to err is human and when a human is at the hands of a computer…to err is to err on a grand scale
  3. People are costly –> between the cost of corrections, complexity etc.  A well conceived code generator…
  4. The number of software projects that fail…

We’ve been at this computer game for the past 60 or so years with serious intent.  In the past 10 years or so, the pace of technology has been going fast than the average person can assimilate. 

I’m sure we reached the point some time ago where companies started holding back just so the latest revision, the last released version, had enough time out there to recoup the investment.

 

Back to MDA

MDA in the US hasn’t really been adopted.  At least, not as a primary way of developing code.  But, as Gartner predicted, it is here and is becoming more and more prominent.

Frameworks

They’re everywhere from SharePoint to Drupal, pre-assembled code parts little the code-scape.  But these aren’t MDA, they’re just frameworks.  No code is generated, it’s just pre-written into objects…

Frameworks are a model… they are a balsa model airplane.  Let me ‘splain…

  1. Pre-cut parts –> things like ribs are already die cut.  You just have to pop ‘em out and glue ‘em to the spars
  2. Finishing –> you get to choose what color to paint your model.  You can go old fashioned and do the sanding, painting and polishing route OR you can cover the model with pre-finished plastic
  3. Options –> add on parts are available, you can adapt other items to the model, etc.

Sound a little like a framework to me.

MDA Tools

Like Olivanova, Together, Rational Software Architect, Visual Studio Ultimate, etc. You get pre-assembled parts that snap together.  Draw pictures, use UML.  Different from the frameworks in that your choices for variation are reduced.  Typically, variation’s going to cost you money.  The more flexible the product the more it costs but you are still giving up control.

Erector Set & Legos

As a kid, I loved erector sets.  Completely flexible.  You could build anything.  Legos to.  These must have been good toys because they have stood the test of time.  But what does this have to do with MDA and Code Generation?

For MDA to be successful, you need a tool that is completely flexible where you can build your own assembly items.  Where a designer crafts a solution and the software generates the blocks.  To that end, it seems that Microsoft is running towards that goal.  More and more of their tools are model based with code being generated behind the scenes.  The more Visual Studio progresses the more it seems that the “plumbing” code will be generated by the IDE.

When will MDA Be a force to Contend with?

I think you’ll see it first with mobile devices.  Talk about a platform that lends itself to the mobile paradigm.  Small formats (a 4” screen is no 20” monitor), formats that have to be flexible to go from detached (mobile mode) to attached (big screen mode) and bandwidth.  This means that coding for the specific unit is critical (although as memory and storage capacity continues to grow, there will be less focus here) and even if the phone or tablet can handle a large app, waiting for it to download is still an issue.  Granted, you can get around some of that with a workstation connected to a high speed connection then attach the unit or the unit itself will support a high speed internet connection.

Will a complete divorce from custom code occur?

Will programmers be reduced to assembly line workers?

The irony is MDA is being adopted.  Kind of like the debit card was adopted.  You’d be hard pressed to find someone today who doesn’t think their debit card isn’t a necessary evil.  Convenient and more secure than cash…  but there was a time, not that long ago, when the very concept was overwhelmingly rejected.

It was through enticements here, discounts there and slow adoption (almost grass roots) that changed the perception of the debit card. 

If that can happen with such a personal item, software development with it’s external pressures of accuracy, time to deliver, etc. will adopt MDA architecture.  It will be required just to compete.

I guess if you don’t call it MDA and call it something else…