I wouldn't dare writing just to say "thank you", it would feel like a no-op wasting people time. Instead, I would rather star the project on github. Did you consider those as thanks?
I have a more radical approach to that : I discard any opinion I see in a press article (that is, most of it, usually), and only focus on new facts the article brings.
I don't mean any disrespect for journalists and I'm deeply thankful for their work (I even considered becoming one, as a kid), but I don't care for their opinion. I did once, before the internet, because opinions were valuable, as the only ones you were exposed to were family's and friends'.
But today, the internet is a massive opinion building/sharing machine. The last thing we need is the press to do it as well, instead it must be the place where we can expect to find facts and fact checking. I don't have any problem with random people sharing their opinion either - it's cool we can do it - but now I expect more from the press.
Now, I'm well aware solving the native ad problem does not solve the real problem : press has hard time keeping afloat. My usual suggestion about that is for browsers to include means for micro-payment (be it using google pay, cryptocurrencies, apple pay, whatever pay, a new standard, I don't care). The main problem with paywalls to me is that they expect users to subscribe for monthly subscriptions, renewed until they're manually cancelled. This is not how people consume news anymore. They come to an article because of its content, they wish to see that content, they don't want to see other articles. We need to allow people to quickly pay a small fee to see a single article, without all the hassle of using a credit card.
Well, it's sad that it didn't worked out for you, but please don't presume the whole world share the same experience :)
I've bought mine 3 years ago, mainly for managing notifications (I was doing business oriented things back then and had a lot of social notifications), and it was immediately worth it : no need to get my hand out of that keyboard to unlock my phone and see a notification I don't care about every 5 minutes (especially frustrating when you're a vim user trying to optimize your hand movement around the keyboard).
Since then, there's three other use cases that make me use the watch every single day for those three years:
* controlling spotify without needing access to my phone when outdoor
* having my up to date grocery list at the wrist any time I feel like shopping (thanks to google keep)
* setting timers through voice control while cooking
That's certainly not as game changing as having a computer vs not having one, but that's still far from completely useless.
Funny, I've set up a RSS reader again just this week.
Prior to that, my main source of information was google feed (when you sweep right on android main screen - for those who don't know it, it's a feed of news curated by google supposed to match our interests). I totally loved it, as it properly detected my interests and shown articles about them even from websites I don't know about.
But lately, I saw more and more posts I wasn't interested in. Well, it always happened, but those made me wondering because they were posts about brands, or very specific products. Was this promoted content? I don't have a clue.
Be it promoted content or not, I realized I was vulnerable: anything could be pushed to me and I would think I see it because I'm interested in it. And I have no way of checking why something appears in my feed.
So I decided to get back to RSS, and realized I could still have the discovery of new sources using... google alerts. I can set a google alerts using the advanced search semantics of google search, and get the result as a RSS feed. This means I discover new sources and I can verify why it appeared (it matches my custom search). Best of both world.
And obviously, I can also subscribe to specific RSS feeds to be sure to not miss something I love.
Additionally, it was not just any tulip that was traded so high, it was a specific strain that was considered especially beautiful and that people did not succeed in systematically reproduce. There was a good reason for that: the beauty was not caused by genes, but by a virus [1][2].
Indeed, it requires auth. The xkcd page nor grandparent were mentioning not requiring auth as a requirement :)
I didn't get this is something GNUnet would allow. I guess it could be a thing... if using GNUnet is easier that registering a drive/dropbox/whatever account.
The main trick is to do an average of word embeddings in a given document, an idea I took from the youtube paper on recommendation engine [1].
I have a separated service that contains the word embeddings, generated with word2vec. The idea is to generate an embedding for the document by making an average of the embeddings of the words it contains, each having a coefficient based on the word's rarity (so, a rarer word has more weight than a stop word).
When saving a document, OpenVoyce is contacting this API and asks to generate an embedding for the document, then it only saves that in its own database (as a "cube" vector of 200 dimensions).
From there, searching for something new is just about asking for an embedding for the search terms and using `cube_distance()` [2] as sort function, it does not require pre-filtering since stop words are already weighted off (although, there is some filtering in the API as it ignores words it doesn't know).
It would still help to be able to define user specific stop words, though. For example, on Quuu's OpenVoyce, most suggestions are about adding new categories, so "category" should be considered a stop word, that's something I plan to implement.
I can't tell yet how it scales to million of records because we're very far from there for now (there are 4500+ suggestions and comments on OpenVoyce at present day). My bet is that if the amount of data becomes a problem, it may be fixed by reducing the number of dimensions of the vectors.
Oh, there's also something to know: the cube extension for postgres doesn't allow for more than 100 dimensions. This is something configurable, but only by editing a header file from the extension (that's the author's recommended method). I've detailed the problem and solution on my pg350d repos [3]
It's incredibly useful for search, given the property that similar words are close in the vectorial space. And given it's purely numbers, it's really fast to compute.
You'll see many relevant results, none of them using the word "fuel". This is done purely with postgres, computing a L2 distance sort - no elasticsearch.
Using aliases in `~/.bashrc` rather than putting scripts or symlinks in $PATH is a good mean to avoid those kind of problems, provided bashrc includes code to quit if ran in non-interactive mode (default at least on ubuntu).
Many use aliases only to specify default command parameters, but it works just as well to provide an execution path, like, in this case:
alias df=/home/my_user/games/dwarf_fortress/df
It would only be executed in interactive sessions, this way, which should guard well enough against system code interpreting it.
Of course, this still means user can't use system's `df` easily, but I guess they don't use it anyway since they did not realize the problem until that upgrade.
I hope this won't come out harsher than I intend to, but I'm so tired to hear this expression "not reinventing the wheel" to justify using third party code. This is not what it means.
Note that there is not a single wheel that was built once in prehistory and now every human gets it lent when they need it. People build wheels everyday to fit their needs, reusing the concept of wheel, that is, knowing that a circular object allows for smooth movements with less friction. The analogy in software development means that you've better know of designs that help you solve your problem, not that you should blindly use code built by someone else to bypass the whole problem solving. This is basically trying to use a bicycle wheel for everything. This may work well on an other bicycle, not on a car.
On the bright side, you can expect your clone to actually not be a clone.
When initial product you want to clone was made, its makers had to solve a lot of problems and made choices, which are not documented anywhere. You will face some of those problems and may make different choices, even have new ideas to solve them. Ultimately, your product will have its own DNA and strengths, most likely.
There's a say I really like in the world of music composition : don't be afraid to copy your favorite composers, you won't do the same thing anyway.
Actually, go routing is not the problem, it's react routing that is : go router only knows about API endpoints, and have a catch all route to serve the web client, which then manage its routing by itself. The advantage in that is that the backend only needs to know about API routes, and the client is totally free to implement whatever routes it wants.
And this would be a cool feature from github too. A link mentioning "we found something in your code that looks like a secret, please know people will use it."
Leading a side project up to release is already a plus : it means that you can build a product by yourself, which is actually quite rare among developers (few even try, many of those who try never get it done).
On top of that, having a side project which actually has users is better : this gives you street cred and also demonstrates you can communicate with stackholders.
If you have a side project in the same field than the business you're trying to get in, obviously, this is almost an instant hire. Developers often think business domain is a detail, business people don't.