HN user

Benjamin_Dobell

4,155 karma

https://github.com/Benjamin-Dobell/

--

Building something in the education space for kids: https://breaka.club

Also:

Consultant @ Berserk Games - https://tabletopsimulator.com/

--

Formerly:

Head of Engineering @ Ender - https://joinender.com/

Head of Engineering @ Prequel - https://www.joinprequel.com/

CTO @ Kangaroo Interactive

CTO @ Snaploader (acquired by Archistar) - https://www.archistar.ai/

Director @ Glass Echidna - https://glassechidna.com.au/

Posts31
Comments683
View on HN
cal.com 3mo ago

Cal.com is going closed source

Benjamin_Dobell
391pts317
breaka.club 8mo ago

Show HN: Why We're Building Creativity and Game Dev Clubs for Kids

Benjamin_Dobell
1pts0
news.ycombinator.com 9mo ago

Ask HN: How do I report Discord (CDN) distributing malware?

Benjamin_Dobell
1pts0
breaka.club 1y ago

Show HN: TypeScript — Godot's Most Powerful Scripting Language

Benjamin_Dobell
1pts0
www.youtube.com 1y ago

Tech overview of my reverse engineered game companion app (now shutdown) [video]

Benjamin_Dobell
3pts1
news.ycombinator.com 1y ago

Ask HN: Can someone at Microsoft help with identity verification?

Benjamin_Dobell
8pts1
github.com 3y ago

Show HN: Luanalysis – Statically type checked Lua IDE

Benjamin_Dobell
3pts1
www.auda.org.au 4y ago

.au direct domains live March 24, 2022

Benjamin_Dobell
4pts1
www.audiosciencereview.com 5y ago

Testing Music on Tidal – MQA Deep Dive

Benjamin_Dobell
3pts0
news.ycombinator.com 5y ago

Ask HN: Is there a future for Jetbrains IDEs?

Benjamin_Dobell
12pts17
omen.tv 5y ago

Show HN: omen.tv – Low-latency P2P streaming with Chromecast support

Benjamin_Dobell
2pts1
www.docker.com 5y ago

Docker update ToS: Image retention limits imposed on free accounts

Benjamin_Dobell
265pts232
github.com 6y ago

Show HN: Flow for Lua (EmmyLua PR)

Benjamin_Dobell
3pts1
medium.com 6y ago

Facebook Community Substandards – A weak stance on hate speech

Benjamin_Dobell
1pts1
imgur.com 7y ago

LinkedIn are removing the ability to report spam

Benjamin_Dobell
2pts1
news.ycombinator.com 7y ago

Ask HN: MIT/BSD/Apache cloud file sync?

Benjamin_Dobell
2pts0
hensm.github.io 7y ago

Chromecast Support for Firefox

Benjamin_Dobell
431pts114
github.com 8y ago

Show HN: Form handling for static websites

Benjamin_Dobell
1pts0
github.com 8y ago

Humble Bundle Steam Redemption Chrome Extension

Benjamin_Dobell
1pts0
medium.com 9y ago

‘resize’ Event Broken in Mobile Safari

Benjamin_Dobell
1pts0
twitter.com 9y ago

Elon Musk has offered to fix South Australia's energy crisis

Benjamin_Dobell
2pts0
www.lifehacker.com.au 9y ago

Aussie shares home fibre (NBN) with friends over wireless bridge

Benjamin_Dobell
1pts0
github.com 9y ago

Spammers Abuse GitHub by Forking Unreal Engine

Benjamin_Dobell
3pts3
github.com 10y ago

Show HN: Turn your gaming peripherals into build lights

Benjamin_Dobell
1pts0
news.ycombinator.com 10y ago

MailChimp Kill Mandrill Links

Benjamin_Dobell
6pts2
news.ycombinator.com 10y ago

Ask HN: Is there any legit hair loss research?

Benjamin_Dobell
4pts2
glassechidna.github.io 11y ago

Show HN: Dokku environment management plugin

Benjamin_Dobell
1pts0
news.ycombinator.com 11y ago

Ask HN: Learning to program in 2015

Benjamin_Dobell
7pts5
www.eurogamer.net 11y ago

The evolution of Xbox One – as told by the SDK leak

Benjamin_Dobell
5pts1
github.com 12y ago

Remember Kogan's Android TV GPL Violation?

Benjamin_Dobell
1pts0

Been dealing with this a bit at Breaka Club. We teach kids to code with a modded version of Overcooked 2!.

We stream OC2[1] with our mod preinstalled over WebRTC. This ensures that kids/schools don't have to try and install the mod. This is particularly important since we support running on school provided hardware. Installing a game without a mod would be hard enough. Added advantage though is kids play with a virtual (on screen) gamepad on iPads in Mobile Safari.

Game instances run in Docker containers in Kubernetes/k3s atop very outdated nVidia hardware. Given we're already going across the Internet into school networks, we've tried very hard to optimize latency across the board. Using NVidia NVEnc with DMABuf (zero copy) etc. We're unfortunately using XWayland at present so experience the documented input overhead. Although our inputs are virtual devices at this point, so the overhead may be a bit different. Trying to optimize this whole thing end to end has been a challenge. I would say that performance is currently "acceptable".

OC2 coding: https://www.youtube.com/watch?v=ITWSL5lTLig (not streamed in this case)

[1] We've bought a limited number of copies of OC2 and pods claim a license on startup. If we're at capacity, kids play something else.

It's a really tricky one, but I think it's the right call for Godot, but probably not for other projects. I'm the current maintainer of GodotJS (TypeScript bindings for Godot). LLMs can generate genuinely useful solutions for Godot e.g. a functional WebGPU implementation for Godot — https://github.com/godotengine/godot-proposals/issues/6646.

However, as a senior engineer with fairly deep technical knowledge in these areas, I'm now using AI in my own projects. Frankly, before even touching Github, I'm already drowning in code reviews generated by my own use of an LLM!

There are meaningful, generally good PRs waiting for my attention against GodotJS, and other projects I (somewhat) maintain e.g. MoonSharp, C# Lua runtime. It was already extremely difficult to stay on top of PR code reviews for reasonably technical projects. When you're already somewhat burnt out from reviewing LLM code all day, it's so much more exhausting than it used to be.

Still plugging away at Breaka Club, where kids take photos of their hand drawn art and build games using it. Starts out as no-code, photograph an AprilTag and it imbues the image with functionality.

https://breaka.club/blog/why-were-building-clubs-for-kids

We also teach kids visual scripting in Overcooked 2!, allowing kids to code their way through the levels of an existing much beloved game:

https://youtu.be/ITWSL5lTLig

I'm running an in school pilot this week (Lunch time school club).

The tech stack for the main product is honestly pretty intense at this point with full multiplayer support, offline play, transitioning from client authoritative to joining a remote server. Built atop GodotJS, TypeScript bindings for Godot, which I maintain. Huge monorepo with over a million lines (yes, I'm aware that's NOT a good thing), and GodotJS itself is not included in that.

It's really not.

If I'm at the point of contributing a PR to a dependency, I've already identified the root cause in detail. There's no way a change log should be going into that level of detail, or else you're just duplicating the Git log for no reason.

Will the change log make mention of fixing the bug? Perhaps. But I'm going to want to read the technical details of the fix to make sure they've specifically addressed my issue, and not just a similar problem. What is the performance impact of the fix? Are there security implications they've explained in the commit message.

I'm a software engineer, not an end user, I want the technical details of my dependencies.

How... how is this not obviously the absolute very most useful information?

When I encounter a bug in a dependency of mine. Before I worry about submitting a PR, the very first thing I do is grab my version number and check the commit logs for fixes since my version number.

If I'm trying to decide whether I should bother upgrading, I scan the log for new features.

It's the title, not the details. The commit message body should contain MUCH more detail than the title.

If you don't like it because it looks ugly. Sure, that's subjective. And actually, I agree. Because it's standardized though, Git interfaces could even be configured to trim this off and provide different visual styles for the different kinds of commits. The types could be used as search filters too etc.

Now, I get people don't like the look of them. Neither did I when I first saw them. Then I started using them and found them useful.

It's fine, people have different preferences, it's just a convention and it's not going to work for every project. The article itself just doesn't seem to hold any water.

My apologies, I missed this on first read due to the indentation style. That said, I don't agree on the commentary.

Why on Earth are people not writing commit messages for their reverts? They should have semantic commit messages just the same as any other commit.

