HNHacker News
TopNewBestAskShowJobs

joseph

264 karma · joined February 20, 2007

I can be reached via rjosephwright at the gmail.

github: https://github.com/rjosephwright

submissionscomments
joseph··on Picasso's self portrait evolution from age 15 to age 90
I’ve heard people compare Picasso’s art to that of a grade schooler so many times and I think it’s a lazy opinion, sorry. Picasso was a virtuoso, to put it mildly. When I saw Woman in White[1], it practically jumped off the wall at me. Never saw grade school art that could do that.

1. https://www.metmuseum.org/art/collection/search/488711

joseph··on Fly.io: The reclaimer of Heroku's magic
Unless they’ve changed things, there is no containerization within the VM a la kata. They run their own custom init inside the VM and use it to start the entry point. https://github.com/superfly/init-snapshot is the source.
joseph··on Fly.io: The reclaimer of Heroku's magic
> We've been kicking around ideas for managing files on volumes. This is a common problem – it's actually more difficult than you'd expect because "securitah". Once your volume is mounted in one of your VMs, we can't run tools outside the VM to let you manage the file system. On something like k8s with vanilla Docker, we could. But no one should run multitenant Docker.

Was there a reason for not using something similar to kata containers where you run a microvm but still use containers inside them? It seems like it would make such things easier while getting the isolation of a VM.

joseph··on Fly.io: The reclaimer of Heroku's magic
I'd like to do any one-off job, not only scheduled ones; retrieving data and transforming or storing it, scraping a web page, running a database migration. My biggest annoyance with Fly is the assumption that everything is a long running application.
joseph··on Ask HN: Teach me something new
Ctrl+l clears the screen.

Ctrl+[ is the same as escape, which I like more than reaching for the esc key.

joseph··on Interactive, file-level Time Machine-like tool for ZFS
Yes, me too. That was peak desktop experience over ten years ago.
joseph··on Show HN: Sqwok – A social chat alternative to Twitter and Reddit
Being able to turn it off would make me more likely to use it. But I don't really understand why this feature is desirable for anyone.
joseph··on Show HN: Sqwok – A social chat alternative to Twitter and Reddit
It's obnoxious to show who is typing. Like, give me a minute to compose my thoughts and type a response without feeling in a rush because everyone can see I am typing.
joseph··on Andy Jassy on figuring out what's next for Amazon
I let Prime lapse maybe a year ago. I realized I'd been paying for HBO on Prime for years even though I had never used it. It was my own fault, I should have realized that the charge for "Prime video" on my credit card statement every month was not for regular Prime TV. But after that, I was never again going to let Amazon sneakily charge me for things, and it wasn't the first time they'd done it, so I deleted all my payment methods. After getting rid of Prime, my life hasn't changed for the worse one bit. I do still order from Amazon sometimes, but I always order the $25 minimum to get free shipping and then delete my payment method immediately.
joseph··on A Foolish Consistency: Consul at Fly.io
I hope there will be a blog post about flyd! I love reading about what fly.io is doing.
joseph··on Dagger: a new way to build CI/CD pipelines
My "workaround", if you can call it one, is to design things so they don't need the CI/CD server to get a build/test/deploy feedback loop. I should be able to do any stage of the pipeline without the server, and thus no code is committed until I know it is working. The pipeline is basically a main() function that strings together the things I can already do locally. If I need anything intelligent to happen at any stage of the pipeline, I write a tool to do it using Go or Python or something that I can write tests for and treat as Real Software. After fighting with this for many years, this approach has worked best for me.

I didn't dig deeply into the docs, but Dagger appears to be doing a multi stage pipeline locally. If that is the case, I wouldn't want that either. I use Concourse, which has very good visualizations of the stages, and if I used Dagger there, it would consolidate those stages into one box without much feedback from the UI. Also, with Concourse you can use `fly execute` to run tasks against your code on the actual server, without having to push anything to a repo.

joseph··on Ask HN: Have you ever been “poached” internally? Is this even a thing?
At a company where I once worked, there was a development team that started working on an orchestration system for a cloud platform called OpSource[1]. It was sort of a CloudFormation-like system but driven by XML (they were Java developers). The team consulted with some of us who worked on infrastructure. Most of my fellow team mates rejected the project, but I enjoyed attending the meetings and ended up embedded in the development team and delivered most of the code that did the orchestration. The project was successful and I went back to my own team for a while, but they pulled me back in to work on another project. I ended up working with them most of the remaining time I was an employee at that company, even though I wasn't connected to them on the org chart.

1. https://en.wikipedia.org/wiki/OpSource

joseph··on Air – Live reload when developing with Go
In my projects I use a script to watch for changes and recompile/restart with a loop such as:

  executable=/path/to/target
  while true; do
      make build
      if [ ${?} -eq 0 ]; then
          ${executable} run &
          pid=${!}
      fi
      inotifywait -qq -e create -e modify -e delete --exclude '\.#.*' -r .
      [ -n "${pid}" ] && kill ${pid}; pid=
  done
This is simplified a bit, as the script usually contains some other things like starting and initializing the database.
joseph··on Show HN: An open-source, self-hostable Heroku and Netlify alternative
I doubt if someone wanting to run an app is the target audience. A lot of companies would love to have something like Heroku that could be hosted internally. A platform team hosts it and development teams consume it. As it stands, they are stuck hand rolling their own poor implementations. Lots of wasted person-hours are happening in this space due to a lack of good, stable solutions that won't disappear (I don't know if this one qualifies).
joseph··on Free Software: An idea whose time has passed?
MIT is a free license according to the FSF, see https://www.gnu.org/licenses/license-list.en.html.
joseph··on Emacs is the 2D Command-line Interface
> I agree that VS Code is easier to edit code in, but Emacs is easier to program and extend. Ease of use simply isn't why people use Emacs and I think that at this point it would be hard for it to ever compete with VS Code on that front.

