Welcome to kbenz.com

Greetings and Welcome to http://www.kbenz.com. The goal of this blog is to discuss the world of software development, its problems and pitfalls as well as open a discourse about practices. It is not my hope to contribute to the blogosphere with another collection of useless ramblings or check-pounding pronouncements (let’s see how that holds up) but rather to contribute to the shared knowledge about the how it’s done.

While this blog will discuss technologies from time to time, my goal is to not even try to be an end-all of information about the tools, techniques and languages that predominate the development landscape but rather to use them to augment the convey a point about what I am trying to say. For example, when I talk about developer skills and make reference to tools and technologies, I am talking about the skills of the prospect in question, not about the goo the developer uses.

KFB

No Comments


2009 – The year in review

I look with relief with the passing of 2009 and excitement for what 2010 holds. In the last year……

The Awesome….
Joined the Team at Wantsa (effective Jan 2010) in Vancouver BC

The Good….
Social Networking Consulting project in Orlando Florida
Microsoft SQL Server SAN Consulting project in Portland Oregon
Development/Management Consulting project in Mountain View California
JQuery/ASP.NET Consulting Project in Bellevue Washington
SMS Consulting project in Palo Alto California
Web Consulting project in Bothel Washington

The Not-So Good….
Passalong Networks collapsed.

The Unintended Outcome
Perhaps the biggest lesson regarding my 2009 journey was living through a truly difficult recruiting process from the applicant perspective. Although 2009 may prove an anomaly in the modern recruiting history, it has proven to be a major point of personal growth, one which I hope sticks. While I expect to write more about this process subsequent to this posting, I do want to make the following promises.

  • I promise to treat every applicant with whom I meet with basic human respect
  • I promise to communicate truthfully to every applicant with whom I meet
  • I promise to follow through with my promises. If I say I will call you on a particular day, I will
  • I promise to do my homework and be prepared in advance of an interview
  • I promise to not turn an interview into free consulting

No Comments


When did re-factoring become a “Weasel Word?”

Some years ago, a co-worker introduced our software development team to a concept known as a “Weasel Word”, a positive sounding word meant to give the illusion of positive outcome when the truth may be otherwise. For example, given the following statement; “We are essentially complete with that task”, one could jump the the conclusion that they were indeed done, where in fact, nothing in that statement actually communicates a clear statement in fact.

So I ask the question; When did re-factoring become a “Weasel Word”? When did “Re-Write” become “Re-Factor”? As I sit here, I am responding to an RFP for a California based company to evaluate the issues they are having with a SAAS based offering in the Compliance space. The CEO informs me that they are having issues with multi-tenancy as it relates to user accounts and the visibility of information across the application in general as specifically when multiple “Portlets” are presented to the user.

On a conference call, the development team informed me that all hands are “Re-Factoring” the credentials and user-roles functionality in order to address the problem.  Pending completion of the migration scripts, they should be able to begin test within 4 weeks. Probing into the changes resulted in my learning that there were substantially more tables, new foreign keys, lots more goo. Now, without the visibility into the old versus new code, I’m not going to say their first implementation was overly simplistic, much as I’m not going to say their new code was overly complex, but what I will say is stop lying about what you are trying to accomplish.

Every Re-Factoring exercise I have been through has had the goal of moving towards a more effective level of abstraction for a given business process. Rather than tell the truth about the development teams real progress, they left the CEO with the mistaken assumption that they were farther along then they actually were.

As I complete this post, a process that has taken months from when I started this this team has yet to complete the whole task. The mythical 4 weeks became 10 for a partial implementation as they quickly found other issues as well.

No Comments


My Portfolio

Have a look at some of my projects.

Storeblocks

Rostr

Redwire

OnTour

No Comments


Social Networking Strategies

Engage Quickly
Across social networks, there’s a common tendency for a user to take a chance on an unknown widget and shortly thereafter remove it if no immediate value is found. The lesson to be learned from this interaction is that first impressions really do matter, and it’s necessary to engage the user quickly before attention is lost. To this end, focus on the 30-second experience; before distracting the user with expert features or sending invites, slow down and give the user a simpler taste of what your application is about.

  • Show value and identity by making the purpose and core features of your application absolutely clear.
  • Populate the application with fun or interesting content (especially content from friends) that makes for a browse-friendly experience.
  • Make it easy for the user to add content, change settings and feel ownership of the application. This increases a user’s desire to keep the application on his/her profile.

Mimic Look and Feel
Across social networking containers there can be a lot of variation in the look and feel of pages and profiles. When designing your application, it can help to attempt consistency with the container UI by using similar fonts, tabs and buttons. In cases where applications strive for stronger identity, it can be good to create a UI look and feel that is slightly distinct but still aesthetically strong to play on a user’s tastes and need for self-expression.

