Tensorflow 2.0 - <AUTHOR> https://github.com/tensorflow/tensorflow/releases/tag/v2.0.0 <comment><USER2> As someone who uses tensorflow a lot, I predict an enormous clusterfuck of a transition. Tensorflow has turned into a multiheaded monster, supporting many things and approaches but none of them very well.

I mean, when relying on third party code, things like `tf.enable_control_flow_v2() and tf.disable_control_flow_v2()` can and will go horribly wrong. It looks like some operations are changing behaviour depending on a global flag being set. And not just some operations, but control flow operations! That will lead to some very hard to figure out bugs.

In my opinion there are some architectural problems with TF, which have not been adressed in this update. There is still global state in TF2. There is still a difference in behaviour between eager and non-eager mode. There is still the control flow as a second class citizen.

If you need to transition from TF1 to TF2, consider doing the TF1 to pytorch transition instead.

<comment><USER3> Not only upgrading is hard, but also installation (on Windows at least). For each Tensorflow version you need a specific python version, a specific CUDA version, specific tensorflow-gpu version, and many other easy to get wrong things. The problem is not the requirements, but that it's very hard to know what versions are compatible. There are endless threads on Github of people trying to use Tensorflow but failing after spending days trying to install it.

<comment><USER4> Tensorflow sounds like an ideal candidate for running in a container. List out all your approved compatible versions in the Dockerfile and distribute it with your source code and anyone can reproduce your results with the exact same setup.

<comment><USER3> Yes, but for personal use, unless someone else already made those containers, I will still have to go myself through the trial-and-error process of finding the right combination of versions. Yes, second installation will be easier, but if I just want it on my PC it doesn't really help.

<comment><USER4> You can `docker pull username/mytensorflowcontainer` and start from someone elses' work. Looks like Tensorflow has a how-to on the site: [https://www.tensorflow.org/install/docker](https://www.tensorflow.org/install/docker) including working cpu-only and gpu-enabled examples.

</comment></comment></comment></comment></comment><comment><USER5> Recently I found that a lot of TF2.0 Keras' functionaly does not support eager execution. This makes Pytorch still significantly easier to prototype with than TF2.0.

If you miss Keras' way of defining NNs, you can use PyWarm: [https://github.com/blue-season/pywarm](https://github.com/blue-season/pywarm) which offers a fully functional NN building API for pytorch.

<comment><USER6> Does pytorch have a Tensorboard equivalent? For rapid prototyping, I find Tensorboard a lot more useful than, say, print statements and such that you can get through eager execution. Tensorboard is also crucial for post-hoc analysis, and the Summary format is clean enough to use as a primary data artifact (e.g. use loss recorded in summaries versus some alternative hand- crafted text file).

<comment><USER7> It has TensorBoard integration itself (which can be installed independently).

[https://pytorch.org/docs/stable/tensorboard.html](https://pytorch.org/docs/stable/tensorboard.html)

</comment></comment></comment><comment><USER8> I decided a few weeks ago to transition to PyTorch (was using Keras before) and I must say that I really love it! How PyTorch is structured gives me the right balance between ease of use and the ability to make customisations. Further, using DistributedDataParallel, dividing the work over multiple processes, where each process uses one GPU, is very fast and GPU memory efficient.

Before my switch I tried out Keras for Tensorflow, and even got a lot of support from Google in my endeavours to resolve the issues I encountered (kudos to Google for that!). In the end I felt it was still not mature enough. Further, although I do believe TF and Keras are moving in the right direction, I still felt that in some cases the way the software was set up just didn't sit well with me.

Maybe it is worth to try again in a year or so, or by then I will tryout Swift for Tensorflow, which I think has a great future ahead.

</comment><comment><USER9> The most important change in terms of usability, IMO, is the use of tf.keras as the _recommended_ interface to TensorFlow. There hasn't been a case yet where I've needed to dip outside of Keras into raw TensorFlow, but the option is there and is easy to do.

That said, TF 2.0 changes a lot. Many repos might break, so expect to see lots of tensorflow==1.14 in requirement.txt files from now on.

</comment><comment><USER10> Disclosure: I'm a big BIG tensorflow fan.

I've been using the rc's for a while now and I must admit, it's a big step up for projects you are starting from scratch. Migrating... Probably not as clean as I would like to admit but it does the job. Overall tf 2.0 removes a lot of the boilerplate code, which is awesome.

</comment><comment><USER11> Might be slightly off-topic, what's the latest state-of-play for AMD/OpenCL? I hear in various places that AMD is fantastic for compute, but everyone seems to be using CUDA.

I've got a very expensive Bitcoin mining rig paperweight at the moment with two Vega 64s (along with another Vega 64 in my main rig) — it'd be great to re-purpose them for something potentially useful.

<comment><USER12> AMD is great when it comes to raw compute power for the money.

However, AMD has a history of shipping poor OpenCL drivers, so everyone just went with what actually worked - NVIDIA.

</comment></comment><comment><USER13> Still pretty terrible compared to PyTorch _unless_ you need deployment to device, in which case it's basically the only game in town. Or at least the only _viable_ game.

Case in point: people are still trying to figure out on their github how to apply global weight decay when training a model, and to get a "correct" resize for segmentation you have to fall back to the legacy 1.x API and specify align_corners=true there. These bugs existed for many years, and nobody gives a damn. That said if your choice is between 1.x and 2.0, 2.0 is much easier to work with, especially if you use something other than TF (e.g. PyTorch) for data pipeline and augmentation. You can hook that up pretty seamlessly if you train in eager mode.

<comment><USER14> I think it's getting easier by the day to port a PyTorch model to something that can be production ready, like Tensorflow Lite. It's cumbersome, but doable. For me, I like to optimize my workbench and just deal with the final steps of pain to get it to prod.

<comment><USER7> There might be some additional help on the way directly in PyTorch for on- device :)

\- iOS: [https://github.com/pytorch/pytorch/pulls?utf8=%E2%9C%93&q=is...](https://github.com/pytorch/pytorch/pulls?utf8=%E2%9C%93&q=is%3Apr+ios+)

\- Android: [https://github.com/pytorch/pytorch/pulls?utf8=%E2%9C%93&q=is...](https://github.com/pytorch/pytorch/pulls?utf8=%E2%9C%93&q=is%3Apr+android+)

</comment></comment></comment><comment><USER15> Reality is that most production ML workflows still use 1.x,( not even the latest 1.14[5]. Migration to 2.x does not make sense in many existing use cases unless you want to build your new algorithms from scratch. From previous experience with TF, API changes so much that is impossible to keep up from an Enterprise perspective, I expect TF team do some type of LTS version for Enterprise and continue improving 2.x, which clearly was a response to Pytorch and is an evolution of TF.keras and eager execution plus all the cleanup.

</comment><comment><USER16> Blog post - [https://medium.com/tensorflow/tensorflow-2-0-is-now- availabl...](https://medium.com/tensorflow/tensorflow-2-0-is-now- available-57d706c2a9ab)

</comment><comment><USER17> Is there something which has opinionated defaults where you can hack on projects without getting into all the boilerplate?

Like there is a mostly finite set of typical solved things you would want to use ML for like image classification, object detection, etc.

I find myself spending my time copying an example verbatim and replacing the csv / images with my own.

<comment><USER18> Are you looking for advanced models that you can train on your data pretty much out-of-the-box or simple, easy-to-read models that help you learn the underlying concepts?

If it's the first case, what you want to do is find the best GitHub repos for the task(s) you are trying to do. Make sure the GitHub repo has a model zoo and good support and start from there. In CV, if you are trying to do high-end work, the repos to check out are:

\- [https://github.com/facebookresearch/maskrcnn- benchmark](https://github.com/facebookresearch/maskrcnn-benchmark) (don't be misled by the name, it has support for lots of the high-end modern CV models)

\- [https://github.com/open-mmlab/mmdetection](https://github.com/open- mmlab/mmdetection)

\- [https://github.com/TuSimple/simpledet](https://github.com/TuSimple/simpledet) (haven't explored this one as much, but it looks very solid)

If you want easy-to-read code for non-trivial tasks, I would suggest taking a look at Gluon (GluonCV - [https://gluon-cv.mxnet.io/](https://gluon- cv.mxnet.io/) and GluonNLP - [https://gluon-nlp.mxnet.io/](https://gluon- nlp.mxnet.io/)). I haven't worked much with the fast.ai library, but that's probably also a good suggestion.

</comment></comment><comment><USER19> I think that I take the effort to update most of my side projects to TF 2, or mark the github repos as no longer supported for really old code.

Some may complain about big API changes but I think it is occasionally healthy to tag old stable versions and do massive code refactoring.

I assume that TensorFlow.js is also getting updated - I find it almost equally nice to prototype with (the bundled examples are first rate).

</comment><comment><USER20> On a different context, what're some good resources to get started with Deep learning using TF (besides the stuff Google put on YT)

<comment><USER21> The 2nd edition of Aurélien Géron's book[1] was written for Tensorflow 2.

[1]: [https://www.oreilly.com/library/view/hands-on-machine- learni...](https://www.oreilly.com/library/view/hands-on-machine- learning/9781492032632/)

<comment><USER22> The first edition of the book is fantastic!

Aurelien's writing is clear and clean compared to most other books on ML.

</comment></comment></comment><comment><USER23> Any online courses using TF 2.0, such as Coursera? Or books coming out soon? That's key for proper adoption.

</comment><comment><USER24> If I were to start literally at ground zero with zero knowledge of programming or tensorflow. Where should I go?

<comment><USER25> Install jupyter notebook and play around with numpy/scipy. Neural networks are not really for outright beginners, and tensorflow is doubly not.

</comment></comment><comment><USER26> So if you want to work in deep learning should you learn pytorch and tensorflow? Or just one, which one?

<comment><USER27> fast.ai

</comment></comment><comment><USER23> As far as production deployments of ML models, what percentage use TF vs PyTorch?

</comment><comment><USER28> So which Cuda version and cudnn is this compatible with? Same as beta?

<comment><USER29> This documentation seems to describe 2.0:

[https://www.tensorflow.org/install/gpu](https://www.tensorflow.org/install/gpu)

It says CUDA 10.0 and cuDNN >= 7.4.1.

<comment><USER28> Yeah that's same as beta.

Was incredibly fussy when I tried it & tends to silently fail over to CPU if it doesn't like something (and worse builds of versions. Eg 7.4.1 comes in 10.0 Cuda flavour and 10.1)

</comment></comment></comment><comment><USER30> Just use julia.

<comment><USER31> I like julia a lot (use it everyday, it's my primary language right now), but this isn't really a reasonable recommendation, imho. Julia seems like it could be really great for ML, but I'm not sure if the current libraries are mature enough to wholeheartedly recommend.

I'd love to be proven wrong about that, though.

<comment><USER30> What are the mature libraries? Use PyCall and whatever your heart desires.

<comment><USER5> My heart desires python then

<comment><USER30> Julia consumes python and give you so much more.</comment></comment></comment></comment></comment>


Using a Message Queue vs Background Processing. - <AUTHOR> http://www.mikeperham.com/2011/05/04/background-processing-vs-message-queueing/

<comment><USER2> I'm not sure that I fully understand why the author considers message queuing via something like ActiveMQ to be complicated or difficult.

1) Install ActiveMQ (or my preferred option, ActiveMQ Apollo <http://activemq.apache.org/apollo/>).

2) Write an email script that subscribes to the message queue, and sends an email for each message received.

3) In the web app, publish a "send email" message to the message queue.

That's it - nothing more complicated required. Look at the number of libraries that use the Stomp protocol, and you can be up and running inside of a few minutes.

 _Spinning off a separate thread to perform this work is entirely sufficient and much simpler_

I strongly disagree with this advice, if only because it's so incredibly easy to screw up from a security perspective. If you want to handle errors or other unexpected issues, doing so via spinning up background threads is going to lead you to a world of hacky pain.

One of the most inspiring articles I read about using queues is 5 subtle ways you're using MySQL as a queue, and why it'll bite you:

[http://www.engineyard.com/blog/2011/5-subtle-ways-youre- usin...](http://www.engineyard.com/blog/2011/5-subtle-ways-youre-using-mysql- as-a-queue-and-why-itll-bite-you/)

<comment><AUTHOR> The article you linked too is interesting because:

"Storing a list of messages to send: whether it's emails, SMS messages"

seems to be something like reddit does [1] & [2]. Is this the case:

[1] [https://github.com/reddit/reddit/blob/master/r2/r2/lib/email...](https://github.com/reddit/reddit/blob/master/r2/r2/lib/emailer.py) [2] [https://github.com/reddit/reddit/blob/master/r2/r2/models/ma...](https://github.com/reddit/reddit/blob/master/r2/r2/models/mail_queue.py)

</comment></comment><comment><USER3> Why? Why? Why?

Your local SMTP-based Mail Delivery Agent (MDA) can be configured to to deliver mail directly, or to forward to another host, a practice called Smarthosting, and let the smart host deliver all the mail.

So instead of installing a new queueing system, use the one that 's already there. Deliver your mail to the local MDA (e.g. open a pipe to sendmail), and let a time-tested mail queuing system do the job that it was designed to do.

</comment><comment><USER4> tl;dr:

You are doing bg proc or MQ wrong. Use my threaded worker

<https://github.com/mperham/girl_friday>

Does anyone know a Django or WSGI equivalents of this? I am having the same sending mail problem, and I really do not want push serialized data to another process via a complex & inefficiant MQ.

<comment><USER5> Take a look at Bridge (<https://www.getbridge.com>). You could use that to create a worker responsible for sending mail. Use Bridge to asynchronously route emails to that worker. When you need to scale your send mail worker, just fire up more instances of that worker and Bridge load balances and scales your worker queue.

</comment></comment><comment><USER6> everyone is wrong, everyone is right. just use what tool you know best.

resque, or beanstalkd or zmq push/pull whatever</comment>


Lawrence Lessig Sues New York Times for Defamation over Epstein Story - <AUTHOR> https://www.thedailybeast.com/harvard-law-professor-accuses-new-york-times-of-clickbait-defamation-over-jeffrey-epstein-donation-story <comment><USER2> The headline at issue:

> A Harvard Professor Doubles Down: If You Take Epstein's Money, Do It In > Secret

And the article: [https://www.nytimes.com/2019/09/14/business/lessig- epstein-i...](https://www.nytimes.com/2019/09/14/business/lessig-epstein-ito- mit.html)

</comment><comment><USER3> ... and I thought Lawrence Lessig had heard of the Streisand effect.

<comment><USER4> He has. He was going on and on about the lawsuit. He wants to use it to call attention to his "anti-Clickbait" campaign.</comment></comment>


Game Developer Barbie Is Awesome - <AUTHOR> http://www.slate.com/articles/technology/future_tense/2016/06/mattel_s_game_developer_barbie_is_fantastic.html <comment><AUTHOR> Mattel appears to have listened to some of the criticism from their crass "Barbie: I Can Be a Computer Engineer" book a couple of years ago.

(i.e. see [https://news.ycombinator.com/item?id=8634393](https://news.ycombinator.com/item?id=8634393) )</comment>


Show HN: Math Shooting: As shooting game to train your math skills - <AUTHOR> https://play.google.com/store/apps/details?id=com.MathShooting.MathShooting <comment><AUTHOR> We are one of the companies partecipating in Start up school.

Our idea is to take over the edutainment market by developing action games that keep you engaged while teaching you stuff.

So far this is our first game and we would greatly appreciate some feedback since we have been developing it iterativelly thanks to the feedback of our users.

we also have a launch rock page [0] for the game

[0] [http://math-shooting.launchrock.com/](http://math- shooting.launchrock.com/)

</comment><comment><USER2> It's a great idea! I really like the galactic scenery, bouncing boxes and the laser gun. In 15 minutes I revised all of the basic multiplication combinations :)</comment>


Can one run a server & still maintain personal privacy? - <AUTHOR>

It seems to me that whether one is talking about email, or chat, or files, the closest thing to true personal privacy is if you own the machine itself and you have personal possession of that machine (e.g. it is sitting in your private residence).
On the other hand, most residential ISPs explicitly ban the running of "servers" as a part of their contract:
"... you are prohibited from running servers for mail, http, ftp, irc, and dhcp, and multi-user
interactive forums ..."
Sure there are hosted solutions like EC2 or Linode or Rackspace, and a gaggle of smaller players too ... but this is still hosting your stuff on someone else's metal, in someone else's house.
Let's say for example I want to run Debian Server on a machine that sits in my basement, and I want to run an email server, a web server, and sshd so that I can do my own file syncing. Technically this violates my contract with my ISP. (let's set aside for the moment the myriad issues with running one's own email server)
The other issue is that (at least with my ISP) upload speeds are capped at a v. slow speed compared to download speeds. It would be an issue if I was off-site (e.g. not at home) and I wanted to sync up or transfer large files FROM my home server elsewhere.
So ... what's a boy to do?
seriously what are my options? No google fiber here. <comment><USER2> ISPs don't really care if you run servers, at least in my experience. Probably the worst that will happen is they will ask you to stop, but even that is unlikely unless you're doing naughty things.

File syncing can be a pain, but a slow running rsync --bwlimit can transfer a lot of data over a long period of time, without saturating your connection.

I run a server off my home connection using an old laptop. Works great.

</comment><comment><USER3> Look into different ISP's. Most areas have both cable and DSL providers. You might be able to pay for "business class" service with higher, and symmetric, speeds.

If there isn't any such ISP in your area, you could always move...Moving has large costs (depending on how far away you go, it can be highly disruptive to jobs, friendships or relationships). Minimal cost and optimum privacy protection may be orthogonal...

Also, keep in mind that, if you're like most people, many of your communication partners will not be as secure as you are. E.g. if you're worried about NSA snooping on email, and the folks you communicate with all use Gmail, it doesn't matter what email provider you use -- it can all be grabbed from your friends' mailboxes on Gmail's servers and forwarded to the spooks.

</comment><comment><USER4> Another option is to use a small, cheap VPS or EC2 instance to host a "staging server". This is the end point for all your web services, email, etc. Then you have a "home server" which pulls down the info from staging server, backs it up locally and then deletes it from the staging server.

That way, your public staging server only has a small amount of information on it. E.g. emails for the last hour (or whatever your downloading job is set for).

For uploads you could set up a request mechanism which will deliver the requested file from home to staging.

For even greater privacy you could set up a self-destruct proc which will wipe all sensitive information from the staging server unless it get's a "keep alive" message.

</comment><comment><USER5> While not as good as hosting your own server on your own hardware, what about buying a VPS server in a country unlikely to play along with whatever three letter government agency you are trying to protect your privacy from?

I reckon the simplest effective action people can take is to simply host all your stuff in a jurisdiction outside the one you live in that is unlikely to respond to your jurisdiction.

Given the news from the last three weeks, the safest thing for the average person is to simply conduct all business via a remote server in another jurisdiction. This seems even more prescient with the contempt of court cases in both the US and UK involving the non-disclosure of cryptographic keys.

<comment><AUTHOR> On the one hand this is appealing ... on the other hand it introduces another level of uncertainty into the mix

</comment></comment><comment><USER6> You signed a contract? This falls under my ISP's TOS.

Anyway, what I would do if I were you is run your Debian server at home, but get a tiny Linode through which your server VPNs, not just so your ISP can't parse the traffic (they're probably considerably more snoopy than Linode and their upstream, leaving the NSA aside for the moment), but also so you don't run into problems common to running an email server at home, e.g. having your outgoing emails bounced because they come from a residential IP block.

As far the constrictive upstream with big files? I'd rely on Dropbox or Spideroak, depending on how much I valued convenience (Dropbox) over security (Spideroak).

</comment><comment><USER7> Set up a t1.micro instance on AWS and run a VPN server on it. The VPN instance accepts connections on port 25, etc. and forwards it over the VPN to your home server.

Your ISP sees nothing but encrypted traffic between you and your VPN server.

Alternately, buy a rackmount server and colo it. Authorities would need a warrant to seize it, just the same as they would to seize the server that's running in your basement.

<comment><AUTHOR> yeah I've thought about that, both ssh tunnelling to/from home from some hosted machine (e.g. AWS, or Linode, etc). The problem (from my point of view) is that the hosted machine is in someone else's "house". Even if it is a co- lo.... it is still sitting in someone else's house.

Thanks for the suggestion though. It gets part-way there

</comment></comment><comment><USER8> Given you're on HN, you probably know a few people in the industry, ask around and try to find a 1U colo deal on unused rackspace (aka the brocolo). Get a cheap 1U atom server from supermicro, throw some disks in it and you're done.

</comment><comment><USER9> get business class internet instead of residential if that's an option.</comment>


A quick look to APL [A Programming Language] - <AUTHOR> http://langexplr.blogspot.com/2011/03/quick-look-at-apl.html

<comment><USER2> I love many of the ideas in APL, especially the vectorization features. My sense of taste is seriously offended by the special characters.</comment>


Dexter, the Automatic Indexer for Postgres - <AUTHOR> https://medium.com/@ankane/introducing-dexter-the-automatic-indexer-for-postgres-5f8fa8b28f27 <comment><AUTHOR> Anyone give this a try? How'd it work out?</comment>


Ask HN: How (un)secure are the passwords saved at my browser? - <AUTHOR> I am the closest thing to a "common internet user" that you can find at HN, and I was scared by how easy is to discover all the passwords that I let my Chrome browser save.
I found out by installing LastPass Chrome extension (we are starting to use it at my company). One of the extension onboarding steps is to show all sites for which I have a password saved by my browser. Fair enough.
What scared me is that just by clicking at "reveal passwords" ALL of my saved passwords appeared there!! No asterisks, just day light plain text shouting all my carefully crafted long passwords to anyone looking at my screen.
I don't remember giving the extension any special permissions, and even if I did, I wouldn't imagine an exntension could have access to all my plain text passwords.
Is this common knowledge?? Is it THAT easy to find out all my saved passwords?? Am I missing something here?
I would imagine that such a common, widespread, sensitive feature at the most used browser in the world would be more secure. It is not that NSA can discover my passwords. MYSELF, not even being a programmer can discover all the passwords of another person if they let me use their computer for 2 minutes. <comment><USER2> Yes, browser password storage is really poorly secured. For what it's worth, a Chrome staffer explained on this very site[0] their reasoning, but that doesn't really sit too well with me - in my opinion, browsers should either go all way the way and integrate a full KeePass/1Password style password storage or remove the feature altogether.

Firefox appears to be a bit better by letting you set a master password that's used to encrypt passwords[1], although without digging into the behavior I can't say exactly how much that helps.

[0]: [https://news.ycombinator.com/item?id=6166731](https://news.ycombinator.com/item?id=6166731) [1]: [http://kb.mozillazine.org/Master_password](http://kb.mozillazine.org/Master_password)

</comment><comment><USER3> Lastpass is zero-knowledge but subject to any number of attacks on the client. As the old adage goes: If you can't attack the crypto, attack the client! My personal setup is an always updated version of KeePass. I gave up using 1Password when I realized the loopback is cleartexted when autofilling passwords, and a host of other vulns like the .opvault format not used as the default, and too many other vulns to count. The master password is also a single point of failure and once you get that, you get everything. A chain is only as strong as its weakest link and all that. With KeePass even if they have the master password, they also need a second key / keyfile, and a machine ID so a copy of the KDBX file is useless to an attacker (unless they can emulate your machine UUID).

You can read more about that 1pass vuln here: [https://news.ycombinator.com/item?id=11212002](https://news.ycombinator.com/item?id=11212002)

<comment><USER4> > _I gave up using 1Password when I realized the loopback is cleartexted when > autofilling passwords_

There's a forum post or blog post or something (I forget) by 1Password about why this is, and it basically boils down to, it's impossible to be completely certain that the other end is the process you're trying to talk to, so there's no point in encrypting the traffic on the wire. Any process with permission to sniff the traffic (i.e. root) also is capable of intercepting the connection entirely and pretending to be the other end, so encryption doesn't really get you anything. Remember, both ends are processes on the same machine, so you can't use certificates or signatures to prove identity as the keys would have to be on the local machine where the attacker can find them.

> _a host of other vulns like the .opvault format not used as the default_

It was used as the default for iCloud, just not for Dropbox because of compatibility concerns with older versions of 1Password. According to a forum post from 2 years ago, "In time, all users will be converted to the newer format" ([https://discussions.agilebits.com/discussion/comment/139552/...](https://discussions.agilebits.com/discussion/comment/139552/#Comment_139552)). I'm not actually sure whether they've made the switch yet, since I already stopped using Dropbox for syncing.

> _and too many other vulns to count_

Please elaborate. I've heard of far fewer issues with 1Password than competing services. I've certainly never seen anything that even remotely qualifies as "too many other vulns to count". So I'm extremely skeptical of this claim.

> The master password is also a single point of failure and once you get that, > you get everything

You also need to have the actual data. I'm skeptical that KeePass is any better. From reading wikipedia, it needs a master password and/or a key file. If you use a master password, that's the same as 1Password. If you use a key file, anyone who gets access to your machine can now decrypt all your passwords so that seems worse. If you use both a master password and keyfile, anyone who gets access to your machine (i.e. to get your KDBX file) and has your master password can also get at everything, and it's also not clear how using a combination like this even works if you're syncing your KBDX file with any other machines (e.g. using Dropbox). Wikipedia also says you can use the Windows current user details instead of a password/key file, but again, any attacker that gets access to your machine now has all the information necessary to decrypt your KBDX file.

> _With KeePass even if they have the master password, they also need a key, > and a machine ID so a copy of the KDBX file is useless to an attacker > (unless the can emulate your machine UUID)_

They don't need to emulate your machine UUID, they just need to apply the cryptographic operations to decrypt the KBDX file themselves. If an attacker gets access to your machine (e.g. to get your KBDX file), they can get all that other info too (assuming you even set up KeePass to use that info).

<comment><USER3> > If an attacker gets access to your machine (e.g. to get your KBDX file), > they can get all that other info too.

Well in theory yes, but one typically wants to slow an attacker down. I'm not saying a KDBX file is entirely useless, just cumbersome if an attacker now has to replay the decryption using various disparate key parings. Most attacks are smash and grab jobs where all the low hanging fruit is gathered, and attackers (generally) don't lie around on a box waiting trying to figure out the inner workings of your KeePass setup.

<comment><USER4> If the attacker knows you use KeePass (or notices the KBDX file) then it's easy enough for them to grab all of the relevant info at the same time they grab your KBDX. There's no need to "lie around on a box waiting".

</comment></comment></comment></comment><comment><USER5> What advice I give in terms of computer security I see more like being sanitary similar to washing your hands, it will not make you free of germs but it will greatly reduce the chance of getting an serious infection. The thing you should realize is that your data will never be perfectly secure. You could take your data offline and store it on an encrypted hard-drive in a waterproof safe on the bottom of the ocean and there could still be ways to access it. You need to find a middle ground where you feel safe enough not to worry about serious infections but aren't afraid of germs to the level it affects your every day life.

Most browsers store their passwords in plain-text, this means there's applications that can fetch all your stored passwords from all browsers and send them to an undisclosed location in seconds given user level privileges on the machine.

By upgrading to lastpass you have reduced that attack surface by using a secure passphrase and encrypted data-store but you have increased your attack surface to anything accessing lastpass servers and application bugs.

With all these attack vectors one might think that it's better to just not save passwords and just remember them, while this is true in theory in practice it's impossible to remember a sufficiently unique password for each website you are registered to which leads to password reuse which is another much greater attack vector where your leaked passwords from one site can be reused on other sites.

In general I would advice you to use a password manager that generates and encrypts passwords (Lastpass is one of them), use a secure passphrase and don't reuse passwords. Password reuse will likely make you less secure than writing your passwords on a post-it by your computer (don't do that either)

I would also consider looking into using proper 2-factor authentication for sensitive login (document storage, email, password manager) but I don't want to bore people with the details there so I'll defer you to do some independent research

TLDR

* Store passwords encrypted (Lastpass is fine)

* Don't reuse passwords on different sites

</comment><comment><USER6> Yeah it's pretty easier to get to your saved passwords in Chrome -- they're at chrome://settings/passwords. They're not encrypted or anything (depending on your OS, you might have to enter your password to reveal the passwords at that link, but that's just to stop unsophisticated snoops -- there's nothing blocking access to the plaintext passwords on your hard drive). I'm not sure precisely how LastPass is accessing them (I use 1Password) but I'm not really surprised. Chrome's password store is for convenience, not security. If you want security, use 1Password or LastPass or something.

</comment><comment><USER7> Passwords stored by the browser can't be encrypted. Unlike with, say, LastPass, the browser doesn't have any "master password" to encrypt data with. Moreover, the passwords can't be stored as hashes (like in /etc/passwd), since websites require users to provide passwords in plain text.

Granted, if you use full-disk encryption, this concern is much less serious.

<comment><USER8> > _... the browser doesn 't have any "master password" ..._

Firefox does. Chrome doesn't. I can't speak to Safari or Internet Explorer.

<comment><USER9> Safari stores your passwords in your login and/or iCloud keychains. So they are encrypted on disk, but the master key is kept in memory unless you change the setting to disallow that. (/Applications/Utilities/Keychain Access.app, right-click on login keychain, choose Change Settings for Keychain "login"; I don't know how to change this setting for the iCloud keychain)</comment></comment></comment>


Show HN: Memex – annotate and instantly recall any website - <AUTHOR> After 18 months of tinkering and iterating, we want to show you our Memex:  An open-source browser extension to effortlessly organise your web-research.
We'd love to know what you think :)
Check it out at https://worldbrain.io/hn
Memex features:
- Instantly find websites you visited with the fuzzy memories you have about them, instead of bookmarking everything or keeping dozens of open tabs. Search for every word of every website you've seen, and filter by time, domain, custom tags or bookmarks.
- Add your thoughts to websites via comments & annotations, directly in the browser - not in external, disconnected apps.
- Cite websites with precision: Share links to pieces of text on any website. <comment><USER2> [ MEMEX TEAM ]

Hey Hackernews crowd, my name is Oliver and I'm the founder of the worldbrain.io, the project developing this Memex. You can ask me anything about our strategy, our financial model "Steward Ownership" and roast me about the details of our vision.

# Vision Summary: [https://worldbrain.io/vision_deck](https://worldbrain.io/vision_deck)

# Economic Vision: [https://worldbrain.io/crowdfunding- memex/#why](https://worldbrain.io/crowdfunding-memex/#why)

# Detailed Vision: [https://worldbrain.io/vision](https://worldbrain.io/vision)

Almost exactly 4 years I started the journey of researching a solution on how our society can collectively tackle information overload & misinformation (also known as "fake news"). I believe that getting this right is crucial for us to make the most complex personal, social and political decisions effectively, sustainably and compassionately - or go bust within the next century. Counter to common tactics of approaching this problem I think we should not dictate a certain truth to battle misinformation but give people the tools that shared truths can emerge. Memex is our first step towards making this possible and we are excited to show it to you today.

In order to build the first prototype of Memex I learnt how to code. (or rather how to be a skriptkiddy and piece together things from GitHub and StackOverflow ;) ) Even though the code was pretty shitty, it helped to gather a wonderful team and a community of volunteers that rebuilt everything from scratch (and ditch my shipwreck of code). So in reality they did 99% of the work of developing Memex and deserve the praise. :)

Now here we are. After a tinkering and iterating on Memex over the past 18 months we feel ready to show you our progress. Let us know how we can improve Memex to make it really useful in helping you to overcome the information overload in your web-research.

\- Oliver

<comment><USER3> I'm glad you forked Falcon and developed it to this point.

[https://news.ycombinator.com/item?id=14648312](https://news.ycombinator.com/item?id=14648312) HistorySearch came out with another Chrome extension, but I don't like their approach at all: [https://historysearch.com/](https://historysearch.com/)

I'm wiling to give your product a try again.

Thanks for taking it this far...

<comment><USER2> Hey!

Thanks for the kind words.

Indeed we initially forked Falcon to develop "Research-Engine", the first iteration of this.

After we could validate that people really wanted it, we rebuilt everything from scratch. So no Falcon code is there anymore.

Yeah saw the new HistorySearch update too. Thought they were not in the game anymore. Their product works well, however I don't feel comfortable pushing all my history to some server I have no control over. Especially not by default.

Also, offline-first is so important to me too. It's often that I work from a plane or with shitty internet connection and want to add annotations or search my history.

Hope you like our new updates. We know there is still toooons of stuff to do. So let us know where you have troubles :) We'll do our best to improve it bit by bit. Literally :)

</comment></comment></comment><comment><USER4> This looks interesting. I'm open to replacing my current (actually quite rudimentary) "capture to org-mode" setup. Is there any way to dump all/important parts of the information Memex captures to plain text/CSV/etc, or, say, a sqlite database?

Overall, this is a space I'm very interested in and this looks like a polished product. I'll be keeping an eye on it; I've installed the addon and am looking forward to playing with it :)

PS. "Full-text search" seemed to me (and might to many) like full-text search of webpage _contents_ , not just URLs/titles. It's not malicious, of course, but it feels slightly misleading.

<comment><USER2> hey! Oli here from the Worldbrain.io team

> Is there any way to dump all/important parts of the information Memex > captures to plain text/CSV/etc, or, say, a sqlite database?

Yes indeed there soon will be. Currently working on a backup & restore feature that would make that possible too. First cloud backup & local dump, then exporting in different formats. Depends a bit though on what people really want out of it and how they intend to use it.

Want to get this right together with the community.

> "Full-text search" seemed to me (and might to many) like full-text search of > webpage contents,

You are right in your first impression. It IS full text search on the content of each page you visit :)

</comment></comment><comment><USER5> I don't remember how I found memex but I've been using it for 2 weeks. It's pretty cool! I've been looking for a way to be able to search anything I've visited online, full text search. Keep it up, and thank you. :)

If I had to add something, it would be the ability to sync between computers/browsers, or fetch unfetched pages from history, so the syncing can happen in the browser and memex just crawls again.

<comment><USER2> Hey!

> it would be the ability to sync between computers/browsers,

This is right now in the making :) Give it a couple of weeks and you can do that!

> or fetch unfetched pages from history

You can already do that now :)

Go to settings > import history & bookmarks

Does that do what you are looking for?

Cheers Oli

</comment></comment><comment><USER6> How well do you (plan to) support the W3C annotation standards [1], and could one use this as a backend for hypothes.is [2]?

[1] [https://www.w3.org/annotation/](https://www.w3.org/annotation/)

[2] [https://web.hypothes.is/](https://web.hypothes.is/)

<comment><USER2> hey!

Oli here from the WorldBrain.io team

Yes we are in close contact with the Hypothes.is team and may develop some shared components in the future. We already use their anchoring library.

Internally we don't store the annotations in W3C standard yet, but will provide that as soon as we get to develop the ability to export or access annotations via an API.

How do you imagine Memex being used as a backend in your context? Once we offer more integrations to other services, it is definitely thinkable to also make annotations from Hypothes.is searchable. Is that something along the lines you're thinking of?

Cheers! Oli

<comment><USER6> Internal representation doesn't matter to me as much as the external view, so I guess I'm actually looking for your planned extensible API - I'll be eagerly awaiting that.

With more and more annotation services, there may come a need for an "annotation manager". Memex could be the manager for Hypothes.is as you suggest, but a separate manager could also use Memex and Hypothes.is as backends. So, for example, the annotation act is done with Memex, but the research stage is done with a separate tool.

Cool product/vision! I like your guys' stance on the user's data and with an API might settle on this one. :)

</comment></comment></comment><comment><USER7> [MEMEX TEAM]

TL;DR: AMA about the full-text search functionality and general experiences with using the extension.

Hello everybody. I'm Jon - one of the lead technical contributors to the Memex extension. I have been involved in the project for roughly 18 months and watched as it has changed and grown over that time through the hard work of many different individuals.

I would be happy to provide answers to any questions regarding the full-text search and how we enable it for each web page your visit. I have spent a large portion of my time at Memex focused solely on the search and, with the help of some fantastic technologies like Dexie ([http://dexie.org](http://dexie.org)) and IndexedDB, we have arrived at what we believe to be one of the fastest in- browser full-text history search engines. However saying that we hope to iterate on and improve important aspects of our search - such as results accuracy - in the near future.

I would also love to hear any feedback you might have from your own experiences with using or having the extension installed in general - we're always aiming to improve that experience.

</comment><comment><USER8> "save locally" you mean like in my browser, or I can setup my own server?

<comment><USER2> Hey! Oli here from worldbrain.io

Yes, it means all data is stored locally and in the browser. Later we aim to make the backup & sync cloud self-hostable too.

</comment></comment><comment> VvR-Ox Very interesting project. * nice that there is an open source & for free edition * what happens with very big data? (search performance etc) * what about integration with other tools?

Good Luck & thx for sharing :-)

<comment><USER2> Hey!

Oli here from worldbrain.io

So the search technology is horizontally scalable and should carry years of your web-research locally in the browser. (and still be performant)

Yes we strongly plan to integrate with other services so you can search and import data there too. Intended is that we make it abstract enough for developers to easily and autonomously also integrate services on their own. However that needs to wait a bit more since so many other priorities are on the table and we are quiet a small team still.

Cheers Oli

</comment></comment><comment><USER9> Looks great! FWIW I like the vision / ethos as much as the product.

</comment><comment><USER10> Interesting, but I don't think I'll be giving up 4 years worth of OneNote web clips that do the same thing, but with more flexibility and compatability...

</comment><comment><USER11> Memex... neat. I remember reading about Vannevar Bush many many years ago.

</comment><comment><USER12> Sketchy. Big promises for privacy, but first thing they do is collecting data.

Similar the commercial plan. Yet there is no existing selfhosting (at the moment), or even an export. There is no display of how many data are collected. How much will this waste with time? How do I clean it up?

The Integration seems to something they should work on. Search does not work with Tridactyl (a vim-style addon for firefox). Entrys in context-menu are also missing. The Annotation "Toolip" (seems there is a typo in the settings?) is kinda useless for me as I already use the "Swift Selection Search"-addon. Some documentation to manual configurate integration might be useful. Some tooltips are missing in the Toolip too. No clue what those icons should do from the look of it.

BTW In Settings, Acknowledgements-Section there if gif(?) from some movie- scene. Given the commercial plans of this project this will likely considered as copyright infringement.

BTW2 Memex seems to be trademarked. Might be a problem.

<comment><USER2> Heyho :)

Oliver here from the WorldBrain.io team.

Thanks for sharing your concern. Hope I can adequately address some of them. Yeah indeed we are collecting some data on how you use the features, so we know how we improve the workflows of the tool. No terms you search, urls you visit or blacklist, annotations you make or anything user generated about you is collected though. You can also opt out of that and we don't even know you're existing.

> There is no display of how many data are collected.

A list of everything collected you find here: [https://worldbrain.io/privacy- policy/](https://worldbrain.io/privacy-policy/)

Re selfhosting: Yeah we also would like to be there already, but we are a small team and have to priortise things that make the tool useful first. Overtime we get there. Inside the team we have a strong commitment to deliver this.

> Given the commercial plans of this project this will likely considered as > copyright infringement.

Good point, removing that rather!

> Entrys in context-menu are also missing.

Yep, we want that too :D Hopefully someone can help building this as unfortunately there are a couple of other priorities at the moment. E.g. making annotations fully searchable

> How do I clean it up?

You can already blacklist & retrospectively delete stuff via the settings, but soon also a bulk select will be available.

Sorry if the tool is not yet fully like you want it :) We are working on it.

<comment><USER2> To add to this: We really take your privacy seriously. This is why we went out of our way to prevent using Google Analytics, the easy and common way, to do the measurement of user-flows. There was nothing available that did it well for browser extensions. Instead we built our own analytics tool that would ensure noone else has access to that data just because we are using someone else's software. Props for that go to our GSoC student Mukesh :) [https://github.com/mukeshkharita](https://github.com/mukeshkharita)

<comment><USER13> I'd suggest that releasing the analytics tool as open source is likely to be _very_ interesting to a large number of users here.

<comment><USER2> Yeah, we have that on the map too. Still need to make it run smoothly and factor it out into a separate library when we can. Limited (wo)man power at the moment to do this. Kind of hacked together at the moment too :)

</comment></comment></comment></comment></comment><comment><USER14> [MEMEX TEAM]

TL;DR; AMA about Backup/Sync functionality, ways you use Memex and we can make your life easier, the Storex layer described in the second paragraph, design methodologies and decentralization/Blockchain!

Hey there! I'm Vincent, a weird mix of software engineer slowly going service- and UX-designer. Since joining WorldBrain in February, I've been architecting and implementing parts of Memex's Cloud functionality, including Memex.Links and the Backup and Sync functionality that is currently in the works. On the technical side, I try to make sure that we can move fast and make the best trade-offs between ideal and doable solutions, so that we can create stuff that is as useful and easy to use as possible. But being in the field for 13 years building software, my main interest is shifting from programming, to the whole processes from reseach to designing functionality and communication strategies to make things that are as useful as possible, which I can then help technically architect. And as such, in my spare time I'm currently thinking about how to rethink web development to lower the barrier between designers and developer, reducing the write-test-modify cycle while taking a wholly new approach to QA that is driven by designers instead of programmers churning out unit tests.

Lately the bulk of my work has been battling AWS and Google docs, trying to get the Backup functionality to work as nicely as possible. But, in the process I've taken Jon's work creating the fastest in-browser full-text search engine currently available, and made it into a low-level library acting as an abstraction layer on top of different kind of data sources (IndexedDB, SQL, NoSQL, soon to come REST/GraphQL.) It still needs some work to be in a presentable state though (docs, more tests, etc.) The goal is, we aim to create many loosely coopled, tightly cohesive layers on top of it that solve common storage problems, like schema migrations, access rights, content feeds, live collaboration and moving data between front- and back-end. Due to it's origins in Memex, we called it Storex. Feel free to brainstorm with us on how to make this useful to lots of people and especially, what tedious problems you keep solving time after time hovering just above the storage layer.</comment>


Chrome the Only Major Browser Not Hacked at Pwn2Own - <AUTHOR> http://www.thechromesource.com/chrome-the-only-major-browser-not-hacked-at-pwn2own/ <comment><USER2> The article makes it seem as though people failed to hack Chrome. The truth is, AFAIK, that nobody even tried.</comment>


Why Django and Rails CMS Are So Rare - <AUTHOR> http://gadgetopia.com/post/8219 <comment><USER2> Additionally, if you're doing the build/buy/etc decision for any project which is going to need a CMS, you're not competing just against "Do it ourself in Rails, which we like", you're competing with "Download WordPress and get 80% of the way there for free."

WordPress is not the world's best software, but the ecosystem is fairly compelling, and it solves a _lot_ of customer needs very, very quickly. (An off the shelf theme for tens of dollars or custom theme for hundreds gets many projects 100% of the way there.)

<comment><USER3> More importantly, the consumer knows that if they use WordPress they can fire their current programmers and find someone else.

Most people have heard of WordPress. Some have heard of Rails. Almost no one has heard of Django.

<comment><USER4> That is absolutely not even close to true unless you are talking about solely non-technical types, who have no reason to even consider FRAMEWORKS like Rails and Django vs CMSs like Wordpress. Instagram, Pinterest, NASA, Disqus, Mozilla, The Onion, Washington Post, NY Times, PBS, etc. all used Django heavily.

Just because YOU don't use it, doesn't mean it isn't popular. You committed a social proof. Django is far more popular in many circles than Rails. As Rails is far more popular in others.

<comment><USER5> There's a difference between big sites using a particular stack and people (thinking mainly pointy haired boss MBA types) having heard of it.

Lots of people have heard of wordpress because they have probably visited blogs with URLs that look like _something.wordpress.com_ and they may have used it to write their own blog.

Some people will have heard of rails because it had huge hype at around ~2006 and very vocal advocates including 37s who were known through other avenues because of basecamp and because they blogged a lot.

Django on the other hand you may well not have heard of unless you have some knowledge of python or MVC frameworks (or read HN).

</comment></comment></comment></comment><comment><USER6> > I can think of only four offhand (meaning, without using Google): > > Ellington and the inventively-named Django CMS for Django

<http://mezzanine.jupo.org/> is quite popular, I think.

The answer to the main question lies somewhere else IMO. Those CMS from the PHP family got their fame because of the very low barrier of entry to deploying a PHP app (read: ftp). No mommy-blogger will have a clue how to install a Rails/Django CMS, so the target audience is different. Putting it short: PHP CMS are for users, Django/Rails CMS are for developers.

<comment><USER7> Your point could have done without the [casual?] [unintended?] sexism: "mom" is not synonymous with "technically unskilled".

<comment><USER8> The only sexism evident here is your own. Why did you assume that "mom" is the dominant descriptor in the term "mommy blogger" rather than "blogger" or the whole term? Why did you jump on the chance to cry sexism without knowing the definition of the term you were taking issue with? "Mommy blogger" _is_ a term with a specific meaning, not just a synonym for mother.

It seems that the language police have been ramping up their efforts recently on HN. That is extremely unfortunate. Reading comments would be a much better experience if the pseudo-causeheads would at least attempt a rational discourse.

<comment><USER7> > Why did you assume that "mom" is the dominant descriptor in the term "mommy > blogger" rather than "blogger" or the whole term?

If he'd meant "blogger" generically he could simply have used the word unmodified. Instead, he specialized it by using a gendered term to repeat a common stereotype about a broad class of people. Have you ever heard anyone use a neutral or male identified term in a context like this? Would the point have any way been worse as "No sports-blogger" or "No photo-blogger"?

As for your attempt to claim that this is somehow due to my not knowing the definition of the term, I would note that your choice to resort to personal attacks rather comically undercuts your proclaimed desire for "rational discourse".

<comment><USER8> >Have you ever heard anyone use a neutral or male identified term in a context like this?

How about "brogrammer"?

>your choice to resort to personal attacks rather comically undercuts your proclaimed desire for "rational discourse".

It's actually not ad hominem, since I'm using your own words against you. What you typed betrays latent sexism. I'm not just calling you a sexist without evidence.

</comment></comment></comment></comment></comment><comment><USER9> The target audience for a CMS and a Framework are quite different. CMS is aimed at the end-user while frameworks are for programmers. This is significant if you look at the popular languages for CMSes like PHP or ASP. In these languages you can "deploy" the solution by just unzipping files into a folder. Django and Rails need a lot more work. Practically, if you need a full-blown CMS there is very little need to look at the languages with complicated deployments.

Also, a Framework and a CMS attacks the problems space in two different ways. Frameworks are bottom-up while CMSes are top-down. So solutions built in Django and Rails do not carry all the bloat and latent runtime functionalities that a CMS carries.

Lastly, even though Rails and Django are the leading frameworks, it is wrong to expect a CMS to be built using them. Theoretically, you can use a microframework like Flask because you are going to rewrite most the framework functionality anyways.

<comment><USER10> "In these languages you can "deploy" the solution by just unzipping files into a folder. Django and Rails need a lot more work."

Totally agree with this. It also smells like an opportunity for someone. In the age of Heroku, it feels like the process should be a lot easier. I.e.:

* Download a Django or Rails based CSM.

* Create a Heroku account

* ./manage.py deploy_heroku

* Profit

<comment><AUTHOR> Why even require the download and command-line steps? You could probably wrap this all in a nice web interface

</comment></comment></comment><comment><USER11> Having used both Drupal and Rails fairly extensively, I yearn for a Rails CMS with the community and variety of modules in Drupal. I hate doing Drupal development, but from a return on investment prospective, in many use cases, Rails actually loses to Drupal.

In Drupal we can often get 2/3rds of our app for free, which productivity-wise has let us accomplish things in timeframes that would be impossible in Rails.

If something with Drupal's advantages were available within Rails (as an engine or what have you) it would be a clear game-over for other stacks vs. Rails.

<comment><USER12> > _If something with Drupal's advantages were available within Rails (as an > engine or what have you) it would be a clear game-over for other stacks vs. > Rails._

I have to disagree here. There are clear use cases for either Drupal or Rails. I understand why you yearn for a Ruby Drupal, because dealing with PHP is a hassle, but objectively there is little to be gained since Drupal is already a beast and performance would only be hurt by being ported to Ruby.

Aside from that, the key advantage that Rails or other low-level web frameworks have over Drupal is that they don't make any assumptions beyond the fact that you are using HTTP. With Drupal there is an incredible amount of pre-existing architectural cruft to enable its powerful functionality, but it creates a ton of overhead to deal with as soon as you want to do something that doesn't neatly fit it's paradigm. As soon as you brought something like this into Rails then you'd be defeating the purpose of its simple elegance.

I just don't see any way to separate out the best of both worlds. They have very distinct use cases.

<comment><USER11> To be clear, I don't want it in Rails core. I want someone to make a framework that can run in Rails where I can pull in giant duplo-blocks of functionality.

<comment><USER12> But what would be the advantage over just running Drupal on PHP?

</comment></comment></comment></comment><comment><USER5> There doesn't seem to be as much turnkey rails stuff in use as there is PHP (or perl) stuff across the board. Other examples would be phpBB or phpMyAdmin and vBulletin.

I wonder if part of the gap is perhaps cultural. Rails comes out of 37 Signals who made lots of money doing Saas so they are going to be something that rails developers naturally aspire to.

In an instance where a PHP developer might say "I can make this software, I'll put it up as OSS or I'll make it commercial and charge a fee to download it" a rails developer might think "I'll stick it up on my own servers only and charge people a monthly fee to use it or have an ad supported model".

In other words , rails people may just be a bit more entrepreneurial. PHP also grew up in an age where you would probably be considered a bit crazy to do all your project management on the web.

<comment><USER12> Aside from PHP being around twice as long and around for years during the nascent phase of open source web apps, the number one reason it has more and more popular turnkey apps is the same reason it "killed" perl: easy deployment.

The secondary reason is indeed cultural, but not it's nothing so abstract as what 37signals does. Rather it's the technical culture of moving fast and breaking things. With Rails you need to stay on top of upgrades all the time. If you are actively working on an app then this is a net benefit because you get new features. But it also creates maintenance work downstream, and not just with application code, but application servers are also relatively unstable. When you have something with a high heterogenous installation count like WordPress or other popular open-source apps, the pain of maintaining version compatibility and keeping it running over time far dwarfs any benefit of using a more powerful language like Ruby.

<comment><USER5> You would still have an update problem with wordpress since it's a very popular attack target. One of the things that has made me shy away from using it is fear of running into a problem like "we need to upgrade to version X in order to fix a security issue, but version X breaks plugin Y".

I guess what I was mainly getting at was that prior to around the time that rails and 37s got going the idea of paying monthly for web based Saas hadn't _really_ exploded in the public consciousness (of course this was due to many factors other than 37s and rails).

So web developers who didn't want to do consulting would naturally think of the shrinkwrap type model first as a way of selling software.

<comment><USER12> Sure dependency hell, it's a problem anywhere. It's _the worst_ in Rails though. Absolutely 100 times worse than PHP.

</comment></comment></comment></comment><comment><USER13> I think timing is big here. These content management systems came out at just the right time and they have had a long period to evolve and further entrench their market positions.

At the time these things came out, even basic features were a big deal. PHP was the only platform which was easy to deploy on shared hosting (VPS and cloud were unknown terms at that time.) Today these systems occupy a niche where there is enough demand to give them a seriously high profile on the web but the space isn't compelling enough to make developers spend a lot of time here. There also isn't compelling reasons for consumers to switch away from the big players.

Today, I think the CMS is an aging idea.It seems that every day I see some new component or service which I could just drop in to an app to build as another piece to building a custom CMS. Eventually it may be as easy to create a custom CMS as it is to configure an existing one today. Not that it's not already easy to throw something together with just Rails and some add-ons. You can get a long way with Rails barely even knowing Ruby.

Also, as we move closer to an API web with a client (mobile and web) heavy in JS consuming JSON, then a CMS probably needs to change quite a bit to stay useful. The CMS would basically just be a publishing tool to create content for the API. It would be less useful for creating layouts and generally dealing with the front-end. Mobile would need something else entirely.

I don't think these things are going to go anywhere for a long time. The niche need will be slow to die. But I just don't see a big opportunity for putting in the hard effort of creating one now. The available systems are largely good enough.

</comment><comment><USER14> I was discussing this the other evening.

I've written a Django CMS that for in-house use.

In some ways there's not much to it and it could easily be broken into separate things:

Mainly:

1\. WYSIWYG integration

2\. An extensible 'Page' model

3\. A way to generate site navigation

4\. Admin customizations to make it more friendly for users.

In addition I reuse some excellent 3rd party packages.

Now - there are alternatives to all 4 things above that I could have reused but they were either lacking or not around when I started. I've ended up with something that covers my target market pretty well.

However I do feel there's room for another layer on top of Django - or maybe just some more reusable app conventions and a kind of 'CMS standard library' that made it more obvious to a newbie what to try first.

I know this isn't far from what Pinax was attempting but that seems to have gone very quiet.

Actually - several of the Django CMS projects are designed to be very lightweight and modular (FeinCMS is one - I borrowed some of their code and the author was very helpful) so maybe they already fit this bill.

</comment><comment><USER15> They are not rare, there are CMS systems not covered in this blog post. On the Ruby side, take a look at the Ruby Toolbox to see many more content management systems: [https://www.ruby- toolbox.com/categories/content_management_s...](https://www.ruby- toolbox.com/categories/content_management_systems)

It has the built-in "Well, there are a lot of CMS apps but not many used," but the other side of that is that there two (maybe three) very-popular and often- used content management systems in Rails that the author does not even mention. He claims to "spend more time looking at content management than most people" but then he has no knowledge of the most popular ones??

This statement is the biggest whopper:

"The existence and competence of Rails and Django have prevented a serious, shared CMS ecosystem from developing around either Ruby or Python."

I develop apps in Ruby and Rails, and it's the exact opposite. I use great systems like RefineryCMS or Spree to quickly get the framework of a site together, I pull from a _massive_ amount of gems to get most of the functionality that I want, I reuse my private gems to get features specific to my needs, and.... at the end of the day, I only write what little code I need that is _truly_ custom to the client's needs. I'd say that it takes some of the fun out of developing web apps if I wasn't happy being so __productive __.

The build-your-own aspect he mentions is true, though, but it's a problem with developers more than with the existence of Rails or Django. In my experience, many devs would rather work on their own because programming is fun and they want to solve problems like that -- and they want to be paid for that work. The way it usually works is, a dev will look at a tool, find some obscure reason why it "won't work," and then spend the time building his or her own. And since many managers don't have the knowledge to override bad developer decisions, they get away with it.

</comment><comment><USER16> So what Ruby or Python framework offers out of the box for the end users:

\- Worflows

\- Content of management, publication dates, input formats

\- Integration with multiple types of data sources

\- Easy WYSIWYG manipulation of pages for content editors

\- Out of the box integration with multiple notification mechanisms

\- Click tracking for report generation

\- ...

A CMS is much more than building a frontend with some set of templates and DB plugins.

</comment><comment><USER17> Another CMS for Rails : <http://www.locomotivecms.com/> didn't have much chance to play with it, but on paper, it's support i18n, custom content types and associations (belongs_to, etc.) and also give you an automatic JSON API.

</comment><comment><USER18> Another major Rails CMS is Refinery CMS. I've been working with it for a while and it is really good! It just follows the Rails way and it has a lovely content-only backend. <http://refinerycms.com/>

</comment><comment><USER19> My agency wrote a rails CMS called Atreides powering at least 20 sites with high traffic and recently open sourced it. It was very much inspired by Tumblr's simplicity but adds a lot of flexibility particularly with images, videos, social components, analytics, and mixed media content creation. <http://the88.github.com/Atreides/>

<comment><USER20> Looks interesting. Just a quick tip, the <title> tag spells Atreides wrong.

</comment></comment><comment><USER21> Well, PHP CMS's popped up like crazy because a lot of PHP frameworks didn't exist or weren't popular yet when the CMS's started popping up. Also PHP has had a history of being anti-framework or a lot of reinventing the same framework concepts over and over again. With a decent MVC framework you can roll your own blog/cms in like an hour for the most basic of functionality.

With ruby and python having great frameworks for building things fast, devs are more likely to roll their own custom CMS than they are to use an off the shelf CMS that doesn't quite fit their needs.

In fact, django was built so that the devs working at newspapers could crank out little custom CMS's for their various data projects incredibly fast. It started as a CMS framework, so of course it would remove the need for a generic community CMS.

</comment><comment><USER22> Built lots of CMS in Django. In my experience, they are usually custom and never the same.

For this reason I usually use FeinCMS (<http://www.feincms.org/>) and configure/customise things according to my client's needs.

</comment><comment><USER14> Obligatory link to Django Packages: <http://www.djangopackages.com/grids/g/cms/>

</comment><comment><USER23> Django CMS is very good and pretty popular. I've used it on 5 decent sized projects now and my clients love it's in-page editing. The dev community is active and the next version looks really promising.

</comment><comment><USER4> Could it just be because Rails and Django are FRAMEWORKS and not just CMSs?

<comment><USER24> Yes this is what the article says. I've started playing around with Ruby On Rails and really appreciate the way the framework is structured. Before that I was dabbling in node.js and had to make up my own project structure, which could end up doing more harm than good by making me confused. Moreover, in node.js I had to download multitude of modules just to get some basic features working whereas with Rails I have a plethora of already available features which really makes my life easier. I have never touched Django but I do believe it comes with lots of boilerplate to help you hitting the ground sprinting!</comment></comment>


Rails 4 UUID primary keys with PostgreSQL - <AUTHOR> http://labria.github.io/2013/04/27/rails-4-uuid-primary-keys-with-postgresql/

<comment><USER2> (Caveat: I know this about SQL server, not Postgres)

If you use random UUID's (as opposed to sequential UUID's) for your primary key your database will spend an extra hunk of time on reordering your PK index on disk on insert. This bit us at Stackoverflow. So remember: just because you can do something doesn't mean you should.

<comment><USER3> What's the advantage of a sequential UUID over an auto-incrementing integer?

(Keeping in mind that both can be started at N on different shards, or prefixed.)

<comment><USER4> You can merge any two data buckets, without any risk of id collision.

</comment></comment></comment><comment><USER5> I commented on the OP's article, but do this for the pk:

        create_table(:users, id: :uuid) do |t|
          t.string 'name'
        end

And to make sure the extension is enabled, (in your migrations) do:

        enable_extension 'uuid-ossp'

For now, make sure to use SQL schema dumping. I don't think Ruby schema files will work (as I haven't written a test for it yet).

EDIT: I forgot to mention, you can enable hstore by using "enable_extension('hstore')"

</comment><comment><USER6> Sorry for the up coming stupid question but...

What is the value of this? Why can't unique identification be done using just regular increments on an ID column? Or even a composite key?

<comment><USER7> It's also useful if you don't want your URLs to expose how many of a certain thing you have, whether it be users, posts, payments etc. A lot of sites let you derive how much activity they have based on how fast their numeric IDs increment. You could use a separate token alongside the pkey to do the same but this feature just makes it simpler.

<comment><USER8> Along the lines

[http://www.wired.com/autopia/2010/10/how-the-allies-used- mat...](http://www.wired.com/autopia/2010/10/how-the-allies-used-math-against- german-tanks/)

[http://www.jackofallclouds.com/2009/09/anatomy-of-an- amazon-...](http://www.jackofallclouds.com/2009/09/anatomy-of-an-amazon- ec2-resource-id/)

</comment></comment></comment><comment><USER9> I think the primary_key line should be:

        t.primary_key :id, :type => :uuid

<comment><AUTHOR> It's actually: t.primary_key :id, :uuid

</comment></comment><comment><USER10> If you'd like to use UUIDs in Rails 3, I've been maintaining the activeuuid plugin for a while now:

<https://github.com/jashmenn/activeuuid>

</comment><comment><AUTHOR> See my second, more detailed post here: [http://labria.github.io/2013/04/28/rails-4-postgres-uuid- pk-...](http://labria.github.io/2013/04/28/rails-4-postgres-uuid-pk-guide/)

</comment><comment><USER11> Or just use Sequel already, works with all versions of Rails (and without Rails too).

</comment><comment><USER12> Now if only I could get this working with Postgres.app

<comment><USER13> Running on rails 4 it should be:

       $ rails g migration add_uuid_to_postgresql

       class AddUuidToPostgresql < ActiveRecord::Migration
         execute("CREATE EXTENSION uuid-ossp;")
       end

       $ rake db:migrate && rake db:test:prepare

Then create a table as shown in the article, and it should work.

<comment><USER14> For this to work, the PG role that the Rails app is using has to be a superuser, as AFAIK only superuser roles can execute CREATE EXTENSION.

Does anyone consider this an issue? I have been using non-superuser roles within my Rails apps, and using an outside superuser role to add extensions with an external tool (like pgAdmin).

<comment><AUTHOR> Yes, that's exactly I didn't include it in the migration in the example.

</comment></comment></comment></comment><comment><USER15> Can you use find_in_batches or find_each with UUIDs?

<comment><USER13> Of course, both of those methods are members of ActiveRecord and will work regardless of how you filter your records.

<comment><USER16> But don't those methods rely on the sequential ordering of auto incrementing ids?

<comment><USER13> After reading the documentation more clearly. [http://edgeapi.rubyonrails.org/classes/ActiveRecord/Batches....](http://edgeapi.rubyonrails.org/classes/ActiveRecord/Batches.html). It looks like there may need to be a patch for this feature, however the batching process forces the database to make a query in Ascending order for the primary keys so as long as you can generate new UUIDS in ascending order you should be fine. However problems look like they will occur if you generate a new record that has a UUID that would be inserted randomly between two numbers in the UUID range. I will see if I can bang something out and issue a pull request.

<comment> w-ll I was dealing with a similar issue on a project that all id's are UUID's because I wanted non-sequential id's.

I found it was just as simple of selecting ranges based of their date_created attribute.</comment></comment></comment></comment></comment>


Twitter and Me - <AUTHOR> http://blog.jazzychad.net/2011/03/14/twitter-and-me.html

<comment><USER2> > "There should be a federated, distributed, open-source protocol that will > replace Twitter and Facebook and let our data be free!"

> no average user wants that. Really, they don't. If you haven't seen > Diaspora's Easy 25 Step Quick Start Guide, you should take a look. Is your > mom going to do all that?

I really wish people would stop repeating this straw-man. XMPP is a federated, distributed system, and my mom can use it fine without setting up her own servers. Is it that hard to understand how the same thing would apply to status updates?

<comment><USER3> I don't know about this. I presume you mean she's using something like Google Talk, built on XMPP? While that's true, I'm not sure it has the same requirements. Twitter works because there's no fragmentation - everyone you care about is in one place. A system of loosely federated systems would lose a lot of the "authoritative source" value it seems. Of course, I could be wrong here, that's only an initial reaction, so feel free to correct me!

(I presume on Google Talk it's only commonly possible to speak to other people on Google Talk? I presume you could change the server config or set up your own XMPP servers, etc, but does anyone?)

<comment><USER4> No, you can chat with people across servers, thus the federation. Somebody using jabber.org can talk to somebody using gmail.com.

There are even bridge transports to let jabber users talk to ICQ users and Facebook users. It's quite extensible. More here: <http://en.wikipedia.org/wiki/Jabber>

<comment><USER3> Hmmm, thanks for the information on that, it makes sense :) It still seems like some of the authoritative aspects of Twitter which provide value would be lost, but I am grateful for the clarification on that.

</comment></comment></comment></comment><comment><USER4> Great post, thank you Chad.

I'm feeling the same disdain about committing to Twitter. I launched <http://socialgrapple.com/> a few weeks ago--a social graph analytics product built on the Twitter API, and I'm pulling a bit of revenue already (a dozen paying customers). Now I have two choices: I have some wicked ideas of how to expand further on the Twitter API and provide even more value to customers who have expressed clear demand, or do I try and diversify onto other platforms to avoid getting bulldozed.

I know I can build a better and more valuable service with less effort by continuing to build on the Twitter platform. My developer instinct says "do it" but my business instinct says "forget the opportunity and diversify somehow." Diversifying is tricky because the graph mechanics on Facebook aren't the same, it seems the value of this intelligence is lower. Only other relevant market I can think of is something to do with SEO/web search terms vs domains.

I also know Twitter is building an internal analytics product, based various leaked screenshots, to complement their business model (tracking tweet impressions) but luckily it seems there's no overlap with what I'm building... yet.

I don't mean to hijack this thread but it seems relevant and I would love some feedback.

\--

On a side note, I wrote a post in another thread that questions the details about the recent shift in Twitter's spirit towards developers:

What if before @replies, #hashtags, RT's (all invented by third parties), @Twitter said "don't make more clients"? <http://news.ycombinator.com/item?id=2321837>

<comment><USER5> Not that you should take my advice, but I'd listen to your customers. It sounds like you have a good product and they just want more features. Being an enterprise app, you're safe from Twitter's growth for the foreseeable future; they still have a lot of consumer holes to fill.

Going the multi-platform route is overrated in my opinion. You'll just become the lowest common denominator between the two. Either become your own platform, or really nail what you're doing on one.

</comment></comment><comment><USER6> Big applause for my cofounder Chad launching his blog. I knew he was up to something.. he was asking me Jekyll questions in Campfire this weekend. Then I woke up at 7 this morning and he was still in Campfire saying he wrote a big post.

His blog is actually hosted by S3 but I'm sure he'll write a post on Jekyll stuff later.

</comment><comment><AUTHOR> If you make it all the way through, congrats! I apologize for the length of the post, but it was just dying to get out of me.

<comment><USER3> I thought it was interesting. Made it through to the end and pretty much agree with the points you're making. More people should consider the long term effects of building on platforms where they have no control of direction. Everyone knows the sharecropper story, not enough people consider it.

Also, many congratulations on having a wife who sounds like a saint.

</comment></comment><comment><USER5> Thanks for writing this Chad, well worth taking 15 minutes to read. As you said, the writing has been on the wall for the past year at least.. and I have to ask, why did you continue to bother?

To me "don't fill holes" says it all. Use Twitter data, but don't be a "Twitter company". If a one sentence description of your company includes the word Twitter, you're in the wrong business. There are many uses of the API that Twitter isn't going to touch. Is Twitter going to build a Zite like app (recently launched news/reader iPad app)? No. Is Twitter going to compete with StockTwits? Not a chance.

Ideas should center around a general need or want. Then see how Twitter, Instagram, other APIs can be used to leverage those ideas.

</comment><comment><USER7> _A couple of weeks later I received an email saying, "Thanks, but no thanks."_

Weeks? That's pretty obnoxious.

The lack of feedback is pretty standard. Companies are scared stiff that they'll get sued for something they say, so they try to say as little as possible.

<comment><USER8> I interviewed with a company in San Jose for a job on Nov 16th last year. And guess when I got a answer back from them? Dec 23rd. Yep, that's right. And not like it was some big corporation or a shady company, its a legit publicly traded $2B up and coming firm. As an active job seeker, it has been a very frustrating past 4 months for me. People don't respond after phone interviews or after interviews. And yet if I make a single mistake I always keep thinking about if that costed me that opportunity. Sorry for the unrelated rant.

</comment></comment><comment><USER9> Very good writeup, Chad. I too have, apparently, flunked Silicon Valley up to this point. It's really great that you've been relentlessly pursuing it, though.

I had the same reaction about Chirp. I started to get the feeling from Twitter around the time of Chirp.

I was always wary of building apps that are completely dependent on someone else's platform to live and, indeed, my own startup was dealt a serious setback by the release of OpenVBX. So my fears were valid, after all.

My own Twitter usage has changed quite a bit lately, as well. I've given up on keeping up with what's going on. I check it less and less each day it seems. I had an idea this weekend about using small GroupMe groups to share ideas instead of Twitter because I could segment people better that way...

Anyway, It will be interesting to see what Twitter looks like in a few years...

</comment><comment><USER10> Chad-- Marshall @KE4ZNR here. We actually met up for a few mins at the Durham Tweetup at Bronto. Just wanted to say as a satisfied user of both Notifo and Pushly that any company out west would be lucky to have your skills in their arsenal. I am glad you and Kim are doing well and you still have the support of the Triangle Twitter Community in whatever projects you tackle in the future. Look forward to seeing what the future holds for you. All the best from Raleigh. Marshall @KE4ZNR

<comment><AUTHOR> Thanks, Marshall!

</comment></comment><comment><USER11> Do you miss the hardcore network stuff? I would.

This was a great post. Thanks for writing it.

<comment><AUTHOR> Yes, I do sometimes. Flipping bits is just so much fun.

Thanks for reading!

</comment></comment><comment><USER12> Great post Chad. I work for an SF startup and have been trying to sell my house in Texas for 6 months. It's ridiculously frustrating and stressful. Best of luck on your house selling!

</comment><comment><USER13> Thanks Chad for sharing your story. I remember you vividly from a dinner in Raleigh with Matt Mullenweg, Wayne Sutton, etc. You're a rock star. Code strong.

</comment><comment><USER14> Chad you've got half the screen play for the sequel to the Social Network, the best parts are ahead and I'll +1 you hitting big any day!

</comment><comment><USER15> Chad, thanks for writing this post. It's inspiring and embarassing at the same time to see how many things you built in your spare time.

</comment><comment><USER16> Thanks for sharing your story Chad. It honestly is quite inspiring.</comment>


Wix Code – Creation Without Limits - <AUTHOR> https://www.youtube.com/watch?v=Sh-OHHosvsc <comment><USER2> Does anyone here have actual experience of Wix vs. Squarespace? The only time I've ever come across Wix, the sites that had been created seemed really shady. (Not that I can blame Wix for that, unless that's a market they deliberately targeted, e.g. by being free.)

They're pushing ads on YouTube _hard_ at the moment, presumably because they've seen Sqsp and realised that it's a market that they should have owned. My perception is that they've been around longer?

Should I be looking at them?</comment>


Dish Network, the Meanest Company in America - <AUTHOR> http://www.businessweek.com/printer/articles/89174-dish-network-the-meanest-company-in-america <comment><USER2> this was interesting:

> Over time, Neuman says, he came to realize why former presidents such as > John Reardon, who lasted less than a year, described Ergen as "pounding > people into submission." The hours were long, yes, but it was Ergen's habit > of unilaterally making decisions that most irked Neuman.

> Although Dish had more than 100 people employed in its marketing department > and reams of customer data to analyze, when it came time to figure out how > much it was going to charge for satellite service, Ergen went into his > office and came up with the final number alone. "It would be like the CEO of > Kraft (KRFT) getting up in the morning and determining how much they were > going to charge at retail for 12 slices of American cheese," says Neuman. > "It wasn't that he didn't invite input or share his thought process, because > he did both. It's just that he'd had his hands on the wheel for so long that > he trusted his own judgment the best."

> What made it worse, Neuman says, is that Ergen was almost always right. > Eight months after accepting the job, Neuman resigned.

</comment><comment><USER3> Funny read!

</comment><comment><USER4> The idea of creating a website where employees could go to rate their employer came to me out of the blue not too long ago, and I filed it away as something I could make once I finally taught myself how to program. Turns out it already exists, and is going strong. Good idea, a little late. I really need to get on the ball...</comment>


Our framework for adding social signals to our remote work product - <AUTHOR> https://pragli.com/blog/our-framework-for-adding-social-signals/ <comment><USER2> I like this idea; current functionalities in most of my communication apps is seriously out of date. There's got to be more to that than just a little "away" badge! Good on this devs for trying something new.

Now just to have an "I'm not actually at my desk I just ate too much Mexican food for lunch and so will work out of the bathroom for the afternoon." lol

<comment><AUTHOR> Thanks ydb! Small world but that status would have been super relevant for me today :)</comment></comment>


Show HN: A drop and drag web builder (desktop only) - <AUTHOR> http://test.webxay.com <comment><AUTHOR> Hi guys,

I've been working on this web builder, with the goal is to be able to just drop & drag to create web apps (current only build static websites with animation)

Your feedbacks are appreciated!</comment>


Show HN: Ingage – Reward your live stream instantly for free - <AUTHOR> https://get.incent.com/ingage <comment><USER2> Your landing page should have, at minimum, a description of the product or a relevant video (maybe this one [https://www.youtube.com/watch?v=KX0A9odwZ5U](https://www.youtube.com/watch?v=KX0A9odwZ5U)) before your ask for signups. I don't stream right now, so I have no incentive to sign up for this.

But I occasionally watch streams. Maybe I could recommend this to a streamer I watch. I imagine many people in my shoes would just close the tab at [https://get.incent.com/ingage](https://get.incent.com/ingage) when it requires a log in. Maybe also some streamers, your target demographic, would close the tab if they are skeptical about giving a log in to a product they know nothing about.

That youtube video isn't ideal, maybe you have a better once, since it feels like it could be 30 seconds and the first half is the noisier half.

</comment><comment><AUTHOR> Hey HN Community :) Co-Founder here at Incent.

So Ingage is a product that we've been working on for a while now. It came about to help a way for live streamers like my friends reward their audience and thank them for watching and supporting.

So traditionally, many live stream platforms only allow the audience to donate "bits" or "bobs" back to the streamer. Sometimes it's real $ but in most cases its just some random thing that has no real value. It's pretty good that they are getting something, but we thought there has to be a better way to help streamers and influencers give back to their community too.

So we build Ingage. It's our engagement platform between streamers and their audiences.

Its completely free to join and use. What does it do? \- It allows a streamer to create a campaign. Campaigns are the time blocks that they are going to stream. \- When a streamer creates a campaign, we automatically generate a set of codes that we call "Drop Codes". \- Then the magic is that we provide a special add on that they can use on OBS, Streamlabs OBS or XSplit (these are broadcast tools). \- When they add the add-on our software takes care of the rest. \- Viewers see a banner that shows the drop codes at random times during their live stream. \- Viewers go to [https://get.incent.com](https://get.incent.com) and are able to enter that code and redeem is instantly for some $$ value of the Incent crypto-currency that is currently traded on exchanges globally. \- The streamer is able to instantly reward their audience! \- The streamer gets real time stats about who is redeeming and earning rewards on their live stream and as a result their engagement in the live stream is buzzing. \- This isn't a new streaming platform. Instead its a service for streamers and viewers to help make the streaming ecosystem more vibrant. \- Ingage works on any streaming platform: Twitch, Mixer, DLive, Facebook Live!

It's currently live and working on some awesome streams at the moment.

We have several new features coming down the pipeline too like donations, verification badges, more display overlays, dark mode and most importantly are currently working to make it possible for streamer to earn an income from using Incent completely free.

I would love to get your feedback about it. If you are a streamer, test it out! It's completely free!

</comment><comment><AUTHOR> Actually that's a very good point. The actual landing page is [https://incent.com/streamers](https://incent.com/streamers)</comment>