Meta Reduce, Volume 2019.2
About a month has passed since the last “Meta Reduce” update I wrote. I’ve kept pretty busy in the mean time and now I have quite a few things to share with you. Where do I begin…
Clojure
CIDER
I’ve spent a lot of time lately triaging issues and cleaning up the issue tracker a bit. In the course of this process I’ve identified quite a few good first issues and I’ve labeled them accordingly. I hope that some of you would take a stab at fixing some of them. I keep dreaming of a backlog of less than 50 tickets, but CIDER won’t get there without your help.
I’ve addressed a few small tickets and I’ve implemented a prototype of find references based on ideas I published earlier.
The prototype is rough around the edges, but works reasonably well overall. You can try it with M-x cider-xref-fn-refs
.
I’ve also played a bit with the Read the Docs setup for CIDER and it now serves the documentation for the latest stable version by default.1
Hard CIDER
I’ve started a new blog series dedicated to CIDER. Here are the articles in the series so far:
- Hard CIDER: Keeping your REPL Tidy
- Hard CIDER: REPL Shortcuts
- Hard CIDER: Easy Downgrading
- Hard CIDER: Project-specific Configuration
- Hard CIDER: Navigating CIDER Buffers Ninja-style
- Hard CIDER: Understanding the Jack-in Process
- Hard CIDER: Hard Restart
- Hard CIDER: Find Usages
- Hard CIDER: Customizing the Evaluation Results
- Hard CIDER: Dealing with Multiple Project Markers
I plan to write many more, but knowing me - I’ll probably fail miserably. Time will tell.
Alongside it, I’ve created a demo project I’ll be using the blog series. It’s basically empty at this point, but I hope it’s going to become an useful reference for newcomers at some point.
I’ve been experimenting with some gif-recording tools around “Hard CIDER” and I really liked Gifox. I’m thinking I might be able to combine it somehow with keycastr for optimal results. As you can see I’d rather have short animated gifs in the posts instead of real videos, but I might reconsider this down the road.
nREPL
It has been mostly quiet on the nREPL front lately. I might end up cutting nREPL 0.7 soon just to get the EDN transport out there and postpone the other planned features for a later release. There are a few interesting open tickets that are worth taking a look at and could benefit from some help:
I’m especially interested in getting nREPL middleware and client authors involved in those conversations.
Orchard
Work towards the 0.5 release is progressing steadily.
Orchard 0.5.0-beta3
has been out for a while and it seems to be working pretty well.
The planned ClojureScript support might land in 0.5 as well after all. That’s going to be decided soon.
Ruby
Ruby Style Guide
After a long period of stagnation I’ve started to slowly go through the issues in the backlog and tweaked the guide here and there. My ultimate goal is to go over all the issues and all the existing rules. I want to make sure that the wording and examples everywhere are clear and consistent. More importantly - I want to make sure that the guide is very cohesive and all its parts fit together like a glove.
I also plan to convert the guide to use AsciiDoc, so we can get richer formatting options and publish it easily in more formats.
Rails Style Guide
Andy Waite and Phil Pirozhkov joined the editors team and they have been doing some awesome work cleaning up the guide and updating it.
RSpec Style Guide
Phil converted the guide to AsciiDoc recently and the result is really awesome. I’m super excited about converting the Ruby and Rails guides to AsciiDoc as well.
Special thanks to Dan Allen for his work on AsciiDoctor, (kramdown-asciidoc)[https://github.com/asciidoctor/kramdown-asciidoc], and the valuable tips he gave us during the conversion process!
Weird Ruby
I’ve started a new blog series dedicated to some weird and fun aspects of Ruby. Here are the articles in the series so far:
- Weird Ruby: Pure Object-Oriented Negation
- Weird Ruby: Positive and Negative Strings
- Weird Ruby: Double Negation
- Weird Ruby: Single-quoted Heredocs
- Weird Ruby: Block Comments
- Weird Ruby: Zeroing in on a Couple of Numeric Predicates
- Weird Ruby: Invoking Lambdas
- Weird Ruby: For Loops
- Weird Ruby: Array Multiplication
- Weird Ruby: Heredoc Delimiters
- Weird Ruby: Mixing Code and Data
- Weird Ruby: A Weird Way to Filter Out Elements
- Weird Ruby: Nil Conversions
- Weird Ruby: Fun with String#split
- Weird Ruby: Incrementing Strings
- Weird Ruby: The Double Aliased Enumerable Method
I’ll be aiming to write 2-3 each month. Fingers crossed.
RuboCop
RuboCop got two new major releases recently - 0.68 and 0.69.
The first one was notable for the extraction of performance cops to a separate gem (rubocop-performance
) and the second one’s big highlight is dropping support for Ruby 2.2.
I’ve also played a bit with the Read the Docs setup for RuboCop and it now serves the documentation for the latest stable version by default.
In addition I’ve added the documentation for rubocop-rails
and rubocop-performance
under the main project’s documentation:
I think the result is reasonably good.
I hope we’ll soon get some documentation for rubocop-rspec
as well.
Apart from that - we’re steadily moving toward the dream 1.0 release and a new era of stability. I think it might happen before the end of the year. The extraction of the Rails cops into a separate gem is the biggest outstanding task.
Balkan Ruby
Balkan Ruby is right around the corner and I’m excited about it. It’s really awesome to host such a great event in my humble hometown of Sofia. Say “Hi!” if you happen to see me there!
Emacs
I’ve had very little time for Emacs-related work lately (outside the scope of CIDER and friends).
Still, I found a bit of time to go through some Solarized and Zenburn related tickets and cut the first new release of Solarized for Emacs in several years.
In other news I’ve developed a massive time saver when it comes to blogging with Jekyll:
(defun jekyll-insert-post-url ()
(interactive)
(let* ((files (remove "." (mapcar #'file-name-sans-extension (directory-files "."))))
(selected-file (completing-read "Select article: " files nil t)))
(insert (format "{%% post_url %s %%}" selected-file))))
Linking to other articles has never been easier. Got to love Emacs!
Misc
All of my major projects (RuboCop, CIDER, Prelude and Projectile) now use stalebot to auto-manage stale issues and pull requests. The current policy is the following:
- Issues/PRs are marked as stale after 90 days of no activity.
- They are closed after extra 30 days of no activity.
- Issues marked as “High Priority”, “Pinned”, “Good First Issue” are never auto-closed.
- Issues with milestones are never auto-closed.
This setup might not be perfect, but I think it makes sense for open-source projects. We’re using this same bot to great effect on my day job, but there the settings are way more aggressive. I wrote more about the subject here.
In the Real World
I’ve finished reading “Persepolis Rising” and I’d rate it 3/5. “The Expanse” is certainly a bloated soap opera at this point. I’ll need a lot of willpower to convince myself to make it to the next book in the series.
I’ve decided to recover from it with some sci-fi short stories by Philip Dick and William Gibson. Philip Dick was so ahead of his time! I’ve always loved his work!
On the cinema/TV front my life has been dominated by “Game of Thrones”. Like many of you I’ve been outraged by how dark episode #8.3 was (basically you couldn’t see what was happening) and how the story developed throughout the season in general. I’m fairly certain that whatever ending George Martin has in store for us is going to be significantly better. I just hope I’ll live to read it.
And don’t even get me started on “Endgame”. It was OK, but it felt like some final victory lap, not like a real movie. Not to mention it was utterly predictable (unlike GoT). Still, it was an interesting milestone for the Marvel cinematic universe and I’m curious where does it go from here.
On the side I’ve finished watching the second season of “Star Trek: Discovery” and it was total garbage. They really need some better writers there, as the main story was both pretty dumb and pretty boring. As was everything else in this season…
“The Umbrella Academy” was the next show I’ve started. So far I mostly like it, although it’s definitely a bit too slow paced for my taste. I love the characters, though, and the general vibe of the show. Reminds me a bit of classics like “Kick-ass”.
Time to wrap it up! Until next time!
-
It used to point to
master
’s documentation by default. ↩