How to use Wingman
How to create your first blog using "wng"
v0.0.0 - The first steps to a new platform
I first started Wingman after getting caught up in the excitement of discovering the Gopher protocol for myself. Gopher), for those unaware, is an alternative protocol to HTTP that facilitates the transfer of text and not much else. that means no images and most importantly, no JavaScript. There’s no reason for it to be implemented these days by anyone other than hobbiests trying to escape the corporatized world of the web, but its core design (of simple sites and hyperlinks) was inspiring. I grew up in the transition between Web 1.0 to 2.0 and thinking about how simple sites had been reminded me of how little we really need in the sites we use today. Javascript, advanced style sheets, and Client Side Rendering are obfusications that distract from the core purprose of the web, and often add unneccessary development time to any site that isn’t a service. So, I started Wingman.
Wingman was supposed to be a static site builder that would support the Gopher, Gemini, and HTTP protocols. It had a simple API and would generate your entire site into a single HTML file and stylesheet. Each article would be linked as an id and there would be scant else attached. This was fine, and in all regards an easy project. Except for the fact that I decided to write the program in Rust. Rust is quite the enjoyable language, but due to its low level nature writing in it can be obtuse. Especially for web development where most of the work comes from automating text generation, field serialization/deserialization, and hydrating templates. It was annoying to make work in Rust, and the benefits of the language were much outweighed by the costs. So, I took a break. Really, I gave up. But a few months later after discovering and teaching myself Go I realized that it was the perfect contender for Wingman. A rich templating library, cross-platform compilation, a GC designed for network applications and a simple syntax that made iteration adn development a breeze. Compared to the slow and laborous Rust, Go felt like a pencil on a sketchpad where I could write my ideas into being with little setup.
So, I’ve rewritten Wingman, and to reflect this change I’ve created a new repository and name for the executable: wng. The project will continue to be referred to as Wingman, but for all future development and projects please use the wng binary. Not the Wingman binary you can find on crates.io. The project has also switche to an MIT license. I don’t care if you repackage this app. Just be sure to give me credit.
How to use Wingman
$ init
- initializes a new blog in an existing directory
$ new <blog name>
- creates a new directory and initilizes a blog in it. Uses the provided path.
$ build
- creates the production build for your project (with all bundled assets) in a dist
folder.
$ dev
- starts the development server. Currently just rebuilds the source build.json file dynamically but should include a production grade web server in the future.
The commands for Wingman are pretty narrow so far and the functionality is minmimal, but you can build a functioning blog using it at v0.0.0 which is pretty impressive. This entire site is build with it. More features will be added and all updates will be published here.