Today I learned about...
cool tech
Back to all tags
TIL about a replacement for ssh, it’s mosh! mosh (Mobile shell) has more features than ssh that improve usability!
Shimmer From Structure
TIL about shimmer-from-structure! A context aware skeleton loader that mirrors your rendered UI at runtime 💀.
Self-hosted Wanderlog
TIL about a self-hosted trip planner that’s just like Wanderlog!
TIL about cnfast! A fast drop in replacement for cn! It’s roughly 3.8x faster than tailwind-merge ❤️.
Cooler prefetching
TIL about a cool new way to handle prefetching things in the browser!
reactive resume
TIL about reactive resume! A free open source resume builder; no more paying for my brother’s resume updates!
Foregjo (pronounced like “for-jay-oh”) is a lightweight, self-hosted github alternative. It’s free and open source! Cards on the table 😅, I reached for this project because I could not justify spending actual money on something like Laravel Cloud or Fly.io for hosting a hobby project that generates no revenue.
Forgejo ships with docker registry support so I was able to containerize my Laravel app and deploy it as a Docker container managed by Dockge. Pair this up with something like cloudflare tunnels (which we all know I’m using) and you’ve got free hosting friends!
emoji favicon
TIL about favicon farm; it lets you get cool little emojis for your favicons.
shadcn registries
TIL that shadcn has public registries! This means folks can create and share their components via the shadcn cli so that we all can benefit from their awesome work!
ebooks to audiobooks
TIL that you can convert ebooks to audiobooks with audiblez 📚!
open source secrets management
TIL about infisical, an open source secrets management platform.
It allows you to easily store and manage your secrets across your team and tech stack. And oh, did I mention that you can self-host it too? 😎
Today I learned about Supabase, an open source alternative to Firebase. It being open source also means I can self-host it, which I love ❤️.
But anyways, I played around with it this weekend in an attempt to build out a proof of concept for a course platform I want to build out for my Brazilian Jujutsu business, and I have to say I’m quite impressed 🤯.
So. Much. Raycast
Okay, I know what you’re thinking. Another today I learned about Raycast 😅. But hear me out, this YouTube video that I’m about to link you to is bonkers. Like I said before, this is the tool that our Macs should have shipped with because finder just can’t compare!
There are over a hundred cool things you can do with Raycast… and I’ve just scratched the surface because, oof, there’s so much cool stuff and so little time 😂.
threadreader
TIL about Threadreader, a tool that helps you read Twitter threads way more easily. Oh sorry,
it’s not Twitter anymore, it’s X. Whatever, Elon.
Whatever the hell it’s called now, Threadreader will unroll the tweet storm into a single,
cohesive, consumable chunk of content.
coolors.co
TIL about coolors.co — a superfast color palette generator. If you’re anything like me,
you’ll probably use it whenever you need to generate a color palette for your side projects, you know,
those side projects that you’re totally working on and not abandoning for a while.
TIL about a local first tool for image compression called sqoosh. No more
sending images to random servers just to compress them! 😆.
Til about raycast! The productivity tool that our macs should have shipped with ❤️
changesets
Need a tool to help you manage your versioning and changelogs? Check out changesets!
git recent
TIL about git recent by Paul Irish. It’s a command that shows you your latest
local git branches! Super useful when you’re at work and got a lot of stuff on
the go.
git recent
# example output
:'
* main 7167899 (19 hours ago) Taranveer Bains
new til
feature/partytown 548eaf3 (2 days ago) Taranveer Bains
chore(dev-server): update dev script
'
So if you wanna figure out which commit in a repo caused an issue, git has a useful command to do just that.
git bisect
esbuild-loader
There’s been a lot of new developments in the space of package bundlers. From the OG Webpack to, Rollup to the new kid on the block esbuild each of them have their own unique set of features.
esbuild offers better build times as it is written in Go, which is compiled to JavaScript. The tradeoff here is that es5 isn’t supported (but that’s okay if you’re not supporting IE11). It’s pretty awesome but as it’s in active development and fairly new, it’s not as widely used as the other bundlers and therefore doesn’t have the rich plugin resource that somethings like webpack has.
However, you can leverage esbuild and plug it into a webpack config and via esbuild-loader I did this at work today and it helped with devserver startup times and greatly improved the production build times.
TIL that there is a cache control header for a shared cache. The s-max-age is similar to the max-age in that they both set a timer to invalidate a cache for a particular resource. The difference between the two is that the s-max-age applies to shared content and therefore applies to content on a CDN.
This is better in circumstances where we want to force an invalidation for a particular resource. This is not possible with max-age.
Netlify Identity Widget
There’s a Netlify Identity Widget (that is framework agnostic) which can be leveraged to add some authentication to web apps deployed to Netlify.
There’s a limit of 1000 people but for a small e-commerce business that’s more than enough.
pascal-triangle
While working through my functional programming course, I encountered a fun little leet code exercise. It’s fucking computer science so I’m not even surprised I had to solve a problem like this -.-
Anyway, here’s how the pascal triangle code will work in JS and in Scala
function run() {
for (let row = 0; row <= 10; row++) {
const rec = []
for (let col = 0; col <= row; col++) {
rec.push(pascal(col, row))
}
console.log(rec)
}
}
const pascal = (col, row) => {
if (col === 0 || row < 1 || col === row) return 1
else return pascal(col, row - 1) + pascal(col - 1, row - 1)
}
run()
def main(args: Array[String]): Unit = {
println("Pascal's Triangle")
for (row <- 0 to 10) {
for (col <- 0 to row)
print(s"${pascal(col, row)} ")
println()
}
}
/**
* Exercise 1
*/
def pascal(c: Int, r: Int): Int = {
// base case is if c = 0, just 1
if (c == 0 || r < 2 || c == r) 1
else pascal(c, r -1) + pascal(c - 1, r - 1)
}
Free HTTPS certs
Don’t be a sucka! TIL that you can get free HTTPS on your server thanks to a handy tool called Certbot.
Suck on that people who tried to charge me for HTTPS.
Single sign-on
Single sign-on (SSO) is a property of access control of multiple related, yet indepdent records. Thanks to this property, users can log in with a single ID and password to gain access to any of several related systems.
If you’re working in a corporate setting, this is how you’re able to seamlessly switch between applications (maybe in the browser) and not have to log in despite the fact that all these systems have some sort of authentication and authorization piece associated with them.
UTF-8 and encodings
I’ll be honest, up until today, I never really cared about character encodings and didn’t ever bother to learn anything about them… what a huge mistake! Character encodings are the unsung heroes that allow us to display languages (besides English) reliabely on computer systems.
The gist of UTF-8 is that it is an encoding that allows us to take Unicode code and map said codes to meaningful linguinstic representations. Codes that are between 0 and 127 occupy 8 bits — a single byte — and then any codes above this upper bound can use up to 6 bytes. The beauty of this system is that strings encoded in UTF-8 look exactly the same as strings encoded in ASCII. Americans are chilling and don’t need to worry about squat, while the rest of the world has to “jump through hoops” to make sure that they’re alphhabet will work across computer systems.
Buddy works!
Buddy works allows us to create pipelines for our projects! Similar to how
envoyer and deploybot works!
It comes with a bunch of prebuilt recipes for when you try to set up your
actions. We’re using it to do deployments to a project site after PRs are merged
and firing off notifications on slack!