GEMSTONE SYSTEMS PTE. LTD. is hiring for a Software Engineer Intern internship — a 6-month, on-site Software Engineering role based in MACPHERSON ROAD, Singapore. It is an unpaid internship. It is open to university students, typically in Year 2–4. Applicants with experience in API Development, Git, Web Programming, Teaching, and Customer Support are a strong fit.
⚡ New Software Engineering internships, the moment they're posted — join our Telegram
About this role
What is Gemstone Gemstone Systems is building better tools for the workspace of the future. We're a software technology company based in Singapore, working to revitalise the way teams share and pass work between each other. The tools we use to communicate, collaborate, and hand things off are built on shaky fundamentals. Everyone has accepted this as the cost of doing business. We don't think it has to be. What we're looking for We're looking for a full-time Software Engineer Intern in Singapore to help with building some of the core components of our network and services. If you join us, you'll build and maintain the two backend services at the core of how Gemstone moves and indexes data: • AppView — our primary indexing service. It consumes a relay firehose (a real-time WebSocket stream of signed repository events), verifies what comes through, and builds the opinionated, application-specific views the chat product needs: workspace indices, global profile records, membership and graph data, aggregations. • Geode — a self-hostable real-time index we're designing specifically for workspaces. Geode sits alongside the AppView to handle low-latency fan-out and produce the canonical state of a workspace. Both services are backend-heavy (woo Rust opening :crab:). There's some frontend work too, in React with TanStack. A few of these things will be genuinely subtle — verifying repository diffs, handling re-synchronisation, parsing binary formats safely, getting ordering guarantees right. We'll pair you up and give you context. You'll grow into them. What this role is and isn't This is an implementation-focused role. Early on, you'll be turning specs and well-scoped designs into correct, tested code rather than owning architecture — and that's by design, not a knock on you. We don't expect a junior engineer to drive system design from day one. We do expect you to understand why we're building what we're building, because understanding the why is what lets you make the hundred small implementation decisions well. How we work We're building the future of work here, so everything is high-impact, high-speed, and low-resistance. You'll have ownership over what you're building, and how to build it so long as it fits within the wider context of what we're doing. This means no stand-ups, no weekly rituals, no check-ins. So long as you're doing everything you say that you're doing, we trust you. What we need from you We're not looking for someone who knows exactly what we're building from day one. Instead, here's what we focus on: • Fundamentals over experience. We don't need you to have used any particular framework or pattern. We need solid programming fundamentals and the ability to reason clearly about code. We're a small team with huge impact, and so comfort with functional programming concepts (immutability, pure functions, composition, thinking in types) will serve you well here — most of what we build leans that way. • You've made something. You've built a project that you use (almost) every single day. Be it some web service, or something on-device. You're not a beginner by any means, and you've written enough code to have an opinion on a programming language. You don't need to be expert in anything. We care more that you can pick things up than that you've already arrived. • You get what we're trying to build, and you care about it. This isn't a tiebreaker for us, it's load-bearing and is something fundamental to the way we work and move. We're weighting drive and values alongside technical ability, deliberately. We want someone who finds user data ownership, asynchronous work, and tech for public good genuinely interesting. Someone who asks "why" before "how," and who'll tell us honestly when something doesn't make sense rather than quietly building the wrong thing. Nice to haves None of these are hard requirements, and even if you have none of these, we still encourage you to apply. These are here to help you understand how we build, and if you can give us a tap for any of these at any stage of the application, it'll give you an in to talk about something we care about. • Our tech stack. While we primarily work in TypeScript and Rust, we don't need expertise or even familiarity in these languages. You'll need to know at least one language, and if you would like to contribute to the frontend, we run a TanStack Router frontend in React on Netlify. Legitimate brownie points if you've somehow used Gleam somewhere. • Self-hosting experience. You don't need to be a Sysadmin, or even a DevOps person. But we're targeting both self-hosters and cloud-hosters as our core user-base. If the phrase "Self-scaling NixOS fleet" makes sense to you and excites you, you'll be a great fit. • Building on open networks. Our product lives and breathes in ATProto. If you know what that is, literally apply right now and give us your DID and we'll get you an interview ASAP. If you can find our PDS and repo, drop us a message. If you're a fediverse native, don't worry we can show you the light (or argue with us in the interview! We're happy to talk). • Distributed systems engineering. This is a huge ask, but if you've ever had to work with the phrase "eventual consistency" and "canonical ordering", you'll probably be teaching us more than we'll be able to teach you, and we'll happily welcome you with open arms. • Be weird. We know that we're not the average team, and we're asking for skills far beyond what someone would be taught in school. But if you've done something — anything that's just been weird, that's a huge bonus for us.
Also in Software Engineering