13 ms·
I saw a talk about tigerbeetle the other day - which is a small, fast database for handling financial transactions that apparenty runs orders of magnitude faste
by josephg 3y ago
I saw a talk about tigerbeetle the other day - which is a small, fast database for handling financial transactions that apparenty runs orders of magnitude faster than Postgres. The database binary has no dependencies and compiles to 500kb. Its authors were joking they could distribute it on floppy disks if they wanted.
It’s written in Zig, not C. But that style of programming is still available to us if we want it. Even in more modern languages.
Honestly I’m really tempted to try to throw together a 90s style fantasy desktop environment and widget library and make some apps for it. There’s something about that era of computing that feels great.
- red_admiral 3y agoBack when Java had just introduced Swing to supplement/complement AWT, I remember you had a set of components (that you could even style in different ways with themes), a fairly object-oriented approach, and with the open-source MiG layout manager (that still exists today) a powerful way of laying out forms with constraints to adapt to changing screen/window/font sizes. I feel like UI framework progress from Windows 3.1 to Swing+MiG was much greater than anything I've seen since.
- josephg 3y agoI feel that way about the old Interface Builder for macos, back in the Xcode 3.x days. VB6 was pretty good too.
- red_admiral 3y agoYeah, the interface builders back then are also unsurpassed to this day. Much as I have my issues with VB as a language, the way you could build a GUI with a GUI was amazing. Better still, it worked back on school computers that of course didn't have any "programming" tools, but did come with MS office and the full VB "experience" installed for some reason.
- Khelavaster 3y agoVisual Studio's wpf editor and Avalonia are beyond vb6 interface builders!
- markus_zhang 3y agoJust curious, what is preventing people from creating something similar to VB6 and Delphi in modern days? Different underlying frameworks? But I'm sure VB6 still sort of works on Windows 10 (VBA).
- josephg 3y agoThe big problem is that nobody wants yet another platform-specific UI framework. Even Microsoft is using electron (or something like it) to build Microsoft Teams. If you build a cross-platform UI framework, it'll probably end up looking a bit ugly and custom on every platform (eg Java Swing). Making a cross-platform UI toolkit that looks native everywhere is an insane amount of work, because different platforms have very different UI toolkits, with different built-in components and different platform conventions. This problem becomes 10x harder if you want to make it work on mobile as well. Some people try anyway - and bless their cotton socks. But electron (and arguably Qt) are the closest we've got. And even then, most electron apps seem to be full of custom components.
- mike_hearn 3y agoThat's not really the cause. As you say, Electron apps don't look native either. The issues are elsewhere.
- markus_zhang 3y agoThanks, that makes sense. Where can I find a Windows specific (or Linux specific)? I actually don't care about cross-platform. Desktop is dominated by Windows anyway. QT is not bad and I used it for a small project. But it follows native so I'm not sure how to go back to native Win2000 style.
- mike_hearn 3y ago
- throwaway55671 3y ago> Honestly I’m really tempted to try to throw together a 90s style fantasy desktop environment and widget library and make some apps for it. There’s something about that era of computing that feels great. SerenityOS might be exactly what you're looking for. Join the community and make some apps, it's great (both the community and the OS/dev experience)!
- red_admiral 3y agoIs there any way to run something like "serenity's WM and file manager, but on my favorite linux distro?" Or is it all more tightly coupled than that?
- throwaway55671 3y agoIt's a Unix like OS with great separation of concerns. There probably is a way - their browser runs on Linux - but I don't think anyone has done it yet. Could be a fun project to look into!
- holsta 3y agoif [ "$os" = "Darwin" ]; then arch="universal" os="macos" elif [ "$os" = "Linux" ]; then os="linux" else echo "Unsupported OS." exit 1 fi This is nothing to emulate.
- josephg 3y agoWhy not? Does everything really need to be built in a cross platform way? I feel like that’s how we got into this mess.
- holsta 3y agoYes, bugs are often found by running the same code on similar but not identical platforms. We've had this conversation multiple times. https://news.ycombinator.com/item?id=28978086 https://news.ycombinator.com/item?id=28978086 What mess are we in because of POSIX?
- josephg 3y agoI’m talking about the mess of electron and friends. I’ve spoken to engineers who work on it. From their point of view, it’s the only sane way to build software that works across multiple operating systems. The nice thing about windows and macOS back in the day was that the programs we ran were all written with the same native UI toolkit. All the controls matched between applications. Applications were small and efficient - binary sizes and memory usage were in the megabyte range. Any program written like that today starts up instantly, and is incredibly responsive. But last I checked, Hello world in electron is ginormous. It uses about 100mb of memory. It takes time to start up. Vscode and Spotify are great but they don’t look or feel native. It is legitimately great that people now ship apps for Linux. But we’ve lost platform cohesion in the trade. So, so what if tigerbeetle is written for Linux? I’m ok with the developers choosing not to pay the cross platform tax.
- arp242 3y agoThat's just the codepath from bootstrap.sh that downloads the binaries. I don't know if it will compile and run on, say, FreeBSD. It's quite possible no one tried.
- laserbeam 3y agoKeep in mind, the thing that matters most for tigerbeetle’s speed is they are domain specific. They know exactly upfront how data looks like. They don’t have to be general purpose. The style of programming does work for general purpose computing, but their requirements enable a significant % of “orders of magnitude faster than postgress”.
- vendiddy 3y agoWhile your take makes sense, I feel like even general purpose programming frameworks should be orders of magnitude faster for what they are doing.
- josephg 3y agoYeah; and we have plenty of other general purpose databases which can run laps around postgres and sqlite. There's plenty of optimisations postgres and friends leave on the table. Like, the postgres client driver could precompile queries and do query planning on behalf of the database. It would introduce some complexity, because the database would need to send information about the schema and layout at startup (and any time it changed). But that would remove a lot of unnecessary, repeated makework from the database process itself. Application servers are much easier to scale than database servers. And application servers could much more easily cache the query plan. Weirdly, I think part of the problem is economic. I think there's a lot of very smart people around with the skills to dramatically improve the performance of databases like postgresql. Across the whole economy, it would be way cheaper to pay them to optimize the code than needing companies everywhere to rent and run additional database servers. But it might not be worth it for any individual company to fund the work themselves. Without coordination (ie, opensource funding), there's not enough money to hire performance engineers, and the work just doesn't happen.
- gregw2 3y agoWould odbc/jdbc protocols have to change to support client-planned queries?
- 3y ago
- logicprog 3y ago> Honestly I’m really tempted to try to throw together a 90s style fantasy desktop environment and widget library and make some apps for it. There’s something about that era of computing that feels great. If you're interested in that, you should definitely check out Serenity OS!
- Froedlich 3y agoIn 2007 I put together a bunch of servers running openSUSE 10.2. They run some specialized application software that's version-dependent and is unlikely to ever be upgraded. The working network is not connected to the internet, so there's no reason to upgrade the OS. They're full KDE installs, and openSUSE 10.2 wasn't a lightweight distribution in its day. But now, even running in VMs, UI and network response are noticeablly snappy, and are sparing of resources by modern standards.
- markus_zhang 3y agoPlease do. I'm also wondering why no one created something similar to VB6 and Delphi.
- mwcampbell 3y agoDo you think you'd write your 90s style widget set and desktop environment in Rust, or do you think Rust itself tends toward bloat (in non-embedded applications)? I know you use Rust in other projects, which is why I'm asking about that language specifically.