HNHacker News
TopNewBestAskShowJobs

jameshiew

35 karma · joined July 31, 2016

https://james.hiew.net
submissionscomments
jameshiew··on Ask HN: How do you manage skills files?
I manage them as part of my dotfiles using chezmoi. A `.agents/skills/` directory + a symlink to there from `.claude/skills/`.

> Do you keep improving them over time?

In my global AGENTS.md I have a note to agents to explain any frustrations they had doing a task, and to suggest any skill/tool/AGENTS.md improvements. I am trying to keep AGENTS.md files small but still finding the balance.

jameshiew··on Ask HN: Does anyone just listen to their own AI music now?
Not usually but I've had periods where I've only been listening to AI-generated music (my own and others) instead of using Spotify. Suno is getting really good now.
jameshiew··on Ask HN: How are you productively using Claude code?
This is my `mcp.json` in VS Code (requires `uvx` and `npx` to be available):

  {
   "servers": {
    "context7": {
     "command": "npx",
     "args": [
      "-y",
      "@upstash/context7-mcp"
     ],
     "type": "stdio"
    },
    "fetch": {
     "command": "uvx",
     "args": [
      "mcp-server-fetch"
     ],
     "type": "stdio"
    },
    "git": {
     "command": "uvx",
     "args": [
      "mcp-server-git"
     ],
     "type": "stdio"
    },
    "playwright": {
     "command": "npx",
     "args": [
      "@playwright/mcp@latest"
     ],
     "type": "stdio"
    },
    "brave-search": {
     "command": "npx",
     "args": [
      "-y",
      "@modelcontextprotocol/server-brave-search"
     ],
     "env": {
      "BRAVE_API_KEY": "${input:brave-api-key}"
     },
     "type": "stdio"
    }
   },
   "inputs": [
    {
     "type": "promptString",
     "id": "brave-api-key",
     "description": "Brave Data for AI API Key",
     "password": true
    }
   ]
  }
The Sonnet 4 agent usually defaults to using `fetch` for getting webpages, but I've seen it sometimes try playwright on it's own. It seems the brave-search MCP server is deprecated now, so actually it's probably not the best option as a search MCP (you also need to sign up for an API key), right now it works well though!
jameshiew··on Ask HN: Is anyone using Super Grok Heavy for code?
How do you find o3-pro for coding? I've also been taking the approach of hand building context and copying and pasting it in for complicated tasks where I want lots of reasoning, like bug/security audits.

I found o1-pro unbelievably good for coding, but when o3-pro was released, I saw the response length in ChatGPT was gimped severely compared to o1-pro, so didn't find it all that useful - it couldn't output long enough responses. I actually cancelled my ChatGPT subscription as it seemed like such a downgrade, though I'll probably try using again via OpenAI's API at some point, so long as the response length isn't capped. I'm tempted to try out Grok 4 Heavy.

jameshiew··on Ask HN: How are you productively using Claude code?
I've barely tried Claude Code but looking to experiment with it as well after hearing a lot of good things about it. I've had good experiences with the GitHub Copilot agent in VS Code for working with Rust, specifically with Sonnet 4.

Refactoring duplicate code into a helper function should be achievable with current agents. To replace existing code with an external crate , you could try giving the agent access to a browser (e.g. playwright-mcp), and instructing it to browse the crate docs. For anything that involves using APIs that may be past the knowledge cutoff for the agent's model, it's definitely worthwhile to have some MCP tools on hand that'll let it browse for up-to-date info - the brave-search and context7 MCPs are good.

jameshiew··on Ask HN: Have you ever taken a career break or gap year to hack?
Yes, I've taken multiple - anywhere from a couple months to an entire year during COVID. Travelling, trying my hand at a business, others to just take a break and work on side projects or freelancing before fully jumping back in.

It's good to consider the financial impact seriously in balance with everything else - not only the income you won't earn, but also how that would have compounded across your lifetime.

To address your point about recruiter emails, I still get them. So long as you can provide value to a business at the end of your break it's not necessarily an issue, though you might have to work harder to demonstrate that - I think especially for the soft skills you'd otherwise be using day-to-day in a workplace as opposed to when you're just doing your own thing.

