Travis Briggs - YABIWU

Yet Another Blog I Won't Update

According to songs.travisbriggs.com, I haven't published a song since July. That's a drought. I actually have written a few songs since then, ones that were mostly finished. That includes the sweet, completely finished song I wrote for Abby for our anniversary, which might never get a proper recording (though I probably owe her one).

All these other songs, though, I haven't gone through the process to actually clean them all up, mix them, add missing instruments and all that. It just seems like a lot of work without a lot of payoff. Of course, the payoff might be that I don't end up writing remorseful blog posts like this one.

I feel like I've lost a sense of wonder in my songwriting process. I'm either going at it with feverish diligence and follow through because I feel like I have to, I have to do it to make myself complete. Either that or I'm just “messing around”, indulging in “letting myself play” but ending up with listless, half-complete junk because I'm not forcing myself to write coherently.

I could resolve now to challenge myself, to push my comfort zone and write something that moves my song writing forward. I want to issue myself such a challenge. And I'm not reluctant to do so because I feel I will fail, necessarily. I think I could definitely do it.

The real reluctance comes from the fact that I think I'm stagnating for another reason. I've developed the basic facets of songwriting to a certain degree. I can write songs. I can write songs where I write all of the instrumental parts, the arrangement, the mix, etc. But it's exhausting friend. It really is.

I want to collaborate. I want to come up with a strong, driving chorus with no consideration for how it will fit into a song, and have another real breathing person help me figure out an intro and verse that will work with it into a finished song. I want to play with a band, where the drum feel and groove drive the composition of the guitar and bass parts, rather than playing guitar parts, adding bass later, and always just having a drum machine on repeat for the whole song.

Sigh. It's not going to happen. I feel like I'm some kind of musical incel, where I'll never find anyone to collaborate with. I don't know where to look, where to start. I've had very very limited success with collaborating over the internet, so I know that I need to find someone who I can sit in a room with and write with. But it's just as awkward as dating, except even more niche. I don't know where to start.

That songwriting challenge is looking more appealing. I might need to just NIKE the shit out of some songwriting (just do it).

Halloween is a time for the spooky, the scary, sometimes the terrifying and maybe a bit of the downright goofy. Is there room in there for a bit of Halloween sadness?

Two years ago one of my friends, Will, moved away from the Bay Area to pursue an MBA from Chicago Booth. We were all very proud of Will and wished him the best of luck. Two years later, he's graduated! But now he's moved to Berlin.

Will used to throw pretty extravagant, costume-required, Halloween parties. He and his friends were very into cosplay in general and would have costume parties throughout the year, for birthdays and other occasions. But Halloween, now there was a chance to get schmucks like me and a few of his other friends to be forced to wear a costume. Legend has it that if you showed up to one of these parties without a costume, you would be assigned a “loaner” from the rejected costume pile. And no one wanted that.

Is there room in Halloween for sadness? For the past two years, some of Will's friends and I haven't celebrated Halloween at all. We had no party to go to, no celebration. We had no reason to eek out the smallest semblance of a costume and hope it passed muster. Can you be nostalgic for something that happened 2 years ago?

It's just one more thing that reminds me that today, right now, the time we are currently living, will one day be looked back upon as the good old days. So put on your best costume, even if it's just “The Color Red”.

In part 1 of this tutorial, we explored some terminology related to domain names and websites, and made recommendations on how to find a registrar and purchase a domain.

Now we will look at the “hard” part: putting a single page website at that domain. We will be using Netlify for this process, since they provide perpetual free hosting for static websites which includes CDN support. A static website is a site that is served completely from files and contains no server side logic. Wordpress sites, for example, are not static, they are dynamic, because every time you visit them the Wordpress software assembles all of the parts and pieces and gives you back the resultant HTML page. With a static website, there is a one to one correspondence between the files on disk and the web pages you see. For more of a deep dive into this topic, see my article on dynamic web apps.

Step 1, register for Netlify

Head over to netlify.com and register for a free account. You won't even need to put in a payment method just yet (though that will be necessary if you are registering a domain name with them).

Step 2, prepare your site

We've provided a very simple, single page website that you can download here as a zip file. Extract it to somewhere on your hard drive and get ready to publish your first website! Note: it is recommended that for the first deploy, you don't modify the source code of the site at all, since this will help rule out potential trouble should you have problems.

Step 3, log into Netlify and upload your site

When you log into the Netlify dashboard, you should see something like this:

Netlify dashboard upload area

As the text recommends, you can drag the unzipped folder of the sample website directly to this browser window, and it will upload all of the files, preserving the directory structure, then immediately deploy the site. Deploying in this case simply means making it live on the internet.

