Hacker Newsnew | past | comments | ask | show | jobs | submit | gernest's commentslogin

The demo, which survived HN hug of death is running on 6$ vultr instance.

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.


Thanks, that is very nice setup.

Does it always pull the latest vince image?

Just FYI, we also have simple helm charts, and the repository is hosted on https://vinceanalytics.com/charts


> Just FYI, we also have simple helm charts, and the repository is hosted on https://vinceanalytics.com/charts

Oh cool, didn't see that in the docs.

> Does it always pull the latest vince image?

Yes haven't specified any tag so should default to latest.


This is one of the reason I created vince.

For reference, the demo is hosted on a 6$ vultr instance, the last 3 days it handled about 11.9K pageviws with 4.3K unique visitors.

I have just checked the vultr dashboard.

Bandwidth = 3.37 GB ,vCPU usage = 1% (yep one percent) , Current charges = 1.06$.

Majority of the bandwidth is for outgoing data serving the dashboard.

I carefully designed vince to be extremely efficient for web analytics workloads.

Please give vince a try.


Thanks,

> Why protocol buffers ?

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.

Bitmap unions are pretty fast and efficient.

I hope I covered all your questions.


It answered them alright, but really opened a few hundred more. I appreciate your time!


When I started working on vince, I thought I could bootstrap a sustainable business, that was about 3 years ago.

My dream for a business is practically dead now. That snippet is a relic of early days of vince and I will remove it.

I am currently looking for work, and will be maintaining vince as usual (I do a lot of open source stuff) since I also use it with my hobby projects.

I'm struggling finding remote roles now, since remote now means Remote US or Remote EU and I'm stuck here in Tanzania.

So, don't worry, I also use vince so I will keep hacking on it.


Makes sense, wish you the best of luck!


Interesting, I just checked the readme. Very similar but looks like it only works with AWS and has a lot of moving pieces.

How do you deal with location data, do you purchase maxmind db license or use their free versions.

Both maxmind and db-ip free versions of city data miss city geo id values, rendering city data useless for many cases.

With vince, I had to index embed the whole city data from geonames database to work around this.


> How do you deal with location data, do you purchase maxmind db license or use their free versions.

> Both maxmind and db-ip free versions of city data miss city geo id values, rendering city data useless for many cases.

I work for IPinfo.

I think you might find my conversation with Goatcounter's dev interesting: https://github.com/arp242/goatcounter/issues/765

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.


Thank you for sharing your awesome story


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".


You can make a sub directory of your `projects` your GOPATH.

Something like `projects/go`

I have multiple GOPATH for personal reasons and use long running tmux sessions which exports the different GOPATH.


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)


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: