Ardan Labs, a Go, Docker and Kubernetes training and consulting firm, publishes technical posts on Go scheduling, garbage collection, and modules.
HN commenters cite its Go design posts as excellent, and the company also appears in hiring threads and course pricing discussions.
Ardan Labs | Mid - Senior Software Engineer | Miami, FL | Full Time | REMOTE | ONSITE | https://www.ardanlabs.com/
Ardan Labs is a high performance software development firm that builds and delivers reliable solutions and applications. We're looking for several Mid-level and Senior Backend Engineers to help us develop solutions for our clients.
This is a great opportunity to be part of a culture of caring, cooperation, reliability and growth. We are based in Miami, Florida, but our team is spread across North America. Some roles may be location dependent, but we welcome remote work.
Ideally you are a responsible, self-motivated individual that is looking to work with the latest technology and create uncompromising user experiences.
Responsibilities:
Design and build REST/gRPC APIs with speed and reliability in mind.
Design and use SQL and NoSQL databases to support both relational and nonrelational performance and storage requirements.
Write tests.
Document web services for public consumption.
Implement proper instrumentation and logging.
Leverage Kubernetes/Docker to deploy and manage a scalable infrastructure across multiple geographical regions.
Respond to system level issues as necessary to provide the best overall customer experience.
Qualifications:
Minimum 2+ years of professional experience developing REST based web services.
Experience developing in more than one backend language preferrably Go, C/C++, Java, Ruby, Python, Node.js, etc.
Experience with the…
Sorry, I completely disagree. I don't consider mere M:N thread work distribution as anywhere close to what the go scheduler offers.
This article mentions some of the fundamental problems with core.async: http://danboykis.com/posts/things-i-wish-i-knew-about-core-async/
Having to pay ridiculously careful attention to what code blocks across libraries and function boundaries is something that golang completely takes away the need for - because it has a true cooperating scheduler built into the runtime at the boundary of every syscall.
Decision making is in hands of the Go runtime. You can write in standard dumb sync fashion at 3am in the night within a go-routine making all the Go library calls you wish to make without needing to scan code with a microscope to see what blocks and what doesn't.
https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html
core.async is a half-baked error prone solution. People will make mistakes with it. Until the JVM has native support for fibers, continuations and a compile mechanism to classify all legacy blocking calls as unsafe, core.async will continue to be hobbled.
I am aware of epoll_wait and friends (select/poll) accepting timeouts, and how that plugs into a general event loop like in libuv.
However if memory serves, these calls are reasonably expensive (on the order of microseconds, and _worse_ if readiness requires putting the current thread to sleep and then waking it up again). However https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html says goroutines are closer to 200ns.
However the same source above does a decent job of explaining how epoll is being called "out of band". I am guessing when they talk about context switching costs, they are doing some sort of amortization of these system call costs. Since the actual OS threads try to remain CPU-affine (thread-per-core, LMAX disruptor etc. etc.), a lot of the OS scheduling costs can be skipped.
Thank you for the pointer to the source code. It gives me a starting point.
Ardan Labs | Multiple positions | REMOTE | https://www.ardanlabs.com/
Ardan Labs helps teams become effective with Go, Docker & Kubernetes. We work with startups & Fortune 500 companies to help their engineering teams become better developers, code reviewers, designers and architects.
Open Positions:
- Mid-level/Senior Backend Engineers with Go experience
- DevOps Engineer
- Data Engineer
- Infrastructure Engineer
- Blockchain core developer
Benefits:
- Access to our live & online courses in Go, Docker, Kubernetes & more.
- Benefit from the knowledge of your coworkers working across industries on different projects.
- Private talks for the team from popular people & projects in the industry.
- As a W2 employee, we offer family medical coverage, life insurance, paid vacation, and technical training.
Apply here: https://www.ardanlabs.com/my/careers
My guess is you are incorrect and this has more to do with the Ardan Labs partnership[1][2]. This release also came shortly after Bill (founder of Ardan Labs) went to visit Matt and discuss Caddy[3], which helps support that claim.
Prior to the partnership I believe the real issue was that Matt & co didn't have a sustainable way to maintain the project and they were trying to figure that out. I don't know the details of the partnership with Ardan Labs, but my guess is it is structured in a way that allows Caddy to focus solely on building out a great product without worrying about monetizing it so they dropped all the proprietary licensing.
[1] - https://www.ardanlabs.com/news/2019/05/ardan-labs-partners-with-caddy.html
[2] - https://twitter.com/mholt6/status/1179957356005707776
[3] - https://twitter.com/goinggodotnet/status/1178949305421438976
Probably, here is the link to the full bundle https://www.ardanlabs.com/training/ultimate-go/#tabpanel
and this was the course I was talking about https://www.ardanlabs.com/training/ultimate-go/advanced-concepts/
Indeed $700 is a steep price(I live in Eastern Europe so it looks even steeper), but for me it worth it as it helped me a lot in interviews which landed me nice paying jobs(by my standards). I don't know how long it would have taken me to learn all those concepts by myself. The value of a good course is that it condenses the time you need to learn something and this course did the job.
There is also Ultimate Go notebook which is just $10[1], the notes from this course. If the course is too expensive I would go with that.
[1] https://www.ardanlabs.com/ultimate-go-notebook/