Archive

Posts Tagged ‘Software development’

Best ever…

November 10th, 2009 Comments off

Compiling

How true it is…

Snoop

October 1st, 2009 Comments off

I’ve been up to my eye-balls in WPF development lately. It is a bit different from ASP.Net and WinForm development. I found a utility today that helps me understand exactly what is going on with the UI: Snoop. Snoop can “see” all WPF apps running. You can examine the logical tree and even map UI elements to specific items on the UI surface. (Ctrl + Shift + Mouse-Over the UI element)

Snoop:
http://blois.us/Snoop/

Enjoy,

Good Enough?

September 10th, 2009 Comments off

Good Enough

Hi. My name is <withheld> and I have a coding problem. I’m an obsessive/compulsive programmer. For every feature request, I can think of 5, No 10! (so-called) improvements.

You say you need a knife to cut a tomato. I think Swiss Army knife with a saw, scissors, tweezers, multiple screwdrivers, leather reamer (yes I’ve actually used it for its intended purpose), can/bottle openers (including wine) and oh yeah a couple blade that could cut up your boring tomato.

Am I thinking ahead?
Am I simply showing off?
Am I getting my nerd on?
Am I ignoring the needs of my users so I can mentally masturbate?

Is there any real difference in any of these questions?

Let the war in my head begin…
Yes. I mean, No! I’d never do that. Well, maybe I would. But it’s cool.

So how does it end?

How do I find the disciple to develop a widget that is good enough without anything extra?

Read more…

To fail, is to suceed.

August 21st, 2009 1 comment

From coding horror: The Only Truly Failed Project

Been there. Done that.

I guess my approach is to not even see failures as such. Failure is an opportunity learn a way to not solve a given problem. 10 failures? Nope. It’s learning 10 ways to do something that doesn’t fix your problem.

Software development is a process that requires continual forward movement. I try to learn something new with each and every line of code that I write, even the bad lines and expressions of much larger bad ideas. I don’t WANT to write bad code, but it happens. And sometimes it takes months before I realize the mistake. It’s all a learning process. And when I do “get it right” the first time, I’m unhappy, paranoid, and unsettled. You never want a successful first test, per TDD. The first pass through should result in a failure condition then when you have a successful test you have confidence that the issue has truly been resolved.

What was that cheese-ball line from Galaxy Quest? “Never give up. Never surrender.”

Dropped the hammer on Zen

July 30th, 2009 Comments off

After about a week of playing around with Zen, I finally dropped the hammer and pulled out my credit card. Somewhere in all of this, I learned that having a tool like Zen really simplifies my life. I know that sounds cheesy but it’s true. I can stop trying to remember everything that is going on. If the woman has an infrastructure request like “I need a new mouse.” She can add it to the infrastructure project in Zen. The next time I log into Zen, I’ll see the new request and respond accordingly. The same for bugs. And when she comes up with a new feature, it too can be added to the list. If I think of a new feature or want to force time to refactor my codebase, I just add it to the mix. And when I sit down to start working on stuff, the priorities are defined. I know what she cares about the most because it is on the top of the screen. Simple. Well worth the $9/month that I’m paying at the moment. That may climb as my project list grows, but 3 is a good place to start.

Zen & Sliders

July 22nd, 2009 Comments off

Recently, I got turned on to Zen by Nate Kohari. Having used a Kanban-style feature management system (poorly). I can see a real need for what Nate has written. I’ve signed up for the free demo to see if I could really use it. If it does work out for me, I know the $9/month would fit into my budgets. Just allowing the product manager (the significate other) to update the item queue from anywhere would be worth the subscription. 90% of her new feature requests come about during the day, when she’s actually using the application (we are only using one app/Kanban to see if this style works for both of us). As it is, we have to gather and stare at the board in our home office. Remote, anytime updates… Nice.


The frame sliders showed up last night. After reading the instructions, they were a breeze to install. There was a warning about cross threading so I took my time. The only “difficulty” was torquing down the lower slider. The slider assembly replaces the stock lower engine mount with a new rod that fits through the engine case. So far, so good? Well, my arms aren’t long enough to tighten a nut on one side of the bike while holding a similar nut on the other side of the bike. I hadn’t thought about this issue… After waiting for the woman to return from walking the dogs, the problem was solved.

Bonus: She learned how to use a torque wrench and that the Craftsman 1/2″ torque wrench I bought a couple months ago does have a real purpose.

Hanselman Yaks w/ Uncle Bob

July 21st, 2009 Comments off

I’ve been listing to the Uncle Bob (Robert Martin) podcasts on Scott Hanselman’s site, http://www.hanselminutes.com/HanselMinutes.com.

Return of…:
http://www.hanselminutes.com/default.aspx?showID=189

SOLID
http://www.hanselminutes.com/default.aspx?showID=163

SOLID: This time with feeling.
http://www.hanselminutes.com/default.aspx?showID=168

Problems with ClickOnce Deployments

June 21st, 2009 Comments off

I’ve been fighting problems with my ClickOnce deployment. I’ve got an app that has 23 successful updates. Number 24 didn’t go as well. I started making major changes almost a month ago and I finished up a couple of the last minor fixes yesterday. The deployment uploaded fine, but it would not install on either my XP development machine or my Vista test platform. In the end, it was a couple simple changes to the app.manifest file. A some point, I had played with the ClickOnce settings. This messing about added extra info to the XML file and reverting back to “Full Trust” didn’t remove these edits.

Here’s the mainfest before I found a solution.

<?xml version="1.0" encoding="utf-8"?>
<asmv1 :assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyidentity version="1.0.0.0" name="MyApplication.app" />
  <trustinfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedprivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the
            requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedexecutionlevel level="requireAdministrator" uiAccess="false" />
        <requestedexecutionlevel level="highestAvailable" uiAccess="false" />

            If you want to utilize File and Registry Virtualization for backward
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedexecutionlevel level="asInvoker" uiAccess="false" />
      </requestedprivileges>
      <applicationrequestminimum>
        <defaultassemblyrequest permissionSetReference="Custom" />
        <permissionset class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="none">
          <ipermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
          <ipermission class="System.Security.Permissions.KeyContainerPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
          <ipermission class="System.Security.Permissions.StorePermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
          <ipermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
          <ipermission class="System.Diagnostics.EventLogPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
          <ipermission class="System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
          <ipermission class="System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
          <ipermission class="System.Security.Permissions.DataProtectionPermission, System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" version="1" Unrestricted="true" />
        </permissionset>
      </applicationrequestminimum>
    </security>
  </trustinfo>
</asmv1>

So here’s the complete working manifest file.

< ?xml version="1.0" encoding="utf-8"?>
<asmv1 :assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyidentity version="1.0.0.0" name="MyApplication.app" />
  <trustinfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedprivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the
            requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedexecutionlevel level="requireAdministrator" uiAccess="false" />
        <requestedexecutionlevel level="highestAvailable" uiAccess="false" />

            If you want to utilize File and Registry Virtualization for backward
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedexecutionlevel level="asInvoker" uiAccess="false" />
      </requestedprivileges>
    </security>
  </trustinfo>
</asmv1>

02:48

May 10th, 2009 Comments off

Obviously, I’m not sleeping again. This always comes in spells. Today was a busy day. I worked on the mower, setup/assembled a fan and water cooler at the office, cleaned the gutters, hung some art, patched a bare spot in the yard, sprayed all of the weeds, blah, blah, blah… I should be tired. I didn’t nap today but I did consume 5 glasses of Pepsi. That’s probably why I’m still awake. Read more…

It’s raining in Portland!

April 17th, 2009 Comments off

Umm. Yea. It’s spring. What did you expect?

New Music

Paramore: The Final Riot!
Pearl Jam: Ten [Reissue]
Queensryche: American Soldier



Queensryche are playing at the Roseland this weekend. Hopefully the tickets we ordered and received will automagically reappear before 21:00 on Saturday evening. Hopefully…

I’m researching MVC Design patterns at work. I’ve got working code buried in a Excel Ribbon. I need to migrate that code out of the Ribbon in to a new WinForm. It sounds like a simple cut-n-paste. Maybe.
Read more…

…on the run.

April 15th, 2009 Comments off

UltraGridGroup group1 = band.Groups.Add();

During a code review this morning, I had one of those crazy moments. I was looking through this rather large block of code written by our team lead, Rob. I was doing the review because I wrote the formatting engine for the Excel UI that we currently use. The team lead is working to port all of that functionality over to a WinForms desktop app. Lee, who sits on the other side of Rob from me, was half-listening working on his own stuff.

So… I’m following along as Rob discusses all of his changes and I see the line I wrote above. On pure impulse, I casually belt out, “Band on the run…” Slightly out of key and with zero context… and everyone in the room starts laughing. A lot. Lee initially grimaced because I had scored a direct hit with the “Can’t get that tune out of my head” assault then he started laughing. Rob was trying to keep a straight face while he continued his monologue. It probably didn’t help that I was humming the melody. Every time Rob would try to even things out Lee and I would look at each other and start cracking up again. This lasted a good 10 minutes.

Shiny Toy Guns is play on Pandora at the moment. It was Dokken and Fleetwood Mac a while ago with some W.A.S.P. throw in. Now if I could just find some Paul McCartney and Wings.

Turn left… Here!

April 9th, 2009 Comments off

So when I roll into work this morning, I started adding notes to my current list of work items. 10:00 rolls around, which is when we have our daily scrum. The second to last person to talk is the team lead. He announces that he believes it is time to dump Excel 2007 as our user interface. What? Cool. Yesterday, he rewrote the UI to use a Windows Forms delivery model and achieved 80% functionality in the first attempt by only recycling existing code. (Read: n-tier is good.)

So… Turn left… Now!

It looks like the rest of my day will be spent researching pivot table implementations in an Infragistics Grid. Yummy.

Today’s Tunes:

    G ‘n R: Chinese Democracy
    Billy Idol: Idolize Yourself
    Queensryche: Hear in the Now Frontier

I think I’m overdue for a CD run…

Moto days are better

April 8th, 2009 Comments off

My days are usually better when I ride. Maybe it is being forced into the moment instead of the esoteric world of software development where I spend most of my time. I had a Doctor’s appointment this morning so I slept in and took my time then I was late. It didn’t matter because a previous patient had a bunch of stuff to discuss and appointments were running one hour late. I cooled my heals and read a mag I’d picked up at PADNUG last night. I had had a nice mellow ride to the Doktor’s office so I was mellow and ready for whatever chaos I encountered. Read more…