Boothby, a personal database

I have this problem where friends of mine keep having babies.

I don't know if you've been to school, but if you have you might know that the mathematics of having babies is pretty scary. Take rabbits. You start with two rabbits, leave them alone for a little while and next thing there's a heck of a lot of rabbits. There's an exponent involved. It's all quite sinister.

The trouble with this growing number of babies is that I'm expected to remember all their names and genders and ages and so on. But while their numbers are exponentially growing my brain is not undergoing so much as linear expansion. If anything it's contracting of late.

And while there's already places online for storing these 'social graphs' they fail miserably at the kind of remembering I need help with and are more hellbent on serving me ads than easing my mental burden.

Then I saw that Steven Frank just implemented something similar to what I wanted, he called it Dossier, so rather than implementing something from scratch, I could steal all his ideas and re-brand them as my own.

Hence I wrote this thing, Boothby.

It's for storing the things you can't remember.

Try Boothby Online Right Now.

Later I might make it a little standalone kayak app, that you can install on your own computers, and sync via dropbox etc.

Or I could charge you 10 bucks a month to grant you access to your own private online instance. That's the business to be in.

 

The Nimble Bundle

To celebrate John Venn's 180th Birthday, we're having a Month-long Mega-Month of Set-Loving Madness.

For the rest of August, NimbleSET and NimbleText will both be available as part of the special "Nimble Bundle".

If you buy the bundle you'll save $10 over what you'd otherwise pay. That's a handy piece of cash to take home.

Venn Diagram showing NimbleBundle as the intersection of NimbleText and NimbleSET

Or to put it another way. When you buy NimbleText, for just $5 more, you get NimbleSET thrown in.

Here's a cartoon of Me, throwing NimbleSET in for $5.

cartoon of me throwing in nimbleset for $5

I'm not sure why I look so angry. Maybe because it's so cheap. I'm angry to be throwing away my work for such a steal, yes that's it.

Now, just for fun, try saying "Nimble Bundle" five times quickly. "Nimble Bundle, Nimble Bundle, NimbleBundle, Nindle Bumble, Bumble Lindel."


You're still here? Ah well, if you're going to keep reading you may as well stick around while we discuss the behavioural economics that underpins the things I've attempted above.

First let's discredit the stated premise: this has nothing to do with John Venn's Birthday. Yes, NimbleSET is software for Venn-diagram-style comparisons of lists... but why would I know or care when the man's birthday is? I'm not even facebook-friends with the guy. No, the John Venn thing is cover for a different motive. I happened to see a google doodle about him and thought it would be a plausible 'angle' for the psycho-swindle I wanted to inflict on you, my good friends.

If it's not about John Venn then what is it about? Well, money, of course, and my desire to separate you from yours, making it mine forever. But what's the specific psychology of the situation and why is it likely to increase the fatness of my wallet?

When I first put out NimbleSET (back in January) I saw a sudden and permanent *decrease* in the sales of NimbleText. And it wasn't made up for by sales of NimbleSET, not nearly. I tried to ignore it, and tried to explain it away, but I was really at a loss to understand it. Until I read about the decoy effect and the idea of decoy products.

The decoy effect is a well tested phenomenon where:

"consumers have a specific change in preference between two options when also presented with a third option that is asymmetrically dominated."

It wasn't exactly the decoy effect, but reading about that was enough to give me a hypotheses about what was happening. The purchase page went from listing 1 product for $20, to listing two products: 1 for $20 and 1 for $15. The cheaper product (NimbleSET) suddenly made NimbleText look expensive!

So now I hope that by putting a third product in, that is clearly better value than either of the others, it will dominate the sales. So under this latest hypothesis, both NimbleText and NimbleSET are the decoys. The best deal is the bundle, and you'd be crazy to buy anything else. If I'm wrong, then, no problem at all, I take the Bundle off the market and head back to the psychology books for futher hints.

I'll keep you informed, so please join me for the ride! And if you have other, better theories about what's going on, please tell me. It's all a mystery to me.

 

Need an idea? Let me give you one: giveneed.com

I had this idea for a web site, and even checked the domain, it's still available!:

Give Need -- giveneed.com

Here's a mockup of the minimum viable product:

i can give... i need... simple website

I guess the idea is, anyone can give and anyone can need. Spam and vulgarity gets flagged and removed quickly. Givers and Needers build reputation by being reliable and so on. Geo-location is important.

I don't have the time, but If you want to do this, go ahead.

