Working with my First Dapp

Okay, for all you non-cool kids, “Dapp” is the short form of “Decentralized Application”.  I’m told that it is pronounced “Dap” and not “Dee-app”.  I wrote about dapps a bit in my last blog post.

After posting, I decided I wanted to find a dapp to try out. I searched around a bit and found a number of them.  FileCoin is the one that interests me the most, but they are still building it, and it won’t be available until late next year at the earliest. 

I then stumbled upon Steem.  The main outlet for Steem is SteemIt which is basically a user-run Blogging and commenting platform.  You can earn Steem Tokens by adding value to the blogging network through posts and comments, and curating those posts and comments.  By adding value, you earn Steem, and Steem is worth real money.

Steem is block-chain based, and a decentralized, autonomous application.  That means there is no central server and that it is immutable — once you post to it, that post cannot be removed, or altered, without your permission.  The community of Steem users has strong incentives — cash, generally — to upvote good content and comments, and strongly downvote bad content like spam, plagiarized content, or anything that the community deems unsuitable.  

My first concern that SteemIt would become “one-sided”, much like Digg.com did back in the 2000’s, where one political slant would get all the up-votes.  However, while I don’t completely understand how it works, it appears that users who tend to down-vote in a slanted way are punished. 

The user model is interesting.  People with lots of juice/karma/whatever they call it can really influence things.  One up vote from them could be worth as much as — literally — $100.  These are people that have proved to the network that they are obviously very trustworthy.  My upvote, on the other hand, is currently worth almost nothing, as I have yet to add much value through posting, commenting, and curating.

Another thing I learned is that your voting power goes down each time you vote, and is “powered up” over time.  You are incented to be judicious with your voting, because the more you vote, the less each vote is worth in terms of adding value to the network.  In other words, you can only vote so much, and each vote is worth a bit less if you vote frequently.  You can and should use your votes, you just have to be careful with them in order to be able to add value to the network.  

I created an account and started poking around.  There are some good introductory posts, one of which made the wise recommendation to find a niche in SteemIt and fill it.  I noticed that there were not too many (any?) articles on software development, so I decided that would be my niche.  So far I’ve posted three articles on the softwaredevelopment tag, and plan to do many more.

One thing that all the introductory posts pointed out is that it takes time, effort, and input to have Steem become worth it.  You need to be consistent and work to carve out your area.  So far it is an interesting place, and poking around reveals some quirky and interesting stuff.  I plan on sticking with it and seeing where it goes and if it makes me any real money.

SteemIt is worth looking into.  I encourage you to join.  There is no affiliate link for me to post, so I’m just suggesting it out of the pure goodness of my heart.  😉 It’s a cool way to get involved with Dapps and the block-chain, it doesn’t cost you anything to start, and besides, it might even put a little money in your pocket.

I warn you, though, if you want to create an account, you MUST remember your password, which is a large hash and provided by the Steem system.  There is no way to recover your password.  They’ll give you the hash and you need to copy it and store it safely.   I confess I didn’t get this part at first, and lost forever my account for “nickhodges” and had to come up with a different name (“TrenchantGuy”) to have an account.  Silly me.  (At least I’m not the only one…..)

So give SteemIt a try.  

Everything You Think You Know About “Cryptocurrency” is Wrong. Even the Name.

If you haven’t heard of Bitcoin by now, then you should probably find out about it right now if you even remotely want to have any Geek-cred at all.

Okay, anyway, I actually made a pretty nice chunk of money off of Bitcoin.  A few years ago I took a modest chunk of bitcoin in return for an item I was, well, returning, and didn’t think much of it, other than it was, at the time, and easy way to get some bitcoin.  I sold it on the back side of last years big runup, and made a tidy profit.

I viewed Bitcoin as pretty much everyone does — a “cryptocurrency”, that is “money”.  It had similarities to gold in that respect.

Bitcoin’s popularity has given rise to countless other “cryptocurrencies”, and I started wondering how the heck they can all be valuable.  “BlockChain” (the “handle” of the technology behind cryptocurrencies) has become a huge buzzword, so much so that some Iced Tea (!) Company added it to their company name and the stock went up 500%.  And to tie this back to Delphi and Pascal, there is even a PascalCoin project written in Pascal.

It’s been crazy.  And I thought I was super-cool and understood it all.

