mechazoidal + golang   78

Experiment, Simplify, Ship - The Go Blog
Note how they evolved the original Plan 9 interfaces, and coupled them to unix
PR: note their general evolution tactics, along with package management
piperesearch  Golang  2019  pmz 
22 days ago by mechazoidal
Go Concurrency Patterns: Pipelines and cancellation - The Go Blog
wrs@lobsters: "this blog post should just be part of the standard library, not a blog post"
pipeline  piperesearch  Golang  concurrency 
23 days ago by mechazoidal
GitHub - antonmedv/expr: Evaluate expression in Go
"The purpose of the package is to allow users to use expressions inside configuration for more complex logic. It is a perfect candidate for the foundation of a business rule engine. The idea is to let configure things in a dynamic way without recompile of a program:"
golang  library  repo:github  scripting 
25 days ago by mechazoidal
GitHub - tomnomnom/gron: Make JSON greppable!
msn@lobsters: "turns tree-structured json into the line structured data that unix tools expect and allows you to search and edit it using familiar tools like sed, rather than having to learn jq’s mini-language (that I have to look up every time I need it)."
Golang  json  tools  unix  repo:github 
25 days ago by mechazoidal
GitHub - whyrusleeping/gx: A package management tool
An attempt at an agnostic packaging tool, originally for golang. Uses IPFS by default
ipfs  golang  repo:github  packaging  piperesearch 
11 weeks ago by mechazoidal
GitHub - evilsocket/sum: A specialized database server for linear algebra and machine learning.
PR: not for the data storage, but look at the "oracles": cached search programs sent and stored on the server!
golang  repo:github  piperesearch  database  ai 
april 2019 by mechazoidal
GitHub - hanwen/go-mtpfs: Mount MTP devices over FUSE
"It will expose all storage areas of a device in the mount, and only reads file metadata as needed, making it mount quickly. It uses Android extensions to read/write partial data, so manipulating large files requires no extra space in /tmp.

It has been tested on various flagship devices (Galaxy Nexus, Xoom, Nexus 7). As of Jan. 2013, it uses a pure Go implementation of MTP, which is based on libusb."
mtp  android  fuse  filesystems  repo:github  golang 
april 2019 by mechazoidal
flak - rewriting everything in go
On tedu moving to golang from luajit for his blog/web software

"Keeping dependencies light has had its benefits. I knew I could rewrite everything, having written it the first time. Sometimes one gets trapped by a requirement to use a particularly library’s functionality, and then migrating to a new language requires finding an equivalent replacement."
lua  Golang  webdev  2019 
march 2019 by mechazoidal
On the road to pure Go X11 GUIs
THis is mostly trying to avoid writing wrappers to the big toolkits(along with avoiding cgo), and a running research log of plugging into Wayland/X11 with Golang
Golang  x11  facme  programming 
september 2018 by mechazoidal
The successor to Camlistore, "a set of open source formats, protocols, and software for modeling, storing, searching, sharing and synchronizing data in the post-PC era. Data may be files or objects, tweets or 5TB videos, and you can access it via a phone, browser or FUSE filesystem."
Reference apps are in Go
pmz: inspired a lot by fossil/venti, easy to see how this could be used.
pmz  sync  distributed  golang  unhosted 
august 2018 by mechazoidal
GitHub - xlab/android-go: The android-go project provides a platform for writing native Android apps in Go programming language.
"this project tries to fill the niche by providing a platform that is minimal as possible and respects the bleeding-edge features such as OpenGL ES 3.1, ES 3.2 and of course Vulkan API."
android  golang  repo:github 
august 2018 by mechazoidal
GitHub - driusan/de: A Programmer's Text Editor
"It's kind of like a bastard child of vim and Plan 9's acme editor, because vim feels inadequate on a computer with a mouse after using acme, and acme feels inadequate on a computer with a keyboard after using vi. Like vim, it's a modal editor with syntax highlighting that uses hjkl for movement. Like acme, it attempts to exploit your current OS environment instead of replacing it and tries to make the mouse useful"
editor  golang  software  tools  acme  vim  repo:github  facme 
may 2018 by mechazoidal
Announcing duit: developer ui toolkit
From mjl! Uses devdraw! Could this be adapted anywhere else?
Golang  gui  library  plan9  facme 
april 2018 by mechazoidal
GitHub - gritzko/ron: Replicated Object Notation, a distributed live data format, golang/ragel lib
"RON is information-centric: it aims to liberate the data from its location, storage, application or transport. There is no "master" replica, no "source of truth". Every event has an origin, but every replica is as good as the other one. Every single object, event or data type is uniquely identified and globally referenceable. RON metadata makes objects completely independent of the context. A program may read RON object versions and/or updates from the network, filesystem, database, message bus and/or local cache, in any order, and merge them correctly."
Comes as both Golang source as well as Ragel source.
repo:github  piperesearch  distributed  Golang  ragel  specification  crdt 
april 2018 by mechazoidal
The Cost and Complexity of Cgo | Cockroach Labs
"The experienced cgo-er will probably know this (and might prefer to lightly skim over the remainder of this post absentmindedly), but using cgo comes with some caveats that we’ll discuss below along with our suggested workarounds."
Golang  c  tips 
march 2018 by mechazoidal
research!rsc: Minimal Version Selection (Go & Versioning, Part 4)
Noting the algorithms involved: goal is to stay out of NP-complete, contrary to most other package/build managers
golang  versioning  piperesearch  build 
february 2018 by mechazoidal
I Do Not Like Go | Lobsters
"Go presents the programmer with abstractions traditionally presented by operating systems. Take concurrency, for example. Go gives you goroutines, but takes away threads, and takes away half of processes (you can fork+exec, but not fork). Go gives you the net package instead of the socket interface (the latter is not taked away, but it’s really not supposed to be used by the average program). Go gives you net/http, instead of leaving you searching for nginx, or whatever. Life is good when you use pure Go packages and bad when you use cgo.