Here's the html for the mvp mockup.

I was wildly enthusiastic about the idea for juuuuust long enough to create the mockup using zen-coding (which I recently re-discovered) and where i wrote most of the mockup just by typing:

html>body>table>tr>td*2>input+ul>li*3

Like I said. If you want the idea, it's yours. I'm still busy building All These Other Empires.

 

A Dashboard For Everything and Everything on a Dashboard

I tweeted the other day:

I have too many dashboards, so have decided to create a dashboard of dashboards. #

Completely serious.

Dashboards are one of the few situations that solve this pattern: "The only solution for too much $0 is more $0." Like science. (Unlike violence, ditch-digging, etc)*

To help manage NimbleText, I've currently got three dashboards that I visit all too frequently.

First, there's google analytics. I mostly track where visitors are coming from, and whether they're doing the things I want them to do (download nimbletext, visit the pricing page etc.).

Second, there's the (newly created) page where I analyse samples of the patterns that people are creating in the online version. (This is a bit of a privacy minefield, so I've added a note about that here).

Then there's 'dash', the recently created dashboard where I have a bunch of information about sales and product activation.

And currently in the works is another dashboard for managing A/B tests. It will probably be at AirBadge.com, my favorite domain that is currently under-utilised.

That'll make a total of four dashboards. What the hellz!? No one needs four dashboards! Even Dashy McDashman, the dashing darling of Dashville only needs three!

So I plan to make another dashboard that gathers together all the information from the other four. (It'll be at AirBadge too.)

To grab data from google analytics, it will use whatever rest-ful services it can get its hands on. To expose data from my own sites, I'll probably create some jsonp endpoints at each of those sites. Oh, we can call them micro services, and feel modern and clever.

The new dashboard will be basically a page with a bunch of little widgets (<article class='panel' >...). Each widget will have some data attributes that describe how to grab the data it wants. Some widgets will be charts, some will be tables. Some will automatically refresh. They'll probably be laid out using isotype which I've used before. Some could have live information, using that signalr business.

Darling developers of the Mac world, Panic, have created a beautiful dashboard product called Statusboard. My goal is to have almost none of the features of Statusboard, but all the beauty.

* At this point while writing the article, I wanted to list all of the words that do or do not suit that pattern. To accomodate creating and sharing that list, I realised NimbleText Live needed a way to share a pattern, something in the style of JSFiddle. (Richard Mason suggested this feature just last week). So I had to stop writing this article and add that feature in. It's there now. Look for the little Save icon.

Here's some other patterns I've created: Atwood's Law versus Murphy's Law and other correlates. Superhero name generator.. Etc.

 

Internet's Last Classic ASP Website Finally Upgraded

I've now been blogging at this site for more than 10 years. I meant to mark the anniversary but—whoops—it slipped right by.

Somewhere in that 10 years my site seems to have become The Last Classic Asp Site Left On Earth. So at last I decided to move to a new blogging engine.

I looked at ALL the existing blogging platforms on the planet, and I couldn't find a single one that could satisfy my One Very Simple Requirement:

1. It must be written by me.

So, eventually, I decided the only solution left was to write my own!

Okay, there were a lot more requirements. I started to write down what the requirements would be if I were paying someone to write the site for me. I soon realised I'm one of those clients from hell

It needs to pop. It needs to be now. It should smell like success. Use plenty of comic sans.

(the real feature list is included at the foot of this article)

The old site used a bug-ridden custom blog engine, code named 'Smart Jelly', the only 'Classic ASP' site I ever wrote. It was little more than a textarea where i pasted some raw html, so that it could be injected into a static template and saved once and for all. Edits after that were done by hand.

Finally, starting a-fresh, with a decade of experience, I knew I could over-engineer this one to death. So I settled on a design that is essentially a text-area where you paste an article, so that a light sprinkling of MVC code can put the article into a template, cache it, index it, etc.

I used Stashy as my ultra-lightweight No-SQL data store. I used Ben Foster's SiteMap article and code to build the sitemap. And other than that, I just avoided as many bad design decisions as my time would allow.

With this gargantuan task out of the way, I can finally move on with my other most pressing items. A new NimbleText release. A new product. But if you spot any errors, let me know.

Appendix A: rules I tried to follow.

Design Requirements...

  • Simplicity
  • Semantic html
  • Responsive to smaller screensizes (25% of visitors are from mobile)
  • Clear fonts.
  • Should last 20 years

Nothing 'fashionable' -- examples:

  • flat design, (long shadows)
  • parallax scrolling
  • long scrolling
  • sticky nav
  • 'impressive' transitions
  • client side everything
  • avatars in circles
  • giant header images.

Maybe...

  • Continuous scrolling
  • Playful
  • minimalist
  • dark
  • svg

Definitely not...

  • Bootstrap (upgrades are pain.)
  • Disqus.
  • A database (too big a dependency)
  • Pages heavy with js widgets
  • little notes that popup in the lower right corner when you scroll down
  • pop-overs that get in the way of the article and say things like "Hey! You're trying to read the article, you should buy this other thing"
  • Auto-play embedded sound and video advertisements.
  • Lobster web font.

Features

  • all old urls respected. (via permanent redirects where necessary)
  • articles
  • comments
  • fast to load.
  • Pages not heavy with js widgets.
  • rss
  • sitemap.xml
  • complete archive
  • categories
  • as few dependencies as possible. JQuery sure. Others? No.
 

The dumbest thing that could possibly work

I just listened to a hanselminutes episode where he interviewed John-Daniel Trask (a kiwi!)(yay kiwis!) from mindscape, makers of raygun.io. (yes that raygun, beloved of my arch-nemesis, that chief amongst villains, Troy Hunt)

I recommend you give it a listen, and at 1.5 times playback speed it only took 20 minutes of my finite lifespan.

I like the idea of making a product out of doing some very thin slither of a particular 'vertical' -- in this case raygun is a very deliberately tiny part of what application companies need.

Another example would be octopus deploy by my personal hero Paul Stovell (and a growing team of geniuses).

Revision control companies and bug tracking companies are also examples, but they tend to have business models that are all about moving beyond their initial niche. Maybe they're just a bit more evolved.

So what's the tiniest possibly slither of a well known vertical? For example in the bushwalking world: you always put your shoes on before you go for a walk, and part of that is doing up your laces. So you could have a specialty company that ships a fresh pair of ethical artisanal hand-woven opinionated boot-laces to serious bushwalkers, once a month. Focus on something narrow enough that you can be indisputably the best. The best by a mile. Not just pretty good.

(aside: JDT pointed out that since raygun.io doesn't try to do everything they need to offer integration points. They have plugins e.g. for github, trello, slack (slack... which I need to look into more).)

I guess twitter is an early company doing this same thing.... just the "current status" feature of an instant messaging app, and nothing else.... and "yo" would be the latest example of honing messaging down to the least features possible.

This got me thinking about potential business ideas when the age old question occurred to me: "What's the dumbest thing that could possibly work? No, even dumber than that."

And this is what I came up with for today:

"We bill you."

It's basically a SaaS where you choose among 3 great plans:

The free plan
has no features, and we don't bill you. This is only available for a limited time.

The beginner plan
$35 per month.
For that you get one bill per month, for $35.

The expert plan
$100 per month.
You still get one bill per month, but this time you get billed for $100.

We also offer "Enterprise" level.
Prices for this are not available on the website. Talk to us, and we'll see what we can arrange. For example we might bill you extra some months, and at times, not bill you at all. Overall, we would still guarantee to bill you as much as you can psychologically withstand before breaking down completely. And we get your car.

Crazy enough that it just might work?

All of these lucrative domains are available if you want to get in on the ground floor for equity and just a one time cash investment plus ongoing hours for development, support, data entry, foot rubs etc.

	sendthecash.com	 		youpayusnow.com
	youwillpaymenow.com	 	youpayitnow.com
	nowyoupayit.com	 		gopayitnow.com
	gopashcash.com	 		gopaymoney.com
	giveoutcash.com	 		givemoneyout.com
	handovermoney.com

and as a bonus this domain is also available:

	howaboutpaying.com

It would need good stock art of course and i'll need an upfront investment to cover that too.

Wait a second. 'gopashcash.com'? 'go pash cash dot com...?' What was i thinking? that's too good to share.

Getting back to the idea of niches within niches: what great and useful little ideas have you got to share?

(One serious little idea I've got for a niche within a niche: a wrapper for chocolatey that makes it work inside the enterprise. I have given it no more thought than that. I picture a chocolate. And it is wrapped up. It is a chocolatey wrapper. And you are inside the enterprise. And it just works.)

 

If Time Types were like Spatial Types

Spatial types in SQL Server comply with OGC standards, and are nothing like the other types in SQL Server.

Geography types (mapping types) have a long history and an industry of their own, long before they turned up in our databases. This makes them special. How special?

What if DateTime was implemented in the same way as Spatial Types?

Large corporations would have a Chronology Department, or at least a Chronology Team, and it would employ professional Chronologists. Chronologic Information Systems (ChIS) would be different from databases, and the introduction of chronological concepts into a database would only be acceptable if you implemented the full set of types and methods recommended by the Open Chronological Consortium. (Picture a Mafia, only with pocket watches.)

If any department is discovered doing work that involves date and time, they would be referred to the Chronological Information Systems department, who are the only people in the company authorised to make Chronological Products, such as calendars, schedules, timelines and other time-related artefacts. If you would like to display a form that includes a date-time you won't have any software that does this on your own machine, and will need to ask a Chronologist to help you out. They will also give you advice on the use of colours. For free.

Once Date and time concepts do make it into the database, you might be surprised. There would be no DateTime type. No no, that would be laughably simplistic and not something that real Chronologists would ever consider worthy of existing on its own.

Instead there would be one umbrella type called a chronology, and a chronology can contain any of the following:

  • A point in time
  • A range in time
  • Recurrences of the above
  • A collection of any of the above, including collections of collections.

A chronology object has its own Calendar identifier and UTC offset. There are ways of converting between these, but only theoretical chronologists really understand them. Your average working chronologist pretends to understand this stuff, but never uses it.

The chronology object includes standard functions for all of the operations that a chronologist would need to achieve:

The total duration of a recurring appointment, intersected with a time range? Oh you mean good old:

Chrono.STDuration(chronology::STChronoFromText('RANGE(2014-01-01 00:00:00.000,2015-01-01 00:00:00.000)', 1337))

The length of time by which two meetings overlap? Ah, you mean:

Meeting1.Chrono.STOverlap(Meeting2.Chrono).STDuration

And so on.

As always I'd better stop myself now, since...

Wally, holding a coffee cup, says 'I'm having trouble keeping my clever schemes separate from my sarcasm.'

"I'm having trouble keeping my clever schemes separate from my sarcasm."

(This week's Just Wally cartoon 'inspired' by this Dilbert cartoon.)

 

The Canine Pyramid

UX,

So a computer guy is laid off from his computer job. He soon gets sick of sitting around at home and he decides he wants to go for a walk everyday. There are a lot of physical and psychological benefits to going for a walk every day. He notices people taking their dogs for a walk and realises that taking a dog for a walk is a great way to ensure you get regular exercise.

So he makes up a small flyer: dog-walking as a service. And he walks down to each of the houses in the street that has a dog and drops a copy in their letter box.

The next day on his walk he walks even further, covers the next three streets. If a house doesn't visibly have a dog, he walks past them. If they do have a dog he puts a flyer in their letter box.

The calls start coming in thick and fast. He is inundated with more dogs to walk than he can service himself. He institutes strict rules, for maximum quality. No more than two dogs on a walk. $30 a half hour or $50 for a full hour.

He formulates a new plan: he goes to each of the houses that don't have dogs, and puts different flyers in their letter boxes: Want regular exercise? Become a dog walker! Great pay, great lifestyle, it's the casual social exercise job you've been looking for. Why pay money to exercise when you can be paid instead!

He gets books out of the library: the dummies guide to dog walking. He learns first aid for pets. He gets hats printed with the Dogercise logo. He gets bright t-shirts printed up. People are volunteering to walk dogs before work and after work. The elderly are walking little dogs. Young women love to take guard dogs with them on their evening jog. He institutes a dog-matching algorithm that pairs each dog to just the right walker.

He builds a website for managing the booking of dog walks. He builds a smartphone app, customers use it to book their dog walks, to trade tips and to thank their walkers. There are social meets and barbeques.

He gets a map of the greater suburb and divides it into small areas that surround the area he already letter-dropped. He tells his most proficient dog-walkers that they can pick an area and letter drop it, manage those territory for themselves. They take a percent of the earnings from the walkers they manage. They organise social events, perform letter drops, sort out issues as they arise.

Now on the map he draws up new areas, just at the edge of the areas that are already being managed. The best walkers from the existing areas are allowed to nominate themselves for those areas.

In a very short time, the business has spread out, whoosh, and his dog-walking empire covers the entire globe. He stops for the first time and realizes: I'm actually more of a cat person.

 

Humans: A Tragedy.

One of the saddest pieces of trivia in the world is the number of people who follow Uberfacts on twitter.

Apparently this 'verified' account has 6.46M followers. I was hoping that 6.46M meant 6.46 Morons but sadly, it means 6.46 *MILLION* Morons.

Uberfacts crime? It presents extraordinary 'facts' without providing references of any kind.

Extraordinary claims require extraordinary evidence

Extraordinary claims require extraordinary evidence was a phrase made popular by Carl Sagan. It is the heart of the scientific method, and a model for critical thinking, rational thought and skepticism everywhere.
RationalWiki

Since Uberfacts provides no references for any of their 'facts' it takes the reader a non-trivial amount of work to determine if they are true or not.

Many of them are too ill-defined to be either true or untrue on their own. And many of the others, if you do happen to spend the time it takes to research them, are somewhere between partly or wholly incorrect.

(Incidentally, researching these sort of 'shock-value' research-lite facts also leads you into a depressing quag of equally inane sites.)

I love trivia and triviality. The twitter account QIkipedia (related to the BBC Televsion show QI) is a much better example of a trivia sharing service hosted on twitter.

Comparison of Uberfacts with QIkipedia

UberfactsQIkipedia
Never provides sources or references Often provides references*
Does not retract errorsRetracts errors
Does not enter into discussionEnters into discussion
Hides advertisements as 'facts'No trickery.**
6,460,000 followers553,000 followers

* I would prefer it if the QI team were even more forthcoming with references. But at least due to point 2 and 3 there are avenues for corrections if any of the followers do find errors.

** When, for example, they promote Molly Oldfield's book, they're clear that she works for them. Etc.

And note that none of this is directly related to whether the facts are right or wrong. If all of the damn 'facts' were right, I probably wouldn't care if they messed up all the other points.

According to this gushing piece at ZDnet the more "outrageous" uberfacts are linked to a tumblr account where they are "explained in more detail". This is also, like everything Uberfacts related, quite untrue. Even at the tumblr account you don't get more details. All you get are pictures, with a quoted "source" of Uberfacts itself. Like this:

Anatidaephobia is the fear that somewhere in the world, there is a duck watching you.

Anatidaephobia is the fear that somewhere in the world, there is a duck watching you.

Are you kidding me? Is this true? Is there really such a fear? It doesn't sound particularly true, though there is a certain ring of familiarity that I can't quite put my finger on. Let's see if it's mentioned at Wikipedia.

Yes, here it is, in their 'List of Phobias under the heading "Jocular and fictional phobias":

Anatidaephobia - the fictional fear that somewhere, somehow, a duck is watching you. From Gary Larson's The Far Side.

And here is the actual source:

So it's a joke from Gary Larson, no more factual than 'luposlipaphobia' (the fear of being pursued by timber wolves around a kitchen table while wearing socks on a newly waxed floor).

What's the harm, hey!?

But why am I being such a grouch about this? What's the harm?

As Aristotle used to remark on many a sunny day in Athens:

It is the mark of an educated mind to be able to entertain a thought without accepting it.
Aristotle

Shouldn't we just be entertained by these facts? Chill out and let it go? As they say in the subtitle 'Bringing you the most unimportant things you'll never need to know', these things are chosen for their innocuosness. So what if they're right or wrong?

But these 'uberfacts' don't belong to the category of thoughts that bring entertainment for their own sake. They are almost entirely "facts" which are only entertaining if they are actually true. If they're not true, they are pointless at best, time-wasters at least, and potentially harmful.

Here's the scary bit: these uberfacts take on a life of their own, and Darwinism isn't quick enough to take care of the people who spread them.

For example there are serious articles discussing the likely causes of anatidaephobia, and helpful guides for those who suffer from this worrisome-- and growing-- malady, at sites such as voices.yahoo.com, "serious facts", and "factual facts".

Don't trust that sites like Snopes will do all the work of sorting out the lies from the truth. You can't leave it up to Snopes. It's everyone's responsibility: mine, yours, everyone's, to stop repeating (retweeting, posting, regurgitating) the endless stream of lies and bullshits.

Uberfacts: unfollow.

 

ACK!

Email and IM should - (like facebook, twitter and stackoverflow) - allow for a star/like/fav of an email or message which acts as an positive acknowledgement without requiring any other response or elaboration, nor consuming an entire message unto itself.

Land-line telephones could also have a button for this: you toggle it to the "on" position and it will "uh-huh" and then "uh-huh" again every 30 seconds as your elderly aunt describes her neighbour's friend's pet dog's medical dilemmas.