Part I: Inkwell Inc, Post Mortem

Some of you are familiar with Inkwell—I founded it as part of the curriculum for the Founder Institute. I had come to FI to see what I could do with the idea, and that idea carried me through to graduation.

The Idea

Inkwell was going to be a crowdfunding platform specifically for authors.

With the rise of self-publishing platforms, it’s hard to get noticed. Inkwell would provide tools for authors to raise the funds from their fans directly for the purpose of investing in the preproduction of their book to increase the chances of their success. It would also provide a trusted network of professionals to help them with production.

Where Inkwell went wrong

While at the Founder Institute, in the week in which we built our financial projections, I discovered that the numbers weren’t looking good. I delayed for a bit, hoping that I could find a way to make it work, but ultimately I was not positioned to make it happen.

One of the stories we hear about crowdfunding platforms is that it’s somewhat of a crapshoot. I can’t think of a single project I have backed that has delivered on time. Costs always go over, things always take longer than expected.

The only way to avoid this is to have deep domain expertise in the product which is being produced. By nature, this is not the case with most crowdfunding projects. The power of these platforms is that someone with minimal background can break into a market with the help of popular demand.

Not providing expertise in the market to support the authors would mean not providing anything meaningful beyond what established platforms are already providing. However, providing that expertise, via a network of professionals, really meant that Inkwell would be more of a publishing house with a technical side than a technological platform helping authors — not my domain expertise.

However the numbers did start to look interesting if I played with specific variables:

More authors. Unfortunately, this isn’t very practical, or interesting. If you look at the Kickstarter Stats page, of all time, there have been 27k publishing projects launched with a total of $66.27m successfully raised. Kickstarter takes a 5% fee that’s $3m in revenue from publishing.

But that’s over the past six years, and they’re at the top of the game. Even if Inkwell could replace them in the publishing market completely, that’s not a very high ceiling for an expected growth. It’s not bad money, but remember, that’s revenue before expenses. For a one- or two-man team, numbers like that can be nice. But to make something like that happen would take a team. With a ceiling of $1m per year in revenue that’s not all that interesting for investors, and could only be considered a labor of love project if bootstrapped.

Successful books. This is the model upon which publishing houses are built. Invest in a slew of books, some break even, a few make it big, the successful books support the publishing of speculations. This is not unlike how VCs and other investors work.

Sadly, now that sales stats are more accessible than ever, publishers are leaning towards supporting the more popular books, which tend not to be the books with staying artistic power.

Implementing this model in Inkwell would mean retaining some of the rights of the book once it was published. I, however, wanted Inkwell to be a launch platform for authors to get picked up and published from, empowering them. Dipping into the dwindling pot of revenue from books would be just another way authors were getting screwed—a fundamental principle I was building Inkwell to prevent.

The way around that would be to publish the books entirely myself. Basically, I was looking at starting another publishing house, while I was interested in creating a technology platform that happened to deal with authors. A classic founder/startup mismatch.

How it could work

I’m not saying that the model is impossible to get right. It would be very wise for a publisher to create such a platform as a discovery engine for them and a support engine for their authors. Authors would benefit from being able to raise money to produce their books, even if they are only self-publishing. If done right, it could break even, and provide a good way to get first dibs on talented authors finding their voice and fanbase.

But as a standalone project, it would be difficult to make viable due to the naturally small margins. Increasing those margins would dig into the author’s needs, which went against the whole reason I wanted to start Inkwell in the first place.

Feature Image Source

How We Solve Problems: Update

I would like to start by thanking everyone who has contributed to the project. I will be sending out follow-up questions shortly to dive deeper into some of the beautiful points submitted.

I received wonderful responses from around the world. People in various positions, from CEO & CTO, to journalist, to entry level developer. This mix I find particularly fascinating. We all come from different backgrounds, and the original question of “how do developers solve problems outside of code?” is only made more interesting by the range of backgrounds of the people contributing.

One thing I noticed is that almost everyone uses their debugging skills through every aspect of their lives. I will dig deeper into this in a future post. I believe that this is one of the main “superpowers” we all rely on most. Keeping it cool, and breaking down problems; knowing that there will be no solution unless we take it step by step.

