Introducing Lightweight Storage

Just about every webapp out there serves up data stored on a relational database. While RDBMSes are not particularly easy or pleasant to deal with, most programmers know how to use them, and popular frameworks provide all sorts of wrappers which aim to solve the impedance mismatch of SQL while preserving much of its querying flexibility. Aside from the need to map application data to relations, the use of relational databases has a number of other drawbacks. RDBMSes do not scale up easily, they have significant administrative overhead, and they are difficult to tune for performance.

In plain terms, configuring and properly setting up a replicated database server takes a lot of work. It requires maintaining disparate configuration files for different machines, and it requires an intimate understanding of various tuning parameters. It helps to have a DBA on staff to deal with these headaches. Once the infrastructure works, all database access requires great care. After tuning indices and queries for one usage pattern, a subtle change in requirements often leads to modified queries and a new usage pattern which slows the database to a crawl and requires an entirely new, time-consuming pass through the schema, the indices, and all queries to make things fast again. I spent enough time staring at Sybase’s showplan output after adding a feature or fixing a bug to have come to hate the process of optimizing queries. Even once everything starts to tick, it sometimes turns out that the data size and usage load has outgrown the capacity of a single server, and the schema must be denormalized, sharded across multiple servers, and once again optimized. In addition, applications must be modified to stop assuming that they can get away with querying just one server.

memcached is an example of a data storage mechanism which has no such overhead. To run, it just needs to know how much memory to use, and which network interface and port to listen on, and it just works (memcached -d -m 2048 -l 10.0.0.1 -p 6789, for example). Of course, memcached has no replication or redundancy features, nor does it do anything except simple key-value storage and lookup, so the comparison is unfair. However, quite a few application domains do not need all the querying power of a relational database, and want none of the performance or maintenance overhead which comes with it.

Event queues come to mind. Twitter seems to feel the same way: it recently released its event queue, Starling, as an open-source product. Although Starling persists data to disk, it does not itself have any redundancy or replication features, so the loss of a disk would result in the loss of all queues stored on that disk. High-availability tools, like Heartbeat and DRBD, can help mitigate the risk, but they again introduce administrative overhead.

The ideal data store would boast disk-based and memory-cached persistence, ACID transactions, a replication mechanism, the ability to store and retrieve data in slightly more complicated patterns than just a key-value lookup, and zero administrative overhead. It turns out that something very close to this ideal has existed for many years: Berkeley DB. Its core C library provides a flexible data storage library and a handful of primitive operations for operating on data stores. Its Java Edition provides a higher-level annotation based persistence mechanism whose usage resembles Hibernate and EJB3. (Bindings for languages other than the Oracle-supported C, C++, and Java unfortunately lag in terms of features, and none except C and C++ support the replication framework.)

I decided to try Berkeley DB, and immediately discovered two things: on one hand, throwing away SQL and its data definition language is scary, because reconfiguring schemas now requires actual code. On the other hand, throwing away SQL for queries felt like throwing away a crutch. Because Berkeley DB operates on a low level, I never had to wonder why a particular access operation runs slowly. If something performs a dreaded table scan, it does so not because SQL obscured an expensive operation — it does a table scan because I wrote the loop myself. I quickly learned about secondary databases, which work like indices on primary data, but provide more flexibility because they allow programmers to slice and dice both keys and values in arbitrary ways to produce new keys into the same data. The experience was eye-opening.

Oracle, which acquired Berkeley DB by buying Sleepycat Software, boasts that Berkeley DB has “an interface designed for programmers, not DBAs” (half-way down the Java Edition page). This seems true enough, as deploying a Berkeley DB application is trivial: just install the libraries, and make sure your code knows where to put the data stores. Stores cannot be placed on network storage, because typical network file systems (NFS, SMB) lack sufficiently rigorous semantics. This makes Berkeley DB an interesting tool for building applications which scale horizontally, where individual disposable nodes in the system replicate data out to other nodes. Google, famous for building its infrastructure on inexpensive hardware and achieving scale using cluster computing, chose Berkeley DB for storing accounts.

