HNHacker News
TopNewBestAskShowJobs

stephenblum

24 karma · joined December 6, 2013

www.pubnub.com
submissionscomments
stephenblum··on We Rebuilt Jev's API on an Open Model and Used It to Play Doom
TypeSafe AI's Jev turns unstructured input into typed decisions and probabilities. We rebuilt the API with an open model, reached 113ms median latency on an M4 Mac, and used it to play Doom.
stephenblum··on How AI tool calling works (40 lines of vanilla JavaScript)
nice! like HTML tags. I remember seeing this back with meta Llama 2. the <|start_header_id|>assistant<|end_header_id|> style. And [TOOL_CALLS] ... [/TOOL_CALLS] style with Mistral
stephenblum··on How AI tool calling works (40 lines of vanilla JavaScript)
Yes! You saw it immediately. Article was written by Claude. It has a distinct cadence that matches all the way through writing. It's the same in the CLI claude code. I'll make sure the upcoming lesson will be less ai generated text. I usually like to focus on writing the most read parts. Like the intro and core focus of the article
stephenblum··on How AI tool calling works (40 lines of vanilla JavaScript)
You a are right as The article doesn't mention KV cache. Also, yes the writing is slop, and does not mention the LLM special tokens. Only discusses the use through the OpenAI-style JSON wrapper that allows you to define the schema of a tool call in JSON. For most of the audience, they are looking to build AI agents, and the high-level tool calling interface is what they would be using
stephenblum··on How AI tool calling works (40 lines of vanilla JavaScript)
Yes this is true, you even got the model correct. I relied too much on Claude this time. I'm starting to work on the next AI agent lesson this week. I'll do better on the upcoming lesson. The next lesson is A2A focused
stephenblum··on WebLLM: Run a language model in the browser on WebGPU, Lesson 1
Early to be using this technology for coding in the browser. Our consumer devices are underpowered. It is fun to see how far we can take it today. Here is the walkthrough for running LLMs client-side with WebLLM using WebGPU. Initializing and using @mlc-ai/web-llm with model downloads, caching, and progress tracking. Using the streaming completions sent to pre element with zero network calls after it is loaded. Also handling WebGPU memory limits. Includes code blocks and an end-to-end video walkthrough.
stephenblum··on Show HN: Building AI agents client-side JavaScript
that is the strongest point I've heard. who would this be for? Replit, Bolt.new and Lovable are mostly-in browser vibe code engines. Target audience would be for a free local version alternatives. Though maybe that isn't something that anyone needs.

The original intent for this project is for learning how to build agents, and finding what are the limits in the browser. Especially now that we have WebLLM. Maybe we can find a use for it with local agents

stephenblum··on I am sick of LeetCode-style interviews
You are right, there's not enough time to filter a bad hire. Not enough time to fully vet anyone during an interview. We can work a challenge together to see how you work collaboratively
stephenblum··on I am sick of LeetCode-style interviews
Interviews cover collaboration compatibility. Not enough time to quiz you on tech knowledge. Leetcode-style interview represents your ability to work a problem collaboratively with a team
stephenblum··on Show HN: Open-source macOS AI copilot using vision and voice
You made real-life Clippy! for the Mac. This would be great to be for other mac apps too. Add context of current running apps.
stephenblum··on [dead]
Using native google sheets equations, you can build your own neural network. Google Spreadsheet: https://docs.google.com/spreadsheets/d/1VS1kn0zXbedx7JEJu1ui...
stephenblum··on HTTP/3 and QUIC: The Connection ID
HTTP/3 maintains a unique connection ID through the QUIC protocol. The connection ID is not dependent the device's IP address. This allows the connectivity to remain persistent even as users switch between different networks such as 5G and Wi-Fi. In a way you can consider this as a "connectionless" session. The session isn't tied between two IP addresses.
stephenblum··on Want employees to return to the office? Then give each one an office
WFH is happiness. I want that. And I want that for my team.
stephenblum··on Three challenges to be aware of with Kubernetes
This is problem for our planet. Carbon emissions are high.

Here's our current CPU Utilization. https://images.ctfassets.net/3prze68gbwl1/1wy7lTmXHA1liIlcMW...

We're paying AWS for servers that remain hot that we don't use effectively.

stephenblum··on Three challenges to be aware of with Kubernetes
Challenges with Kubernetes: 1. High Costs due to unoptimized initial deployments. 2. Steep learning curve of Kubernetes. 3. Tuning autoscaling for stability and efficiency.
stephenblum··on Unlocking Performance: CPython 3.12 Global Interpreter Lock
Conversation from reddit thread: https://www.reddit.com/r/Python/comments/15i5je7/unlocking_p...
stephenblum··on Unlocking Performance: CPython 3.12 Global Interpreter Lock
I was initially excited about the possibility of disabling the Global Interpreter Lock (GIL) in Python 3.12, as it promised to enable new opportunities for performance gains. It's true, however we have so many options already! Disabling the GIL would only allow for the use of threading patterns and threads within Python, which I am not a fan of this programming pattern. My preferred method for achieving high concurrency and efficient programs is to use multiple processes with message passing.
stephenblum··on We saw 2x Performance After Migrating Python 2 to Python 3
If you're considering upgrading your Python the the latest runtime, you may get the results we saw as well.
stephenblum··on Dashcam JavaScript Debugging Network
This is a new way to provide even more detail debugging javascript app. We show how to screen record and get network traffic for your js app.
stephenblum··on Migrating Python to Rust: Channel Groups PubNub Engineering Notes
We're moving to Rust. For web services we are using Tokio Axum web framework. For our high scale traffic, we need to ensure we cover our bases.
stephenblum··on Long Polling – Concepts and Considerations
Hi Derek. Thank you for mentioning us here. The age-old conversation on transport protocols is evergreen. The goal of these protocols is to allow data transmission from one device, to other devices. It is great to be on the leading edge of technology, continuing the innovative optimizations of the use of the internet. As the internet scales, more devices need connectivity and each byte counts more and more. There are 20 billion connected internet devices today (2018). That's 2x more than the number of humans. The device to human ratio continues to grow. We need efficient and affective methods for coordinating information between devices.