Enable Self Expression
The profile page in a social network is often a representation of a user’s identity, interests and tastes. From the perspective of the owner, it’s a means for self-expression and a starting point for exploring the social graph. From the perspective of viewers, it’s a place to learn, communicate, and find shared interests. Applications best take advantage of the profile by enabling self-expression through common interests around entertainment, brands and groups. Self-expression is also enabled through specific forms of communication like gestures and gifts or conversations around special topics.

Make it Dynamic

Good social network applications aren’t only static badges of self-expression; they dynamically change to provide an interesting experience across sessions. Change can be derived from the social graph as friends interact with the application to change its state. Change can also occur as the application internally generates new content. In both cases, the day-to-day changes can help to keep an application interesting and desired over time.
Expose Friend Activity
A particularly easy way to make an application dynamic and social is to record and present the activities of friends who are using the application. This could be thought of as an application-specific activity stream in which the news and updates of friends are always presented in the context of the application itself. From these activities, users become more aware of how others are using the application, driving increased use and change.

Browse the Graph
Exposing the activities of friends is one method among many for passively browsing the social graph. Users are often interested in low-effort interactions like viewing a friend’s most recent activity, comparing content and choices, and indirectly interacting through their own activity. In supporting this style of interactions, it’s essential to make it easy to browse what friends are doing. This is often achieved by linking names to a user’s container profile or even creating application-specific user profiles which provide an overview of a user’s activity and content.

Browsing the graph can also certainly extend beyond just friends. In some circumstances, it can be interesting to see and interact friends-of-friends, especially when drawn together by shared interests. Creating ways for a user to grow his/her social circle adds value to an application from the user’s perspective by unearthing opportunities for new friends and content.

Drive Communication
Browsing friends’ activities and content often flows well into conversation, creating an opportunity to develop deeper social interaction. In places where communication can happen, it’s good practice to make the option explicitly available. This can be done in a more persistent, public manner through a comment system or sharing wall. It can also be done in private by linking into a container’s messaging, email or instant messaging systems, or even through an internal communication layer like pokes or other simple gestures and messages.

Build Communities
A container’s entire social graph is often huge, and even a user’s immediate social circle might be too large for a user to easily track. By growing smaller communities and making them accessible, an application can provide rich and interesting functionality that enhances the overall social experience.

There are three categories of communities to which applications are commonly built and utilized:

  • Grouped relationships (e.g. best friends, family, classmates, etc.).
  • Shared interests among a user’s immediate social circle.
  • Shared interests among the entire social graph.

Solve Real World Tasks
Self-expression and communication are often fun and entertaining alone, but a social network is also a platform that can be leveraged to solve real world tasks where the social graph assists us in making decisions. For example, while some might be prone to grab a book at random off the shelf, there are many who appreciate a good recommendation from a friend. With a variety of possibilities in entertainment and interests, it can be useful to facilitate meetings, purchases, recommendations, information management and learning to create a richer, more lasting experience across your application.

No Comments


(RED)Wire

I’ve had the sincere pleasure over the last 12 months to lead the development effort to launch (RED)Wire, a subscription music service to benefit Project Red, Bono’s and Bobby Shriver’s global effort to affect Aids and Malaria in Africa. Launched by Don MacKinnon, the founder of Hear Music (which Starbucks acquired as Starbucks Music), the project mission was to create a digital magazine where a portion of the monthly subscription funding the anti-retroviral medications necessary to prolong the life of infected individuals. As a developer, you dream for the opportunity to participate in landmark projects so when the opportunity came to lead the project technically, I jumped in with both feet.

The problem is immense in that as of this writing, 12.5 million children under the age of 18 have had at least one parent die of these deadly diseases. While in the U.S., we are aghast to hear of a single death that touches our neighborhoods, the silent deaths of the 4,400 daily in Africa draws little concern, whether the barrier of many thousands of miles or the “Not in my backyard” thinking that pervades our communities.

In a career of Software Development supporting applications with the sex-appeal of a printer driver, the chance to be a part of this effort certainly was exciting, challenging and ultimately motivating. Further feeding my thoughts was the chance to take a blank-slate approach to bringing the application to market, one where decisions were not pre-ordained by pre-existing technology platforms. It was the opportunity that dreams are made.

Move ahead a year later, the intialial release of (RED)Wire has gone live with some success, a little fanfare and a lot of lessons learned. As I have told many along the way, there’s a book in here so here is the start of that effort. While my first literary effort, I think of this as much personal therapy as anything else. There were and are substantial lessons learned along the way that some may benefit from as well as just an interesting story worth telling.

