Reading about blockchain, moving my lips

I used to be technical.  I used to know technical stuff.

I still know quite a bit, but what I say about myself nowadays is that “I can follow a technical argument.”  That’s certainly not cutting-edge, nor is it one step removed.  It’s a different kind of skill.

As a techie, I was bound by what Buckminster Fuller or Ayn Rand would call “right and wrong.”  If my stuff — my hypothesis, my code, — “worked”, it was correct.  Not just, necessarily, or even beautiful, but it would do what I said it would do.

“Following a tech argument” is a different thing; I’m assuming that the speaker is speaking correctly, is saying what’s right, and seeing if I agree with the implications.

That’s how I’m approaching blockchain.  I’ve never been a cryptographic heavyweight, and I’m not even an “Alice and Bob” heavyweight.  Alice and Bob, for those who might not know, are personoids who engage in cryptographically motivated behavior.  For example: “Alice wants to send Bob a private message.”  “Bob wants to pay Alice in Bitcoin.”  Cryptographic heavyweights toss around Alice-and-Bob arguments in a way that I can mostly follow.  If I move my lips.

So I’ve been certain I could understand how blockchain — the “distributed ledger” underlying Bitcoin and other cryptocurrencies — worked.  Just one little problem: I didn’t actually understand.

So today I set out to understand how blockchain works.

I started with a Google search for “blockchain for dummies”.

First hit: a youtube video that tried to “explain” blockchain with an analogy.   #fail.  I couldn’t even understand the tenor and vehicle of the metaphor, let alone anything about how blockchain worked except, perhaps, that it was distributed and anonymous.  Well, I knew that already.

Next up?  “WTF Is the Blockchain?  A Guide for Total Beginners“.  #fail.  It kind of explains the various parts of the cryptocurrency ecosystem, but doesn’t explain the main thing: how are transactions in the blockchain verifiable, non-repudiatable, anonymous, and unfalsifiable?  And, just for grins, why are there miners?

I tried a few more, and ended up, as perhaps I should have begun, with the Developer’s guide.  Here we have geeks explaining to geeks how something works and how you might use it in making something of your own.

And here’s what I get out of all this:

  1. If Alice wants to pay Bob, she uses Bob’s public key (well, a hash of it) to create a transaction that authorizes whoever own Bob’s private key to spend <x> coin.  This transaction is “broadcast” to the coin community (presumably by Alice’s software) and Bob’s software presumably notes that such a transaction is created and lets Bob know.
  2. When Bob wants to spend the coin that Alice has given him, he creates a transaction which uses Alice’s transaction ID and a “signature script” saying what he wants to do with the coin.  The signature script is certified by Bob’s private key (and other mumbo-jumbo).  Bob then broadcasts his transaction to the network.

How do you keep Bob from spending Alice’s coin twice?   Next posting…

To Find a Backer, See Who Backed Your Competitors

I get asked for referrals to investors a lot, and since my writing has spun up I also get asked for referrals to publishers and agents.

I read a bunch of years ago some advice that seemed quite sensible for finding an agent:

Find one or two books that are just like the one you want to do, find out who agents those authors, and ping them.

Of course, no book is “just like” your baby, but there are cousins, maybe even fraternal twins.

Maybe this is terrible advice, but, like I said, it made sense to me.

And it makes sense in the investor context too.  Find one or two startups that are doing something similar or cousin-ly to what you want to do, find out who invested in those companies, and ping them.

One might say that I’m just letting myself off the hook of actually daring to refer somebody to an investor or agent I already know.  But I’ve done that.  I’ve done that enough to know that you can’t force oil and water together if they don’t want to go.

Maybe this is awful advice.  If so, please let me know and I’ll pass on your POV.

My first book proposal — “Intelligent Pitching”

I’ve been a writer wannabe my whole life, but I’ve mostly worked on fiction and magazine articles (and blogging, of course!).

Now I’m trying to do my first book proposal for a non-fiction book.

For a work of fiction, you basically finish the whole thing and then show it to potential agents and publishers.  The theory — I guess — is that you can’t judge the book by looking at a subset of it.  You need to “experience” the whole thing.

Fair enough.  With non-fiction books, my friend Howard Yoon says, you get a kind of a break: you don’t have to do the whole book to sell it, you just do a proposal.

He showed me a couple of examples, and set me to work on a book proposal about a topic dear to my heart: Intelligent Pitching.  I’ve blogged about this some, and I’ve given lectures and classes on it some.   Now I’m putting together the book proposal.

The format Howard gave me is pretty brutal: you need about five pages of sample for each chapter that will be in the book.  Well, if a chapter is something like 20 pages, that means you have to write about a quarter of each chapter before you actually write the book.

I guess the good news here is that once you’ve written the proposal — and if the your editor/publisher resists the God-given temptation to edit your work — that you then have written a good part of the book, including its structure, the spine.

There’s more to the proposal than the sample chapters: you need to give, in essence, a marketing plan for the book and a pitch for your own bona fides as an author.  There’s other stuff as well.

The book recapitulates what I’ve learned about pitches from 12 years of doing venture capital and 5 years of consulting before that.  My big shtick is that you need to think in detail about what’s on the mind of your audience in order to craft a good pitch.

It seems like motherhood and apple pie, but it’s amazing to me how few pitches act as if their authors thought about the audience beforehand.

For example: investors don’t (especially) want to know what problem your business solves.  They want to know how good your business model is.

If you crafted a pitch with that observation in mind, you would start the pitch with the key elements of your business model.

Very few pitches start that way.  Most start with long, drawn-out dramatizations of how extreme the problem is that their business solves, which is very tiresome to the investor who just wants to know what your business is going to do about the problem.

There’s a lot more like that in the book (or, more correctly, in the book proposal).  And what Howard counseled me to put in was not dry exposition but stories, stories that show and bring to life the principles of the Intelligent Pitch.

It’s been a lot of work to get it up to fighting weight, but very instructive.

Cycle for Survival

My friend Elizabeth was raising money for research into curing “rare” cancers, and she mentioned it when she came to “guest lecture” at my class this last fall.  March 6 seemed a long ways away so I volunteered to do some spinning with her team.

I put “rare” in quotes because, collectively, these cancers account for 50 % of all cancers, but there’s a lot of them, and individually each one is unusual.  They don’t get the TLC $$ that the “big” cancers get, so I thought it would be a good deed as well as a chance to get in some spinning.

I’ve been spinning since my left hip got replaced five years ago.  It’s a great way for someone like me — not a runner, not a swimmer — to do some interval training.  I’ve really enjoyed it for the most part, although there’s a school of spinning — I imagine that SoulCycle is this way — that thinks “Too Much Ain’t Enough.”  That’s not me.  I do the work, but I don’t bellow or yip or carry on.

Surprise surprise, March 6 came and much sooner than I would have thought.  I realized in mid-February that the event was almost upon us, and started doing some fundraising.

Fortunately, several friends leaped into the breach and funded me, so I felt like could hold my head up with the rest of the team — I didn’t know anyone except Elizabeth, I thought — when Cycle Day came.

I sort of imagined doing the equivalent of punching in at work: I would walk in, register, spin for my allotted time, and leave.

It was much more wild than that.

Imagine a huge spinning studio — I’m talking 100 bikes here — filled with garishly-dressed teams with boas, pompoms, beach balls flying through the air, 115dB music and peppy spinning talk.

My kneejerk reaction to stuff like this is to Sneer and to Cower.  Sneer: I get angry back at all the peppiness and cheer.  Cower: I want to just get my job done and get out without any shenanigans.

But my team was so nice, they engaged me, they got me to dress up in an orange team t-shirt, and they got me into it.  As you can see in the photo (I’m in the upper right), I’m present and accounted for if not exactly bouncing off the walls.  (You can’t quite see the cute little sparkly fedora on top of my head.)

Shucks: it was actually fun, and I loved getting to know the rest of the team somewhat at the Point of Sweat.

