Monday, December 31, 2012

Happy New Year, End of Year Wrap Up

Well, everyone, the year is wrapping up right now.  For many, it's already over and 2013 has already begun.  For others, there are several hours to go.  Any way you slice it, now seems like a good time to do a year in review.  I know you are all super interested in my life.

The landmark events in my life for this year were as follows:

  • finally got off my but and started self-publishing the Sleight of Mind series
  • finished development of my book, Test-Driven Database Development
  • moved into a new house out in the country
  • getting some real traction in implementing test-driven development as well as other process improvements where I work
I'll drill into each of these in a subsequent post.

Wednesday, December 26, 2012

Copy Editing Round #1 Complete

I think I'm to the last level of not being done with with Test-Driven Database Development: Unlocking Agility.  I finished going through all my first-round copy edits.  Soon, I will be reviewing the second (and final) round copy edits and, then, magic happens.

I don't know how long it takes to go to print after that but I imagine it can't be too long.

In the words of "Garven Dreis:" Almost there.

Sunday, December 09, 2012

Friday, December 07, 2012

Yet Another Reminder: Sleight of Mind #1-2 Free All Weekend

I'm getting tired of writing these so I probably will do one more at the end of Sunday and that will be it.

Sleight of Mind #2 is free through Sunday.  Sleight of Mind #1 is free tomorrow and Sunday.

Thursday, December 06, 2012

The Annoyance Resumes: Another Promotion Approaches!

Sleight of Mind #2 and its predecessor are both free.  #2 is free tomorrow through Sunday (12/09/2012).  #1 is free Saturday and Sunday (the same).

The response last weekend was pretty good.  This weekend, I'm hoping to top it and to get some reviews.  I don't need good reviews.  I just want some feedback.  After all: that's how products are made.

Go get 'em, read 'em, and review 'em honestly if you haven't already.

Sunday, December 02, 2012

Last Chance to Get Sleight of Mind #2 Free

The promotion has gone great this weekend thanks to everyone who helped spread the word.  If you or someone you know hasn't gotten their free copy, you have less than an hour to get it here.

Episode #2 Is Doing Well

I had a great first day but I'm sure there is someone out there who might enjoy it and is at risk of not getting their free copy this weekend.

Here it is.  Smack that person up side the head and make them go get it.

Saturday, December 01, 2012

Getting Great Feedback on Sleight of Mind #2

Well.  So far, so good.

I've received a couple comments on the latest episode of the Sleight of Mind series.  It's about what I expected, but I'm eager for more details.  If you have any thoughts, feel free to share them.

I'm not shy and I don't want you to be either.  Please feel free to give me feedback directly, via this blog, or in the form of honest reviews.

Sleight of Mind #2 Is Free Today

Sleight of Mind #2 is free all day today and tomorrow.  This installment opens up with Daniel on the lam and follows his journey through the Appalachian mountain range on a hunt for something of great value to Mot.

Go get it today.  After all, it's free.

Friday, November 30, 2012

Thursday, November 29, 2012

Sleight of Mind #2: Run to the Hills Is Available Now

I've posted the next installment in the Sleight of Mind series.  It is entitled Sleight of Mind #2: Run to the Hills.  In this edition, a series of events manipulate's Daniel's course of actions into the bitter cold of the mountains in winter on a quest for something that Mot desires but cannot obtain on his own.

The free download days are December 1st, 2nd, 7th, 8th, and 9th.

Sunday, November 25, 2012

Like Stereotypes: Cliches Exist for a Reason

One common chant that has well surpassed "cliche" status is the statement "freedom isn't free."  However, like stereotypes, most cliches have a nugget of truth in them.  Freedom is not, in fact, free and everyone wants to use that to justify their personal agenda.

How It's Misused
War!  Don't like it?  Those guys want to kill us all.  I mean, come on: you know freedom isn't free.

Robin Hood!  Don't like it?  Well, you know you live in the freest country on Earth and you enjoy many fruits I would like to recast as part of the common bounty.  After all... freedom isn't free.

Gay marriage!  Don't like it?  Hey!  Protecting freedom of religious views means protecting everyone's perspective.  If that makes you sad, well, freedom isn't free.

Sure, the people who utter these platitudes may not use the exact words.  Sometimes they college them up and sometimes they country them down.  The essence is always there, though, poisoning the argument and rotting away the little nugget's ability to do its job.

The Truth of It
It's true: freedom is not free but it's not the money we spend on social programs that would keep it safe.  It's not the trampling of some six thousand year old religious tradition, either.  The root of protecting freedom is not even the lives we lay down to protect ourselves from our enemies - although that is often a necessary component.  At its core, protecting freedom depends on something a lot more rudimentary than any of those things.

What is actually required is the ability to think and to make the hard decisions.  Mental laziness or plain old stupidity is the greatest enemy of freedom that we have and it lies at the heart of almost every threat there is.  We need to radically rethink the way government conducts its affairs and we need to regain our ability to make the tough decisions.

