Broke Window Syndrome
Think of an empty building. May sit undisturbed for years. Then a window gets broken. If no one fixes the window you’ll quickly find more and more of the windows in the building get broken. That’s because people can tell nobody cares, so they don’t bother stopping others from breaking windows and eventually quit caring, quit being careful and eventually start breaking their own windows.
FTE
Full Time Employee
Going Native
This is what happens when a consultant stops acting like a consultant and starts thinking they are a full time employee. They are no longer providing the same value they were. They either need to become an FTE or be replaced. There is no in between.
Boil the Ocean
As in, "We’re not trying to boil the ocean here. We just need to," when people start getting carried away with scope creep on a project.
Drink the Kool-Aid
To be very enthusiastic about following a plan of action.
Holistic
A term used by someone that doesn’t really have any idea how something’s supposed to get done, who really thinks they’ve got a great idea.
Running in parallel
Processing data through two systems simultaneously to compare performance and output.
White paper
Report or guide published to share technical or business information, particularly related to solving common problems. Writing white papers is a great way to get exposure and develop a reputation as an expert.
June 23rd, 2009 in
Programming | tags:
boil,
broke,
consultant,
FTE,
holistic,
it,
kool-aid,
native,
ocean,
parallel,
Programming,
project management,
syndrome,
technical,
terminology,
white paper,
window |
No Comments
Providing a visual indicator to represent status of tasks, projects etc. is a very nice touch. In this article I provide step-by-step instructions for displaying icons based on value selected in the Status drop down in a SharePoint 2007 Task list.
Our objective is to add a column and have it display an icon image based on the value of another field. First impulse is to simply put an img tag in an IF statement within a Formula on a Calculated field. I will tell you now that is a bit of a Schrodinger’s cat paradoxical experiment. That is to say it can be thought of as both true and false at the same time. We will add the img tag in an IF statement, but we must also add a bit of JavaScript to each View from which we wish to view the icons. Otherwise, SharePoint will display our image tag HTML as text in the field.
Couple of quick things before we start the walkthrough. I got everything for this article by adapting information from various links off a blog post you can find here:
http://pathtosharepoint.wordpress.com/2008/09/01/using-calculated-columns-to-write-html/
If you haven’t worked with Calculated fields in SharePoint yet, now would be a good time to review Microsoft’s online help for SharePoint Formulas. Here’s a direct link:
http://office.microsoft.com/en-us/sharepointtechnology/CH100650061033.aspx
Here’s a direct link to the Logical operators like IF, which is one you have to be familiar with straight away.
http://office.microsoft.com/en-us/sharepointserver/CH101760371033.aspx
With the fundamentals out of the way; on to making icons display as desired.
First put the icon images where they can always be reached from within SharePoint as follows:
- Select Shared Pictures >> Upload (top menu) >> Browse (button)
- Select icon image file and upload it to the Share Pictures library
- Click the icon image displayed in the Share Pictures library.
- Click the Preview image displayed on the next screen to view the image itself.