jameshiew··on Ask HN: Who wants to be hired? (December 2024)
Location: London, United Kingdom - open to working with US timezones

Remote: yes (can work hybrid or full time on-site if there is an office in London)

Willing to relocate: no

Technologies: Rust, Go, Kubernetes, AWS, Terraform, Python, React, Java

Résumé/CV: https://www.linkedin.com/in/jameshiew/

Email: james@hiew.net

GitHub: https://github.com/jameshiew

Website: https://james.hiew.net

---

5+ years software development experience, mostly working on backend systems at fintechs. Seeking an IC role using the Rust programming language (and other tech as well!)

My previous experience ranges from working in cross-functional teams at larger corps, to being the sole fullstack developer for a startup. Some of the more interesting things I've worked on: an event-driven scheduling service (think dkron), core protocol logic for a blockchain validator in Rust, and complex SQL models for financial pipelines.

Let's talk if I sound like a fit for your engineering team or project: james@hiew.net

jameshiew··on Codeium launches Windsurf – the first agentic IDE
Very cool, hopefully VS Code eventually builds in native support for whatever functionality is missing that is part of the reason for these forks.
jameshiew··on Introducing ChatGPT Search
The new web search icon appeared for me straightaway in the ChatGPT macOS desktop app, within an in-progress conversation, without even having to restart. Before I'd even seen this official launch announcement. Very smooth!
jameshiew··on Ask HN: Recommendations for a New Domain Registrar?
Great but only so long as you want to use their nameservers. I had a domain with them that I wanted to use with AWS Route 53 nameservers which I was unable to - then I had to wait the standard ~60 days before I could transfer it out which caused a headache in the meantime.
jameshiew··on Ask HN: Recommendations for a New Domain Registrar?
Cloudflare is straightforward to use but watch out, they don’t let you use custom nameservers, which is very unusual for a domain registrar. As great as Cloudflare’s nameservers are, this was a dealbreaker for me and I eventually moved all my domains off of there.
jameshiew··on AI Can [Almost] Clone Your Favorite Podcast Host’s Voice
"[Almost]" doesn't appear in the title of the article as currently linked. I would also agree that there is no need for an "almost" anymore - voice cloning can be pretty spot on e.g. this fake Joe Rogan interview with Sam Altman[1].

[1]: https://www.youtube.com/watch?v=meu0CoYv3z8

jameshiew··on Ask HN: Is ChatGPT's Web GUI's Code Blocks Language Selection Wrong on Purpose?
I have noticed this as well sometimes, though never thought it might be intentional, I'd doubt it is. You can always hint to ChatGPT which language to use for the codeblock anyway though.
jameshiew··on Ask HN: Did you change your software architecture due to monetary constraints?
I'm involved in building a backend right now for which I chose to use AWS ECS with Fargate containers for deployment, over some managed Kubernetes service like AWS EKS which would have been my first choice. Using ECS has been dirt cheap (<$5pcm) whereas AWS EKS is ~$75pcm per cluster, before you even start running any containers. I'm not completely sure it was the right decision as it's involved having to spend time getting familiar with ECS, but it seems to work well enough and cheaply for something which isn't making money yet. I probably could have provisioned a Kubernetes cluster myself using something like kops but didn't want to deal with the headache.

