I think the Rails World keynote fueled a lot of discussion and debate in the Rails & the wider Ruby community. But I also think it's about time to have such a discussion.
I share my own experience & some of the great work the community is doing here
https://t.co/xGFHiSk2fA
"Very little software is ever the final word on solving interesting problems. Even products that start out with great promise and simplicity tend to accumulate cruft and complexity over time. A healthy ecosystem needs a recurring cycle of renewal." https://t.co/kwwdM8Gfz4
"Demilitarisation of Palestine"?
As Israel commits genocide in its most sadistic forms, are new conditions being quietly slipped into the defunct peace process? And still no word on justice, accountability, or reparations, without which peace is unacceptable (post-WWII history docet).
As always, the devil is in the details. May colonial boots and hats be left at the doorstep of every future political discussion.
I have never felt so shaken.
Children are dying of hunger. Falling one after another, like petals of a dying flower. Under our watch.
How do you sleep, Presidents, Foreign Ministers, political leaders, diplomats, civil servants - doing nothing to stop Israel’s starvation campaign?
PS: Talking politics while dodging genocide perfectly meets the definition of doing nothing.
An attempt to explain (current) ChatGPT versions.
I still run into many, many people who don't know that:
- o3 is the obvious best thing for important/hard things. It is a reasoning model that is much stronger than 4o and if you are using ChatGPT professionally and not using o3 you're ngmi.
- 4o is different from o4. Yes I know lol. 4o is a good "daily driver" for many easy-medium questions. o4 is only available as mini for now, and is not as good as o3, and I'm not super sure why it's out right now.
Example basic "router" in my own personal use:
- Any simple query (e.g. "what foods are high in fiber"?) => 4o (about ~40% of my use)
- Any hard/important enough query where I am willing to wait a bit (e.g. "help me understand this tax thing...") => o3 (about ~40% of my use)
- I am vibe coding (e.g. "change this code so that...") => 4.1 (about ~10% of my use)
- I want to deeply understand one topic - I want GPT to go off for 10 minutes, look at many, many links and summarize a topic for me. (e.g. "help me understand the rise and fall of Luminar"). => Deep Research (about ~10% of my use). Note that Deep Research is not a model version to be picked from the model picker (!!!), it is a toggle inside the Tools. Under the hood it is based on o3, but I believe is not fully equivalent of just asking o3 the same query, but I am not sure.
All of this is only within the ChatGPT universe of models. In practice my use is more complicated because I like to bounce between all of ChatGPT, Claude, Gemini, Grok and Perplexity depending on the task and out of research interest.
TinyBits 0.6.0 is released, better memory management, smaller multi-object buffers and a more robust dictionary support
With external dictionaries, a schema-less encoder like TinyBits can match (and sometimes exceed) the compactness of Protocol Buffers encoded output
TinyBits: A new schema-less binary serialization format. Fast to encode, fast to decode and generally smaller output than all other schema-less formats.
Currently available as a preview for C and Ruby. A Python module is also in the works.
SQLite is great for transactional processing, but when it comes to analytical processing, it leaves something to be desired. Something like DuckDB will run circles around it.
⬇️
I blogged more details regarding the new SQLite concurrency mode I have been working on. Explaining the locking mode and which situations can lead to transaction conflicts, I also expanded a bit on throughput and latency differences vs WAL mode
https://t.co/ePkXTsZmny
Just merged an initial version of Litekd, a Kredis compatible, SQLite based new Litestack component. One less moving part for your Ruby/Rails applications
The thing about game development is that you get to respect time a lot more. You only have ~16ms to do everything and move on to the next frame. That's not a lot of time!
Web application performance is a different beast, but we would benefit a lot from strict time budgets
⬇️
Published a new article on Litesearch, the full text search component of Litestack.
Builds on top of SQLite's FTS5, so it has amazing speed and rich query syntax.
But the biggest advantage of Litesearch is that it overcomes FTS5's major draw back, the static schema!
⬇️
Just cut a new release for Litestack (v0.4.4)
The most notable feature is that Litesearch now supports polymorphic relations and ActionText
Hopefully the final release in the 0.4.x series and from there will be pushing for a much more ambitious 0.5
https://t.co/TRQ09C137D
Litestack brings the efficiency of SQLite to multiple aspects of your Ruby applications, e.g. database, cache, job processing, full text search etc. But efficiency doesn't need to stop there. You can also bring more of that to other aspects of your apps
👇
Are you using Rails with SQLite in production? In that case it makes perfect sense to use SQLite for your cache store as well. In my latest blog post I compare two solutions for using SQLite as your Rails cache store
👇
If you are deploying SQLite in production, then there are multiple options to backup your SQLite database files. How safe/easy/efficient these options are might depend on your infrastructure and/or your filesystem setup. Such options include:
👇
If you want to deploy SQLite to production today, I highly recommend checking out https://t.co/rJWOvRsBwL
The db, cache, queue, & websockets, are all SQLite.
It will probably be a few months before Rails gets around to reinventing everything that’s already in that gem. 😂
Another post on using Roaring Bitmaps to implement efficient phrase searching in SQLite. With a sample implementation and benchmark results vs SQLite's FTS5 trigram indexes.
https://t.co/MJ3zUG4TZL