Now on version 6, it's fast, well maintained, mature, and has good docs with readable code.
@bdarnell has done an excellent job maintaining it.
Here's one example:
Tornado supported async style coroutines before asyncio was a thing. Now it uses asyncio under the hood by default -- and it did so with an exceptionally smooth transition.
I'm bootstrapping a simple scheduling SAAS with my wife (https://www.cozycal.com/). As the sole developer, I definitely can relate to the feeling of constantly putting out fires.
We use Canny (https://canny.io/) for feedback tracking. It helps us with:
1. Transparency with our customers. On the support side, we can show that we're tracking their requests, and where they fit into our existing roadmap.
2. Less stressful development cycle. I'm still completing some work in our backlog, but after switching to Canny, it's much more clear what the next features will be.
Also, here's our public Canny board which lists our feature requests & roadmap: https://cozycal.canny.io/
From the article:
"Despite their name, herring worms can be found in a variety of marine fish and squid species. When people eat live herring worms, the parasite can invade the intestinal wall and cause symptoms that mimic those of food poisoning, such as nausea, vomiting and diarrhea. In most cases, the worm dies after a few days and the symptoms disappear."
> Virus stability in aerosols was determined as described previously at 65% relative humidity (RH) and 21-23°C. In short, aerosols (<5 µm) containing HCoV-19 (105.25 TCID50/mL) or SARS-CoV-1 (106.75-7 TCID50/mL) were generated using a 3-jet Collison nebulizer and fed into a Goldberg drum to create an aerosolized environment. Aerosols were maintained in the Goldberg drum and samples were collected at 0, 30, 60, 120 and 180 minutes post-aerosolization on a 47mm gelatin filter (Sartorius). Filters were dissolved in 10 mL of DMEM containing 10% FBS. Three replicate experiments were performed.
It's funny running into this article for the first time.
I've been using Tarsnap for a couple years now for our SAAS. After receiving the first month's email receipt for $0.25, I replied: saying something along the lines of "damn this is cheap! you could charge a lot more!". No reply of course. He's probably heard it a million times already.
Having gained a bit more experience with pricing our own product this past year, I think it might not be as simple as "he sucks at business".
Here's some potential (and highly speculative) reasons:
- He may not need the money. He's got a respectable day job that pays well.
- Higher prices mean less value for your users. Less value means less geek cred/love. I'd recommend Tarsnap to a fellow techie in a heartbeat. I probably wouldn't if it started at $100/mo.
- Higher prices mean you sell to a different audience with more responsibility. High touch sales, support email threads with 10+ folks all demanding different things, handling exotic types of billing, etc. Many devs don't like dealing with this kind of stuff.
- What if he's doing this as a lead gen for his consulting services?
How come? I think it'd be likely that there will eventually be a hybrid text-to-speech engine that is trained on the narrator, and can continue where they left off.
It's easy to start a project to satisfy a creative itch, however, once committed full-time, passion may not be enough to keep you going. Then it becomes difficult to maintain productivity and focus.
Many folks don't realize that growing a business is a continuous cycle of iteration, and that they themselves must be included in this process. For me, motivation has shifted from satisfying a creative itch, to the joy of getting a new customer.
I also think that school (especially grad level studies) may be in some ways detrimental to an entrepreneur, in the same way that an athlete struggles to correct a flawed technique burned into their muscle memory from their youth.
If school has trained you to satisfy an external stimulus (e.g. your thesis advisor), then you may be looking for the same thing in someone telling you what to do. At the end of the day, a business is about customers. I'd heartily recommend you tie that into your own iteration cycle of how you work.
I self cut and fade at the edges, but I think the keys to doing this correctly are:
1. Good visibility of the back and sides of your head. Either a 3 way mirror, or some kind of video setup with your phone and a laptop.
2. Patience and practice. The muscle memory and hand eye coordination needed to handle the clippers correctly takes some time. If you cut your hair once every couple of weeks, that's approximately 25 reps per year, which really isn't that much considering the spacing between reps is so long.
Edit: I missed that you have been doing this for 12 years. That's longer than I've been at it ~3 years.
Another thing that helps is watching YouTube vids of legit barbers. There are a ton of different techniques that accomplish the same thing, you might find some new insights into ones that work for you.
but there are also dozens of other cryptocurrencies which are drop-in replacements for Bitcoin.
I don't see any drop-in replacements. I can see your point if you meant sharing a codebase. However, if you look at it as if it were a business, brand & marketing count for a lot.
This pattern was taught to be by a former mentor, except he phrased it "always be ready to ship". I used it to convert my app from rendered HTML + jQuery into a full fledged VueJS app + API. Much, much better than rewriting.
One more thing to add, is that a lot of software (e.g. SAAS) has users that depend on it. You want to make sure that your customers are happy through the transition.
Now on version 6, it's fast, well maintained, mature, and has good docs with readable code.
@bdarnell has done an excellent job maintaining it.
Here's one example:
Tornado supported async style coroutines before asyncio was a thing. Now it uses asyncio under the hood by default -- and it did so with an exceptionally smooth transition.