The Problem
Representative government isn't working.  It seems really hard to argue against that assertion.  The problem with representative government is not, as the Left would argue, that the people's views aren't taken into account.  It's also not, as the Right would argue, that it abandons our traditions.  Also, neither of them are true.

Corporations control government because you and I let them.  Corrupt politicians enter office because you and I let them.  The products you buy are of terrible quality because you accept it.  Your life is the way it is a little bit because of the circumstances around you and a lot because you let it be that way.

Representative government doesn't work because it gives people too much say, not too little.  You get the government you deserve.  You really do.  Don't believe it?  Tough.  It's still true.

One-Vote-Per-Citizen Isn't Working
Representative government is an implementation, not a virtue.  Like all previous means of controlling people's behavior, it is deeply flawed.  We need to radically rethink how government makes its decisions and we need the ability to do the uncomfortable things that allow liberty to happen.

We need the ability to look at someone at say "sorry, you're too stupid... you don't get a say."  However, it's not just people who can't think that are the problem.  It's also people who could think but don't.

Of course, there is no "fair" way to tell someone they cannot vote.  If you give someone the power to decide who can and cannot vote, that person is likely to distort whatever model he is given in order to obtain a favorable voting population.

We need to give people who are better decision-makers more relative voting strength than bad decision-makers and we need a way for people to sort themselves into the right voting-strength category.

A Next Step
I submit that there is a way to do this that simultaneously corrects the signal-to-noise ratio and makes people who care about something the ones who pay for it.  There's a catch, though: you have to give up the easy answer.

You have to be willing to be brave enough to do it.  You have to be willing to say "You can't vote?  That's too bad.  Maybe you should do something about that."  You may even have to be willing to say "I can't vote?  That's too bad.  Maybe I should do something about that."

I propose that people who don't even have their own lives in order should not be telling other people how to live.  It is also my position that, if you, aren't willing to pay for a program or a war, then you don't really care enough about it to stop it.

So here's the solution, broken down into its different necessary components.

  1. Prohibit taxation of any kind in any amount by any level or branch of government.
  2. Prohibit voting of any kind other than the one specified at end of this list.
  3. Donations to the government can be made pending a the satisfaction of a condition.
  4. Every legislative proposal is resolved in so as to garner the largest total amount of conditional donations possible.
It's a Big Change
I know it's frightening.  It's tough for a lot of people because it challenges so many of the ideas that are beaten into our heads from birth.  The idea that everyone should get a say in how government works, for instance, is something that most people consider right and just.  For some people, it's even more frightening because they wouldn't get a say in how government works.

The bottom line is this: If you're not able to see why the above proposal would work better than what we have now then you're exactly the reason why it would.

Saturday, November 17, 2012

Why Does Everyone Keep Adding Words to the Second Amendment?

In the course of my life, I keep hearing people quote the second amendment as follows:
A well regulated Militia, being necessary to the security of a free State, the right of the people to keep and bear Arms, shall not be infringed.
Then they try to couple the militia clause to the right to keep and bear arms clause.  That is, they frequently make the claim that we only need to preserve the right to keep and bear arms in such ways as to support the creation of a well regulated militia.

First of all, if try to slice things that way, it parses as a comment or a supporting argument, not a constraint.  The constitution is clear: the right of the people to keep and bear arms shall not be infringed.  Period.  There's no "unless" in there.  There's no "so long as" either.  There's nothing that makes it okay to infringe upon the right of the people to keep and bear arms.

Nothing.

Now, you might say "Hey!  Wait a minute!  There are no other comments in the constitution!"  You'd be right and that still would not justify infringement on the right of the people to keep and bear arms.  In fact, as you'll see, searching for an interpretation of the second amendment that minimizes the amount of comments actually shows our government to be in a far greater state of infringement than merely restricting the right of individuals to keep and bear arms.

The obvious answer is that this is one of the more important issues.  For ages, it has been the case that tyrants start with the restriction of arms.  It wasn't just Hitler.  It's been pretty much all of them.  In one case, it was so bad that the people had to mutate Karate and Kung Fu into Taekwondo in order to dismount the horseback-bound soldiers who oppressed them.

People who fear an armed populace the most usually should have the least voice in how others are governed.  That, I think, accounts for the "being necessary to the security of a free State" bit; which seems pretty in-arguably to be a statement of intent  rather than a prescription or a proscription.

The other amendments in the Bill of Rights are all grants of multiple rights, not a single one.  Even the first amendment works that way.  If you consider that one part to be a comment, and look at how the rest of the constitution is written, you'll see a pretty clear statement that makes a lot of sense.

A well regulated Militia, /*being necessary to the security of a free State,*/ the right of the people to keep and bear Arms, shall not be infringed.
When you strip out the comment you are left with the following.
A well regulated Militia, the right of the people to keep and bear Arms, shall not be infringed.
In which case the proscription against the people's right to keep and bear arms being infringed is still in tact but there is another proscription that has been repeatedly violated over the course of US history: the right to maintain a well regulated Militia.