The idea is that Go not only has these rich features, but that when you are programming in Go, you don’t have to care about all the OS-level stuff underneath. Go is providing (almost) all abstractions. Go programming is (almost) the same on Windows, OpenBSD and Plan 9. That is why Go programs are generally portable."
programming  lobsters  comment  Golang  osdev  piperesearch  pmz 
february 2018 by mechazoidal
Upspin · Upspin
"open-source project that comprises two main design elements:
- a set of protocols enabling secure, federated sharing using a global naming system;
- reference implementations of tools and services that demonstrate the capabilities.

Using these elements as building blocks, Upspin provides a global name space for all your data and the power to expand that space to include services such as sensors, social media, and more"

This is a Google project released into the wild involving Rob Pike, but do note it requires a single global keyserver.
distributed  filesystems  Golang  piperesearch  upspin 
february 2018 by mechazoidal
Writing a 9P server from scratch
Multipart! Although note that he promises some more docs on the client-side, but this was last touched in 2016.
(note the part about returning 0-length Rread messages for "EOF", which is not documented in manpages)
multipart  9p  programming  golang  pmz  protocol 
august 2017 by mechazoidal
Compiler Explorer
Explore various compiler's generated assembly: C++, Go, Rust, and D are currently supported.
programming  webapp  tools  visualization  compilers  c++  golang  rust  d_language 
may 2017 by mechazoidal
Announcing Rust 1.17 - The Rust Programming Language Blog | Lobsters
"You can start with a computer with zero go compilers, and with some modest effort, build a go compiler. Bootstrapping from zero rust is more difficult, to put it mildly."
Golang  rust  pmz  bootstrapping  lobsters  discussion  comment 
april 2017 by mechazoidal
GitHub - candid82/joker: Small Clojure interpreter and linter
"It’s a Clojure interpreter written in Go, but what I’ve found incredibly useful is how it works as a linter, which you can easily hook to an editor. It really improved my workflow, early catching typos and bugs while I program."
golang  clojure  repo:github  linter 
april 2017 by mechazoidal
go tool trace - Making Pusher
"Do you want to know what your Go program is really doing? go tool trace can show you: it visualizes all the runtime events over a run of your Go program, in exquisite detail. [...] go tool trace is better suited at finding out what your program is doing over time, not in aggregate."
golang  programming  profiling  debugging 
april 2017 by mechazoidal
GitHub - square/grange: A modern subset of the range query language
"implements a modern subset of the range query language. It is an expressive grammar for selecting information out of arbitrary, self-referential metadata. It was developed for querying information about hosts across datacenters."
(note that the original implementation is 'libcrange' , this version differs slightly)
golang  dsl  repo:github  library  piperesearch 
january 2017 by mechazoidal
GitHub - BatchLabs/charlatan: SQL-like Query Language
"a query engine for lists or streams of records in different formats. It natively supports CSV and JSON formats but can easily be extended to others."
golang  dsl  library  repo:github 
january 2017 by mechazoidal
Awesome Go
"A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python."
golang  resource  dsec  libraries 
january 2017 by mechazoidal
GitHub - junegunn/fzf: A command-line fuzzy finder written in Go
See also junegunn/fzf.vim for vim/gvim support.
And remember that you can combine it with rg for great power!
shell  tools  software  repo:github  golang  cli  fzf 
january 2017 by mechazoidal
hga comments on: Modern garbage collection |
the main article is a good high-level analysis of GC, along with criticism of Golang's 1.5 GC claims. This link points to a comment with other books to read on gc
gc  programming  lobsters  comment  golang 
december 2016 by mechazoidal
GitHub - milochristiansen/lua: A Lua 5.3 VM and compiler written in Go.
"This is intended to allow easy embedding into Go programs, with minimal fuss and bother."
(pmz: could be useful as a reference for implementing Lua opcodes in another certain VM)
lua  golang  compilers  vm  programming  repo:github  pmz 
december 2016 by mechazoidal
is go an acceptable cml? -- wingolog
This is part 2 of the guile author's exploration of Concurrent ML's patterns with Go, and what it means. Surprisingly easy to understand!
"So although CML and Go appear to be inter-expressible, maybe a proper solution will base the simple channel send/receive interface on CML rather than the other way around."
piperesearch  programming  Golang  concurrent_ml 
october 2016 by mechazoidal
GitHub - fogleman/ln: 3D line art engine.
"a vector-based 3D renderer written in Go. It is used to produce 2D vector graphics (think SVGs) depicting 3D scenes."
piperesearch  repo:github  software  3d  renderer  golang  tools 
august 2016 by mechazoidal
GitHub - attic-labs/noms: The versioned, forkable, syncable database
"blends the properties of decentralized systems, such as Git, with properties of traditional databases in order to create a general-purpose decentralized database"

Not under active development? Also, appears to just store typed data structures in a Merkle DAG. (and not related to rust's 'nom' parser)
database  piperesearch  golang  repo:github 
august 2016 by mechazoidal
"a Terminal based code/text editor, somewhat inspired by Acme."
golang  programming  acme  editor  terminal  repo:github 
june 2016 by mechazoidal
"Micro, a terminal text editor written in go with syntax highlighting and lua api" includes openbsd exe.
PR: study it to see if it's any good
lua  golang  editor  programming  piperesearch  repo:github  tools 
june 2016 by mechazoidal
"Implementation of Surface Simplification Using Quadric Error Metrics, SIGGRAPH 97, written in Go."
golang  piperesearch  mesh  geometry  math 
may 2016 by mechazoidal
"This Go application captures images from a webcam with support for motion detection support, burst mode, and upload to a remote directory." [using ffmpeg and ImageMagick]
repo:github  programming  webcam  security  golang 
march 2016 by mechazoidal
go channels are bad and you should feel bad |
in short: the _idea_ of CSP/channels is good, but how Go uses them leads to anti-patterns and should only be used sparingly. However, he DOES praise them at the end for M:N threading
(another point from "channels make bad package APIs")
golang  csp  piperesearch  programming  concurrency 
march 2016 by mechazoidal
What Color is Your Function?
@jtolds : "Without being about Go specifically, this blog post much more eloquently than I could lays out exactly why goroutines are Go’s best feature (and incidentally one of the ways Go is better than Rust for some applications)." (the article basically praises goroutines at the end, because "Go has eliminated the distinction between synchronous and asynchronous code"). Futures and promises are praised.

2019 note: remember that he points out threads as a way of solving this problem. But note that Rust is adding an 'async' keyword as well!
piperesearch  golang  concurrency  programming  javascript 
march 2016 by mechazoidal
" an implementation in pure Go of the SP ("Scalable Protocols") protocols. [...] The reference implementation of the SP protocols is available as nanomsg"
good source of examples/glossary for the nanomsg stuff, patterns
golang  piperesearch  zmq  networking  programming  repo:github  pmz 
february 2016 by mechazoidal
Avoiding Reflection (And Such) In Go - iRi
Does Io's differential inheritance let you get away with some of this stuff?
Golang  research  investigate 
january 2016 by mechazoidal
Go: More UNIX than UNIX - iRi
" Correctly, Go does not ship with a "file" interface and force everything into it, regardless of how appropriate it is... instead, it ships with a number of interfaces that describe the elements of what a file may do, and lets you easily compose them as appropriate. [...] Which makes Go more Unix than Unix and more Plan 9 than Plan 9"
golang  piperesearch  pmz  unix  plan9  interface  programming 
january 2016 by mechazoidal
Commands and channels in Clive: Sam is gone.
PR: note their "conventions" that skip some of Sam's one-use commands, in favor of using the pipeline and 9p(ish) at all levels. Note that the conventions expect their "modified" Go channels as described elsewhere. Also note how much this seems to be unconsciously mimicking CMS Pipelines.
golang  piperesearch  programming  plan9  osdev 
july 2015 by mechazoidal
Escher: A language for connecting technologies using pure metaphors
"If it is indeed the case that most things that we program or that we program about are circuits at the end of the day, then it is only appropriate to complement Hoare's model of everything with an appropriate programming language." Related to the "Circuit" cluster-OS.
PR: discussion of reflexes, primitives, and its concept of a "program"
Golang  language  distributed  programming  piperesearch 
april 2015 by mechazoidal
Circuit: Self-managed infrastructure, programmatic monitoring and orchestration
"[...] a minimal distributed operating system that enables programmatic, reactive control over hosts, processes and connections within a compute cluster. [...] The circuit is unique in one respect: Once a circuit cluster is formed, the circuit system itself cannot fail—only individual hosts can. "
PR: compare and contrast with Bloom, although this seems more geared towards web-server clusters. Note its use of an expander-graph algorithm for presence awareness and ordered communication.
Golang  piperesearch  distributed  orchestration  osdev  programming 
april 2015 by mechazoidal
Gogs, an alternative to Gitlab
"a very functional private Git host service."
golang  git  hosting  software  tools 
march 2015 by mechazoidal
Palast der Republik: Exploring Go's Runtime - How a Process Bootstraps Itself - Part I
Excellent deep-dive. Note that while Go's compiler produces ELF binaries, internally they are separate from the classic C runtime, and they have their own startup detection + machine model. In particular, Go defines (P)rocessors, which host (M)achines(OS-level thread/processes), which host (G)oroutines.
golang  programming  assembly  post  pmz  bootstrapping  compilers 
february 2015 by mechazoidal
Suture - Supervisor Trees for Go - iRi
Translating Erlang's supervisor trees to Go--with caveats and explanations. Note the postscript about asynchronous exceptions and "CLispScript" languages.
golang  erlang  programming  piperesearch  concurrency 
september 2014 by mechazoidal
Why Go Is Not Good | Lobsters
jmhodges notes why the JVM can't really do proper CSP, and how golang manages it.
csp  jvm  Golang  lobsters  comment 
july 2014 by mechazoidal
"CSP-style operating system written in Go"
PR: read their paper, note their "ZX" filesystem: incorporates modifications made to Go/CSP-channels, explicit namespace-services, and self-describing directory entries.
Initially ZX came out of the design work on their Octopus environment?
golang  os  plan9  piperesearch  osdev  9p 
june 2014 by mechazoidal
andlabs/ui · GitHub
"a library that aims to provide simple GUI software development in Go. It is based on my libui, a simple cross-platform library that does the same thing, but written in C."
github  Golang  gui 
june 2014 by mechazoidal
Next-generation Plan9/Inferno, "designed for many-core architectures and large-scale SMP systems."
9front's opinion: "Has no bearing on anything but has attracted grant money."
os  plan9  inferno  distributed  osdev  Golang 
february 2014 by mechazoidal
Go Getter Part 3 - Karan Misra
Optimizing a Golang ray tracer; common examples of speeding up go
Golang  C++  raytracer  optimization  cg 
october 2013 by mechazoidal
On Go
Twist ending: Go isn't as nice to code in as Algol-68.
golang  google  language  programming 
august 2011 by mechazoidal
Ever wonder how big the core of Io is? Find out!
J. Tregunna's notes on his "Europa" version of Io, written in Go.
language  post  golang  io_language 
january 2011 by mechazoidal
Jeremy Tregunna's Europa - Codaset
"Europa is an alternative implementation of the Io programming language", using the Go language.
project  golang  language  scripting  io_language 
january 2011 by mechazoidal

related tags

3d  9p  acme  ai  algorithms  android  architecture  archive  article  assembly  book  bootstrapping  build  c  c++  cg  cli  clojure  codegen  color  comment  compilers  concurrency  concurrent_ml  crdt  crowdsourcing  cryptography  csp  database  debugging  design  discussion  distributed  diy  dsec  dsl  d_language  ebook  editor  elasticsearch  embedded  emulator  erlang  facme  files  filesystems  from:medium  fuse  fzf  gc  geometry  git  github  golang  google  gui  hosting  inferno  interface  investigate  io_language  ipfs  javascript  jit  json  jvm  language  libraries  library  linter  list  lobsters  lua  math  mesh  mtp  multipart  nacl  nes  networking  openstreetmap  optimization  orchestration  os  osdev  packaging  parsing  pipeline  piperesearch  plan9  pmz  post  presentation  profiling  programming  project  protocol  ragel  raspberry_pi  raytracer  reference  renderer  repo:github  research  resource  rust  scheme  scripting  security  service  shell  software  specification  sync  terminal  tips  tools  unhosted  unix  upspin  versioning  vim  visualization  vm  web  webapp  webcam  webdev  wikipedia  x11  zmq 

Copy this bookmark: