I've recently been toying with the idea of turning my overly complicated weightlifting Excel into an overly complicated me-only webapp / testflight app. It can't be worse than Excel for iOS!
$sets x $reps $weight $name (i.e. 3x10 135 Bench Press)
I uploaded the log file to ChatGPT and had it spit out a Python script to parse into JSON:
```
for line in file:
date_match = re.match(r'^(\d{1,2}/\d{1,2}).\*?$', line.strip())
if date_match:
# construct a new workout entry
# continue
exercise_match = re.match(r'^(\d+)x(\d+)\s+(\d+)\s+(.+)$', line.strip())
if exercise_match:
# insert new exercise into current workout
# continue
notation is ColB, it'll generate relevant metrics, running total for some metrics like sets / INOL
I also have onedit in sheet where if I put $$ anywhere it will calculate for the row
if I have:
++5,10 it will generate warmups 5 reps jumps at 10%, back to 50%
+++5,10 will do ramping warmups i.e. x5, x4, x3, x2, x1
whatever last onedit row will also split up Rep PRs at top
Most useful for me is auto cycle naming and visualization, i.e. the house keeping stuff that makes all the other apps finicky vs just logging on paper or note
#### date = program name
### macrocycle (i.e. month)
## mesocycle (i.e. week)
# microcycle (i.e. day)
so it will auto generate something like
#24/12/27
#24/12/27「188/58」「3/2/4/4」「2D AGO」 (0,4,4,3)
188th session / 58th session of this program (program 3, macro 3 / meso 4/ micro 4), done XYZ days ago. (0,4,4,3) is push, pull, legs, fatigue/recovery out of 5
Visualization shows on/off days so you can get good timeline sense
box border for mesocycles (week) with how many days at corner (useful for intuitive training)
bars are volume (500lb increments) for varios tags (i.e. bp for all bench press variations)
underline shows inol status for session (none, single under line, double underline, thick underline for >0.4, 1, 2, 2+
it'll highlight extra good or bad sessions i.e. (5,4,0,3) was a very good push day
Now mostly i goto gym, log in google keep:
#YY/MM/DD (performance) comments
ex1 (reps x sets) comments
ex2 (reps x sets) comments
ex3 (reps x sets) comments
Copy and paste into sheet when I feel like it and review metrics graph when needed
$sets x $reps $weight $name (i.e. 3x10 135 Bench Press)
I uploaded the log file to ChatGPT and had it spit out a Python script to parse into JSON:
```
for line in file:
date_match = re.match(r'^(\d{1,2}/\d{1,2}).\*?$', line.strip())
if date_match:
# construct a new workout entry
# continue
exercise_match = re.match(r'^(\d+)x(\d+)\s+(\d+)\s+(.+)$', line.strip())
if exercise_match:
# insert new exercise into current workout
# continue
I use Google Forms to send data to a Google Sheet. You just put whatever lifts you have in the Form with spaces to add weights. I use this Google Form --> Google Sheets thing for a dozen different things.
I organize my life with spreadsheets and it works great. Running Spreadsheet, Health Spreadsheet, Investing Spreadsheet, Gardening Spreadsheet, on and on. :) It's just the best way to examine the data that is your life and have any hope of remembering the past and improve the future.
I think the mobile form factor has something to say about that. I somewhat agree (reluctantly) for desktop usage, but spreadsheets are too complex to be ergonomic with small touch screens.
My wife had surgery last summer and had about 10 medications she needed to take immediately afterwards - each of them had their own period so I needed to know what we took, and what was "overdue" at any point in time.
I whipped up a spreadsheet in google sheets and added a google form that allowed me to quickly pick a medication that was just taken - it'd enter it into the sheet and an "overview" page would show me what was pending, with color coding if something was "overdue".
I felt like I was abusing what a spreadsheet was meant for but it worked quite well.
If I knew about Glide I probably could have made it look even nicer.
Tbh sheets has gotten a lot better over the years. It's not hard to autofill and other things that used to be impossible or too obscure to figure out. I'll stick with the free platform for things just for me
Retool is great, although they explicitly build for developers and building on retool requires writing glue code in their JavaScript template language, and writing SQL queries.
In Glide, we avoid code and syntax as much as possible. Our table-driven programming model also creates a nice MVC-like separation of concerns where you don’t end up with your program chaotically interspersed with controls on a canvas, so your program is easier to manage as it scales (in exchange for being less direct to create).
Time is a valuable resource. This doesn’t simply boil down to one’s abilities—for most of us, opportunity cost is an important factor. If I’m just trying to get some value out of some data, why waste time playing web developer, fighting CSS, dealing with CORS issues, etc., when I could simply use an existing tool that already has my use case covered?
True that Claude can generate a simple working prototype in a single prompt. But there's still the friction of deploying the app, making it accessible across devices, and easily managing updates. Which something like Glide streamlines for non-technical users.
Even just "make it a PWA" can take an experienced frontend developer a day or more. The manifest needs to be just right, the server might need to be reconfigured to serve the right MIME type, you need to generate a few mandatory icon sizes, you need a service worker even if you're not using it...
If you're using a big framework like Vite, this is somewhat easier, but then it's not a "simple html file" anymore and you spend just as much time fiddling with framework stuff.
For those curious, you can also do some pretty fast prototyping (including deploy) with https://bolt.new and https://v0.dev (vercel). Sometimes even a single prompt.
> I can feel some people reading this article demanding that I just learn Swift or some mobile-friendly JavaScript package and make some real apps, but I steadfastly refuse. I enjoy the messy middle of programming, where I have just enough app, API, and logic knowledge to make something small for my friends and family that's always accessible on this little computer I carry everywhere, but I have no ambitions to make it "real."
An AI generated page will be full of security holes that a non programmer will be unable to assess.
I'm not normally a fan of nocode but dude, get real, the target user for this will have zero chance of understanding and maintaining the output if it's in code. Compared to pick your column and choose the type of widget you want it represented as. Below the tip of that iceberg there are also lots of non trivial features like search and sync.
The hack quotient on this is high, so that's good, though ironically it's hacking around all the BS we put up with (languages, frameworks) to get a programming project up and running!
Glide appears pretty cool, except that the next level up plan over the free one is $69 per month, more than a little steep for most personal users.
I myself am wondering if there are any good projects out there that do similar things but that use either local databases or even browser storage?
I think the key value of Google sheets link is that you can do rest of your aggregation/data fixes on Google sheets. And data is in your control
I made an app for a meetup/reunion, but 10 user limit meant everyone had to given a shared password
Like you, I would happily pay for many many services about 10/month - right where streaming subscriptions are. But none of these companies seem to understand that part…
I use Notion databases for this. They're essentially spreadsheets with customizable table, list, kanban views, and each row gets its own wiki-style page in addition to the structured data. So it's nice for lists of books or movies or games, where you have some metadata but you also might want to take notes on it when you read/watch/play. It works pretty well for this purpose, but I also could probably make Obsidian or Logseq work and it would have a better privacy story, give me more control over the shape of the data, and not cost $48 a year (though I don't really mind paying).
I have been looking for a way to switch from Notion since they rolled out AI features without an opt-out (besides emailing them). I don't even dislike LLMs, I just want to know what I'm sending them and when.
Tables was never a supported Google product. It was an Area 120 experimental prototype. By design, Area 120 prototypes either get shut down or get merged into real products.
AppMaker was Google's AppSheet competitor that was shut down after a few years.
I badly, badly wish Obsidian had some kind of database/spreadsheet feature. I'm limping along with LibreOffice spreadsheets for privacy, but it's a pain having my notes in two different formats. And I miss grep.
Basically what parent said, little personal database tables. Example: I have a list of 100 movies I want to see, and I have columns like date watched, year released, should I rewatch again in 10 years, notes, etc. I want to be able to do two things:
1. Sort/filter by columns (ex: status = not watched)
2. Add markdown like "[[Steve]] told me to watch this" and have backlinks etc. work seamlessly with the rest of my notes.
I know you can do that with Obsidian "properties" but I don't want 100 separate files for my to-watch list.
And I've tried a few of the Obsidian database plugins too, but as far as keyboard usability none of them came close to VisiData or LibreOffice.
Definitely interesting. I think if I was going to put in the effort of switching, it would probably be to more of a labor of love pain in the ass situation like Obsidian where I can be more in control.
My use case would easily fit into the Fibery free plan. Amusingly, their own comparison page argues that Notion is a better fit for me:
“Where Fibery works better?
Processes and work management for medium and large teams. Complex processes like product management, feedback management, user research, software development tracking.
Where Notion works better?
Personal life organizer. Small/medium company wiki. Work management for teams with simple processes.”
I’m a heavy Obsidian user personally, started using Fibery for my startup, and now I’m starting to use Fibery for personal stuff over Obsidian as well.
Obsidian is a better note-taker, but Fibery is much more programmable and has the most important OOTB feature of Obsidian which is bidirectional linking (IMO).
I don’t think Fibery gives you less control except in the sense of like data ownership (which is what brought me to Obsidian back in the day).
More key bindings for Fibery would also be appreciated :)
Funny about backlinks — Notion has had them since 2020 and I've never once looked at the backlinks for a given page. I don't think any of my pages link to each other.
I was commissioned to make a video explaining what Fivery is and what makes it powerful. It was a couple of years ago, but I believe the core principles still stand. In case someone is interested to learn more and is ok with video format, check it out: https://youtu.be/ddgJGoQBdtQ
I think Fibery is a very interesting product and an incredibly powerful platform. Developed by a small team.
We're building Thymer [1] for this, which is end-to-end encrypted, offline-first and optionally self-hostable. It's like an editor but you can organize anything into custom database views, we hope to get it ready soon.
Basically: Guy reinvents MS Access on Google sheets 40 years later.
Disclaim: this is not to say Access is to be despised of or anything. People found its utility for many years and the fact it is not what Boyce/Codd suggested they do with their tables, does not make it irrelevant. There was an article about how it just refuses to die and why. Worth reading for everyone interested in computer and computing history.
I've built quite a few dashboards while working on proof-of-concept feature/product engineering. Even though people often think I'm joking, almost always the backend database was a Google Sheet. Google Sheets has great API support, easy to write functionality, convenient read and file dumps, works well with Pandas/SQL, and has a universally appreciated UX. Data validation can be annoying if the "admin" directly enters data, but for building a proof of concept, nothing beats Google Sheets. The data from Google Sheets would be passed through an API to a web UI/dashboard. The dashboard I built for end users was a simple Bootstrap (Vue-Bootstrap) table from the API, with enough easy-to-use filters and views to work out of the box. If the data was too large, I would use a templated snippet to convert the JSON into a card view. Ignoring long-term maintainability, this was one of the most foolproof ways to build dashboards. After that, I'd slap Firebase Auth on top, and that was it.
I haven't worked on these types of projects for nearly two years now. Folks I know use Retool or Softr with an API connectivity platform like Portable, Pipedream, or Zapier. If you're staring at a spreadsheet on a daily basis, the next step should be looking into an app builder combined with an API connection platform.
Accounting of your holiday's expenses or hobby project? Sure. For a whole business and all the legal and practical obligation that entails? Nope. Not a chance. Just give me a proper accounting software so I don't have to second-guess myself at every turn as to whether my code or my interpretation of the law is correct.
Monzo (online bank in UK) let you see all your transactions in a Google sheet (with some caveats e.g. interest earned is skipped). I wanted to make a total wealth chart over all years.
It's so damn complicated in Google sheets. In MS Excel I could simply make a pivot chart, apply any aggregation on days/weeks and be done with it. But with Sheets I had to make a new aggregate column, filter data in another new column, and make a chart on that.
Your comment does explain that API is why they export to sheets and not excel but Google sheets is way behind in ease of use.
This is the text book answer. Not something you can actually do on a live sheet with all transactions. If you want to use a different aggregate e.g. week instead of month or skip first year or something like that you will be making these columns all over again.
As I understand it, the appeal of Monzo's way is it's live updating rather than having to log in to some horribly outdated online banking portal and manually export
Yes exactly. The Google sheet is live. I couldn't just add a column in live sheet either. I had to copy the sheet using a formula so that its always up to date. And still had to use to other sheets. Chart is in the 4th sheet.
You're fine with Google seeing complete information about your income and spending? I'm not one of those truly paranoid, but this seems like a bit too much.
What’s your risk model here? Google are not manually or automatically inspecting the contents of your spreadsheets in order to profile you and show you better-personalised ads. Not enough people have such a spreadsheet for it to be worth it for them, I’m sure - and they also probably already know approximately how wealthy you are. Unless you’re under investigation for fraud or something, I doubt the government could get much use out of being able to access your financial spreadsheets via Google compared to the information they already get directly from banks etc. So that only really leaves criminals (for whom I still can’t see a great incentive to read your spreadsheets), and I also don’t really think your Google account is much less secure than your computer’s local storage (if that’s the other place you would keep it)
We’ve learned over and over that tech companies do things which seemingly make no sense to us, but do to them. Not being able to imagine it is not sufficient. Nothing is deleted anymore as well, in hopes it will be useful later.
That said I don’t see a huge risk here, unless combined with lots of other data. Would probably avoid though.
I simply want minimal exposure of my personal data since I don't want to go through life thinking about risk models. Not only is it time consuming, but my creative juices simply don't flow when it comes down to exploiting people (nor do I want them to flow in that direction).
Most big tech companies very rarely/never let a human review private customer data. Therefore I'm fine handing all the data over to big tech companies.
I don't really understand any other point of view - if you're worried about a machine seeing your private stuff, why did you type it into a keyboard in the first place?
> if you're worried about a machine seeing your private stuff, why did you type it into a keyboard in the first place?
Who owns that machine is important though. I don't mind putting my card details in via my phone to buy something because there's a level of trust in the whole system (it's my phone, I have a level of trust that google is not going to steal my card details via android, and a level of trust that the shop is legit and will process my order.)
If some random person off the street asked me to type my card details into their phone that's a very different ball game as I don't inherently trust them.
I don’t care that much about card details. If I see a fraudulent transaction, I dispute it and it’s done. But my personal financial details/etc — that’s much different than a payment mechanism.
> Most big tech companies very rarely/never let a human review private customer data. Therefore I'm fine handing all the data over to big tech companies.
This isn't true. Google and Apple and others turn over user data to human analysts at NSA and FBI and others without search warrants all of the time, on hundreds of thousands of user accounts per year.
To be fine handing all the data over to big tech companies, you have to be fine handing all of the data over to US federal cops and intelligence services, too, because that's what giving the data (in non-e2ee form) to big tech means.
Actually I have heard the exact opposite of what you are stating is true. Both Google and Apple fight very hard to avoid handing data to authorities. They don't want to be seen as some sort of easy conduit to government surveillance or shill. How does that benefit their reputation? I know of one case where Google spent millions on lawyers fighting government wanting access to an activist's email. Their FAQ here makes their policy pretty clear. https://support.google.com/transparencyreport/answer/9713961...
Apple’s own transparency report indicates they turn over data to the USG for over 100,000 different apple IDs each year in the no-warrant-or-probable-cause (FISA orders and NSLs) category.
(Mind you; this includes device location histories due to geoip logs, unique identifiers, iMessage histories, photos, documents, everything.)
The cases they are allowed to tell you about aren’t in this category. They aren’t even allowed to say exactly how many of the secret warrantless orders they received, or exactly how many users were affectee, only 500-count ranges.
For just Apple, for just January 2023 to June 2023 (six months):
National Security - FISA Non-Content Requests
Table for National Security - FISA Non-Content Requests Data
Requests Received
0 - 499
Users/Accounts
40,500 - 40,999
National Security - FISA Content Requests
Table displaying National Security - FISA Content Requests
Requests Received
500 - 999
Users/Accounts
50,500 - 50,999
National Security Letter Requests
Table for National Security Letter Requests data
Requests Received
0 - 499
Users/Accounts
1,000 - 1,499
National Security Letters where Non-disclosure Order Lifted
> Apple’s own transparency report indicates they turn over data to the USG for over 100,000 different apple IDs each year in the no-warrant-or-probable-cause (FISA orders and NSLs) category.
FISA “orders” are warrants and have the same requirement for probable cause as any search or seizure warrant (they aren't criminal warrants so the probable cause is not of there being evidence of a crime, but of the target being an agent of a foreign power.)
NSLs are administrative subpoenas accompanied with gag orders, not warrants, and correspondingly do not have a probable cause requirement; unlike warrants (and like other subpoenas), they are subject to precompliance challenge (and the associated gag order is challengable separately.)
FISA warrants do not have the check and balance safeguards that other warrants have, and the system for getting FISA warrants has been extensively and egregiously abused
>they are subject to precompliance challenge
and it's weird you go to the trouble to mention this but slough over the problems with FISA warrants. You are not arguing honestly here.
> FISA “orders” are warrants and have the same requirement for probable cause as any search or seizure warrant (they aren't criminal warrants so the probable cause is not of there being evidence of a crime, but of the target being an agent of a foreign power.)
You put orders in quotes, but that’s what they are called, because it is illegal and inaccurate to call them warrants, because warrants per 4A are issued only upon probable cause. FISA orders are warrantless and do not require probable cause.
Snowden was very clear when he released the data on FAA702. No probable cause is required. They are not warrants. There is nobody in the room except a government petitioner and a government judge who rubber stamps them.
They are the #1 most used source in the US IC, and they make it possible for the FBI and DHS et al to read all of your gmail, all of your google docs, and all of your iMessages and phone photos without so much as a shred of criminal wrongdoing.
The idea that they are used only for foreign surveillance is patently false. There is ample hard documentation (again, thanks to Snowden) that they routinely use these to spy on americans. Their twisted logic is that if the data is replicated outside of the US (to say, a datacenter in Europe) then they are legally permitted to access it under the way the unconstitutional FISA Amendments Act (Section 702) is written.
> You put orders in quotes, but that’s what they are called, because it is illegal and inaccurate to call them warrants, because warrants per 4A are issued only upon probable cause.
Orders authorizing foreign intelligence surveillance purposes under FISA are warrants, and are often called warrants, and they, like all warrants, are issued only on probable cause. (It is not improper to call them “orders”, and they are often referred to that way, as well, it is just less specific; all warrants are [court] orders, but not all court orders, much less all orders more generally, are warrants.)
Subchapter I of FISA established procedures for the conduct of foreign intelligence surveillance and created the Foreign Intelligence Surveillance Court (FISC). The Department of Justice must apply to the FISC to obtain a warrant authorizing electronic surveillance of foreign agents. For targets that are U.S. persons (U.S. citizens, permanent resident aliens, and U.S. corporations), FISA requires heightened requirements in some instances.
* Unlike domestic criminal surveillance warrants issued under Title III of the Omnibus Crime Control and Safe Streets Act of 1968 (the “Wiretap Act”) , agents need to demonstrate probable cause to believe that the “target of the surveillance is a foreign power or agent of a foreign power,” that “a significant purpose” of the surveillance is to obtain “foreign intelligence information,” and that appropriate “minimization procedures” are in place. 50 U.S.C. § 1804.
* Agents do not need to demonstrate that commission of a crime is imminent.
* For purposes of FISA, agents of foreign powers include agents of foreign political organizations and groups engaged in international terrorism, as well as agents of foreign nations. 50 U.S.C. § 1801
+1 for googlesheets. It is stable, and provided you don't exceed the API limits, you can run a lot of data through it.
Appscript is also incredibly powerful if you work with tools that have decent APIs. With a few lines of js and the built in trigger functions, you can have an automatically updating dashboard with email notifications when certain conditions are met (e.g. balance too low, user engagement metric does X etc).
The article mentions appsheets, which I absolutely loved in my last role.
Brilliant for knocking up very simple internal tooling off the back of a Google Sheet. Most importantly, there was zero fucking around with IT on it, as it was already included in our workspace package.
In small business accounting, I have a persistent need for a FileMaker Pro like solution for invoices. FMP was conscious of on-screen layout and print.
ReTool has been recommended as similar replacement for FMP but they don’t have the idea of creating print-ready documented receipts and invoices. You don’t even need to print it, you just need to keep it for the IRS.
I love the idea of using Google Sheets and turnkey app building apps. But I still need documentation.
> "There's gotta be a ton...Among them FileMaker pro?"
You'd think. I don't know what Claris did last week, but when I last dived into this small pool about 12 months ago their license + hosting was something like 2k/year (looking now it might have gone down, or their pricing page is hiding the fees?). Add on top you need to develop, maintain, support your project. These costs are not insignificant for a "small business"--and by the SBA definition my clients are in the bottom 2-18% by employee (size) & revenue.
If I want a database set up in minutes just to focus on the business side and nothing else, I simply fire up a new Django project (I suspect any other framework with an ORM and auto-generated CRUD UIs would be equally competent for that).
I have nothing against Google Sheets, I really haven't put much thought into it in this context, but I would need some convincing that it's a better and easier way to kick things off.
That Django project needs a host to run on, even if it's just your local machine.
If you want others to interact with it, you need to expose it to the internet through some means and think through the security implications of doing so.
The Google Sheets approach doesn't need you to manage a process or web server. It is instantly shareable while letting Google worry about security, performance, availability, etc.
The specifics of the "what's better?" ratio can shift depending on comfort level / experience with either product, or what infrastructure you may already have available to deploy to. But building on top of GApps does mean you get a lot of useful aspects "free".
Thanks, that's a valid point. I have never thought of publishing a PoC web app as more than pushing some files on a server and editing a config file, but now I see how not everyone can be familiar with that.
You can just query a database and work with the results directly . In a dynamic language like python there is little advantage to loading rows into classes. That Django query language is so painful and opaque.
Practically, Django's admin *becomes* the SQLite UI editor you are referring to, I suspect. Starting with it, the amount of UI code, backend code or SQL code to be written becomes a matter of how far you want to stretch the PoC in either direction (more effort on the views for a prettier/more unique front-end, more controller code for more business logic/cases covered, more database work to assess how the data model will scale).
Back in 2010, I was in a work meeting making small talk and we were discussing how cringe some advertising is nowadays. One of us, a program manager who was ~15 years my senior told me it's because we're not the target demographic and that millennials are targeted differently, mainly through word-of-mouth and generally Guerrilla marketing tactics.
Whenever I see articles like these and comments like yours, I can't stop thinking about that meeting.
Edit: to clarify, I am not accusing you of anything. But I do suspect the article to be part of a Google marketing campaign.
I've built a scrabble tournament management app on google sheets, because it was the easiest way I could think of to let multiple people edit it with all the others seeing live updates. From a developer's point of view it kind of sucks, having to maintain everything in one large javascript file and having to use spreadsheet tabs as input and output, not to mention manually attaching the script to a new sheet for every tournament. But the user experience has been excellent, modulo a few permissions glitches.
I'm still trying to rewrite it as a self hosted web app this year because the aforementioned permissions glitches and the difficulty of doing versioned deployments has made me reluctant to continue relying on google, but overall sheets has been a huge boon and we have gotten years of use out of it.
I tried going all on on Google Sheets earlier this year. I used the Python API and like almost nothing worked consistently.
I got 1 sheet to work well with like 1k rows and thought woohoo this is great! So I went all-in, put 25k rows in and Google pooped the bed. It gave errors all the time, rows and columns were funky. API issues galore.
SQLite however handled 25k rows without any errors, always rock solid.
I gave up. Overall a terrible experience once I got past 1k rows. I'm glad it's worked well for you.
I only had like 10 columns, so it wasn't like massive amounts of data. I was linking to a file out in Google Drive and that was where most of my issues were. Google drive's API was 99.99% completely useless.
My takeaway from the experience was, Google proclaims they have an API, but it seems more like nobody tests it or cares about it. Perhaps it's malicious compliance, they have it because they have to have an API, but not because they expect anyone to actually use it.
The projects I worked on always had a mechanism to dump data into a proper database. For example, I built a daily scraper to collect some of the inventory. I didn’t keep all the data in a single sheet. Instead, all the data was stored in a cloud-based managed SQLite or PostgreSQL database, or sometimes a local SQLite database. Only the day's data was stored in Google Sheets because the client wanted to see the spreadsheet themselves and have the UI be accessible for their users.
Thank you for discussing this openly, it can be a real bummer to write something, test it, have something work up to a point then fail due to situations outside your control.
You probably just saved me about 20 hours of coding.
Did the commenter say that it was being edited concurrently? Because that's the only circumstance in which it would really be acceptable for it to break like that.
which is an awful idea because some versions of Excel will, if you open a file with more than 1million rows (or ~16k columns), automatically truncate and delete the excess data! And don't even get me started on automatic date conversion.
Unreasonably large spreadsheets are surprisingly common. Excel 2007's row limit was 65536, and nowadays it's over a million. Spreadsheets actually get that big, too.
An app I worked on once wanted a Google Sheets Integration - just a quick button to import rows from the database and into the spreadsheet so that the client can do some quick visualization and pie charts (I offered them a readonly DB account but they didn't know any SQL).
Few years have passed, and there are currently 470 THOUSAND rows with 20+ columns in that spreadsheet which is used almost daily.
Rewriting this into a proper web app would take maybe a week (the API is already there and used by GS), but was never deemed a priority, so it will keep existing in the backlog until we hit row or cell limits - after which it will suddenly become urgent...
I have had a similar experience with their API. Very verbose json structure, lack of stable row IDs, inconsistent data types.
And being a spreadsheet, it also has to have styling/formatting details, complicating it even more.
If you have more than a few thousand records, this is the wrong tool for the job. I've used Google Sheets as a "database" for a few applications in the past. In each case, it was an internal tool that did not generate more than a few thousand records, if that.
Even text files (like CSV) are fine for the amount of data the OP has trouble with, and Excel certainly is, so it’s unclear why Google Sheets should already balk on that. Google Sheets has a limit of 10 million cells per sheet (so for 25000 rows that would be 400 columns), and really shouldn’t be running into errors for sheets below that limit.
> If you have more than a few thousand records, this is the wrong tool for the job.
Just to be precise, Google Sheets might be the wrong tool for the job. Other spreadsheet applications can handle "more than a few thousand records" easily, seems this is a Google Sheets specific issue.
I guess? 25k rows with 10 columns shouldn't be a big deal. LibreOffice, Excel, Numbers, they all handled this data without trouble.
It is 99% static data, it would be updated maybe once a year if that. The point was to give users something they were familiar with to look at the data, search it, etc. While being in the "cloud" so I only had to update one place whenever I do get tasked with an update and to handle authn/z easily with no hassles.
Anyways, I used SQLite and a very simple web frontend(it had 3 screens: search, table view and record view). Solved the problem and moved on. Search just filtered the table view.
Starting with a Google Sheet is perfectly fine, but for building a non tabular user interface, or having a few thousand records, I would directly switch to something like SQLPage with a SQLite database.
There are extensions that let you query Excel worksheet files directly from SQLite (no importing, no transformation, just direct query). It's quite fun to do; you can use Excel (or Libre office, etc.) to maintain the spreadsheet, and build reports with SQLite.
Yes, many of our customers hit the issues you mentioned as they scale spreadsheet-based applications. We built Big Tables for this case: https://www.glideapps.com/big-tables
You keep most of the convenience and programmability of a spreadsheet, but you get Postgres scale and a first-class API (which includes atomic table swapping for updating large datasets). It also supports live updating of any views displaying that data.
We built an entire app for our golf league- all using Glide and Google Sheets.
It was honestly a great experience- all the players had a great mobile experience with obvious forms and leaderboards, while the storage and compute was hidden inside the Google Sheet. The pricing was pretty reasonable- considering we could split the bill among us all, and we only needed it for about 4 months.
There’s still hope for good, quality SaaS! However, I hope Glide (or another) can figure out the pricing for the hobbyist tier.
OT but I convinced several of my clients to use Excel and SharePoint they already had in their bundle over writing a full blown app multiple times, added some automation and it was both cheaper and made them happier.
237 comments
[ 2.7 ms ] story [ 240 ms ] threadhttps://github.com/bcspragu/stronk
Might inspire you as you continue to develop your app
I exported most of my data from "Strong" into Stronk, was easy. Thanks !
The interface showed lbs, but my values were all kg, still works.
I want a simple front end that lets me log lifts to a sheet/database
For all the apps that are supposed to make this easier none of them do it right.
I’m interested in building a fitness ontology/terminology linked to a tokenizer and parser.
MM/DD/YYYY (i.e. 1/1/2025)
$sets x $reps $weight $name (i.e. 3x10 135 Bench Press)
I uploaded the log file to ChatGPT and had it spit out a Python script to parse into JSON:
``` for line in file:
```lot in google keep and copy paste, then sheet does rest
https://imgur.com/a/xoHaxFY (3 images)
notation is ColB, it'll generate relevant metrics, running total for some metrics like sets / INOL
I also have onedit in sheet where if I put $$ anywhere it will calculate for the row
if I have:
++5,10 it will generate warmups 5 reps jumps at 10%, back to 50%
+++5,10 will do ramping warmups i.e. x5, x4, x3, x2, x1
whatever last onedit row will also split up Rep PRs at top
Most useful for me is auto cycle naming and visualization, i.e. the house keeping stuff that makes all the other apps finicky vs just logging on paper or note
#### date = program name
### macrocycle (i.e. month)
## mesocycle (i.e. week)
# microcycle (i.e. day)
so it will auto generate something like
#24/12/27
#24/12/27「188/58」「3/2/4/4」「2D AGO」 (0,4,4,3)
188th session / 58th session of this program (program 3, macro 3 / meso 4/ micro 4), done XYZ days ago. (0,4,4,3) is push, pull, legs, fatigue/recovery out of 5
Visualization shows on/off days so you can get good timeline sense
box border for mesocycles (week) with how many days at corner (useful for intuitive training)
bars are volume (500lb increments) for varios tags (i.e. bp for all bench press variations)
underline shows inol status for session (none, single under line, double underline, thick underline for >0.4, 1, 2, 2+
it'll highlight extra good or bad sessions i.e. (5,4,0,3) was a very good push day
Now mostly i goto gym, log in google keep:
#YY/MM/DD (performance) comments
ex1 (reps x sets) comments
ex2 (reps x sets) comments
ex3 (reps x sets) comments
Copy and paste into sheet when I feel like it and review metrics graph when needed
MM/DD/YYYY (i.e. 1/1/2025)
$sets x $reps $weight $name (i.e. 3x10 135 Bench Press)
I uploaded the log file to ChatGPT and had it spit out a Python script to parse into JSON:
``` for line in file:
```[0] https://www.hevyapp.com/
I whipped up a spreadsheet in google sheets and added a google form that allowed me to quickly pick a medication that was just taken - it'd enter it into the sheet and an "overview" page would show me what was pending, with color coding if something was "overdue".
I felt like I was abusing what a spreadsheet was meant for but it worked quite well.
If I knew about Glide I probably could have made it look even nicer.
In Glide, we avoid code and syntax as much as possible. Our table-driven programming model also creates a nice MVC-like separation of concerns where you don’t end up with your program chaotically interspersed with controls on a canvas, so your program is easier to manage as it scales (in exchange for being less direct to create).
Ai assistants have speed up the prototype workflow for doing less code/design.
If you're using a big framework like Vite, this is somewhat easier, but then it's not a "simple html file" anymore and you spend just as much time fiddling with framework stuff.
> I can feel some people reading this article demanding that I just learn Swift or some mobile-friendly JavaScript package and make some real apps, but I steadfastly refuse. I enjoy the messy middle of programming, where I have just enough app, API, and logic knowledge to make something small for my friends and family that's always accessible on this little computer I carry everywhere, but I have no ambitions to make it "real."
I'm not normally a fan of nocode but dude, get real, the target user for this will have zero chance of understanding and maintaining the output if it's in code. Compared to pick your column and choose the type of widget you want it represented as. Below the tip of that iceberg there are also lots of non trivial features like search and sync.
> Open Glide on a large screen to build apps.
I get it - but a little ironic that one can't get started with an existing sheet...
We have a mobile experience in the works! https://glideapps.com/create
Much better loading time.
I made an app for a meetup/reunion, but 10 user limit meant everyone had to given a shared password
Like you, I would happily pay for many many services about 10/month - right where streaming subscriptions are. But none of these companies seem to understand that part…
https://github.com/ziolko/spreadapi
https://www.notion.com/help/intro-to-databases
I have been looking for a way to switch from Notion since they rolled out AI features without an opt-out (besides emailing them). I don't even dislike LLMs, I just want to know what I'm sending them and when.
Another is AppSheet[1] for a more drag and drop application builder.
[0]: https://tables.area120.google.com/
[1]: https://about.appsheet.com/home/
Important update: The Beta program is now closed Tables is no longer accepting new users for its Beta program
> Table’s features and capabilities are now integrated into AppSheet, our no-code platform that blah blah blah
Seems like a usual Google product in that if you use it, you'll be forced to migrate all your data/workflows to some shiny new thing every few years.
AppMaker was Google's AppSheet competitor that was shut down after a few years.
1. Sort/filter by columns (ex: status = not watched)
2. Add markdown like "[[Steve]] told me to watch this" and have backlinks etc. work seamlessly with the rest of my notes.
I know you can do that with Obsidian "properties" but I don't want 100 separate files for my to-watch list.
And I've tried a few of the Obsidian database plugins too, but as far as keyboard usability none of them came close to VisiData or LibreOffice.
You can create a movie template with a few props then put them anywhere and then tabularise all the entries with a query.
My use case would easily fit into the Fibery free plan. Amusingly, their own comparison page argues that Notion is a better fit for me:
“Where Fibery works better?
Processes and work management for medium and large teams. Complex processes like product management, feedback management, user research, software development tracking.
Where Notion works better?
Personal life organizer. Small/medium company wiki. Work management for teams with simple processes.”
https://fibery.io/fibery-vs-x
Obsidian is a better note-taker, but Fibery is much more programmable and has the most important OOTB feature of Obsidian which is bidirectional linking (IMO).
I don’t think Fibery gives you less control except in the sense of like data ownership (which is what brought me to Obsidian back in the day).
More key bindings for Fibery would also be appreciated :)
I think Fibery is a very interesting product and an incredibly powerful platform. Developed by a small team.
[1] https://thymer.com/
Disclaim: this is not to say Access is to be despised of or anything. People found its utility for many years and the fact it is not what Boyce/Codd suggested they do with their tables, does not make it irrelevant. There was an article about how it just refuses to die and why. Worth reading for everyone interested in computer and computing history.
I haven't worked on these types of projects for nearly two years now. Folks I know use Retool or Softr with an API connectivity platform like Portable, Pipedream, or Zapier. If you're staring at a spreadsheet on a daily basis, the next step should be looking into an app builder combined with an API connection platform.
these 2 tools is great for easy/fast prototype various project and honestly its kinda hard to replace
It's so damn complicated in Google sheets. In MS Excel I could simply make a pivot chart, apply any aggregation on days/weeks and be done with it. But with Sheets I had to make a new aggregate column, filter data in another new column, and make a chart on that.
Your comment does explain that API is why they export to sheets and not excel but Google sheets is way behind in ease of use.
In excel I would not have to do any of that.
Imagine there are whole countries out there where income is public and accessible to anyone ;)
That said I don’t see a huge risk here, unless combined with lots of other data. Would probably avoid though.
Most big tech companies very rarely/never let a human review private customer data. Therefore I'm fine handing all the data over to big tech companies.
I don't really understand any other point of view - if you're worried about a machine seeing your private stuff, why did you type it into a keyboard in the first place?
Who owns that machine is important though. I don't mind putting my card details in via my phone to buy something because there's a level of trust in the whole system (it's my phone, I have a level of trust that google is not going to steal my card details via android, and a level of trust that the shop is legit and will process my order.)
If some random person off the street asked me to type my card details into their phone that's a very different ball game as I don't inherently trust them.
This isn't true. Google and Apple and others turn over user data to human analysts at NSA and FBI and others without search warrants all of the time, on hundreds of thousands of user accounts per year.
To be fine handing all the data over to big tech companies, you have to be fine handing all of the data over to US federal cops and intelligence services, too, because that's what giving the data (in non-e2ee form) to big tech means.
(Mind you; this includes device location histories due to geoip logs, unique identifiers, iMessage histories, photos, documents, everything.)
The cases they are allowed to tell you about aren’t in this category. They aren’t even allowed to say exactly how many of the secret warrantless orders they received, or exactly how many users were affectee, only 500-count ranges.
For just Apple, for just January 2023 to June 2023 (six months):
National Security - FISA Non-Content Requests
Table for National Security - FISA Non-Content Requests Data
Requests Received 0 - 499
Users/Accounts 40,500 - 40,999
National Security - FISA Content Requests
Table displaying National Security - FISA Content Requests
Requests Received 500 - 999
Users/Accounts 50,500 - 50,999
National Security Letter Requests
Table for National Security Letter Requests data
Requests Received 0 - 499
Users/Accounts 1,000 - 1,499
National Security Letters where Non-disclosure Order Lifted
0
I encourage you to read it for yourself:
https://www.apple.com/legal/transparency/us.html
These are not equivalents, nor are they similar. FISA = Foreign Intelligence Surveillance Court / NSL = National Security Letter.
If a person is the target of the FISA system, there most certainly is probable cause.
National Security Letter is a gag order, given by the intelligence community, in order to protect national security.
Again, if you or your organization receives one of these, there most certainly is probable cause.
These systems may be detestable, but there's no need to make things up.
This has been well documented in the press following the Snowden disclosures. It’s called FAA702 or PRISM.
FISA “orders” are warrants and have the same requirement for probable cause as any search or seizure warrant (they aren't criminal warrants so the probable cause is not of there being evidence of a crime, but of the target being an agent of a foreign power.)
NSLs are administrative subpoenas accompanied with gag orders, not warrants, and correspondingly do not have a probable cause requirement; unlike warrants (and like other subpoenas), they are subject to precompliance challenge (and the associated gag order is challengable separately.)
>they are subject to precompliance challenge
and it's weird you go to the trouble to mention this but slough over the problems with FISA warrants. You are not arguing honestly here.
You put orders in quotes, but that’s what they are called, because it is illegal and inaccurate to call them warrants, because warrants per 4A are issued only upon probable cause. FISA orders are warrantless and do not require probable cause.
Snowden was very clear when he released the data on FAA702. No probable cause is required. They are not warrants. There is nobody in the room except a government petitioner and a government judge who rubber stamps them.
They are the #1 most used source in the US IC, and they make it possible for the FBI and DHS et al to read all of your gmail, all of your google docs, and all of your iMessages and phone photos without so much as a shred of criminal wrongdoing.
The idea that they are used only for foreign surveillance is patently false. There is ample hard documentation (again, thanks to Snowden) that they routinely use these to spy on americans. Their twisted logic is that if the data is replicated outside of the US (to say, a datacenter in Europe) then they are legally permitted to access it under the way the unconstitutional FISA Amendments Act (Section 702) is written.
Orders authorizing foreign intelligence surveillance purposes under FISA are warrants, and are often called warrants, and they, like all warrants, are issued only on probable cause. (It is not improper to call them “orders”, and they are often referred to that way, as well, it is just less specific; all warrants are [court] orders, but not all court orders, much less all orders more generally, are warrants.)
https://bja.ojp.gov/program/it/privacy-civil-liberties/autho...:
—quote—
Subchapter I of FISA established procedures for the conduct of foreign intelligence surveillance and created the Foreign Intelligence Surveillance Court (FISC). The Department of Justice must apply to the FISC to obtain a warrant authorizing electronic surveillance of foreign agents. For targets that are U.S. persons (U.S. citizens, permanent resident aliens, and U.S. corporations), FISA requires heightened requirements in some instances.
* Unlike domestic criminal surveillance warrants issued under Title III of the Omnibus Crime Control and Safe Streets Act of 1968 (the “Wiretap Act”) , agents need to demonstrate probable cause to believe that the “target of the surveillance is a foreign power or agent of a foreign power,” that “a significant purpose” of the surveillance is to obtain “foreign intelligence information,” and that appropriate “minimization procedures” are in place. 50 U.S.C. § 1804.
* Agents do not need to demonstrate that commission of a crime is imminent.
* For purposes of FISA, agents of foreign powers include agents of foreign political organizations and groups engaged in international terrorism, as well as agents of foreign nations. 50 U.S.C. § 1801
—end-of-quote—
Things like drilling through, filtering/slicing, and then generating a graph, all in SaaS without having to run anything local.
Brilliant for knocking up very simple internal tooling off the back of a Google Sheet. Most importantly, there was zero fucking around with IT on it, as it was already included in our workspace package.
Supabase is free and checks all the boxes in addition to having auth, vector search, logs, security, and not being ... Google
In small business accounting, I have a persistent need for a FileMaker Pro like solution for invoices. FMP was conscious of on-screen layout and print.
ReTool has been recommended as similar replacement for FMP but they don’t have the idea of creating print-ready documented receipts and invoices. You don’t even need to print it, you just need to keep it for the IRS.
I love the idea of using Google Sheets and turnkey app building apps. But I still need documentation.
You'd think. I don't know what Claris did last week, but when I last dived into this small pool about 12 months ago their license + hosting was something like 2k/year (looking now it might have gone down, or their pricing page is hiding the fees?). Add on top you need to develop, maintain, support your project. These costs are not insignificant for a "small business"--and by the SBA definition my clients are in the bottom 2-18% by employee (size) & revenue.
I have nothing against Google Sheets, I really haven't put much thought into it in this context, but I would need some convincing that it's a better and easier way to kick things off.
If you want others to interact with it, you need to expose it to the internet through some means and think through the security implications of doing so.
The Google Sheets approach doesn't need you to manage a process or web server. It is instantly shareable while letting Google worry about security, performance, availability, etc.
The specifics of the "what's better?" ratio can shift depending on comfort level / experience with either product, or what infrastructure you may already have available to deploy to. But building on top of GApps does mean you get a lot of useful aspects "free".
You can just query a database and work with the results directly . In a dynamic language like python there is little advantage to loading rows into classes. That Django query language is so painful and opaque.
Whenever I see articles like these and comments like yours, I can't stop thinking about that meeting.
Edit: to clarify, I am not accusing you of anything. But I do suspect the article to be part of a Google marketing campaign.
I'm still trying to rewrite it as a self hosted web app this year because the aforementioned permissions glitches and the difficulty of doing versioned deployments has made me reluctant to continue relying on google, but overall sheets has been a huge boon and we have gotten years of use out of it.
I got 1 sheet to work well with like 1k rows and thought woohoo this is great! So I went all-in, put 25k rows in and Google pooped the bed. It gave errors all the time, rows and columns were funky. API issues galore.
SQLite however handled 25k rows without any errors, always rock solid.
I gave up. Overall a terrible experience once I got past 1k rows. I'm glad it's worked well for you.
I only had like 10 columns, so it wasn't like massive amounts of data. I was linking to a file out in Google Drive and that was where most of my issues were. Google drive's API was 99.99% completely useless.
My takeaway from the experience was, Google proclaims they have an API, but it seems more like nobody tests it or cares about it. Perhaps it's malicious compliance, they have it because they have to have an API, but not because they expect anyone to actually use it.
Perhaps I'm just not cool enough for Google.
You probably just saved me about 20 hours of coding.
https://www.nature.com/articles/d41586-021-02211-4?error=coo...
Few years have passed, and there are currently 470 THOUSAND rows with 20+ columns in that spreadsheet which is used almost daily.
Rewriting this into a proper web app would take maybe a week (the API is already there and used by GS), but was never deemed a priority, so it will keep existing in the backlog until we hit row or cell limits - after which it will suddenly become urgent...
Just to be precise, Google Sheets might be the wrong tool for the job. Other spreadsheet applications can handle "more than a few thousand records" easily, seems this is a Google Sheets specific issue.
It is 99% static data, it would be updated maybe once a year if that. The point was to give users something they were familiar with to look at the data, search it, etc. While being in the "cloud" so I only had to update one place whenever I do get tasked with an update and to handle authn/z easily with no hassles.
Anyways, I used SQLite and a very simple web frontend(it had 3 screens: search, table view and record view). Solved the problem and moved on. Search just filtered the table view.
https://github.com/x2bool/xlite
It's read-only and mounts spreadsheets as virtual tables. Very fast.
Perhaps more relevant to this thread, libgsqlite loads Google Sheets as virtual tables:
https://github.com/0x6b/libgsqlite
(I haven't tested it though.)
Yes, many of our customers hit the issues you mentioned as they scale spreadsheet-based applications. We built Big Tables for this case: https://www.glideapps.com/big-tables
You keep most of the convenience and programmability of a spreadsheet, but you get Postgres scale and a first-class API (which includes atomic table swapping for updating large datasets). It also supports live updating of any views displaying that data.
It was honestly a great experience- all the players had a great mobile experience with obvious forms and leaderboards, while the storage and compute was hidden inside the Google Sheet. The pricing was pretty reasonable- considering we could split the bill among us all, and we only needed it for about 4 months.
There’s still hope for good, quality SaaS! However, I hope Glide (or another) can figure out the pricing for the hobbyist tier.
Most of these no-code solutions target internal company Intranets.
But, I want to use them for apps I can sell to customers.
Does anyone have recommendations?
There are now quite a few reliable FOSS version of no-code tools (but the mobile space seems to be missing alternatives). Few nice no-code FOSS that I love using are listed at https://blog.n0c0de.com/articles/1635ef6f-f616-8023-b336-ff3...
Seriously how does anyone make money with a website where the actual content is so obscured by ads that users don’t bother coming back?