Friday, September 26, 2014

Fwd: Great Article on Code Review


http://blog.salsitasoft.com/practical-lessons-in-peer-code-review/

Consequences of bad reviews
  • Not having time to deal with your review backlog.
  • Delaying a release because your reviews aren't done yet.
  • Posting reviews that are no longer relevant since the code has changed so much in the meantime.
  • Doing poor reviews since you have to rush through them at the last minute.
Ideas
>> something around 25% of the original development time should be spent on code reviews

>>understand how the code fits into the larger context of the application, component or library it is part of. If you don't grasp all the implications of every line of code, then your reviews are not going to be very valuable.

>>  empty their review backlog every day. 

Fix One Area At A Time
>> If my colleague spends a week adding code willy-nilly across a large project then the patch they post is going to be really hard to review. 

>>  creating reviewable code is to annotate your code reviews.

>> Commit third-party code separately

When doing large refactorings, 
>> refactor code incrementally. Figure out a partial change of reasonable scope that results in a working code base and brings you in the direction you want to go.




Wednesday, September 10, 2014

AppleSoft

I'm not TRYING to be "fanboy-flame bait" but what I saw yesterday was a typical "Do it this way, now do it this way and then we'll go back to this way" all over again.... a move similar to what Microsoft does to developers on an ongoing basis.

Remember the first iPhone? Smooth and curved, at least as far as it could be back then. I still pull out my 3G and can see the curves on it.

Then the 4 came out and "boxy" was all the rage. Everything should be "tight with corners"

Now iPhone 6.... smooth and curvy is back. Granted I don't have the actual device yet, but that's the message.

Guess that means the iPhone 8 will be back to boxy.

And honestly, Apple Watch is not worth "one more thing" --- especially when everyone knows it's going to be shown. "One more thing" would be something no one saw coming.  The device itself ? Very interesting and yes, definitely lots of potential but "one more thing" worthy? No. Maybe I'm just jaded.

One more "bad thing" is that the Apple Watch (which does look very cool) requires an iPhone. So now you can walk around with more Apple devices instead of just one. If you're going to change my life, make my load lighter, not heavier.

So much for real Continuity.

Thursday, August 21, 2014

WPF - Setting Up Themes

Forcing WPF to use a specific Windows theme | I Got Rhythm

At a client recently, we developed our WPF application under Windows 7, tested it under Windows XP and everything looked great. 
Then it was deployed.
As it turns out, one of the deployments was over a Citrix server that forced applications to run under Classic mode. 
Those of you who have worked with various operating systems over the years will know what I'm talking about. Classic mode isn't quite classic, unless you are one of the few who think playing bar pong on an 84" TV is superior to playing one of the more dimensional games. Or maybe one of the few who like to get up and change the TV channel rather than finding the remote. Or one of the .... (you get the idea)
While most things converted well, Tabs do not. In WPF, we have these beautiful tabs that look fresh but over in Classic mode, they have the look and feel of, well, Classic Windows 95 and VB 6 applications.
The application was demo'd to the client under Windows 7 but deployed under Windows Classic so all of a sudden, the user's experience went from "wow, that looks great" to "what kind of crap did you give me".
But all was not lost. I found this very old (2006) but super useful post about forcing WPF to use a theme. In the end, it was as simple as adding a forced reference to PresentationFramework.Aero in the solution and adding

  <ResourceDictionary.MergedDictionaries>

        <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" />

    </ResourceDictionary.MergedDictionaries

to the Resource dictionary (or to the Application.xaml file).

Voila our tabs went from crap to zap!

To make the experience even more sweet, that post from 2006? The blog is still being updated today (a lot more posts than here recently as well). Well done, Aelij Arbel, well done and Thank you!

 

Monday, July 28, 2014

New FoxShow Episode featuring Southwest Fox 2014 Organizers

The latest version of the FoxShow (FoxShow #79 - Southwest Fox and Southwest xBase++ 2014) features an interview with Rick Schummer, Doug Hennig and Tamar Granor about what they have planned for this year's Southwest Fox conference, fast approaching in October.

If you haven't registered yet, be sure to listen for a special offer from Rick in the show.

Hope to see you there!

Friday, April 25, 2014

Timetracking and Cool Tool Alert: SonicAgile Project Management


   
Sometimes a blog post talks about a tool and it sounds like an ad. Othertimes, it provides good information and then it mentions a tool. Such was the case when I read this post from Stephen Walther.

The explanation of time-tracking (second paragraph) really hits home when trying to promote why it should be used. I've been working with Microsoft's TFS for the past few years and one of the challenges has always been getting people to track time. If they don't see a real benefit to it, it's often perceived as a negative performance measurement tool. They have to get over that mindset.

As the post says "the Product Owner needs to know when the work on a story has gone over the original time estimated for the story. The Product Owner is concerned with Return On Investment... a legitimate reason to halt work on the story and reconsider the story’s business value."
"if your team is spending 75% of their time doing testing then you might need to bring in more testers. Or, if 10% of your team’s time is expended performing a software build at the end of each iteration then it is time to consider better ways of automating the build process."
The post then mentions SonicAgile, which I had never heard of. SonicAgile is a new online Agile Project Management and it is really really great. I've run through the gamut of online project management tools- from Basecamp, Kanban Kit, Trello, TFS, among others. All of them are great tools and depending on the client, I still use them.  KanBan and Trello use the card-style interface and it's such a great way of forcing users to stay focused, even Microsoft turned to using a similar approach in TFS 2013.

SonicAgile uses a similar interface - but focuses on making project management super easy. After going through challenges with introducing agile processes, the fact that you can turn concepts (like iterations or epics) on or off can make this very useful for experienced or new teams!
 If you're tracking multiple projects and/or different teams, you can turn on features just for specific projects.

Just getting started? Keep only the basic idea of using Cards to track features, change requests and bugs from To Do, In Progress and Done, just like Trello.

Need Iterations? Turn on the feature and now you can group your cards into time-sensitive Iterations.

Need Epics? Just turn them on.



Another cool feature - Roadmaps. You can create a public roadmap (much like Lianja did during its beta cycles) and use it for planning your iterations.

 Oh yeah, on the road but without browser access? Just email your user stories to a special email address and it will create the cards for you.

 It's a new tool - so I'm excited to see where it goes (it needs a mobile client) - but right out of the gate, SonicAgile got a number of features (including scheduled reporting) that are right there when you need them.