I’ve spent five years and 100KLoC building https://github.com/kyleu/projectforge which helps generate and update other Golang projects I maintain. I use it daily.
HN user
kyle_u
Location: Denver, CO
Remote: Yes
Willing to Relocate: No
Technologies: Go, TypeScript, Scala, Rust, C#, Java, Python, C/C++, SQL, HTML/CSS, JavaScript
Résumé/CV: https://kyleu.dev/resume
GitHub: https://github.com/kyleu
Email: hn@kyleu.dev
I've been creating software for more than 25 years, and coding is still my true passion. I specialize in software performance, simplicity, developer experience, and solving the difficult problems that arise with complex distributed systems. In my last role, I served as a Principal Engineer for a large engineering team, designing and building a large global web commerce platform where I created architecture, frameworks, and backend services, mostly in Golang and TypeScript.
I've built many open-source projects, with Project Forge (https://github.com/kyleu/projectforge) being the best representation of my work. It’s a solo project with almost 100KLoC, and has delivered significant value to the organizations I collaborate with, despite being currently unannounced and under-documented.
I'm seeking full-time employment as a Principal Software Engineer or similar role. I'm eager to bring my extensive experience to a new team, contribute to exciting projects, and work alongside other passionate developers. Feel free to drop me a line at hn@kyleu.dev if you think we could be a good match.
Confirmed! I've been happily working at Fevo for years, more than a thousand miles from headquarters.
Fevo | New York City or Remote (NA/Europe) | Full time | https://fevo.com
Fevo is an ecommerce platform specializing in social selling. We help people buy things and enjoy them together. Come build things with us!
What we do: We've been changing the ticketing industry since 2016, and now we are expanding into hospitality, travel, insurance and luxury industries.
Things we love about Fevo
- We've been fully remote since before COVID, though we have an office in the meatpacking district.
- Excellent compensation; we work hard and Fevo takes good care of us financially. All employees have stock options.
- We welcome diversity, and are an inclusive workplace. We're excited to work with you.
- We create useful software using exciting technologies, with an established and talented global team.
Stack
- Backend: Golang (we've already upgraded to 1.18), some modern Java (via Quarkus)
- Frontend: Typescript, React, Redux
- DB: Postgres
We are looking for enthusastic engineers with 3+ years of experience. We are open to candidates in North America and Europe, and we require that your workday has some overlap with core-east coast hours (9-5 EST).
Please reach out to hn@fevo.com to apply or discuss. A full list of roles we are hiring for is at https://jobs.lever.co/fevo
No recruiters were involved with putting together this post - it was written solely by engineers at Fevo.
Hey HN, I've been hacking on Database Flow for the past year, it feels great to finally release it. You can find the source at https://github.com/KyleU/databaseflow
Jan has been incredibly helpful, improving my open source Scala solitaire game (https://solitaire.gg) with Github bug reports and feedback, and even suggested using it as a new frontend for PySolFC (which I'd love to do).
I haven't made a single cent off it, but my solitaire game (https://solitaire.gg) uses Phaser, I found it to be a great engine, if a bit heavy for a card game.
I'm the same way with my solitaire game!
We should build a collection of web remakes of the built-in OS games.
There's something very zen about Solitaire games. I've been building them for over a decade, spanning the gamut from http://kylecards.com (no updates in over a decade!) to my latest game, https://solitaire.gg - I really admire this person's dedication, maintaining an app like this is hard work - particularly when it takes place over decades.
I built Boilerplay for that exact purpose - https://github.com/KyleU/boilerplay
It uses the excellent sbt-scalajs to provide code shared between server and client, and a websocket controller that can receive those shared messages. It's tied to Play, sihouette, and postgres-async.
I love it when people put a modern twist on a ubiquitous game like this. I'm reminded of http://bombermine.com (no longer up?), a massively multiplayer Bomberman clone. Personally, I've tried to modernize Solitare with http://solitaire.gg , but haven't figured out a way to make it massively multiplayer yet...
Fixed, thanks for the report!
Heh, I almost never test in IE, so I expect the reverse. Let me know what errors you're seeing via the game's feedback form.
Great feedback, sorry for your laggy connection. I'm working on a fix now, but glad offline mode is working for you!
Having it client/server eliminates the possibility of cheating, lets me get exact timings for analytics and data mining and whatnot, and lets me implement cool things like "Observe Game" (coming soon!).
After the feedback from this thread, I'm going to move to a "hybrid" model where the model logic all happens locally, but still fires websocket events to the server. Best of both worlds.
Yep, this. Went perfectly, and thanks to Akka Persistence, end users (hopefully) just saw a minute of lag before their game resumed.
Linux 32-bit Build: https://s3.amazonaws.com/solitaire.gg/linux/Solitaire.gg.x32...
It looks like I exceeded your texture memory. I use pretty high resolutions (targeting 4K displays), and dynamically build the card textures at runtime based on your screen size. Let me know if the native app improves the situation.
Good idea, and a simple change. Thanks!
I use http://phaser.io for scene management (animated resizing of the game, tweening cards to predefined points on the table, etc) and the particle effects, as well as dynamically building the card images. I've been really impressed with Phaser.
Holy crap, I've been waiting for someone to ask me that (I need more coding friends). The entire game is client/server. The client is pure JavaScript, and communicates with the server using only a few messages (select card, move card, etc). Normally, it connects via WebSocket to my Play Framework/Scala app, and the server processes moves and sends the results and a list of potential moves back to the client.
If you download any of the native apps (iOS, Android, Linux, Win, OS X), you can play offline. This is the magic of Scala.js. The same code that my server uses gets compiled down to JS, and the client calls it directly, forgoing the socket connection. You can also see offline mode in the browser by replacing the word 'play' with 'offline'.
Yeah, I've started work on 600 or so games, but haven't tested them all. Russian Solitaire is a glaring omission, and will be corrected right away.
Thanks! Phaser.io has a great tweening/animation system I use for some things, but the momentum animation was just a few lines of custom code. You basically just set the angle to a smoothed (distance travelled in last 500ms).
Great advice, thanks for the feedback. I'll get on that tonight (right after the right-click bug that everyone hates).
All good now - thanks, AWS! And thanks to everyone for the feedback. Wasn't expecting to launch my game today, but I'm glad I did.
Darn it, you hugged it harder than my tiny Amazon box could handle. Resizing the box now.
In practice, for my game, I use a single positive signed int as the initial seed for the Scala/Scala.js PRNG (Amazingly, they implement the same algorithm), meaning only two billion or so possible games. If I re-seeded the PRNG each time I moved a card ordering, then the full [52!] shuffles could be generated. I only use initial seed, so that a given seed will always generate the same shuffle/deal order.
Acknowledged. I'll fix it up tonight, thanks! Cross-browser mouse events have been the biggest hassle.
I'll probably open source it in the future, there's a lot of code there, and not much money to be made in Solitaire. I did extract some of the best general parts of the app (the admin, authentication, etc) into a project template I call Boilerplay (https://github.com/KyleU/boilerplay). If anyone's interested, I could also publish my pipeline to turn the Scala.js webapp into native apps for OSX, Windows, Linux, iOS, and Android.
I don't know what it is, but I love implementing Solitaire to learn new languages and frameworks. It's always a fun exercise, and the engine gets better with every iteration. My latest attempt is https://solitaire.gg - it's a Scala/Scala.js WebGL/websocket Phaser web/native app with hundreds of games.
Being the author, I'm of course biased, but I made Boilerplay (https://github.com/KyleU/boilerplay) for this very reason. It's a Play/Scala app, uses postgres-async for database access, and provides most of the boilerplate you'd need for non-trivial apps (admin, metrics, reporting, sign-in, etc).