Thanks Elizabeth and thanks Kelly for having me.  And thanks to the rest of Team Pedaling Sunshine Bethesda.

Intentional Objects and Relationship Objects

I’m beginning to think about how to conceptualize the world of personal information management, and I’m finding some food for thought.

First of all, I was quite interested in a Viewpoint by Yoav Shoham in Communications of the ACM (not sure if non-members can read it, but the link is here).

Yoav and two co-founders started Timeful, a PIM company sold to Google in 2015.  His Viewpoint was about Timeful’s approach to generalizing time events.

What they zeroed in on was the intentional aspect of calendar events.  A meeting, a habit, a bucket-list entry, all have a time and calendar element, but they vary in other aspects, including their relationship to our intentions.  Timeful reified these as “Intentional Objects” or IO’s, which were the foundation of the Timeful design.

Sadly, all one can see of this design is a screenshot or two from Yoav’s papers, because Google, after it acquired Timeful, shut down its app and threw the cloak of secrecy over how the work would be developed within the ‘Plex.  Their right to do so, of course, but something of a pathetic move for a company with their stature and cash flow.

Timeful, I’m surmising, used the various aspects of an IO to plan automated scheduling for all of one’s time-based events: the weekly status meeting, the visit to the gym, the daily block of work on the Great American Novel.  A very interesting line of thinking, and an interesting app (although I must say my tastes run more to Intelligent Assistants than to Omniscient AIs: I would rather have the app perform as an amanuensis than as an opaque oracle, but maybe that’s what the Timeful team had in mind, or maybe that’s what Google has in mind.)

In any case, I started thinking about contacts in the same way that the Timeful team was thinking about calendar entries: think outside the box, try to generalize, try to see what human purposes are being served by maintaining a contact list.

A couple of reflections:

  1. I have contacts in my contact list where I’m interested in the individual, where I’m interested in the couple, and where I’m interested in the household (e.g., neighbors).  Why do we have to treat these all the same way in a contact list, and how do we design a “Relationship Object” that will  capture the nuances of these differences and allow our software to work expressively with them.
  2. There are lots of non-humans that want me to treat them like humans.  In particular, corporations and brands want me to Like them, to white-list them, and to store them as contacts just like my individuals, couples, and households.  Are these really the same thing?  Why not?  Is it because of the asymmetry in our relationship (they can yammer at me; I can’t really yammer at them, for example), or is it because of the power asymmetry?  Is there a power dimension to all contacts?  How to model that?
  3. How about contacts that can order me around (IRS) or even kill me (Selective Service, for those of us who remember the draft)?  How do we model that?  Do their “requests” (demands, really) have more urgency than others’?  More importance?

Love your thoughts on all this, and on how IO’s and RO’s and <other>O’s would interact in the PIM of tomorrow…

Starting up the “Recurrent Tasks” PIM project

So, some developments on the PIM front.

First, off, in conversation with Larry Fitzpatrick I’ve decided to bite off an actual project, as a way of jumpstarting my efforts to write the ultimate PIM as well as to re-start as a coder and — who knows? — feather my nest in other ways as well.

I had been thinking about a project of scraping social media — Facebook, LinkedIn, Pinterest, Twitter, etc. — to generate personal “Klout-like” stats.

Why scrape?  As I began to look into it, it seemed that most of these sites had APIs for business use — Fan pages, etc. — but nothing for personal use.  Want to figure out engagement for your Facebook pages?  They’ve got an API for that.  Wanto to figure out engagement with you as a person.  SOL.

Larry talked me out of that.  He said that there was a lot of “pumping out entropy” in any scraping effort, and I would end up with a needs-to-be-maintained-constantly hack which didn’t prove any concepts or really make much progress toward the goal of the ultimate PIM machine.

So he asked me to say the first thing that came into my head for a more substantive theoretical piece of the PIM pie, and I said “recurrent to-dos”.

