Firebase – searching where string starts with

Firebase doesn’t have a nice way to say .where(searchField, ‘startsWith’, searchTerm) The easiest way is to search for text strings that are greater than the search term, and smaller than the next string after the search term. E.g. when searching for rows that start with “Rhys”, we really want everything greater or equal than Rhys, […]

Copying Small startups – Food Booking Software.

Food Booking Software – mind map. Eating at a pub involves lining up with the other patrons, reviewing the menu, speaking back the order and any alterations to staff who enter it in the system and ring up a price. The customer pays for the order and the order goes to the back-restaurant/make-bench to be […]

Unoriginal Side Project Examples

No more original side projects. This is an ongoing article of unoriginal side project ideas that could be executed. I don’t know what I’m doing, I’m just documenting this so I can find it again later. The unoriginal side projects will follow a bit of a formula – having many elements in common. I’ll keep […]

Things that unoriginal side projects should have in common

It’s a long title. I want to execute more than one unoriginal side project, so as many factors should be shared as possible, as easily as possible. I’m not making original side projects anymore – I’m hunting for financially viable ideas that *have already been executed*. I’ll cut down the scope and clone them as […]

Moving from Gmail to Hey

As part of a long effort to de-google where practical, I’ve moved away from Gmail to email service. The problem with decoupling anything online from Google is twofold – 1. all of your stuff already lives there – I’ve had a Gmail account for 16 years. It’s all perfectly designed to keep you in […]

Firebase functions and CORS

A simple firebase http function template: We need to handle CORS requests (see cors() above), because the browser will send an OPTIONS request first to see what’s accepted by the endpoint. Your function handler in this case will receive an empty body, throw a bunch of errors, and generally waste a ton of time. A […]