Thank you all again for contributing and keep an eye out for the series and future discussions.

[UX] My Issue with Windows 10’s Multiple Desktop Feature

One of the more productive features I’ve embraced is the multiple desktops. I tend to compartmentalize tasks, and being able to actually do that visually, helps me focus on what I’m doing, and keep my process organized.

I use Windows at my day job and I was thrilled when I saw that Windows 10 was adding this feature. Unfortunately it comes up short due to one major flaw in the UX, the implementation.

OS X splits the various programs running in to the program and the windows (or instances) of that program. Windows does that too. OS X indicates which  programs are running in the dock with a little dot underneath the icon of that program. Windows does too.

But here’s where Windows, sadly, goes amiss. In OS X you can have different instances of a program running in multiple desktops. No matter which desktop you’re on, if the program is active on ANY desktop, it will show a dot under the icon. If you click that icon it will (should at least) take you to the most recent instance of that program regardless of the desktop that instance is in. Yes, it could work a little more smoothly as it doesn’t always work that way, but it DOES indicate that it’s running somewhere.

Windows 10 separates completely between desktops so that there is no connection between the programs running on the different desktops. This means that when I need a program, I can’t see that it’s running on a different desktop, because the dock only shows me what’s running on the current desktop I’m on. This leads to unnecessary instances of a program running leaving the benefits of the multiple desktops mute and void.

If I don’t know what’s running on my computer I’ll never find that instance, or I’ll waste time trying to find it. If I need my email and I don’t see it’s open, I’ll open it up again. If I waste time looking for it on the 5 different desktops I have open I lost the benefits of having multiple desktops.

True, multiple desktops came in on the Mac in 2009 with OS X 10.5 “Leopard”, and true, it wasn’t great with it came out either. But I had hoped that Microsoft would learn from Apple’s mistakes with this feature.

All in all, I must saw that upgrading from Windows 7 to Windows 10 has been painless, it’s a shame it wasn’t eventful.

 

[UX] The Chicken and the Egg Problem

I recently had the honor of advising a startup on their initial launch design. The biggest issue I encountered, and I’ve encountered this quite a bit with new companies, is the problem of the chicken and the egg.

Many products rely on two separate types of users in order to get off the ground. A marketplace needs sellers and buyers, a social network needs followers and people worth connecting with, big data needs sources as well as consumers.

The big issue is that you cannot cannot cannot gear a site to both effectively.

Imagine going into an electronics store with sections geared towards the supplier. Would you really want to buy there? The message it sends is that you can’t get suppliers. If you supplied to that store, would you feel confident that that store would be able to sell your wares?

This is a design problem as much as it’s a business problem.

One classic pattern that tries to straddle both is to have two big buttons: “I’m a buyer” / “I’m a seller”. In lieu of the above paragraph, does that still sound like a good idea to you?

A page split down the middle doesn’t look all that good either. It gives the message that you don’t know what you’re doing, what your company’s focus is.

To solve this you need to focus on one. If you can do that effectively, you’ll never get both. Until you get the ball rolling you probably will have to do a lot of manual marketing to the other behind the scenes, to make the site work.

There are two ways to go about doing this:

The first is to put up a shell online for a very manual process that happens in the background. The shell is minimally automated, just enough to make it look like a fully functional site. What this does is it keeps the development costs down while you build a user base and test your assumptions.

Then focus on building it into the tool you would use, while you build up the user base. As you make successful deals through your site those deals make a great foundation for your next homepage that features your successes.

Airbnb did a version of this, I am not advocating for what they did as it might have been illegal, but when they were starting out and trying to grow aggressively, they pooled potential poster from Craigslist.

The second way is to provide a service for the first user-type regardless of whether the second user-type exists.

Kickstarter is a classic example of this. Kickstarter has two user types: project creators and project supporters. But Kickstarter became a platform for the creator to sell to the supporter. If you are a creator and you don’t have a community to begin with, you probably won’t find that community on Kickstarter. Kickstarter stays away from promising that. They created a platform that provides value for the user whether or not Kickstarter is huge.

If you can focus on one type of user you’ll be doing your website’s aesthetic and your company’s business plan a huge favor.

What do YOU thing? Please comment.

How We Solve Problems: Inception