- Copy the URL for the image from the browser location.
- Store the URL somewhere, you’ll need it for the Calculated field Formula later.
For the purposes of this article we’ll use a Task List with an existing drop down called Status and we’ll display an icon in a new field called Status Icon based on the following options:
| Not Started |
No Icon |
| In Progress |
|
| Completed |
|
| Deferred |
|
| Pending |
|
- Navigate to the List you want to have the icons displayed in.
- Select – Settings
- Select – List Settings
- Select – Create column
- Column name
- Enter Status Icon (for example) as the column name
- Calculated (calculation based on other columns)
- Select radio button for this option
- The data type returned from this formula is:
- Select – Single line of text
- Add to default view
- Place check in check box for this option
- Formula
- Enter the code below as the Formula.
- There are four nested if’s in this formula. The max SharePoint allows is 7.
- Status is the name of the field who’s value we’re basing our decision on.
- I include the Status column value in the title and alt attributes on the image tag.
- The image paths come from the Share Picture library.
- The JavaScript in following steps requires the div tag the image tags are wrapped in.
=IF([Status]="Not Started",
"",
IF([Status]="In Progress",
"<DIV><img title=’In Progress’ border=’0′ alt=’In Progress’ src=’http://rockwebcast.com/wp-content/uploads/2009/06/vision.png‘></DIV>",
IF([Status]="Completed",
"<DIV><img title=’Completed’ border=’0′ alt=’Completed’ src=’http://rockwebcast.com/wp-content/uploads/2009/06/vision.png‘></DIV>",
IF([Status]="Deferred",
"<DIV><img title=’Deferred’ border=’0′ alt=’Deferred’ src=’http://rockwebcast.com/wp-content/uploads/2009/06/vision.png‘></DIV>",
IF([Status]="Pending",
"<DIV><img title=’Pending’ border=’0′ alt=’Pending’ src=’http://rockwebcast.com/wp-content/uploads/2009/06/vision.png‘></DIV>",
"end"
)))))
- Select – OK
- Return to your List.
- At this point the image tag HTML will be displayed as plain text in the field. This issue will be corrected as follows.
The following MUST be performed for each VIEW the icons will be displayed in.
- Select the View: you want to have the icons display in. With the desired view showing the HTML image tag.
- Add a Web Part to the bottom of the page for the View that contains the code provided below.
- Select – Site Actions
- Select – Edit Page
- Select – Add a Web Part
- Add Web Parts dialog will display
- Scroll down to Miscellaneous section
- Select – Content Editor Web Part
- Select – Add
- Select – open the tool pane within Content Editor Web Part on page
- Select – Source Editor
- Text Entry Webpage Dialog will display
- Copy and page the JavaScript provided below
<script type="text/javascript">
//
// Text to HTML
// Feedback and questions: Christophe@PathToSharePoint.com
//
var theTDs = document.getElementsByTagName("TD");
var i=0;
var TDContent = " ";
while (i < theTDs.length) {
try {
TDContent = theTDs[i].innerText || theTDs[i].textContent;
if ((TDContent.indexOf("<DIV") == 0) && (TDContent.indexOf("</DIV>") >= 0)) {
theTDs[i].innerHTML = TDContent;}}
catch(err){}
i=i+1;}
//
// ExpGroupRenderData overwrites the default SharePoint function
// This part is needed for collapsed groupings
//
function ExpGroupRenderData(htmlToRender, groupName, isLoaded) {
var tbody=document.getElementById("tbod"+groupName+"_");
var wrapDiv=document.createElement("DIV");
wrapDiv.innerHTML="<TABLE><TBODY id=\"tbod"+ groupName+"_\" isLoaded=\""+isLoaded+ "\">"+htmlToRender+"</TBODY></TABLE>";
var theTBODYTDs = wrapDiv.getElementsByTagName("TD"); var j=0; var TDContent = " ";
while (j < theTBODYTDs.length) {
try {
TDContent = theTBODYTDs[j].innerText || theTBODYTDs[j].textContent;
if ((TDContent.indexOf("<DIV") == 0) && (TDContent.indexOf("</DIV>") >= 0)) {
theTBODYTDs[j].innerHTML = TDContent;}}
catch(err){}
j=j+1;}
tbody.parentNode.replaceChild(wrapDiv.firstChild.firstChild,tbody);}
</script>
- Select – Save
- Select – + Appearance to expand the Appearance options
- Enter Custom JavaScript as the Title
- Select OK
- Mouse over title bar of the new Web Part.
- Drag Web Part to the desired location on the page.
- Select – Exit Edit Mode
Return to you list and you should see icons for corresponding values in your IF statement.
June 17th, 2009 in
Programming | tags:
add-ons,
application,
calculated,
cewp,
content editor,
developer,
development,
experiment,
field,
formula,
how to,
html,
icons,
javascript,
list,
microsoft,
paradoxical,
plugins,
Programming,
schrodinger,
Share Point,
sharepoint,
web part |
2 Comments