Unless the point is that they're not following per-commit CD, and if you commit then revert that commit before a release was made. That sounds like a process failure. Which of course, process isn't infallible, and neither is the automated version management. If you screw up, use an escape hatch — just like reverting a commit that had previously gone through code review and been merged.

Re: change log generation. The article says change logs shouldn't have commit messages. I agree. Many tools (e.g. Changesets https://github.com/changesets/changesets) use the semantic commit type to sort change log entries, but require you to write those user facing change log entries separately.

Odd. The main reason to use this style of commit message is for CI/CD automation.

EDIT: I didn't see this covered in the article on my first pass. It is covered though. My apologies.

The type of the commit informs the automated workflows how to handle the commit. This is why it comes first.

For example, if you're performing CD, if you only commit a bunch of `fix: ` then only your semantic versioning patch version number is incremented. If you commit a `feat: ` then it's a minor version is bump. `feat! ` is a major version bump.

Even if you're not using CD for releases, semantic commit messages are sometimes used to automate change log generation. Granted, your change logs should not typically include the Git commit messages themselves — those are developer facing, not user facing.

I'll definitely give you Rosetta, and even more so Rosetta 2. Spotlight too, at least in principle, but it has had its fair share of dodgy behavior over the years. I'm not really sure about the others.

There's certainly always been fantastic software available for Mac. However, it was almost never built by Apple. It sort of felt like someone one day needed a FireWire port, so they bought a Macintosh. Then they must have told a close friend working at Macromedia they needed some software - and it was all just inertia from then on.

Live rankings currently have Mac OS X first... h... how?

Apple make so so much wonderful hardware! They always have. Their software on the other hand is near universally awful. I love my Macbook, but my gosh, I do not love whatever the latest flavour of macOS is that Apple have decided to throw on their update servers this year. It just so happens that I also enjoy Unix, so I spend a lot of my time in a terminal - but Apple don't get to claim credit for that!

EDIT: OK. It just refreshed and is now showing Mac OS X as 36th over all. Crisis of faith averted.

I must admit, this is one area I've found LLMs to be surprisingly strong. They're REALLY good at reverse engineering obscure platforms, languages, game engines; and quickly throwing together super hacky tooling.

I was able to reverse engineer the PS4 edition of "New Game!: The Challenge Stage", which was never released in English. I've now fully translated it, added proper text wrapping and additional text boxes where text would now overflow. Along the way I've fully decompiled (with byte exact recompilation) the Squirrel scripts for the entire game, built atop the game engine of a now largely defunct game studio. Prior to this I hadn't even heard of Squirrel scripting language. I had most of this done in under 24 hours.

I'm not in any way a part of the visual novel community. I just did this because I enjoyed the New Game! anime way more than a near(?) middle aged man probably ought to.

P.S. My condolences to Yorhel's friends and family.

A Decade of Slug 4 months ago

Thanks, Eric; for this, and for my start as a software engineer — my first commercial development work was consulting as an 18 year old building games with C4. I'm really glad Slug was able to find commercial success for you in the way that C4 unfortunately wasn't able to.

For those of you who aren't familiar with Eric's work, he's basically the Fabrice Bellard of computer graphics.

Thanks!

Breaka Club is still very early days. Current focus is in person, but the plan is to offer an online club experience also. I'm not quite sure what that will look like just yet. Ideally yes, I'd love to make this available to others.

We're also currently building Breaka Club's own game, which is where the majority of development efforts are focused. However, since we already have the Overcooked coding experience, we haven't prioritized the visual script layer for this game just yet - it's on our roadmap.

Presently, our game is more of a cozy farming RPG / world building sandbox, with a no-code solution for world building:

https://breaka.club/blog/why-were-building-clubs-for-kids

Thanks. Just tuned my daughter's guitar.

Obviously a bit more work. But it'd be pretty neat to have live reactions. "So close!", "Nearly there", "You can do it!", "Perfect" etc.

Continuing to make fantastic progress on Breaka Club, where we teach kids to code, be creative and make games:

https://breaka.club/blog/why-were-building-clubs-for-kids

The recent Netflix Games edition of Overcooked with K-Pop Demon Hunters is cool, but not nearly as cool as kids coding and playing their way through Overcooked levels in our custom educational mod for Overcooked:

https://youtu.be/ITWSL5lTLig