Don't worry if you're not ready to share this sample site with the world yet. We haven't set up your custom domain which you bought (or will buy) yet, so it won't be there. The site will only be live at an obscure Netlify URL that you would have to share with people before they could view it. But it will be live!

Step 4, preview the site at its Netlify URL

Your dashboard should flash a bit as its processing, then eventually settle on something that looks like this:

Netlify dashboard with uploaded site

In my case, my site was assigned the ID “tender-archimedes-8ebddf” (don't worry, this can be changed later). Underneath that, we see an https:// link, which if you click on it, will take you to the live on the internet version of your copy of the sample website. You should see {TODO: put what the sample website looks like}

You also see the “3 simple steps” banner that Netlify provides. As you can see, the next step is setting up your domain

Step 5A, purchase a domain from Netlify

If you don't care about registrars and want the absolute dead easiest option, this is where you can buy a domain from Netlify.

Click the Step 2, “set up a custom domain” link. You should see the following:

Netlify custom domain setup page

Note that there isn't a button directly to “buy a domain name”. The way this works is you type in a domain that you're interested in (myawesomesite.pizza comes to mind) and Netlify tells you that it's either available and offers to sell it to you, or tells you that it's not available.

If it is available, and you buy it, you are immediately redirected to your site's settings page. If you scroll up, you'll see that your custom domain has already been added to your site:

Netlify custom domain settings

(Yes, for the purposes of this article, I actually purchased and registered https://netlifytestsite.com)

At this point, the test site will be live to the world at the domain you purchased. But don't worry, no one will see it unless you tell them about it.

Alternate Step 5B, use your existing domain

If you bought a domain from Netlify, it's already configured and you can skip to step 6.

If you have bought your domain somewhere else, maybe sometime in the past, you can still set it up to point to Netlify.

Click on Step 2, “set up a custom domain”, just like you would have above. Except this time, instead of typing a new domain name that you'd like to purchase, type in your current domain (without the https://). For example:

Netlify custom domain setup with existing domain

You'll notice that when you enter the domain, Netlify recognizes that it's already registered and asks if you're the owner. (Don't worry, you can't just claim any domain that you don't own this way. You have to be able to configure the domain to point to Netlify properly which means you really have to be the owner).

Click “Yes, add domain”.

Now, this is where things get hairy. You're going to have to go to your registrar and edit DNS records for your domain, so that they point to Netlify. This isn't as scary as it sounds, but every registrar has it's own user interface for accomplishing this, so there's no straightforward way to give instructions for this part.

Basically, though, it's just one step: Create a CNAME record that points “www” to “tender-archimedes-8ebddf.netlify.com”. Of course, in your case it won't be “tender-archimedes...”, you will have your own site ID, but it will always end in .netlify.com, so “.netlify.com”.

For example, for Namecheap:

  1. Find your domain and click “Manage”
  2. Go to Advanced DNS
  3. Click “New Record”
  4. Choose “CNAME record” from the dropdown
  5. For host type in “www”
  6. For target put the site-id.netlify.com
  7. Make sure to save the changes so they update.

Like we mentioned, every registrar has a slightly different process and name for all of these steps.

What's next?

In part 3 of this tutorial, we will cover basic HTML authoring so that you can turn the sample site into something you're a bit more happy with posting at your own precious domain.

In recent years, tons of new so-called “generic top level domains”, also known as gTLDs have been released to the general public. These include things such as .club, .website, .social, and even .pizza. Those helpful wikipedians have been maintaining a full list if you're curious.

Many people don't know that these TLDs exist or that they are available, often for a discounted rate. For example, if you happen to be Steve Harrison, the domain steveharrison.best is available for only $2.99 a year right now. And of course, if you can find something in the crowded .com space, those are available for between $8 and $15 dollars. (I recommend trying somethinglikeafullsentence.com for example).

If you're interested in dipping your foot into the pool of domain ownership and simple website hosting, read on!

Domain names versus websites versus HTML pages versus URLs

Let's start with a few definitions. A domain name is something like google.com or yourawesomewebsite.pizza. It is simply an entry in a global system that you (or someone else, or some company) has bought the rights to. Once you've bought these rights, you need to “set your domain name up” so that it points to something. That's the important part: the domain needs to point to something in order to be useful.

What it points to is the website that is located at that domain name. Actually what it technically points to is an IP address (or a series of IP addresses). The IP address is often referred to as the internet “phone number” of a computer located somewhere in the world. When you type “https://yourawesomewebsite.pizza" into your web browser, the browser queries the “global system” referred to before (the Domain Name System or DNS) and finds the IP address of the computer that is hosting the website that the address refers to.

For our purposes, it's not necessary to understand the details of IP Addresses or the Domain Name System. The important part is to understand that yourawesomewebsite.pizza isn't a website. It is a domain name that points to a website.

What about an HTML page? You may have heard of HTML or HTML pages, but how do they work into the picture? Well, HTML is basically a computer language that is used to describe web pages. A website is simply a collection of web pages under a common domain, or under a path under a domain.

What about URLs? Where do they come in? You might think that yourawesomesite.pizza is a URL, but it's not: it's missing the https:// part that makes it a URL. So yourawesomesite.pizza? Domain name. https://yourawesomesite.pizza? URL. URLs can also contain paths, such as https://yourawesomesite.pizza/products/1234, where /products/1234 is the path. URLs can also contain query strings, such as https://yourawesomesite.pizza/products/1234?display=full, where ?display=full is the query strings. Query strings allow for websites to dynamically respond to things like search queries and filtering parameters, but they're not particularly important for our purposes.

Note that the last example represents a URL of a certain domain name, with a path and query string, and resolving it via your web browser will result in seeing an HTML page that represents the website that is hosted there. Just to bring it all together, but all that is again probably too much detail for the purposes of this article.

Choosing a registrar

As far as choosing a registrar, I have consistently recommended Namecheap. There are plenty of other options out there (just type “domain registrar” into Google), but I would caution against GoDaddy because of their poor customer service and predatory business practices.

Update: It appears that Netlify is a registrar now and you can actually buy your domain directly from them. This might be a much easier option, since we will be using Netlify to host our site for free.

Once you've found a registrar you like, you can go through the process of searching for your domain. You can generally type in any string you like, and the registrar will first tell you if the .com domain is taken for that string, and then recommend alternatives from the wide world of TLDs described at the top of this article. You can also put in somecrazystring.pizza directly, with the TLD (.pizza in this case) included, if you have a specific TLD in mind. (Note that some TLDs have residency or other requirements, like those for specific countries).

After you've found a domain that you like that is available, go ahead and buy it! If your registrar provides any additional services as upsells (and most of them do), be sure that you don't purchase any website creation or website hosting. We'll be handling that in part 2 of this article. One thing you might consider adding though is any “privacy guard” add-ons that allow you to hide your real name and address in the WHOIS system. Without such privacy guards, your actual name, address, and email address will appear in the global WHOIS database, which will make you a target for not only spam, but real life junk mail too in some cases.

Many folks I know have already taken the first step and registered a domain. They saw that myactuallfirstandlastname.com was available and went through the steps to buy it. If this is you, that's great! That's an awesome first step. Unfortunately, if you go to the website at that address, you find that it's probably some “Website coming soon” page, with the branding of your registrar. Less than satisfactory.

Part 2 of this guide will help you figure out how to host something on your domain (other than the so-called parking page). The best part is, with a little bit of effort, it's completely free (the hosting that is)!

Last year I made a rather audacious New Year's Resolution: to write a song a day in 2018. I will now always remember 2018 as the year I failed to write a song a day. Or maybe I should remember it as the year that I bravely aspired to write a song a day?

I haven't given any thoughts to New Year's Resolutions this year. I've sort of come around to the existential point of view that I'm really just a piece of driftwood on the ocean that is my life. I never really believed in free will. Free will just seems like the explanation we give to the thing we were going to do anyways. I don't have any agency over myself, my outcomes. So why bother?

I did manage to write about 20 songs in 2018, which you can view on my song website. That's about 5% of the way towards my goal.

Maybe I can do something like write a song a day for the first week of every month, then take the rest of the month off. I don't know. Like I said in the other post, song a week is really “wait 5 days, then write a song in a day”.

I mean, why am I so obsessed with songwriting anyways? To speak again of existentialism, maybe I see my creative output as my only futile thrusts against the all encompassing absurd. Maybe I'm just a fanboy that obsesses over music and feels compelled to add to the great corpus of musical works. I am Sisyphus and music is my rock (n roll).

On the topic of philanthropy, there are a few approaches that I see taken by those around me. One is to simply give to whatever cause makes you feel good. Sometimes it's just a matter of some cause that strikes a chord, and just like that you open your wallet. Other times, people try to give to causes that benefit those in the most extreme life circumstances. They donate in order to provide clean water to people in remote villages, or to provide food and medicine to those affected by the horrors of war.

Sometimes though, I find that I like to give to causes that simply provide an interesting or unique presence in the world. This is why I give to Wikipedia, or soma fm, or the Internet Archive, or even govtrack. I might not use these services very often (they're listed in roughly decreasing order of my activity), but I'm glad they exist and I want them to be around for others in the future. I like the idea of these causes, even if they're not the most “boots on the ground” organizations providing the absolute most good to the most people.

I don't really have much to comment on beyond that, and providing a list of some of the causes that I find worthwhile.

A lot of people who want to get into programming ask this question, and it's not a bad one at all! In this post, I'll try to examine the question and give a thoughtful answer.

I think this question is analogous to an aspiring musician asking “Which instrument should I learn?” The answer depends on your taste and interests. Generally though, I would say the answer is pick one that interests you and that will allow you to create the projects you want to create. If you like punk rock music, you should probably pick up drums, bass or electric guitar and not oboe or harp, right? If you're into data science, think Python or R, but probably not C++ or Perl (side note: with my recent experiences with the language, I don't think I would recommend anyone learn Perl).

If a language, like Javascript, piques your interests then go for it! Depending on your goals for your own programming practice, it's likely you will learn a number of languages as you continue your journey. Don't feel like the first language you learn will be the only language you learn, or that it will limit your options in the future. Also, if you don't like Javascript, you probably don't have to continue learning it. You can put it down for a while and see what else is out there. In fact, I would recommend looking at lots of different languages when you're first starting out, because then you're more likely to find one that “clicks” and that lets you express the ideas you're trying to express, or accomplish your tasks better.

If you're completely undecided, on the fence, or without any meaningful data points, you should think about which languages are popular. Not that this is a popularity contest, but it stands to reason that programming languages get popular for a reason. They're probably useful for one or more tasks that lots of people want to get done. Additionally, languages with more popularity are likely to have bigger communities of developers writing blog posts, tools, libraries, and StackOverflow answers. While you're learning, these can all be amazing resources.

Finally, for my own recommendation, I would personally suggest Javascript or Python. Javascript is great because with a few lines of it you can bend web pages to your will. It's also available as a “server side” language thanks to NodeJS. Python, on the other hand, is very general purpose and can be used to write web applications too (see my last post on “What is a web application?”), process data and images, and nowadays is used for all kinds of Artificial Intelligence and especially Machine Learning projects.

As I said in the beginning of this post, you should research some languages, maybe try a few out, and ultimately find one that fits your general aesthetic and most importantly that lets you build the projects you want to build. You're only going to get better at programming with practice, and you're more likely to practice if you have a significant, meaningful project to work on. If you're excited to come back to that code editor day after day, you will learn more and faster than any other factor intrinsic to the language.

I hope this helps some people out there, and if you have any feedback, I'm @audiodude@tiny.tilde.website on Mastodon. Cheers!

This post attempts to answer the question posed in the title. It is aimed at beginning or aspiring web developers, or even those who aren't developers but wish to gain a deeper understanding of the terminology. Web applications versus static websites versus dynamic websites will be discussed.

What is a web application? Generally a web application is considered to be any website which has advanced or dynamic functionality which allows users to complete tasks or view or enter data. So for example, the websites at www.facebook.com and twitter.com are web applications. That's not to say that Facebook and Twitter themselves are simply web applications. They would in fact probably be considered social media “platforms”, since they can be accessed across multiple devices and for a myriad of purposes. Perhaps a better example is Fandango, a web application which allows users to search for movies, find showtimes, and buy tickets. Google is a web application, as is Wikipedia.

A web application is usually classified as such in contrast to a simple website. A website is a collection of web pages that can be accessed using a web browser, that usually offers no or limited dynamic interactivity and functionality. A good example is the homepage of the late Stephen Hawking. This site provides information that is organized according to a certain method, including text and images. However, there are no tasks that a user could complete on this site. There is no way for end users to enter data.

Websites can further be classified as static or dynamic. Put simply, a static site is one that doesn't change each time it is viewed, such as this list of bookmarks. It's always the same list, and almost certainly the HTML (code) for this page exists as a single file on a server somewhere. When you request the page using your web browser, the server grabs the file off disk and sends it back to your browser “as is”.

A dynamic website, on the other hand, features content that potentially changes every time it is viewed. A good example is the CNN homepage. It's not a web application, because there's no interactive way to enter data or complete a task. But it changes by the moment as news stories break or fall out of popularity. When your web browser requests cnn.com, the server doesn't return a preset file containing the code. Rather, one or more programs run on the server, and the end result (output) of the process is the HTML that gets sent back to your browser.

So what about that Stephen Hawking site, is it dynamic or static? Well, although the information on it doesn't change nearly as regularly as cnn.com, it is probably a dynamic website. It is likely that the people who run the Hawking site are using a Content Management System so they can more easily change and update the page. And so although the site might conceivably be implemented using static files, it is in fact a dynamic site.

The fact is, almost all website are dynamic. And the most useful ones are actually web applications. Other examples of web applications are Google Calendar, Reddit, and Netflix (which doesn't allow data entry, but allows for rich searching and filtering features).

Hopefully this article was useful, and feel free to send feedback to @audiodude@tiny.tilde.website on Mastodon.

What's the best thing to do once you've started to blog and written a few posts? Change platforms, of course! It seems like every blogger is always looking for a new platform, with the hope that it will somehow make them a better, more prolific writer. No doubt it rarely turns out that way.

But here I am, in the same boat, trying to evaluate new blogging platforms and plan a migration strategy for them.

As a background, back when I was using Soundcloud extensively I “realized” that Medium does the same for blog posts that Soundcloud does for songs: it provides a centralized repository across multiple different authors. This potentially allows for “cross-pollination” as readers of a certain blogger find related articles from, gee golly, maybe me!

Of course, this never happened on Soundcloud, in the 8+ years I've been on it. And it hasn't happened on Medium either. My most popular medium post is this tutorial on how to set up your own Mastodon instance. It still gets 20-40 views a week, 18 months later. I'm proud I produced a piece of writing that has helped many people. But honestly, the views on that article haven't even led to views on my own other articles. Never mind “cross-pollination”.

That, and considering the recent article on “Medium is a poor choice for blogging” which was posted to Hacker News, makes me rethink my platform of choice.

Now this is a bit disingenuous, because I've already been using write.as for the last few “blog” articles I've posted (I use that term loosely for the material I've put on write.as).

Write.as provides a distraction free editor, markdown based formatting, a “blog” collection for my posts, individual post reading pages also without distraction, and is completely free. That's a great number of features, and they hit on several that are important to me.

Another alternative would be to create a static Jekyll site. But do I really want to deal with Liquid templates? I feel like I'm fed up with Jekyll, even though I've used it on many projects (gallery.travisbriggs.com comes to mind).

So do I use another static site generator? Then I have to go through the trouble of figuring out how to use the generators templating engine, how to set up an index of posts, how to display individual posts, how to create snippets of posts, how to format dates on posts, etc, etc. It's a lot of stuff, and in the end, I end up with a site that is identical to if I used Jekyll.

An additional issue with Jekyll or static site generators is that they generally don't come with any styling. Although I'm experienced at implementing pixel perfect websites given designs and mocks, I actually don't have much experience creating such mocks to begin with. So any site I create with a static generator is likely to look awful. But then again, if you take write.as as a baseline, I can't really do worse than that. Though I would want to make sure my site is responsive for mobile.

This entire discussion is also predicated on the idea that I actually should continue blogging in the first place. Continue is kind of a strong word there, of course, since I've generally been producing one article every couple of months. I wrote in September of 2017 that “My Blog is a Liability”. The TLDR of that post is that no one reads this stuff anyways, but if they wanted to find some damning piece of information about me, there would be plenty of potential things to find.

So my options, as I see them are:

  1. Continue writing on Medium (probably not going to happen).
  2. Continue writing on write.as
  3. Start a brand new blog with static site generator
  4. Quit blogging altogether

Of these options, 2 and 4 look the best to me.

Update (2018-11-13): I stated in this post that write.as is free, but apparently at some point I signed up for the $10/year plan. I can't remember why I did.

Javascript is a programming language that is used primarily on the web. It is interpreted by web browsers in order to process and display data on web pages. Javascript is also known as ECMAScript, after the standard that encompasses a formal definition of the language.

In 2018, Javascript usage goes beyond the web itself and includes many so-called “backend” applications, written in frameworks such as Node.js. Many people learn Javascript as their first programming language, while working on websites and the web. Javascript is also known to be a somewhat frustrating language to work with, because it lacks certain features such as “static typing”. One variation of Javascript that includes type information is called, appropriately, Typescript. Typescript was developed by engineers at Microsoft in order to create a version of Javascript that includes type information.

The “type” of a variable or function is basically the format of the information that it contains or returns. The number 123 is a “number” in this sense, whereas the letters “abc” are considered a “string”. By assigning data types to your variables, you can automatically check whether or not you are passing the right “type” of thing into a function or method. So for example, what if you had a Person object that had a setName method? You wouldn't want to set the person's name to a number, or to an Array. You'd want to set it to a string. The Typescript compiler can let you know when you've accidentally tried to pass such nonsense to a function that doesn't accept it.