I like the feature allowing multiple tables to be in the same spreadsheet. It’s a convenient and obvious solution that, for some reason, Excel or Google Sheets don’t have. Does anybody know the history behind it? Is there any kind of patent around that UI feature that only Numbers (AFAIK) has?
Google Sheets does have this feature. But it was fairly recent. Numbers had it for a long time and in any case I still prefer the implementation in Numbers. In Numbers, data is referenced through these tables exclusively while getting rid of sheet-level references; tables in Google Sheets do not go that far. My mental model for tables in Numbers is just sheets but relocatable and multiple can be viewed at the same time. My mental model for tables in Sheets is just it helps me with formatting and with referencing the entirety of the data like an upgraded named range.
The "tables" feature supported by Google Sheets and Excel is similar, but definitely not the same thing. Tables in those programs just ascribe special meaning to specified ranges of a single shared row:column space (what one would otherwise be tempted to call a "table") that defaults to behaving as effectively infinite.
In Numbers, you have multiple tables that are entirely separate row:column spaces that can be resized and positioned arbitrarily and independently, with small finite extent by default such that they fit on screen. That UI makes the capability to have multiple tables on one sheet more discoverable, and easier to comprehend what it's doing. When you drag and drop a CSV file onto a Numbers sheet, it creates a new table rather than populating cells in an existing table. When you resize column A in one table, it doesn't affect the column A of any other table.
That finite vs seemingly-infinite distinction is a fundamental difference in conceptualizing what a spreadsheet is, which can have pretty far-reaching consequences. I've encountered programs with a "CSV export" feature that generates a CSV file that's more or less what you'd expect to get if you wrote a report in a single Excel sheet, and then exported that to CSV: you get a file that contains tabular data embedded in it, but so polluted with unrelated text and unstructured metadata that having it as CSV format barely helps with parsing and you'd be better off trying to extract data from HTML.
Yeah you can do the same with Microsoft. They have OLE. Apple had OpenDoc in the 1990s for that. It's not a new idea and it's certainly an idea that makes a whole lot of sense.
Yes, it’s different from Excel tables. @wtallis probably explained it better, but I’ll give it another shot:
A “spreadsheet” or tab in Numbers is like a canvas where you can put tables, text boxes, , charts or shapes.
The classic spreadsheet is one of these table objects. If you want it to behave like a classic spreadsheet, you can have a single table object that takes the whole canvas; otherwise, you can have multiple. Each is like a spreadsheet with columns and rows; formulas can refer to cells in other tables.
It’s handy to create dashboard-like views or visually organize your work.
In other words, Excel tables are a special region in your spreadsheet; Numbers tables are individual spreadsheets on a canvas.
You might be remembering the 90s-era MDI user interface where you could have multiple documents open as sub-windows within the parent Excel application window.
Uff, this brings back memories of Maven 1 and Apache Jelly.
Jelly was a scripting language using XML. It was an aberration, and Maven 2 removed it. This feels like Jelly, but in YAML instead of XML.
I don't intend to offend the author, but I don't see the use case for writing the recipes in YAML instead of using a shell function (or Python, which is multiplatform). The YAML metadata will work if you have a sort of low-code UI or want to show the steps in a UI (which is the main reason CI/CD platforms use it). I guess the author got used to the CI/CD YAML pipeline configuration files and wanted a similar experience.
However, it will quickly end up being a pseudo-programming language without the benefits of a better composition syntax.
The main feature of the web is ubiquity. Doing a native app requires installation, update handling, etc.
That’s why the “web won.” But, when it comes to UIs, it is not technically superior.
The most popular technology is usually not exceptional in every aspect but is the most convenient for popular use cases. For example, LISP predates C by decades. Technically, C is inferior in abstraction, but ATT used it for Unix, quickly becoming the de facto standard for systems programming. That makes C a better option than LISP, only because you’ll need to go into extra layers of complexity to do a system call designed for C.
For the web, you can only use HTML/CSS/JS (even with WASM).
“Mobile doesn’t use shit from 1994”… well all the iOS apps are based on Next frameworks created in the 80s.
You probably have never used a native UI framework or tried to create an accessible component library for the web, to say something like that. Try to create an accessible select component that shows an icon in its options using a native framework and HTML, and you’ll quickly see what I mean.
Please don't be creating select components. The native one is just fine and works 100% of the time. For those of us using translation tools and trying to navigate the shit designers came up with because they want to make it "pretty" is just ... annoying and full of grief. Just say no.
These company blog articles are usually for marketing. Humanloop develops software to assist with prompting during the development process, so the author’s conclusions reflect the company’s intentions more than an objective industry observation.
AI is transforming how we prototype and iterate, and products like v0 or Replit are scratching the surface. However, historically, low-code platforms lacked a good integration with complex development cycles. There were many attempts, but they either failed or shifted their focus: Microsoft Expression Blend had a brilliant concept of integrating early sketching and ideation with development, but the product ultimately died with Silverlight; Framer had an editor that allowed users to integrate React components with a design tool, but they repurposed their product into a CMS-oriented tool like Webflow; Builder.io is following a similar path. It seems that in today’s market, there is no clear fit for the RAD tools of the late 1990s. Maybe AI can change that and create the new equivalent to Visual Basic. The hardest part is the extra mile that goes from the prototype to something robust and complies with multiple quality attributes: scalability, performance, security, maintainability, and testability.
But this isn't a territory dispute this is just an internal US name change.
Here in the Czech Republic it now shows up as "Mexický záliv (Americký záliv)". Why are they adding "Americký záliv" in a parenthetical? It's not like the executive order has any effect outside the US. Why would they change the name in any way anywhere but in the US? By what reasoning would they change the name in the Czech Republic but not in Mexico? US official naming means nothing to Mexico just as it means nothing to Czech Republic.
I’m from Argentina. When I met my current wife, she volunteered at an orphanage. Her task was to take one of the children out for fun on weekends. It seemed simple, but it wasn’t. There, she met “A,” a 10-year-old girl. Some weekends with “A” were easy, but she was generally problematic. So, as we tried to understand what was happening to her, we learned a bit about her past.
Her mother was a drug addict and a criminal. Her father was likely her grandfather and was also in jail for various reasons, including abusing her.
We were heartbroken and tried to help, but we didn’t plan to adopt her. There are many other details, but I don’t want to bore you with the horrors. To summarize, this story shattered my naivety.
However, the story takes a positive turn. When Argentina legalized same-sex marriage, two women adopted “A.” It was the first adoption case involving a same-sex marriage in our country.
Things weren’t easy for them. We’re friends now and see each other occasionally. They transformed “A’s” life for good. But it’s not like the movies. Once a child has endured such trauma, recovery can take years, and sometimes, it’s not even possible.
Nowadays, we have a president in Argentina who constantly claims to be engaged in a “cultural battle.” He’s a fan of Elon Musk and Trump. The “cultural battle” primarily involves removing sexual education from schools, removing organizations dedicated to protecting women from abuse, and portraying government spending on helping the poor as communism. He frequently uses the term “woke” to denigrate people who don’t share his views.
However, this “cultural battle” is all about hate.
The entire concept of “canceling culture,” “anti-woke,” and Mark Zuckerberg removing tampons from bathrooms are distractions.
The world is full of children like “A,” and the cost of proofreading this with AI is probably enough to feed one person for a day. I’m not trying to sit on a moral high ground while I write this from my iPad Pro. But, at least, we should have more empathy.
Sorry for my long comment, but I feel that this article from PG misses the point (ja! It’s my second time writing in disagreement with a PG article). I’m concerned about the direction that all this hate is taking here in Argentina, echoing the things that happen in the US.
I appreciate your story and feel for "A" and the women who adopted her. But I think we need to get beyond this idea that there are only two sides and you have to pick one or the other. I don't see why I can't agree with you and also agree with PG. I didn't feel any hate in his article and I imagine he would support the people who have been helping "A", i.e. you and your wife and her adoptive mothers.
> There are many other details, but I don’t want to bore you with the horrors. To summarize, this story shattered my naivety
I have had similar experiences and understand you.
I can confirm from my experience that Google also automatically scans private videos.
My YouTube account was recently mistakenly suspended; luckily, after a few minutes of panic, Google reinstated it.
I discovered the suspension because my kid wanted to see a video on my TV's YouTube app (LG webOS), which showed an error without further explanation. Trying to find out what happened, I saw an email from YT about my account breaking the ToS with a video. "WTF!? I got pwned!" was my first reaction (followed by panic as YT uses my Google account). But, no, the culprit was a screen recording in 2015 that I did at work to showcase a UI prototype about a key-based VPC setup workflow I was working on. The video was private and unlisted, and I didn't remember it as I did it as a quick capture to share an idea with the team. I hypothesize that the video got flagged because the algorithm confused it with a "crack/hack tutorial."
I was happy to see my account reinstated the same day. However, the whole experience didn't leave good taste: a small algorithm mistake can make your life miserable, and you don't have any human or support to correct it. Also, the "private" moniker in YT videos is an illusion.
I have refused to create any content on YouTube for this reason. My Google account is too valuable to my digital identity.
When Google banned a user because their Google Drive was used to share a picture of their child’s skin with the doctor for diagnosis reasons and Google flagged the account as CSAM, I felt vindicated that I don’t create content for YouTube. Not because I believe my content would get banned, but because their automated systems catch irrelevant content and the user experience of those instances is like a DoS on your digital identity.
In my experience, code navigation features are necessary for writing code comfortably. If you mean only auto-complete by LSP, then yes, it saves you some typing or function lookup, but that’s not the main benefit for me.
Years ago, I worked for a long time using Smalltalk (VisualAge Smalltalk, to be more specific). Older Smalltalk versions didn’t have autocomplete. But it wasn’t a problem because Smalltalk has excellent code navigation features: find implementations of a message, find callers, and evaluate code inline. With those features and some code conventions, I never felt the need for autocomplete.
Perhaps it’s my Smalltalk legacy, but nowadays, I use the most Cmd/Ctrl-Click to navigate to the implementation, read the sources, and use the “find references” feature. I don’t know if the LSP implements those features, but reading the sources gives me much more information.
Before programming in Smalltalk, I did some C++ and Java programming. While all Java IDEs had autocomplete, C++ autocomplete was unreliable on most tools I used. The solution is to read the docs and the source using search tools across the code base and third-party sources.