Recently I've been on the "I should write a blog post" to "spend 2 hours updating dependencies across 4 language ecosystems in my blog's Bazel monorepo" pipeline. I should still write that blog post though #hypstatic #bazel
permalinkOn Tuesday, a weekly CI run triggered a Miri failure for a crate I maintain which has some unsafe code. Two days later I had a fix validated, reviewed, and released plus a RustSec advisory published at rustsec.org/advisories/RUSTSEC-2023-0048.html. From advisory being published to the dependabot PR was about 16 hours. #rust #artichoke #security
permalinkAnd 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
permalinkMy artisanally hand-crafted blog generator is an unholy mix of JavaScript, YAML, Markdown, assets distributed by npm package, Golang, Rust, and Python these days, glued together with Starlark in Bazel (deployed to GH Pages) #hypstatic #bazel
permalinkI recently published a demo Bazel workspace that shows off many of the rules and tools I use in the monorepo for this website. #hypstatic #bazel #github github.com/lopopolo/bazel_tools_demo
permalinkI did my first octopus merge today! #git #artichoke github.com/artichoke/project-infrastructure/commit/45b6926ba3…
permalinkMost frequently used commands, redux hyperbo.la/lifestream/560
permalinkJust used exiftool and lots of zsh globbing to strip all metadata from JPEGs and PNGs used to build the static hyperbola site. #hypstatic
permalinkhyperbola/logo repository was merged into the hyperbola-static monorepo! There is only one repo used to build this site now! #hypstatic #bazel #monorepo
permalinkforce a rebuild #hypstatic
permalinkWoo! hyperbola no longer requires webpack to build. Hundreds of dependencies removed! The build uses eslint for bundling. #webpack #hypstatic
permalinkI 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
permalinkI've been toying with the idea of removing all pagination from #hypstatic
permalinkThere 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
permalinkwith 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 – scalesec.com/blog/identity-federation-for-github-actions-on-aws #security #github #aws #win
permalinkWith 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
permalinkI'm not sure how long ago this happened, but I got ownership of the @hyperbola handle on #github to match the npm namespace. Some js libs, old infrastructure for dynamic hyperbola, and #hypstatic live there now. I've added a 'project-infrastructure' repo like in Artichoke which does infra as code for the GitHub organization and #aws setup.
permalinkI 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 github.com/lopopolo/dotfiles/blob/fb9af6bd19df2149dba5a63a8db…
permalinkmacOS 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
permalinkIt's been a while since I've posted about #artichoke, but I recently landed a #rust implementation of #ruby's `String` class. #win github.com/artichoke/artichoke/pull/1222
permalinkyikes and pagintated navigation for archive pages had month and year mixed up in the link. #hypstatic #fail
permalinkooof. While hacking on the lifestream part of the static site generator, uncovered that previous and next buttons for traversing lifestream permalinks had their polarity swapped. That bug has been there for over a year. #hypstatic #fail
permalinkI 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
permalinkYay! 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
permalinkfocaccia and roe are UTF-8 case manipulation crates for implementing parts of `String` and `Symbol` in #artichoke. intaglio is Artichoke's symbol table, boba is an implementation of Bubble Babble Encoding which will be used in the `digest` stdlib package. #rust #patch
permalinkPublished a few more #rust crates since I last checked in: boba, focaccia, intaglio, and roe. crates.io/crates/boba crates.io/crates/focaccia crates.io/crates/intaglio crates.io/crates/roe #patch
permalinkSince cutting hyperbo.la over to GitHub Pages and tearing down most of the AWS infra, monthly AWS costs have been about $1.25. The biggest two items have been ~$0.50 each for S3 and Route53. #aws #cost #hypstatic
permalinkThis PR also took the opportunity to hand-optimize and hand-make retina variants of all images in the blog and lifestream. This eliminated most of the large asset warnings from #webpack #performance #hypstatic
permalinkIn the process nukes 1000s of lines from package-lock.json #hypstatic
permalinkJust upgraded hyperbo.la's build pipeline to #webpack 5 #hypstatic
permalinkCorrectness test that the lifestream handles rendering dates correctly when the week year and year are not the same. twitter.com/fasterthanlime/status/1342967204153876482
permalinkAs of last night, all hyperbo.la AWS infrastructure is torn down. github.com/hyperbola/hyperbola/pull/111 #aws #terraform #devops #hypstatic
permalinkTo make this change on dynamic hyperbola would have meant 5-10 Ansible deploys to a Vagrant VM. Iteration speed would have been terrible. #devops #a11y #lighthouse #hypstatic
permalinkThe static site with local #webpack development environment is already paying off! Google Lighthouse accessibility score for hyperbo.la is now 100 with increased text contrast. #a11y #lighthouse #hypstatic
permalinkhyperbola is deployed to GitHub Pages now! Executed via DNS cutover with terraform. Now to destroy the old infrastructure in AWS. #github #hypstatic #aws #terraform #hypstatic
permalinkAnd just like that, dependabot is enabled for hyperbola-static, the WIP lifeastream branch is merged, and the CI is spruced up #hypstatic
permalinkThere have been over 600 PRs in the last year of Artichoke. hyperbo.la/lifestream/737 github.com/artichoke/artichoke/pull/847 #artichoke #git
permalinkThis is a setup that has worked well for artichokeruby.org. Set dependabot to autoupdate deps and the "maintenance" has been updating content. Deploys are automatic, regression testing of dep upgrades is automatic. #automation #hypstatic
permalinkThere is Ansible, Packer, Terraform, JavaScript, Webpack, Python, Django, Ubuntu, nginx, EC2, Route53, ALB, S3. I think I can simplify this to GitHub Actions, GitHub Pages, Node, Webpack, and statically configured DNS with my registrar. #hypstatic
permalinkLooking at the commit history for Python hyperbola over the last 3 years shows that it hasn't been developed, only maintained. It is done, but the current repo is expensive to maintain. #hypstatic
permalinkSwitching to a static site built with webpack at least affords the opportunity to have an integration test that the site compiles. #automation #hypstatic
permalinkThere is no automated build and no test suite. #automation #hypstatic
permalinkDependency management in Python makes me sad. #fail #python #hypstatic
permalinkI've lost my ability to develop locally since I don't want to install VirtualBox on my new laptop. #fail #hypstatic
permalinkI run an outdated version of Django. #django #fail #hypstatic
permalinkThe terraform config for this project is on 0.12 and I have no desire to update it to 0.13. #fail #terraform #automation #hypstatic
permalinkI will miss the ease of adding lifestream posts via the Django admin UI, but given that I'm posting elsewhere these days, I don't think I'll miss it too much #hypstatic
permalinkRemaining pieces are implementing hashtag browsing pages and the date archive browsing pages #hypstatic
permalinkMost of my updates these days are either in the Artichoke Discord or @artichokeruby Twitter #hypstatic
permalinkThe AWS infra that the current site runs on is $50 a month I do not need to spend. #aws #cost #hypstatic
permalinkI've had a work in progress fork of hyperbola to migrate to a static site hosted on GitHub pages for over 6 months. I can't find the time to finish it. #hypstatic
permalinkMore #artichoke updates since March: a marketing site at artichokeruby.org, prebuilt containers on Docker Hub hub.docker.com/r/artichokeruby/artichoke, and prebuilt nightlies github.com/artichoke/nightly/releases/latest #win
permalink#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: github.com/artichoke/artichoke/pull/674 #fail #win #artichoke
permalinkAfter repeated attempts of replicating my windows CI setup in a developer VM, I sloppily installed software via web installers. With every VS component, rustup, RubyInstaller, LLVM, choco, and winflexbison, I was running with a reproducer #artichoke
permalinkOnce GH-670 was merged, I had a segfault that only (and reliably) reproduced on one test in Windows #artichoke #rust #windows
permalinkAfter 50 PRs, I was able to put GH-442 to bed and remove the Rc wrapper from the Artichoke state github.com/artichoke/artichoke/pull/670 #win This refactor took 4 months #fail #rust #artichoke
permalinkNightly builds of Artichoke are available via ruby-build: rbenv install artichoke-dev #artichoke #win
permalinkI published my first #rust crate (and package of any kind, ever)! rand_mt is a fork of an existing Mersenne Twister crate which adds compatibility with the latest rand_core and makes it no_std crates.io/crates/rand_mt #patch
permalinkI contributed a feature to #rust! Added an implementation to allow turning a &mut str into a String using the standard From trait #win #patch github.com/rust-lang/rust/pull/69661
permalinkMigrated all #artichoke CI to GitHub Actions #github #win Jobs and workflows are so much easier to reason about. And it's free 💪
permalinkI've been absent from the lifestream for a bit. I've been busy implementing!
permalinkPushing errors to the edge and forcing callers to handle them makes for better code #artichoke github.com/artichoke/artichoke/pull/434
permalinkNothing like a little build breakage to start the weekend github.com/artichoke/artichoke/pull/417 #artichoke #fail
permalinkLol following up on hyperbo.la/lifestream/743 ... github.com/artichoke/artichoke/pull/348 disabled most converters to improve compilation times and github.com/artichoke/artichoke/pull/397 added them back behind a feature
permalink#artichoke RubyConf recording here: youtube.com/watch?v=QMni48MBqFw
permalinkI missed a couple of months posting! I was working on my RubyConf talk about #artichoke. slides here: artichoke.github.io/rubyconf/2019
permalinkJust explicitly shut down the frklft.tires site by doing a terraform destroy. Sad, but that code didn't need to live forever.
permalinkI added a feature to rust-bindgen to make a dependency optional to make the build lighter #github #patch github.com/rust-lang/rust-bindgen/pull/1615
permalinkReported a critical bug in rustfmt #fail #github #patch github.com/rust-lang/rustfmt/issues/3770
permalinkAlso added many more converter implementations with macros. There are 988 TryConvert implementations. #win #fail #artichoke
permalinkLed to reporting this #mruby bug: github.com/mruby/mruby/issues/4684 #github #fail although I was able to work around it #artichoke
permalinkThis change added new functionality: Converting to and from byte and string slices #win #artichoke
permalinkThe converters are central to #artichoke. Changing this core abstraction was painful: 84 files changed, 2000 lines added, 2800 lines removed. #fail #git
permalinkThe converters allow the runtime to convert between Rust and Ruby types. They are the glue that the entire Ruby Core and Ruby Standard Library implementation is built upon. #artichoke
permalinkI'm separating the core of #artichoke from the #mruby backend specific glue. This step involved reimplementing the converters with the new traits in core.
permalinkThis was a nasty PR github.com/artichoke/artichoke/pull/242 #artichoke #fail
permalinkI added a macro to oniguruma to enable it to build on clang for #wasm targets #patch #github #artichoke github.com/kkos/oniguruma/pull/150
permalinkI reported an undocumented panic in #rust that was fixed today #patch #win github.com/rust-lang/rust/issues/63456
permalinkReported a build issue on #mruby with gperf 3.1 #ci #build #patch #github #artichoke github.com/mruby/mruby/issues/4628
permalink#artichoke is the top trending repo on all of #github right now #win
permalinkI'm trying to improve Regexp performance in #artichoke by using the regex crate instead of oniguruma in some cases. It turns out not to be faster in all cases #patch #rust #fail github.com/rust-lang/regex/issues/604
permalinkI built an #artichoke #Wasm playground in the browser artichoke.github.io/artichoke #win
permalinkThat is a lot of code #artichoke #github #patch #win
permalinkThat is a lot of code #artichoke #github #patch #win
permalinkNeither mruby-sys nor onig can build with wasm-unknown-unknown or wasm-wasi, so I was stuck with wasm-unknown-emscripten. The linker on mruby-sys would dead code eliminate artichoke_backend::Artichoke #fail #Wasm #artichoke #mruby
permalinkOne of the goals is to have a #Wasm build target. This is what nerdsniped me this weekend. #artichoke
permalinkThe biggest accomplishment was redoing the #artichoke README github.com/artichoke/artichoke#readme Thought about project goals and differentiators from MRI. Added milestones to track progress in achieving goals #win #ruby #artichoke
permalinkWith renewed focus of building my own #Ruby instead of extending #mruby, I put in some effort to make mruby an implementation detail of #artichoke. Lots of refactoring with sed. #fail
permalinkferrocarril 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
permalinkStep 3: create the #artichoke repository where the core #ruby development will take place. #artichoke
permalinkStep 2: transfer ownership of ferrocarril to artichoke organization #artichoke #github. Not much to do here, updated some links, fixed some branding, got CircleCI building again #artichoke
permalinkCactusRef is still an incredibly unsafe crate, but at least it aborts if it detects a use-after-free #fail #artichoke
permalinkExtracting cactusref required completely rewriting #git history, updating docs, adding a build, adding benches, importing my blog post, updating links in the blog post #artichoke
permalinkStep 1: extract CactusRef from ferrocarril into its own repository github.com/artichoke/cactusref #artichoke
permalinkThis weekend I did the migration, which took place in multiple parts #artichoke #github
permalinkferrocarril is all grown up. I've moved development of my #ruby to a dedicated #GitHub organization. The project is called Artichoke github.com/artichoke/artichoke
permalinkI’ve been uncovering a few bugs in mruby trying to get ruby/spec to at least run to completion. This bug report fixed an infinite loop that unblocked that #mruby #patch github.com/mruby/mruby/issues/4555
permalinkReported a bug in layout generation for structure with flexible array members to #rust bindgen that was recently fixed #patch github.com/rust-lang/rust-bindgen/issues/1589
permalinkReported an uninitialized memory access to #mruby upstream that was recently fixed #patch github.com/mruby/mruby/issues/4556
permalinkThat memory leak turned out to be quite the yak shave. setjmp/longjmp from C leaving #rust memory in inconsistent state #fail github.com/artichoke/ferrocarril/pull/168
permalinkOptimized String#scan in ferrocarril to be comparable to CRuby performance #rust #ruby #mruby #performance github.com/artichoke/ferrocarril/pull/138
permalinkAdded a feature (both a new capability and a compile time feature!) to rust-embed to allow it to embed sources relative to crate root which is useful in workspaces #rust #patch github.com/pyros2097/rust-embed/pull/67
permalinkAdding paragraph mode to String#each_line in mruby core #ruby #patch github.com/mruby/mruby/pull/4527
permalinkI've proposed a couple of PRs to speed up UTF-8 String handling in mruby github.com/mruby/mruby/pull/4529 github.com/mruby/mruby/pull/4531 #patch #ruby #github
permalinkruby/spec is a set of specifications for the Ruby language shared across implementations. I had a fix accepted to the StringScanner spec! #patch #ruby github.com/ruby/spec/pull/671
permalinkI reported a compiler improvement for suggestion diagnostics #rust #patch github.com/rust-lang/rust/issues/61555
permalinkI have Regexp#match? github.com/artichoke/ferrocarril/pull/93 #win #rust #ruby
permalinkFiled a couple more issues I ran into while working on ferrocarril: github.com/SergioBenitez/Rocket/issues/1019 github.com/rust-onig/rust-onig/issues/102 #patch
permalinkhere's another Clippy bug #rust #fail github.com/rust-lang/rust-clippy/issues/4143
permalinkI reported a #segfault in mruby and spoke directly with @matz! #win github.com/mruby/mruby/issues/4460 #patch
permalinkIt only took 49 build jobs, but the ferrocarril build is passing on CircleCI circleci.com/gh/artichoke/ferrocarril/47 This is the first time I've ever set up #ci for a side project #win
permalinkferrocarril is a new project I've been working on to embed #ruby on Rails in #rust github.com/artichoke/ferrocarril
permalink#patch got another PR accepted in the Ansible + ACME + Route53 role I use for the hyperbola dev env load balancer #win github.com/mprahl/ansible-role-lets-encrypt-route-53/pull/15
permalinkI just used #github to create a reproducer case for a panic in a #rust library #win github.com/lopopolo/rust-embed-panic github.com/pyros2097/rust-embed/issues/61 #patch
permalinkI found an ICE (internal compiler error) in clippy in #rust nightly #fail github.com/rust-lang/rust/issues/60067
permalinklooks like I didn't finalize the deploy in January so I had a few extra AMIs kicking around that I was needlessly paying for #aws #cost #fail #automation
permalinkWhen asking someone to do something via email, the fact that they’ve even opened it is a big hurdle. Make their life easy: in-line as much as you can, minimize clicks, make links easy to scan, be direct, have a tl;dr #communication #email
permalinkI'm speaking at Monitorama on June 4-6. My talk is titled The AWS Billing Machine and Optimizing Cloud Costs. #conference #aws #cost
permalinkI'm speaking at DevOpsDays Seattle on April 23. My talk is titled The AWS Billing Machine and Optimizing Cloud Costs. #conference #aws #cost
permalinkLarson Media Training 101: Answer the question you wish you were asked. #communication
permalinkI live in Seattle now. First week at the Stripe office was quiet due to the snow. Working on expanding Stripe into Latin America.
permalinkI have eliminated all explicit casts in punchtop #rust #win github.com/lopopolo/punchtop/commit/1e41ca3
permalinkMore #rust safety: removed a cast to usize with the new usize::from_be_bytes converter github.com/lopopolo/punchtop/commit/2263c80 #win
permalink#marketing is easier if you have metrics to support your impact. I like to always tie my metrics back to dollars.
permalinkOne common hangup I've encountered when discussing #marketing my work with other engineers is the notion that the work was easy or trivial to implement. That's not the important part! What the org cares about is impact. Tell a good story!
permalinkTo be good at #marketing yourself, you need to be good at communication, both written and verbal. Don't be afraid to talk about your work, either to your manager, your skip level, your users, an email list, or the company all hands meeting.
permalinkAs an engineer, I care very much about #marketing myself, my team, and my work. I am of the impression that my work does not speak for itself, I have to speak for my work. Being high impact means making sure the org knows it, too.
permalinkThe game that I'm working on is punchtop github.com/lopopolo/punchtop #win #rust #powerhour
permalinkI made a small #rust crate called stream-util for a game I'm working on. 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
permalinkI implemented a #rust client for the #chromecast protocol for a game I'm working on. I collected a fairly exhaustive set of protocol documentation: github.com/lopopolo/punchtop/tree/master/cast-client
permalinkFirst #rust #patch accepted github.com/asomers/futures-locks/pull/10 closing out 2018 with a bang
permalinkTook 4.5 years but I've finally started to learn #rust: hyperbo.la/lifestream/298. I'm implementing a power hour game that plays to a #chromecast with a #react webview UI.
permalinkI had a #patch accepted to an Ansible role I use in my Vagrant environment github.com/mprahl/ansible-role-lets-encrypt-route-53/pull/14
permalinkI promised a postmortem: hyperbo.la/w/secrets-in-parameter-store-postmortem
permalinkI was hard down for ~5min last night while rolling out secrets in parameter store. 0.149.0, 0.149.1, 0.149.2, and 0.149.3 were bad releases #fail. 0.149.4 is stable: github.com/hyperbola/hyperbola/compare/v0.148.0...v0.149.4. Postmortem pending.
permalinkAdd in some manual #terraform state edits and deleting things in the #aws console and we're recovered #fail #win
permalinkA red herring was adding a call to dd in the cleanup script to zero the free space on the disk. I thought I was somehow filling the disk and not reclaiming space.
permalinkRemoving just the dev package with #ansible #provisioning had no effect in local env, but combined with the apt purge in the #packer script, uninstalled mysqlclient
permalinkRoot cause: My app depends on the python package mysqlclient, which in turn depends on the libmysqlclient system package. I was pulling this in transitively via the dev package required for building.
permalinkUndeployable manifested as healthz returning 502 when adding a new instance to the ALB, marking it as unhealthy and timing out #terraform
permalinkI recently started cleaning up after myself during #provisioning. There are two steps to this: #ansible uninstalls build deps and #packer executes a cleanup script that does an apt purge and autoremove
permalinkGot into an undeployable state due to differences in #provisioning between local and prod environments #fail github.com/hyperbola/hyperbola/commit/a914992
permalinkcode yellow 😕
permalinkThat was a 35-commit weekend. New features and improved code quality. #win github.com/hyperbola/hyperbola/compare/918f6d0f..4c331eee
permalinkSignificantly refactored my #webpack static asset pipeline today. No longer build assets locally and check them in. Build happens as part of #ansible provisioning. #win github.com/hyperbola/hyperbola/commit/eaf5b3197
permalinkI added code block and syntax highlighting to my new #blog. Planning on using it for an upcoming post about #terraform.
permalinkI made a post on how your org chart shows up in your infrastructure: hyperbo.la/w/aws-org-chart #blog
permalinkI made a post on Prosperity's partnership with Finance: hyperbo.la/w/engineering-finance-partnership #blog
permalinkFurther #cost optimized my #AWS infra. Saved $3/month by turning off CloudWatch monitoring and making my ASG out of spot instances github.com/hyperbola/hyperbola/commit/ffa0e34 #win
permalinkI had a #patch accepted to gunicorn github.com/benoitc/gunicorn/pull/1889
permalinkThat was easy! hyperbola running on t3s now. #aws #terraform #win
permalinkdocker lessons: github.com/hyperbola/hyperbola/pull/94
permalinkI also pruned a lot of config from my 12factor env, favoring convention for things like DB connection strings. In doing so, migrated to one hostname for DB across all environments. /etc/hosts alias in Vagrant, network in Docker, private hosted zone in AWS
permalinkOne hack I've been using to enhance my productivity in the face of KTLO work is to write lots of things down. Project plans, system diagrams, user interviews. It helps organize the work that I have done and keeps me motivated.
permalinkThe past 4ish months I've been a team of one. Been a decent slog. It's been hard to be productive when all of the KTLO work falls on me. Getting a new teammate in a couple weeks. Excited. 🤩
permalinkI've been retraining myself to say "Hey Google" instead of "OK Google"
permalinkI published a post about AWS Reserved Instances today stripe.com/blog/aws-reserved-instances
permalinkLast week I tried to build hyperbola with #docker. I ended up with 5 containers to deploy a stage environment. github.com/hyperbola/hyperbola/pull/92
permalinkhyperbola is ready for #django 2.1. github.com/hyperbola/hyperbola/commit/d92a79f. That was easy #win
permalinkSwitched from community PPA to official nginx-provided binaries. That was ... really easy: github.com/hyperbola/hyperbola/commit/5461837 #win #ansible
permalinkfor 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
permalinkI launched frklft.tires last week. Built with S3, CloudFront, and Lambda.
permalinkMy current understanding of this column is that it is the instance family if the usage type is eligible for RI instance size flexibility
permalinkWhat they neglect to mention is that DedicatedUsage types do not have an instance family associated with them
permalinkAWS says that product/instanceTypeFamily is "The instance family that is associated with the given usage. For example, t2 or m4."
permalinkhyperbo.la/lifestream/347 was an anti-pattern which got fixed when I moved to pipenv
permalinkWhen all you have is a rock, everything looks like a hammer
permalinkThis is a great article: rachelbythebay.com/w/2018/02/26/frame
permalinkpandas and jupyter notebooks are my new favorite hammers
permalinkSo it turns out I shouldn't have ignored that MySQL backtrace when printing the help text of my new django management command in dev. That's why it hung when building the AMI. #fail One line fix: github.com/hyperbola/hyperbola/commit/728f1d68
permalinkit looks like prod peaks at 75 req/s #performance
permalinkNot to mention Let's Encrypt to Amazon back to Let's Encrypt again (for vagrant) for certs
permalinkI've had significant churn on tools in the past year for building hyperbola: pip to pip-tools to pipenv. gulp to webpack. linode to AWS. bespoke deployment and scripts to ansible. All good, just exhasuting.
permalinkvagrant-lb PR: github.com/hyperbola/hyperbola/pull/86
permalinkI suspect that NTP traffic was the trickle of traffic that traversed my recently decomissioned NAT
permalinkI made a thing! burnfastburnbright.com Bootstrap 4, route53 domains, and terraform made this really easy. went from 0 to 100 in about 1.5 hours. #win
permalinkNew features in v0.116.0: bootstrap4, removed RSS and Atom feeds, 100% webpack frontend build, css purification improvements, and healthz middleware
permalinkMost frequently used commands, redux hyperbo.la/lifestream/146
permalinkLOL that was only six years ago ... don't let your dreams stay dreams: hyperbo.la/lifestream/51 #aws
permalinkwelp that didn't last long. CloudFlare only queries a subset of NS records to check for liveness and has determined that I no longer use CloudFlare. Working on purging them from #terraform and registrar now #fail
permalinkEven more cost savings: dynamically provisioned bastion cloudformation stack #terraform #aws
permalinkhyperbola: 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
permalinkmysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql was the magic incantation required to get lifestream archive views working locally
permalinkToday's shipped email featuring subtly modified lyrics from Kanye's Flashing Lights
permalink#history throwback to the time that my wiki was spammed by a bot that turned all the pages into link spam for discount pharmaceuticals github.com/hyperbola/hyperbola/commit/1a3725b84bf82982945f68d… #fail
permalinkand no more chrome on iOS. Using safari there. The only value chrome brings is unified history and being logged in to my google account. I use neither of these features
permalinkI switched to Firefox Developer Edition today on my mac. It is pretty blazing fast. Looking forward to 58 making it to the dev channel in November
permalinkWith @huff's help, I have discovered ETL's True Name. ETL is just indexes. Indexes are just caching. Caching is just named replication. Names are the only problem in computer science.
permalink#terraform is now a package manager. Great. #fail. For some reason plugin downloads hang if the download gets an IPV6 edge node in their CDN.
permalinkthinking of removing dependency on #cloudflare. currently only used for hyperbo.la DNS. Email records are the scary part. #terraform makes this mostly easy
permalinkI just realized that by merging hyperbola-tools into hyperbola and converting my ad hoc ruby scripts to python, I moved to a monorepo and standardized on a language
permalink4. 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
permalink4. problem: https is hard. solution: ACM + #terraform + ALB + CloudFront
permalink2. django-backup.py sucks. problems: email based, backup size is limited, unconfirmed delivery, plaintext transmission. solution: move media to versioned S3 bucket, daily RDS snapshots, logical backup json to S3
permalink1. problem: python not running the latest 2.7.x release. solution: pyenv for local development and xenial (python3.5) + ansible + (future) deadsnakes ppa
permalinkmy #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
permalinkI initially went with the unclustered variants of elasticache and rds. Once I wrapped my head around the topology, #redis cluster mode and #aurora were much easier to work with in #terraform
permalinkbuliding the #aws infra took about 30 commits, two #terraform destroys, and two terraform code rewrites. some fun bits in the following posts
permalink2am hot take: all systems problems are best solved with pointers and routing. aka dependency and service injection
permalinkRebuilt everything and modulo some zombie deposed resources, everything is good again
permalinkDiscovered I had duplicate stanzas in my tfvars file. Removed the extraneous one. Broke EVERYTHING. #fail The worst was my admin IAM account losing access in the midst of a terraform apply. destroyed module.network, module.iam, and module.hyperbola-wiki
permalinkConverted 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. github.com/hyperbola/hyperbola-tools/commit/23fb9a7 #win
permalink2 minutes of #downtime for libc security upgrade ubuntu.com/usn/usn-3323-1
permalinkOMG 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 github.com/lopopolo/dotfiles/commit/2d5054c4ce
permalinkI am living the dream with an n/ac-only network
permalinkI hope my next laptop has 32GB of RAM
permalinkMigrated 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
permalinkand the #monitoring even triggered when I took the box down. #win
permalinkAll done. Downgraded from 8GB of RAM to a more reasonable 2GB of RAM. Went from 4 cores down to one though 😱 #devops #maintenance
permalinkAlso, I have a google analytics snippet on the site. I have never once checked the analytics.
permalinksure an ELB + managed MySQL & redis + redundant frontends are "better" but I'm not sure I need the complexity
permalinkNot sure if it is worth the effort to migrate hyperbola to #AWS. Maintenance burden is pretty low. Log in maybe once a month, run an apt upgrade, and do a fresh deploy. Takes less time than a packer/terraform cycle would. #maintenance
permalinkCode that is organized in pipelines is easier to grok than code that is organized in trees #functionalprogramming
permalinkSoftware shouldn't be "delightful." It should be invisible.
permalinkToday I learned about octopus merges #git marc.info/?l=linux-kernel&m=139033182525831
permalinkELB for wiki does a basic healthcheck of nginx, but a backend can be down while the ELB thinks the node is healthy #monitoring
permalinkAdded liveness monitoring of healthz endpoints on wiki and hyperbo.la today #monitoring #devops #win healthz goes all the way through to rack/django
permalinkMedia backups have been failing since I moved the site to the new server. I've been uploading empty, corrupted tarballs. #fail fix here: github.com/hyperbola/hyperbola/commit/859128 Thank you gitlab & national check your backups day
permalink#django feature request and #patch accepted code.djangoproject.com/ticket/27541
permalinkbastion is now in an ASG with an automatically bound (with user data) elastic IP. Yay fault-tolerant infra! #win #aws #terraform
permalinkmucking around in settings.py I ended up doing a top-level import from debug_toolbar. Yay for staging. #fail github.com/hyperbola/hyperbola/commit/26c4e1d
permalinkdiff of yesterday's backups and current backup confirm all that has been altered are filenames
permalinkFixing this required parsing a db dump (django fixtures much easier to read than mysqldump output) and manually running UPDATE queries in MySQL
permalinkjust automated a spreadsheet (concatenating several columns) with filter #win filter(L6:L, L6:L<>"") vs manually updating ranges #automation
permalinkDOMContentLoaded in less than 200ms on lifestream index #performance #cdn
permalinkEnabled cloudflare cdn on hyperbolacdn.com today. Took 4 clicks. #win
permalinkSome changes since moving to the new host: assets and user uploads served off of hyperbolacdn.com; TLS; frontend deps managed with bower
permalinkhyperbo.la staging and production are TLS enabled. Still have to turn on HSTS. #win #letsencrypt
permalink❤️ Emoji: 🔥🔥🔥
permalinkSuccessfully migrated hyperbo.la and staging.hyperbo.la to a new host, hyperbola3. Ubuntu 16.04 and 8GB of RAM. Just shut down hyperbola1. #win
permalink#throwback #cruft just cleared out MIT client certs from 4 years ago that were hanging around in my keychain
permalinkAlso found the samba password to the file server named supersecret that I built
permalinkAll this discovered while clearing out my OS X Keychain
permalinkThat was when hyperbo.la ran on a reclaimed Dell workstation in a network closet at MIT
permalinkI think I also used to host a redmine instance on dev.hyperbo.la back in the day ~2010
permalink#throwback dev.hyperbo.la:80 hyperbo.la subversion repositories
permalinksuccessfully did an out of band release not of master while in the process of migrating hyperbola to a new host #win #deployment #automation
permalinkForgot to blog about this: My printer ran out of toner a week before my move. Had the printer since 2010. RIP printer
permalinkThe only times I have ever run ant as a build tool were a couple of CS classes back at MIT—4 years ago. Even today, it remains my 8th most frequently used command on my mac
permalinkFiled a site issue JIRA on my last day. It was eventually closed as invalid. By the time this happened, though, I had lost systems access and couldn't discuss it further
permalinkToday was the day of linters. Added eslint, flake8 config, and isort to hyperbola
permalinkSomeone forked my senior thesis ... what? github.com/nmoutana/sr
permalinkReading about the LMAX Disruptor martinfowler.com/articles/lmax.html ... pretty cool. I've seen similar patterns (at lower optimization levels) at Box.
permalinkSwitching from yui-compressor to yuglify saved me 1KB on bootstrap.js and 30 bytes on bootstrap+hyperbola css #performance
permalinkWith this latest release, hyperbola has surpassed 500 commits! #win github.com/hyperbola/hyperbola/tree/2015-11-21-lifestream-tem…
permalinklifestream template refactor didn't yield any #performance wins, but the code is much cleaner now. #win
permalinkFront page warm nginx latency is 12ms; contact page is 20ms #performance
permalinkCurrent prod gunicorn time (measured at nginx) for the lifestream index page is 70ms with no partial caching and 40ms with the sidebar cached #performance
permalinkTested rendering the lifestream index with all 3 interpreters. pypy is slower than python2.7 by 2x. python3.5 is faster than python2.7 by 2x. #performance
permalinkLocal development lets me run cool experiments. I have python2.7, python3.5, and pypy virtualenvs.
permalinkSped 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
permalinkRoot fs usage is down to 3.5G.
permalinkFinally started cleaning old deployments. After each deploy, my deploy script removes all but the latest 5 deployments for a given env. hyperbo.la/lifestream/352 can rest peacefully.
permalink90mbps upload to Box from the corporate network is pretty nice when backing up my photos (all 25GB of them).
permalinkDid some archeology today to unearth an ancient version of hyperbo.la. Same color scheme as today. Yes, there was an assets domain. Had to do forensic analysis to reconstruct the index.html.
permalinkIt continually amazes me at how much conflict is solved with "assume good intent."
permalink15 commit night on hyperbola, 5 on hyperbola-tools, and 12 on my dotfiles. Mostly code and style cleanups, some correctness fixes.
permalinkLast bits of major feature work were bootstrapifying several pages and adding automatic deployment (June 2014)
permalinkJust realized that hyperbo.la has been in maintenance mode for a while. Last few projects: upgrade to django 1.8, upgrade to django 1.7, upgrade vendored dependencies (bootstrap, retinajs).
permalinkI bought IntelliJ Ultimate and it has already been decently valuable: github.com/hyperbola/hyperbola/pull/28 ... fixing lots of warnings #win
permalinkWondering why the response to some external asks isn't, "No, we're not ready yet."
permalinkWe are loading the racks onto trucks and moving them to a real datacenter. Bye bye servers.
permalinkResponding "maybe" to a calendar invite is the equivalent of the SF "we should do lunch"
permalinkThe only things that are truly unique in a relational DB are auto inc pks. Even uniques such as username may be duplicated across time.
permalinkSo this is what a real oncall rotation feels like. So many things.
permalinkThis week at work I settled on a secret delivery mechanism that bootstraps with #kubernetes (or puppet if a service isn't containerized)
permalinkstill hanging around: 4GB of old staging installs and 2GB of old prod installs
permalinkJust did some disk usage cleanup on hyperbola. Had 4 old ruby installs hanging out (2GB), a 700MB gunicorn logfile that was being written to every second, and a very full apt cache (1GB)
permalinkeven with a staging env, deploys still require a site check
permalinkI love Apple's "quit unexpectedly" euphemism for crash
permalinkOn the plus side my build script now dumps metadata about installed python packages to disk so I have one place to look instead of wondering
permalinkPlaying with some JSON data and jQuery ... created a rudimentary VX points trip planner #javascript
permalinkI don't like structured identifiers because they presume data fits into a hierarchy
permalinkBorg paper was a fun read. Kubernetes is really exciting.
permalinkfeast or famine on the hyperbola microblog
permalinksudo lsof | grep libssl | cut -d" " -f1 | sort | uniq -c | sort -rn #fail mta.openssl.org/pipermail/openssl-announce/2015-March/000020.…
permalink#bug fixed github.com/hyperbola/hyperbola/commit/01b34d with minor staging break caused by django-pipeline renaming their templatetags #django
permalinkUpcoming Xen vuln was the forcing function to get my gunicorn upstart scripts able to work after a reboot. There is some nasty in them github.com/hyperbola/hyperbola-tools/commit/8e5c4 #bash
permalinkJust spent the last 25 minutes installing homebrew packages on my work machine. My code is literally compiling. Took the time to do some scooter laps.
permalink(function _() {console.log('('+_+')()')})()
permalink#hyperbola is down to 200 lines of #CSS, half of which is used to render the logo and navbar
permalinkFinally bootstrap-ified the last bits of #hyperbola: the frontpage and the lifestream entry panel #win
permalinkJust 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
permalinkwhy does any C program of sufficient complexity have its own allocator? Just use jemalloc?
permalinkI now understand the difference between teasing apart complexity versus simply moving it around
permalinkJust did 2 fully automated deployments to staging! #win #automation
permalinkListened to a pretty intense #scala rant today: youtube.com/watch?v=uiJycy6dFSQ ... Highlights some of my gripes about the language, most notable implementation details leaking everywhere
permalink60ms server-side latency on the lifestream page now #performance
permalink"It's Not Right but It's Okay" -- A poem by Whitney Houston about continually evolving software projects.
permalink#ruby has object tainting and security levels. So cool! ruby-doc.org/core-2.1.1/Object.html#method-i-taint
permalinkHyperbola, now with retina graphics! The logo and feed icons will come through as retina.
permalinkLack of agency is the thing I fear most as an engineer. It's something I need to get better at dealing with.
permalinkWays you can tell we have a major release coming up: Being in the office until 10:30 and 9:30 on consecutive nights.
permalinkUpgraded to Mavericks ... relinked all homebrew formulae like this: gist.github.com/lopopolo/9427762
permalinkOpen-source #patch: github.com/fge/json-patch/pull/7
permalinknext project: convert #hyperbola to UTC, server, #django, and #mysql
permalinkgot another big #performance win by not minifying HTML in python not doing so shaved ~100ms off response time which means my server was spending more than 100ms of CPU time for the pleasure #fail
permalinkabout ~20% of server time for lifestream is spent reversing URLs for hashtags :/ #performance #fail
permalinkLatency at nginx for hyperbola: frontpage: 25ms, contact: 40ms, lifestream: 200ms #performance
permalinkSwitching gunicorn to a domain socket instead of a TCP port sped up the site by 2x #performance
permalinkHyperbola, now with more html5-boilerplate and bootstrap ... it made CSS so much easier than I normally find it to be ... and the site is now mostly responsive and looks good on mobile
permalinkSpent the last week optimizing, re-styling, and significantly refactoring hyperbola. The lifestream page loads ~300ms faster and DOMReady is ~600ms faster #performance
permalinkGet 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
permalinkMy wiki is getting filled up with #devops documentation for #hyperbola #win Runbooks are fun!
permalinkThe last bits of the #hyperbola deployment are gone from my home directory ... finally productionized a cron to do a #database and media backup #devops
permalinkhowfuckedismydatabase.com hehe database problems. #fail #scale
permalinkwoo! #hyperbola is now #pep8 and #flake8 compliant! Woooo linting! #python
permalinkNow it's time to figure out what part of the stack is preventing #concurrency from exceeding 100 connections #jetty #linux
permalinkThroughput on the #box #metadata backend is limited by the rate at which our load driver can make requests. 2ms latency at the client. This thing is #fast #performance
permalinkWon best performance hack at the #Box #Hackathon last night #win
permalinkWoo: hyperbola, now with thumbnailing #performance
permalinkmac #safari can attach to webviews running in the iOS simulator and open a web inspector. This is cool but ... what? #debugging
permalink#databases Two things that amaze me: (1) idempotent writes, (2) idempotent and reorderable writes
permalinkI am super excited to see the results of the move to the T3 #javascript architecture at #box
permalinkThe Fundamental Theorem of Software Engineering: "We can solve any problem by introducing an extra level of indirection."
permalinkRunning unit tests is the equivalent of waiting for code to compile.
permalinkJust updated the firmware on my Air. First two reboots = #kernelpanic. 3rd reboot = no mouse or keyboard. 4th reboot, everything works? #fail
permalink9 months since the last reboot isn't too shabby. And now I have a 3.5 kernel!
permalink#metaprogramming is awesome. In a new project, adding an API endpoint is as simple as defining a single constant
permalinkChanged my terminal and vim fontsize from 14pt to 24pt at work. zOMG so much better
permalinkJust added #solarized and a #vim plugin (vrapper) to #eclipse. zOMG this is so awesome
permalink#java gets #functional. Hooray chainable methods! datumedge.blogspot.com/2012/06/java-8-lambdas.html
permalink#versioncontrol, or the lack thereof. This was my first major software project. I was a junior in high school. I was making a symbolic math thing. #fail or the reasons any CS class should teach #git
permalinksongza.com Not only is it awesome, but logging in doesn't stop my music from playing. sweet #ux
permalinkgoogle docs for #LaTeX sharelatex.com
permalink#notetoself: Next time you need to run more than 3 tasks that take 10 minutes or more to run, invest in figuring out how to script it #fail #thesis2012
permalinkA watched pot never boils. Neither does a long running task when you're not tailing the log file. #thesis2012
permalinkRunning experiments. It's been 9 hours now. #thesis2012
permalinkssh and an html/js terminal that will run anywhere I have chrome because of native client? Yes please #win #awesome chrome.google.com/webstore/detail/pnhechapfaindjhompbnflcldab…
permalinkT-minus 2.5 weeks #thesis2012 OMG I HAVE 70 EXPERIMENTS TO RUN,
permalinkscreen wipes are the best things ever for both laptop screens and glasses #win #thingsineedtobuy
permalink#lessonlearned: Don't create a billion Timer objects. One is probably enough. Managed to get #eclipse to fail at repainting itself because it was running about 700 threads #java #fail
permalinkI do not care whether your API is RESTful. Does it work and will it do what I want? #marketing #fail
permalinkI remember when I first upgraded from notepad to scite when I first installed #ruby. You had to modify this conf file to get monospace all the time ... #vim is so much better #nostalgia
permalinkall your heapspace are belong to me! #java #outofmemory #fail
permalinkThe number of posts on #hackernews about people reinventing/whining about #git never ceases to amaze me #fanboy
permalinkgithub.com/lopopolo/dotfiles/blob/master/scripts/cron-update-… All of my problems with this script had to do with adding passphrases to my #ssh keys #fail
permalinkjust 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
permalink#ssh public key auth setup on hyperbola #womp #programmerresolutions
permalinkI just saw a commercial for #IE9 with a dubstep music track. Um ... #browserwars?
permalinkCute ad on stackoverflow. It reads "
Today I learned that #vim and #emacs treat newlines as line terminators. This means files written by them always end in a newline. #learnsomethingnew
permalinkLinus Torvalds is a boss harmful.cat-v.org/software/c++/linus #c
permalinkI'd post about how #adtargeted I feel every time I see a New Relic ad, but it'd only make it worse
permalinkMath m = null; m.sin(0.5); is valid #java and computes the sin of 0.5. #learnsomethingnew Type resolution is cool.
permalinkthe newest xcode download slimmed down a lot. less than 1.5 gigs #thingsthataregood
permalinkLaptop is using full disk encryption and #hyperbola now backs up the db and all of its media to dropbox #swag #programmerresolutions
permalinkProcess for rendering pset: Type in vim using markdown > render to html and open in chrome > print to pdf #doingitthehardway
permalinkAfter a struggle to import data from Firefox, I've switched to Chrome #thingsthatarenew The only extensions I'm running are 3 greasemonkey scripts I can't live w/o
permalinkA productive day: made my PS1 better and fixed a bug in the hashtag regex on hyperbola (again)
permalinkok so setting up 4 VMs all at once was a pain in the ass sr-master.xvm.mit.edu sr-worker-1.xvm.mit.edu sr-worker-2.xvm.mit.edu sr-worker-3.xvm.mit.edu #thesis2012
permalinkThank goodness xml compresses so well
permalinkThis is the longest-lived and most consistently updated #blog I've ever had. Averaged a post every 2.5 days. I still post to #twitter more often. #socialmedia
permalinkMy most frequently used commands on my laptop
permalinklearn sometihng new about #ruby everyday patshaughnessy.net/2012/1/4/never-create-ruby-strings-longer-… #interpreter
permalinkJust exported 1GB of article dumps from #wikipedia #thesis2012 is on
permalinkyou can see the xcode in my eyes ... #allidoiscode
permalinklol my site looks like this twitter.github.com/bootstrap/examples/container-app.html #bootstrap
permalink^(void) { NSLog(@"Closures are cool"); } spicedcocoa.wordpress.com/2010/06/16/working-with-blocks-in-o…
permalinkhistory of version control. An entertaining read flourish.org/2011/12/astonishments-ten-in-the-history-of-vers… woo #git
permalinkjohnkary.net/git-1-7-8-changes-for-the-everyday-developer #git grep is pretty cool, but I think i'll stick to #ack
permalinksweet, there's been a patch since may, but no need to put out a bugfix release or anything github.com/github/gollum/issues/147 #fail #git
permalinka CSS rule to make images sane in fluid gmail: html > body > img { max-width: 100%; max-height: 100%; }
permalinkspeaking of proxies ... hyperbo.la, now with 100% more reverse proxying (apache to gollum) #gemsanity
permalinkI first used Charles this past summer. A very valuable tool for network observation and debugging charlesproxy.com
permalinkI don't know why, but I am excited about home automation today. Z-Wave looks really cool
permalinkA libc-free world, eh? blogs.oracle.com/linux/post/hello-from-a-libc-free-world-part-1 #overkill
permalink6 doesn't byte 00110110 00100001 00111101 01100010 01111001 01110100
permalink#backintheday, before I understood how the relational part of MySQL worked, I made 20 columns to hold metadata about a record. 20 columns wasn't enough. Foreign keys #ftw. learning #fail
permalinkThis article is so cool en.wikipedia.org/wiki/List_of_company_name_etymologies #wikipedia
permalinkWay to steal my MEng thesis idea Twitter github.com/nathanmarz/storm/wiki/Rationale
permalink#timeboxed this gcc cross compiler nonsense. Using debathena in a VM is easier. #hammer
permalink#compiling #gcc from source to get an ELF cross-compiler on OSX. This is so #fail
permalinkBecause kernel.org is down, I used airdrop to copy over a cached version of the git source and formula from another computer so I could install it with homebrew #fail
permalinkbookmarking for later: useful defaults for OS X apps. github.com/mathiasbynens/dotfiles/blob/master/.osx
permalinkAbiding by the principle of least surprise is, to me at least, least surprising.
permalinkstabyourself.net/mari0 #mario + #portal = awesome
permalinkI'm going to miss #ruby's hash rocket blog.peepcode.com/tutorials/2011/rip-ruby-hash-rocket-syntax
permalinkfor the number of times i ssh'd into my iMac this sumer, you would think that I'd have just put my ssh key on it #fail #doingitthehardway
permalinkdeveloper.ibm.com/articles/wa-ruby #ruby on #android. This is pretty awesome, as is the name.
permalinkIt's been real California; can't wait to come back
permalinkRSS and Atom feeds now render posts the same way I render them on the lifestream page. Thanks to my one reader derenrich for the feature request.
permalinkWoo! my #django #patch got accepted. code.djangoproject.com/changeset/16609
permalinkthis is way cooler than rvm: github.com/sstephenson/rbenv #ruby
permalinknext project: install rvm and homebrew
permalinkGot a #django bug accepted: code.djangoproject.com/ticket/16573
permalinkyet again, #vim is awesome: danielchoi.com/software/vitunes.html
permalinkAnd so I wait for the dns change to propagate ... soon, we'll be live here from NJ
permalinkI haven't posted about #music in a while: #songkick is the best. I'm going to so many more concerts now. I get too immersed in #turntable for it to be a regular thing.
permalinkduplicity: duplicity.gitlab.io #backups
permalinkthe hyperbola repos have been migrated to github. and so begins the death of dev.hyperbo.la
permalinkI avoid adding punctuation after my #hashtags because there's a #bug in my regex that parses them. #thingsishouldfix #django
permalinkMy new favicon welcomes my site to 1996 #itsgreattobehere #fail
permalinkThinking about migrating this site to EC2. Probably gonna stick with #django. dev.hyperbo.la will probably die; github does it way better. Moving all media assets to s3: maybe. ssl: probably not
permalinkopen("|-"), you are a tricky beast. Successfully fork bombed myself 5 times before I sorted that out.
permalinkhyperbola, now with 500% more cache-control headers
permalinkFinally fixed the css on my site to be less of an abomination. width: auto, you are wonderful
permalinkwrote my first MapReduce job today!
permalinkhave access to one of ESPN's private repos on github
permalinkfinally broke down and got a github account. My username is lopopolo
permalinkthis weekend's project, get all my config files on github
permalinkvi mode is the best thing I have ever discovered about the command line
permalinkpushed my first bugfix today!!!!
permalinkI got accepted to the EECS MEng program!!! woooo!!
permalinkbroing out is somehow making studying for algorithms not suck
permalinkits amazing how the time melts away when you're playing portal
permalinkit's amazing how the time melts away when ur mucking around on a server
permalinkI need a 512GB iPhone
permalinkkilled my own email solution because I had no confidence it would work reliably. Rolling with Google Apps now
permalinkgot my offer today. will be working for ooyala for 3 months this summer.
permalinkThis is why I like django's pluggable apps. I can get distracted and not finish a project, but the site still works. #django #distractions
permalinkworking on a sort of app store for projects i've done, a glorified portfolio
permalinkprops to a friend for giving me some tips on how to make my logo better. this is the tweaked version.
permalink