As any good developer, I’m constantly trying to keep up with the latest and greatest, as well as brush up on the oldies and goodies of the skills I leverage daily. As a full-stack developer, I tend to study in cycles, switching between “front-end” and “back-end” skills. In June I presented some thoughts on typography at wpnyc.org. To prepare I focused quite a bit on design principles. To balance that out, I decided to up my analytical skills and focus next on reviewing design patterns.

“In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.”

Wikipedia

Some of the top minds in the world have worked out, not only the best way to solve various problems that repeat themselves, but also how to quantify that.

This idea made me curious regarding how this approach can, and has, been applied outside of the world of Computer Science.

An example: Memory Leaks. A memory leak occurs when a programmer, or a language, uses the computer’s memory but neglects to free up again the resources it used.

When your computer sees that it’s running out of resources it starts to borrow memory from other processes that are running in the background, but it can’t return those resources because of the rogue program wastefully using them. Consequently, the computer has fewer resources to run the programs it runs and slows to a halt.

This is what happens with most forms of limited resources, whether financial, stress, emotional, or focus.

People spend money, sometimes it seems like a good idea at the time, but we don’t always reclaim those resources when we’re done, or when we decide it wasn’t a very good idea. We end up throwing good money after bad; either to justify the original decision, or because we don’t have the ability, energy, or know-how to go back and reclaim the wasted resources.

Can techniques developed to find memory leaks be applied to financial management? Can garbage collection be applied to stress management?

I am a strong believer if we have a skill in one area of our life, that skill spills over into other areas of our life…. and developers solve problems all day long. I decided to write a series of articles about how developers solve problems, outside of code.

I was inspired by Advice from Strangers, to explore this in the form of a series of articles. I developed a Google Form to dig deeper and begin research:

https://docs.google.com/forms/d/1vvRtBaQCGtQVz-7wrJTVeuXxJ5zAR02AbCc8MUPaD5A/viewform

This form is designed to trigger the results as much as it is designed to collect examples of them. Some of you have graciously given your time to answer these. If you haven’t yet, I’d be grateful.

I’d love to get the widest range of perspectives as possible, so if you can think of any creative developers who might have something interesting to say on this topic please pass this on to them.

All final answers in by August 10th please so I can bring them into the articles.

(Edit: I’ve been getting some really great feedback, but it’s still coming in, so I’ll be  extending the submissions deadline till August 17th.)

Interested in getting updates about this project? Sign up here or email “Hell Yeah” to developersguide (at) this domain.

How to use JSONP (AJAX to SSL) in WordPress, an EASIER way

I’ve already written about How to use JSONP in WordPress Development. I explain how it works, and why you would use it there.

At work we work with several domains and I’ve had to use quite a bit of JSONP, I’ve rethought how to use it, and made this micro-framework to make it a LOT easier. Mostly, I wrote this to solve the problem that I’m using a lot of AJAX, and don’t want the overhead of the .ajax call each time.

There are a lot of values you need to set when making a JSONP call in general, and specifically with WordPress, this greases those wheels.

The paradigm is all you do is execute:

wp_jsonp("wp_jsonp", "getStuff", {variable: "hello world"}, getStuff);

and the rest is taken care of on the JS side. I wrote it to be agnostic of the server-side processing as well, this gives you the benefit of a pseudo factory design pattern with your switch statement.

You can download the whole repo to peruse or play with if you like, I made some gists for easy embedding.

This is the guts of the operation, I created this javascript object that handles everything, you past the ajax event, method, parameters and a callback function. The plugin takes care of the nitty gritty details that are a pain to remember for getting jsonp to work.

It’s well commented, so read through and feel free to ask questions in the comments if you have any.

Here’s the example, you might say, wait a minute, don’t you get a callback from jQuery already? Sure, good luck using it. It’s a little funny ignoring that, but hey, this works nicely.

Maybe I’m overthinking / over-complicating things, I don’t know, once it’s set up you can move really quickly, isn’t that the point of a framework?

Just one important note: make sure to validate the hell out of things because you’re giving that JS function a LOT of power.

I’d love to hear your thoughts, if you have suggestions for improving it, by all means, please comment below!

Why we need to avoid taboos

