Monday, May 26, 2014

A Memorial Day Rant

It is ridiculous that on Memorial Day 2014, we are faced with misconduct at the Veterans Administration. Our veterans deserve much better treatment than this! So today, I've just the following letter to my Congressman, Senators and President Obama. I would urge you to do the same. If you need assistance finding out who your Congressman and Senators are, click here.

Dear {Congessman/Senator/President Obama},

I am writing to you this Memorial Day to express my outrage over the Veterans Administration misconduct and the treatment of our veterans. This horrible treatment of the men and women who have served so that we can be free should not be tolerated! I’m failing to understand how the ridiculous policy of treating our veterans so badly has been allowed to continue - and how leaders, like yourself, feign ignorance of the problem when your job is the oversight of it.

First and foremost, Eric Shinseki needs to resign immediately. It is obvious that he does not possess the skills needed to lead the agency out of the debacle it’s in. Second, anyone who has been found to have committed misconduct needs to be fired and charged with crimes if necessary. There should be an immediate and harsh response to this callous treatment of the men and women in our armed forces.

If part of this problem is the lack of good Information Technology to assess patient needs, waiting times, etc., I would like to volunteer to help fix it. I have been a software engineer for many years and have donated volunteer hours with the nationwide GiveCamp organization. GiveCamp and other charitable IT organizations would most likely be willing to donate time to fix this problem and give our armed forces personnel what they need to get better.

From now on, please stop talking about the problem and actually do something to fix it! Our veterans have waited long enough! They didn’t wait when you sent them on missions. Now it’s our turn to take care of them when they need it. Stop failing them!

Rob Heckart

Saturday, January 5, 2013

Build on Save and Notify using Powershell

I'm a big fan of dnrTV, a video how-to for various technologies and techniques in software development. The last few shows featured Jean Paul Boodhoo doing a Software Craftsmanship BootCamp. One of the things JP did was to setup Rake tasks, one of which was to compile a solution on save and report build failures using Growl For Windows. That looked really interesting and useful for my particular situation.

At my job, we have separated our application into many .NET solutions and projects with dependencies on each other. Although we have one overarching solution that encompasses all of the projects, most of us spend a majority of our time in the web and tasks solutions. Most of the time, changing code inside of these solutions doesn't affect other solutions. On those occasions that is does, we have run into broken builds and other issues that we don't immediately pick up on. I wanted to try and find a better way to solve this problem.

I want to learn more about it Powershell. People that I respect in the software craftsmanship industry have extolled Powershell's virtues. I wanted to learn more about it, but I needed something to code up in it - this was my chance! If JP can do it using Rake, why can't I do this in Powershell?

I remembered that there was a FileSystemWatcher class in .NET and I figured that there was some implementation of this class in Powershell. Luckily, there was such an example script on Technet (thanks to Grant Ward for sharing it!) to start with. Through some trial and error and a lot of separate searches for different pieces of code, I think I've come up with a good start (see the Gist below).

The script was built for c# projects but you could easily change that. Any time a .cs file is changed, MSBuild compiles our master solution. The only time the automated build doesn't run is if a git operation is underway changing files. If any of you run SVN or Mercurial and want to add conditions for them, I'd be much appreciative! I found that if I didn't have this code in, the build would continuously fail until the git operation was complete. I also discovered that FileSystemWatcher has a habit of running twice for a single save of a file. I added code so that a build would happen if a different file was changed or some time had elapsed between the last save. That seemed to fix the problem.

Here are the steps to run it:
  • Install Growl For Windows
  • Change the items in the squiggly brackets to fit your situation
  • You can run the script from the command line or by making a shortcut like this:

    %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\{path to script}\BuildNotify.ps1
My preferred method is make a shortcut, but I also run the shortcut in Task Scheduler when I log in. I hope this works for you - let me know how you do with it!

Saturday, September 4, 2010

The Tech Podcasts I Listen To

These days I get a lot of tech information by listening to a variety of podcasts. I figured I'd share the ongoing list of things I like to listen to:
  • .Net Rocks - Richard and Carl really like to do it right. Good guests, good topics!
  • Hanselminutes - Scott Hanselman is not only funny, he's great with the tech topics and not just the Microsoft stack.
  • Herding Code - These four guys bring a lot of insight about programming in a variety of technologies.
  • Runas Radio - Listening about server tech is a nice way to keep up with the IT Pro side of the world.
  • Talking Shop Down Under - Richard Banks brings the touch of Aussie to Microsoft Tech.
  • Community Megaphone Podcast - Dane Morgridge and G. Andrew Duthie talk to people around my area about their contributions in technology.
  • The Official jQuery Podcast - Each episode brings good information about what is going on with the most popular JavaScript framework around.
  • This Developer's Life - Rob Conery brings a little bit of This American Life to the developer world.
  • Connected Show Developer Podcast - 2 .NET guys that also talk about a lot of new .NET technology.
  • coderpath - This one gets more into Rails, which I'm interested in learning.
Whew, what a list. Amazing that I have time to listen to all these episodes!

In addition, I have an OPML list of blogs I follow. You can import it into your favorite RSS reader.

I also maintain a list in Twitter of influencers I like to follow.

Hope this helps you in your programming journey!

Wednesday, July 7, 2010

Microsoft BizSpark: Single Devs Need Not Apply

I want to start off by saying that I am a Microsoft ASP.NET Developer by day, so I am kind of a fanboy (I admit it). Back in the summer of 2009, I decided that I wanted to try and take some of my ideas for starting a web app company and run with them. When I found out about BizSpark, I was really happy because now I could use the same tools that I use at work to craft my ideas at home.

I signed up for BizSpark in August 2009 and after the initial waiting period, was approved. The first thing I did was download Windows 7 to update my laptop. After that, I downloaded the tools of the trade - Visual Studio, SQL Server and Microsoft Expression. I started working on my ideas but with a challenging home life, trying to get a lot of time to put something together is difficult.

About two months ago I tried to go back to the BizSpark site to download more development software. When I signed in, nothing was available anymore. No software links, just general information that's visible to the general public. Perplexed, I sent an email in April to Microsoft asking what had happened. The MSDN folks suggested I send an email to the MS Champs team, specifically Tom Halabi, to find out what happened. I sent the email to him on April 22nd and never heard anything back.

Fast forward to the July 4th weekend. The install of Win 7 that I had placed on my laptop is now showing me Counterfeit messages every 5 minutes. I sent a message to bizspark@microsoft.com to try and figure this out. Their response was:

Dear Rob Heckart (Heckart Software),

Thank you for your interest in the BizSpark™ Program.

From the information you provided, it does not appear that you meet all the eligibility requirements at this time. To enter the program, your startup must be:
  • Actively engaged in development of a software-based product or online service that will form a core piece of its current or intended business,
  • Privately held,
  • In business for less than 3 years, and
  • Less than US $1 million in annual revenue

Interesting. I am privately held, been in business less than a year and currently have no revenue. I do try and work on my projects when I can - does that meet the definition of "Actively"?

Then yesterday, another email showed up from the BizSpark team:

It’s recommended that you provide a corporate email that matches your URL/domain name (no @live.com, @hotmail.com or @gmail.com) and a solid company description. Our audit teams are using this information (website, Corporate Email and company description) to approve/decline or remove BizSpark Members. They also spend a lot of time validating your website.
If you provide all the requested information, you will be approved very quickly.
Regards,
BizSpark Team


So now I have to pay to establish a web site with email addresses? Even though I'm just starting to figure out what I'm doing, I need to have a website full of information that validates what I'm doing?

I do realize Microsoft's need to watch out for scammers. Since this program is really a great opportunity, it would also be a great opportunity to steal some software - which is something that I am not trying to do. My problem is that when you're just getting started, you need all the help you can get. The hand was extended and then quickly pulled back. And when it was pulled back, there was NO explanation given - not even a screw you automated email.

In the end, this is probably a good thing. I've been thinking a lot about Android and iPhone development and how that's probably the direction I should probably head towards. It's time to branch out and be that multi-lingual developer I've always told myself I want to be again. The nice thing about Android and its tools are that they're free. I'm also thinking about putting Ubuntu on the laptop. I installed it on my work laptop and run my Microsoft stuff in virtual machines. For what I do with my laptop, Ubuntu's probably a good choice. Heck, while I'm at it, I might pick up some Ruby on Rails to see how the other half lives. When life gives you lemons, make some lemonade.

I think I'm done with the BizSpark thing. I'll either use the free tools or just ditch Microsoft technologies completely for my startup thing. No sense putting a website together just to get access to the tools. I'll spend my time more wisely crafting the application(s) I want to build.

Sunday, October 25, 2009

Health Care Reform – The AIG, Freddie & GM pill. Take two of these and don’t call me in the morning

The other day I had an interesting back and forth on Twitter about healthcare. The debate was whether to let the free market have its way or whether the Federal government should have a stronger hand in a “Medicare Part E” plan for everyone. At the end of the discussion I was pointed to an article on Jason’s The Proud Profiteer website entitled Health Care Reform – The red herring of the pre-existing condition. I read every word of the article and have some thoughts about the free market as it exists today and where I think the author is wrong about where we should go.

I’m all for freedom and principles in this country. The author is correct in pointing out that the country was founded on the freedom and the need to get away from tyranny, taxes and religious persecution. Now the drumbeat throughout certain people in this country is that free markets and freedom will be the pill that will cure the country’s ills. Just get government out of the way of everything but defense and we will be a better place for it. Make it “small enough to drown in a bathtub,” to coin a phrase used by one of our most memorable politicians.

One of the ways we applied these principles was to allow mortgage companies, insurance giants and auto makers to, as the author says it, be free to succeed or fail. They’re good at what they do, so why not turn them loose to thrive and then we can all benefit at their success. So how do you explain the story of Goldman Sachs, AIG and the Freddie/Fannie debacles? Weren’t these companies free to pursue their own fortunes? And what would’ve happened if they were allowed to just fail? I guess those that would’ve allowed the complete meltdown wouldn’t mind what is happening in their free market 401(k).

“But we should still get out of the health insurance company’ way,” you say. “Once they have complete freedom they’ll offer a virtual cornucopia of health insurance options that every thirst will be slaked. You’ll see that there will be lots of companies and options.” If you Google health insurance company monopoly, you will quickly discover that for several years large companies have had a lock on providing health care for people. If we get out of the way, what do the Blues, Aetna and the rest do? Do they allow rigorous competition and thousands of new companies to spring up? I think they either buy up those companies to stifle competition or squash them. I was told in the Twitter conversation that we should force these companies to compete with each other. So which is it – get out of their way with no regulation or force them to compete?

If government is our own worst enemy as the author’s comments point out, why not just get rid of everything? Courts – who needs them? You’ve gotta beef with someone, handle it yourself and if you don’t get anywhere, kick the person’s ass or kill them. If one of those purely good companies make a product that turns out to seriously injure or kill people and you’re one of the poor schmucks that gets hurt or killed, tough luck bud. Like I just said, take a truck of Anthro and fuel and have at it.

Police and fire – we don’t need them, right? I’m sure there’s a security company that would be glad to give you your own security detail cause it’ll “fill a need.” Don’t have enough money to hire a security agency? Deal with it. There’s lots of crime victims out there. Go find the turkey yourself and dispense justice.  The 911 system is a socialist, government run system – get rid of that too. You’re having a heart attack, stroke? Get someone to put you in their car and drive you to the doctor. We don’t need no stinkin’ government run ambulances and medical staff. Hire some doctors and paramedics to stand by if you think you’ll need them.

Like you all say, for every need there’s someone to fit the bill at competitive rates, and since we’ll all be SO much more profitable when everyone gets out of free market’s way, we’ll be able to afford all these new things, right?

“But these are all ESSENTIAL government services,” you say. “You can’t take that away!” You know what, here’s where I want you to draw the line. Black & white. Think of all the things that you might need in life. Tell me why you would keep or privatize them. Then tell me why health care is not as important as 911, police, fire & paramedics. Why would you want to keep 911 as a government service but leave health care – the ability to live or die – as a FOR PROFIT endeavor.