I blogged about them here.  They’re theoretically interesting.  They actually lie at the heart of what makes me most interested in one or another PIM product (so they differentiate one’s hack).  And they are pretty kludge-y in most PIMs, from Outlook to Todoist to Toodeldoo and beyond.

So I started thinking about it.  I had also been reading some of Paul Graham’s essays (if you haven’t read them, they’re wonderful; go here), and he had written about using LISP for coding his ecommerce platform (eventually bought by Yahoo).

It was like Proust’s madeleine.  It took me back to an era where I wrote in LISP and, more importantly, thought in LISP.  And in LISP, recurrent objects are kind of trivial.

Trivial in the sense that there’s no difference between a function and a variable in LISP: generators look syntactically just like atoms (except that they may have arguments, etc.).  The language doesn’t make you jump through hoops to use a function where you might use a variable (or vice versa).

So maybe LISP would be a good medium for experimenting with how to do recurrent PIM patterns, since a PIM pattern may be nothing but a generator for to-do events (I say “may be” because one wants to undo recurrent to-dos, update them, and other operations TBD).

So I was wondering if Graham were really right and it would be possible to right a major server-side app in LISP.

And then it hit me: JavaScript treats functions just the way LISP does!

This could all be done in JavaScript.

So now I can kill three birds with one stone: get started re-sharpening my coding skills, come up to speed on JavaScript, and move forward on the PIM project.

Brilliant!

Next step is to do some experiments with a Recurrent_Generator class.

Make-ahead Lunch Weeks 3, 4: Ham Bone, Greens, and Bean Soup

Well, make-ahead lunch week 3 got eaten by Snowzilla here in DC.  Couldn’t get out for ingredients.  Too much shoveling to make lunch on Sunday.  Didn’t get out to work a couple of days that week so no lunch needed.

Existing stocks of Peruvian Vegetable Soup and Burritos tided me over the days I did go to work.  All goodness

So this Sunday the snow was largely melted, the game was on again, and so I found a soup recipe that was 1) fibre-tacious, 2) within my capabilities, 3) would freeze easily.

Indirectly, an article on soups that freeze led me to this Melissa Clark recipe for Ham Bone, Greens, and Bean Soup.

A bunch of kale, a half-head of cabbage.  All good.  Used canned beans instead of dry.  Okey-dokey.

The ham bone itself was a problem.  Our Whole Foods doesn’t do deep dish butcher-y things like cut ham bones in three.  I sometimes even think they make meat without any bones, innards, or waste.  Well, not really, but they give a good simulation.

In any case, Debbie was at the Whole Foods while I was doing stuff at the hardware store, and she got a already-cooked ham hock with bone in.

So I figured with the canned beans and the already-cooked ham there was excess cooking time in the recipe.  I went straight to the cabbage and kale after bringing the ham to a boil, and thus reduced the cooking time by 1/2 hour.

Oh, and I used chicken stock instead of water.  I prefer stock to water most of the time anyhow, and who knows what would happen with an ersatz (or at least jury-rigged) ham bone.

It was a huge amount of soup  I froze four portions and there were still 3-4 portions left for the fridge.  I had some for breakfast this morning.  Pretty tasty.

The make-ahead scheme for the year is taking shape.  Each Sunday make one new dish and have enough portions of the previous dish(es) left over to insure that there’s A/B variety each week.

This is all quite feasible in soup season, because these soups are actually pretty easy to make.  I don’t know how it’s going to go once we get to salad season, since salads seem at least much more hard to keep than freeze-able soups.

I’m improving in my ability to eyeball a recipe and see if it’ll taste good and be within my powers to prepare.  I guess it’s like sight-reading music.  If you do it enough you build up a skill for it.  Unlike sight-reading, you don’t have to do it in real time.

I’m also very marginally improving in my abilities to prep food quickly and efficiently.  I can chop a bit better, particularly since I’ve begun to sharpen my knives a bit more diligently.  If you take the time to put a decent edge on them they keep the edge better, so you get more effortless chopping and less holding-and-separating between chops.  But maybe I should take a course in food prep or something.  Couldn’t hurt.

Make-Ahead Lunch Week 2: Peruvian Vegetable Soup

OK, so Week 1 went well.  I had one lunch out, so it was 2 lunches of the burritos and 2 lunches of the Italian Wedding Soup, as previewed here.  The Italian Wedding Soup, honestly, was not that great to begin with, and holding it for a few days didn’t improve the gumminess of the pasta.  Not sure what the answer is, but it’s worth trying freezing it.

The burritos were good, though, although a little bland.

1109

I jazzed them up with some Sriracha from the portable supply Santa gave me for Xmas.

So there are 5 burritos — frozen — left over from last week, and the plan is to use 2-3 of them this week.

The other lunch comes from Peruvian Vegetable Soup, which I found under the catchy title “How to Make Soup That Actually Fills You Up” on a site called FullPlate which touts a “majority fiber-rich” approach to dieting where 50-75% of your meal or snack should be a “fiber-rich” food (not to be confused with “fiber”; “fiber-rich” foods wants you to eat all kinds of vegetables and fruits as well as beans and such-like in order to eat things with a lower calorie density).

FullPlate is my latest diet gimmick.  Have I explained about me and diets?  What I’ve found about myself is that I get great results from a diet for the first few months (call it 2-4), and then my zeal flags.  Answer?  Refresh the diet gimmick every 3-5 months.  I don’t much care what the diet is as long as I have zeal for it, and by renewing the gimmick I can recharge my zeal.

So anyhow, I ran across the FullPlate diet reading and experimenting with Jane McGonigal’s SuperBetter book and self-improvement scheme.  I don’t know how FullPlate and she got together, but they are one of the “Quests” in the superbetter.com system, and they seemed simple (no measuring and looking up calorie counts) as well as the system seemed to work.

In any case, Peruvian Vegetable Soup is essentially a boatload of fiber-rich vegetables, beans, and qunoa united by a tomato-ey and cumin-ey broth.  The soup is designed (on purpose, says creator Amy Hanus) to be eaten in 3-cup portions, so it’s a huge slug of vegetables.  Reminds of me of a brief flirtation years ago with the Ornish 10% fat diet, where Debbie and I would gorge ourselves on vegetable stews and medleys of one sort or another.  It was OK.

So I ended up with four portions for lunches and a dinner last night for Debbie and me.

On a scale of Italian Wedding Soup to Burritos it’s probably 2/3 of the way to Burritos, so it’ll probably make its way into the lineup.

TBD.

Still on the lookout for fiber-rich lunches that I can make ahead and freeze.  I’ll publicize my efforts with anything you send me, along with a shout out to your blog or other social media.  Let me know.

Make-Ahead Lunches

As those of you who know me a bit know, I take New Year’s resolutions pretty seriously, and try to lay out ambitious, but attainable, goals, objectives, values, principles, and such-like every New Year.

(Nothing sacred about New Years, by the way.  But nothing wrong with it either, and it does have the virtue, like summer vacation, that I have a bit of down time to step back and thing about the Bigger Picture.)

So one resolution (or goal, or habit, I’m not entirely clear on the distinctions) for 2016 is: Make-ahead lunches.

There’s a couple of converging streams of better-ness here.

  1. Save Money.  I’ve been scheming to get down the price of my lunches over the last couple of years, and have gotten them down to $5-6 a lunch going to our local Asian steam-table restaurant.  Not bad, and a lot better than the $12-15 I started with.  But getting under $5 seemed to involve either excessive deprivation or making lunches at home.
  2. Nutritious meals.  Making my own lunches seemed to be the ideal way to get into them exactly what I wanted (although, as we shall see, the making-ahead aspect introduces some constraints.)
  3. Fascination with bulk methods in food prep.  Something about making the lunches ahead — in bulk — captured my imagination.  As you may or may not know, there’s a OAMM (Once-a-month meals) meme out there on the Net with something of an infrastructure, thought leaders, etc.    Check out the (commercial) onceamonthmeals.com site or just Google it.
  4. “Productivity”.  I’m not 100% sure that make-ahead meals are more productive, but I’m prepared to believe it, and prepared to experiment with it.