June 17th, 2009 in
Humor | tags:
advice,
class,
comedy,
deep thoughts,
diploma,
education,
employer,
employment,
Humor,
interview,
interviewing,
joke,
love,
satire,
school,
sexy,
vision |
No Comments
111,111,111 x 111,111,111=12,345,678,987,654,321
Most places have a standard comment blurb they like at the top of Class files. I personally find it annoying that the class Visual Studio creates when you select Add New Item > Class doesn’t make the class public. So for these reasons I’m documenting how to update the templates Visual Studio uses to create items. I’ll use Classes as my example but the same applies for all the rest.
A list of Replacement Value Parameters is at the bottom of this document.
Templates are in zip files located in:
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033
For the purposes of this document we’ll customize Class.
-
Copy Class.zip from C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033 to your favorite working folder on your workstation and decompress it.
-
This can generally be done with a right click, select Extract All and let it go into a folder in your current folder called Class.
-
Go into the new Class folder and open Class.cs in the text editor of your choice and customize as you see fit.
-
For our purposes there we’ll put public in front of class and add a comment block to the top of the file. I’ve included a sample customized Class template file right after the action steps in this document.
-
Save your updated Class.cs file.
-
Now create a new Class.zip containing the Class.cs and Class.vstemplate files in your current Class folder.
-
On XP or Vista you can do this by highlight the files then
-
Right Click >> Send To >> Compressed (zipped) folder
-
Name your new compressed file Class.zip
-
Close all instances of Visual Studio regardless of version you may have open.
-
Copy the compressed Class.zip file to:
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Code\1033
You may not try creating a new class in Visual Studio. However, if you don’t get the updated version of your template next time you create a new class in Visual Studio and you definitely performed steps 1 through 6, then perform the following:
Copy the uncompressed Class.cs file from your favorite working folder to the following directory:
C\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1033\Class.zip
Yes Class.zip on the end is necessary and no you can’t just copy the Class.zip file to
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\1033.
The alternative is that you reinstall all your Visual Studio templates but that takes several minutes and this trick is just as good.
That’s all there is to it. Now launch Visual Studio and create a new class. Here’s how mine looks:
//———————————————————————————
// Copyright © 2009 – 2010 Me Myself & I. All Rights Reserved.
// Warning: This program is protected by copyright law and international treaties.
// Unauthorized modification, reproduction or distribution of this program, or any
// portion thereof, is a violation of applicable laws which may result in civil and
// criminal penalties, and will be prosecuted to the maximum extent under the law.
//———————————————————————————
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;
$endif$using System.Text;
namespace $rootnamespace$
{
class $safeitemrootname$
{
}
}
Visual Studio Template Replacement Parameters
clrversion Current version of the common language runtime (CLR).
$destinationdirectory$ template parameter, which points to the location where the new project is saved.
$installpath$ – The path to the directory containing the project template used to generate the project.
GUID [1-10] A GUID used to replace the project GUID in a project file. You can specify up to 10 unique GUIDs (for example, guid1).
itemname The name provided by the user in the Add New Item dialog box.
machinename The current computer name (for example, Computer01).
projectname The name provided by the user in the New Project dialog box.
registeredorganization The registry key value from HKLM\Software\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization.
rootnamespace The root namespace of the current project. This parameter is used to replace the namespace in an item being added to a project.
safeitemname The name provided by the user in the Add New Item dialog box, with all unsafe characters and spaces removed.
safeprojectname The name provided by the user in the New Project dialog box, with all unsafe characters and spaces removed.
targetframeworkversion that gives you the value of the framework version like 3.5
time The current time in the format DD/MM/YYYY 00:00:00.
userdomain The current user domain.
username The current user name.
webnamespace The name of the current Web site. This parameter is used in the Web form template to guarantee unique class names. If the Web site is at the root directory of the Web server, this template parameter resolves to the root directory of the Web Server.
year The current year in the format YYYY.
There is also an If expression as follows:
$If$ (expression) … $endif$
Example
using System;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;
$endif$
using System.Text;
…
If you find this useful shoot me an email: Micah@RockWebcast.com
June 14th, 2009 in
Programming | tags:
.net,
asp.net,
C#,
class,
CSharp,
guid,
how to,
item template,
microsoft,
parameters,
Programming,
studio,
targetframeworkversion,
template,
visual,
visual studio |
No Comments
Everybody that actually knows what they’re talking about when it comes to computer programming knows there’s not a class or college in existence that produces developers. Any jack-nut with ten fingers and a keyboard can write code. A true programmer is a talented artist that has cultivated their talent through real world experience.
A true programmer is someone that will analyze a situation, break it down into it’s component parts, create a solution, move on to the next challenge and someone else can maintain what they created. Note that what separates the great from the weak, is that others can follow what they did, why the did it and make use of what they created.
Really good development shops mentor junior developers; pair them up with a programmer who has truly proven they can deliver quality and watch them grow, until eventually one of the pair moves on. The place where it falls apart at most places is that the person teaching the apprentices, isn’t actually a master of their craft.
In today’s IT community, people that ought not be typing are getting hired by people that don’t know what to look for. These "developers" spout all sorts of buzz words they read in somebody else’s blog. Then they Google whatever they’re trying to do, copy and paste and fill in the gaps with what little code they remember from class. Now don’t get me wrong, there’s nothing wrong with reusing code. In fact at the other extreme are egotists who insist on writing everything from scratch.
Here’s my brick wall analogy.
You see some with bricks evenly spaced and the mortar between them nice and smooth. You can tell the artist lovingly ran their finger between each one to make it just so. That is as it should be.
Others have bricks stacked up, mortar bulging out between them and spilled onto the bricks. Sure it may work but there’s invariably cracks throughout. In time you’ll see patch work because somebody has to spend a lot of time maintaining it.
Every now and then you’ll see a wall that was clearly made from scratch. You don’t see many of those because the people that insist they can build better bricks from scratch, seldom actually finish anything. They move on to another job leaving someone else to make something of the mess they leave behind.
June 13th, 2009 in
Daily Journal | tags:
.net,
anal,
analyst,
apprentices,
art,
artist,
artists,
brick,
C#,
developer,
java,
master,
mentor,
mentoring,
microsoft,
perl,
php,
Programming,
student,
teaching,
training |
No Comments
So this new "job" of mine is mind numbingly boring. I’m used to going in places, hitting the deck running with 10,000 things that have to get done now. This place…. well…. let’s just say that’s not the case.
Now don’t get me wrong. I wanted a job with a lot less stress so as to afford me time to do things outside of work. So while I could do this stuff standing on my head, it’s not a complaint.
However, I do have to point out one more thing. It’s a funny anomaly sweeping through Nashville. Maybe other places too, but I can only speak to Nashville. All these IT shops say they want to be "the place to work". Surprisingly, the directors at these shops have all had the "recruiter that’s a food friend" of theirs tell them "word on the street is we’re the place to be right now".
Anyway, I’m sure things will pick up at work. It’s not like I’m going gang buster myself. Just sitting quietly.
The only 15 letter word that can be spelled without repeating a letter is uncopyrightable.
No word in the English language rhymes with month, orange, silver, and purple.
A group of unicorns is called a blessing. Twelve or more cows are known as a "flink." A group of frogs is called an army. A group of rhinos is called a crash. A group of kangaroos is called a mob. A group of whales is called a pod. A group of ravens is called a murder. A group of officers is called a mess. A group of larks is called an exaltation. A group of owls is called a parliament.
June 8th, 2009 in
Daily Journal | tags:
army,
cow,
cows,
crash,
exaltation,
facts,
flink,
frog,
frogs,
kangaroos,
larks,
mess,
mob,
murder,
officers,
owls,
parliament,
pod,
quote,
quotes,
ravens,
rhinos,
unicorn,
unicorns,
whales |
No Comments
My lack of posting to my blog was brought to my attention during the Nashville Geek social Thursday evening (http://www.nashvillegeeks.org/). This implies people actually read my blog. Subsequently, I’ve decide to commence to posting at least once a day.
I met the guy that runs http://www.iphone4idiots.com/ at the Nashville Geek social. Super nice guy but even in a room full of self confessed geeks, he is the quintessential geek. For those of you that don’t know what the Nashville Geek social is, it is precisely what the name implies. But I’ll expand on that for you.
The guys that own http://www.fireflylogic.com/ are obviously pretty sharp. A while back it occurred to them that for the price of a few minutes time sending emails and a few pizza’s they could get some awesome marketing and advertisement. On the first Thursday of every month they "host" a social event for geeks to come and socialize amongst themselves. Don’t get me wrong I’m not knock Fire Fly Logic, they’re great people. I am in fact impressed with how insightful they are.
Last Thursday’s was the first of these Geek socials that I’ve attended. I had a good time, saw a couple of people I haven’t seen in quite a while. Since it was at the infamous Flying Saucer all us boys got to ogle some incredibly erotic short skirts. Perhaps I should explain that last comment.
The Flying Saucer is a restaurant that serves like a hundred types of beer In fact it would be more accurate to say it’s a beer serving place with food on the side. The waitresses in this place are all young and required to wear micro-mini pleated skirts. I’m talking
the only reason one would think they’re over 18 is because you have to be in order to serve alcohol. The "uniform" for Flying Saucer beer wenches consists of a tight shirt, apparently of their choosing and a micro-mini pleated skirt.
Like so
So anyway…
The real point of the evening and my posting is that I met some really cool people at June’s Nashville Geek social and ran into a couple of people I haven’t seen in like a millennia.
Get a chance, you should go.
June 6th, 2009 in
Daily Journal | tags:
alcohol,
beer,
booze,
flying saucer,
geek,
idiots,
iphone,
nashville,
restaurant,
sexy,
skirt,
social,
tennessee,
tn,
waitress,
wench |
No Comments