The anti-social media stream. Otherwise known as my personal feed. Similar to Linus's stream by Linus Lee.
Curation / The Stream
-
Single Purpose Websites
Simon Willison’s post - Give people something to link to so they can talk about your features and ideas
I evangelize this tool a lot, but OpenAI really aren’t helping me do that. I end up linking people to my code-interpreter tag page because it’s more useful than anything on OpenAI’s own site.
Related to: Learn In Public and Working in Public. It helps with the Open Source community in which you open source your knowledge and let people come and collaborate.
One obvious goal here is SEO: if someone searches for your product feature you want them to land on your own site, not surrender valuable attention to someone else who’s squatting on the search term.
You can drive traffic to this site because people could actually use it. Go back to the tiny web, and not where big corporations ruin the Internet by spamming search engines through SEO.
I personally value the conversation side of it even more. Hyperlinks are the best thing about the web—if I want to talk about something I’d much rather drop in a link to the definitive explanation rather than waste a paragraph (as I did earlier with Code Interpreter) explaining what the thing is for the upmteenth time!
More links are better. I think Willison’s blog is an excellent example of adding curation with links, but let the links stand up for themselves. Also, see Waxy.org - Andy Baio lives here.
Give people something to link to!
-
Broadcom and Henry T. Nicholas III
A curiosity sparked because my co-worker pointed out the Spring Framework is currently owned by Broadcom. That’s because VMware is now part of Broadcom, and Spring Framework was part of VMWare prior. I had an inkling there was a scandal Broadcom had awhile ago. Low and behold: SEC Charges Four Current and Former Broadcom Officers for Backdating Options (Press Release No. 2008-87, May 14, 2008). In 2010, the charges were dropped - Chipmaker Broadcom stock options backdating case ends. That’s not all though. Their first CEO, Henry Nicholas had criminal charges. The SEC dropped those charges in 2010, but that was enough to disgrace the people involved. Their former SEO left Broadcom before the SEC investigation back in 2003 to “work on his marriage”. He was sleeping with prostitutes.
Read: Henry T. Nicholas III: A human tragedy. And the follow-up a decade later with Orange County tech billionaire Henry T. Nicholas III charged with drug trafficking following Las Vegas arrest.
The court filings in the past case painted Nicholas as a ruthless entrepreneur who slipped drugs to competitors without their knowledge, who threatened the lives of employees he believed had turned against him, who had the means and motive to flee beyond the reach of justice in his private jet.
His start was in researching ICs, and later that’s what Broadcom sold. He was given awards for his research. He’s like a walking contradiction, trying to save his name with his philanthropy while making wildly bad decisions. File under downfalls.
-
Intl Locale String with Timezone
It’s always fun when the MDN documentation doesn’t tell us what the options are within the methods page, I you have to dig deeper into the constructor. The TypeScript bindings don’t always make sense.
Anyways, I needed a datetime string with the date, time in hours and minutes, and the timezone. I’ve made the timezone explicit and came up with this snippet.
date.toLocaleString("en-us", { year: "numeric", month: "short", day: "numeric", hour: "numeric", minute: "numeric", timeZone: "America/Los_Angeles", timeZoneName: "short", });
This would return something like “2024-07-03, 12:00 PM, PDT”.
-
jscodeshift Object Destructuring
The shorthand option is must be used in object destructuring to remove redundant
prop: value
to beprop
.What I wanted was this shorthand:
const { asFragment } = render(container);
But what codemod generated was the following:
const { asFragment: asFragment } = render(container);
While both are true, I would rather have the shorthand, as that’s what we have strictly for eslint rules. This Github Issue helped describe the solution on how to implement in your transform file.
const code = j.objectProperty(j.identifier("h"), j.identifier("h")); code.shorthand = true; j.variableDeclaration("const", [ j.variableDeclarator( j.objectPattern([code]), j.callExpression(j.identifier("require"), [j.identifier('"packagename"')]) ), ]);
-
Embed TikTok videos in Obsidian
How to embed TikTok videos in Obsidian’s editing/live preview and reading mode.
<iframe src="https://www.tiktok.com/player/v1/7382225350710824222?autoplay=0" allow="fullscreen" style="width:100%;height:50vh;" />
where
7382225350710824222
is the video id you get from TikTok from this example link:https://www.tiktok.com/@_jen_hamilton_/video/7382225350710824222
.The TikTok v1 player has a bunch of controls that you can use to modify from this documentation.
There’s still some wonky height issues, and I suspect this is the default height Obsidian has on the container around the editor. I gave it a good enough viewable height of
50vh
, which should be enough.Example Video
Reference links
-
Running ESM on Node REPL
d3 v7 is packaged as ESM only. That made it difficult to use in the Node.js REPL. From this StackOverflow thread, I found a solution.
let d3; import("d3").then((module) => { d3 = module; }); // Then you can use d3 anywhere once the promise is resolved.
-
Package Dependency for @observable/plot
Extremely esoteric bug. I’ve had an open issue for the past three months related to this other issue. I couldn’t figure out why npm’s registry would pull an older version of
d3-scale-chromatic
when I upgraded the@observable/plot
library. As a future note for myself, if I run into this issue again, I’ll have to go into thepackage-lock.json
file and updated3-scale-chromatic
tov3.1.0
. -
Stochastic Parrots
From this ACM paper, On the Dangers of Stochastic Parrots, the hypothesis is maybe these LLMs are parroting back what we already know and aren’t learning. We can probably, maybe, safely say that is no longer the case.
-
Students Have the Right to Protest Apartheid
From The Progressive: Students Have the Right to Protest Apartheid. My lovely fiancé wrote a piece about the student protests for Palestine.
While the Republican-led Congress has used its power to condemn any protests on behalf of Palestinians, where was the same outrage and zealousness when white nationalists came to college campuses?
-
TIL importmap
I forked a small demo from Wes Bos and ran in on my own sandbox. It seems much cleaner than using a script tag per each dependency, and works on all major browsers.
In my little demo app, I placed the importmap in the head of the document. I’m using react as well as my own utils file to test out the functionality.
<script type="importmap"> { "imports": { "react-dom": "https://esm.sh/react-dom", "react": "https://esm.sh/react", "utils": "./utils.js" } } </script>
Read more about importmap on MDN
From there, I imported these libraries in a script module.
<body> <div id="app"></div> <script type="module"> /* eslint-disable */ import { useState } from "react"; import { createRoot } from "react-dom"; import { formatMoney } from "utils"; createRoot(document.querySelector(`#app`)).render(formatMoney(100.2365)); </script> </body>
I had a hiccup with [plugin:vite
] as I found countless others have, so I wrote a custom bun server to host this project. Hopefully there’s a better setup I can find with Vite using importmap in the future.