Hamid

115 posts

Hamid banner
Hamid

Hamid

@hmdai_

Founder @hiku_dev | Engineer | Pianist

Copenhagen Katılım Kasım 2015
28 Takip Edilen85 Takipçiler
Hamid retweetledi
Harj Taggar
Harj Taggar@harjtaggar·
What a great moment to be a technical founder seeking an idea. Godspeed 🫡
English
34
26
619
169.2K
Hamid retweetledi
Nick
Nick@nickcammarata·
i hate how well asking myself "if i had 10x the agency i have what would i do" works
English
123
914
15.5K
1.3M
Zeno Rocha
Zeno Rocha@zenorocha·
What should Resend build/improve/fix in 2025?
English
29
1
53
18.6K
Hamid
Hamid@hmdai_·
I'd love to use @resend for a project I'm building but they don't support receiving emails (any ETAs for this feature). Currently considering @SendGrid, but it's not as developer friend as resend, any other suggestions?
English
0
0
0
84
Hamid
Hamid@hmdai_·
if you are applying to @ycombinator, this might increase your chances. Wanna try it? comment on this post and I will send you the link.
English
1
1
2
165
PostHog
PostHog@posthog·
The real Holy Grail
PostHog tweet media
English
2
1
15
1K
Hamid
Hamid@hmdai_·
@lemire I would appreciated if you would write a little about how Bun handles this scenario?
English
0
0
1
1.5K
Daniel Lemire
Daniel Lemire@lemire·
The fast JavaScript runtime Bun is much faster than Node.js 22 at decoding Base64 inputs. By much faster, I mean *several times* faster. But they both rely on the same underlying library (simdutf) for the actual decoding. So what gives? The problem is that Node.js needs to interact with v8, the underlying JavaScript engine (from Google)... and doing so is not trivial. Before we can start decoding the string, we need to grab the string... so, in this instance, we call String::Value... In turns, this allocates an array inside Node.js and asks v8 to copy the content to it... In an ideal world, we would avoid the trouble entirely and just ask v8 to give us direct access to how it stores the string... and we try to do that if we can... but let me come back to it... How bad can this be, right? Just a copy. Well. Let us do some profiling... So you see, the base64 decoding itself is about about 1/5 of the running time, but the copy takes half of it. What is up with this CopyChars function? Well, it is mostly just a wrapper around the standard high level C++ function std::copy_n as far as I can tell. (see v8/src/utils/memcopy.h) But we are copying for an 8-bit input to a 16-bit output... why is that? Base64 is pure ASCII... and v8 can store ASCII using 8-bit per character. We get there before both IsExternalOneByte() and IsOneByte() are false (see node/src/node_buffer.cc)... We have fast paths for these cases. If IsExternalOneByte() is true, we just get the bytes and everything is great. Unfortunately, it does not always work. So we have a v8 string that is really pure ASCII, but, seemingly, we can't tell that it is the case from Node.js, and so we have to convert it to UTF-16 needlessly, using a function that is maybe not very well optimized... and then we do the base64 decoding of an ASCII string from the UTF-16 input. It is not great. To be fair, this is just one string, created as 'Buffer.alloc(size, "latin1").toString("base64")', basically the base64 encoded version of the string "latin1latin1latin1...". In actual applications, we might have better luck. Yet. Yet. I am telling this complicated story for a reason. The story illustrates why our software is slower than it should be. We have layers of abstractions to fight against. Sometimes you win, sometimes you lose. These layers are there for a reason, but they are not free. To make matters worse... these abstraction layers often thicken over time... and the friction goes up. To be clear, I do not claim that the Node.js code is optimal. In fact, I know it can be better. But it is not trivial to make it go fast. I sometimes hear people say... "well, it is C++ and C++ is hard". No. The C++ part is easy relatively speaking. The difficulty is at a higher level. It is not a matter of syntax. It is a matter of architecture.
Daniel Lemire tweet mediaDaniel Lemire tweet mediaDaniel Lemire tweet media
Jarred Sumner@jarredsumner

In the next version of Bun `Buffer.from(str, "base64")` gets 6x - 30x faster on large input, thanks to @lemire's simdutf