The various methods to coordinate information between devices on the internet should be looked at objectively and mechanically. At the end of the day, the modern reliable messaging protocols use the IP Frames. The basis of our internet. Layer 6 protocols based on IP Frames are not equal. Many methods are not compatible with the various configurations of networks. The bytes and bandwidth required between each production-ready method differ.

* HTTP/1.1 - 100% Compatibility

* HTTP/2.0 - 100% Compatibility with client initiated connectivity and backward compatibility with HTTP/1

* MQTT - near-full internet wide compatibility ( routing policy / network topology )

* WS - near-full internet wide compatibility ( routing policy / network topology )

Each message received using these mechanisms requires TCP ACKs. The promise of MQTT and WS leads you to believe that the data streaming to your device over WS or MQTT don't require ACKs. However this is not how TCP works. When packets are received there is an associated timeout and retransmission when an ACK is late or missing. Additionally light-weight layer 6 traffic is required to maintain connectivity between two endpoints. Otherwise LRUs and quotas are triggered for routes could be treated as stale, and therefore dropped altogether. This is the underlying mechanism of the layer 6 protocols that are often left out of the discussions.

There is a clear winning approach in my mind. HTTP/2.0 includes, by default, server-initiated data push. The required TLS and header compression, as part of the spec, allow for a secure yet efficient streaming solution. With HTTP/2.0, TCP socket limits are less of a concern, as the client only needs one TCP socket to subscribe to an unlimited number of data feeds. HTTP/1 requires the client to maintain separate sockets for each independent stream, as HTTP/1 enforces head-of-line ordering for muxing. Something we've done special for HTTP/1 clients, we've added multiplexing by allowing multiple topic subscriptions and filter expressions to be passed in a single HTTP call on the same socket. This isn't natively built into HTTP/1 and is supported on all our SDKs.

This is why we have chosen HTTP/2.0 as our next-gen transport protocol. We have started by providing HTTP/2.0 connectivity at our edge for select customers. As of 2018 PubNub is the world-record holder for the largest online concurrent event in human history using HTTP/2.0 for live data streams on a globally celebrated sporting event.

You should be using HTTP/2.0 for your customers. Here is a dockerfile that makes it easy for you to start testing HTTP/2.0 - https://github.com/stephenlb/http2-proxy

Stephen Blum ( @stephenlb ) CTO PubNub

stephenblum··on Ask HN: Who is hiring? (June 2018)
PubNub | Full Time | Senior Product Manager | ONSITE San Francisco | https://www.pubnub.com/company/careers/?gh_jid=1077030

Senior Product Manager who will take a leadership role working with team members who have experience in large scale systems.

Apply: https://www.pubnub.com/company/careers/?gh_jid=1077030

stephenblum··on Ask HN: Who is hiring? (June 2018)
PubNub | Full Time | Senior Developer | ONSITE San Francisco | https://g.co/kgs/r4jGgY

Go / Rust / Python / C and other languages power the +300 million connections receiving JSON payloads on mobile devices to trigger in-app updates for Taxi / Ride Sharing / Chat / Live TV Interactions / Internet of Things / Doorbells / Location Tracking and more.

A good time to join when you are ready to move up your job role or ready to try something new in Developer APIs.

Running on AWS Amazon in with Docker and Kubernetes.

Apply: https://g.co/kgs/r4jGgY

stephenblum··on Ask HN: Who is hiring? (June 2018)
PubNub | Full Time | SRE Site Reliability Engineer | ONSITE San Francisco | https://g.co/kgs/MQu53x

Docker / K8s - building deployment and ops on Amazon AWS. We are moving from Hashicorp tools like Terraform to the latest Kerbernetes.

Apply: https://g.co/kgs/MQu53x

stephenblum··on Ask HN: Who is hiring? (June 2018)
PubNub | Full Time | User Experience | ONSITE San Francisco | https://g.co/kgs/VqGmJA

User Experience / Product Manager who wants to make a super-good developer API experience.

Apply: https://g.co/kgs/VqGmJA

stephenblum··on PubNub is Faster than iMessage
Yes you are right regarding the visuals, essentially you can not be certain unless you check the datagrams on the network using tcpdump ( or wireshark for GUI ).
stephenblum··on Learning to program is getting harder
specializing is getting harder. DevOps, BigData, AI/ML, Blockchain, Full stack / MEAM, Front-end, Mobile Android Studio, XCode
stephenblum··on Show HN: Live multiplayer blackjack for Android using Pubnub
Super Deluxe!
stephenblum··on Ask HN: How to maintain session along with Websockets?
Hi Sub, you are asking for security question I believe. You need to make sure you pass an unpredictable "session" token.
stephenblum··on You might not need a WebSocket
Justin, this is awesome! The overhead of websocket is also surprising when all layers are considered including TCP Frames http://tavendo.com/blog/post/dissecting-websocket-overhead/