I must also mention two other fascinating storage systems. First, Franz sells a product called AllegroCache, a persistence mechanism for the Common Lisp Object System. For anyone enjoying the luxury of coding in Common Lisp, AllegroCache only seems to lack replication features. Second, the Mnesia database which comes with the Erlang/OTP distribution has two unique features: dynamic table fragmentation and dynamic replica management. Roughly speaking, Mnesia lets the programmer control, at runtime, the number of data fragments and how many replicas it should keep on the available nodes.

Writing Your Business Plan


We’re currently writing our business plan after several months of market research. In that time, we’ve come across lots of great resources for putting together a plan and we’d like to share them with you. We’re not going to get into a discussion of why even Web 2.0 companies should have a business plan (at least not in this post) but suffice it to say that even if you are not putting together a plan for investors, you should be putting one together as an operational guide for your company.

Getting Started

For a wealth of resources on business planning, Tim Berry is the the ultimate guru. Some twenty years ago he started Palo Alto Software , the makers of Business Plan Pro - a useful software package for building a business plan if you prefer a hand-holding approach. If you have the time, watch his presentations on The Not So Big Business Plan, Your Business Plan, Beyond Startups, and Basic Business Numbers. They run from 30 mins to an hour and while the audio quality varies, Tim delivers in a soothing tone more akin to watching Bob Ross paint than listening to your high school economics teacher. There are a lot of other great resources Tim has made available, which we’ll be linking to below.

Books

  • The Hurdle Book - Tim Berry’s detailed but compact look at writing an effective business plan. I wouldn’t start with this but when you are looking to understand the more complicated elements of financial projections, this covers it better than most. I’ve linked to the free web version, but you can also pick up a print copy through Palo Alto Software.
  • The Art of the Start - this is a must read, by Guy Kawasaki. Seriously, just get it and read it.

In-Depth Guides

Sample Outlines

There is no set way to structure a business plan. The books and guides above all have outlines, but taking a look at the following will quickly give you a good idea of the general structure.

Sample Plans

More Tools and Templates

  • PlanHQ - this is a really promising web-based tool for utilizing your business plan as an ongoing process. There is a free trial, plans range from$9-$49 a month.
  • NEBS Business Plan Tool - a simple web form for fill-in-the-blank business plan creation.
  • SCORE Business Templates - editable Excel sheets, Word docs, and printable PDFs.

Additional Resources

When I was a kid, I hated going to the library. Many people have told me they find the experience of being lost in the stacks to be a pleasant one, but for me my OCD would make me feel overwhelmed and paralyzed. I felt like it was impossible to navigate, and I would feel a sense of hopelessness that even if I could find my way around, I’d never be able to absorb the miles of books around me… so why bother? I realized that the key to navigating a public library is to ask the librarians for help, but you know what, I was an introverted kid and I wasn’t about to go anywhere near them.

I made it through the public school system almost never visiting a library, and in college I only ventured inside to meet classmates or admire the architecture, and I once went to explore the stacks with, uhm, a companion. Luckily for me, the web came about just in time to satisfy my intellectual curiosity and I haven’t left it since. This is not to say I don’t read books - I certainly do, I just don’t get them from the library.

Science, Industry and Business Library of NYSo it was with a fair amount of trepidation that I went to visit the Science, Industry and Business Library, a branch of the NY Public Library. It was a dreary, rainy evening and upon entering a stand of plastic baggies for umbrellas reminded me of where I was. Yet glancing around I suddenly had some hope. This is a modern facility. A wall of plasma screens showing the evening news and library information line a wall. A beautiful irregular staircase in an open atrium space leads down to where I was to meet the rest of the group and begin what I was now hoping would be an enjoyable adventure. I know the libraries contain vasts swaths of data useful for our startup’s business planning and I was excited that something was kicking me in the butt to get back in there.