I don't program in Emacs except to fix bugs or make small modifications to my init.el. I use Emacs because it's the easiest editor to use. The keybindings are ubiquitous: they are standard in the command line of bash and other shells as well as numerous other programs, and all throughout the macOS GUI. By sticking to Emacs as an editor I am using the most widely available keybindings anywhere and that helps me be productive in a multitude of places. Emacs has modes for all the languages I use, and especially now with LSP, they generally Just Work. I start Emacs as a server when I log in, and I can connect to it from any shell on the same machine, and my open files are there waiting for me. I guess you might find VS Code better if you like the mouse, but I don't want my hands to leave the keyboard while editing as I find it counterproductive.

joseph··on Homebrew 3.0
Are you sure about that? I currently have it installed in ~/brew and commands link from ~/brew/Cellar into ~/brew/bin and there is a .git directory in ~/brew. I used to put it in /usr/local and it irked me that there was a /usr/local/.git. That was the main reason I stopped putting it there.
joseph··on Homebrew 3.0
I've never had an issue with it. I just add ~/brew/bin to my PATH and everything works fine.
joseph··on Homebrew 3.0
There's nothing wrong with installing packages into /usr/local, but brew turns /usr/local into a git repository and IMO that is wrong. Also, brew acts like it's made for a single user, as it changes files and directories to be owned by the user running it, but /usr/local is a system directory. When I install brew, I always put it into my home directory instead of /usr/local.
joseph··on Ask HN: What are you working on?
I'm working on tool called Unobin that lets you write Ansible-esque playbooks and compile them to a standalone binary with all of the templates and files baked in.

I'm trying to solve the "works on my machine" problem that's very prevalent in the devops world. One person's playbook (or Terraform module or Chef cookbook or whatever) works fine on the developer's machine due to assumptions made during the development. But transfer that code to another machine and it's a whole 'nother story. There is often a lack of rigor around dependency management and versioning, along with hidden dependencies such as programs that need to exist on the machine where the playbook is run. I want to make it possible to include all of the dependencies directly in the binary, so you truly need just one binary (unobin) to download and run.

I've made a lot of progress and have what I feel is a solid POC at this point. It lacks many modules but I'm just writing them as I need them. Right now I'm working on a reference playbook to build a Concourse CI stack, and that's giving me solid feedback to myself about what's missing.

https://github.com/cloudboss/unobin

