And proof that this setup is both good and bad β CI failed because I forgot to set the publish timestamp in the post YAML on the previous post. But CI ALSO failed because I forgot to run gazelle. #win #fail #bazel #hypstatic
I just removed all pagination from the #hypstatic lifestream section #win this design choice dates all the way back to the first implementation of lifestream in 2010 #history
There is no more #webpack in #artichoke. All web properties have been migrated to esbuild, eta template engine, the Node fs API, and custom build scripts. This is simple, this is good. #hypstatic is next but there is a lot to unwind. #win
with the lopopolo IAM user gone, the only ones left were the IAM users in the #artichoke and #hypstatic GitHub organizations used for terraform CI in the project-infrastructure repos. I used the new GitHub Actions OpenID Connect provider to wire up AWS identity federation following this guide β https://scalesec.com/blog/identity-federation-for-github-actions-on-aws/ #security #github #aws #win
With AWS SSO in place, I started using aws-vault locally for #terraform and AWS CLI. I learned about this tool at work. No IAM access keys with inline IAM policies! SSO + assume role for administrator access! #security #win
I took a hacksaw to my homebrew installation. I'm not sure how this happened but the brewfile I've been carrying around at one point had the entire dependency graph in it rather than the explicitly installed deps ... which made everything on my new Mac an explicitly installed dep. I had hundreds of libs installed for no reason. Burned everything down and started from scratch. #fail #win https://github.com/lopopolo/dotfiles/blob/fb9af6bd19df2149dba5a63a8db161702bcbe5db/homebrew-packages/Brewfile.rooster
macOS things β I tried out alacritty and tmux again but didn't switch away from iTerm2. I tried a bunch of fancy neovim LSP, floating pane, and lua config and then stripped all IDE bits out of vimrc to keep it just an editor. Finally enabled dark mode on my Mac (synced with the sunrise and sunset), switched to dark terminal and neovim color schemes. #win #vim
It's been a while since I've posted about #artichoke, but I recently landed a #rust implementation of #ruby's `String` class. #win https://github.com/artichoke/artichoke/pull/1222
I got a PR in artichoke suggesting to bump down the frequency of dependabot updates to monthly. I applied this change across all artichoke, hyperbola, and lopopolo repositories. It has been a big quality of life improvement and cuts down on a lot of churn in JS dependencies. Applying dep updates once a month is π #win #artichoke
Yay! hyperbo.la is running Bootstrap v5. This upgrade was actually really small! Just some small changes to the Sass for customizing colors and updates to the navbar. #win
More #artichoke updates since March: a marketing site at www.artichokeruby.org, prebuilt containers on Docker Hub https://hub.docker.com/r/artichokeruby/artichoke, and prebuilt nightlies https://github.com/artichoke/nightly/releases/latest #win
#vscode and LLDB in VSCode were SO amazing to use. Within a couple of iterations, I was able to track down the use-after-free: https://github.com/artichoke/artichoke/pull/674 #fail #win #artichoke
After 50 PRs, I was able to put GH-442 to bed and remove the Rc wrapper from the Artichoke state https://github.com/artichoke/artichoke/pull/670 #win This refactor took 4 months #fail #rust #artichoke
Nightly builds of Artichoke are available via ruby-build: rbenv install artichoke-dev #artichoke #win
I contributed a feature to #rust! Added an implementation to allow turning a &mut str into a String using the standard From trait #win #patch https://github.com/rust-lang/rust/pull/69661
Migrated all #artichoke CI to GitHub Actions #github #win Jobs and workflows are so much easier to reason about. And it's free πͺ
Also added many more converter implementations with macros. There are 988 TryConvert implementations. #win #fail #artichoke
This change added new functionality: Converting to and from byte and string slices #win #artichoke
I reported an undocumented panic in #rust that was fixed today #patch #win https://github.com/rust-lang/rust/issues/63456
#artichoke is the top trending repo on all of #github right now #win
I built an #artichoke #Wasm playground in the browser https://artichoke.github.io/artichoke/ #win
That is a lot of code #artichoke #github #patch #win
That is a lot of code #artichoke #github #patch #win
The biggest accomplishment was redoing the #artichoke README https://github.com/artichoke/artichoke#readme Thought about project goals and differentiators from MRI. Added milestones to track progress in achieving goals #win #ruby #artichoke
ferrocarril had different goals than artichoke: it wanted to run Rails. To do that, it had a lot of extra bits in it like gems, a Rack server, and sample apps. Nuked all of it #win #artichoke
I have Regexp#match? https://github.com/artichoke/ferrocarril/pull/93 #win #rust #ruby
I reported a #segfault in mruby and spoke directly with @matz! #win https://github.com/mruby/mruby/issues/4460 #patch
It only took 49 build jobs, but the ferrocarril build is passing on CircleCI https://circleci.com/gh/artichoke/ferrocarril/47 This is the first time I've ever set up #ci for a side project #win
#patch got another PR accepted in the Ansible + ACME + Route53 role I use for the hyperbola dev env load balancer #win https://github.com/mprahl/ansible-role-lets-encrypt-route-53/pull/15
I just used #github to create a reproducer case for a panic in a #rust library #win https://github.com/lopopolo/rust-embed-panic https://github.com/pyros2097/rust-embed/issues/61 #patch
I have eliminated all explicit casts in punchtop #rust #win https://github.com/lopopolo/punchtop/commit/1e41ca3
More #rust safety: removed a cast to usize with the new usize::from_be_bytes converter https://github.com/lopopolo/punchtop/commit/2263c80 #win
The game that I'm working on is punchtop https://github.com/lopopolo/punchtop #win #rust #powerhour
I made a small #rust crate called stream-util for a game I'm working on. https://github.com/lopopolo/punchtop/tree/master/stream-util allows graceful drains of tokio mpsc channels or canceling a futures Stream. Clippy pedantic and fully documented #win
Add in some manual #terraform state edits and deleting things in the #aws console and we're recovered #fail #win
That was a 35-commit weekend. New features and improved code quality. #win https://github.com/hyperbola/hyperbola/compare/918f6d0f..4c331eee
Significantly refactored my #webpack static asset pipeline today. No longer build assets locally and check them in. Build happens as part of #ansible provisioning. #win https://github.com/hyperbola/hyperbola/commit/eaf5b3197
Further #cost optimized my #AWS infra. Saved $3/month by turning off CloudWatch monitoring and making my ASG out of spot instances https://github.com/hyperbola/hyperbola/commit/ffa0e34 #win
That was easy! hyperbola running on t3s now. #aws #terraform #win
hyperbola is ready for #django 2.1. https://github.com/hyperbola/hyperbola/commit/d92a79f. That was easy #win
Switched from community PPA to official nginx-provided binaries. That was ... really easy: https://github.com/hyperbola/hyperbola/commit/5461837 #win #ansible
for www.frklft.tires, I stopped using #terraform for managing the static content of the site. It now lives outside of my terraform code in a public directory, published explicitly with a make target #win
I made a thing! https://www.burnfastburnbright.com/ Bootstrap 4, route53 domains, and terraform made this really easy. went from 0 to 100 in about 1.5 hours. #win
hyperbola: now with multi-homed DNS. AWS Route 53 and CloudFlare, made possible by terraform. (In the process upgraded hyperbo.la mail to a 2048-bit DKIM key) #win #redundancy #devops
4. addendum: I used #LetsEncrypt before migrating to AWS with a combination of cron, systemd timers, and dehydrated. ACM is easier, less error prone, and set-it-and-forget-it #win
my #terraform life became much easier by using name_prefix instead of name. name and name_prefix parameters were never interpolated. Instead, use interpolation in tags. In practice this means config can change without rebuilding the world #win
Converted wiki from ELB to ALB this morning ... took a couple of hours. modified #terraform config and updated #ansible ... also converted from Let's Encrypt to ACM. https://github.com/hyperbola/hyperbola-tools/commit/23fb9a7 #win
OMG just rewrote my #git PS1 which runs as part of my PROMPT_COMMAND. Now 20% faster both inside and outside a repo. terminal feels so much faster now #win #performance https://github.com/lopopolo/dotfiles/commit/2d5054c4ce
Migrated terraform state from a private github repo to a private, encrypted S3 bucket. State infra is bulkheaded from main app and protected with prevent_destroy lifecycle #win #terraform #aws
and the #monitoring even triggered when I took the box down. #win
Added liveness monitoring of healthz endpoints on wiki and hyperbo.la today #monitoring #devops #win healthz goes all the way through to rack/django
bastion is now in an ASG with an automatically bound (with user data) elastic IP. Yay fault-tolerant infra! #win #aws #terraform
just automated a spreadsheet (concatenating several columns) with filter #win filter(L6:L, L6:L<>"") vs manually updating ranges #automation
Enabled cloudflare cdn on www.hyperbolacdn.com today. Took 4 clicks. #win
hyperbo.la staging and production are TLS enabled. Still have to turn on HSTS. #win #letsencrypt
Successfully migrated hyperbo.la and staging.hyperbo.la to a new host, hyperbola3. Ubuntu 16.04 and 8GB of RAM. Just shut down hyperbola1. #win
successfully did an out of band release not of master while in the process of migrating hyperbola to a new host #win #deployment #automation
With this latest release, hyperbola has surpassed 500 commits! #win https://github.com/hyperbola/hyperbola/tree/2015-11-21-lifestream-template-refactor
lifestream template refactor didn't yield any #performance wins, but the code is much cleaner now. #win
Sped up the lifestream page by 30ms by caching the archive sidebar. More template speedups to be had by switching to python3 (str to unicode coercion in python2) #win #performance
I bought IntelliJ Ultimate and it has already been decently valuable: https://github.com/hyperbola/hyperbola/pull/28 ... fixing lots of warnings #win
Finally bootstrap-ified the last bits of #hyperbola: the frontpage and the lifestream entry panel #win
Just added CORS headers for web-fonts on my 2 assets domains through cloudflare ... whoa. This has apparently been broken for a while #fail #win #hyperbola
Just did 2 fully automated deployments to staging! #win #automation
Get optimized, HTML! Just added some middleware that minifies Django template HTML output #performance Google pagespeed really likes my site now (on Desktops) ... 94/100 #win
My wiki is getting filled up with #devops documentation for #hyperbola #win Runbooks are fun!
Won best performance hack at the #Box #Hackathon last night #win
ssh and an html/js terminal that will run anywhere I have chrome because of native client? Yes please #win #awesome https://chrome.google.com/webstore/detail/pnhechapfaindjhompbnflcldabbghjo/details
screen wipes are the best things ever for both laptop screens and glasses #win #thingsineedtobuy
just discovered that once you're in cmd+TAB mode on OS X, cmd+` cycles backward. So much easier than cmd+shift+TAB #learnability? #fail #win