And then reality came crashing down around me.

Two hours later I found myself dazed and confused, wandering out of a room where we had been sequestered for a powerpoint and web surfing introduction to what must have been a hundred different databases and other library resources. Our librarian instructor was a sweetheart, but the session was terrible. In fact, I’m not going to bother to put my thoughts together eloquently, I’m just going to list them randomly:

  • If librarians are trained in information management, shouldn’t the ones giving presentations at least be trained in that form of it? I know putting together a good presentation is extremely difficult, that’s why I picked up a copy (from Amazon) of Presentation Zen.
  • When demoing how to do a search query on various library resources I was stunned by how bad the results were compared to anything I’d get just dumping the same terms into Google. This is not me being all lovey-dovey with Google. It actually saddens me to realize how “single-sourced” the nature of my information retrieval experience often is, but if this is the alternative…
  • We were never given a tour of the facilities, so of course I would be just as physically lost if I returned there as I would have been without the session.
  • At one point the librarian gave an anecdote of a young man who came in and sat down for three hours searching for information for his business and then, in frustration after having found nothing, approached her for assistance. She noted that in five minutes she had found something useful for him, so we should just ask for help. Something about this really bothers me. There is something to be said for fearing those with the keys to information. It makes me wonder if the entire system is set up to serve the librarians rather than the visitors. Either way, how is it possible that someone could come in, sit down for three hours, and not find anything useful!? This seems like an interaction design failure on a major scale to me.
  • Although the facilities were modernly beautiful and well maintained, the web resources look and act like they haven’t been significantly refreshed since 1996. Even the flat panel monitors in the lab we were in were set at resolutions lower than their default.
  • Although I signed up for a library card that would give me access to many of their databases from home, some of the most useful ones are only available if I show up in person. This is not to prevent duplication however. You are free to come in with a flash drive and copy anything from those resources that you like, or even email them to yourself. You just have to show up first to do it. I know this isn’t the libraries’ fault, it’s the sources providing them with the data, but still, this system needs to embrace abundance over scarcity and the public institutions need to set the appropriate precedents.

I think I realize why I still have a problem with libraries. They are designed with the expectation that any serious user of the system is willing to devote an inordinate amount of time to learning the intricacies of the system and, frankly, that information should not be easy to find. It should be a reward for hard work (either on the part of the visitor, or the librarian). We are working on tools for information consumption here at Eluciv Knowledge and the previous statements are exactly the opposite of our approach.

Book Review: The Monk and the Riddle

If you’re involved in a startup, you know how hard it is to find the time to sit down and read a book, especially one that isn’t about some new scripting language. Here at Eluciv Knowledge we get much of our reading done through our feed readers. Still, it’s important to step back on occasion and get involved in a deeper discourse, and reading good books can help you achieve new heights with your venture and re- frame your thinking. We’ll be reviewing lots of great books for the entrepreneur, and we’re getting started with The Monk and the Riddle, by Randy Komisar.

The Monk and the Riddle

The Monk and the Riddle

Although written during The Bubble, The Monk and the Riddle is a surprising clear-headed and inspiring read on the nature of entrepreneurship and the pursuit of the Next Big Thing. In fact, if you’ve read it before it’s worth a revisit (as I just did) in light of the current “frothiness” in the Web 2.0 space. It’s an easy going read that, thanks to its storytelling nature, can be accomplished in a few hours.

Randy Komisar, an accomplished tech CEO, entrepreneurial adviser and now partner at Kleiner Perkins Caufield & Byers weaves a fictional story about Funerals.com (”we put the fun back in funerals!”) with elements from his own career journey. Throughout these accounts, he questions why most of us operate on the “Deferred Life Plan”: work hard now so later on we can do the things we really enjoy. For those of you who have read The 4-Hour Workweek (we’ll review that one in the future) this might sound familiar, but while Tim Ferris is focused on reducing work to make more time for play, Komisar is talking about involving yourself in work now that you are deeply passionate about instead of waiting for some indefinite time in the future (that, with the DLP, will likely never arrive).

