Thursday, February 18, 2016

Dogma Debate #223

I recently listened to the discussion on Dogma Debate #223 starting at 1:05:00 regarding the blocking of the airport by Black Lives Matter activists.  I think there was some miscommunication, and some lack of understanding.

From what I could tell, David was claiming that harm was done by the blockage of the airport.  I think this is objectively true, and not contested effectively.  It was trivialized through unreasonable claims for evidence.

Eli kept talking about a line that you just can’t draw, because everyone would keep moving the line toward the more conservative position until the civil disobedience would become completely ineffective.

Alix seemed to generally be on the side of no line, and was advocating for the moral acceptability of the civil disobedience

Issues:


The demands for evidence of actual harm are bad logic – the behavior can be called immoral based solely on the risk of harm.  Introducing undue risk of harm is immoral.

David concedes, “Be disruptive.”  The problem, is that being disruptive always causes harm.  That’s the definition.  It doesn’t always cause great harm, but it always causes at least inconvenience, and it almost always risks great harm.  The civil disobedience on “the bus” risked great harm, just like the airport.  The risk was far lower, but it was still there.

What wasn’t conceded, but what should be conceded, is that the lack of disobedience also causes harm.  We do have a problem, and letting it continue causes harm.  This seems to have not been discussed, but is extremely morally relevant.

The line that Eli was saying cannot be drawn, has to be drawn.  Because a disadvantaged group killing all members of the advantaged group is clearly unacceptable.  That kind of protest, is not ok.  So there is a line.  The line should be drawn by weighing the risk of harm of the protest against the risk of harm of not protesting.  As social resistance to the movement increases, the risk of harm of not protesting increases.  So you keep seeing the line move towards the risk to the social majority side of the equation – because that is the only way the situation gets resolved.



The math that isn’t available to me, but I suspect the protest would come out morally defensible.


Friday, June 13, 2014

Ergodex DX-1 Suite 2.05.0171 Published

I am not sure if the affected anyone but me, but the formal release on the http://www.in-character.com release page for the Ergodex DX-1 Suite was not working.  It just kept throwing up the virtual keyboard, not using the DX-1 hardware.  I think this has been fixed with the newest release,

The control suite, version 2.05.0171, is available on our product page at http://www.in-character.com/Pages/ErgodexDX1Suite.aspx.

Here is a direct link for download:  http://patrickvhines.com/Releases/Ergodex_DX1_Suite_2.05.0171.zip

Sunday, November 17, 2013

Logic vs. Butter

I recently outed myself as an atheistic agnostic.  As such, I find myself thinking differently.  Historically, I have always been at odds with certain moral dilemmas, my logic not always aligning with my Christian influences.  Having set those influences aside deliberately, I have some issues to deal with.

One of those issues, regrettably, is butter.

The quandary is this:  what is moral?  What is right?  It is easy and natural to fall onto defining moral as what results in the most comfort (or least discomfort) for a group.  But what is that group?  Clearly, I want to be in it.  I want my wife in it.  My parents.  My children.  You (assuming anyone actually reads this).  But I find difficulty in knowing where to put that line.  Is it all of humanity?  I say yes, I would want all of humanity in that group.  It would be very, very, very convenient for me to draw the line there.

But there are issues with that.  I have had several dogs that I care(d) deeply for.  Their suffering does not seem trivial to me, so I'd want them in that group.  I would not consider it moral to abuse any of my pets.  Dolphins and Bonobos copulate for pleasure, and that's kind of cool.  So lets add them in.  Many animals have demonstrated ethical behavior.  So lets add them in.  I can't look into the eyes of a being that thinks like me and revert to a morality that states a 1% genetic difference invalidates its suffering.

So now the best I can rationalize is that what is moral is that which reduces the suffering and/or increases the pleasure of conscious beings.  Our robot overlords will love me as a house slave.  But until then...

I have to figure out how to live morally in a society that feeds its populous through what I now see as the morally bankrupt practice of abusing animals.  Many human societies throughout history have had a respectable symbiotic relationship with livestock.  I do not see ours as one.  We do not cherish the cow, chicken, turkey, or goat.  We have a parasitic relationship.  We abuse them.  We breed them to be abused in life and tortured in slaughter.  We have laws that protect pets, and excuse food-providing animals from those same laws so that we can have $0.99 chicken nuggets.

Now please do not misunderstand, cheap food is a very worthy goal.  But is it not one that we can meet without this abuse?  I think it is.  But only through an animal-free food chain.  When you add in an ethically treated animal, it just seems to cost too much to feed a man.

For that reason, I am now a relaxed, ethical vegan.  The ethical side of this is that I have no problem with consumption of animal products if they are obtained ethically.  But I do not want to support the US food industry at large due to its practices.  I am relaxed as in this is my problem, not yours.  I'm not asking anyone else to go out of their way for my moral problems, especially when most of the persons I associate with have a different moral basis, one that allows for these practices.

Although I won't complain if you throw a few extra vegetables on the grill and keep the butter on the side.

Thursday, October 25, 2012

Roadshow Experience

As I write this, I am sitting in Nashville listening to a group of developers jam on guitars / Bass.  It is a good night.

The event is the Nashville .NET Rocks Roadshow.  The speaker was Kate Gregory.  As expected, she gave a good presentation on C++ 11 and C++ Amp.  I have a strong C++ background and know these subjects well, so there were no big surprises, but it was still a good talk.  It is nice to hear a competent defense of C++ in the wake of the developer productivity that is .NET.  I do wish that she had addressed what I think is a problem - catching up to productivity enhancements every 10 years is nice, but C++ really could use a quicker cadence for specification modification.  I imagine that in 10 years we will be back on the defensive talking about missing features.

Carl and Richard both gave good talks that both hold possibilities professionally.

But by far the most interesting part of the evening was the live recording of a .NET rocks episode.  It is interesting to, in a small, personal way, be a part of something public that has had a big impact on my life.  It is odd to see some of what goes on behind the curtain, but it was a very good experience that more than met expectation.

Now the after party is going.  I had a chance to catch up with some friends I made at Codestock, but now most have left.  Carl is participating in a jam session.  Richard is running a scotch session.  I sit alone in the corner blogging.  I am losing the battle against a plague my children morphed into something entirely unnatural, and definitely do not want to infect a travelling show.   

Jimi Hendrix.  I wondered how long that would take.  Apparently 4 songs, or 1 hand-written blog post.

If you get a chance to attend one of these events, I highly recommend it.  If you do, stick around after.  There is more to life than work. 

Tuesday, September 18, 2012

Ergodex DX1 Windows 8 Driver

I have updated the Ergodex DX1 driver that I support to include Windows 8 support (tested on x64, untested on x32).  In order to do this, I had to purchase a VeriSign Authenticode account and sign the driver.  The setup experience should be a little smoother across the board now that the driver is signed.  This did require a capital investment of $100, and that will be a yearly fee, so if you get use out of this product I would appreciate a contribution (Available at our website at http://www.in-character.com and linked from in the tool using the "$" link on the main screen).

The driver, version 3.1, is available on our product page at http://www.in-character.com/Pages/ErgodexDX1Suite.aspx.

Here is a direct link for download:  http://patrickvhines.com/Releases/DX1_Driver_3.01.zip

Saturday, July 28, 2012

Ergodex DX1 Suite 2.04.0128 Released

I have released version 2.04.0128 of the Ergodex DX1 control software.  It is available on the product page at:


This adds a new big feature (macro support) and has been lightly tested.  I also reworked the UI for simplicity.  The next release is planned to be 3.0 with a full round of testing.  Please do not hesitate to send me bug reports.

Thursday, July 5, 2012

Ergodex DX-1 Driver 2.03.0101 Released

I have updated the Ergodex DX-1 driver project and released it.  It is available on the product page located at http://www.in-character.com/Pages/ErgodexDX1Suite.aspx.  I did not have time to do what I would consider adequate testing on this.  I know of a few bugs in the tool.  This is mostly a baby-step release on the way toward full macro support, which is why I am proceeding with a release in the current state.  I did add the ability to bind to modified key sequences (so you can now bind a DX-1 key to shift-A, for example).  Hopefully my other projects will allow a relatively quick release supporting macros, but given the number of side projects going at the moment, I can make no promises.

Tuesday, June 26, 2012

Codestock Keynote - Nick Bradbury

A Message For Me

I recently attended the Codestock conference, a conference for software developers.  At the end of the first day of the conference, there was a keynote address by Nick Bradbury.  This keynote seemed to have been written special for me, and I thank Nick for delivering it.  I do a lot of software development outside of my employment.  While this is not for financial gain, it is still real software development, with real customers.  

Make something you need

Nick's message was about the life of the independent developer.  While I do have a more standard employment relationship, in some limited aspect I am an independent developer.  I struggle at times to stay focused, to know which project to work, which project to prioritize.  Nick's first point that really struck home with me was to make something you need.  Several of my projects are things that I think will benefit others, but are not things that I need.  I can see in his points things that I struggle with on these projects.  Lack of motivation.  Lack of insight.  And ultimately lack of releases.  There is one project that stands out as something I need, something I want.  This project needs the lion's share of my time, which Nick has helped me see.


No one reads help

I have pushed this repeatedly in my workplace, oft to no avail.  But it was elegantly stated during this keynote.  My recollection, probably less elegant, is that if a feature needs a help file, the feature needs to be redesigned.  Intuitive experience is one of the most important aspects of your software.  I believe that customers will not open your help, but will instead just go to your competitor.  And you always have a competitor.


Staying Relevant

A large part of my life is spent staying relevant.  I do not want to spend the sunset of my working career maintaining legacy software.  I want to be a driver of technology.  To that end, I give up a lot.  Probably too much, but only that which I see as needed.  It is a hard rope to walk, managing family and work life.  I fail daily, but my family is provided for, I remain relevant.  But in the quest for relevance and skill maintenance, I tend to get distracted by making, and often drop the learning ball.  If this time is so important, it needs to be primarily time that makes me more relevant, more marketable, even at the cost of lack of software deliveries.


Make a difference

This was really something that hit home with me, and what really made me want to write this blog post regarding this keynote.  Nick's parting words were great ones in my mind.  
If you feel like you're wasting your time creating software you don't believe in, find a way to stop doing that.  Find a way to create software that makes a difference. - Nick Bradbury
For me right now that way is to focus on a single project that I care about, that I need. Thank you Nick for delivering this keynote.

Saturday, June 16, 2012

Codestock 2012 - Day 1

Yesterday was day 1 of Codestock, a software development conference held annually in Knoxville, TN.  This is the first conference I have attended, and it proved to be a very valuable experience.  I am looking forward to tomorrow even more.

Registration

As the morning began, I met with my expectation.  Get up early, go register, get some breakfast, find the first session.  I don't mind the get up early part, but seem to be in the minority.  Registration starts at 7 AM and I show up at 6:50.  Based on some comments on the lines during the Keynote, this seems to have been a wise decision, because there was no line to speak of.  

Attendees

The attendees that I met throughout the day were a welcome part of this experience.  There seems to be a thriving community here of developers.  Unfortunately for me, I am on the outside of that community, and can tell that being on the inside would greatly enhance this experience.  There are many familiar names, but none know me.  I did get pulled into several great conversations surrounding my Samsung Slate 7 Windows 8 box, so I'm glad I brought that.  After the days festivities there was a social event at one of the local restaurant-bars, where I really sealed the deal on my social awkwardness.  I did get to converse with several fellow Huntsville natives that I have met through our local user's group (HUNTUG).  

Sessions

I tried to fill every moment I could with session attendance.  They pretty much went as I expected.  Two were great, one mediocre, two were bad.  For the bad sessions, I really got a sense that the presenters knew they were bad and would use the experience to make future presentations better.  But I have to say that even from the "bad" sessions, I still walked out knowing more than I walked in knowing, which is of great value so I thank all presenters. 

The session that gave me the most was, not surprisingly, the Windows 8 deep dive, given by Jennifer Marsman.  This was a good refresher on the recent Windows 8 Code Camp that I attended with a little more real-world coding stuck in.  Jennifer is a great communicator, stays on topic, keeps the audience engaged, and packs her sessions with content.

Keynote

They keynote address was given by Nick Bradbury and it was by far the highlight of the day.  The talk was on the life of the independent developer.  He went through his career path and showed us his path from birth to success, what he has loved, what he has less-loved.  Almost everything Nick had to say seemed to be a message designed for me.  That we are at a pivotal time in human history.  That I am a big part of that.  That I want, and should want, to be a bigger part of that.  That I can affect real changes in this space.  That code craftsmanship matters.  That money only matters in that I have to provide for my family, but it should not be an end goal.  That user experience is not a buzzword, but rather a light that shines on the darkest corner of software development containing our greatest failures as an industry.  I thank you Nick for this presentation.

Sunday, May 27, 2012

DirecTV Believed Unethical Billing

I fully understand that it is a business' goal to make money.  Some businesses do that by charging customers.  This is a perfectly valid and moral relationship.  The morality of this breaks down, however, when a business intentionally charges customers for a service they did not provide.  It is my opinion that consumers should refuse to do business with companies that have that business model.

I have recently discovered first hand that DirecTV has a business practice that I believe to be immoral.  If you be a moral person who is also a customer of DirecTV, I advise you to read on and decide for yourself if you can remain a customer of theirs.

Six months ago I suspended my DirecTV.  The way this works is that they stop putting charges on your bill, and they stop providing service, and at some date in the future, that service is reinstated automatically if the consumer does not take action.  I believed this practice to be designed to lure customers back in by automatically reactivating and maybe getting a little billing out of customers.  But I entered into this aware, knowing I would probably forget, get reactivated, charged for a few days, and then cancel.  We do not have room in our budget for DirecTV.  But I was hoping that would change over the six months.  At some point, that will change, and I will consume media again.  I can say that unless DirecTV takes action and based on my personal experience over the last 2 hours, I will not be a customer of theirs again.  Ever.

I get bills from DirecTV every month.  Since we suspended service, and since DirecTV advance bills for service, there was an 80 dollar credit on my account.  For the last 6 months or so, I have gotten a bill every month showing this credit.  DirecTV refused to refund me this money unless I cancelled the account outright, which should have been an indication to me that they were eventually going to unethically keep this money.  So here is how my bills looked:

From my gmail history, and echoed at DirecTV:



So you can see that I get a bill every month like clockwork.  This all makes sense at this point.  And I knew that at some point, they'd start charging me again.  I have now learned that service was reactivated on 4/26/2012.  Let me refresh one thing in your mind though:  DirecTV advance bills.  My 4/26 bill showed an $-80.08 credit.  My service reactivated on 4/26, so why did the 4/26 bill not show that?  Why was there not a charge?  Here is the 4/26 bill:

Note that there is no indication of services on the above bill.  It is April 26, and my service was reactivated on April 26.  This bill clearly states there are no charges (and you can see in the bill below that they do advance bill for service).  I believe this is consistent with a business practice designed to unethically take my money.

Compare that with my May 26 bill:


Now this was very interesting to me.  When I read this, what I believe to be going on is an attempt to empty out my credit without giving me a chance to respond.  If they advance bill, which they have always done up to this point in my experience, and are continuing to do from this point on, why were my April 26 - May 26 charges not on my April 26 bill?  They state it is because the service was suspended at that time.  I believe DirecTV is more competent than that.  I believe that billing was done in this way for the sole purpose of getting my $80 credit, and then some, without giving me a chance to respond.  I believe this is consistent with a business practice designed to unethically take my money.

DirecTV has been contacted, and refuse to refund the money.  I am was a potential future customer, and they refuse to refund a bill for a service I did not consume.  They claim that they notified me that the account was to be reactivated, and that they notified me of this on April 4th.  I use gmail for my e-mail, and gmail stores all emails unless you delete it.  I delete only spam.  The first picture that I posted in this article was a listing of all of my e-mail from DirecTV.  Note that no e-mail was listed from April 4.  I searched my e-mails from April 4 and received only 3, none of them were from DirecTV.  There is a chance that a spam filter caught it, but I find that unlikely if they follow consistent business practices.  I get e-mails from them every month that make it through the spam filter just fine.  From what I can tell, DirecTV did not send me this e-mail, which I believe is consistent with a business practice designed to unethically take my money.

This business practice only affects those who have suspended their service.  I think it is reasonable to say this group of people is primarily those without financial means to pay their bill.

I believe that All lines of evidence I can gather support the hypothesis that DirecTV has instituted billing practices designed to legally but unethically take money from the financially impaired.

If you are reading this and find it logically sound, please consider cancelling your DirecTV service if you have it, and consider publicizing this message through social media.

Sunday, February 26, 2012

Ergodex DX1 Suite 2.01.0055 Release

I have just published a new version of the Ergodex DX1 software.  This version mostly just adds one feature - persistence of configuration data between runs.  In my opinion this turns this software from near useless to a viable solution, depending on your reliance on macros.  Macros are still not supported, but they are the next big feature to implement.

The application can be downloaded from the product page at: http://www.in-character.com/Pages/ErgodexDX1Suite.aspx

Wednesday, February 1, 2012

Ergodex DX1 Suite 2.00.00 Release

DX1 Software Release
This post serves as the release of version 2.00.00 of In-Character's Ergodex DX1 control and configuration software.  This is support software for a piece of hardware.  If you do not have one, it's most likely a complete waste of your time to get this.  However, if you just want to see what I am up to, there is a DX1 simulator that will start automatically if you do not have a DX1 device attached.

For details on this product, please see:

 http://www.in-character.com/Pages/ErgodexDX1Suite.aspx

The release is here:

http://www.patrickvhines.com/Releases/Ergodex_DX1_Suite_2-00-00.zip

Friday, January 13, 2012

label:unread

Unread Mail in GMail
I exclusively use GMail as my e-mail client for all my mail.  For the most part, I keep things read, responded to, up-to-date.  But occasionally, one slips through the cracks.  When this happens and I notice, it's not a big deal.  But occasionally, one gets by and it is months before I notice.  If it is recent, I can use the "All Mail" link to find it and make sure it is not important.  But there have been a few over the years that really slipped through the cracks.  

In addition, I don't delete e-mail.  Google stores it all for me.  The result here is that somewhere in my mailbox with Google there were about 130 unread mails.  As of this writing, I have 22,445 e-mails stored in my mailbox.  Going through this to find the unread mail is not feasible.  One would expect an easy way using the Google Mail interface to see this mail.  But if it exists, it is certainly not intuitive (or I am just blind to it).  

Labels
The solution to this is the Google Mail label feature.  You can assign labels to e-mails based on rules.  For example, if you e-mail me at my work e-mail it is automatically labelled as "phines@quadrus".  An easy interface is provided on the left where you can click a label and see only items that are tagged with that label.  In addition to these custom labels, there are some labels that Google manages and automatically apply to e-mails.  For example, when you click on the Inbox, you are actually just viewing e-mails tagged with the Inbox label.  The Inbox link is just a convenience, but you can also search for labels.  If you go to the search field at the top and type in "label:inbox" you get the same list of e-mails displayed as if you clicked the Inbox label on the left.

The Unread Label
There does appear to be a label called "unread" that is applied to unread e-mail.  If you go to the settings where you can manage your labels, there is a section for system labels.  However, this label is not listed.  I have no idea why.  I would expect this to be listed as an option, and default to being on.  There should, in my opinion, be a link on the left called "unread" that makes this easy.  But whatever the reason, this has not been done.

The Solution
While not exactly "user-friendly", the unread mail can be displayed.  If you go to the search field at the top and enter "label:unread" as your search term, you will see only your unread e-mail.  Hopefully Google will make this more user friendly.  

Tuesday, November 1, 2011

Windows 8 Developer Preview: Driver Installation for XE700T1A

Continuing Saga
In my last blog post, I detailed my initial setup of the Windows 8 Developer preview on my Samsung XE700T1A-A04.  As of the end of that post, I showed how to install the base OS, but several capabilities were not there.  The motion sensor did not appear to work as expected, and I had not yet been able to demonstrate pressure sensitivity with the pen.

In this post, I will dive deeper into those two issues.

Motion
This is a required feature in my mind on a tablet.  It is one of the little things that becomes huge about the 3rd time you do it.  It worked great on the device while it was running Windows 7, but it was not working after the Windows 8 install.  The slate always is in a landscape orientation.  When you turn the tablet to a portrait orientation, the user interface should detect that and rotate, but it did not. 

Looking in Device Manager, I saw two issues.  One is identified named "SM Bus", but the other was just an unrecognized device.  Samsung has provided a XE700T1A-A03 Driver Page.  I downloaded the driver for the motion sensor.  Upon trying to install it, I got an error that I was using an unsupported OS - it was written for Windows 7.  But, wait, didn't Microsoft tell us that anything for Windows 7 would work on Windows 8?  So, I got brave, selected the file in Windows Explorer, and clicked on Application -> Troubleshoot Compatibility in the ribbon bar.


I went through the menus to configure the "setup" application to run in Windows 7 compatibility mode.  This Got the driver installed, but the orientation still did not rotate with the tablet.  There was one setting left to set:

  • Search Charm -> Settings -> "Orientation" -> Change screen orientation
  • Check "Allow the screen to auto-rotate"
  • Click OK
Eureka.  I had rebooted after the driver installation, but don't know if this is required.  The system did not tell me to, it was just a step I took to try to get the driver to work before I discovered the checkbox above.  Note that there is an approximate 1-2 second delay between rotating the screen and the orientation changing.




SMBus
Earlier I noted that there was a "SMBus" entry with an error in Device Manager.  This was easily resolved by downloading the chipset driver from the XE700T1A-A03 Driver Page and installing.  This went off without any issues, just note that after it decompresses there is a long pause, maybe as long as two minutes, but eventually the installer did start.  After installation of this package, the SMBus no longer had an issue.  A reboot was required.

Pen
There is a pen driver on that driver page, but the installer does not appear to do anything.  I have tried Windows 7 and Windows XP compatibility mode both with and without running as Administrator.  In all instances, I get a wait cursor for a very short time and then nothing.  No evidence at all that anything happened.  This one is still on the to-do list.

Thursday, October 27, 2011

Installing Windows 8 Developer Preview on Samsung XE700T1A

Warning:  It has been reported that removing the backup partition on the SSD of this device has rendered the device useless.  Do this at your own risk.

Destruction of a Beauty
I recently purchased a Samsung XE700T1A-A04 from the Microsoft Store in Seattle (thank you brother Mike for helping me with this, and thank you Microsoft for the free phone).  It is a wonderful tablet.  I've been using it at work for the last 2 days and love it.  Battery lasts good, touchscreen works like a charm, pen does too (although why do you ship a Wacom-enabled tablet with no pressure-sensitive drawing program...)

But the reason I bought it is as a development target for Metro applications.  So I need to get the Windows 8 developer preview up and running.  This post chronicles that experience, be it for success or failure.

Basic Process
The basic process seems to be the following:
  1. Format / Copy the installation media to a 8 GB USB key using the Windows 7 USB DVD Tool
  2. Boot with the USB key
  3. Install Windows 8
  4. Start making money
Setting up the Key
I am using a 8 GB Sandisk key I picked up at Wal-Mart for about $18.  I was shocked I did not already have a big enough key sitting around, but I didn't.  The install media is over 4 GB, and most of my keys seem to be 4 GB.  

The first task was to install the Windows 7 USB DVD Tool.  This was painless and needs no explanation.  Luckily I already had the ISO for the developer preview downloaded, so no waiting there.  I started up the tool and it seemed pretty simple:  select the ISO, select the type of media [USB], select the device, hit go.  But it reported a failure.

Upon investigating the key, it looked like the first step - formatting the key - was successful.  So my next task was to manually extract the ISO to the key.  I used WinRAR to do this.

Booting to the Key
If you've been paying attention, then you probably didn't really expect that to work - well, neither did I.  We're obviously way too educated, because it didn't.  I did, however, discover a few controls of note on the Samsung Series 7 Slate:

  • Windows Key held during boot:  BIOS
  • Volume Up (up key)
  • Volume Down (down key)
  • Rotation Lock (enter / select key)
  • Windows Key [In BIOS] (escape / return / go to exit page)
You can use those to navigate through, turn on UEFI (hope that was a good idea), and get to the page where you set the boot order.  But you can't seem to actually change the boot order.  This was frustrating, but there seems to be an entry on the exit page to override the boot order and boot directly from a specific device.  I used this to boot to the USB key.

But that failed, it almost immediately booted up the Windows 7 already installed on the device.

"Upgrade" Install
Rather than spend more time remaking the key, which took about 45 minutes, I thought I'd check out what happened when I just put the key in while booted in Windows 7.  It recognized the install media and began the install process.  There were some very entertaining screens.  My favorite was the one that asked you what  you wanted to keep with a single option:  Nothing.  That's the stuff.  

But that failed.  Eventually, the system reboots, there is a boot options screen with a rollback, developer preview, and windows 7 option displayed on startup.  I chose the developer preview choice, which fairly quickly failed with a message stating that windows could not be installed on my hardware.  Disappointing, but not surprising.  I did not expect this to be easy.  I then booted to the "rollback" option and eventually got back to this state:


Not the most readable picture, but it is what it is.  The message states: "We're not sure what happened, but we couldn't finish installing Windows Developer Preview.  We've set your PC back to the way it was right before you started."

And it looks like they did.  Back up and running in Windows 7.  No drive space appears to be missing, at least no massive amount.  So, nothing broken, but still no Windows 8.

Back to Key Setup
Looks like the next step is to see if a clean wipe will run.  I located another utility to create USB flash cards for this purpose: WinToFlash.  I ran it and it ran much quicker, if not as user friendly.  I had to extract the Windows 8 ISO to a folder on my system.  There was a Windows 8 option in the menus for this tool, so that is promising.

I booted the system into the BIOS with this new key attached.  Once booted, I get the SanDisk option on the Boot Override of the Exit screen, but I also got a "UEFI: USB USB Hard Drive" option.  I suspect (but have not verified) this is something that is there as a result of the failed Windows 8 Install.  Looks like the system is not "quite" back exactly like it was before.  Upon booting the SanDisk option, I get a small surprise - the Windows 8 Setup actually started.  -- But I didn't get far.  I got an error stating:

Windows could not collect information for [OSImage] since the specified image file [install.wim] does not exist


This pointed to a problem with the installation media. I checked and the one I used was indeed bad. Once I got that resolved, I discovered a new issue - a required setup file is over the 4.x GB limit, and all of this USB key prep software is using FAT32. None of them were actually copying the main install file (install.wim).


The final path to solution seems to be this:
  • Download ISO of Developer Preview 
  • Extract ISO to local folder (we'll call it C:\Win8Install) 
  • Insert USB drive (we'll call it D:\) 
  • Format D: as NTFS 
  • Copy contents of C:\Win8Install to D: 
  • Start -> Administrative Tools -> Computer Management -> Disk Management 
  • Make partition assigned to D: active 
  • Run C:\Win8Install\boot\bootsect.exe /nt60 D: 
  • Power Off Tablet 
  • Insert USB Drive 
  • Power On - holding down Windows Key 
  • When BIOS loads - press Windows Key 
  • Use Volume up/down keys to select the USB drive as the boot option 
  • Press the Rotate Lock key 

The tablet should now be booting up with the Windows 8 Developer Preview installer. Run the installer as normal - installation out of scope of this blog entry

Updates:

  • Camera is working
  • Switching orientation by rotating the slate is not working
  • Pen is working
  • Expression Blend 4 will not install unless you use a mouse

Thursday, October 20, 2011

Tesla Mark II

The Next Generation
Like many mid-30-year-old geeks out there, one of the shows I grew up on was Star Trek: The Next Generation.  As I look around our current technology landscape, I am constantly reminded of the picture of technology that was visualized in that setting (and what led to it).

From phones:




To portable data storage:




To readers














To tablets:














Life really does tend to imitate art.

The Declarative Cockpit
Today I was informed of a new product that is soon to enter the market - the Tesla model S.  This is an all-electric vehicle.  It is quite impressive all around.  But what I found most interesting about it was the interior of the cabin:


As we become a touch-screen-centric society, it seems we keep getting closer and closer to user interfaces we all thought were rediculous.  Flying a shuttlecraft with a touch-only interface, how could that be done?  Never, give me my hard buttons.  That's what we all said.  Sure, it looks neat, but it's just not practical.



Or is it?  Our problem is we still think we are driving the car.  We still think we should be driving the car.  But we don't react fast.  We don't really understand what goes on under the hood, and for most of us, that's a good thing.  One thing that you want to do in software development, at least in some methodologies, is to encapsulate the imperative work - how you do a task - and create a consumable package that consumers will interact with using a declarative model - the consumer only says what they want to happen.

We are but a few layers of abstraction away from the runabout user interface.  I welcome the change.  I'm tired of waiting.

Wednesday, October 12, 2011

Surprising Outlet Experience

It is not often that I have a surprising online shopping experience.  Recently, I had the fortune of getting to purchase a laptop for a family friend as a gift.  We were on a fixed budget, so I spent a decent amount of time shopping for the right system, and for the right supplier.  My company uses Dell, so it was where I started the search.  I then branched out, but eventually returned to Dell since it is what I know.

But in pricing, I just couldn't find that sweet spot where the system was up to par and within budget.  Through some networking, I got referred to the Dell Outlet (http://www.dell.com/outlet).  I expected to find yet another storefront peddling the same wares under the guise of a great discount but with really no net benefit.  What I found was something else entirely, and worth sharing.

B-Stock
I use this term to refer to the not-perfect-off-the-shelf item.  These items are usually either refurbished or have minor cosmetic damage.  Whenever I can, I buy electronics as B-Stock.  I mean they're usually only good for 2-3 years anyway, and I personally consider anything that is out of warranty as beyond end-of-life.  As long as a B-Stock purchase comes with a decent warranty, I consider it a no-brainer.

And B-Stock is what the Dell Outlet peddles.

It is not entirely a consumer-friendly site.  But it was fairly easy to narrow down my search to the features I cared about and, with a small amount of hassle, find the system I wanted, a Dell XPS 15z.  This is one of Dell's newest line of systems, and there was a lot of B-Stock to choose from.  You can't customize the order, but if you don't mind checking and re-checking, a model that fits your needs will probably show up soon.

Once I made the purchase, the system shipped early the next business day, and was in my hand the day after that.  The total saving was around 25% over the best other deal I could find.  That is definitely not a trivial discount on high-dollar electronics.

Thursday, September 15, 2011

Windows 8 Developer Preview

The Microsoft community is abuzz - we have new toys.  At Build (http://www.buildwindows.com), a conference that is going on this week, new bits were released for the Microsoft developer community.  We now have the following toys:

Windows 8 Developer Preview
Visual Studio 2011 Express Developer Preview
Visual Studio Team Foundation Server 2011 Developer Preview
(... actually a lot more, but these are the big boys from my perspective)
(http://msdn.microsoft.com/en-us/subscriptions/default.aspx - if you have MSDN)
(http://msdn.microsoft.com/en-us/windows/home/ - if you don't)

The developer preview releases are not for the consumer.  The target audience is Microsoft enthusiast or professional developers.  You should expect these tools to have some neat new features, but also some significant bugs.  To drive the point home further, consider the following text from Microsoft:

The Windows Developer Preview is a pre-beta version of Windows 8 for developers. These downloads include prerelease software that may change without notice. The software is provided as is, and you bear the risk of using it. It may not be stable, operate correctly or work the way the final version of the software will. It should not be used in a production environment. The features and functionality in the prerelease software may not appear in the final version. Some product features and functionality may require advanced or additional hardware, or installation of other software.
Now for the point to this.  Here are the steps I took to get the Windows 8 Developer Preview and Tools installed and running in a VMWare Player (or more accurately, am now taking since I am writing this as I try to get these tools installed for the first time).

VMWare Player Setup
The first step is to get VMWare Player running.  If you go to the VMWare website and look for VMWare player, the most recent version you will find is a 3.x version.  Unfortunately, this will not work with Windows 8.  The good news is that version 4 is out, and does work with Windows 8.  The bad news is that you have to download a lot more software just to get it.  It is bundled with the VMWare Workstation 8 installer.  You can get it here: http://downloads.vmware.com/d/info/desktop_end_user_computing/vmware_workstation/8_0.  If you do not already have one, you will need to create an account with VMWare (it is free).

Once VMWare Workstation 8 is installed, you should find VMWare Player 4 also installed.  Start it up and do the following:

  • Create a New Virtual Machine
  • Choose "I will Install the operating system later", click next
  • Choose Microsoft Windows, and Windows 7 x64 from the drop-down, click next
  • Enter a name, change location to store data if desired, click next
  • Choose desired storage options, click next
  • Click Customize Hardware - set this up as desired, below are my settings
    • Memory: 4 GB
    • Processors: 2
    • CD/DVD: Use Iso Image (chose the windows 8 preview ISO downloaded from links above)
    • Network: Bridged, replicating physical network
    • All others default
  • Click Close
  • Click Finish
You should now be able to select the new virtual machine and start it up in VMWare player.  Upon booting, it should take you through the normal setup procedure.  If it doesn't boot into Windows Setup, you probably did not setup the CD/DVD to boot the Developer Preview ISO.  You should be able to fix that in the settings for the virtual machine in VMWare and reboot it.  If you are still reading this, you probably don't need to be walked through that.  It went fairly well.




Mistakes I made, and the consequences:

  • Tried to use VMWare Player 3.x
    • This failed miserably.  Virtual Machine became trash fairly quickly.
  • Used VMWare Player 4, but set operating system to "Other"
    • This started to work, but there was an error during setup
    • The error rebooted the virtual machine
    • From that point on, the VM was in an endless reboot - error cycle
Both of these errors required deleting the virtual machine and starting over.

Saturday, August 13, 2011

Microsoft Team Foundation Server Error: TF255251

I have done a few Microsoft Team Foundation Server 2010 installs.  Each time I do it, I seem to run into problems.  This latest time was no different.  After searching online for resolution to my problems I did not find much help, so I figured I should share what my problem was, and how I eventually solved it.

First for the quick answer.  The root of my problem was that I needed to add the "NT AUTHORITY\LOCAL SERVICE" account as a farm administrator for Sharepoint Services 3.0, and I had to do it as the user I entered in the TFS configuration.

Now for the history, how I got to the error, and how I debugged and fixed it.

My system is a virtual machine with 4 GB RAM running in VMWare Player.  I installed Windows Server 2008 R2, fully patched it on 8/12/2011, and installed SQL Server 2008 R2 with analysis and reporting services.  I then installed TFS 2010 using Sharepoint 3.0 Services.  My first issue, which the documentation did not seem to address, was a question asked during the SQL Server configuration.  The database setup needed to know whether to install in native mode or in Sharepoint Integration mode.



Not being able to find direction in the TFS installation documentation on this, I figured Sharepoint integration would be the way to go.  However, that is incorrect.  Native mode is needed.  I did not think to take screenshots of this error, but from my recollection this problem showed up when I was configuring TFS as an error with Reporting services.  The advice I found on how to fix this was to rollback or start over and choose the right option.  However, I found a way to get around that problem.  The resolution required the following:

  • Using the SQL Server 2008 R2 Management Studio
    • Detach the "ReportServer" database
  • Remove the files stored at C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA related to this database
    • ReportServer
    • ReportServer_log
  • Using the Reporting Services Configuration Manager
    • Start the tool and enter the SQL server / instance credentials
    • Click on "Database" to the left
    • Click on "Change Database" to the right - Note this will still look like the ReportServer database is there - but it is not
    • Add a new database in Native mode called ReportServer
    • [Note: I also had to setup the Report Manager URL with this tool by selecting that option to the left and hitting Apply so you may need to do that step as well]
Upon re-running the TFS setup, reporting services was setup correctly, but the last step of TFS configuration is setting up the default collection.  This step failed, and fails consistently.  Below is a screenshot of what the error detail looked like for me:


Now, this should have been fairly easy to fix.  I tried the following:
  • Start Sharepoint 3.0 Central Administration
  • Login using my personal user account (the same one I installed TFS with)
  • Click operations
  • Click Update farm administrator's group
  • Use the New pull down to add a new user named "NT AUTHORITY\LOCAL SERVICE"
    • This step failed, saying I had to be an administrator
This was confusing, because I am an administrator.  I am shown as being a Farm Administrator on that last screen we were on titled "People and Groups: Farm Administrators".  As it turns out, you have to use the account that was setup as part of the TFS configuration.  I named mine TFSREPORTS.  Once I logged on as that account and reran the above bullet list, I was able to add the LOCAL SERVICE user as a Farm Administrator.  Once it was there, creating collections seemed to work fine.  The one caveat is that while creating the collection had failed, it did actually make the databases for TFS_DefaultCollection.  I had to detach these and delete them from disk before the last step of TFS configuration would pass.  

I expect this error was injected because I did not use the right user account or right type of account somewhere along the way.  In my mind though, this is the simple case.  It should just work.  Since Sharepoint was installed by this step, I am not sure why the Sharepoint installation had an error.  But this error is repeatable, and it shouldn't exist.  The TFS installer has access to the account that can fix this problem in Sharepoint since it was created by the TFS installer.  It should automatically make the LOCAL SERVICE account a Sharepoint Farm Administrator, or at least clearly tell you what to do.  But then again, I'm a dreamer...

What would be a lot nicer though, is to not have to do any of this.  The VMWare gallery should have a virtual machine posted that has a working TFS server using trial licenses.  I should be able to download it, start it up, enter license keys, and be up and running without needing to do setup on my end.  This sort of thing may exist somewhere for Hyper-V, but it should be in the VMWare gallery as well.  If it is there, it's certainly not easy to find.

Monday, August 8, 2011

The First Taste is Free

I do a lot of development at home.  I do not find my professional life provides experience on the edge of technology, so I have projects I work on to keep my skills sharp and, more importantly, to develop new ones.  When doing this, I use Microsoft Team Foundation Server.  I have a license to MSDN Premium through work so this is a no-cost operation for me.   It is a nice tool.

But...

Now some friends of mine would like to join me on a project.  TFS is great, but it looks like it will cost around $500 / person in order to use TFS for a closed-source personal project.  This is unacceptable.  I spent a little time (and let me emphasize that "little") looking for another solution.  There are fragmented solutions that are free, but their quality does not impress me.  Where is the amazing end-to-end project management / source control / build automation tool that is free for non-commercial, small projects?

I do not understand the business of this.  Give the tools away for free for the little projects so that we are all hooked on them for the big projects.  As is, those that tend to drive the decisions are pushed into familiarity with the free tools and we end up using eclipse and subversion for C++ professional ventures when the tools are clearly inferior.

The number one rule for creating addicts:  the first taste is free.

And it can't be a trimmed down taste.  It needs to be the real thing.  Don't worry.  We'll come back with cash.


Rant Caveat:  Solutions need to provide something like Team Pulse with TFS integration.  There are free editions of some nice tools, but the free version always falls short.