I'm also maintaining GodotJS, strongly typed TypeScript bindings for Godot, which is used to build the Breaka Club RPG (see first link):

https://github.com/godotjs/GodotJS

And last week I also put together the first release of MoonSharp in ~10 years; Lua runtime for Unity. That's not for Breaka Club though, I also consult for Berserk Games on Tabletop Simulator:

https://github.com/moonsharp-devs/moonsharp/releases

Somewhat coincidentally, MoonSharp (the scripting engine Moongate based their Lua runtime on) is alive and kicking again. There hasn't been a release in ~10 years, but I published a beta for v3.0.0 a few days ago.

https://github.com/moonsharp-devs/moonsharp/releases

I'm not the creator of MoonSharp, just a maintainer on Github (who has honestly done very little). However, I consult for Berserk Games, and we have use MoonSharp as the scripting runtime for Tabletop Simulator.

I'm far from an expert in this area. I've also tried Bria RMBG 1.4, Bria RMBG 2.0, older BiRefNet versions, and I think another I forgot the name of. The fact I'm removing backgrounds that are predominantly white (a sheet of paper) in first place probably changes things significantly. So it's hard to extrapolate my results to general background removal.

BiRefNet 2 seems to do a much better job of correctly removing backgrounds in between the contents outline. So like hands on hips, that region that's fully enclosed but you want removed. It's not just that though, some other models will remove this, but they'll be overly aggressive and remove white areas where kids haven't coloured in perfectly — or like the intentionally left blank whites of eyes for example.

I'm putting these images in a game world once they're cut out, so if things are too transparent, they look very odd.

