The Crow Collective

Latest on The Crow Collective

Read the latest posts from The Crow Collective.

from Ari's Repository

Some time ago I started really running into the limitations of Python as a primary language to work with. Between the complexities of packaging and shipping a Python project to the slow run time by comparison to compiled languages (inb4 python isn't slow it's your code). After nearly a decade using Python for nearly everything, I finally decided to make the switch to something else.

A silly gopher zooms across the screen

Enter Go, stage left.

I tend to prefer simple solutions that imply great complexity. When comparing the options between C-likes, Rust, and Go, I ended up really being drawn to the sheer simplicity of the Go language. With only 25 keywords and a growing number of services that I use and love being built on Go, I was sold. After a decade of working with dynamically typed languages that will do almost anything, I was looking for something more declarative that would force me to design my data and lifecycle before I wrote code.

Python is great for prototyping, but a headache to revise and refine. Go takes longer to prototype, but makes revising and refining feel like a breeze.

Yes, Python is a wonderful language for prototyping. Yes, Python has an amazing ecosystem with solutions for just about any problem. But Python also makes some choices that feel... antiquated at best. For example, want to write docs that comply with the languages standards? Better learn this massive library with a million options! Want to do some basic http networking/API building? You should probably download a framework for that. Want to write unit tests for your project? You probably want pytest. Want to compile and distribute an immutable executable? You can if you try hard enough...

Go makes sensible choices for all of these issues. Want to write docs? Just add comments with plain language. Want to include tests? The built in testing conventions are batteries included. Want to do some API building? The standard library has you covered. Want to compile to a binary? Just hit go build. Every time I try to do something, the tooling is just better. Even the third party tooling feels better.

Python feels like a fully stocked tool shed. Go feels like a select few versatile tools that are built to last.

Most importantly, Go was built for the age of concurrency. Utilizing asynchronous processing isn't just a feature added to the language, it was a core design principle from the ground up. This really started to appeal to me after trying to write a python script to manage metadata on tens of thousands of raw photographs. The script, while fairly simple when implemented synchronously, became exceedingly difficult to maintain when implementing it asynchronously. It was entirely possible, but what was a sub 100 line script quickly bloomed into a project with object inheritance and more complexity than I care admit.

Reimplementing an asyncio python script as a go program resulted than fewer lines and a more efficient runtime.

As I've continued to port various scripts from python to go, I've seen this pattern repeat time and time again. When doing something well and quickly is more important than fast prototyping, Go reins supreme.

If you'd like to see my first project beyond a simple script, see pingo – my simple latency charting tool for the command line.

 
Read more...

from Ari's Repository

I've gone ahead and gotten a Gogs instance up at git.crowcollective.space for publicly hosting our useful code tidbits and projects where applicable.

Really, this is so that I can set up a reliable/easy to use distribution point for pingo and (eventually) my simple issue tracking software.

For now it will be pretty quiet. It's a private instance for members of this collective and our friends after all. Don't expect a lot.

 
Read more...

from Collective Announcements

We have some pretty big plans for this space, and we can't wait to start including you, dear reader, into what we've been working on.

In the coming weeks, we will be sharing a number of simple CLI & TUI utilities written in Go, a re-imagining of a previously released photo-zine, a number of essay's Emi has been working on for a while, and much more.

Here's a bit more about what's coming!

Transcend 2024 (Redux)

Ari has been working on a remake of her Transcend 2024 photo-zine, with higher resolution printing templates, a new distribution point, and (hopefully) a limited print run!

The original run of the zine was produced using low-quality xerox's from the library. Each zine was printed on a single 8.5”x11” paper, single sided, and hand folded over the course of a few weeks. A print template for a larger, higher resolution, and multi-page document is long overdue. Moreover, the original photos were taken with a sepia color treatment as an artistic choice, which the original printing was not able to replicate (translating each photo to a limited contrast black and white).

Several customers noted legibility issues with the original issue due to image and font size. It is my aim to resolve these however well I can given my limited material resources. Moreover, it was always the intention to release the print ready files for both mini and full size self-printed zine distribution. The redux will provide higher quality open source standard files for no cost.

Now more than ever, I feel this zine has at least something worth being said. – Ari

Retro Reviews

Eric has been working on a review of Ari's “Death & Rebirth”, with additional artist commentary!

The story of the production on this record is just so interesting. It'll be interesting to write down my thoughts on it! – Eric

Not much to say on this front as of yet, more to come!

A simple, flat file based TUI for managing issues

Ari has been working on a TUI implemented in Go of a simple issue tracking solution based on the Poorman's Issue Tracker!

issues-go (or possibly tissues, I'm undecided), is a simple TUI for managing plain text flat file data structures on disk for tracking issues in code. While the software can work for just about any “todo” like structure, it is designed to make life easier for low-scale and low-tech software developers.

Designed with VCS integration, speed, and portability in mind, the project aims to provide an easier to implement solution. Compiling to less than ~10mb to a single stateless binary, it aims to be incredibly portable and able to run on just about any modern hardware, without the need for a centralized server. -Ari

A TUI for displaying latency as a chart

Ari has also been developing a simple TUI application written in Go for displaying ping results on a chart – therefore helping developers and gamers determine what is going on with their latency. She's made it before in many other languages, but this is the first time it's worth sharing – or so she says!

pingo is a Go reimagining of a previous implementation of this latency charting solution written in python, pingstats. Where pingstats was slow, under-performant, and buggy, pingo is limited in scope, fast, and highly tested. Furthermore, it re-does what pingstats tried to do, becoming an extensible module for use in subsequent projects.

Where the design ethos of pingo truly diverges from pingstats however is in its sheer simplicity of scope. pingo just shows latency values on a chart, and lets the user include it in other terminal applications. As such, the project does not currently target Windows based platforms.

A Public Git Repository

Ari is currently hacking away at what will become our git endpoint. She's caught between hosting a full-blown Gogs instance that mirrors our internal repositories, or a much simpler Soft-Serve based solution – with much fewer bells and whistles.

More on this topic very soon.

For our initial repository hosting, see git.crowcollective.space

 
Read more...

from Collective Announcements

We feel it is only right to give you, dear reader, a vague understanding of our goals.

Foreward

No one voice fully represents a whole truth of what The Crow Collective is, and therefore it is vital that I own my role. As the primary writer and community builder of The Crow Collective I, Emily (she/they) acknowledge that I occupy both the space of a white colonialist on Turtle Island, and the descendant of members of the Metis Nation. I walk through the world through a number of dualities, and work to represent this in my writing.

Mission Statement

The Crow Collective aims to use the dreaming of the mad, the crippled, and the ostracized to envision a better world. Through careful planning, bolstering resiliency through solidarity, and the power of joy in all its queer and mad ways. We aim to achieve this future through the merging of art, technology, and radical reimagining of what defines the status quo.

Art, joy, and creation is how we engage directly with changing the world.

Signed, – The Crow Collective

 
Read more...