So, if you Google “make-ahead lunches” you will get a hodge-podge of once-a-month, once-a-week, and “night-before” lunch recipes and schemes.  I did some reading and digging around and Web clipping over the holidays, and ended up learning two things about myself:

  • I’m not ready for once-a-month prep — lunch or all meals — at this time (and maybe never).  Too much of a hump for me, plus I’m not sure I believe the hype about how it saves you time.  Plus I had a hard time seeing how you could get the variety you wanted for a whole month in advance.  No flexibility in it.  You’re stuck with the work of the You who made those meals at the beginning of the month.
  • I want minimum same-day prep.  My morning routine has a lot of moving parts — writing, meditating, helping the dog, etc. — without adding more stuff to it.  My perfect same-day lunch routine would consist of fetching a container out of the fridge or freezer and adding it to the heap of gear I take with me out to the car.

So, that means once-a-week prep of 1-3 different lunch meals that I can freeze or refrigerate and will last the week in that form.

As far as I can make out, that kind of puts the kabosh on make-ahead salads, because they either they don’t last out the week (soggy, wilted, etc.) or they require same-day prep (add the dressing, croutons, whatever).  I’m still open to salads, but for now I’m focusing on soups, wraps, and possibly sandwiches.

For Week 1 (this week), I made a batch of burritos using this approach from kitchn.com and shredded chicken made this way from Picky Palate.  I wrapped each one in aluminum foil and froze them.  I also made a couple of servings of Italian Wedding soup from a big batch my wife had made up on Sunday.

I’m scheming ahead for Week 2, and would welcome any links, tips, pointers, or suggestions.

But What Framework to Use?

My son called last night to find out what toolset I would use to build a website.

I had a hard time answering him, for several reasons.

First of all, I wanted to know what his use case was.  And, as I suspected, the aim of the exercise was to build some kind of web application, not just a content site.

But I hardly know what toolset I want to use myself for building web apps.  I spent a surprising amount of (elapsed) time in 2015 dithering about this topic myself.

My reading and talking with tech friends has led me to focus on JavaScript in general and the JS MVC frameworks in particular.  But I wasn’t sure I wanted to urge that on my son.

He’s just learning how to write code, whereas I wrote code for years.  Why inflict a horrible language like JavaScript on someone who’s just setting out?  It’s like the old advice I got to start with BASIC, which I did and then had to unlearn most of it when I started using Pascal and Lisp.

(I was charmed and blown away to read that Paul Graham and Co. had used Lisp to implement their eCommerce startup ViaWeb, and even more charmed by his argumentation about why it was a sound choice.  Bravo, Paul Graham!)

And the MVC bias for me is probably just that, a bias.  I love elegance as much as the next geek, but, as Albert Einstein said so many years ago, “If you are out to describe the truth, leave elegance to the tailor”.  The MVC frameworks like Angular and Ember lay a big trip on you the coder; I’m happy to accept it, since power comes from observing constraints, but why inflict that on my son?

I ended up saying that I thought the #1 criterion for adopting one of the many frameworks was the level of support he could get for his choice.  Support comes in different flavors of course:

  1. Online support, like documentation, tutorials, discussion groups
  2. Meetups and other real-world interactions
  3. People you know well enough to ask them for help at 1 am

I laid stress on the last one, although I was careful to let him know that I was hardly someone whom he could ping for help, not because I wouldn’t drop everything to help him at 1 am or any other time, but because I’m still a babe-in-the-woods about Angular — the one I think I’m going to work with — at best.  My advice would be possibly one step ahead of what he could do for himself, if that.

He mentioned that his girlfriend had mentioned Django as a possible framework that she had used at some Hackathons.  I’ve read a bit about Django and said I thought it would be great if she knew something about it and could help him figure out problems.  But he said she knew very little.

So I ended up plumping for Angular and disclaiming my advice at the same time.

What advice would you give?

Benefit from my 35 years of tech industry experience