jump to navigation

The Speed of Thought, Part Duh!!! (Or Driving Stick Shift with Javascript) April 18, 2013

Posted by ActiveEngine Sensei in ActiveEngine, Coaching, Humor, jQuery, KnockoutJS, Mythology, Problem Solving, Scripting.
Tags: , , , , ,
add a comment

scream_baron_blood_01Sensei is a libertarian – so you can interpret that to mean few rules, respect others freedom, government and busy bodies “leave me the hell alone”, stay-outta-my-way-attitude-person is his motto.  That means the only way to drive is with the stick.  Automatic is for the soccer moms.  Javascript is like driving manual transmission – sometimes you grind the gears.

You’re hero just spent a half hour pouring over some Knockout.js code, wondering why his observableArray went MIA on each push.  Can you see why?

var Question = function (id, question, sortOrder) {
this.Id = id;
this.Question = ko.observable(question);
this.SortOrder = ko.observable(sortOrder);

It’s not Javascript’s fault, it’s Sensei’s fault. Now you can see why he writes in the third person, ’cause it’s easier to remove yourself from these type of dumb mistakes when you can treat your persona as separate person!! If you see the issue, leave a comment before I post the resolution.

Chang-chang-a-ching-changa-langa-langa: Why Your User Community is Fluent in English and You Are Not the King February 6, 2010

Posted by ActiveEngine Sensei in .Net, ActiveEngine, Business Processes, Coaching, Fluent, Problem Solving, software economics.
Tags: , , , , , ,
1 comment so far

Get ready for the sound of one hand clapping, but first, fire off the song as it get’s your head straight.

Some of you want to be Elvis too much.  Sensei’s going to tell you a story so you know what he’s talking about.  You see, users of your apps  are waaaay smarter than you, and spend more time in their fields than you ever hope to do.   You need a little love.  It’s called fluent interaction.  Fluent. Interaction.  Lord have mercy.

Process mapping helps, but in the end that takes you to overly scientific abstractions, and while user stories help some they, too, stray with you as the sole author.  You in the chair, just the important details from the user, but mostly you.  Should you consider yourself not Mort but an Elvis, you may want to ask yourself what Elvis you want to be:

Kick-ass Karate Elvis
Drug Ridden Elvis Wanna Be

Back to the story.  Last episode, in a spate of productivity and a dose of SQL-NoSQL fever, Sensei created a slim document management solution that can be quickly applied to an existing framework with minimal impact to database schema and code base.  Sitting around the conference room table the comment arose from Annie, the project lead from the Sales group:

“Why do I have to save a commission record first before I can attach a document?  That interrupts my flow.  I want to put in everything that I want and save, period.  No dialog box thingy prompting to save first, come back and do something else.  Why can’t we just do it”

Long silence.  The sound of one hand clapping.

One of Sensei’s report-to’s jumped in:  “Because in order to associate the document to the commission you have to save that commission first in the database, then take the id from the record and associate it document.  This allows you to retrieve it later on.”

Annie:  So.  Can’t that just happen behind the scenes?  If it’s two steps the sales gal won’t do it.  She’s got calls to make.

Ssensei drifted out in research land, or as normal people call it, he spaced out for a bit.  NetFlix sprang to mind, iPhone too, where you delete, it does it, but you can bring it back.  Take the confirmation response out of the equation.  Give the user a chance to undo their mess, but don’t get in their way.  It’s fun to pretend to be the King, but what a wake up slap.  The technology was right, but the user was seeing the benefit because “putting the stuff in was too clunky”.  Sensei went and did want Annie wanted.  Annie thinks its great.  Good technology made better by the user, not the King.

Fluent.  Interaction.  Lord have mercy.  You see, Annie’s right and user stories, UML and other brain death would never capture the essense of her perspective, particularly after she used the software.  Yeah, soft deletes are great theory, but you are not thinking like a user.  In order to be a better King, you gotta give the concert they want to hear.  You have to know that the fans have created you, have shaped your persona.  You have to know your fans, almost be them.

Elvis had a come back concert in 1968 but it almost didn’t happen as there was a huge fight with NBC.  The network insisted that the show would be like a Bing Crosby special given that the air date was during the Christmas holiday season.  Elvis wanted an intimate environment where he could perform up close, live with his fans.  He thrived off of close contact with his fans.  Know your audience.  Elvis was right, and it helped re-launch his singing career and revive his legend.  It was one of his best performances.  For the fans.

You need to listen to your users.  Spend the time to hone your craft, but work even harder to make them fans.  What do they need?  Is the concert for them or for you?  Are you learning just to be smart or for their benefit?  Fluent solutions require interaction with the fans.  Thank you.  Thank you very much.

The Economics of Developing iPhone Apps August 6, 2009

Posted by ActiveEngine Sensei in ActiveEngine, software economics.
Tags: , , , ,

Sensei has an iPhone and it is indeed a great technological achievement.  It just works.  Another attractive aspect to the iPhone is the lowe priced software available from the App Store.  We have all heard of the stories of the kid who made $40K by creating an app and selling it.   At Coding Horror, Jeff Atwood posted his thoughts regarding the effect of lowering the cost of a software product and how that can create a jump in sales.  In short, the lower priced software makes up for the loss with volume.  starwars-iphone

There are other considerations to be kept in mind before diverting your talent to iPhone application development.  The economics of surviving in that envirnoment are hazardous.   (more…)

The Economics of Protecting the Red Shirts July 29, 2009

Posted by ActiveEngine Sensei in .Net Development, ActiveEngine, Business Processes, Coaching, Design Patterns, Mythology, Personal Development, Problem Solving, software economics.
Tags: , , , , ,

Recently I came across this post from a fellow lamenting the lack of interest on the part of .Net developers in architecture solutions such as IoC, Dependency Injection, ORMs, and the like.  800px-KirkSlapsSelfThis stood out in stark contrast to Java developers who this person interviewed, who either were conversant with the technology or were interested enough to pursue informing themselves further.  Some call this the result of Drag -n -Drop design as laid out in a post  by Greg Young, a Microsoft MVP and .Net developer who has specialized in high performance applications.  Greg maintains in his post Java vs. .Net Developers that drag and drop is mis applied and there needs to be an greater effort the isolate the cases where it is mis used.  This practice has arisen, he maintains, from poor training and lack of awareness of other development platforms. (more…)

Revenge of the Fallen July 21, 2009

Posted by ActiveEngine Sensei in ActiveEngine, Agile, Agile vs Waterfall, Business Processes, Problem Solving.
Tags: , , , ,
add a comment

Did you think you were constructing this:  300px-MovieOptimusPrime_promorender2but you were actually delivering this instead: (more…)

Faith – The Time is Now Again July 18, 2009

Posted by ActiveEngine Sensei in ActiveEngine, Coaching, Mythology, Personal Development.
Tags: , , , , , , , , , ,
add a comment


Ceiling unlimited
World so wide
Turn and turn again

Feeling unlimited
Still unsatisfied
Changes never end

Winding like an ancient river
The time is now again

Hope is like an ancient river
The time is now again

Neil Peart



Indulge, play the song, drink in the message and go hug your kids, embrace your family, be thankful for your friends, team members, co-workers.

There is so many new things on the horizon.  For those of us who are lucky enough to practice this technical craft called programming, we can be stymied by all the possiblities, the arguments and skirmishes.  These de-rail you.  Build a fortress against the distractions and ignore your fear of change by embracing the challenge of good arguments.  It’s all a chance for you to improve.

When you arrive at work think of what ways you can engage with others.  Can you practice your techniques in a better way?  Recite the Wolf Creedo and end an argument.  Better yet, start a new one in jest and revel in the ideas.  Bang out some code and fight for the day.  What new things can you add to your team’s arsenal if you inspire someone else?  Are you leading or are you a suit sitting in a chair?  Would someone ask you for help or think that you’re too involved in your own head to deign to talk to them?  Have you built an empire above you or below you?  Is your legacy more important than what you have truly done?

Okay, so you’re code was awful – but did someone else still benefit?  Was your code perfect but never used?  Was your ego hurt yet your company still profitable, keeping families fed?  Did your mistakes help others learn?

What matters is that you engage.  Most times it will be painful.  Developers need serenity to produce but I’m telling you man you’re lucky if you have it.  Life is full of the distractions and once you conquer them, you’ll find greater strength and battle hardened capability.  Work at it. Revel in it, share it.  Be grateful and humble.  Win and go home to the ones you love.  Technology is great, but you as a friend, mother, father, co-worker, neighbor, dude in line at Starbucks or grandma at church are even greater.



Resurrection July 9, 2009

Posted by ActiveEngine Sensei in .Net, ActiveEngine.
Tags: , ,
add a comment

Sounds like the title to a sequel.  Well, perhaps that’s right.   It’s been a long time since my last post, and although many of you may be wondering if I have been morning the fact that there will NEVER be any finale to Deadwood as indeed I have, I have been primarily engaged with work.  Lot’s of work.  I did do a grand standing post naming 2008 the year of consistency and yep that was stupid.  Checking the dates on the blog are a good BS indicator.  My only defense is that I have been consistent at work, and in these times that is an achievement in of itself.

My quest has, though, been very consistent.  Rev up productivity.  A year is like a century in the world of technology and much has contributed to my “growth”.  Ewwww – sounds like I’m about to use the phrase “My journey with you has been amaaaazing.”  So scratch that – I’ve gotten smarter about somethings as circumstances have provided me greater illumination.  Yeah.

For one, I’ve learned about the short comings of .Net.  Big short comings.  Big technical debt short comings with respects to RIA.  Am I a jQuery / CSS bigot?  Nope – you just need the right tool for the job.  With regards to domain logic my strength is .Net.  If you were to ask me to create a business layer for an application I would reach for the #, C#.  That said, I am in agreement with Rob Connery – I need to add him to Pantheon along with Atwood and Spolsky – when he pronounced at MIX:

Embrace your inner scripter and stop building rockets

ASP.Net locks you into a box where if you only use the server side controls and rely entirely on ViewState, you cut your ability to adapt to change in half.  Yes – each time you have to re-compile you’re screwed.  Rely on the HTML emitted by the controls, and you’re screwed.  Try to apply CSS to an autogen’ed menu – well, ahh, you CAN’T!  Moving from the UI to the Domain, you can utilize patterns to reduce coupling and isolate the impact of changes but in some cases you need to configure, not develop.  Adding scripting to your app engine can help your users – that’s those who you are working for – introduce alterations to the solution.

I’m babbling here as I try to re-introduce the blog to people, summarize my direction, and bring new thoughts to the table while trying to remain half way intelligent.  Earlier I mentioned RIA, and in the context of ASP.Net there are some truly great things happening that allow you to combine MS platform with awesome Web 2.0 style techniques.  This post by Dave Ward at Encosia will open your eyes to the new possiblities that jQuery bring to the table for great RIA development with .Net.  That’s without Silverlight.  Enjoy.

Surely you must be joking … November 16, 2007

Posted by ActiveEngine Sensei in .Net Development, ActiveEngine, C#, Problem Solving.
Tags: , , , , ,
add a comment

It takes all types of people to run a corporation, but only certain individuals can tap into the ActiveEngine and put things into overdrive. This post is not about a great new design pattern that solved a problem or fit neatly into a methodology. More time for that in another post.

This is about the onerous task of updating 200 desktop computers with a technology that barely passes for worst practices from 1997. Yep, ten years of garbage code and retarded customizations, compounded by bad design and awful practices, 10 servers to update and 200 desktops to uninstall the old version and update with next version, the operative word being next.

For those not of the techie world, this can be a technician’s nightmare. This complexity is increased when the software manufacturer pretends that they themselves have wisdom greater than the rest of software industry,shun standard practice, and create some unique yet “better” software update process. Processes that can not be controlled, that when followed would result in 200 computers updating automatically at once, and sentencing a corporate network to a speedy death.

Can you see the challenge? The task, create an update process that circumvents the software manufacturers, is automated with measurable outcomes, saves time, and executes successfully. The risk, if you fail the company can’t invoice or collect the next month end close. Oh, and by the way, the sales force uses a pseudo workflow engine based on this mess as well. Better not disappoint that bunch of patient delicate artisans.

A team of heroes was assembled, people who had the strength of will to overcome the repeated failures and obstacles that such a nightmare offered. A team that turned on the ActiveEngine and fought like hell. For the most part, automation of software processes could be accomplished easily enough, but for a software push to operate successfully presupposes that all target desktops are in a state to be updated, and this is where the nightmare truly began. Picture this:

  • 43 desktop computers could not be connected to remotely, meaning that files could not be copied from a central source using automation. So updates had to be processed by a technician logging directly into the machine.
  • 15 desktop computers continued to execute update processes that prevent the crucial update from completing successfully.
  • 27 computes had corrupted Windows Registries, meaning that network administrator ids could not install new or remove old software, period. This could be repaired but the duration of this task took 10 -15 minutes. If the repair process failed the computer could be rendered useless.

This last issue was the deal breaker, as it indicated that a computer was no longer under control. Scary thought. You see, you wouldn’t find out that the Windows registry was corrupted until 2/3 of the install was completed. The figure above was ascertained after the entire set of 200 computers were updated. The prospect of failure heading into this mess was down right terrifying as what was not known could not be known.

Immediately diagnostics were performed on the registry. For non technical folks, this means that files containing more than 120,000 lines of code and security settings had to be examined. On a lucky break the starting point of the issue was ascertained, but this starting point was narrowed down to c. 20,000 lines. More comparisons to functioning registries were attempted, but the problem remained that comparisons were limited to eyeballing lines of registry keys. The support folks groaned, but offered their standard answer of “we’ll have to compare this manually”.

Unacceptable. That’s acquiescing, not thinking.

The heroes researched and found SubinACL, a tool that creates text file of all registry keys and ACL’s for those keys. The problem still existed that there was no way to compare text files from machine to machine. Not until the ActiveEngine kicked in and agile minds woke up, and a process to index the files – assign the same value for the same registry entry across all files – was created. Next, the files were imported into Access where the registry keys could be queried based on their ACL characteristics, eliminating any need for reading lines of registry dumps. 683 culprit lines were identified, 13 of these were unique. A text file with the new ACL’s was created and SubInACL was executed with this file to apply to the security settings for every machine. Yes, one day’s worth of programming eliminated weeks of work. The beauty of the brute force method was that if the settings were already correct, SubInACL would not apply the changes.

The code for this process will be discussed in a later post. It was a quick and dirty, actually really dirty, C# console app. Extensible enough to make quick changes and now subject to a re-write in hopes to create a flexible text file parser that will accept user defined fields that can be applied to the parsing process on the fly.

%d bloggers like this: