Day 2 after first sprouting:
The web has become really complicated. It takes so much time, so much frustration, and so much specialized knowledge to set up a new site, blog, forum, or chatroom that many internet citizens no longer build independent experiences. It's become so simple to join an existing silo (tumblr, wordpress, disqus, discourse) that we're not as likely to consider the idea of building something that's simple, clear, and completely ours.
I've been involved in indieweb stuff for a while now. The Indieweb is the idea that you can (and should) own your own internet persona – the data that you create online should live, primarily, on your own internet "homestead". The problem is that for a long time, the internet hasn't had tools that made that easy for folks who don't have Ops Chops.
Enter, Static-web Generators.
Static web generators have really sucked. I have used tons of them, even helped build one from scratch, and I've been disappointed miserably every time. Jekyll, Hexo, Octopress, GH Pages – all very well-intentioned tools that unfortunately kept the knowledge-barrier high enough to be frustrating for newcomers, put constraints on what was possible with your code, and lacked clear enough documentation to really help folks get started with building their own website from scratch. Le sigh. This was not fun. This was not easy.
Until I discovered Harp.js, that is.
Harp is "The static web server with built-in preprocessing." It just works. Write your site in almost anything (Jade, Markdown, EJS, CoffeeScript, Sass, LESS and Stylus), and Harp will create a clean, fast site in HTML, CSS, and JS. Presto, exactly what we're looking for.
Let's dig in:
[Note: this tutorial requires Node.js. If you haven't got Node.js on your computer, you can use this guide to help you get it set up.]
Harp includes several components – a project builder (installation wizard to walk you through creating a static site), a compiler (compiles your templates and content into a
www directory of HTML, CSS, and JS), and a server (to locally serve your uncompiled content, updating as you edit files). All of these components are installed with one npm module. With Node.js installed, copy and paste the following command into your Terminal application:
sudo npm install -g harp
After you type your computer's password, a progress bar will appear as all the components of Harp are downloaded and installed. Once that's finished, you can start your first static website.
Creating your Harp project
First, navigate to the directory where you'd like to keep your static website. Then, initialize a Harp project by typing the following in your Terminal:
harp init myproject
myproject with the name of your static website.
Check it out! It dumped some stuff into this directory! When you use the
harp init command, it downloads some boilerplate from the Harp website, and creates the following files:
404.jade _layout.jade index.jade main.less
Now we can spin up a local server to see our new static site. Type
harp server into your Terminal.
[Note: this is why I love Node.js. Instead of having to install php and mysql and apache, you just install Node + a few packages and we're running a local server in minutes, instead of days]
Harp will tell you exactly where it is running:
------------ Harp v0.19.0 – Chloi Inc. 2012–2015 Your server is listening at http://localhost:9000/ Press Ctl+C to stop the server ------------
You should be able to navigate to http://localhost:9000/ and see your brand-new boilerplate static website.
Editing and Deployment
Now you can open up your project directory in your filesystem and leave the local server running in your terminal while you edit your site. The server will monitor the folder and automatically update what you change on the site. Just refresh your browser when you make an edit.
You're ready to edit your static site. The boilerplate is all written in Jade and Less, but you can write in almost any templating language you want, including Markdown, EJS, CoffeeScript, Sass, and Stylus. Try creating some new documents and viewing the output HTML in your browser. Pretty magical, right?
Harp has fantastic documentation on their website for structuring your site, creating layouts, using preprocessors like Markdown, and deploying to hosts like Github Pages.
Personally, I like hosting on Neocities.org, which is fantastically easy.
First, we have to compile our static site into HTML, CSS, and JS. To do this, type the following in your Terminal:
This will compile your static site into HTML, CSS, and JS in the
www directory within your project directory.
Now, to deploy my site to Neocities, I just open that
www directory in my finder, and:
Deploying to Neocities is as easy as Drag'n'Drop™.
I hope this tutorial was useful for you. If you have any questions, or if something doesn't work, please let me know on Twitter (@_crossdiver), or shoot me an email (firstname.lastname@example.org).
I am currently available for hire if you'd like any consulting or development on your static web applications.
Hi there! In this tutorial, you'll learn how to install Node.js using NVM. If you want to learn more about Node.js and why it's useful, there's a good explaination over on the Modulus blog.
Let's get started!
We'll be using NVM (the Node Version Manager). Not to be confused with npm (the Node Package Manager), NVM is a simple bash script to manage multiple active Node.js versions. Basically, NVM allows you to install Node.js and gives you some extra tools to be able to switch between Node.js versions if particular projects require that.
To install NVM, we'll use
curl to download and run an install script. (To all the security folks out there, yes, I hear you.)
Copy and past the following line into your Terminal application, and hit enter.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash
Now, quit and reopen your Terminal app. We need to check whether NVM was able to successfully install itself in your bash profile. Type
nvm and hit enter. If you get an error, you'll need to add NVM to your bash profile manually.
nano .bash_profile. This will open up your
.bash_profile document. Paste the following text into your
Ctrl + X to save,
Y to agree to save. Now you should be able to quit your Terminal, open it again, type
nvm, hit enter, and see the Node Version Manager help text.
Now that we have NVM installed, we can download and install Node.js.
We'll install the latest stable version. Type
nvm install stable.
You'll see a loading bar, and then
Now using node v5.0.0 (npm v3.3.6)
To test whether Node.js is really truly installed, type
node --version. You should get back
v5.0.0, with a version number corresponding to the version NVM installed.
If at any time you need to use a different version of Node.js, and have installed multiple versions from NVM, just use
nvm use X.X.X
X.X.X is the version number you wish to use.
Congratulations, you just installed Node.js, and have a sweet version manager to keep yourself up to date.
Recently, I had to create a code sample for an interview, so I built a Minesweeper in da browser. :)
OMG. Slime mould sonification. Incredibly cool.
Non-Human Rhythms 2 is the second release of a series of live recordings featuring different micro-organism and there bio-electrical activity translated into a sound process. In this release listen to 4 tracks of slime mould sonification.
Thanks to @nervous_jessica for the link.
time to listen to the slime molds sing https://t.co/rZwy3N1wmE pic.twitter.com/CcJP7AJ0Vj— Jessica Rosenkrantz (@nervous_jessica) October 8, 2015
Really, really happy to see Neocities supporting IPFS now -- my site is pinned to my local machine easy as pie. Now just need to tinker with some permanent "anti-server" IPFS node to keep a running archive of my site physically on my desk. dance dance I'm so excited.
You could probably call Justin Hall the Godfather of the indieweb. I'm like, super ashamed to admit that I only learned about him today. Here's his new documentary, where he chronicles his life on the web and off, and makes a great case for breaking out of our electronic siloes to meet eachother with kindness and gratitude. Plus, it has fantastic retro-internet vibes. Enjoy!!
Finally stopped by the Mighty Tieton facility in Tieton, WA. I've heard about their ambitious community-building and local development projects for years, but never really had a good sense of the scale or polish that's gone into their operation. Located in a tiny town of 1,200, their main facility (a 1960's fruit packing plant) houses entrepreneurial endeavors, art galleries, permanent installations, and a shipping and fulfillment center for locally-produced products. They also host and coordinate local events, large gatherings, and musical concerts. Keep an eye on these folks, and meet them if you can.
My wife, Sarah, and I had never taken a "real" roadtrip together.
I like to think that a year-long period of driving bi-weekly between my Eastern Washington desert and her Emerald City sound counted for something, but one thing it didn't count for was an expansive, we're-out-of-audiobooks-and-cell-reception West Coast experience. So we set out to correct that no later than six months into our marriage. Road trips offer fantastic perspective We booked our way south from Richland, WA (our home-base for the present), and made it to a friends' place in Winters, CA by dinnertime. Skipping San Francisco, we drove south along the central California Coast, popping off the 101 at Morro Bay (great spot -- we'd love to spend some time there). We spent about four days in Solana Beach, and then headed up the east side of CA, NV, and OR through the High Sierras and the Eastern Oregon desert.
Especially recommended camping spots:
There's really nothing at all like driving through the expanse of the West Coast. You're driving through landscape riddled with contrast: the dry eastern slope butressed against rainforests to the west; flat sagebrush plains dotted with high buttes and mesas; roiling, unchained mountain streams and calm, muzzled rivers. Each new scene presents you with a new question: the underlying tension between the "settled" folks and the "pioneers" (both in the city and without); the timely questions of drought and agricultural responsibility; the simultaneous heritage of Manifest Destiny and John Muir.
Growing up in small-town Eastern Washington, I thought I had a pretty good perspective on the plight of Rural America. I've had my fair share of sideways looks. I've had to move to a bigger town for work, and I don't know when I'll be able to move back. The vast expanse of nothingness in Eastern California and Oregon, however, is quite remarkable. Small towns, full of people (by comparison to others), sometimes hundreds of miles from other towns the same size or smaller. Thousands of miles of road with just a scant handful of metropolitain areas – the whole expanse as good as forgotten to the rest of the country.
on life. We made a very conscientious effort to unplug – turn off our cell phones (we didn't have reception for a good long stretch anyway), and experience the scenery and each other. The space that left in our minds was filled up by deeper conversations and some mild soul-searching. I couldn't really recommend it more.
For the record, I'm still learning how to do this whole "life" thing.
Recently, I made the really invigorating discovery that I can be a grade-A asshole while simultaneously thinking that I am helping those around me.
In continuing to examine my assumptions, I've started to see the "black boxes" in my thinking -- swaths of my perception that I'm blind to. Sometimes, they exist because I have inaccurate data about a project that keeps me from seeing the reality of whats going on, but other times it's myself that I can't see, which keeps me from being in-tune with how my actions affect what I'm doing or the people around me.
Recently, I had one of those big black blind boxes planted directly over a particular relationship with a teammate. I was completely unable to see that I had done nothing to build trust with them, but was instead micromanaging their portion of the project, and making them feel disempowered to bring their expertise to the table. The surprising thing to me wasn't that I was basically managing the project very poorly -- I am very aware of my baby-level management skills -- what surprised me was that, yet again, I couldn't see it. It was only after my interactions were played back to me by another teammate that I saw how incredibly rude and arrogant I had been -- in what I thought was the best interest of the project.
Black boxes are sneaky -- they don't show themselves on their own, until it's too late. I need to learn how to hold a mental candle up to everything I do, so that I can see, if not the actual wrong-ness of my actions, at least the black boxes themselves. If I can see the boxes, I'll be able to work backwards and find out what I'm missing.
But that's not the point.
We all have black boxes in our minds. We all struggle to see how our actions affect others, how they affect projects we're working on, and how they affect our own selves. That's something I will always struggle with, and I hope I'll continue to make progress and get better at uncovering those boxes.
The point is: what do you do once you've found them? That's where humility becomes the most crucial thing of all.
My actions towards my teammate were really wrong. I felt I was in the right, arguing for the betterment of the project at hand, but in the process, I really hurt someone by making them feel that they had nothing to contribute. I walked all over them in the interest of "making things better". At the time, I didn't think that it would be possible to heal that relationship in a way that wouldn't leave a long, awkward aftertaste.
After some wonderful soul-searching with another teammate, I was counseled to simply humbly make amends, let that feeling of asshole-being really sink in and sting, think of the situation from the other's perspective, and genuinely admit to being that asshole that I never wanted to be.
Super simple, kindergarten human-being 101, there.
All I can say is that genuine humility, without expectation of forgiveness or "results", is miraculous. The amount of healing that can be had, both for your own being and for a relationship, by simply getting down and being vulnerable in your own shortcomings, is incredible. My teammate and I are on much better terms than we ever had been.
By focusing on humility in my management and relationships, I hope I'll be able to more clearly see the black boxes. At this point, I'm pretty confident that humility is the secret to the whole "life" thing.
Go forth and be humble, folks.
Lately, I’ve been busy.
I currently run MUX, a local music venue in Richland Wa. We focus on regional and local independent music, producing between one and three shows a month. I’ve been learning a ton – not only about the music industry, booking, production, and promotion, but about myself.
Assumptions are essential for effective life-living and thing-building. You can’t do any one thing without having some preconcieved idea about what you should do, or at least how you should learn to do that thing. However, assumptions are only healthy when they are constantly challenged in your own head.
For example: most MUX shows don’t sell many presale tickets. We generally announce the show three weeks in advance, and offer cheaper presale tickets right away. One or two tickets will sell in the first two weeks, but the majority of the ticket sales will be in the last two days before the show. This is generally fine, aside from the fact that it’s difficult to figure out how many people will show up ahead of time.
Two weeks ago, we put on an outdoor festival called TriFest, in connection with a local art/design/tech/entrepreneurship conference called TriConf. Ten bands (all regional medium-sized bands) played over the two nights of TriConf. Two-day wristbands were $35 presale, $40 day of show, and TriConf attendees received free wristbands. Leading up to the festival, wristband sales looked much the same – one or two wristbands sold in the first two weeks of promotion, and a couple more in the last week.
The first night of the show, almost nobody showed up. The attendees from TriConf trickled in and out, but a grand total of a dozen festival-goers made it out that night. It felt like an utter failure, and I didn’t know why.
Later that night, I was taken aside by a good friend and fellow MUX teammate. He told me that he honestly felt that the ticket price had scared off a lot of folks, and that would account for the dissapointing turnout that night. This didn’t come as a shock to me – I had worried about the ticket price – but I realized that my unchallenged assumptions about ticket sale patterns had prevented me from seeing that the price was too high, and people weren’t going to come.
There’s a good cliche out there: “you can’t know what you don’t know”. Assumptions work off the worst side of that – you feel that you have a grasp on whatever’s at hand, but left unchallenged, you’re completely blind to any potential problems that your assumptions don’t account for.
I’m seeking to break down that wall for myself. I need to be able to see the holes in my assumptions and fill them with the information that is already there, waiting for me to ask the right questions to discover it.
Here’s my plan.
In the end, we made the second night of TriFest free to all, and promoted the crap out of it that day, thanks to feedback and ideas from another member of the MUX team. By personally asking people to invite all their friends, writing a blog post on the MUX site about why we made the second night free, and pushing it out on all the interwubs, 300 people came to that night’s show. That’s great, but had I been able to understand how people percieved the ticket pricing ahead of time, the whole weekend could have been packed out, and I could have been selling tickets at greater than $0.
I’d crave your thoughts. How do you challenge your assumptions? Has hindsight enlightened your current planning process? What are some methods that you use to gain perspective when you are planning and executing your projects?
“…And we pray, not for new
earth or heaven, but to be quiet
in heart, and in eye clear.
What we need is here.”
– Wendell Berry
We’re really lucky bastards. Here in the comfy bubble of the tech world, there’s practically no glass ceiling we won’t eventually smash through. I’ve been blessed with a company I can believe in, amazing teammates, good health, and a wonderful place to live surrounded by pristine nature. I live a life filled with abundance, for which I am extremely grateful. If you ever catch me complaining, you have my permission to slap some sense into me.
I firmly believe that we cannot afford to become complacent in our position, but to use it to do the greatest good we can in the short time we have. As such, I am setting a personal bar for myself this Thanksgiving by giving $200 to a different cause each month. Here’s the list I’ve got so far (If you know of a cause that you think should be on my list, please get in touch with me):
I’d really like you to join me in this endeavor. If you do, please let me know, and I’ll link you from this post.
Together, we can use our privileged position to do a little good in the world.
So, here it goes.
A couple things happened at Realtime Conf that sparked my move to the #indieweb. One of them was a talk given by Amber Case called “The Open Web and the Opportunity of Now”. You need to simply sit down and watch it, but the tl;dr goes like “get out there, use what’s already been written, own your data, and build cool things”.
2013 Realtime Conf. - Amber Case from &yet on Vimeo.
As soon as I heard that talk, I knew I needed to sit down and finally get my online presence wrangled together, starting with my personal blog. My persona online has been growing and becoming more fragmented very rapidly, which, despite the convenience of all those accounts and services, still left me feeling unsettled and uneasy. So far I’ve:
The second thing that started this ‘homesteading’ itch (have you watched the talk yet?), was more of a nagging zeitgeist feeling. I haven’t nailed it down, but I have this notion that we’re embarking on something big right now. I think we’d better buckle up.