Resolving "synology dsm insufficient system capacity for update"
Lately I’ve been having issues upgrading the DSM version on my Synology DS418 play. The updater refused to download/start the update with the error “Insufficient system capacity for update”.
DSM update error The previous time I had this error I tried messing around with files on my root partition until the error disappeared. I can’t remember the details but it was a lot of trial and error, and in general shouldn’t be necessary.…
Read more ⟶
Clippan CouchDB cli
I love CouchDB. To me it’s a simple, easy to understand document store with predictable, reliable master-master synchronization/replication and, when needed, high availability. And it can easily be extended beyond basic use cases through views. It can be fully controlled and used using regular HTTP (REST) requests
It also has a fantastic web based admin interface, “Fauxton”.
However, it doesn’t really have a cli (beyond using curl with some tricks). So I wrote one: clippan.…
Read more ⟶
Go Locking Pitfall
Can you see (and explain) the issue with the following (slightly contrived) code?
package main import ( "fmt" "sync" ) type Example struct { m sync.RWMutex a int } func (e *Example) ReadA() int { defer e.m.RUnlock() e.m.RLock() return e.a } func (e *Example) WorkWithA() int { defer e.m.RUnlock() e.m.RLock() val := e.ReadA() val += 1 return val } func (e *Example) UpdateA(newA int) { defer e.…
Read more ⟶