dentonjacobs.com logo

dentonjacobs.com





  1. Micropub Endpoint: Part 1

    Continuing updates on adding a Micropub endpoint to this very site.

    After sorting out the questions surrounding the initial design, I was ready to begin building. I did some updating and extending of the code in place for authenticating with my domain using IndieAuth. That is now working correctly. I am able to log into the Indie Web site and Quill using Indie Auth. It’s pretty darn great.

    Logging into Quill is one thing, but actually posting with it is something altogther different. I am up to the point in the process where I have received an access token from Indie Auth that is tied to Quill and with scope for creating and updating my site. I can validate that token by sending a request to Indie Auth and parsing the response. Next I need to send the appropriate response back to Quill to allow or deny access.

    Assuming everything up to this point is working correctly, the next step is accepting the posts to the micropub endpoint, parsing the posted data, and then creating or updating blog posts with that data. That will be the focus of the next post in this indeterminately long series on adding a Micropub endpoint to dentonjacobs.com.

    Finally, I made a couple of other modifications to the site over the past couple of days, so I thought I’d share them. First, the RSS feeds for this site had been broken for who knows how long. That is no longer true; I’ve fixed them. Both the traditional and alternate versions are working again. Also, the robots.txt file was not being properly delivered to curious consumers. That has been fixed.

    A few little gems to make the site better, while also incrementally getting closer to a Micropub endpoint. Not bad, if I do so say myself.

     #indieweb


  2. Micropub Endpoint: Part 0

    Before I can really start building anything, I have to understand what it is that I’m building. Step 0, design. As such, here are my thoughts for what I want to accomplish. I definitely want to start small, building the most impactful features, and build momentum while I continue to make progress.

    I post very infrequently. I guess, in truth, I want that to change. I think sharing more will help me become a better person. I’ve talked about this before, but I want to remove friction from posting. Sure, Twitter doesn’t have much friction, but Twitter has its issues. Among the biggest for me is that I want to own my data. So, here I am posting the old way about how to do it the new way.

    Micropub is an open standard for posting content. There are existing web clients and, at the time of this post, at least one iOS app in development for posting content to a blog and syndicating that content to any number of services. It’s becoming a de facto standard in the Indie Web world. It was even created and is maintained by an Indie Web Camp Co-founder. It’s also used by Micro.blog. I love the idea.

    However, the way Koala is built, it currently expects everything for a post to be stored in a markdown file with some YAML headers. This has worked for me so far, but I’m not sure that’s the way Micropub works. With Micropub, data is transmitted as form-data or JSON.

    So I come to a decision point. Does the endpoint on my site convert submitted data to a markdown file and maintain the current state? Or should the app be enhanced to also read a JSON file and convert to HTML at the time of render? The former is probably easier and quicker to implement, while the latter is probably more feature-rich and extensible for the future. Likes, comments, web mentions, etc., seem better suited with JSON, at least right now. But I haven’t truly investigated that yet.

    Markdown makes sense for writing, as it’s fast, simple, portable and easily converted to HTML for display on the web. It was an easy choice for getting started. Now that I’m looking to add more functionality, I wonder if JSON is a better storage mechanism. It has many of the same attributes: fast, portable, easily converted. It may not be as simple as pure Markdown, but it could contain Markdown as part of the content. I have to decide if that’s too work to bite off right now, or if it’s better to convert before the next steps.

    I’m set on maintaining a database-less site and application. Databases are great, but I’m not trying to mess with that right now. I want simple, portable data that doesn’t require a database.

    Reading about p3k and file format used, I’m leaning toward sticking with the current Markdown structure, and having the app update the YAML section as needed. I’m not sure how I’ll handle comments or web mentions, but I suppose that can be addressed when I’m ready for them.

    So I’ve decided to maintain the current structure of using a Markdown file to indicate a post, and using YAML headers for metadata about the post. Next, I have to build the Micropub endpoint. To authenticate against this endpoint, I will use IndieAuth for generating tokens. So, the first part to build is a way to validate tokens.

    Once this has been tackled, I can begin the process of handling posts made to the Micropub endpoint. I plan to start with what will likely be the most common use case: h=entry posts. This will allow me to create notes and articles on my site from another app or service. Seems like the most reasonable place to start.

    In the future, I hope to be able to support other types of content, including like, reply, repost, and other types of content, including possibly h=cite, h=card, and h=event.

    This post has helped me nail down a plan: I will build a Micropub endpoint. The endpoint will start with authentication and authorization, and will validate tokens. Once validated, the endpoint will process the posted JSON data and convert it to a Markdown file with various bits of metadata stored as a YAML header. This file will be picked up by Koala, converted to HTML and used for display to the caller.

    Decicion made, now to build!

     #indieweb

  3. Hey, maybe I could post some updates as I go?

    Huh. Not exactly a novel idea, but one that could keep me motivated and work to build up a practice.


  4. In 2018, my goal for this site is to add a Micropub endpoint. With this, I can reduce the friction and post more frequently. This also opens many doors for using existing tools, and possibly even services like Micro.blog.

    Yes, I know. More tinkering and less posting. But who is even upset by that?


  5. Blogging in 2016

    This is kinda old now, but I’ve finally gotten around to posting about it.

    Here, I control my words. Nobody can shut this site down, run annoying ads on it, or sell it to a phone company. Nobody can tell me what I can or can’t say, and I have complete control over the way it’s displayed. Nobody except me can change the URL structure, breaking 14 years of links to content on the web.

    I found this link via some method–probably a post on Twitter–and it moved me to write some words. I read stuff like this and I get inspired.

    I have owned my domain for over 15 years. During that time, it has gone through a variety of changes. For probably half of that time it has served no web content at all. And in the other half, it has been hosted with various services, and then migrated to a hosting platform where I have tremendous control. For a long-time, it was my own installation of WordPress, then a static webpage–only before and after being an instance of Jekyll. And now, it’s a modified, customized fork of Casey Liss’s Camel.

    I have spent a lot of time on this site[1]. There have been “Redesigns” multiple times. I have purchased an ssl certificate and set up the site to run on HTTPS[2]. I have dedicated hours to thinking about and planning modifications to the platform so the site can be more Indie Web compliant. I have successfully set up syndication to Twitter, and previously, Facebook. Hell, I used to own a vanity short domain and set up short links for sharing on social media that would redirect to the post on my domain[3].

    Every once in a while, I come across a post like the one above. I read it and get excited. I ride a wave of motivation and spend time working on this site to add features, or plan workflows with the hopes of making posting easier. I spend hours on it. I get excited, and jealous. I’m jealous of the cool stuff people do to keep their site in tip-top shape, the new design elements they implement, or the magic they’ve implemented to spread their words, all while still maintaining control and ownership on their own content and website.

    I have recently discovered something else that makes me jealous. Re-read that first sentence in the quote above, especially the last two words. This author, these people who write about their blogs, have something to say. I’m jealous of that. I’m sure I have something to say, but I’m really poor about actually saying. In real life, or on the internet. So sometimes it feels like I have nothing to say.

    Maybe by spending time and effort on the website, I’m hoping to inspire myself to say something. Given that no one reads blogs anymore, I’m sure no one would see it if I did post a message. But hey, who knows? And maybe that will give me the freedom and permission to say something?

    Time will tell.

    Update

    2016-12-13:

    Hey, I’ve secured a new short domain: dcj.im. And now you can find short links for most the posts on this site on the bottom of each page, over on the left of the side. Everything after the dcj.im has a purpose, as it’s mostly been stolen inspired by other, far smarter people on the internet. The main inspiration was Tantek Çelik’s Whistle. Shocking exactly no one, he’s written up all kinds of details on it that you can read about here, if you’re interested.

    Also, I haven’t written anything else new. Funny, huh?


    1. I don’t even want to think of the hours required to upgrade packages, fix bugs and learn how to use this tool again. ↩︎

    2. More than likely, I’ve messed up the configuration somehow. I’m open to fixing it, if you have suggestions. ↩︎

    3. Yup, I got lazy and/or cheap, gave up registration, and now someone else has registered it. ↩︎