"How so?" one might ask.  "We have a National Guard!"

Indeed we do but it has been slowly reorganized to be continuously more "national" and less "guard."  That process is likely to continue until, ultimately, the National Guard is completely indistinguishable from the U.S. Army.  We're not there yet - the national guard still has some ties to its containing state - but we're working on it?

Why is that a problem?  Where in the second amendment does it say it shouldn't be a national militia?  To answer that question, we have to come full circle and re-instate the part of the amendment I earlier threw out as "reasoning" instead of law.  Instead of adding words, like typical Republicrats and Democans want to do, let's try just adding parentheses and color groupings to assist in parsing:
(A well regulated Militia, (being necessary to the security of a free State)), (the right of the people to keep and bear Arms), shall not be infringed.
If you look at it that way, it's really clear - like all the other amendments, there is no flexibility or wiggle room in its interpretation.  It is an ironclad statement with many protections:
  1. The state has the right to create a well-regulated Militia
  2. The people have the right to keep and bear arms
  3. Those rights shall not be infringed
I don't see how you could interpret it any other way.

Sunday, September 16, 2012

The Title of My Book Is Officially Updated - Need Help with the Blurb

The title of my book is updated (it's ovah heah).  I have to get them a better description.  Here's what I'm thinking...

Before the database world can get how it manages releases straight, it has to get its technical house in order by following the same path that "regular programmers" started on long ago.  One of the key activities that must be ported into the database world is test-driven development.  
Without test-driven development (TDD), there can be no agility and a software product is doomed to descend into an endless cycle of defect introduction and remediation.  With TDD, on the other hand, a product can be driven in the other direction-releasing faster and faster with fewer and fewer defects over time.
Test-driven development, however, is not just some practice that you can copy over to your database development process unmodified.  It is a discipline, a collection of forces and wisdom.  Essentially: it is a pattern for software development behavior.  It needs to be instantiated in the context of database development in order to produce its full effect.
This book does just that: it shows you one way to do true TDD in the context of database development, taking into account the parts that are the same as traditional object-oriented development and the parts that are different.
What do you think?

Also: Shame on you if you don't get the reference in the link title.

Saturday, September 15, 2012

Wilfred: Better the Second Time Around

...and most appropriately, might I add.

I've been watching the show "Wilfred" on Netflix.  The first time I watched it, I was all for the concept but I didn't really enjoy the implementation.  It wasn't the kind of humor that the commercials implied it would be.

Another case of expectations diminishing the value of a show, I guess.

Anyway, I gave myself some time to reset my expectations and watched it again.  Now I love it.  That last episode was fucking awesome.  I'm looking forward to Season 2.

Friday, September 14, 2012

Stupid Move Getting in the Way of Writing

This move from Bend to Redmond is kicking my ass as well as that of my ass.  I'm not sure I'm going to get Sleight of Mind #2 done by the eighteenth.  We'll see.

Thursday, September 13, 2012

Test-Driven Database Development: Unlocking Agility

I think there's a light at the end of the tunnel.  As I stated recently, I passed another milestone in the development of my book.  Today, I passed another one.  We've settled on the name "Test-Driven Database Development: Unlocking Agility."

The metadata are changed and flowing through the publishing industry.  Look for the change shortly and pre-order your copy today.

Wednesday, September 12, 2012

Auto-Revert and a Sense of Accomplishment

It's been one day since I set up our CruiseControl.net server to automatically revert changes that break the build and already I'm seeing an improvement.

The obvious thing I like is not having the goddamn build be broken for hours or even days on end.  However, there's already evidence of another side effect... one I expected but thought would take months to develop.

People are changing the way they treat the code base.  Time was, people were pretty "willy nilly" as to what they checked into the source control server.  Many didn't care if the build was red, how long it was red, or if they were the ones that made it red.  Now that's changed.

For one thing, if the build is red, you can't check in.  The system locks everyone out and runs one more build and test pass on any pending changes.  So the "no check in on red" rule is no longer a policy.  Now it's a thread in the fabric of our reality.

For another, there's no more "fire and forget" check-ins.  You're check-in is your responsibility.  If it works, fantastic.  If not, it's kicked back to you for fixing.  It just won't get in if it doesn't pass the tests.

Furthermore, your problem becomes everyone else's problem so there's a serious potential for some peer pressure.  If you and Joe check in at the same time and you break the build, now you own Joe's submission and are responsible for getting it into the source server.  If you don't, Joe might come knocking.

I was talking to a friend about it and they pointed out another force that I hadn't even considered.  This is probably the critical piece that made the auto-revert feature shape people's behavior so quickly.  Developers - especially old-school developers - get a sense of accomplishment when they check in some work.  That sense is largely unjustified.  You've accomplished something when you make an incremental change for the better, not just any old change.

Because the build-and-test cycle is less than thirty minutes long, the auto-revert feature has the property of providing immediate feedback on whether or not you actually accomplished something with your change.  In my friend's words: It removed the positive feedback associated with a bad check-in.  Pair that with producing some negative/constructive feedback (an email to all the leaders), and you've got a powerful behavioral modification tool.

Sunday, September 09, 2012

KDP Select and Short Stories

I have opted back out of the KDP Select program for Sleight of Mind #1 so this is the last day it will be free in the Amazon store; probably ever.  It ends up not making as much sense for short stories as it does for full-length books.

Sure, you get the free promotion days.  On the other hand, I could just post a .mobi file on my blog and maybe get fifty or sixty percent of the value those provide and be able to do it for as long as I like to make up for the lower value of a given free day.

The real benefit of the KDP Select program is the fact that your book goes in to the Kindle Lending Library.  That's a service wherein Amazon Prime members can borrow a book free for an unlimited period of time.

On the surface that seems great.  Readers read for "free" - meaning they paid for the service but don't actually spend any money on your book - but you still get paid.  Deeper analysis shows it to not be very valuable for short stories and here is why: You can borrow a book for as long as you want but you can only have one book borrowed at a time and you can only have one book borrowed at a time and you can only borrow one book per month.

Those two rules, mostly the last one, create a scarcity in the ability to borrow that makes it more like an alternative currency and less like a way to read for free.  If you have a unit of currency and you are deciding how to convert it into a useful product, you're probably going to want to do it in the way that simulates the best "exchange rate" possible.  That is, if you can only borrow one book a month, you're more likely to borrow a $9.99 book than a $0.99 book.

That means that, for people with expensive, book length assets there is probably some value to using the KDP Select program - a certain class of people, who are known to be heavy readers, can get your book for free and you get about half the royalties.  The price you pay is that your book is only available on the Amazon store.

I've already gotten some borrowing activity on Madness & Loss and the royalties on that are comparable to what I would have gotten if someone bought it.  That's fantastic.  Freeish to the reader.  Money for me.

On the other hand, if you have a ninety-nine cent asset like a short story, you get the ability to promote it for free - which you could ordinarily do yourself - and the ability to put it in the lending library - where nobody would want to waste a checkout on it.  The price you pay is that you can't put it on any of the other digital services or send copies of it to any reviewers.

So that's why I'm having the Sleight of Mind series exit the KDP Select program.  I may come up with my own "free for a certain period of time" plan when the 90 days is up and I will definitely start hitting up book review sites and other e-reader avenues.  I just can't see a good reason to put a short story in the KDP Select program again.  I can't imagine why anyone would.

My New Country Home

I've moved, recently.  From the "city," as people in Central Oregon think of it, to the country.  Truly the country.

I wasn't sure I was going to care for it at first.  I was dreading the commute and I was a little worried about the isolation and lack of services out here.  To reinforce this fear, I recently needed an emergency veterinarian and had to drive a half hour into Bend to get one.  That definitely sucks.

Turns out it's not so bad.  I'm sure there's an on-call vet closer and we'll find them.  The commute turns out to be not so bad and there are even some people I can carpool with to make it a little less bad still.  In addition, there are some really nice things about it.

In the country we can afford about five acres more land than we could in Bend.  That is, we can afford about five acres of land.  It's a nice little lot.  It even has a sound-facing slope we might use to grow grapes, if we can find grapes that like Central Oregon.

Our indoor/outdoor cat is really digging the new digs as well.  Five acres is a lot of roaming space with all kinds of new things to smell and a new kind of soil in which to roll around.  She still hasn't figured out what her territory is going to be but I imagine the neighboring dogs will help her define those boundaries.  I knew this would matter to me, our cats' quality of life is important to us.

We're on top of a knoll - that's why we have a south-facing slope - so we have a view in all directions.  I didn't think I'd care about that but it appears I do.  To further improve upon things, the house is two stories with the living area on the second story and a wrap-around deck so the view is enhanced by being above the juniper trees.

Out here, I can afford a much bigger place.  The living area here is just shy of the whole house we had in bend.  Then downstairs area has a real two car garage; meaning there's two doors with ample room to fit two large American cars.

Even better, there's a very large shop.  I'm not really a "shop" guy but my wife and I have a plan to turn that into a work out/recreation room.  The wrap-around deck also has two enlarged areas where tables, chairs, etc. can be put.  That means we don't have to store as much of our outdoor junk in our garage!

Better still, there are a couple of small out-buildings for storage, one of them with power and phone that I'm considering turning in to my home office.  I'm not sure about that, yet.  It could get chilly in the winter.  If nothing else, those sheds are about as much storage as we had in our old garage.

So, all told, the number of square feet we have to put our junk in has dramatically improved.  I didn't think that would matter either but I was wrong.  Having a nice, light, open space as a sanctuary in which to work with lots of potential for development ended up having an immediate and dramatic psychological impact for the better that outweighs the drawbacks many times over.

Saturday, September 08, 2012

Another Milestone

I just passed another milestone on the journey to getting my first printed book published.  Test Driven Database Development: Unlocking Agility has finished it's developmental review pass.  I think I have some front matter to write or get written but otherwise, it's on to the next step.

It looks from Amazon, like the hope is to release this book toward the end of January, 2013.

Friday, September 07, 2012

Sleight of Mind #1 Is Free All Weekend

Today marks the start of a three day promotion wherein you can buy Sleight of Mind #1: Crashing the Party for the low, low price of $0.00.  Go get it, then read it, then take this short survey.

Thursday, September 06, 2012

Tuesday, September 04, 2012

Better Software Conference East

I'm excited to announce that I will be speaking at the Better Software Conference East.  The subject will be test-driven and object-oriented database development, which is not unlike the subject of my upcoming book.

The talk is about an hour long and, best of all, it's going to be in the afternoon.  For once, I'll have a lecture where I'm not dragging my ass and where the attendants aren't predominantly hung over!  This is a big thing for me so pretend to be excited for me even if you aren't.

Monday, September 03, 2012

My Amazon Author Page

My author page on Amazon is up and running.  There's no way to organize the page so as to create a division between fiction and non-fiction; otherwise I would give two links.

Anyway it's go an easy to remember URL:

amazon.com/author/maxguernseyiii

On that page, you can see my current list of offerings - both self-published and through a traditional contract.  You can also see a list of upcoming speaking engagements as well as aggregations of my blog, twitter account, and video feed.

Excited About Upcoming Book: Test Driven Database

There's been some serious progress on my upcoming book on the subject of test-driven database development.  Amazon might not have all the metadata for it, yet, but it's updating.

Today, I finished my developmental editorial pass and now it's on to the next phase.  I really have to say how awesomely supportive the Addison-Wesley group has been.  It's nothing like writing on your own.

Sunday, September 02, 2012

Please Fill Out My Short Questionnaire

Thanks for all your support, everyone.  Yesterday was a big success, getting even more copies out there in the world than before.  It's getting close to time to write episode #2 and I'd love to have as much actionable feedback as possible so, if you have read Sleight of Mind #1 and haven't filled out this very short questionnaire, please do it now.  Your feedback is what I depend upon to improve my offerings.

Thanks.

A Change in Policy

On the advice of other people who've successfully sold self-published stories, I'm going to stop doing the "free every Saturday" thing.  You get a limited number of free promotion days and apparently they work better if done consecutively.

So I'm going to switch over to doing a weekend (Sat-Sun) free, followed by a long weekend (Fri-Sun) free.

Just don't want anyone to be surprised.

At least, not by policy changes.  :)

