GitHub Actions Limitations and Gotchas

Table of Contents Background Gotchas with Actions on GitHub Enterprise Server Caching isn’t available GitHub Enterprise Server is behind GitHub Enterprise Cloud Using Public GitHub.com Actions Dockerhub pull rate limiting General Limitations No dropdowns for manually triggered jobs Self-hosted runner default labels You can’t restart a single job of a workflow Slow log output You can’t have actions that call other actions Metrics and observability Workflow YAML Syntax can confusing Closing Background I’ve been leading a team at my dayjob to migrate every engineering team to GitHub Actions (GHA) Read more...

Setting up pull-request review environments

deploys staging
Say you’re a developer working on a feature, and you want to get early feedback from other teammates. How would you go about it? Most companies don’t have a good process for this, and it ends up crippling their ability to ship features and iterate. The process at companies without review app environments: An engineer works on a UI feature that she wants to get some early feedback on how it looks and feels. Read more...

Node.js and Javascript Vs. Clojure

clojure javascript
UPDATE: 2017-05-12 A few more thoughts have come to mind after writing the original post. I realized that I didn’t talk about the clojurescript side of things. Clojurescript provides a great alternative to plain javascript or ES6. The thing about clojurescript is clojurescript has the clojure standard library, which includes many more functions than javascript. The left-pad incident made me realize how weak a standard library javascript has. People need to write so many tiny libraries in order to get functionality that would exist in other languages. Read more...

How To Organize A Clojure Project And Its Dependencies

People coming from opinionated frameworks like Ruby on Rails often become disoriented in a Clojure project. Rails, being a framework, has the code already organized for you. You just had to learn where to put your models, views, and controllers. Clojure doesn’t have a major opinionated framework like Ruby on Rails that forces you to follow its conventions. A lot of beginners get confused and have questions like the following: Read more...

A Clojure REPL Workflow For Beginners

I’ve been getting questions from beginner Clojure developers on how to effectively use their REPL and interactive development. Quite a few of these people are coming from languages like Java, where they would have to compile their application and wait before running any code. Integrate your REPL with your editor You must have your REPL integrated with your editor. Whether that’s a text editor like emacs with cider, or an IDE like IntelliJ with Cursive, you have to be able to evaluate code in your REPL from the editor. Read more...

How To Rapidly Improve At Any Programming Language

Last year, I submitted a PR to the Clojure web request routing library, Compojure. Even though I was doing Clojure full time at work, there was still a lot for me to learn and always will be. Opening a PR for an open source library I was familiar with and used all the time made me realize a few things: I didn’t know it as intimately as I thought I did. Read more...

Clojure Idioms, Patterns, and Style

Checking For An Empty List Don’t use (not (empty? coll)). Instead prefer (seq coll) instead. Seq returns nil if the collection is empty. If the seq isn’t empty then it returns a seq on that collection. Flattening The Result Of A Map By One Level If the result of a map function ever returns a list of lists, then use mapcat over (apply (concat (map...))): (map list (range 10)) ;; => ((0) (1) (2) (3) (4) (5) (6) (7) (8) (9)) (mapcat list (range 10)) ;; => (0 1 2 3 4 5 6 7 8 9) Maps Are Functions Maps, like keywords, are functions. Read more...

Ruby Vs. Clojure

clojure ruby
Backstory I wrote an article on how I decided to go with Ruby instead of Clojure a while back. I moved my blog from Wordpress to Jekyll yesterday and think it’s time for an honest update. I also have a Node.js and Clojure comparison article if you’re also interested. It tells a different side of a similar story for people looking to pick between Javascript and Clojure. Performance and Speed Clojure and Ruby is often an order of a magnitude faster than Ruby for compute based tasks. Read more...
1 of 1