Another one is using Heroku (~$7pcm) over Vercel (~$20pcm) for deploying a simple website/CMS for a business (and therefore not eligible for Vercel's free hobby tier). I initially wanted to use Vercel but Heroku is actually fantastic if you're developing solo and don't need all the bells and whistles Vercel provides.

jameshiew··on Launch HN: Play.ht (YC W23) – Generate and clone voices from 20 seconds of audio
I would mention something to that effect in the modal because it wasn't clear to me why it was asking for card details at that point for "$0.00/mo" (though I guessed the reason). Maybe something like "To prevent abuse, we require card details, but you won't be charged", but worded better.
jameshiew··on Ask HN: Do you refuse to do coding challenges for software engineer interviews?
No, I lean in the opposite direction - I would be more inclined towards employment opportunities which have a reasonable coding challenge as part of the hiring process. In my experience, there is a strong correlation between how technically challenging the hiring process is and how good a place is to work as an engineer. A reasonable coding challenge is a signal that there are competent engineers within the organization (in order to be able to come up with and mark such challenges), and that the organization values engineering capability to some degree.

Of course, there are exceptions to this. I'm also explicitly excluding here employers who outsource the technical challenge to a third party like leetcode.

jameshiew··on Ask HN: Have you lost enthusiasm for programming and learning after ChatGPT?
It has not, although it has greatly changed how I program and learn. We are currently entering a period where "centaurs"[1] - humans using AI - will be the most effective agents for many tasks, including programming. With that in mind, I'm enthusiastic to embrace AI as a daily tool, knowing it will let me do things faster and better - but I don't expect this period to last forever and so it has put a sense of urgency in me to execute rather than just ideate, which I did not have before the dawn of things like ChatGPT.

[1]: https://www.parc.com/blog/half-human-half-computer-meet-the-...

jameshiew··on Ask HN: Which AI powered tools are you using daily?
GitHub Copilot for coding, and ChatGPT for sundry tasks, mostly summarizing and explaining written text. I pay for both of these tools now. ChatGPT seems great in particular for summarizing YouTube videos (I copy and paste a YouTube video transcript) and email newsletters. I also use it alongside reading longform articles to expand on or clarify parts of the article I don't fully understand or want to know more about. You can also ask it follow up questions when using it in this way (e.g. for examples of the concept or thing you don't understand).
jameshiew··on Ask HN: Best examples of software documentation that you've come across?
I would second this. Having interactive examples alongside the documentation (in multiple languages nonetheless) was something that stood out to me the first time I had to read the Stripe docs some years ago.
jameshiew··on Ask HN: How can I make Mail/Messages links open in Incognito by default?
Since you mention Mail/Messages, I assume you are on macOS. I had a similar issue - wanting to always open links from Slack in Chrome, but links from elsewhere in Brave. I use Choosy[1] which works well for me, but there look to also be some free/libre alternatives, like Browserosaurus[2] (which I've never tried).

[1]: https://www.choosyosx.com/

[2]: https://github.com/will-stone/browserosaurus

jameshiew··on Ask HN: How do you improve the performance of IntelliJ IDEs?
I agree, it looks like JB are working on upgrading the default runtime to Java 17, but I think generally they could encourage developers to try out different runtimes anyway and report bugs rather than warning so strongly against it. I understand the JB runtime made some improvements to UI stuff, certainly the font rendering is much better in it, but at least for my setup that's not a big issue compared to things like indexing time. It'd be interesting to see a comparison of using different runtimes for IntelliJ, with proper profiling and the like.
jameshiew··on Ask HN: How do you improve the performance of IntelliJ IDEs?
There is an action in IntelliJ - "Choose Boot Java Runtime for the IDE". I first downloaded the Corretto 15 JDK within IntelliJ itself as if I was going to use it as the SDK for a Java project, then it was available to me to select as a boot runtime in that action. Some more details here.[1]

The first runtime I tried was Corretto 17 which crashed on me, and I had to delete some `idea.jdk` file somewhere or other to get IntelliJ to start up again. That file seems to contain which JVM to use when starting IntelliJ, I use Toolbox as well (on Ubuntu).

[1]: https://www.jetbrains.com/help/idea/switching-boot-jdk.html

jameshiew··on AI can write code like humans, bugs and all
I haven't used Github Copilot but from what I understand it generates a completion from the text already in your file. Since OpenAI Codex can "understand" natural language instructions, I've found putting code into a prompt with extra context in natural language on what needs to be achieved can give decent results. e.g to generate a docstring, you might use a Markdown-ish prompt like

  # Writing a good docstring
  
  This is an example of writing a really good docstring that follows a best practice for the given language. Attention is paid to detailing things like 
  * parameter and return types (if applicable)
  * any errors that might be raised or returned, depending on the language
  
  I received the following code:
  
  ```{{{language}}}
  {{{snippet}}}
  ```
  
  The code with a really good docstring added is below:
  
  ```{{{language}}}
  
If you wanted a docstring in a particular format, you could add some specific examples as context to your prompt to get even better results.
jameshiew··on AI can write code like humans, bugs and all
I've been using OpenAI Codex directly (so not Github Copilot) for some coding tasks and it's been useful enough that I am using it daily at this point, though mostly as like a sort of personal Stack Overflow, especially when working with unfamiliar APIs. Prompting it with a function signature/docstring of what you want to achieve can give a helpful and often functional example that uses that API, even if the code is not perfect.

It's also decent at doing tasks that would be easy for a beginner programmer but perhaps tedious. Like you can give it a function for generating random colors and a task like "expand the variable names in this function to be better", and it will change variable names like `r`, `g` and `b` to `red`, `green` and `blue`. Hardly amazing, and the latency of the API means it's not actually that useful in practice (yet), but with the right prompt it can do some impressive things, and I expect it to get much better in the near future. Pulling magic strings out of functions into constants and adding typehints to Python functions are other simple tasks I've found it OK for.

jameshiew··on Show HN: Neovim plugin for using OpenAI Codex
This is a plugin that adds a few "flows" to Neovim for AI code assistance. The main flow generates and appends a completion for the visual selected text. There are a couple other flows that try to get the AI to generate changes to the visual selected text e.g. add a docstring, or do a freeform task like "make all the variable names longer" or "add typehints".

Currently it only works with OpenAI so you'd need an API key to use it, but the plugin is (over)engineered so that adding a backend for something more open like GPT-Neo should be doable. OpenAI Codex is used by default but other OpenAI engines can be used as well.

jameshiew··on Ask HN: What open source projects are you working on and why?
A plugin for Neovim that uses OpenAI to generate/modify code. I'm really excited to see how the process of "writing" code will change as this sort of AI improves. Currently, my impression is it can do things like lengthening variable names or generating self-contained functions fairly reliably, given enough context.
jameshiew··on Point of WebGPU on Native
Absolutely this. I wish I had spent more time learning about the rendering pipeline before jumping into trying out so much as a "Hello Triangle" tutorial.

It's also worth getting familiar with terminology early on, because common terms in the context of graphics programming have different meanings to their common usage. e.g. I've found it helpful to think of a "vertex" first and foremost as an element of an array, which is processed SIMD-style by the "vertex shader". In most cases it is the co-ordinates of a polygon vertex, but usually with other data bundled in the element as well such as texture co-ordinates. The term "shader" seems to be used for any program that runs on the GPU, regardless of whether it does shading of any kind.

jameshiew··on Ask HN: Is Rust worth it compared to Golang?
I am probably at a similar stage to you, investing seriously in learning Rust in the past month or so. Coming from having used Go as my “main” language for almost a couple of years, already I can tell it is going to be a longer journey to become as proficient with Rust.

The biggest thing I am missing right now from Go is the fast compile times, something I rarely had to think about before. In some of the small Rust projects I’ve tried out, compilation takes minutes on a clean run or after having updated dependencies. When you’re checking out a lot of different Github projects, or experimenting with different crates, it really adds up.

I’ve tried out Rust’s equivalent of channels (the `std::sync::mpsc` module - https://doc.rust-lang.org/std/sync/mpsc/) and it feels clunky by comparison to Go. Spawning threads in Rust via a `thread::spawn()` call feels archaic compared to `go func` (putting aside that threads aren’t exactly equivalent to goroutines, you might generally use them in the same way). I’d actually hope Rust could introduce first class language constructs for concurrency like Go has, at some point.

There are some other Go things like implicit interfaces I am learning to get used to without, but I am really liking Rust’s concept of ownership and having proper enum types/pattern matching is a breath of fresh air. I probably appreciate Go more now for what it is - a straightforward, performant language with very good devex.

jameshiew··on Ask HN: Tools for checking my knowledge?
Pluralsight has self-assessment tests for various languages and technologies - https://www.pluralsight.com/product/skill-iq

I've only done the Python one myself but it did seem to ask questions on some fairly esoteric stuff, from what I vaguely remember.

jameshiew··on Ask HN: Is anyone using the Windows 10 Subsytem for Linux?
The NVM init slowness issue isn't specific to WSL - see https://github.com/creationix/nvm/issues/1277. I also had to sandbox the NVM init lines (on macOS) as timing my .bashrc revealed it as the worst offender.

On the topic of speeding up terminal startup, I can recommend https://github.com/benvan/sandboxd for managing various shell initialization scripts to only be run or sourced at the point where they are needed.

Page 1 of 2Next →