“At the great religious metropolis of Hierapolis on the Euphrates pigs were neither sacrificed nor eaten, and if a man touched a pig he was unclean for the rest of the day. Some people said this was because the pigs were unclean; others said it was because the pigs were sacred. This difference of opinion points to a hazy state of religious thought in which the ideas of sanctity and uncleanness are not yet sharply distinguished, both being blent in a sort of vaporous solution to which we give the name of taboo.”

– Sir James George Frazer, The Golden Bough

Frazer posits that the source of pig being forbidden in the Middle East in ancient times was due to its sanctity, via the worship of Attis and Adonis, rather than its uncleanliness. Throughout The Golden Bough Frazer brings numerous examples of how an animal, or object, or place went from being sacred to being profane due to its taboo status.

Whether you accept the thesis of the pig, this idea is found elsewhere. From one generation to the next, once something became forbidden, the reason for its being forbidden got lost.

I grew up with a story about a woman who wanted to get the recipe for her mother-in-law’s pot roast. One thing that puzzled her about the instructions was where that she was told that she needed to cut off the ends of the pot roast, or else it wouldn’t be kosher. When she found the source of this custom, she discovered that the pan, in which the originator of the recipe used to roast her pot-roast, was too small. But because her mother-in-law hadn’t asked why, she thought it was a necessity.

I was taught this story as an example of the importance of questioning things that don’t make sense to you. When people avoid something, and it becomes taboo, the reason they avoid it gets lost, because they don’t transfer that knowledge.

I’m concerned about how it’s no longer acceptable to discuss things that make people uncomfortable. I’m afraid that if we cannot talk about these things,  we are giving up our power to work through them and find real solutions. Whether it’s religion, race, or body image, it’s toxic to make discussion itself taboo. If we cannot talk about something, it means that we will lose the very reason why the issue is important.

Case in point, how many people who were so adamantly supporting the confederate flag knew that its popularity rose in the 50s and 60s in direct reaction to integration?

When we don’t talk about things, their knowledge gets lost.

WPNYC: Typography – What You Should Not Do

I had the privilege of giving at talk on typography at the New York WordPress Meetup. The video has been posted to WordPress.tv, I hope you enjoy!

Note: This talk’s focus is on choosing fonts, not typesetting. There are some mis-uses of quotes and dashes here. Mostly due to bad habits developed as a result of their incompatibility with code.

How I Rea[r]d – Audible has changed everything

We all make resolutions as the new year comes around. Most don’t last a month, but half way through, mine seems to have stuck (tfoo tfoo) and I’ve been reading a book a week since January.

Over the past few years I’ve discovered that while I’m coding I am most productive when I listen to things. When I’m working on something that takes a lot of brain power that tends to be Bach or Mozart, a little less brain needed — Led Zeppelin or The Beatles. However, two thirds of the time I’m doing things I’ve done ten times before, it takes expertise, but not much brain power. That’s when I listened to podcasts.

TWO Free Books on Audible

About a year and a half ago I decided to try Audible instead of podcasts, I had just finished the back log of This Week in Startups and my day was feeling empty.

I rarely listen to podcasts now, I still have my few favorites, but I’ve been eating up all the books I’ve been missing, and discovering so many more I never knew I’d been missing. During my commute, during workouts and at work. I am a fanboy and am grateful.

Check out my reading list, I’ll keep adding to it as the year goes on.

I’ve decided to share my list now, because I’ve been feeling more and more a need to discuss what I’ve read. So if something jumps out at you on the list, leave a comment, or email me directly. I’d love to discuss.

Note: since I am reading with my ears (rea[r]ding) I’m also considering literary audio performances and courses as a complete book. You may disagree that listening isn’t really reading, it’s not quite as it is passive. But the outcome is the same, I’ve consumed the literary work in it’s entirety.

Typography, how to choose fonts for your site – WPNYC

In this talk I covered what you should consider, and avoid, when choosing fonts for your site.

Note: There are captions below the slides when it is in slideshow mode. For expedience, I resisted the temptation to mess with the caption styling.

Also note: This talk’s focus is on choosing fonts, not typesetting. There are some mis-uses of quotes and dashes here. Mostly due to bad habits developed as a result of their incompatibility with code.