They are very good for defining API boundaries, in vince we only use them for configuration and admin structure. We use Roaring Bitmap based storage, so fundamental units persisted are Bitmap containers.
> Also why are you using pebble exactly?
Well, vince is write heavy and any LSM based key value store would have been nice. It happens pebble is the best option for us.
Also, we don't use transactions (We batch writes and use snapshots for reads). Combining with the fact we rely on pebble batch Merge api.
The merge api allows us to do efficient updates. Since we only store bitmap containers, when doing update we just do a container union of observed values of a key.
I pitched him to use our free country database because of MaxMind's EULA issues. MaxMind does not permit distribution of the database and requires end users to use their own token. Moreover, they actually charge thousands of dollars when you distribute the "free" database with a commercial intent.
Now, we have a free IP to Country database that we offer under a straight CC-BY-SA 4.0 license without an EULA. It is free, comes with daily updates, has full accuracy, and you can even commercially redistribute the database (via providing us an attribution).
I understand we do not have a free city database to offer, nor is our database lightweight because we have full accuracy. But you can check it out if you are interested. We do have a version with ASN (ISP) information as well.
I will share my story with you. Hopeful it will inspire you to keep trying and never give up.
So, I graduated in 2013 with BCom in Finance. I'm short sighted( chronic one, have been like this for more than 10 years), I have hearing impairment and to top it up I wasn't that good with my grades either so poor GPA.
For context, I had to pay TSH 10000 for someone to open an email for me so I can apply for college loan, meaning I never had any kind of access to computers until I was in college.
Fast forward, I graduated. The only valuable thing I had is a Laptop my sister bought for me since I couldn't attend lectures( can't see , can't hear and no one cares anyways) and I have to give myself the an education and needed to survive 3 years. This opened doors to the world of the World Wide Web, I read Wikipedia, mastered the art of googling and all those tricks to get the right information.
So, back home after college. There was no way for me to get a job, because.
* I can't last past the first screening , I had issues with communication
* I sucked at finance. I self educated myself so I was picky on what to learn, the jobs on the other hand were looking for people who had high grades and balanced accounts in their heads( pun intended)
It was me and my laptop, I gave up the prospect of being employed. I was too depressed to leave my room. So, I started programming to kill time and keep at bay the thought of suicide.
I started with PHP after playing for it for a while I wasn't that impressed I moved to Python, then Ruby then Erlang. Along the way I was learning and experimenting with all kinds of technologies I can grab for free on the internet be it CSS, HTML, Sass, etc.
Back then there was chronic power outages, so blackout were daily.
My routine was
* Leave the lights on,
* Wake up when the lights are on( the power is back), and start coding.
* Sleep when the power goes off ( blackout )
* Repeat the above steps for days in days out
I was earning 0, I decided to look for programming gig, I was depressed even more. there are only PHP shops here, in one occasion the lead engineer of one shop told me python was not a programming language.
When all hopes were lost, I came across this language called Go( Golang ). The way I was productive in it inspired me to think about building my own apps one day. So, I started sharing my projects on github. I was writing thousands of lines of Go like crazy. Just chasing the dead dreams. I can't remember how many unfinished ideas there was.
It was't until 2015 I decided to sum up my Go experinece into a little project I called utron. Utron was MVC framework for Go, which I hand rolled and loved, It caught attention of redditors and landed here on HN.
I landed my first gig november the same year. I moved to my own place and I have been independent ever since.
SUMMARY: Time is generous to all of us, keep doing what you feel is the right thing to do.
CONTEXT: I still program in Go, I'm probably the only professional Go programmer in my country (Tanzania) according to Github, folks here have no idea what I'm up to but that never stopped me from believing.
I have been thinking that maybe I was wrong on what I thought I did to become a Programmer.
Probably, It wasn't the right answers I found on google, or the help I got from friends that made me to learn.
Perhaps it is the wrong solutions, wrong implementations, bad design choices that made me learn. The main focus is making it right, but there are thousand ways of making it wrong.
What I'm trying to say is, maybe this story about Thomas Edison( I picked it up from the internet a while ago so I don't have the link for it, I'm not so sure if he even actually said this ).
"I have not failed 1,000 times. I have
successfully discovered 1,000 ways to NOT make a light bulb."
So, fail fast, fail often until you realize your next implementation won't be subject to your previous failures then you will learn( and probably be enlightened)
I looked through the project and it is cryptic indeed.
I will try to digest a little bit for people who aren't familiar with Go and by any chance read the project's README
- The examples you see there with commands like `./put ...` `./get ...` are actual Go command line apps found in the `cmd` directory.
What I mean is there are two command line applications which you actually might need to build separately one named `put` the other `get` . What they do, oh! well , never mind it should be crypting stuffs.
After being tasked to do devops for like 6 months. I understand the pain of having more secrets than those of the secret agencies we see on the movies.
Something that turn out to be true most of the times is, secrets should always be secrets. Managing secrets is supposed to be a secret.
I find the Configuration on the README to be full of secrets I mean passwords , API keys e.t.c. And wondering if cryptic is aware of that and how it is going to address this.
With my little understanding about security. I have a feeling that In some cases encryption is mistaken with secure.
> After being tasked to do devops for like 6 months. I understand the pain of having more secrets than those of the secret agencies we see on the movies.
I would highly recommend you read up on this thing called DevOps and what it is about. Start here:https://en.wikipedia.org/wiki/DevOps. You don't just "do devops".
That's what I currently do. It's really just a minor annoyance, but it is an extra layer of friction for any newcomers to the language (and a pretty bad first impression)
RAM : 1GB
STORAGE: 25 GB
so far bandwidth used is 3.6GB
So, you can successful deploy vince on low spec servers depending on your expected traffic.