The most insightful statement in the book for me was “it’s the romance, not the finance, that makes business worth pursuing”. Looking around the web today, you can see a lot of bright people being driven by the promise of monetary reward to focus their energy on things like ad placement optimization. The problem is, when the going gets rough (as it likely will be with the arrival of a recession) money is not enough incentive for entrepreneurs to pull through the hard times. You need passion. Passion is what keeps us going when everything else says “run away”! I don’t know about you, but I just can’t get too passionate about ad placement optimization (though I bet you know someone who seems to be :-) ).

FastTrac: Marketing

A few weeks ago I joined the 12 session FastTrac business development program facilitated by ITAC in downtown Manhattan. My instructor is the venerable Charlie O’Donnell. So far the program has been very informative, and I am aiming to try and cover some of the key concepts here on this blog. I’m going to start with today’s session on marketing led by Paul Kontonis of For Your Imagination Studios.

What is Marketing?

The bottom line is that marketing is about sales, period. Marketing is your company’s strategy to attract people to your product, educate them, and ultimately make a purchase. But the key is to not get lost in generalities such as “I want to run lots of ads so people are aware of my product” but rather to clearly justify why that approach will result in meeting your sales goals.

Thinking about Customers

There are two types of customers you need to consider when developing marketing approaches, first time (or trial) customers and repeat customers. The basic challenge is that the for the former, you need to figure out how to make that sale the first time, whereas the later is about making the sale again and again. Companies should develop a strategy for each and a model for what percentage of sales they are aiming to get from each category.

Most of us are familiar with the basic ways of defining a customer, such as using age ranges, income ranges, gender, location, profession, etc. Paul suggests ditching the generalities and actually picking specific targets. For example, don’t think of your target market as 18-35 year olds. Pick an age, such as 28, and plan your marketing for that. Why do this? Well, we all know that there is actually a big difference between 18-yr-olds and 35-yr-olds. If you focus very specifically on your most likely target age, 28 , you’ll get a high success rate with that age in addition to what amounts to a bell curve from around 18 to 35 all while having a much clearer picture of who you are targeting. The same can be done for most of the standard customer profile properties. For example, don’t use “urban northeast” as your geographic target, use New York City. Finally Paul recommended finding a picture to attach to this ideal customer and plastering it on your wall. This of course immediately made me think of personas, a pretty successful approach to user-centric software development.

Branding

Branding is essentially a promise of value to the customer. A successful brand will reinforce a sense of value and quality in the mind of the consumer and is particularly important for maintaining repeat customers. Brand associations revolve around tangible, subjective, verifiable or objective claims. For example, a paper towel might be marketed as the most absorbent (tangible), a microwave dinner as the most fulfilling (subjective), a burger as having the largest beef patties (verifiable), or a car with the highest 5-star crash test rating (objective).

A point was made that I think is especially important to smaller companies in the process of building their brands. Usually the founders have a vision of what their company looks like a few years out, what their offices might look like, what their customers might look like. This guides how they shape the brand. However, as the company grows these ideas influencing the brand must get out of the founder’s heads and into a form that can propagate on its own throughout the organization, so that every employee knows what the brand means and how to make decisions that accurately reflect the branding of the company.

Positioning

Positioning is how you aim to have your product perceived in the market in relation to everything else. It’s especially important for first time customers. In the market perception is truth.

Paul recommends charting a FAB analysis for your product or service. It should look something like this (notice there are two extra columns snuck in):

Features Advantages Benefits Need vs. Want Competitors?
List each “feature” of your product or service. Describe what it does. State the benefit. (there are really only three: saves time, saves money, or makes you feel better) Is this feature needed or wanted by the customer (if the product/service isn’t valuable without it, it’s a need) Do competitors have this feature? (yes / no)

Ideally, you are positioning your product/service using features that are needs and are not offered by competitors. However, good positioning is always benefit oriented.

