Hacking the Tilde with CircleCI

I ❤️ ftrain. Few writers can capture the joy, poignancy, existential terror and profound connection at the heart of Internet culture, but Paul Ford (the real-live person behind ftrain.com, medium/@ftrain, and countless other Internet words) has the historical context and raw talent to consistently enthrall. As I sat down to write this post, I peeked over at his Medium blog and went down the rabbit hole, smiling like an idiot and laughing out loud as my coworkers moved desks outside the office I’m squatting in.

I’m obviously an ftrain fanboy, so it shouldn’t be surprising that when he first tweeted about setting up an old-school multi-user unix box with a classic home directory setup I was all over it. For the uninitiated, Tilde Club is a love letter to a kinder, gentler (ok, it was just as trollish), younger Internet, where incoming college Freshmen would be gifted a small patch of real estate on the budding World Wide Web to seed with whatever travesty of HTML and CSS they could cobble together. This was a time when static content was the current big thing and we called web apps DHTML. It’s the first corner of the wide world of tech I encountered as a teenager, and it’s hard to overstate the nostalgia I carry for it.

Obviously, I jumped at the opportunity to tend a tilde. I reached out to Paul, SSH’d in to the box and surveyed my kingdom:

/ WELCOME TO TILDE.CLUB A PLACE FOR WEB \
\ PAGES /
---------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
- There is NO GUILT here. NOR SHAME. Not knowing things is fine. Not
finishing them is fine too. Be a disaster! Make a disaster!
- Type "control-L" to redraw your screen if it gets messed up
- Type "mesg n" if you don't want messages, "mesg y" if you do
- There are many people here and it gets slow
- This is a place for making awesome web pages. If you want to do
things that aren't about web pages, hit me up and we'll figure out
how you can start your own tilde.club
- There's a local IRC server and your choice of two clients.
- Type "scrollz" or "irssi"
- Then type "/SERVER irc"
- Then type "/JOIN #tildeclub"
- There's a Usenet-style local news server and message boards!
- Type "slrn" or "tin -r" to start up a newsreader and get going.
- Type "faq" to read some FAQ
- To chat type "~chat/start" (thanks to ~pmg)
(it's rough but works!)
- There is also IRC on freenode at #tildeclub
- There is a waitlist form at http://goo.gl/forms/gRMRT1YBU4
- Public repo for hacks: https://github.com/tildeclub/tilde.club
- finger works locally but not externally
- Mail works, but only internally; use mail, pine, alpine, or mutt
- If you are confused email ford@ftrain.com
IMPORTANT NOTE: PLEASE DON'T HACK THE GIBSON. Don't run servers
please. Make some HTML web pages. Running a server here is like
running Photoshop on your watch.
-sh-4.1$

I was home! I took a quick look around:

-sh-4.1$ ls
public_html

Here was the magic. I knew from the old days that anything I put in public_html would show up on the internet at tilde.club/~travis. I created an empty git repository, added public_html/index.html and rsync‘d it up to tilde.club.

This is 2015 though, so I couldn’t just push static HTML and be done. I got an idea in my head that it would be interesting to have a shared space to interact with other members of tilde.club. I signed up for Firebase, added a project.clj to bring in ClojureScript and started hacking. I quickly built a simple Om app that rendered colored dots representing each user’s location and the user’s name. Users could move their dot and type a short message. I saved position and message information to Firebase so other users would be able get it and render the full board. I had created a bare bones MMO!

Deployment to tilde.club wasn’t too onerous, but it was two commands:

lein cljsbuild once tilde
rsync -rvz * travis@tilde.club:~/

Worse, those two commands didn’t include pushing my code to version control! Fortunately, I work for a company that solves exactly this problem. I whipped up a quick circle.yml:

I created a repository on GitHub and configured it to build on CircleCI by finding the project on the “Add Projects” page and clicking “Build project.” Now I could just push changes to GitHub with git push origin master and they would be deployed to production automatically.

For me, being able to cycle rapidly between having a creative thought and seeing it implemented in production magnified my ability to create. This is the promise of CircleCI - we let developers, whether building a billion dollar company or hacking on an art project, focus on what makes their work interesting.

CircleCI’s mission is to enable you to worry about the problems that matter to you and automate away the tedium. We have lots of ideas about how to do this better and can’t wait for you to see them in the coming months!