Moving From Hugo to Write.as
With the migration pretty much complete, I figured it'd be fun to write about how I did it.
With the migration pretty much complete, I figured it'd be fun to write about how I did it.
I'm thrilled to announce the release of [WriteFreely for iOS] on the App Store. 🚀
Hot on the heels of the WriteFreely Swift Package, I'm kicking off another fun open-source project: building a WriteFreely client for all Apple platforms as a SwiftUI multiplatform app.
I've written about the project a bit more here, where I'm sharing updates on the WriteFreely/Write.as work I do. If WWDC got you interested in learning more about multiplatform apps and SwiftUI, join me in building this! The goal is to go from what you see in the GitHub project today to a functional app by the end of August. Developers of any level of experience are welcome!
This work will have two tracks — building the client app, which will be the bulk of the work, and improving the Swift package. Personally, I'm more excited about SwiftUI and multiplatform apps than I've been about other tech stacks in a long time.
That said, one of the reasons Per has been stagnating for as long as it did was because I got bitten by the Swift 2 → 3 transition, which kinda broke everything. I'm hoping that it'll be smoother for SwiftUI as it's improved and extended over the next few years.
More TK!
It's been a while since I posted an update here, and I wanted to announce a new project: a WriteFreely Swift package that you can drop into your Mac and iOS apps.
You can find it here: https://github.com/writeas/writefreely-swift
WriteFreely is an open-source platform for writing on the web. It powers the Write.as service (find me here!), and lets you build writing communities on the web.
I was introduced to Write.as and WriteFreely while working with Glitch, where I got to chat about the service and its principles with Matt and CJ. Matt wrote a thoughtful post on Glimmer about the importance of privacy for creating on the web, and CJ built a tonne of cool sample apps that connected to the Write.as service for their Glitch team.
This project represents a couple of firsts for me:
URLSession
and Result
in SwiftRight now, it's an alpha/developer-preview release. There's a lot of room for improvement here, and I'm looking forward to working towards a 1.0 with the WF community.
As I mention in this forum topic and my Write.as post, the design for the WriteFreelyClient
is to leverage completion blocks that return a Result
tuple with either a User
, Post
, or Collection
(or an array of these types where that makes sense), or an Error
on failure. That makes it pretty easy to build completion handlers:
func loginHandler(result: (Result<User, Error>)) {
do {
let user = try result.get()
print("Hello, \(user.username)!")
} catch {
print(error)
}
}
guard let url = URL(string: "https://your.writefreely.host/") else { fatalError() }
let client = WriteFreelyClient(for: url)
client.login(username: "username", password: "password", completion: loginHandler)
Good question! There are definitely some major to-do items that are obvious to me:
WriteFreelyClient
public methodsMostly, though, I'm excited for people to try it out and let me know how it works for them!