If you can’t afford heath insurance, Jason says that you’ll have to turn to charity. Leukemia and unemployed – charity. Stroke leaving you the inability to walk, speak or do your job – charity. Born with cerebral palsy or autism and your parents or unemployed/underemployed – charity. Jason, do me a favor, a little experiment. Take you & your son down to a doctor’s office you’ve never been to before. Tell the receptionist that you’re out of work and need your child seen for whatever – you name the illness. After they get done telling you to pay cash or you don’t get seen, take the amount of money the doctors wants you to shell out and start calling some churches. Give them the same story and tell them that you’ll probably need that same amount of money each month since your child might need special ongoing treatment. When you find the charity that’ll dole out that money month after month, let me know. The difference in your opening paragraphs – each of these families you mention probably has at least ONE working member in the household providing pay for health insurance. If I’m wrong, tell me how they’re handling things on charity.

When I’m buying a car or a toaster, I want free market competition. I want the government to stay out of the way UNLESS what those kind folks are selling is hurting people. When I’m having a heart attack or stroke, I want an ambulance and crew to show up as quickly as possible and save me life! I don’t want to have to think if I paid my premiums that month or that some FOR PROFIT company “with my best interest in mind” will deny me life saving treatment.

How does a publicly traded company, beholden to its stockholders and profits, have my best interest in mind? If I’m a stockholder that’s easy. If you’re a CEO with complete free market freedoms, how do you take care of people with serious medical problems and still make your bottom line? How would Ford survive as a company if most of the vehicle they sold were Pintos or some other high maintenance vehicle? What incentives and marketing schemes would they contrive to make it profitable?

Monday, September 28, 2009

PLINQO and LINQ to SQL

I've been using LINQ to SQL for a while now (even with the lack of support for some SQL Server advanced data types) but I was always wanting for something more. There is great query support with LINQ, but how do I have it do things like automatic rule checking? What happens if I re-vamp some of the fields in a table and want that reflected back in my DBML and entities? How do I make data annotations so that I can apply validation support in the next version of MVC?

Enter PLINQO, a free add-on to LINQ to SQL that adds these things and a lot more. I won't get into all the details of PLINQO as their site explains a lot of it. I want to share my review of it and how it's worked for me so far.

To get PLINQO working, you have to either purchase CodeSmith or download their free trial. The code generation templates for PLINQO come wrapped up in there. Once installed, it's pretty easy to generate a new data project and Dynamic Data project in either C# or VB.NET. From my experience with the product, it seems like the better option for now is to use the C# version. I was getting C# overlap in the VB version (like the static keyword in methods) and there isn't code-behind files to figure out in the C# version.

You really have two choices for code generation here - either let PLINQO build you the projects from scratch or add a CodeSmith project into an existing project. I didn't immediately understand how to do the latter of the two, but it's as easy as adding a new item to a project. Once that's done, right click on the .cst file, manage outputs and add the PLINQO templates to your project.

PLINQO seems to do a pretty good job of making dynamic changes to your DBML file. I did notice that when it generates the entity files, you may have to go back and do some preening. PLINQO extracts out all of the entities in your DBML as separate entity classes in their own files. When I took a couple of entites in the DBML and made their names singular instead of plural, I ended up having two C# entity files, plural and singular. Make sure you delete the entities you're not using anymore (after you copy over your hand generated code, of course).

Another thing I like is the automatic checking of data on submission using data annotations and custom rules. It's nice to be able to put all of this goodness in a data project, surround your CrUD operations with a Try..Catch block and check to see if you have an error. Takes a lot of the validation code out of the presentation layer, which is a good thing.

Overall I'm pretty impressed! The documentation is a little sketchy so far, but hopefully it'll get better in time. The best thing to do if you have questions is to head over to the CodeSmith Community and ask. The folks over there seem more than willing to lend a helping hand.

I would strongly suggest giving PLINQO a try, especially if you're hooked on LINQ to SQL.

Monday, March 30, 2009

MIX09 - a great conference for Web Dev, Graphic Design and User Experience(UX)

Just recently got back from MIX09 conference at The Venetian in Las Vegas. This is a great conference for web developers, graphic designers and user experience engineers and those who aspire to be one. Although it's Microsoft-centric for the most part, there are sessions for everyone and they have posted all of the sessions online so that everyone can see them!

My favorite sessions:

There was also a nice workshop about design for web developers. Unfortunately, it's not on the web for viewing.