Your comment states the problem space addressed by SQLAlchemy 2.0, which is what the above document is about, really well! So for your comment to have value, what did you think of SQLAlchemy 2.0's direction in how it seeks to vastly improve the very issues you speak of, "where the transactions are", "how committing works", etc.?
It sounds like you were relying on flask-sqlalchemy in any case which unfortunately makes some poor decisions in these areas, but in SQLAlchemy 2.0 these things are brought forward unconditionally in all cases so you really can't talk to the database without having your transaction and its scope front and center.
Well, I had recently adopted an Australian Cattle Dog puppy but had a full time in-office job. They’re a very active breed and leaving her at home all day wasn’t an option. That prompted me to find a dog daycare, something I had never heard of (and honestly thought was slightly ridiculous). When checking out the first day, I noticed their business was a mess. Everything on paper, in messy stacks at the front desk. And then it took almost 5 minutes for them to be able to accept my card payment (one of my biggest pet peeves). That got me thinking- why isn’t there software in this niche? It turns out there was, but it was all CD-ROM software straight out of Windows 98 land. I didn’t know Jack shit about dog kennels so I emailed 10 local businesses asking if they’d beta test what I built and provide feedback. 1 wrote back so I drove over that day. The owner didn’t know anything about computers but he set me up with his manager- an aspiring product designer. We hit it off immediately and started collaborating. Eventually we became 50/50 business partners. Once we had built something we decided to show it off at a trade show. Turns out there was one in our city the following week! We bought a booth, and a shitty sign and 2 polo shirts and showed up. Every single person there lined up to see what we had built. We knew we had something. Got our first customer that day. Eventually it became more work than we could handle on nights / weekends, so I decided to pay my partner’s bills out of my own pocket (from my day job) so he could quit his and run the day to day until we had revenue to pay both our bills. We got there after a few months. After that, we worked 16 hours, 7 days a week for about a year. We started hiring people. The rest is history, as they say.
To this day, my partner is my closest and most trusted friend, even though we haven’t worked together in 2 years.
Filesystem paths are not strings. Linux doesn't enforce an encoding. Windows at least didn't used to enforce proper use of conjugate UTF-16 pairs (see WTF-8 encoding).
I think OS X does perform UTF-8 normalization, which might include sanity checking and rejecting malformed UTF-8, but I'm not sure.
A byte array (or a ref-counted singly-linked list of immutable byte arrays to save space/copying) is a much better representation for a file system path. That doesn't have great interaction with GUIs, but there are other corner cases that are often problematic for GUIs. In high school, one of my friends had a habit of putting games on the school library computers, and renaming them to names with non-printable characters using alt+number pad. (He used 129, IIRC, which isn't assigned a character in CP-1252.) The Windows 95 graphical shell would convert the non-printable characters to spaces for display, but when the librarian tried to delete the games, it would pass the display name to the kernel, which would complain that the presented path didn't exist.
Honestly, nothing holds up to Mullvad [1]. They don't even take an email address while creating accounts, and you can pay easily with Bitcoin or even with cash mailed to them.
I'm not affiliated, just a very happy customer.
Mullvad is also who Mozilla trusts for the Mozilla VPN [2]. You can sign up with that if you'd like Mozilla to get a cut.
For me it’s the Zettelkasten/smart notes app I’m working on. I’ve been a frustrated with how I take notes from books, videos, blog posts, etc. I want to build a zero-inbox style workflow around organising my notes consistently so that I can start to blog with a wealth of research and ideas at my fingertips. So I’ve started building Flowtelic.
Be careful not to fall into the narrative the mainstream US media is selling, though it shifted drastically yesterday -- this is not a coordinated attack. WSB is full of people shilling all types of tickers for all types of reasons, but there is a large amount of people there who understand (or at least pretend to) the dynamics of a gamma + short squeeze, and are in it for that reason.
The person who posted one of the earliest bull case research for this (referred to by his YT channel name RoaringKitty or his reddit username u/deepfuckingvalue) has been into GME since last year. He was holding LEAPs (long-dated call options) and shares and has been holding for the last year. He was ridiculed in the original post, because everyone still believed Gamestop was Blockbuster v2. Gamestop is not Blockbuster v2 (I used to think it was), but what's happening right now is not about fundamentals (and if you see anyone arguing that, they are trying to trick you by reframing), it is about the mechanics of a combination of a gamma and short squeeze happening at the same time.
Hedge funds do this kind of attack when they realize the opportunity is there -- you don't hear about it because it doesn't make the news, and because the news makes up a rationalization. Here's an example -- a bunch of stocks that were essentially left for dead (heavily shorted) popped yesterday and the rationalization was retail jumping in. That makes sense, unless you take a second and think about it -- how can the retail that's all still all-in on GME be simultaneously moving huge amounts of market cap of smaller companies? Yes those companies were cheap but they're cheap because they were shorted -- this means anyone could move them. Don't forget that ~90% of all stocks are owned by the top 30% or something like that. Retail can possibly cause gamma squeezes (see TSLA last year), but institutions have to take part for it to go anywhere.
It is 140% the fault of the short sellers that didn't take profit last year (assuming some rode GME from 45 to 5, this is a ~10x position If i understand correctly) that this short squeeze had the chance to happen. Greed got them.
They are generally acting in a market maker role. That doesn't mean they don't think they'll make money from it though. Hedging even large delta and gamma heavy positions doesn't tend to move the market much. Something like 70-80% of options expire OTM, so they do consistently make money from collecting premiums.
But a situation like the one on GME where there is MASSIVE and sudden interest in the stock to the tune of billions of dollars worth of buy orders for both stock and options being placed in a short amount of time along with tens of thousands of people encouraging each other not to sell combined with the insane short interest and shares held by institutions that reallocate infrequently...you can end up with a disaster like the GME gamma squeeze that leaves MM's in somewhat of a prisoner's dilemma. They're more or less obligated to cover because the others are more or less obligated to cover. Meaning that they're ultimately all going to have to cover, driving the price up.
So usually they do make good money from selling options since they ultimately keep the premium of most options. Sometimes they don't though.
Interesting question. I looked at the source code to understand that.
SQLite knows where to look for when you open a SQLite database and you run a query, right? It just asks the underlying filesystem to provide N bytes starting from an offset using a C function, then it repeats the same operation on different portions of the file, it does its computation and everybody is happy.
The software relies on sqltorrent, which is a custom VFS for SQLite. That means that SQLite function to read data from a file stored in the filesystem is replaced by a custom function. Such custom code computes which Torrent block(s) should have the highest priority, by dividing the offset and the number of bytes that SQLite wants to read by the size of the torrent blocks. It is just a division.
The reason that C programs often perform well is that it’s so incredibly hard to do anything at all in C (especially something reliable) that one can usually only do the simplest thing possible and this typically means simple data structures, simple algorithms and arrays. In many ways, modern CPUs are particularly designed to run the machine code generated by C compilers on typical C code like this. Pointers and memory allocation are often painful or fickle so use of pointer-heavy data structures like linked lists is quite uncommon.
The reason that C programs often don’t perform as well as an equivalent rust program[1] is that it’s so incredibly hard to do anything at all in C (especially something reliable) that one can usually only do the simplest thing possible and this typically means simple data structures, simple algorithms and arrays
[1] suppose the programs are independently created at the same time by programmers of equal ability and are idiomatic in their languages. If a C program is rewritten in rust, it is likely to be faster, but that would likely also be true if it were rewritten in C.
I've been working on a platform to enable anyone to affordably sell digital products online. In particular, Flurly charges no monthly fee & only takes 1% of each transaction, which is 5x cheaper than competitors like Gumroad.
I hope this can be useful to online sellers in the hacker news community. I believe more money directly to creators is net good for the world. Some may wonder how I plan to make money on this. It's a fair question. My current plan boils down to two key factors:
1) Cost efficiency. By utilizing technology platforms like Stripe/Firebase/Vercel/Algolia/Sendgrid, I can amortize the cost. Or in other words my costs grow with revenue/usage. This way, I don't need to buy physical hardware servers, or negotiate deals with banks or write my own database, or spend time on SRE. Also since it's just me, I don't need to pay for employee health insurance, benefits, etc.
2) Volume. Hopefully by lowering the cost of doing commerce, more people will buy and sell, increasing the overall volume of commerce. Since the commission is on the overall volume, hopefully I can recoup some revenue/profits that way.
Please let me know if you run into any issues and I'll look into it right away
I decided to create an app to browse and search through videos on your computer. There are many out there, but none had the specific set of features (and visual appeal) that I wanted.
I now sell about 100 copies per month for about $500 income per month. I give $350 to charity for every 100 copies, but that's a personal decision.
Building it has been a great learning experience. Interacting with customers has been a very rewarding experience (so many people love it).
I have been making my living selling software online since 2005. I know lots of other people who do the same. We've almost all tried affiliate marketing and almost none of us have had any worthwhile results from it.
Affiliate marketing also attracts a lot of bottom feeders and scumbags. For example they will advertise an non-existent discount for your product, stuff a cookie for anyone who finds that 'discount' via web search and then take their affiliate commission if they buys later. Also your LTV is probably too low to attract any decent affiliates.
I'm not saying affiliate marketing never works, just that it almost never seems to work for small software companies. So I would put trying it very low on your TODO list.
Also don't bother with Google Adwords unless you are prepared to put in some serious effort and money to learning the system. I have also been doing PPC ads for 15 years. During that time the cost per click and the complexity of Adwords has just gone up and up. PPC works best when you have a high LTV and there are clear, unambiguous phrases that convert. Do both of those apply to you?
Have you tried partnership? Try approaching someone who already has distribution and a complementary product. See if they will push your product to their existing customers for a percentage. Perhaps a VPN vendor. That might be a case where affiliate marketing could work.
> This article seems to point out why TikTok is widly successful:
Yes! 2.5 years later it seems obvious, since TikTok solves this problem by avoiding a newsfeed focus and just showing people whatever makes them happy and keeps them engaged, no matter the source.
The business motivation aligns much more closely with the user's motivation - as such, I trust TikTok to do content curation for me, whereas I hated whenever Facebook did the content curation and I felt just ok that Twitter let me do the content curation myself.
It's a complete paradigm shift that is not fully imagined in the article, nor in HN's 2018 comments.
Some potential areas of exploration you can think about:
- Natural Language Processing (nltk and SpaCy) - there are a lot of people trying to build tools to parse contracts, judgments, legislation and much else besides. You got a big pile of documents and you want to find every single mention of a company name in a stack of thousands of documents: time for named entity recognition. Similarly, in policing and in private sector fraud detection, natural language processing is being used to parse through the hundreds of pages of emails/texts collected from the average person's phone or laptop.
- automate work around office files - openpyxl lets you open Excel files, python-docx for Word files
- Simple web applications with Django. Django was built initially for making small projects to support journalists to enter data using an admin panel, then display it on a website. If you need a simple data collection tool, a small Django app may just do the job.
- If you're doing contract review or transactional work, DocuSign has an API. Automating workflows around that could allow you to be more efficient.
- I've ended up writing code to automate some of my email handling. Accessing your email using imaplib means you can write scripts that'll process email in ways that go beyond the simple email filters in Gmail/Outlook.
- If you're dealing with governments or regulators in pretty much any capacity, you'll probably end up wanting to do screen scraping eventually to automate the processing of data published on the web. Requests, BeautifulSoup and Scrapy are your friends for this.
- Notifications: if something is running in the background and takes more than a few minutes, I don't want to waste my time sitting and waiting for it or remembering to check it. On Mac, Linux and Windows there are tools to let you send yourself notifications... or you can use APIs to send yourself notifications via messaging apps like Telegram/Facebook Messenger, or (for a cent or two per pop) by SMS. There's APIs like Pushbullet and Pushover to plumb together mobile notifications for iOS/Android too.
- Time tracking: if I find myself having to account for my activities in, uh, small billable chunks at some point in the near future, you can bet I'm doing what I can to automate the hell out of that.
Before "life hack" meant "a silly thing you learned on BuzzFeed that you'll never actually do", it was used to refer to the often rather hacky set of tools and scripts used by software developers to be productive, and to glue together and make sense of their information dense lives. There are non-tech professionals who are using coding skills to automate their professional practice - like accountants building their own homemade document processing systems by cobbling together Dropbox/Google Drive/etc. with little scripts and cron jobs (etc.), and if you can get good at that, you've basically got a superpower that many of your colleagues won't have, and you've also got domain knowledge software developers don't have.
Congrats! I ramped a little faster but followed the same path. The project started at my kitchen table now grosses $13M per year (10 years later). Keep going my friend; the road will be rocky but it's well worth the time and effort once you reach the top of the mountain!
Very nice. Congrats. Keep on going.
I remember that I started with my side project back in 2011. A small app. It made like 1 dollar a month. I spend like 8 hours on it every day and night next to my normal day job.
People were thinking I was insane. After 1 year, it made like 1 dollar per day. Then few months later I got 20 dollars in one single day. Another few months later it made for the first time 100 dollars a day. Still worked on it for many many hours.
App is still running today and generating 2k per day. It gave me freedom to quit my day job and the opportunity to start a business as around it a few years ago. And just recently I started an entire new (more serious) fintech business.
Although I know it's not easy to start something like I did. But on the other hand. Most people are not even trying it. I always tell people to really start making something you feel passionate about. (I am talking from a developers perspective) Don't look at others and don't do something other want you to do. If money is the motive, then you will fail for sure.
I've worked in the mobile games space for several years now, currently at a mobile games startup. Some advice:
- You're biting off quite a bit of tech you've never used, it sounds like. If you want cross platform mobile + web support, Unity is probably your best bet in terms of ease-of-use vs. portability
- I'm not sure a graphic designer is going to be able to help you with the more game-specific aspects of game graphics, but I could be wrong. Animations that work well with your game engine of choice can be a big pain
- I would buy a book or a course on some kind on mobile game monetization and marketing. It was very different from what I was used to in the SaaS space. Paid user acquisition seemed like a strange concept. Running paid UA campaigns with different install price bids based on quality of player was also a strange concept. If you want the game to make money this stuff will come up.
- Try to use services as much as you can. You're a startup, after all, you want to spend your time building the things that make your product unique. Playfab is okay but lacks decent analytics features + crash reporting IIRC. Firebase is good for mobile apps stuff but the analytics aren't great and they name stuff horribly. Regardless, pick one and try to lean on it heavily - only build the stuff you absolutely have to. Lots of tools have free trials and free tiers, use them.
- If you've never worked in games before, I would look up normal game development process. A simple version is to prototype things aggressively, then throw the bad parts out, then repeat until you're ready to do what's called a Game Vertical Slice, which usually just means to build all the "essential" parts in a way that lets you use them together. You want to flex your core loop in GVS, so you'll need each relevant piece in a usable state. When you make your GVS build, play it a lot, share it with friends, maybe try to get some friends of friends or parents involved. You want honest feedback. Is it fun? Are there parts of it that aren't? Are there things in the core loop that don't make sense? Are there gaps in the core loop? The data you'll get out of GVS is going to very aggressively scope your actual launch + success.
I say look into game development processes because I think it's important to timebox your curiousity and perfectionism. If it were a side project, I would say kind of follow your curiosity and build things exactly as you want them. Because you're trying to actually launch something, I would follow a hard structure such that you know you need to move on when you're spinning your wheels.
I'll try to think of more to write back. If you have questions I'm happy to answer them. Games are great, and making them is also great.
I hope you're rich, because the vast majority of indie games, even when well designed and marketed, fail and most of the rest make almost nothing. And most of the rest of those only succeed for a few weeks or months when let's players happen to discover them and make them viral.
As far as the framework, my advice is Unity or Unreal for 3D or console, Godot for 2D, but Unreal only if you have a studio and a budget otherwise it's overkill. But in the end the framework itself matters less than the license, which matters less than the game itself and the platform(s) you intend to publish to. Remember the guy who made Flappy Bird crapped it out in a weekend and made so much money on it that it actually scared him.
It's also important to remember that the code is the least important part of a game's success. The code just makes it work, it's the plumbing, not the architecture. The days when clever programming could make a game are long, long gone - now, code is only notable when it breaks. What makes a game successful is design, artwork, production, the things the player engages with and cares about.
No, sorry.. what makes a game successful is mostly luck, but a game won't have a chance to be lucky without the rest of it.
Game publishing is a numbers game. Most games go unnoticed, very few will break even, only "lottery winners" will make real money. The stores are full of well executed games with original ideas that you/we never heard about and never will. Games in page 1 of each category will make money, then there is those from page 2 to 10000.
We've spend a year and a half building a game that made us just over $1000. You increase your odds by having a name in the industry: known game designer, known franchise, known publisher, something that will put you in the front page of gaming websites for a few hours, but even that is just a push, no guarantees. You can also go for a quantitative strategy: build lot of small simple games. This last strategy worked better for us.
Make sure you take this decision knowing that failing is by far the most likely outcome. That's the hard truth about the game industry.
Sorry if those are not the encouraging words you hoped.
So, I am one of the cofounders of Kidoteca, where we got some family members to invest and we released a bunch of games.
1. Kidoteca never turned a profit, mind you over time the revenue is not terrible, but investors lost their money basically, games are still for sale and still generating revenue but too slowly to be useful.
2. Many bigger investors are wary of supporting such business, because they got scammed (games in general have some fraud here and there, mobile game industry, has rampant fraud, IP theft, actual physical stuff theft, and a bunch of other crimes, corruption, government espionage... it is just nuts).
3. If you still want to try anyway, knowing all that... there is a whole industry named "hypercasual" games, where you create a simple game, and publish through some platforms, and if the game is successful, they help you spread it further and share the revenue with you.
4. DO NOT attempt to make PC/console-style games on mobile, you will lose money, people that want "real" games do it on a Switch or PC or a Dingoo (a cheap mobile console from Korea) and so on.
5. As much as I wish selling games directly were a good business model on mobile, it isn't, people just want free stuff, so you have to rely on freemium or ads, sadly for Kidoteca case both of these models are terrible considering our target market (kids below 6). One of our competitors that had success, did so by having the game be the advertising in first place, ie: the game purpose is make the brand known, and then they get money selling cartoons, toys, t-shirts, etc...
- Validate the idea. Try building a prototype and verifying your idea before comitting to it. You'll learn a lot about whether your game idea is fun/can be made fun, and learn the ropes of your new dev environment in a way that'll let you throw away your early code with no regrets.
- Pick Unity if you don't have experience with either. You'll get to results faster, and at solo dev scale, the quality Unreal offers won't matter.
- If you've decided on a mobile game, do some research on how effective monetization on mobile works, come to terms with how bad the options are and decide if you're still into it
- Runway seems OK for what you're doing, but word of advice: it is mentally taxing to some people to be in financial "freefall". I know this hit me hard when I made a similar decision to yours.
That said, there are a lot of good parts as well. Seeing people play and enjoy your brainchild is definitely more rewarding than working somebody else's startup or company, and as a venue for creativity, game development is hard to beat for somebody with a programmer skillset.
I used to work for Zynga. My advice is to think about how you'll gain users. The mobile gaming world is basically user arbitrage. You buy users (via the ads market) for X, and if you make more than X, you print money. It's helpful to find a creative that gets clicks for cheaper than the rest of the market. Eg. if your ads have slots machines, then it costs $25 to acquire a user. If you find some niche, like cool cars in your ads, maybe you can spend a lot less to get users. I'd recommend testing your ads before even starting on coding a game, test out a few different branding concepts. Really successful mobile gaming companies have a tight loop between their ads and game development. It's important to get quick feedback and see how new game features affect user retention and spending habits. Note, all of this costs money! Do you have a marketing budget to acquire users.
What not to do: spend a year coding a game in your basement, then "release" it and hope it grows from word of mouth. Those days are long gone.
That guy completely relied on the financial support of his girlfriend for years. I think he did some odd jobs here and there, but mostly he was just working on the game not making any income. Obviously for that game it paid off in spades, as they were millionaires pretty much overnight once it was released, but that won't be the case for every game, or in fact most games, and it's not something you should ask of your significant other most times.
I've worked on eight titles professionally working for game companies that never made the money spent developing them. It's a hit driven industry and there's no guarantees, unless you hit on an untapped market with a lot of pent up demand for something (like Natsume had been dropping the ball and releasing garbage Harvest Moon sequels for over a decade at that point, Stardew Valley came along and showed them what the fans actually wanted). Even then it's still not a guarantee.
I'm out of the video game industry now, but still work on my own games, but it's only a few hours a week here and there. I've had some success over the years, but not enough to justify asking my wife to let me quit my job and do it full time.
Started my e-commerce business back in 2009 to earn some pocket money while studying and dabbling with entrepreneurship.
Since 2018 I work on it full time and have grown annual revenue triple digits 3 years in a row. In 2020, the company generated an average €56k per month at around 11% profit through 8 webshops in niches in the beauty sector.
I hired some specialist freelancers to improve SEO and SEA but let them go bcs of COVID. 3 weeks ago hired my first “employee” (freelancer 1hr per day) for customer service as I’m finding answering emails very annoying and time consuming.
Hopefully it’ll allow me more time to develop the company further. I have more niches in mind and can always expand into other countries with my current niches (which is not always successful).
The work itself is liberating, though and frustrating. I often flow from feeling alone and incapable to victorious and relaxed, and back.
I personally know few people who own a company and I know no one who owns an e-commerce. Something which makes asking questions or getting help difficult.
Online I often feel overlooked; the startup world focuses a lot on programming and building software. I’m fully aware building your own product ánd a business at the same time is million times harder than what I do. Nevertheless, I’d love to be in contact with people going through similar issues and phases as me.
Not sure the ending of this post totally fits the topic intended, so to finish on a positive note:
Only a small percentage of companies make it to €1M annual rev, a barrier I expect to pass in 2021. Moreover, growing a company brings hard and interesting challenges; eg being a solo entrepreneur I’ll need to let go of my individualistic nature and improve my social and management skills in order to work well with my current and hopefully future employees.
I run TinyOctopus LLC. I create apps and software for niche markets. 100% a one person gig.
All of my products have started as something I wanted for myself, but also realizing that others would likely pay for them too. My first iOS app is now 9 years old but it existed on the Pocket PC and the Palm Pilot years before that.
edit: forgot to add, I do make the majority of my income from these apps. It is possible for small players to make real money on apps - 5 figures for me. A key for me has been to not undercharge. Despite my apps being priced much higher than others, I rarely get complaints about pricing.
BetaList ( https://betalist.com ) turned 10 years old today. For the majority of time it was run by just me, generating $100k/year in revenue on average (earlier years less, later years more). I’ve now delegated all the daily operations to a contractor who spends a few hours a day to keep things going. So technically it’s two people right now, but less than half a FTE total.
Your comment states the problem space addressed by SQLAlchemy 2.0, which is what the above document is about, really well! So for your comment to have value, what did you think of SQLAlchemy 2.0's direction in how it seeks to vastly improve the very issues you speak of, "where the transactions are", "how committing works", etc.?
For example: "accidental cross joins" - SQLAlchemy 1.4 now warns/ raises for these: https://docs.sqlalchemy.org/en/14/changelog/migration_14.htm... cool huh? The new docs are worth a read before commenting.
It sounds like you were relying on flask-sqlalchemy in any case which unfortunately makes some poor decisions in these areas, but in SQLAlchemy 2.0 these things are brought forward unconditionally in all cases so you really can't talk to the database without having your transaction and its scope front and center.