It is my plan to contribute weekly to the effort of getting this out. It is more of a hope than a plan at this point as my career is at a crossroads and taking care of that priority takes precedence over all else.

KFB

No Comments


How should we cook SPAM?

I have been lucky enough over the last couple of years, to have been behind a very effective series of SPAM and Virus filters that, for the most part, have isolated my computers from the rampant proliferation of these predatory practices. Recently though, I went through a period where I was unprotected by my walled garden of technology (OK, I’ve been busy) leaving me amazed by what I have been missing. Luckily, I don’t rely on attachment filtering as a virus solution and McAfee was ahead of the infection de jour, so my systems weren’t affected. What I found more interesting was the fact that 92% of my inbound mail was being filtered in a spam trap.

I guess I shouldn’t be surprised as my mailbox down the street seems equally stuffed at times, however as nothing passes the postman without paying a price to get it there. Now while not advocating the “pay as you go path” for electronic mail, what I find interesting is the fact that there continues to be economic justification for all of this SPAM. Want to end SPAM? Never buy from a SPAM email.

KFB

No Comments


Awesome Technology

News of this product was passed to me. Truly amazing.

http://www.plasticlogic.com/

KFB

No Comments


I wondered how long it would take……

OK… I have been holding off my first rant as long as I could but after exploring one of Yahoo’s blogs, I don’t think I can hold back any longer… Well I tried, here it is… GRRRRRR

When did the web become the home for humans (I originally tried to use the word developers but I realized I wasn’t dealing with one of those) who try to shortcut the process of software development? Being in the position to clean-up after some of these failed attempts, I lament the fact that these efforts rob company budgets and cheapen the craft known as software development. Calling themselves developers, they in the end, produce a pile of goo that nobody in their right mind would want to pickup and recover from.

His are his posts…

Hello,
I am a new developper in Flex. How to navigate between pages of an application in flex, as we can do
in html ?

Hello,
I am searching a code source exemple for a classical login / password form in a flex application.
Did I need absolutely a database to store Passwords ?

Hello,
I want to Upload images from the user computer into my flex application. Which instruction to use to upload images ?

Hello,
How to call a function of a library in C, from a line code in a flex application ?

So, many will criticize me with statements like “How is somebody supposed to learn?” as well as “You use code from the web as well” and many others however here is my point. Throughout history, the process of developing a craft, whether cabinetmaking or any other skilled occupation, was one where a reasonably well defined path of skills development was based on a process of apprentice and master. The apprentice learned at the side of the master and advanced his/her skills by learning from the core of the craft outward. This foundational approach allowed the master to concentrate on higher-order tasks, having offloaded less intensive tasks to the apprentice, and in the end advancing the whole craft. The apprentice, working at the side of the master advanced his/her skills thus building an overall foundation.

So what is the correct answer?    How about taking a class or buying a book.

KFB

No Comments


Is your dog food any better than mine?

Well is it?

While sitting in a due diligence session with a major fortune 500 corporation, the thought of dog food overcame me as I began to describe what a team of dedicated technology professionals had build over the last number of years. As I sat there, I found myself almost defending decisions made over the those same years to a a group with little context as to why? The question is: If my dog could talk (a Black Labrador Retriever named Molly) would she say it all tasted the same? Does it all taste like chicken? And, what is the after-taste of our technloogy decisions?

As I sat there, I felt compelled to re-visit my thoughts regarding the use of EJB’s and the decisions to build a scripting language over more standardized approaches, the decision against or the avoidance of ESB. Ultimately we need to look at what we plan with a thought towards what our underlying goals are?

I harken back to the C compiler wars of the late 80’s, one where Turbo C (Borland) and Quick C (Microsoft) went neck and neck as who had the fastest compiler, which built tighter code, which was easier to use. Not only did developers at the time actively participate in the hysteria regarding a compiler, but the general public, those whom had never in their life written a goto statement is school, purchased compilers and waded through the manual for that first program to cut and paste. In the end, technology in search of a problem.

My point? Well this. Were my thoughts regarding EJB technology in search of a problem or was it the right decision? Certainly the dream of fail-over, scaling, caching all supported their usage regardless of the fact that they really never got there. Of was EJB a proof of concept for what would become Hibernate? We owe it to ourselves to challenge the assumptions of new technology as well as challenge our own plans in implementing them. Do we really want SOAP based web services when we really just need a form post? Do we really want and Enterprise Service Bus when we really just want a simple data merge?

KFB

No Comments



SetPageWidth