There are 8 ways you can position your product/service:

  • product differentiation (think SUV vs minivan)
  • key attribute differentiation (the “killer feature” no one else has)
  • against a category (e.g. against “big business”, or “the old way”)
  • against a specific competitor (think Mac vs. PC ads)
  • association (with a celebrity, a location, another brand, etc. - “the Rolls Royce of easy chairs”)
  • usage (think champaign for New Years or other special events)
  • ideal user (think Marlboro or Mitchum Man)
  • problem/solution (problem: germs / solution: “antibacterial” hand soap)

Look at your chart then settle on a few approaches from the above list to best position your product/service and its most important features, and then market test them.

“Set” the game

Engineering a reliable platform or planning the correct business strategy takes a considerable amount of mental effort. As exciting and interesting as these challenges are, it is easy to get lost in the minutia and get stressed out about minor details, where the details are usually rare but possible edge-case code scenarios, or unlikely but possible market “what ifs”. Here in the offices of Eluciv Knowledge we are always on the lookout for methods that would allow us to take a short mental break, take a step back and refocus. Most of us are avid video gamers and chess enthusiasts, but video games and chess have certain negative qualities that make them less than ideal choices in a startup environment. Video games have the have the potential to turn into a giant black hole of time, easily eating up two hours if you’ve just stumbled on an interesting “Witcher” or “Oblivion” quest. Chess seems to exercise the same faculty of the brain that coding and business planning exercise - the one that is most heavily involved in multi-step strategic processes. So, if you are stuck on a strategic question, chess is quite possibly the worst thing to turn to. Also, we are not really into speed-chess, so a game can turn into a 30 minute affair - not as long as an RPG quest, but still.

    The ideal activity has to have the following qualities:

  • It must be granular enough that an individual session lasts about ten minutes.
  • Must not require long-term strategic planning.
  • Individual sessions must be different enough that 2-3 sessions in a row are still meaningful and exciting, if a longer break is needed

Currently, the “SET” game satisfies those requirements. SET exercises a very different mental faculty that is heavily tied into visual pattern recognition. Intuitively, I am inclined to say that it is not a faculty that comes into play often during engineering efforts, at least for me; thus it is a very welcome respite. I have been playing it on and off for the last 4 years; Orian and I have introduced the rest of the team to it, and so far the response has been positive: even Constantine, who at first dismissed it as “bull@#$%”, admitted the next day that it was quite fun.

A prima facie criticism applied to SET is that it seems to be very much a game that appeals to a person’s innate talent - either you are predisposed to finding visual patterns very quickly, or you are not, and that’s the end of it; or you started playing it very young and the impressionable brain has shaped itself in accordance. Thanks to my personal experience, I am inclined to disagree. I only learned and started playing the game after college, at 22. Prior to that, I always considered myself as ineligible for any kind of visual pattern recognition activity. I have come a long way since then, and consider myself to be a somewhat competitive SET player, though only in the casual setting.

First! Welcome to Eluciv Knowledge.

Although I’ve been held up with a nasty cold the past few days, I seem to be experiencing a reprieve, and with that I am taking the opportunity to welcome you to the Eluciv Knowledge blog. What is Eluciv Knowledge? Well, we are currently a stealth-mode web startup, so for the time being it’s up to you to decide what Eluciv Knowledge means to you :-)

What I will say is that we are based in Brooklyn, NY and that I work with a talented team of co-founders, Charles Kreps, Yuri Niyazov and Constantine Vetoshev and each of them will be writing here from time to time. Our goal for this blog is to foster discussion on issues facing the development, launch and ultimate success of a startup. We’ll be running the gamut from things like managing the development process, designing user interfaces, and deploying server infrastructures, to doing market research, getting incorporated, finding customers and dealing with co-founders! :-)

We look forward to having you along for the ride,
Orian Marx
Founder and CEO

About this blog

This blog documents the life of Eluciv Knowledge, a stealth-mode startup in New York City.