Last year, the theme was pretty much "generics" and "parser combinators" - among other things with
This year, the theme seems to be playing around with the experimental iterator support (still behind a toggle in Go 1.22, to be released in February 2024):
(I should document my APIs, even if they are only internal… 🤦)
Spent the past couple of days rewriting my old pkcs7/authenticode library stuff for go-uefi into the new cryptobytes API.
So far quite happy with it and hopefully makes me sleep better at night.
SumUp is hiring Senior Backend Engineer
I feel a bit like a pervert, but playing around for AoC in last years in clojure, racket java and common lisp, #golang is the first language I genuinely enjoy for this task. It is clean, fast, simple, has stellar tooling and in general just gets out of you way as much as possible. It feels *good*.
Crypto.com is hiring Rust Engineer (Greenfield project)
Benchmark of WebAssembly runtimes in Go
Just released a new version of a #golang build obfuscator - with initial Go 1.22 support, experimental control flow obfuscation, and many bug fixes: https://github.com/burrowers/garble/releases/tag/v0.11.0
Rackspace is hiring AWS Cloud Delivery Engineer
After years of maintaining awesome-go, I stopped writing how to review and became a contributor to the project
sorry for not making this clear before
come help to contribute to the project
You can, for example, check out my tests for the day2: https://lnkd.in/eb7Q2Bdf
If premature optimization is the root of all evil is to Knuth, then so is premature abstraction to Go developers. #golang
Easy to use OpenID Connect client and server library written for Go
Datadog is hiring Data Engineer - Metering Platform
＞[security] Go 1.21.5 and Go 1.20.12 pre-announcement
Why Are Go Heaps So Complicated?
Here are some of the fun encounters and experiences I had at GoLab 2023! My final conference of the year.
@appliedgo I prefer this style https://commandcenter.blogspot.com/2017/12/error-handling-in-upspin.html for #golang #errors
Here is my solution. Will this time implement everything with #golang
IMHO not an easy start into the puzzles: https://github.com/jeffreygroneberg/adventofcode2023
If you are stuck with part 2 then this map might be of help!
The winner in the "quick scripting" category is Python. The loser is Rust: you can compile and run a single rust script with rustc but seems like the vscode plugin doesn't work without a proper cargo project. Plus, it's the only one where I had to bring regexes as a dependency, all other languages have it out-of-the-box.
Latest translation for learn go with tests: Persian!
Still a work in progress, but very cool to see
What Color is Your Function?
This post excellently formalises my gut feeling when using async functions (and 'await'ing them). I tried those in Python for the Blender Cloud add-on, and after a while it didn't feel right. Turns out that it wasn't me, it was the language feature.
I'm glad that my current favourite language (Go) is described as having a much more elegant approach to concurrency.
#Go #Golang Although this series was called "No-Effort November", the value I got out of it was beyond "low effort" https://boldlygo.tech/archive/2023-11-30-farewell-november/
Today I learned that in the Grumpy Old Language (aka #goLang), nil does not always equal nil. 🤦♂️
I was writing some tests for a personal project yesterday, using the Golden File technique for asserting logging output. I was struggling a bit with handling changing timestamps and durations in the output, until I discovered that slog handlers accept a very convenient `ReplaceAttr` option. 😍
Took some time to look into implementing a #SARIF output format option for #Regal yesterday. Regal a linter, and SARIF a standard format for static analysis, so it seemed like a reasonable thing to have. The specification however is 280 pages long! 😫 I skipped that and went straight for the libraries. Found one for #golang and had a PR up an hour later. Just a prettier way to build a struct for marshaling really, but I’ll take that over 280 pages of SHALL, MAY and MUST.
Datadog is hiring Developer Advocate - CI/CD
My dear Fedi-Friends!
If so, DM me! We’re hiring for a research position, where you will get to do fun stuff like reverse engineer protocols, poke at strange devices, and in general do super fun awesome stuff!
It’s a 100% remote position in the USA.
Show HN: Error return traces for Go, inspired by Zig
"The thing is that maximal tree-shaking for languages with a thicker run-time has not been a huge priority. Consider Go: according to the #golang wiki, the most trivial program compiled to #WebAssembly from Go is 2 megabytes, and adding imports can make this go to 10 megabytes or more. Or look at Pyodide, the Python WebAssembly port: the REPL example downloads about 20 megabytes of data. These are fine sizes for technology demos or, in the limit, very rich applications, but they aren't winners for web development.
I work on the #Hoot #Scheme compiler, which targets #Wasm with GC. We manage to get down to 70 kB or so right now, in the minimal "main" compilation unit, and are aiming for lower; auxiliary compilation units that import run-time facilities (the current exception handler and so on) from the main module can be sub-kilobyte. Getting here has been tricky though, and I think it would be even trickier for #Python."
Just what I've been waiting for: Process Compose, a containerless service orchestration tool, ideal for self-contained binaries (#golang, ...).
(HashiCorp's Nomad can do both btw — container-based and containerless orchestration —, but it might be oversized for small, focused projects.)
Sometimes you really find “beautiful" gems in “classic" code.
I am trying to figure out if the account is a managed account. For that, I make a call to the legacy backend.
For this, I usually look what the "classic" (i.e. legacy) code does. I have an iOS-Client (Swift) and a Desktop-Client (Electron). In fact, this is not the first time they disagree, but well, this one is quite funny.
I am sure if I'd check in Android-Code, I'd find that that code only supports the “state" being in the root, so I do the iOS-way: check for both and then return it in a consistent manner for Cicero.
Python is Easy. Go is Simple. Simple != Easy.
We have a job opening in our team which is part of the Azure Core Linux group at Microsoft.
Location: Poland, Czechia, and Romania (other locations would be very complicated/unlikely).
#kubernetes #linux #TypeScript #golang #react #mui
⚡ Python is Easy. Go is Simple. Simple != Easy.
Question for all GoLand users: Do you store `.idea` in git? Why or why not?
I've been using VSCode, and find sharing of project settings in `.vscode` useful, but there appear to be strong opinions against this in the case of `.idea`. I'm trying to understand--is there a legitimate concern, or is this based on outdated information (I can see that the `.idea` directory and contents has evolved quite heavily over the years in the broader IntelliJ ecosystem).
#golang has totally ruined me. One of my first tasks at meta is on the android app and I suddenly was reintroduced to native build times.
Python Is Easy. Go Is Simple. Simple != Easy
Something tells me that my latest blog post will end up at the top of HN: https://news.ycombinator.com
Only five more places to conquer :)
making fresh #Introduction since I've been on Mastodon a year & tons of new folks have joined since
I'm a #programmer
for many decades
solving legacy #Heisenbugs
tech #leadership, esp for small teams or startups
Alright so here is my current #golang challenge. I want to create a Graphql client in Go. The thing is, I don't want to manually define a structure for the response for each query that I make. Rather, I want my code to automatically generate a response structure by looking at my query and at the graphql schemas.
Any idea on how to start on this?
Python is the language I'm really comfortable with and in which I do almost all of my projects.
But I did a good amount of Go ~2 years ago, I really liked it and I want to do more and be better at it.
You probably should have a bit of programming experience. And it helps to consult other Go resources. The explanations by Chris James are very good, but I needed to look up a few things to better understand what's going on.
No, you're not crazy. You're using a domain specific language to do what it's good at, and you're moving compute closer to the data which always improves performance.
It just means you need people experienced with DB/SQL, which isn't as common, which is why people aren't doing it as much.
In the last few days I’m experimenting with substituting CRUD API code with Stored Procedures which directly produce the endpoints JSON as a single-row scalar value. API is then just a wrapper that authenticates, validates input and streams the DB’s JSON directly to the client.
- No ORMs, no SQL generators etc.
- All SQL is where it should belong: in the database
- API does only single „CALL myfunc(…)“ db calls
- A simple centralised error handler can accurately report errors from the database
- No weird mixed row/json columns scanning into structs and re-marshalling everything to JSON
- Codebase is collapsing to 20% (by LOCs)
- Stored Procedures can use wonderfully declarative SQL code
- Response times in the microseconds, even for multiple queries, all happens inside the DB
More side effects:
- the data model can change and evolve without touching the API at all
- Zero deploys mean zero downtime
- the API application is so tiny, I could easily switch it to any programming language I want (yes, even Common Lisp) without worrying about available databases libraries, type mapping and rewriting tens of thousands of lines of intermixed language/SQL-code.
The general direction of the dev industry is heading in the opposite direction. More ORMs, more layers, more database abstraction. More weird proprietary cloud databases with each their own limited capabilities and query language.
So you tell me: Is it crazy? Is it wrong? Why do I have doubts despite everything working out beautifully?
Here are the slides for my talk today on what's coming in #golang 1.22 at London Gophers:
I've been mostly programming in Go #GoLang for the last few weeks. Mostly enjoying it, but finding it awkward, coming from ES6, how arbitrary it seems to sometimes call thing.method() and sometimes function(thing). There doesn't seem to be much rhyme or reason to it. For example, why don't slices have a len() method, or indeed a len member variable?
The joys of #golang error "handling"
fix: handle error when listing machines by ctrox · Pull Request #6298 · #kubernetes/autoscaler https://github.com/kubernetes/autoscaler/pull/6298/files
I built a code generator to convert sqleton YAML commands into #golang code using https://github.com/dave/jennifer and it's interesting. I think I like it over go templates, but it's pretty hard to read, at least at the raw level I'm using it at right now.
I'm also unsure of where the *real* value I can squeeze out of this lies. It's already nice to have a minimal attack surface (loading YAMLs from embed.FS worked, but this allows me to be a bit more readable at least for input flags).
We cannot promise it won’t rain at FOSDEM…
But is a very good hot chocolate and many Gophers can convince you to submit a talk all the better!!
Psst 10 days left: https://github.com/go-devroom/cfp/blob/main/README.md #golang #fosdem