Brian Kardell
Betterifying the Web
Follow Me On...
Posted on 01/02/2019
I Heart Glitch

Today marks exactly one month since I started playing with Glitch, and I'd like to tell you about why I love it and can't stop playing with it.

I want to say up front that this piece about pining for glory days that I don't actally remember existing when all you needed to know was HTML and CSS. If that was all you needed then, it's all you need now too. The truth though is that even in the early days of the Web, it often wasn't: We wanted to do things with the Web that would have made hand-authoring pages an untenable solution. In fact, the first real, practical use of HTML at CERN by Sir Tim-Berners Lee and team generated that HTML by way of C and database services. Perhaps there has been a decrease in the number of sites that could even be realistically hand authored without more than that because of increased expectations or something, but by and large, it seems to me that complexity in delievering a website isn't so much "new" as it is "shifted".

Along the way there were a ton of complex things, and each was rooted in whole different languages: Java frameworks and .NET frameworks and PHP and so on. Because of that, each of those had their own build systems (sometimes a few), application servers, package managers and so on. So, the idea that we could do these things in the same language (JavaScript) and protocols seems like actually a really good thing to me.

So... This isn't just "Things sure have gotten complicated. Remember when they were simpler? Pepperidge Farm Remembers." What it is about may, at times, read a little like that, but the point I am trying to make is subtler - it is about how we manage that, and how it makes us feel.

Time for play

I don't really know how to describe the period from about 1994-1998 other than to say that it kind of felt like play. Occasionally frustrating and confusing play to be sure, but each challenge was semi-contained and full of exicting little rewards that drove you on. It was like climbing a series of hills to find inceasingly beautiful views from the top of each one, pressing you on to tackle the next. There was something so engaging about it that I, and many others, spent way too much time just playing with it.

If there is a thing that I feel a loss of, it's kind of that.

A lot of information flows past our eyeballs - far faster than we have time to actually learn about. That's ok. It's natural to have a spectrum of knowledge about things that can range from "I've kind of heard about it and sort of vaguely understand the concept", all the way to "I really understand this thing, very well, and can really use it". The further you want to move something along that spectrum, the more time investment it takes.

For me, often this means that allocating time to sit down and actually try to get to know something remotely significant in practice, needs to align with some a real-life need, at least vaguely. However, sometimes, by the time you get there, you can find that there are a whole bunch of dependent things that you also haven't learned yet, in the way obscuring your ability to actually do so.

I have occasionally spent hours shaving not one, but several yacks... with a spoon... only to eventually not get to spend much time with the thing I sat down to try in the first place. That can feel really bad and kind of overwhelming, and it really can kind of pile up on you.

Tools

Perhaps because of this, I love tools like CodePen for their simple ability to get out of my way and let me focus on something. They are where I have 'played' the most for the last couple of years. I don't generally make things there to show off, rather, they're where I think and explore. There, I can very easily use the most basic/common sorts of tools to focus on HTML, CSS and JavaScript - including preprocessors without worrying about all the rest of it. You don't need to know how to setup Webpack or Babel, or organize your project, or setup a server or a bunch of other things to use tools like those, and that's all great.

On the other hand, looking back, I've probably occasionally used these great tools poorly, making that particular problem a little worse. My 'playground' was pretty far removed from my 'real' space and managing both ends of that requires some careful planning and extra hoop jumping. Eventually the time always comes when I need something those tools don't have, or have to take those nice little experiments from their playground and send them into the real world and figure all of that stuff out - and then, sometimes, the things I haven't learned are all piled up. Again, that's not on the tools, that's on me.

Then, Glitch

When I first heard about Glitch, I kind of thought it was a REPL kind of tool, or something along the lines of a CodePen or many other things "in that vein". I sort of chalked it up as "like other stuff I already am familliar with and probably not that exciting". I poked the site briefly and, I'm sad to say, didn't "get it". It didn't look as slick as some of the things I was already familliar with and, after just a few minutes, I just made a mental note to "maybe look at it again someday" and moved on to invest my time elsewhere.

But then, suddenly, I expectedly had some free time to catch up and decided to go back and look again. One month later I can honestly say:

I don't think that I have ever loved a bit of tech as much as this.

For the first time in a long time, I feel like this is something really different and exciting.

So many things I love

I guess I can see how it is potentially easy to miss just how great it is the first time around. Click the 'remix' button and think "well... I guess that's cool?" The editor doesn't look like much at first. Is it kind of like CodePen, I guess? But social somehow? Don't we already have tools and archetypes and templates and things that help you get started?

If this is your initial take -- give it a minute: It is full of so many nice surprises. With Glitch, the more I use it, the more I dicover, and the more I discover, the more I love it. Some of them are small and just 'pleasant' and others are shockingly great. I'll start with the former...

Small, but enjoyable surprises

First, the editor has more than you think at first glance. It's actually pretty nice. You can move, copy and rename files pretty easily. It has code collapsing and 'as you type' linting and inline error reporting, and it has a dark mode that is actually pretty easy on the eyes. It's also 'type aware' and has diffrent integrations. Images and media, for example have a little asset management thing and get hosted on a CDN without you having to deal with that - and your package.json, if that's your thing, has an NPM integration that let's you just search for packages and click 'add'. So nice.

More importantly: It's all real.

Remixing is fun, and actualy surpsingly helpful as a way to learn and get started and begin to explore. That is considerably more valuable than I realied and helps a ton with the problem I described above about there being so many things. But it's also only part of the allure for me. Another part is that it isn't separate, it's real, and there is so much there. Together, these feel like a powerful combination that re-ignites a spark for me. It's been so delightful to increasingly realize.

Every time I think that's as far as this is going to go and I'm going to have to get into 'the real thing', it just keeps giving because it is all real. It's not just 'here is a local server and project layout that you can start with in a semi-fake way', it's real stuff. You can tackle real things, and just keep growing it.

For example, that's not just some things that kind of look like files on the left - those are actual files that exist on an actual container - and you didn't have to learn how to use docker or something, it just is.

You can access a terminal window by simply clicking a button. You don't have to ssh into it or something, you just click. It's almost just like it exists right there on your computer -- but it is real. You can click the 'log' button and see the server logs.

Your server will have HTTPS and be in a legit subdomain, right away, where you can get started with lots of powerful features. Service Workers work here, right away, in exactly the way they will in real life. Your site's local storage is your local storage, not everyone elses. Your site's permissions are your permissions, not someone else's. It's all 'real'.

Further, it's yours - you can just say "give me the git" and you've got it. But you don't even have to in order to use some of the features you'd love. There is a rewind button that you can use to undo time. Wow. So great! You can also use a .gitignore to hide files from the editor, and store secrets with things like service account information in a place that only you can see.

You can lock your project and then it's kind of private, people won't stumble across it and be able to remix it....You can feel safe exploring all over the place - this is where I've spent most of my time - just having fun and growing ideas that I'm not sure I want to share yet...

But you can also invite people, even to the locked projects. You can create teams and even collaboratively edit as if it were Google docs or a shared etherpad or something. So. Great.

Oh hey, are you having a problem with your server - click 'debug' and you can connect a debugger right to it... Waaat?

Need more help? There is community support where people can help you get unstuck.

Really, I started playing with some personal projects.mostly not public yet a month ago and just exploring. I haven't been able to put it down since. I just want to keep playing. Really, it's the most fun I have had in so long, and because of that I have probably learned and accomplished more in that time than any time in recent memory. Give it a try. It's so great.