Saturday, September 01, 2012

Less Than an Hour to Get Sleight of Mind #1: Crashing the Party

There's less than an hour left but, until the day is over, Sleight of Mind #1: Crashing the Party is free. If you don't have it or you picked it up before I added Daniel's field notes, go grab it now.

...and, when you're done reading it, don't forget to take the short survey that helps me improve this product.  You'll find it here.

How to Get an Updated Version of Sleight of Mind #1: Crashing the Party

Today is a "free promotion day" for Sleight of Mind #1: Crashing the Party. That means you can get it for free. It also means that, if you got it before I added Daniel's field notes, you can get an updated version. Here's how I did it:

  1. Go to the Kindle Management Site (for me, that was at https://www.amazon.com/gp/digital/fiona/manage)
  2. Delete Sleight of Mind #1: Crashing the Party from the Kindle library (use the actions... button)
  3. Delete Sleight of Mind #1: Crashing the Party from my device
  4. Wait a little while (15 minutes for me)
  5. Go and "re-purchase" the latest version of the story - today that's free, so your purchase price is nothing
That's all it took for me.  If you have another method, I'd like to hear about it.

Sleight of Mind #1 Is Free Today

Sleight of Mind #1: Crashing the Party  is free today.  If you haven't got it, go grab it now.  When you're done, remember to take this five question survey.

If you downloaded Sleight of Mind #1 before I added Daniel's field notes, be sure to get the latest version now.  It won't cost you anything and you should be able to update your version without involving support - though I can't guarantee that, as I don't work for Amazon and am still learning their system.

Friday, August 31, 2012

Don't Forget!!!

Tomorrow is another free day for Sleight of Mind #1: Crashing the Party.  Remember to go get it and, when you're done reading it, remember to take this short survey.

If you downloaded Sleight of Mind #1 before I added Daniel's field notes, be sure to snag the latest version tomorrow because you can get it for free and, hopefully, without having to involve Amazon support.

An Example of What BitmapCompare Can Do

Here's a little taste of what BitmapCompare can do for you.  No only can it do slightly fuzzy comparisons that filter out the noise introduced by, say, a lossy compression algorithm.  It can also tell you what is wrong with an image.  

Expected:


Actual:

Actual marked up with errors (different kinds of mark up):



So when you are using it in a test, you assert on whether or not the images are equal and you report the marked up actual to cue you in on what's wrong.

Thursday, August 30, 2012

Slowing Down the Pace

I've obtained some feedback on Sleight of Mind #1: Crashing the Party and have acted on that feedback.

One of the things people asked for was a slower pace.  That always pisses me off when I'm reading or watching a show.  I want people to get to the point and then move on to the next one.  On the other hand, I'm not reading these stories; I'm writing them.

Another thing that people asked for was a clearer sense of transition between scenes and the passage of time  between scenes.  That I can understand.  I'm trying to write these stories in kind of a Hollywood style - short scenes with frequent breaks.  However, Hollywood has something on me: you can see when the setting has changed dramatically, whether it's a change in scenery or the time of day, it's immediately visible to you when there's a new scene.

I've entered a new edition of the first episode into the Kindle store.  The story text is exactly the same.  The only difference to the text in edition 1 is that I've corrected some formatting issues that appear on the original Kindle and I've deleted the trio of asterisks that indicate a scene cut.

In the place of the scene cut markers, I have added some of Daniel's field notes.  Of course, it would be cumbersome to saddle the story with an entire field journal, so these are just a few choice entries indexed at times in between scenes.  It should be pretty obvious how they work.

To give you a feel for how the field notes work, here is a sample:
02.07.2012 1644
Chopper landing now.
 - Col. Baker- doesn’t want me to know 1st name
 - Frank Hansen-big guy
Couldn’t get everyone’s name... too loud & group not forthcoming.  Would have been nice to know.
Jerry fucked up - looks like we have to run.
They aren't meant to be the story.  They are just meant to slow the story down and facilitate the transition between two scenes.

As always, I'm interested in what anyone has to say about these and don't forget to fill out this five-question survey when you're done reading.

Thank you.

Wednesday, August 29, 2012

Looking for BitmapCompare Beta Testers

Quite some time ago, I wrote a utility I called "BitmapCompare."  My intent was to enable test-driven graphics.  That is, I wanted a compositor to be able to produce a picture specifying how something (a web page, a GUI control... it doesn't really matter) should look.  Then I want to be able to turn that into a test.

The last version of BitmapCompare was marginally inflexible and I was trying to release it as a commercial product.

I may eventually want to go commercial but I don't have the time to put into it right now, so I'm going open source/redistributable for the time being.  I'm using the MIT license.  This version and anything I do in the immediate future will probably stay under the MIT license.

The new version is a lot more flexible than its predecessor.  You can swap in how pixels are measured and how they are compared, in addition to how they are marked right or wrong (as you always could).  There are some basic fuzzy measurement and comparison tools that let you do things like blend together neighboring pictures and define a radius within the color space for determining equivalence.

Before I figure out where and how to deliver BitmapCompare, I was hoping to get a few people to try it out and let me know how they ended up using it, what the problems were, etc.  If you are interested, let me know.

Tuesday, August 28, 2012

What Do You Think?

Would it give away too much if I filled in the fields on Sleight of Mind #1's shelfari page?

I wonder if there's a way to do that without spoiling the story.

Monday, August 27, 2012

Where to Go Next?

Well, I've received my first piece of actionable advice.  It gave me a really good impression of where the weaknesses in episode #1 of the Sleight of Mind series lie.  What I don't have a good handle on, yet, is the severity of those weaknesses.

Now I have to decide whether to go back and improve the first episode or use the data to strengthen the series as I add #2.  Without that measure of severity, it's a tough choice to make.  The answer probably lives in a rich body of net promoter score survey results.

To that end, if you've read "Crashing the Party," please do me the favor of answering this five question survey.  Only the first question is required to help me make my decision but the other four will help strengthen the story line and delivery mechanisms as a whole.

Thanks,
Max

Sunday, August 26, 2012

Ancient Adapters: The Expression Statement

What is the nature of the adapter pattern? Simply put, it's to take a thing that does the right stuff but fulfills the wrong interface and give it a way to fulfill the right interface without changing it at all. This is typically accomplished by introducing an intermediate entity.

In an object-oriented design, you would typically run into a problem that screams "adapter!" when you have a class that consumes interface X and another class (Y) that does a similar job as all variants of X but which does not adhere to said interface. A common way of addressing this problem would be to introduce a new class, Z, that is a variant of abstraction X and delegates to Y.

As with all patterns, traces of this wisdom can be followed into what we software developers would consider to be antiquity: the seventies. It probably goes way farther back than that.  In the case of mechanics, it's been around for as long as complex machines.

Compilers tend to have rigid concepts surrounding the syntax they process. For instance, in C, a block can only have as its children a certain number of things: statements, declarations of variables, etc. Inside a statement, you can do all sorts of things. For instance: you can assign an expression to a variable.

Let's imagine we have a grammar something like the following:

method:
  "method" identifier "{" {statement} "}";
statement:
  (variable_declaration | assignment | return);
variable_declaration:
  "var" identifier ";";
assignment:
  identifier "=" expression ";";
return:
  "return" expression ";";
expression:
  (identifier "(" ")" | identifier | expression "+" expression |
   identifier "+=" expression | "(" expression ")" );

In this case, an expression allows you to do a lot of things.  It allows you to invoke a method, sum two things together, reference a variable, increment a variable by some amount, or logically group a sub-expression.

Sometimes, however, an expression is not a means but an end unto itself.  For instance, you may want to invoke a method in order to create a side-effect.  In those cases, the expression is really doing the same job as a statement: it is a unit that declares a single step in an algorithm.  The fact that we already have a way of describing such actions that we call "expression" is incidental.

Enter the "expression statement" - a very common feature in almost any language.  An expression statement allows you to leverage all the expressiveness built into however you allowed expressions to be codified when building a first-class statement in an algorithm.  Let's look at that in pseudo-grammar:

expression_statement:
  expression ";";

So simple.  So powerful.  Now an expression can be used as a statement.  As we expand the variation behind the "expression" interface, we automatically gain the ability to treat new variants as statements.  In essence, this is a very early adapter pattern and evidence that patterns have been with us since the beginning.

Well that Went Well

Yesterday, I got quite a few downloads of Sleight of Mind #1: Crashing the Party.  That's good.  That's the goal of a free day.

If you were one of the people who downloaded and read the story, I'd love to know what you think of it.  I know it's hard to tell someone to their face what you thought, so here's an anonymous survey you can use instead:

Sleight of Mind #1 NPS Survey

If you're the sort of person who doesn't like giving negative feedback to someone's face, you can feel super secure using that link.  I've distributed it via so many different channels, I can't even keep it straight, so there's no way I'd be able to trace a critique back to a particular person.

Saturday, August 25, 2012

Why Mystical Science Fiction? Part 3: I Like to Challenge Others


In Part 2 of this trilogy, I explored how I think the mystical science fiction genre chosen for Sleight of Mind is more challenging, for me personally, than plain science fiction.  In this segment, I'll outline reason #3: why I think it might be more challenging for you, the reader.

I'm sure a lot of people who know me think this ought to be the number one reason I chose.

There are those who say stuff like "any sufficiently advanced technology is going to look like magic."  I'm not so sure that's true anymore.  I mean, sure, a tribal people who've only ever used a bow and arrow might see a flying machine and think "magic" but would the modern people of this world see highly advanced technology and decide it was magic?  Would you?

I think we've completely tipped the scales in the other direction.  I think we are now sufficiently advanced that we would assume magic is actually just futuristic technology.

So the third reason - and maybe this really is the most compelling reason but it is still my tertiary driver - I chose this format is so that I can try to expand the minds of my readers.  I want to find that edge... the place were you can't decide if a character is grappling with an extremely advanced mechanism or the product of an ancient rite.

We're so full of ourselves, now.  I see self-proclaimed scientists resting on some assertion he's made with the claim "there are things we really do understand about the universe."  As a species, we've rounded up whole groups of nerds, placed them in ivory towers, and given them license to play around with mathematics and prescribe how things supposedly work.

...and most people just accept it...

I want to take that edge between "well governed reality" and "that's just got to be magic" and make us all look at it in the hopes that we can take a step back from the certitude of science or religion and admit that we can't really know how or why anything works.  We can only keep making better tools that predict which responses will be generated by which stimuli.

Duck Typing and the Timeliness of Type Checking

Listen. You like duck typing (implicit typing). I get it. I kind of like it, too. At least, it's growing on me.

That doesn't mean you have to give up a compiler. Imagine this scenario. You have a language. That language allows you to define a class thusly:

class Runner
  method RunSynchronously(z)
    z.Start()
    return z.Stop();
  end
end


Then you have some other classes, of which instances are passed into the method defined above:


class A # null object pattern
  method Start()
  end

  method Stop()
    return true
  end
end

class B # normal implementation
  method Start()
    workReceipt = ThreadPool.StartWorking(someBehavior)
  end

  method Stop()
    return ThreadPool.WaitForComplete(workReceipt)
  end
end

class C # asynchronous no matter what implementation
  method Start()
    ThreadPool.StartWorking(someBehavior)
  end

  method Stop()
    return false;
  end
end
How could that be compiled? How could it be statically type checked? Nobody defined an abstraction, right? Wrong.

 An abstraction was defined implicitly and those objects do conform to it.  The Runner class expects its z parameter for RunSynchronously to have a Start method and a Stop method.  That is a de facto interface.  There is no reason it cannot be enforced by a compiler.  There are lots of reasons why it should.

Maybe when I get some more free time, I'll look into it.

Friday, August 24, 2012

Why Mystical Science Fiction? Part 2: I Like a Challenge

In Part 1 of this little trilogy, I outlined the three reasons why I chose mystical science fiction as the genre for the Sleight of Mind series instead of "just" science fiction and I expanded on the first reason.  In this segment, I'll explore reason #2: because interspersing mysticism and technology is more challenging for me.

Ordinary science fiction is about stuff that is easier for me to grasp and understand: technology, mechanisms, rules, and learning.

Of course, there are interesting decisions.  Do you extrapolate from modern scientific understanding or do you stipulate a paradigm shift?  Do you roll time forward, backward, or weave your story into history?  Are humans more advanced or less?  How has society changed as a result of these changes?  How much has society shaped technology?

Those are the same basic questions you have to answer in any book, story, or series.  They're good questions to answer and can produce a fun read.  I like to write at least as much as I like to read, though, so I want the story to be fun for me to create.

For me, a world in which things cannot always be codified scientifically is one that is far more challenging to imagine than one in which our species or another has just churned out another five thousand generations worth of improvements on various gizmos.

That challenge makes the story more fun to write.  How do I balance these two different kinds of forces?  That's hard.  How do I reconcile them?  That's even harder.

Like I said, I am not betting the farm on people buying this book.  I'm mostly writing it for me and I'm hoping other people enjoy it.   For that reason, I embrace the big challenge of this genre choice along with some other challenges that I have typically skirted; namely developing personal relationships between characters and exploring character's feelings.

Stay tuned, tomorrow is the first day you will be able to get Sleight of Mind for free on your kindle and also the day I explain why I think this subject is more challenging for you, the reader.

Thursday, August 23, 2012

Why Mystical Science Fiction? Part 1: It's a Big Universe

Why is Sleight of Mind a "mystical" science fiction series?  I could have done it as regular science fiction and probably tapped in to a wider audience.

There are three reasons:
  1. It's a big universe.
  2. I like a challenge.
  3. I like to challenge others.
In this segment, I'll start by exploring the first reason.  Tomorrow, the second and, on Saturday, I'll deal with the last one.

I like technology.  I also like the idea that the universe works in ways we haven't even begun to perceive, let alone measure and understand.

Science fiction is often about a distant time in which one of the key species has garnered an understanding of the universe that allows them to do things we cannot do today.  Not always, but pretty frequently.  What if the advanced understanding ends up actually being that we cannot possibly understand the universe? What if there's another way of doing things that our fairly scientific minds just tune out?

It's not like I think nobody has ever had an idea like this before.  It's more probable that my non-fiction writings are original than these works of fiction and, even then, the chances that someone, somewhere hasn't already at least toyed with my ideas are pretty slim.  Ideas are only original a maximum of one times and the probability that said time was inside any given person's head is almost nil.

It's just that I think the idea of technology and mystical forces interacting is interesting for me to explore.  If it's interesting for me to explore as an author, it might be interesting for you to explore as a reader too.  So, even though the oddness of the story might be off-putting for a lot of readers at first, I'm hoping that it will ultimately develop into more of an appeal than a detractor.

Since I make a good living as a software developer, I can afford to wait and find out.

Stay tuned.  In part 2, I'll tell you how I think this is a more challenging subject for me than ordinary science fiction.

Tuesday, August 21, 2012

Why Is "Crashing the Party" Only 53 Pages Long?

There are a lot of e-books out there.  A lot.  There are Kindle books that are six-hundred pages long that only cost 99 cents.  So why do I think I can make it with a book one tenth as long for the same price?

I'd like to think that part of it is because I can write.  Maybe I'm full of shit on that.  If so, the market will tell me.  There's another, deeper meaning to this trial for me.

Anyone who knows me - who really knows me - knows that Lean Thinking is really important to me.  Some have even called it my religion.  The core principal in lean thinking, as far as I interpret it, is value.  Understanding what value is to your customer is absolutely critical to the success of a product.

A tool we use to zero in on value is market feedback and that's the first place that the structure of Sleight of Mind series and lean thinking tie together: by releasing part of the story and getting feedback, I'll have a chance to improve the product before I release subsequent portions.

Shaping the product this way also ties in with the flow and pull principles as well.  I'm sure a particular friend will tell me that, if I think about it long enough, I'll be able to stretch the value stream and perfection principles over this idea as well.

That doesn't mean I'm a total douche bag - although it doesn't mean I am not either.  I don't intend to let the market tell me how the story should go, who should live or die, who should win or lose, or which characters should change their nature.  I'm already pretty confident in my abilities to make those decisions on my own.

What I do want to learn from the market is the weight it places on the following things:

  • Descriptions of people
  • Descriptions of scenery
  • Unveiling of motivations
  • Connecting the plot dots for you
  • Making you connect the dots on your own
  • Etc.
This is an experiment.  Maybe it will work.  Maybe it won't.  It only costs my time for me to find out at this point.

Sunday, August 19, 2012

Sleight of Mind #01: Crashing the Party


I've released my first work of fiction as a Kindle e-book.

Sleight of Mind is a series of short stories staring Daniel Vaughn.  In the first episode, he accompanies a group of soldiers on a mission to kill an enemy of the United States.  His role is to interpret cuneiform writings in which instructions on how to proceed are encoded.

As time passes, it becomes apparent that this is more than just a covert mission to kill a terrorist and the group realizes they are up against something they don't really understand.


The current plan is for it to be free every Saturday for the next five weeks and 0.99 USD the rest of the time.  It is also available for free to Amazon Prime users by way of the Kindle lending library.