I recently spent a day trying to get a GH Actions build going but got frustrated and just wrote my own console app to do it. Polling git, tracking a commit hash and running dotnet build is not rocket science. Putting this agent on the actual deployment target skips about 3 boss fights.
As much as I love Kotlin and have a great deal of respect for JetBrains, I’ve always preferred the other Java IDEs over IntelliJ. The fact that choosing Kotlin—which I genuinely do prefer—effectively locks you into IntelliJ for the foreseeable future has been one of the main reasons I’ve hesitated to recommend it unreservedly for every project.
Just to be clear: I think IntelliJ and the rest of JetBrains’ tools are excellent and absolutely worth the price. I simply happen to prefer the alternatives—and they happen to be free. That said, I realise this is very much a personal preference, and one that most others don’t seem to share.
ORMs come in two main types, that I'm aware of: Active Record (named after the original Ruby one, I think) and Data Mapper (think Hibernate; SQLAlchemy).
Active Record ORMs are slightly more ergonomic at the cost of doing loads of work in application memory. Data Mapper looks slightly more like SQL in your code but are much more direct wrappers over things you can do in SQL.
Data Mapper also lets you keep various niceties such as generating migration code, that stem from having your table definition as objects.
Use Data Mapper ORMs if you want to use an ORM.
For me personally I was amazed that one of the lead characters is a vampire. I'm completely burned out on vampire stories yet Watts made one I very much enjoyed. Even if you're also bored with vampires, I recommend you try this book.
But Chess960's castling mechanism is totally unintuitive. So, Chess 744 was born. The exact mechanic (rook moves to king and king swings behind it) from standard chess is used and all of chess 960's setups that had a rook and the king in a corner were removed. This website goes into detail. There is no better method, IMHO, of creating an intuitive chess variation that addresses this issue. It is very hard and unintuitive in Chess 960 to remember where to move your pieces to castle and whether or not it is even legal given the squares the king has to move through.
Argentina has a nearly century-long history of economic volatility alternated with stagnation, massive inflation crises, a spell of military dictatorship (after a flirtation with fascism)…
Wait a second…
(In all seriousness, Argentina is truly unique. As economists say, there are only four kinds of economies in the world: developed, developing, Japan, and Argentina.)
The `[Posn(x, y), ...]` is a pattern that matches a list of positions. The `[Posn(y, x), ...]` is a template that produces a list of positions.