English
33
234
1.6K
556.6K
Hamid
Hamid@hmdai_·
@ycombinator's demo day is a brilliant display of how startups can show great progress in such a short time. I wanted to see this progress on a daily basis, so I created Y Scraper, a tool to watch the evolution of YC batch W24 companies from the changes in their websites: curved-locust-c486.hiku.app Made with @hiku_dev
English
2
1
5
279
Hamid
Hamid@hmdai_·
For sometime I wanted to write about the annoying things about the internet and what I'm doing to fix them. So here's the first draft: hmd.ai/blog/i-hate-wh…
English
0
0
0
60
Hamid retweetledi
Lenny Rachitsky
Lenny Rachitsky@lennysan·
One in three B2B startups pivots at least once before finding their winning idea. And about one in five B2C startups. @Amplitude started as a hands-free texting app called Sonalight @Loom started as an expert marketplace called Openvid @Pinterest started as an online retail catalog app called Tote @Headspace started as a meditation event business @HuggingFace started as an AI tamagotchi In today's newsletter, I dig into the data to share: 1. Why pivot 2. How long to wait to pivot 3. The two signs it’s time to pivot 4. The two types of pivots 5. To pivot or to stay the course Link to post in comment below.
Lenny Rachitsky tweet media
English
21
62
493
103.8K
Hamid retweetledi
Paul Graham
Paul Graham@paulg·
It's hard to predict what AI will do to the world, but that's all the more reason to learn to program. AI may churn up any industry, but the programmers have the best chance of surfing on this wave instead of having it crash on their heads.
English
130
380
3.3K
391.8K
Hamid retweetledi
Ryan Dahl
Ryan Dahl@rough__sea·
Why JavaScript?
Ryan Dahl tweet media
English
81
70
586
118.3K
Hamid
Hamid@hmdai_·
@t_blom Can you (or anyone else) share a few examples of these tedious processes. I'm in the discovery process myself and I'm curious to hear others
English
0
0
1
822
Tom Blomfield
Tom Blomfield@t_blom·
I’m trying to figure out why so many startups are focusing on sales automation at the moment. At big companies, there are thousands of tedious, manual processes that are performed over-and-over by huge teams of people paid close to minimum wage. But most young programmers never encounter these processes - they’re hidden away in the metaphorical “back office”. You do find rare cases where they took a summer job at a big company - sometimes resulting in fascinating HN posts entitled “how I automated my 9-5”. But that’s the exception. When most founders are looking for things to automate, they look at the external surface of these large companies - and sales is the first external interface they hit. It’s not a bad idea, it’s just a common one. I’d encourage aspiring founders to scratch beneath the surface a little.
English
87
32
502
162.6K
Hamid
Hamid@hmdai_·
@harjtaggar The idea that Tesla could be A/B testing self-driving with an over the air update is kind of terrifying though
English
1
0
2
1.4K
Harj Taggar
Harj Taggar@harjtaggar·
Tesla Full Self-Driving drove me to and from work this morning (Palo Alto -> SF). It worked amazingly well and still blows my mind it was an over the air software update. What a time to be alive.
English
26
41
599
186.8K
Pratap Ranade
Pratap Ranade@PratapRanade·
With @ycombinator demo day coming up this weekend, I wanted to reflect on what I learned from YC W14, 10 years on + another company in: 1. The 7 minute espresso rule. Our first meeting with @sama lasted just 7 minutes. The batch hadn’t even officially started yet and my cofounder @ryanrrowe and I drove down from Mountain View to the tiny SF YC outpost to meet him. Sam was making an espresso when we walked in. He opened with – “have you launched”? We said no, too many bugs. Our product @kimonolabs made it easy to just point and click to build a web scraper. Our promise was to get you an API in 60 seconds, without code. But it only worked on a handful of sites at the time. Sam pushed us to launched in 2 weeks. We debated. The espresso finished brewing, he picked it up, looked at us and said, “well, you better get going then and fix those bugs”. We left, launched in 2 weeks and learned one of the most important lessons that day - speed matters. Ship something you’re embarrassed by. 2. There are no experts. Ryan and I were not prepared for the rapid influx of user on launch day. It got tons of traffic on day 1 and we didn’t sleep in the next 48 hours bc servers and database kept crashing. We realized we weren’t the experts and needed to hire one. We went over to @mwseibel for advice who smiled and told us that in the early days at SocialCam (Twitch) experts thought the streaming video problem was impossible. The answer wasn’t hiring an expert, but hiring someone young, capable and naïve enough to give it an earnest try. So we opted to just figure it out ourselves. 3. Messages in Pizza Boxes. Startups win through incredible customer service, then through product, not the other way around. Seibel told us how SocialCam’s streaming infrastructure went down while a key teammate was unreachable off-grid in a Tahoe cabin for the weekend. Normal people would have waited until Monday. Not Michael. He called a local pizza delivery place and asked the delivery person to send a large pizza with an urgent message in the box to the cabin. Their infrastructure was back up in hours. 4. The Twinkle can matter more than the TAM. Ambition matters just as much as practicality. Before demo day, we were struggling with the end of our pitch. We knew the value of our product, and had a fanatical and fast-growing user base, but the market size we calculated either seemed so ridiculously big that it was not plausible, or so narrow that it was equally silly. @paulg and @gralston sat with us and showed that us that if we can really pull it off at scale, it would be bigger than Google. PG suggested not talking about market size, but just making sure people could see the twinkle in our eyes when we talked about what you might be able to do with a structured copy of the internet that’s larger than Google’s. 5. You’re always at the Origin. Our demo day was successful beyond our wildest beliefs. Afterwards, Geoff drew a chart for us on a whiteboard. It was a hockey stick. He asked us where we thought we were. It was a rhetorical question. He said we were at the origin. Sam doubled down. When he invested in Kimono, he gave us a Zimbabwean Trillion dollar note (the result of extreme hyperinflation in Zimbabwe), as a cautionary reminder that the fundraising and valuation mean nothing. We have channeled this into our culture @TheArenaAI with our ritual around neon shoelaces and a pair of neon track spikes hanging on the wall to remind us that we’re at the Olympic starting line, but we don’t have any medals yet. 6. High bandwidth discussions with users don’t happen over email. The “Collison installation” is part of YC lore. @collision told us that talking to users live was essential because email and chat conversations were just not enough. We did 100s of Skype conversations with Kimono users + one power user Alex Chung, who I met this way, has become a close friend and even attended my wedding in India last year!
English
31
56
521
143K
Hamid
Hamid@hmdai_·
Thanks to organisers of @copenhagenjs for inviting me to talk about Offline GPT Store (offlinegpt.store), a free and private (offline) ChatGPT alternative based on open source models. #gptstore
Hamid tweet media
English
0
0
1
114