For background removal (at least my niche use case of background removal of kids drawings — https://breaka.club/blog/why-were-building-clubs-for-kids) I think birefnet v2 is still working slightly better.

SAM3 seems to less precisely trace the images — it'll discard kids drawing out the lines a bit, which is okay, but then it also seems to struggle around sharp corners and includes a bit of the white page that I'd like cut out.

Of course, SAM3 is significantly more powerful in that it does much more than simply cut out images. It seems to be able to identify what these kids' drawings represent. That's very impressive, AI models are typically trained on photos and adult illustrations — they struggle with children's drawings. So I could perhaps still use this for identifying content, giving kids more freedom to draw what they like, but then unprompted attach appropriate behavior to their drawings in-game.

Not really. I've written a bunch of code to try maintain the limited support for it that already exists in GodotJS, but I've never really tried it. Main reason I haven't is I'm dependent on Web Worker(-like) APIs in GodotJS, and they're currently missing for JavaScript Core. But since I actually wrote some of those APIs, that's not really an excuse, I can port them easily enough.

So, yeah, I should really give it a shot. Thanks for the reminder.

I've recently become the maintainer of https://github.com/godotjs/GodotJS (TypeScript bindings + JS runtime for Godot). GodotJS supports numerous runtimes, but V8 is the most well supported. Unfortunately, I have been noticing V8's GC a bit more than I would like recently.

Don't get me wrong, I'm aware V8 wasn't designed with games in mind. QuickJS (which is also supported by GodotJS) is probably the safer bet. Or you know, not JavaScript at all. However, I'm building tooling specifically for kids to make games, and TypeScript is leagues ahead in terms of usability:

https://breaka.club/blog/why-were-building-clubs-for-kids

Before I make the swap to QuickJS out of necessity, I was hoping to try my hand at tuning V8's GC for my use case. I wasn't expecting this to be easy, but the article doesn't exactly instill me with confidence:

Simply tuning the system appears to involve a dose of science, a dose of flailing around and trying things, and a whole cauldron of witchcraft. There appears to be one person whose full-time job it is to implement and monitor metrics on V8 memory performance and implement appropriate tweaks. Good grief!

If anyone reading this has experience with tuning V8's GC to minimize stop-the-world GC duration (at the cost of overall memory use, or runtime performance etc.) I'd greatly appreciate any advice that can be offered.

Look. This isn't on the front page of HN anymore. So I'm mostly writing this to you. You've work to do on your communication. This style of communication probably works just fine with teenagers, but it's not going to hold up to scrutiny with adults.

The crux of the question here was about whether GDPR obligates us to email all 5,000 people signed up for this program about this vulnerability.

You are just not going to be able to control the narrative like this. Trying to tell someone else what the "crux of the issue is" will not allow you to shift the goal posts. The article described a pattern of issues, and in my previous comment I specifically raised one. No determined individual is going to just leave that thread dangling for you.

Is there something else we should be doing?

Yes. Obviously. That's the point.

The crux of the question here was about whether GDPR obligates us to email all 5,000 people signed up for this program about this vulnerability. The two lawyers we have consulted on this have both said no. One of them specifically specializes in privacy compliance.

It's not a great look for the leader of a children's organization to so blatantly flout that they lack a moral compass. You're currently interacting with the public, not the legal system. Sure, whether or not you're legally required to inform your kids is relevant. However, the law is quite literally the bare minimum of what you're obligated to do.

No-ones reading this thinking. "Oh great, they've done the bare minimum legally required of them." They're thinking, "Wait. Companies notify people of breaches all the time. You apologise, and explain what you're doing to rectify the situation. What have they got to hide? Are they worried they'll get an influx of outrage because this lack of care was something people in the community were already concerned about?" With the context given from the odd parent in this thread, it certainly comes across as the latter.

It's not a complicated legal question, the answer is just no.

This detracts so much credibility from your communication. There is no lawyer on Earth that will describe this as "not a complicated legal question". No adult that's ever had any communication with a lawyer is going to believe this for a second. Lawyers are notorious for their non-committal attitude toward providing legal advice. Nothing is black and white — it's all grey. So this comes across as:

a. You've never interacted with a lawyer in your life. Or, b. You're telling porkies, or at the very least, are way too flippant with hyperbole.

It most certainly was. You have someone outside your organization who accessed the data, and you know about it. Here's what you just wrote about the person who accessed this endpoint:

- The author was ultimately banned from the community not for their opinions on this matter, but because of a long streak of unrelated conduct issues that culminated in a spree of saying horribly abusive things to multiple other members of the community.

— They have been pursuing a grudge against the organization ever since. They are not a reliable narrator, this post is a fantasy version of events that casts them as a martyred hero.

Someone who has been acting maliciously against your organization accessed that data. And you think it's fine? They're a teenager. An angry teenager, who is acting out. You honestly believe you can trust they didn't distribute this data or tell anyone else about the problem before you found out about it?

When I was a teenager, someone in my year level gained access to a lot of personal data about a bunch of people in our year level. This was a smart individual who at least somewhat understood the gravity of the situation. But they were also a kid, of course they distributed some of the data — bragging rights and what not.

What about the section titled "the surveillance infrastructure (orpheus engine)" where the teenager claims children's data was intentionally being sent out to third parties, specifically to profile kids? What's that all about?

Look, no-one read this article and thought "Wow, this is well written article by a super mature well-adjusted individual. I'm taking this as gospel." The article is clearly written by an angry teenager. I feel far more invested in this now that I've seen your responses. The way you're handling this, and yourself, is just downright absurd. Stop.

I'm not going to pretend this is an easy read. So I wouldn't blame you if you stopped early. However, there's a section titled "the surveillance infrastructure (orpheus engine)" which claims that children's private information is being distributed to third-parties without consent.

If they're ignoring GDPR because they're in the US, you can potentially flag these as COPPA violations. COPPA is serious stuff. Courts can fine over $50k for each violation, where each individual impacted can be considered a unique violation. COPPA applies to under 13s, I'm not sure if there are age restrictions in place to join Hack Club, but if there isn't even a privacy policy, I doubt age restrictions are properly enforced.

Melbourne is one of the largest cities in the world by urban sprawl. It is very spread out. I live 85 km from Melbourne CBD, and am officially still considered part of Melbourne. Well, there isn't an "official" boundary per se. My council is considered a council of Melbourne, but I'm also the last suburb in this direction. (Yes, Melbourne's Covid lockdowns applied to us.)

When my wife and I ended up delivering my youngest daughter at home. (Because they'd sent us away from hospital 30 minutes earlier). I think the ambulance must have taken around 10-15 minutes to arrive. Granted, I don't have a great memory of it, lots of Adrenalin, a bit of a blur. They arrived in time to cut the cord. Fortunately, the phone dispatcher stayed on the line and provided me with instructions the entire time.

Just to clarify, I think the dispatch time was reasonable, I'm not at all upset with the ambulance service. The hospital — different story.

P.S. My daughter is 2 now. 100% fine, fortunately.