At least until I read thisThen I realized I was all wrong about cryptocurrencies. I thought that they were a big deal before.  Now I realize that they are much more important than that.

The article is entitled A Letter to Jamie Dimon and is written by a guy named Adam Ludwin.  Mr Ludwin writes in response to some postings by Jamie Dimon that were less than kind to Bitcoin, and that showed, frankly, a willful ignorance about it.

Ludwin’s article was a revelation to me.  It lead me to search further.  I found this article, Why Decentralization Matters by Chris Dixon, and finally, perhaps the most interesting one of all, Dawn of Autonomous Corporations, Powered by Bitcoinwhich was written, by the way, five years ago.  Yikes.

This reading-fest blew my mind. I mean, seriously, chances are that everything you think you know about Bitcoin and crypto-currencies is pretty much wrong.

So I’m here to tell you — Bitcoin and all the rest of the cryptocurrencies (or as Ludwin rightly calls, them “Crypto Assets”) are not about being money.  Not even close.  Instead, they are all about the next wave on the Internet:  decentralized organizations.

I think and learn in terms of examples, so I’m going to use the example of FileCoin, a decentralized organization that allows users to store files like Dropbox, only without the centralized storage.

FileCoin works (or will work, as it isn’t up and running yet…) like this:

  • Files are stored across a network of storage space providers.  These providers could range from small, one-man shops with a few terabytes to spare, to huge storage facilities with spare petabytes, and everything in between.  In other words, anyone can participate to whatever extent they please.
  • Files are encrypted and diced up and distributed across the network in pieces.  No one storing data can look at your cat pictures that you store on FileCoin storage.
  • People who want to store files in FileCoin will have to pay – presumably in FileCoin or some other crypto asset — for the privilege according to market pricing.  I have no idea what that is, but I’m willing to bet that it will be a lot cheaper than DropBox or other cloud storage providers are.
  • People are incented to provide storage space by receiving FileCoin tokens for letting others use their space.  You provide storage space and you get FileCoin tokens which can be converted into Bitcoin or “real” cash money.  It is this incentive — the “paying” of people to provide storage — that gets people to provide the storage.
  • While the good folks at FileCoin are the creators, they will no more “own” FileCoin than you or I will.  Granted, they hold a ton of FileCoin tokens, and will likely be very rich, but once FileCoin is set in motion, they’ve effectively lost control of it.

So, what can we take away from this?

  • See how this is “decentralized”?  There are no central servers, there is no one “in charge”.  There is no single point of failure.  The rules are encoded into the software, and the software just runs on the Internet autonomously on the nodes provided by willing users.
  • Open-source is critical to the success of decentralized organizations. They simply won’t exist without the notion of open-source software.
  • These organizations cannot be stopped short of shutting down the whole Internet in its entirety, something that is impossible. I laugh when I hear people say that government is not going to “put up” with BItcoin and squash it.  That’s a joke, because there is literally nothing anyone can do to “shut down” Bitcoin or any other decentralized organization. They are, quite literally, unstoppable. Once they have been set in motion, they will exist as long as the Internet does and as long as anyone at all in the world participates.
  • There are, as you’d expect, strengths and weaknesses here.  Ludwin’s article covers them quite well.  But as with all systems that “yearn to be free”, these weaknesses will almost certainly get better with time.
  • These entities will have “owners” in as much as the holder of the crypto assets for any given entity “own” the entity, much like shareholders own public companies.

So when you see some Wall Street guru say something like “I think the next move up is gonna need custody from a trusted source, it’s gonna need a little regulatory clarity…” then you know that he doesn’t have the slightest idea what he’s talking about.  These guys are saying things like this all the time.  They just don’t get it.

Now, in my mind, decentralized applications/organizations are the next big wave on the Internet.  The notion is in its infancy, and applications of this amazing technology will no doubt arise in ways that we haven’t yet conceived of.  You might imagine a Twitter-like application where you have complete freedom to tweet whatever you like without fear of being censored or controlled in any way by twitter. That can be very cool and very scary at the same time.  But either way, something like that is coming whether we want it to or not.

Now you know, and now we are both ahead of this curve.  Now if we can only figure out how the money is going to be made, we’ll be golden.  And money will definitely be made.

Flotsam and Jetsam #120

  • I’m sure you’ve heard by now, but Embacadero has released a Community Edition of Delphi and C++Builder. I have a few thoughts on the matter
    • It looks like they are doing things right, making the Community Edition (basically) a non-commercial Professional version, with everything included.  Well done.
    • While a long time in coming, it’s a welcome move.  Their competitors (mainly JetBrains and Microsoft, in the form of Visual Studio) both have done similar things for quite a while now, and so this is a wise competitive move.
    •  Hopefully this will be a step towards more openness, including the open sourcing of the VCL and the RTL.  Development tools can be profitable, but ironically, more and more, it requires openness.
  • I read this press release with great interest.  Idera, Embarcadero’s parent company, is acquiring Whole Tomato Software, a producer of C++ Productivity tools.  The interesting part here is that those tools are mainly part of Visual Studio, and appear to compete with the aforementioned JetBrains’ well known Resharper tool.  The main tool, Virtual Assist,  appears to focus more on C++ than C#, which I also find interesting. (I also love that their website appears to be written in Classic ASP.) After the Sencha purchase, this is an interesting expansion of their tools portfolio.  I don’t think that this will affect RAD Studio too much.  I do think it shows that Idera/Embarcadero is expanding their scope in the developer market and that while RAD Studio is the centerpiece of the portfolio, it is not the only piece.
  • Delphi continues to be a great tool for building apps for the Windows Store.  But I have to ask — is anyone making any money on the Windows store?  I mean, I don’t even know if I’ve ever been to the Windows store much less bought anything there. Fortunes have been made on the Android and iOS stores.  Can the same be said of the Windows Store?
  • Times are good for web development in Delphi. This has traditionally been an area of development that has been a bit outside of Delphi’s bailiwick.  I confess only a passing familarity with most of these frameworks, but they are nice to see.  Here’s a quick look at the tools that are out there in the third-party market.  It seems to be a good time to be a Web Developer for Delphi…

On ISBNs

A commenter on my last post asked about why I bought 100 ISBNs.  That does seem like a lot, no?

Well, the ISBN game is a bit of a racket.

ISBN stands for “International Standard Book Number” — and it uniquely identifies a book world wide.  It even identifies different forms of the same book.  So I needed four ISBNs for my three books, one each for the physical, PDF, MOBI, and ePUB editions.

The “racket” part comes in how you buy them.  The only place to buy them in the US, as far as I know, is from Bowker Identifier Services. If you go to their page selling the ISBNs, you’ll notice that the pricing is……interesting. One ISBN is $175.  Ten is $295, and 100 is $575.  Now, one isn’t useful when you want to publish multiple versions of a book.  And given that my wife had plans to publish books, and we thought we might publish books for others, we definitely needed more than ten.  So 100 it was.  (I notice that prices have gone up.  We paid $500 for our 100 ISBNs.)  There is a strange economy of scale at work here.

It worked out for us to get 100.  We’ve used about 25, and we don’t have to worry about buying new ones anytime soon.  They are pretty easy to use and assign, and CreateSpace will automatically create the barcode for you (which Bowker is happy to charge you for….)

I should note that strictly speaking you don’t need to get your own ISBNs.  You can publish electronically to your hearts content without them (LeanPub has provisions for, but doesn’t require, them), and CreateSpace will issue one for you if you want, thought they will be listed as the publisher. However, we wanted our books published under our own company name, and so decided to make the investment.  Amazon won’t sell your book without and ISBM, and your physical book needs an ISBN if you have aspirations of selling your book in a brick and mortar store, too.

Overall it has been a good idea for us to get the 100, though I do remember being a bit perturbed at first when I saw the strange pricing scale.  In the end, though, it has worked out well for us as I said.

And remember, we here at Nepeta Publishing be happy to publish your book for very favorable terms, ISBNs and all.  🙂

 

The Economics of Self-Publishing a Technical Book.

I’m a big Medium fan and subscriber.  There’s a lot of great writing there.  I recently came across this article,  The Economics of Writing a Technical Book, and read it with great interest.  Having written three books of my own, I thought I’d write a bit about my experience with self-publishing a technical book.

Suffice it to say that my experience has been very different than the author of the Medium article.  The TL;DR summary:  I made a lot more money than they did, with a lot less hassle.

I’ll talk merely about my first book, Coding in Delphi.  It has been my best selling book, and thus my most profitable.

Before I decided to write my own book, I had written chapters for three other Delphi books.  (Well, actually, two editions of the Delphi Developers Guide and one Kylix book, but never mind…). I found the process of working with a publisher arduous, slow, and unprofitable.  Granted this was a while ago, but there were complicated Word templates, editors that really weren’t technical at all, and long timelines to get feedback.  All in all, it wasn’t the greatest experience.  I was paid a flat fee for the chapters, and in retrospect, it wasn’t much.  Now before my friends Steve Teixeira and Xavier Pacheco get upset with my for being ungrateful, let me say that I am very grateful for the opportunity and honored to be entrusted with topics in books written by such august luminaries.  Same goes for Eric Whipple and Rick Ross.

I’ve always liked writing and have blogged for many years, and so about five years ago, I decided that I wanted to write a book.  My wife was very encouraging, as were a few Delphi friends that I shared the idea with.  I did some investigations and decided to go for it.

First, I wrote an outline.  Then I started writing.  First I started with MS Word, but soon found that doing things like formatting code was a lot of work.  Then I tried Scrivener, but despite being very cool, it was not easy to format code either.   I tried writing the book using a WordPress template that would let select people comment online, but that proved cumbersome and non-helpful.

Finally, I discovered LeanPub, and all my problems were solved.  LeanPub uses MarkDown, which is easy to use, allows you to very easily format code, and which they turn into PDF, MOBI and ePUB formats with the click of a button.  They are also very, very writer friendly, with authors taking home 90% of the price of the book.  (That is significantly more than authors get who go with traditional publishing houses.)   They sell and promote the book on their website.  There’s precious little for an author to do other than write the book and push a button.  You can keep the book on DropBox or GitHub.  They also allowed you to create and use –for free — a physical publisher ready PDF file which you can take to a print-on-demand company.  They pay on the first of the month via PayPal.  All in all, it was almost too good to be true.  I can’t recommend LeanPub enough.

Though I didn’t have professional editors, I did have a collection of very kind and generous Delphi community members who read the book, made great suggestions, and generally made the book better.  I had a friend, Diane Moser, a professional proof-reader, to go over the book with a fine tooth comb.  (Diane’s services are highly recommended).  I think the copy itself ended up as good as any “professionally” published book.

Once I completed the book and published it on LeanPub, I then settled on CreateSpace to publish the hard copy.  CreateSpace is owned by Amazon, and if you publish with them, your book can easily be listed on and sold via Amazon.  The process of starting with your print-ready PDF and ending up having your book for sale on Amazon is pathetically simple and took at most a week.  Amazon prints the books on demand and carries no inventory.  That means that they can pass more of a royalty on to authors.  I confess I don’t know exactly what my Amazon royalty is, but it is above 50% of total sales.  I believe I have sold more physical books than soft-copy books overall.

I’m not comfortable talking specific numbers, but suffice it to say that I have made at least an order of magnitude more than the authors of the book described in the Medium article with a much smaller target market. It has vastly exceeded my expectations.   Interestingly, the majority of my sales are in US dollars, which I find surprising.  Amazon also pays me in British Pounds and Euros.  I would have guessed that I’d make most of my money in Euros, but such is not the case.

Couple of Final Thoughts:

  • Writing a book is a lot of work. It took me a year of Saturday and Sunday mornings at my local Burger King to get it all done.  It was a grind. I’d get up and be at Burger King by 0630, and usually stay there writing until noon.
  • Publishing the book was a breeze by comparison. The hardest part of actually publishing the book was figuring out the cover for the hard-copy.  Everything else was super easy.
  • If you are thinking about writing a book, I strongly encourage you to do it. My goal when I started was to have one person buy my book.  It has succeeded beyond my wildest dreams.
  • By the way, if you write a book and don’t want the hassle of publishing it, my wife and I will do it for you for very favorable terms.
  • We did spring for 100 ISBN numbers.  They were expensive, but have proven to be a wise investment.
  • What I didn’t have:  A prestigious publishing house like O’Reilly backing me, marketing my book, and doing all those things that big publishers can do (and also take a big royalty cut to do).
  • What I did have:  I am reasonably well known in the Delphi community.  I have lots of friends who helped make my books better.  And I had a market that was, at the time, pretty empty.  (I’m happy to say that this has changed, and there are actually quite a few Delphi books out there now.)

In summary, I have to believe that the days of technical book publishing houses are limited.  It is simply too easy and too profitable to self-publish a book on your own.  As I said, if you don’t want to do it all yourself, we can definitely help.  🙂 I can easily foresee a day when you can get any book at a bookstore, as they’ll simply print any book you want on demand right there in the store.  After reading the Medium article, I am even happier that I didn’t pursue the traditional publishing route.

In Which I Pontificate About StackOverflow

Joel Spolsky is kind of a hero to me. He was one of the first developer bloggers — one of the first guys to write about things that we developers were thinking about and talking about. He wrote classics like “The Joel Test” and stuck up for developer environments with “Bionic Office“.  It was revelatory.  It was mind expanding at a time when these things had never been openly considered.

Jeff Atwood’s “Coding Horror” blog was much the same.  He wrote about how developers are more expensive than hardwaremade great book recommendations, and other things that we ate up like food at a smorgasbord.  I relished the arrival of a new Coding Horror entry in my RSS feed.  (Remember when RSS was going to rule the world….?)

Then these two titans got together and created StackOverflow, probably the greatest resource for developers ever created.  It was a huge success, currently employing 250 people and presumably making Spolsky and Atwood a (well-deserved) pile of money.  Who doesn’t love doing a Google search for something and seeing a StackOverflow link right there at the top, knowing full well that the odds are very good you’ll get a complete answer to your question?

StackOverflow took off like a rocket. Tons of really good developers were answering all kinds of questions. A guy from Google, Jon Skeet, proved himself to be some sort of super-human savant, answering questions with clarity and proficiently previously thought impossible and amassing over a million reputation points.  All those great answers were up-voted, and they became super easy to find.  Atwood and Spolsky accomplished what they set out to do, to fix the Internet for developers.  StackOverflow is the go-to place for answers.

Right now, my StackOverflow “Reputation” is 11,692.  Not bad, not great. I see that it puts me in the top 3% of members. I’ve answered questions mostly on the Delphi tag, but you’ll also find that most of my reputation was earned many years ago.

That number, however, is unlikely to increase anytime soon.  At this point, I’m very unlikely to either ask or answer any questions on StackOverflow.  Let me tell you why.

I’m unlikely to answer any questions on StackOverflow for two reasons.

First, because it is really, really hard to be the first one to answer any questions.  My main area of expertise is Delphi, and there are currently three or four guys that seem to monitor the tag with cat-like reflexes, answering questions before anyone can even read them, much less respond with an answer.  It is quite astonishing.  Not that there’s anything wrong with that — these guys are enormously helpful and provide a great service.  But it is demotivating to other folks, including me.

The second reason is more humbling: I can’t find many questions that I even know the answer to.  Many questions are about Android and iOS with which I am not that familiar.  I think part of the problem is that many, many questions have already been asked, and so don’t get asked again, and the ones that do get asked are a bit more esoteric.  That seems like a good thing.

Now the reason I don’t ask questions is a whole different story.

I’ll be blunt:  I don’t ask questions on StackOverflow because if the question is not asked exactly perfectly, people are…unpleasant.  They down-vote your question, leave semi-snotty comments, and generally treat you very poorly.  Woe unto a newbie who asks a question.  Take a look at what happened to this guy. He’s obviously a green newbie — both with Delphi and with StackOverflow — and his introduction to StackOverflow is met with a ton of down-votes and short, curt comments.  Even the answer he does get — which is helpful — is met with a negative comment.  What is the likelihood that this guy will come back and ask another question?

If an experienced developer like me feels this way, I can’t imagine what courage it takes for a new developer to venture into the shark tank that is StackOverflow.

I know I’m not the only one who feels this wayThis tweet by Rob Conery led to this response from the mighty Jon Skeet himself. It’s an issue.  And sadly, there are those that actually defend the culture.  Skeet explains things pretty well, and I give him full marks for seeking solutions, but he basically supports the status quo — that “bad questions” should be down-voted and that people should “take more time to ask their questions”.  That all may be true, but enforcing that does have the negative effect of making StackOverflow be a place that is not exactly, well, welcoming to new members and even not that friendly to people in the top 3%.

I get what the goal of StackOverflow is — to be a repository or well-asked and well-answered questions.  In that it has been amazingly successful  But I also get that such a goal lends itself to snippy, short, curt, unwelcoming responses.  Having your question viciously down-voted is demoralizing.  Who thought that awarding the Tumbleweed badge was a good idea?

I’d like to contribute more to StackOverflow — I certainly benefit from it on practically a daily basis — but for now I’m going to continue to shy away.

Four Humble Ideas for Embarcadero

I hereby humbly offer the following four suggestions to improve the Delphi product and community.

Acquire the Assets of DevJet

Have you guys seen the stuff done by DevJet?  This is some seriously excellent work.  They have two main projects — Documentation Insight and Code Insight Plus — that are both excellent, polished, and incredibly useful.  Code Insight Plus is worth its weight in gold.  Embarcadero should strongly consider including these two projects as part of the RAD Studio product.  Shoot, they should get DevJet to write a bunch of features for the IDE.

Now maybe DevJet doesn’t want to be acquired, I don’t know, so it’s just an idea.  But definitely worth considering.

Open Source Their Unit Tests

I’ve suggested this before, and want to suggest it again.  I can’t add much to the post other than to say there is no downside and all upside.  I argued pretty strenuously for this, and continue to believe it is a good idea.

Build for Raspberry Pi

I spent a bunch of time this weekend squaring away my four Raspberry Pi’s.  I have a 1, a 2, a three and a Zero.  They are fun.  They are cool.  They are powerful.  And, they are hard to develop for (though I am going to spend some time soon loading up ASP.NET core on to one of them.)  I think that the next big platform that Embarcadero should add is the Raspberry Pi.  It’s an ARM chip running Linux.  It would be awesome to take the current Linux capabilities and make them available to run on Pi’s.  I would love this.  Shoot, I got my Pi Zero for five dollars!  I would love to be able to write server applications and deploy them to a Raspberry Pi.  I absolutely am not the only one.  This would be a trailblazing thing to do, and could have a big impact on the spread of Delphi to new users.

Open Source (or at least put on GitHub) Their Visual Frameworks (RTL, VCL, and FMX)

It’s time.

I was at Philly Code Camp this weekend.  It was fun as always.  At the after-party on Friday night I talked to a guy who took a day long class on Microsoft’s Roslyn compiler.  He talked about all the cool things he was building to automate code reviews by doing static analysis on the compiled code using the extensions from Roslyn.  I was at a talk where they mentioned how many bug fixes and improvements have come to .Net Core since it was open sourced.  And this is code from Microsoft.  Microsoft!  They open source their development environment and it is thriving. Check this out — here is Anders Hejlsberg’s check-in log for TypeScript for the month of March.  You can interact with Anders on GitHub!

Embarcadero should follow suit.

Now, I can hear the objections.  So I’m not going to push to have these frameworks be open sourced.  I can understand why that might not happen.  But the source is already out there.  Why not put it on GitHub with the same license it has now?  You don’t have to open source it, but by putting it on GitHub you invite the community to provide pull requests with fixes and improvements.  You could recruit MVPs to vet the pull requests.  You can get the benefits of community input without an open source license.  The frameworks aren’t much good to anyone without the Delphi IDE and the Delphi compiler, so there isn’t much being given away.

It’s time.

New Book Pricing

Hey, folks, I have some good news — I’ve dropped the prices on my books all across the board.

This post from a few months ago has been updated with the new pricing.

A few things to note:

These are not temporary price drops — they are permanent.

As always, I am very grateful to everyone who has and will buy my books.

Nick Update

Just a quick update on what I’m up to — you guys have had a few questions.

I have “parted ways” with Embarcadero and am back (for a third time!) at Gateway Ticketing Systems as a Senior Developer.

It’s all good.

How to Buy My Books

First, I want to thank all of you that have bought one or more or my books.  I’m very grateful.

Second, I wanted to post to make sure that everyone knows that I have three books out  and how you can buy them.

Book

Buy in Paperback

Buy in Digital Form

CodingInDelphiCoverFront Buy on Amazon for $24.99 Buy on LeanPub for $24.99, which includes *.MOBI, *.PDF, and *.EPUB
MoreCodingInDelphiCoverFront Buy on Amazon for $29.99

 

Buy on LeanPub for $29.99, which includes *.MOBI, *.PDF, and *.EPUB
title_page Buy on Amazon for $19.99

 

Buy on LeanPub for $19.99, which includes *.MOBI, *.PDF, and *.EPUB

Another option, for those that want to buy all three, is to buy them in a digital bundle on LeanPub for $49.99