joseph··on A Beginner's Guide to Houseplants
I like to grow herbs from the ridiculously priced ones they sell at the grocery store. Put a sprig or two in a jar of water for a few weeks or whenever roots begin to sprout, then transplant them to a pot. I'm no green thumb but I've found this is pretty easy to do. Many of them grow well outdoors too.
joseph··on Ask HN: What Lived Up to the Hype?
I'll never forget that scene with Marlo, with the lollipop in his mouth. It strangely makes him seem extra ruthless. My wife finds it odd that I remember such trivia, but that is one of the most prominent details of the whole series for me.
joseph··on Rocky Linux: A CentOS replacement by the CentOS founder
RHEL source RPMs can be downloaded from http://ftp.redhat.com/pub/redhat/linux/enterprise. According to your link, CentOS doesn't use the source RPMs since 7 but uses git repos instead. I don't know where the git repos are located, however, or if it is still possible to build the whole OS from just the SRPMs.
joseph··on AWS CloudShell
I think the issue is that web based terminals aren't very usable, as they mess with keybindings and line wrapping, for example. At least that is the case with GCP Cloud Shell. It makes it pretty difficult to use for even basic things like running vi or emacs.
joseph··on AWS CloudShell
It gives you sudo access so you can install anything. Although you don't need root to "install" Terraform, you can just download the binary and run it from ${HOME} or wherever.
joseph··on CentOS Stream, or Debian?
FreeBSD has a "Linuxulator" so you can run Linux containers without a VM.

https://wiki.freebsd.org/LinuxJails

joseph··on Moving Away from Travis CI
I also love Concourse and feel it has the perfect set of abstractions to be able to compose arbitrarily complex pipelines. You can extend it by creating your own resources (I actually wrote a tool to help make this easier[0]). The pipeline visualization is better than anything else I've seen. I'm not aware of a hosted Concourse solution, but there really should be.

BOSH is not a requirement to host it yourself, and I've never used it.

Probably the easiest way to run it is to use the helm chart[1] and run it on Kubernetes. There are some things to keep in mind, like the workers have their own containerizer that is not Kubernetes-aware. You don't want it competing with Kubernetes for scheduling containers, so it's best to let the worker pods be the the "owner" of their node, and you can use affinities to enforce that.

At one company where we ran it directly on VMs in AWS, I used Ansible to build the CloudFormation stacks for the database (Aurora) and autoscaling groups, and the machines self-configured with Ansible to download and extract the Concourse tarball and start it. I wish I could make that code public but it now lives inside the company where I used it. I guess my point is that running it isn't magic, it's just a program (actually two, web and worker) that you start with some arguments that are pretty well documented[2].

0. https://github.com/cloudboss/ofcourse 1. https://github.com/concourse/concourse-chart 2. https://concourse-ci.org/install.html

joseph··on Ask HN: How did you get started in tech and/or Linux?
In the late 90s, my brother gave me his old 486 machine. Around the same time, the Seattle Weekly published an April fools article[1] which mentioned a free operating system called Linux. I thought it was part of the joke, but on further research, I discovered it was real. Fascinated, I bought a CD with the RedHat 5.0 installer and put it on my 486. I quickly decided the 486 was too slow, and the excitement of learning more about Linux prompted me to build myself a much better machine.

Then I discovered there were many free operating systems available, such as FreeBSD. I installed it on my machine and started going to the local BSD users group meetings. I met a guy there who hosted weekly programming classes at his house. One of the people that went to his classes worked for a small web hosting company and helped me to get an interview. I landed the job, and that is how I got my foot in the door as a professional.

1. https://www.seattleweekly.com/news/microsofts-new-brain-proj...

joseph··on Chef to be acquired by Progress
Ansible doesn't necessarily need ssh or a central control node, just a place to store roles as artifacts, such as Artifactory or a storage bucket.

Pass all of your variables and dependencies (role artifact urls, python requirements.txt, etc) to machines through user data and have the machine download the dependencies and run ansible-playbook to configure itself. Optionally, add a systemd timer to run it on a schedule and you have an "agent".

I've done it this way a large percentage of the time using ansible. The other way is by baking images and using ansible as the provisioner (using ssh but only during the image build).

joseph··on The Age of M-Pesa
When I visited Kenya in 2012, I was fascinated to discover that this existed, and had been going strong for years already. Meanwhile in the US, money transfer seems dated by comparison. Crypto offers some hope, but the ecosystem is so fragmented and dominated by shady people.
← PreviousPage 2 of 6Next →