Building a fast, secured and free static site in less than three hours - <AUTHOR> https://fillmem.com/post/self-hosted-fast-secured-and-free-static-site/ <comment><USER2> Neocities [0] does all of this!

\- It's free (though you can become a supporter and get some extra benefits) [1]

\- It's fast, since it uses it's own CDN. [2]

\- It's secure, all pages support SSL, even with custom domains. [3]

\- It has a command line tool [4] that can be wrapped to automate upload of pages, or used in a Git hook.

\- It has a plethora of learning resources [5].

[0] [https://neocities.org](https://neocities.org)

[1] [https://neocities.org/supporter](https://neocities.org/supporter)

[2] [https://www.youtube.com/watch?v=-i6wvix6buI](https://www.youtube.com/watch?v=-i6wvix6buI)

[3] [https://blog.neocities.org/default- ssl.html](https://blog.neocities.org/default-ssl.html)

[4] [https://neocities.org/cli](https://neocities.org/cli)

[5] [https://neocities.org/tutorials](https://neocities.org/tutorials)

<comment><USER3> If you don't like to play with CLI and want to host files on Amazon's S3, go with the Sheetsu Pages [1] (I'm co-founder). \- It's uses Amazon's S3 CDN, actually your site is deployed to their all edge locations \- supports https \- you can add your custom domain \- you upload files to Google Drive, click sync button and it's done

[1] [https://pages.sheetsu.com](https://pages.sheetsu.com)

<comment><USER4> Bad ssl

<comment><USER3> Why?

<comment><USER5> > pages.sheetsu.com uses an invalid security certificate. The certificate is > only valid for the following names: sheetsu.com, www.sheetsu.com Error code: > SSL_ERROR_BAD_CERT_DOMAIN

<comment><USER3> All the pages hosted with Sheetsu Pages are hosted under sheetsu.io domain. Which has wildcard SSL.

<comment><USER3> Replying to the child comment from whorleater - that's a good catch! Our mistake with the domain redirects and certs. Will fix it ASAP. Thanks for spotting this bug.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I host mine on Digital Ocean. I commit the code to github, dev branch is deployed to stg.mydomain and master is deployed to mydomain.

In terms of deployment, I use Caddy which, with ~3 lines of config will auto- TLS your site using Lets Encrypt, and handle renewing the certs for you each month. Caddy also automatically pulls your changes, builds them with hugo and deploys them with ~2 more lines of config.

It's the easiest solution (as a developer) I've come across where I just commit to Github and my blog is updated, and Caddy deals with my cert renewals.

<comment><USER7> Assuming your blog is technical, this would have been a good chance to get some more traffic by at least mentioning the actual domain, linking to the github repo, or having one or both of those in your profile.

Edit: Not sure why this has been met with a stream of downvotes. Is there something wrong with saying "I use a different approach to publish this blog: [link]," especially if it's technical and would be of interest to HN anyway? I see many people do it constantly, even when it's not relevant to the article or discussion at hand.

Edit 2: I don't generally care where a post is but this went from -2 to +6 pretty quickly. Weird?

<comment><USER8> "Edit 2: I don't generally care where a post is but this went from -2 to +6 pretty quickly. Weird?"

Probably I can answer that :) I noticed that when one of my posts get down voted even when having a neutral comment, it swings back to positive fast when touching -1 or -2. I guess that the gray comment takes a while for HN'ers to notice as down voted. And when they find that there is nothing wrong with it or they actually like it, many people simultaneously click the upvote swinging it back wildly to positive zone. It is HN's own version of 'universe making right what it deems as correct' :D

<comment><USER9> I think we need to clarify what a down vote is... My assumption was it was to flag something mean or off topic. Now People seem to use it to say "I disagree with your opinion but am too lazy to express my own".

<comment><USER10> Ask HN: Why has the downvoting timelimit been reduced? | [https://news.ycombinator.com/item?id=12330029](https://news.ycombinator.com/item?id=12330029) (Aug 2016)

TL;DR: _I think it would be a big mistake to [...] outlaw downvoting for disagreement_ \- dang (HN mod)

<comment><USER11> Yeah pg agrees with that. In the early days downvoting for disagreement was discouraged among the heavier users, but things change.

</comment></comment></comment></comment></comment></comment><comment><USER12> I wrote a similar blog post: [https://tberra.com/aws/amazon/meta/2016/11/12/the-birth- of-a...](https://tberra.com/aws/amazon/meta/2016/11/12/the-birth-of-a-blog/)

The main differences on mine are:

\- I use Jekyll, which is ranked #1 in the static site generator space.

\- Hosted on AWS S3.

\- CloudFront in front of S3.

\- Routing and aliases handled by Route53.

\- Deployed using a tool called s3_websites (change detection only uploading generated files AND cloud front cache invalidation for only the changed objects).

\- Coded in a Docker container via a cloud IDE called c9.io using the Ruby template.

\- Generator and site files committed to a GIT repository hosted on AWS CodeCommit.

<comment><USER13> I see both Jekyll and Hugo mentioned frequently in the "Using GitHub and X to host your website" space. Do you have any practical our technical reasons for preferring one over the other?

<comment><USER14> Having used both quite a lot, I much prefer Jekyll's template language as it's easier to use and more readable. It's a lot easier to install plugins to extend Jekyll as well. However, Hugo coming in a single binary makes it easy to get working when you come back to a site you've not updated in a while (my Jekyll toolchain was a combination of Ruby + Node + Gulp that felt brittle but could be improved with some work), it's suppose to be significantly faster (I've seen people saying it takes Hugo seconds to generate thousands of posts compared to minutes with Jekyll) and I've had less issues with Hugo's watch feature (Jekyll doesn't refresh when you change files sometimes for me). I don't use a lot of plugins or complex templates so the speed and simplicity of Hugo is a big factor for me.

<comment><USER15> Does Hugo support partials? An equivalent of frontmatter? Slim Lang?

<comment><USER14> It has partials, Front Matter as well and you can use Ace or Jade templates as an alternative but not Slim Lang as far as I know.

</comment></comment></comment></comment></comment><comment><USER16> Holy cow. Is this an improvement? Remember in 1999 when you could get a static website up in 3 minutes using ftp?

<comment><USER17> I made my first website using vi to make an index.html file in the ~/public_html directory in the home directory of my account on a university Solaris server back in 1997. FTP was a luxury.

Kids today.

<comment><USER18> Can we avoid the ageism?

<comment><USER19> It's called humorous nostalgia. You must be young if you're so easily offended.

<comment><USER20> Can we avoid the ageism?

<comment><USER21> It's called sarcasm. You must be old if you don't get it.

<comment><USER20> Can we avoid the ageism?

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> Note that in this setup, the connection between Cloudflare and GitHub is plaintext / not secure, because by default Cloudflare uses "Flexible SSL".

It is possible to make it more secure by changing the setting to "Full SSL (non-strict)", which encrypts the connection between Cloudflare and GitHub against passive attacks but not active interception. Unfortunately, GitHub pages does not work with Cloudflare's "Full SSL (strict)" option.

Cloudflare SSL Options: [https://support.cloudflare.com/hc/en- us/articles/200170416-W...](https://support.cloudflare.com/hc/en- us/articles/200170416-What-do-the-SSL-options-mean-)

Example of attack between Cloudflare and origin: [https://medium.com/@karthikb351/airtel-is-sniffing-and- censo...](https://medium.com/@karthikb351/airtel-is-sniffing-and-censoring- cloudflares-traffic-in-india-and-they-don-t-even-know-it-90935f7f6d98)

GitHub issue page: [https://github.com/isaacs/github/issues/156](https://github.com/isaacs/github/issues/156)

</comment><comment><USER23> After many different iterations, I'm now using netlify (with middleman). Really hard to beat.

GitHub pages are amazingly fast and a pretty good default choice. With cloudflare it's a pretty solid combo.

But netlify's awareness/integration between the content and the cdn is really compelling. Imagine they'll be able to do a lot more with it down the line too.

<comment><USER24> Me too. My personal site is in Middleman hosted on a digital ocean instance so I can have more control of that side (also wanted to learn more about nginx and SSL) but lately I've been using Middleman with Netlify - it's unbeatable for getting projects up and running fast.

Built-in continuous integration and automatic SSL, you can even get your domain through them. Their CMS makes creating a fully featured blog ridiculously easy. 10/10 would Netlify again.

<comment><USER23> Yup! Actually I forgot one feature that would be nice - being able to get the raw HTTP logs...

</comment></comment></comment><comment><USER25> The author has done a great job of documenting all the low-level details about even how to use git to push stuff to the GitHub repo. Kudos for the excellent documentation.

I use Hugo + Gitlab + Netlify (free https). I use Emacs as my development environment, and Magit ([https://magit.vc](https://magit.vc)) has come as a boon to me. All the git shell scripting mentioned in this post reduce to few key strokes with the help of Magit. I'm not intending to divert the topic, but couldn't help mentioning that the Magit Kickstarter [1] needs some love.

Coming back to the Hugo topic, I believe that the 3 hours is a good practical estimate for someone who has never dabbled with git/github, domain control tweaks, CNAME, etc.

So don't take that 3 hour mention as a negative, and jump right into the post. Once you have the whole setup, updating your site is a simple git commit + git push (hardly a minute -- not counting the time it takes to gather content for a new post :)).

[1]: [https://www.kickstarter.com/projects/1681258897/its-magit- th...](https://www.kickstarter.com/projects/1681258897/its-magit-the-magical- git-client)

</comment><comment><USER26> I had really hoped that this was about building a static site, but again you'll end up with a blog.

I've created an actual static site myself, but it takes a bit extra - especially from the theme.

Also, I don't understand why you'd use Hugo with Github when it already supports Jekyll?

<comment><USER27> hugo builds are faster than jekyll, or so it was atleast the one time I experimented with it...

<comment><USER26> That might be the case, but when using jekyll you don't even have to build anything - you simply change the source and gihub builds it automatically.

</comment></comment></comment><comment><USER28> I wonder why people (many devs included) use stuff like wordpress to host simple blogs. static site generators are a blessing :)

I built my own custom static site generator (python + jinja2) for running my side project[1]

I just git push and Netlify picks it up. Simple, to the point and no JS.

[1] I run [https://discoverdev.io](https://discoverdev.io) , a "product hunt" for top engineering blog posts!

<comment><USER29> The answer to your question is in the second paragraph.

</comment></comment><comment><USER30> I rolled my own static site generator for very little effort. As it stands, the generator (which isn't public so you'll have to take my word on it) is ~100sloc plus templates, CSS, etc. The process has been interesting and educational, and I recommend it on those grounds. Adding and modifying features is very easy since it's so little code to work with. Currently:

\- posts are rendered from markdown with syntax highlighting for code

\- safe links to other domains (noopener and _blank)

\- bundled CSS, which look good (or as bad) on mobile

\- a PWA (the service worker is the only JS run client-side)

\- pre-populated links out to twitter (with a card) and mastodon with tags drawn from markdown metadata

\- HTTPS using a letsencrypt cert and a one-liner in cron.daily to update it when close to expiry

\- a smallish nginx config focussed on security to serve files

Much of the generator is just glue code around some good modules. Some important things like safe links were hacked together by me.

(if you're interested, [https://qubyte.codes](https://qubyte.codes), but I need to post more often)

</comment><comment><USER31> Bit surprised to see this advertised as 3 hours (how long can it take to dump HTML into a gh_pages branch & push?). After reading, I see that there's a huge overhead in setup and configuration. The complexity seems way out of line with the result!

<comment><USER32> Looks like it's all mainly to do with the static site generation though. You can certainly still dump some handmade html into a gh-pages branch and have a (non-generated) static site in less than ten minutes.

</comment></comment><comment><USER33> Or you can just use Gitlabs pages which can handle Hugo generation for you. I do that and I definitely did not spend so much time by it. I can also add new posts directly from Gitlabs UI, which is nice.

</comment><comment><USER34> I use Pelican and host on NearlyFreeSpeech.net behind Cloudflare. I really like using Pelican. I'm hardly a front-end dev and I found it easy to create a custom minimalistic theme that I'm quite happy with. No JS required! Fire up your network monitor and head to [https://brashear.me/blog/2017/07/30/migration-from- octopress...](https://brashear.me/blog/2017/07/30/migration-from-octopress-to- pelican/) It's pretty easy to see <500ms load times.

Octopress was getting to be a pain in my butt due to ruby dependencies being awful to deal with.

<comment><USER35> "Ruby is annoying"... then suggest Python :)

<comment><USER34> pip isn't great but I've had a much better time with it than rubygems.

</comment></comment></comment><comment><USER36> Is there a piece of software that creates nice looking static photo galleries? I have used a few and they all seem to suffer from design that is 10-15 years old.

<comment><USER10> Show HN: Exposé – a static site generator for photos and videos

[https://news.ycombinator.com/item?id=10376468](https://news.ycombinator.com/item?id=10376468)

> jack000: _there was some interest in what I was using for the backend, so I > cleaned up the code a bit_

[https://news.ycombinator.com/item?id=10794715](https://news.ycombinator.com/item?id=10794715)

> hlawson: _Expose looks very impressive_

hat tip: [https://hn.algolia.com/?query=static%20photo%20comments%3E5](https://hn.algolia.com/?query=static%20photo%20comments%3E5)

</comment></comment><comment><USER37> As far as I know, Github pages doesn't support https for custom domains [1]. A better option for free hosting would be netlify, which supports Let's encrypt for custom domains.

[1] [https://github.com/isaacs/github/issues/156](https://github.com/isaacs/github/issues/156)

<comment><USER38> We use cloudflare on our Github pages custom domain, so you can easily get https support that way.

<comment><USER39> People need to stop calling Cloudflare's offering HTTPS support. It's snake oil.

<comment><USER40> This is the first time I've heard such claims. Do you have any more details about this?

<comment><USER41>
        +</comment></comment></comment></comment></comment><comment></comment><comment></comment><comment>+               +</comment><comment></comment><comment></comment><comment>+             +</comment><comment></comment><comment></comment><comment>-----+
        |                  |               |                  |             |                       |
        |    CLIENT        | +</comment><comment>---->  |    CLOUDFLARE    | +</comment><comment>---> |       YOU             |
        |                  |     SSL       |                  |   NOT SSL   |                       |
        +</comment><comment></comment><comment></comment><comment>+               +</comment><comment></comment><comment></comment><comment>+             +</comment><comment></comment><comment></comment><comment>-----+

</comment><comment><USER10> Are there any walkthroughs from zero to all done of best practices to setup a _product website_ using a static generator (Jekyll, Hugo, or whatever) rather than a _blog_?

I will see what is required to swap something like the kube theme into this guide:

[https://themes.gohugo.io/kube/#GettingStarted](https://themes.gohugo.io/kube/#GettingStarted)

      "There are a few concepts this theme employs to make a personal documentation site.
      It's important to read this as you may not see what you expect upon launching."

</comment><comment><USER42> Its not self-hosted if you rely on Github for hosting.

<comment><USER43> Seems like the author is now using 301 to redirect to a URL that doesn't include the term "self-hosted" in its slug.

</comment></comment><comment><USER14> I really like the speed of Hugo but I find the template language unintuitive and hard to read e.g. "if or condition1 condition2" and "lt 1 2". I wish you could swap it out for something else like Liquid templates...is that possible?

I'd just go for Netlify as well for hosting. It'll build Hugo sites for you when you push commits, they have a CMS you can connect with most static site generators, they deal with SSL setup for you and tons more features. Self- hosting anything eats up time and it wouldn't be as robust.

<comment><USER25> I have learnt that you can throw in parentheses for readability..

        if (or cond1 cond2)

<comment><USER44> The next logical step is to mark with parentheses the two branches of the if expression:

      (if (or cond1 cond2) (then) (else))

although i suppose it's not really hugo anymore..

<comment><USER14> Is there a reason something more standard like "if cond1 or cond2 then x else y" isn't supported? Parsing speed?

<comment><USER45> Maybe. It looks like Reverse Polish Notation.

<comment><USER46> It's regular Polish notation.

</comment></comment></comment></comment></comment></comment><comment><USER47> Just to make mention in the comments in case people haven't seen the product, I've found Amazon's Lightsail ([https://amazonlightsail.com](https://amazonlightsail.com)) incredibly easy and cheap to launch a simple website upon, along with using their Route53 for DNS hosting.

Even though I know all the ins and outs of AWS, I really like this product for simple projects.

(I have no affiliation with Amazon)

<comment><USER48> What are the costs associated with something like that?

</comment></comment><comment><USER49> This is the path I choose for most of my websites nowadays. Usually a combination of static generated website (I created my own generator), Firebase hosting (which offers the same free autogenerated SSL + url rewriting), and Cloudflare. Like this, it's fast, SEO friendly and most of all completely free.

</comment><comment><USER50> My preferred alternative is:

\- mustache(command line) + html

\- Firebase hosting (superstatic)

I just install a command line version of mustache for example [1] and run it over simple static templates:

`mustache data.json myTemplate.mustache > output.html`

I only need to install superstatic[2] locally if I want to debug a rewrite rule or redirect otherwise clean URLs work pretty well with a simple setting.

[1] [https://github.com/janl/mustache.js/](https://github.com/janl/mustache.js/)

[2] [https://github.com/firebase/superstatic](https://github.com/firebase/superstatic)

</comment><comment><USER51> Has Hugo made any progress with intergrating Jupyter Notebooks as a blog post? The latest version of Blogdown was just realeased and the R community has now an even better way of writing blog posts.

</comment><comment><USER52> Another nice feature on top of this type of setup is to set up CI hooks on your repo to check for broken links on every push, e.g. with [https://github.com/gjtorikian/html- proofer](https://github.com/gjtorikian/html-proofer).

Example: [https://github.com/mizzao/andrewmao.net/blob/master/Rakefile](https://github.com/mizzao/andrewmao.net/blob/master/Rakefile)

<comment><USER53> Checking for broken links is probably something you want to run every X days or something like that, rather when you push your update, unless you only want to check if you accidentally wrote a link wrong, rather than if the link itself broke.

</comment></comment><comment><USER54> I'm using React Gatsby on my blog.

I have access to all the npm ecosystem. Is fast. No bloatware or weird code.

Styles with styled-components for easy maintenance. [https://mateom.io](https://mateom.io)

Deployed to an S3 bucket connected to CloudFlare.

I just type 'yarn deploy' and it builds my blog and pushed it. And I can commit everything to source control as they keys are in aws-cli

<comment><USER55> > I have access to all the npm ecosystem. Is fast. No bloatware or weird code.

I see npm as the best source of slow, bloated, weird modules.

</comment></comment><comment><USER56> Might be a little off-topic but hopefully relevant enough. I'm rather new to web dev but currently have a static website hosted on AWS S3. My current workflow is to code the HTML and CSS files using Sublime Text then upload these files into a bucket manually via the AWS console. Is there a more efficient way to do this? And is there a simple way to enable HTTPS?

<comment><USER57> If you have multiple HTML pages, using a templating engine saves a lot of copy/pasting when you change headers, menus etc. (in the article they're using Hugo).

You can automate the uploading of files by writing a script to upload the files to the bucket so you can deploy in a single command (it gets trickier if you want to do a sync and delete files).

Personally I use rake [0] to create build and deploy tasks so I can do `rake build` and `rake deploy:prod`.

[0] [https://github.com/ruby/rake](https://github.com/ruby/rake)

</comment></comment><comment><USER58> A question:

I have nearly 0 experience with web-dev. I'd like to add some _minimal_ user tracking to my static site on Github; just when & where the requests are coming from (geographically), which posts they're looking at and maybe a referrer.

I don't want to use Google Analytics (seems unfair given that I block it). Is there an easy way to do this?

<comment><USER59> Honestly, I do use Google analytics on one of my sites. If figure, anyone who cares even a little bit about privacy will have it blocked. Using something more rare means that they might not be blocking it even if they would want to if they knew about it.

</comment></comment><comment><USER60> Can someone explain the use for cloudflare at the end? I thought you can do the same thing just through your domain registrar?

<comment><USER61> Cloudflare DNS is one of the best authoritative DNS hosters in the world, if not the best already.

[https://www.dnsperf.com/](https://www.dnsperf.com/)

Cloudflare is also a great free CDN and has a crap ton of edge servers to make your static content serve quickly around the world. Has a lot of other great features too.

Anycast ftw.

<comment><USER62> Just need to remember to turn off caching when updating or set the time to update cached data at an interval that works for you. I keep forgetting that sometimes like why isn't the site changing?! Oh right...

</comment></comment></comment><comment><USER63> This is a neat tutorial. I use github pages with their built in Jekyll stuff which I'm semi happy with but I found Jekyll a big learning curve compared to Blogger which I was using before.

Curious why people want to serve static sites to users over https though.

[http://justinhj.github.io](http://justinhj.github.io)

<comment><USER64> [https://doesmysiteneedhttps.com/](https://doesmysiteneedhttps.com/)

</comment></comment><comment><USER65> I really don't understand why we are seeing Yet Another Tutorial for Yet Another SSG on the front page of HN.

<comment><USER66> Coding to SSGs are fashionable at the moment, yet somehow writing your own HTML isn't...

<comment><USER67> Writing the template and the content in HTML is easy enough for me, but I'm still struggling to make post lists, feeds and other things out of it without a lot of administrative effort.

<comment><USER68> Just use Publii, it's new static CMS with GUI and themes, supports Netlify, GitHub Pages, Google Cloud, S3 or SFTP. [https://getpublii.com](https://getpublii.com)

</comment></comment></comment></comment><comment><USER69> I also used Hugo for my site - [https://testloop.co.uk](https://testloop.co.uk) It's so simple.. and FAST. It's hosted on AWS S3 with CloudFront & Route53 so it's not free, but at a cost of around $1.20 per month, it's not far off.

<comment><USER70> $1.20 a month is really expensive. I have a whole virtual server for €5 a month (and there are smaller ones) that hosts 10+ sites/apps.

EDIT: I just realized that's a question I should ask: Does your price include the domain?

<comment><USER71> What service do you use? 5/mo is really cheap for 10+sites/apps

<comment><USER10> Not to discourage a response with a personal anecdote, but don't miss [https://github.com/joedicastro/vps- comparison](https://github.com/joedicastro/vps-comparison) and its HN discussion [https://news.ycombinator.com/item?id=14245538](https://news.ycombinator.com/item?id=14245538).

</comment></comment></comment></comment><comment><USER72> Benefit above and beyond writing your own html and css? (Serious question). I see a lot of the example tutorials show a simple blog example. In this case why not just html and css and your favourite text editor? With css you can separate style from content, you can "change themes" etc.

<comment><USER73> This is exactly what I decided to do. Adding some posts manually to an html file is really not onerous, and the setup time and complexity of the project directory are near zero. Plus, I don't have to take the time to understand someone else's theme in order to make changes. Whipping up a simple css theme is really not difficult.

</comment></comment><comment><USER74> I feel old.

I would simply install nginx and write HTML by hand.

If I felt fancy, markdown + pandoc. But if you feel like you need to put some content online, you don't need much more than a text file with some links.

[http://motherfuckingwebsite.com/](http://motherfuckingwebsite.com/)

</comment><comment><USER75> To anyone confused about how to manage Hugo themes, check out this article I wrote. [http://stephendrake.me/post/deploying- hugo/](http://stephendrake.me/post/deploying-hugo/)

</comment><comment><USER75> IMO this guide is great, but uses some unnecessarily complex terminal commands. You don't need to use `git worktree` and `git submodule` to set up your hugo site. There are more self-explanatory ways of doing the same things.

</comment><comment><USER76> Damn, I must be doing something wrong...

It took me three months to rebuild [https://www.forthepeople.com](https://www.forthepeople.com) as a Jekyll site on a load-balanced cluster from WordPress.

<comment><USER77> I note that your mailto: links don't include an email address. e.g. at the bottom of the page [https://www.forthepeople.com/class-action-lawyers/clergy- sex...](https://www.forthepeople.com/class-action-lawyers/clergy-sex-abuse- lawsuit/) the mailto link (black envelope image) has the email address "?".

<comment><USER76> It's an email share link. It's for you to share with whoever. All of those icons are social sharing icons.

? is actually for the query parameters and that's a properly-formed URI.

<comment><USER10> To be clear (since it wasn't to me; best tag-team approach to trick me into clicking some lawyer's website ever!): ...

The user is expected to click the email icon, then fill in the to: address, with the body pre-filled with the current url.

Most email urls passing query string parameters fill in the address (which winds up in the to:) and subject instead.

<comment><USER76> Absolutely follow you. Business decision, wasn't up to me ;)

That said though, best damn lawyer's site on the web, amirite?

</comment></comment></comment></comment></comment><comment><USER78> I would pay couple bucks per month for any vps just only for not using Cloudflare. Why anyone concerned about security and not just about green lock would use Cloudflare over LetsEncrypt.

</comment><comment><USER79> I love it! This is the part of the 90s I want back (not the dial-up)

</comment><comment><USER80> Really good because it walks you through every step and explains what's going on. The result is a version-controlled, robust, easy to maintain site that scales beautifully.

</comment><comment><USER81> Any particular reason why you don't install using homebrew?

<comment><USER82> The only reason is that this way I can stick to a Hugo version and make my environment completely reproductible. Cf. the jump-start script in the repository [https://github.com/gsempe/gsempe.github.io/blob/source/jump_...](https://github.com/gsempe/gsempe.github.io/blob/source/jump_start.sh)

</comment></comment><comment><USER83> That's still pretty complicated IMHO. Write some markdown files in a directory structure, run mkdocs over it. Voilà... indexed, searchable static website.

</comment><comment><USER66> In this thread: a million ways to drop HTML into a webroot that are anything but simply dropping HTML into a webroot

</comment><comment><USER84> A fast static site? Have we traveled back to 1997.</comment>


Notation for Machine Learning - <AUTHOR> https://notation.baai.ac.cn/en <comment><USER2> When we started to do something about machine learning, we read many papers, written by various background, who used totally different notations. It is a rather hard time to understand a same thing when my brain needs to frequently shift from a set of notation to another one. In addition, it is extremely hard to choose notations when we writing the paper even for simple concepts, such as sample number and neuron number. When I listen to talks, it is really a burden to remember the notations. Based on such experience, we do feel a suggestion of standard notation is necessary. This suggestion may be not complete and may have some conflicts at current time, but it is a good sign if the community are working hard towards a standard of notation usage.</comment>


Romania Rising - <AUTHOR> https://medium.com/better-humans/9ee7d4af363f

<comment><USER2> After watching "The Power Principle", I am a little afraid of the whole thing. If Roșia Montană site will be opened for mining, it will become the second largest gold-mine in Europe. This is Gold, there are billions involved! The stakes are a little bit too high, as this can be seen from how the scenario on the subject developed itself over the time. People died for less, my generation (in their 30s) is just too young to realize that, so I'm afraid... Its worth trying though.</comment>


Ask HN: What are some good public places to code? - <AUTHOR>

Obviously "good" is subjective, but for me personally, I'm looking for any places that have outlets for charging computers, and a nice social vibe so it doesn't feel too lonely.<p>Answers can be either a type of place, e.g., coffee shops, or a specific place, e.g., Starbucks on University Ave in Palo Alto. <comment><USER3> As other commenters have suggested, it's tough to beat public libraries (uni libraries often have late hours too if you can reach one).

In addition, I highly recommend [https://workfrom.co/](https://workfrom.co/) the site lists places to work from (hehe) for a varied group of cities. You can either log in to add coffee shops or restaurants that haven't been added yet, or to suggest creating a page for your city (if it isn't already there).

</comment><comment><USER4> If you're in SF or NY you should check out the AWS Loft:

[http://aws.amazon.com/start-ups/loft/](http://aws.amazon.com/start-ups/loft/)

Lots of people hang out here to code and work on their projects (and it doesn't have to be AWS related either). There's also free food and wifi.

<comment><AUTHOR> I just checked the link. So it's basically a free place (no cover or membership fee), with free wifi, and free food, without any catch? Sounds a little too good to be true...

<comment><USER4> Come by some time and see :)

We also give free bootcamps and lectures here, as well as have occasional guest speakers (Chef, CoreOS, etc).

The only real downside is sometimes all the available seats/tables get occupied by people working on stuff, so it helps to get here when we open (10am).

<comment><AUTHOR> I take it you work there? Would you mind sending me a message at me (at) smaili (dot) org? Thanks!

</comment></comment></comment></comment><comment><USER5> I tend to be pretty productive in a moderately busy Starbucks or other coffee shop. Something about having a lot of people nearby keeps me focused... probably because I don't really want to be the guy surfing facebook with my computer for hours at the coffee shop. Actually working seems much better.

If you opt for Starbucks, make sure to register a Starbucks card and use their app. Once you reach a certain level, you get free refills on drip coffee and teas.

<comment><USER6> My local Starbucks' connection speed deteriorated rapidly during the last 2 years up to being unusable in a peak hours.

Probably because as soon as local teenage patron opens his laptop - <USER2> youtube or FB videos starts playing non-stop.

I'd look for alternative, "undiscovered" spots.

</comment></comment><comment><USER7> When I'm in the Bay Area I love working at the public libraries. If I remember correctly the San Francisco Public Library's main branch offers a free wifi connection at about 45mbps down and up; and they don't block port 22, so you can ssh all you want. There are also plenty of people working there, and you'll probably notice some other people coding.

The only downside of libraries are the hours (which are often very limited) and the lack of food. Also it's not a great place to take phone calls or work in groups.

<comment><USER8> If you come in with groups many places have study rooms. I've used these for team work in the past, works out pretty well.

</comment></comment><comment><USER9> [http://www.yelp.com/biz/coffee-bar-san- francisco](http://www.yelp.com/biz/coffee-bar-san-francisco)

[http://www.yelp.com/biz/epicenter-cafe-san- francisco](http://www.yelp.com/biz/epicenter-cafe-san-francisco)

[http://www.yelp.com/biz/haus-coffee-san- francisco](http://www.yelp.com/biz/haus-coffee-san-francisco)

[http://www.yelp.com/biz/arlequin-cafe-and-food-to-go-san- fra...](http://www.yelp.com/biz/arlequin-cafe-and-food-to-go-san-francisco)

[http://www.yelp.com/biz/workshop-cafe-san- francisco](http://www.yelp.com/biz/workshop-cafe-san-francisco)

</comment><comment><USER10> If you have a mifi device, a shady table in a park is hard to beat.

<comment><USER11> There should be an initiative to add free WiFi and power to parks. The power outlets could be current-limited and off at night to discourage freeloaders (e.g., people charging their cars).

<comment><USER12> " off at night to discourage freeloaders (e.g., people charging their cars)."

How is charging a laptop not freeloading?

<comment><USER11> I wouldn't go out of my way to charge my laptop in the park instead of in my house. There are no savings there.

However, charging a car in a park is obviously worth it.

</comment></comment></comment></comment><comment><USER13> Starbucks on El Camino real (near the intersection of El Camino and Wolfe) in Sunnyvale. Very fast internet, unlike the one down the road that serves 3 universities.

<comment><USER14> Just don't call the address "the El Camino road" which translates as "the the road road" which bugs the heck out of me.

<comment><USER15> I like "the La Brea tar pits" in LA. ("the the tar tar pits")

<comment><USER16> And The Los Angeles Angels of Anaheim.

</comment></comment></comment></comment><comment><USER17> In the Los Angeles area, the food court at the Westfield Topanaga Mall has high counters and tables with outlets at each seat, including USB chargers. It's an upscale food court with real plates and silverware if you get hungry, and there is plenty of people watching. It's also on the second floor, with plenty of natural light.

</comment><comment><USER18> Be sure to check LiquidSpace. You can find some free workspaces and even reserve a spot. For example: [https://liquidspace.com/US/TX/The%20Colony/DALTC/workspace-1](https://liquidspace.com/US/TX/The%20Colony/DALTC/workspace-1)

<comment><AUTHOR> Just out of curiosity, how do they make money?

</comment></comment><comment><USER19> I'm a big fan of Panera in pretty much any city (though I spent a lot of time in the Mountain View location at El Monte and El Camino Real when I lived nearby). They always have decent wifi, available power outlets, and they bring the food to your table so you don't have to leave your computer sitting around.

<comment><USER20> My local Panera's free WiFi comes with complimentary man in the middle interception of HTTPS.

</comment></comment><comment><USER21> In Tokyo I often go to caffice in shinjuku [http://caffice.jp/](http://caffice.jp/) . Power outlets, free wifi, coffee, food, comfy chairs.

<comment><AUTHOR> Wow, those photos are really impressive. Wish we had something like that in the Bay Area!

</comment></comment><comment><USER22> A lot of younger creatives seem to like working from the Ace Hotel here in NY.

</comment><comment><USER23> Cafe Trieste is my favourite spot in SF. Really awesome vibe at this place.

</comment><comment><USER24> The library.

<comment><USER11> My favorite place to work. Unfortunately they close at 7pm in my city. University libraries are even better if you happen to be near one.</comment></comment>


How to Replace IMAP - <AUTHOR> http://www.gaborcselle.com/blog/2010/02/how-to-replace-imap.html <comment><USER2> Not to spend too much effort defending IMAP (which does, to be fair, kinda suck) but... come on. It's not _that_ hard. It works just fine, enjoying pervasive support with very high quality clients and servers available freely on essentially all platforms.

A new protocol would be ... prettier, I guess. But to pretend that the reason facebook and IM are replacing email is IMAP (and not, y'know, spam) is borderline delusional.

<comment><USER3> <http://jerakeen.org/notes/2010/01/yay-more-email-clients/>

_The Android GMail client is a perfect example of what a client looks like in this world. It talks to the (secret / private) GMail API, it does offline mail reading, and queues actions so you can archive / filter / whatever mails while offline and it'll push changes later. You can read and write mail. It doesn't try to do anything clever, because anything clever done on one client isn't reproduced on any other client. And if I don't have a client on my current computer for GMail, I can use a web browser, and still get all the features of the server. I use the web gmail interface for everything anyway, because it's better than any GUI client I've got._

I dont know - this guy makes for pretty convincing arguments on why email should be done right on the _server_ rather than the client. Which effectively means a new protocol.

<comment><USER4> If not designed very carefully, though, it can reduce the user's ability to view things as they like them. With the current status quo of mailservers _not_ handling message threading and such, I can choose a client that handles it how I want. If the server is doing it, it had better either do it how I want it, or provide some way to customize what it's doing.

(For example, I don't like gmail's flat "conversation" view; I much prefer a "threaded conversation" view, like classic Usenet readers, or HN discussions.)

<comment><USER3> reMAP claims to treat conversations as first class objects. Given suitable APIs on top, I think you could build different views on different email clients.

I think what is meant by a new protocol and server innovation is a change in the data model. I do not believe they are going to dictate views.

</comment></comment></comment></comment><comment><USER5> This is a collection of the author's favourite technologies/gripes, not a useful proposal. A large number of errors can be found by considering that it'll have to talk SMTP on the back end.

I'll only point to some "highlights".

OAuth isn't nearly secure enough ([http://hueniverse.com/2009/04/explaining- the-oauth-session-f...](http://hueniverse.com/2009/04/explaining-the-oauth- session-fixation-attack/)) for your e-mail (which, don't forget, gives access to _everything_ via password resets). Let's just ignore the part about third- party access.

Encoding everything as UTF-8 is nice, but breaks the first time some idiot mail client puts Shift-JIS encoded Japanese in the Subject: field. Without any charset marker, obviously. (This goes right back to the "where does the mail come from?" issue.)

IMAP has a THREAD extension (solving #4), a SEARCH extension (solving #9 and parts of others), and all sensible servers support IDLE (<http://en.wikipedia.org/wiki/IMAP_IDLE>). It also supports downloading MIME parts separately, solving the part of #7 that can actually be solved (again, you'll have to accept mail.)

<comment><USER6> Thanks for your suggestions Joachim! This is why I wrote that blog entry in the first place: To get some high-quality feedback.

I think IMAP could be replaced independently of SMTP. You could conceivable replace an IMAP server with a reMAP server and not affect the rest of the mail ecosystem. SMTP will likely not die for another hundred years.

1\. I know about the OAuth problems. Do you think we'll see a more secure solution in the next few years?

2\. Is there an easy way to validate UTF-8ness? Happy to hear suggestions.

3\. I know about THREAD and SEARCH and IDLE but find them clunky. Under the assumption that we're replacing IMAP with something RESTful you might as well get those ones right.

Happy to take this offline as well - my email is on my HP

<comment><USER5> First off, thanks for taking this well. It was a bit of a rant, even if it was toned down from the first version. Sorry.

We agree SMTP will be around forever; but how do you plan on abolishing MIME then? Your system will have to handle it, no matter what. Do you want to push MIME handling to the server? IMAP already does that, there's nothing revolutionary about that.

Due to the special structure, it's usually possible to distinguish UTF-8 from other 8-bit text. The tricky part is what to do with unmarked non-UTF-8 8-bit text - it could be pretty much anything. Mutt, for instance, allows the user to configure this according to what the user expects to see. Quoting the manual,

        For example, Japanese users might prefer this:
        set assumed_charset="iso-2022-jp:euc-jp:shift_jis:utf-8"

There is a lot more information about such things on the Mutt site. Basically, Mutt tries to parse the headers/message according to a specific character set and falls back to the next one if that fails.

I probably wouldn't trust my e-mail to a protocol that was only a few years old. I don't anticipate any new security protocols with significant uptake either; "serious" stuff already uses SSL/TLS plus an authentication method (passwords/certificates/SASL), and the web crowd is unlikely to replace that (OAuth is about weakening security in a controlled way, not replacing SSL.)

And yeah, parts of IMAP are clunky. But that's not enough reason to rip-and- replace it.

</comment></comment></comment><comment><USER7> I can't say whether his implementation makes sense.

Regardless, I would like to see public key encryption of all email. There's no reason why messages should be plain text anywhere except at the two ends.

I realize key management would be a problem, but it's probably a solvable problem. The solution would have to allow most people to be practically unaware of encryption issues.

<comment><USER8> Encryption of all email would make intermediary virus scanning impossible and spam scanning next to impossible.

<comment><USER9> Wouldn't it make spam impractical because you would all of a sudden need much more processing power to encrypt the messages (especially millions of them)?

</comment></comment></comment><comment><USER10> First the solution doesn't really fulfill all of imaps use cases (especially push mail) but that is unimportant.

What is important is that the IMAP protocol isn't difficult, and I don't think that is what limits "email innovation." It is more so that it has been around since the 70s and email clients haven't been able to remove themselves from their past. It isn't the protocol limiting them from moving forward, it is the shear number of other clients that wouldn't support any of the "innovations" one would try to bring to email.

<comment><USER11> I'm very hopeful for Letters, a project just taking off under the leadership of some pretty big names: Gruber, Rands, Brent Simmons. They're hoping to collectively create a "lean and programmable IMAP email client, with plugin and automation APIs, designed for developers and power users." While still sparse and very early-stage, their vision document is ambitious: <http://pastie.org/785269> If something comes from this, it'll definitely be a step forward to modernize email clients.

Project wiki: <http://letters-wiki.heroku.com/>

</comment></comment><comment><USER12> There are some good points, but:

1\. HTTP / HTTPS - please don't... There are stupid/broken transparent proxies in many places that will effectively block this protocol. Also custom TLS connection gives some hope for domain-specific certificates instead of ip- specific - there is enough problem with them in HTTPS as it is.

3\. People still don't know how to set the encoding (or what the encoding is) and will happily send you Greek in latin1 or something equally silly.

4\. Would it really work for mailing lists where conversations naturally fork into many branches?

5\. IMAP supports labels... even if it's crazy number-based labelling where every client needs to set its own names for the labels. We'd just need to make it not suck this time ;)

So it's not all that bad in IMAP - there are many areas where we can do worse by accident. But yes - it would be nice to have server-side text searching...

<comment><USER13> > _4\. Would it really work for mailing lists where conversations naturally > fork into many branches?_

I agree with this. The idea that messages _must_ be accessed by conversation is a bit much. _Support_ for conversation group could be nice, but ignoring that feature would have to be allowed so that clients could implement their own views.

For example, the following structure would be crappy to force on clients:

      Label
      `-> conversation 1
          `-> msg0
          `-> msg1
      `-> conversation 2
          `-> msg0
          `-> msg1

Needing to iterate through every conversation to pull tease out the full list of messages (in order to use a different conversation-grouping method) would be ridiculous. Not to mention the question of whether or not conversations should span labels and how that should work.

</comment></comment><comment><USER14> My responses to your Design Outline.

1\. I'm not convinced that http/https is the best protocol. I agree that it's the defacto standard, but if you're going to go through this, there might be a better way. (Push, in particular, is a problem).

2\. Stateless is wonderful, agreed.

3\. I agree with JSON over XML, but what about binary data? That is the weakest part of JSON, in my opinion.

4\. I like where you're going with this, but I'm not sure this is the exact right way to handle it.

5\. Agreed.

6\. how about SHA-1 hashes of content? Done properly, that would eliminate any duplicate messages, and could make it very easy to include other messages. This might also allow content to be transfered between accounts only once, dropping bandwidth and speeding delivery.

7\. Don't know enough about MIME to comment.

8\. According to your comments on this page, you're referring to long polling. I agree that this use case needs to be addressed, but I'm not sure that this is the way to do it. Perhaps multiple options here?

9\. Good idea, but do you think that stemming/language differences is going to be a problem? What about other types of content? attachments?

The biggest thing missing from this list is some sort of Public Key Encryption. Anyway, it looks like a good start.

<comment><USER13> > _3\. I agree with JSON over XML, but what about binary data? That is the > weakest part of JSON, in my opinion._

What binary data? All attachments in emails are Base64 encoded. That's what MIME is all about.

> _6\. how about SHA-1 hashes of content? Done properly, that would eliminate > any duplicate messages, and could make it very easy to include other > messages. This might also allow content to be transfered between accounts > only once, dropping bandwidth and speeding delivery._

Developers should start to shy away from SHA-1 since it's already started to get broken.

<comment><USER14> >> 3\. ugh. Hadn't realized that. I like IMAP even less, now. (Told you I didn't know much about MIME ;-)

>> 6\. I wasn't intending it as a security mechanism, but as a way to know which bits you have and which you don't. Do you think SHA-1 is still a bad idea in that case?

<comment><USER13> _I like IMAP even less, now. (Told you I didn't know much about MIME ;-)_

IMAP might do some sort of MIME-handling, but MIME is part of the email spec, _not_ the IMAP spec. Hating IMAP because of MIME is like hating cars because of the invention of the wheel (i.e. thinking that the wheel was invented as part of the production of the initial automobile).

<http://en.wikipedia.org/wiki/MIME>:

      Multipurpose Internet Mail Extensions (MIME) is an
      Internet standard that extends the format of e-mail
      to support:
        * Text in character sets other than ASCII
        * Non-text attachments
        * Message bodies with multiple parts
        * Header information in non-ASCII character sets

MIME is used to say things like 'this block of text is a base64-encoded file attachment, but also to say 'this block of text is encoded with this charset.'

If you use Gmail, try the 'open original message' option on emails that have attachments or multiple text parts on them (or even emails that have both a text and an html version of the content).

Dealing with MIME is part of dealing with emails in general, regardless of if you're interacting with an IMAP server, or composing an email to send to another user on the same mainframe (i.e. just moving files around).

</comment></comment></comment></comment><comment><USER15> > All data that's ever sent to or received from the server would be in JSON > format. JSON is much more human-readable than XML.

I don't need my protocols to be human readable. I need my computers to read them and know that I've got good, bug-free, reusable, efficient, and easy-to understand implementations.

This isn't an argument for XML over JSON -- I've made good use of both, but I don't want to consider how easy it is to type up communication protocols when I'm defining stuff the replacement for something I expect to take over the world.

It's _by far_ easier to implement the memcached binary protocol as a client or a server than it is to implement the text protocol. Easier to get right, more regular, and just generally more pleasant.

<comment><USER16> As far as I'm concerned, the argument for JSON over XML is that the parser should be much lighter. No bloody entities to worry about, for a start.

</comment></comment><comment><USER17> Ah, yes. A new email scheme that would require us to replace all clients and servers in one fell swoop. I can see that taking off.

<comment><USER18> All it requires is a major server (i.e gmail) providing it as an option and a major client (say a iPhone email app) supporting that option.

<comment><USER19> oh, that's all?

it'll require an RFC or some other kind of standard, which will take a long time to finalize. then someone will have to write a reference spec server and client, then "real" versions in "real" languages, then get them both to the stability, security, and scalability of current imap clients and servers. then once big email providers (isps, google, etc.) start supporting it on the server end (gotta factor in all those different operating systems, authentication systems, storage systems, etc.), popular clients can support it. then work out all of the minor implementation details that some servers or clients get wrong (i think almost every smtp and pop3 server has hacks in it to support the stupid things outlook express does wrong), and then once everyone complains long enough, the iphone will finally get support for it (while a small but vocal minority shouts that android already supports it).

there is a reason why smtp, imap, pop3, dns, http, and all of the other core internet protocols are still around after 20 years and it's not because there aren't any faults in any of them.

<comment><USER20> If you are going for a clean design, you can go in the opposite direction too. I'm fairly sure Ethernet and html evolved from a working solution. Now, granted there should be a really clean and open interface if we are going to try and make it a standard, but it's often the easier approach.

</comment></comment></comment></comment><comment><USER21> First, I love reMail. Gabor breathes email and search. If you own an iPhone and use Gmail or Google Apps, get reMail--you'll thank him.

That said, it's easy to skim this article and nod, "Yeah! Yeah!", but when we're discussing these, laymen may need to know a few of these seem over- simplified.

> "TCP connections are great, but for transferring large amounts of email > securely, HTTP is the way to go."

1\. [http://wiki.answers.com/Q/What_is_the_difference_between_tcp...](http://wiki.answers.com/Q/What_is_the_difference_between_tcp_and_http) \- HTTP uses a TCP connection. For that matter so does SMTP and IMAP and the proposed REMAP.

2\. I generally have at least 5 devices using IMAP (on Google Apps) at once, and interleave my interactions with these devices arbitrarily, yet expect each to show me the exact same state when I look at it. Keeping them all in the apparently same state is the sort of intractable software problem bedeviled with implementation details, and I agree throwing out IMAP and starting over with lessons learned could be easier than, say, the RFC linked below.

3\. <http://ajaxian.com/archives/json-vs-xml-the-debate> \- Seems this point is something like GIF vs JPG vs PNG, with a bit of "Markdown vs HTML" thrown in. Meanwhile, both XML and JSON are missing an important concept given labels/folders and conversations: multiple references to single objects.

4\. Conversations or threads exist today as In-Reply-To: GUID and References: GUID headers, among others, but see the JSON problem above. We don't realize these headers are there because clients generally ignore these and try to group on Subject instead. Gmail grouping respecting existing headers is much better, but from usability point of view, Gmail's approach makes it challenging to bulk delete individual matching messages across a broad set of conversations. For example, to bulk move or mark all messages on a particular date results in the full conversations being moved or marked. So I like this idea as long as I can still optionally operate on sets of messages without affecting the rest of the conversation.

5\. [http://googlesystem.blogspot.com/2007/08/organizing-chaos- fo...](http://googlesystem.blogspot.com/2007/08/organizing-chaos-folders- labels-search.html) \- It's not yet clear that people prefer tags to folders. After all, monkeys don't expect a banana to be in two boxes at once. I don't want to label anything with keywords. I want semantic search.

6\. Excellent point. Changing GUIDs out from under us is just lame. Having had to resort to <http://github.com/rgrove/larch> recently to move a decade of email onto Google Apps because Thunderbird was putting new IDs on each moved message, I fully agree this problem is evil.

7\. Seems we're stuck with MIME until we get rid of every legacy email server in the world, or control what servers our recipients use. Between the new server and new clients, sure. But the server will have to know it to send it. Granted, IMAP is for receiving, and SMTP is for sending, but something in the chain has to know MIME.

8\. "Call" an HTTP endpoint that "returns" when messages arrive? Just nomenclature, since IDLE is a "call" that "returns" when state changes. Either way, the socket is held open, so neither of these is "push". Maybe Gabor meant "posts back" instead of "returns"? In any case, under the hood, iPhone push and Microsoft ActiveSync are exploiting out-of-band channel such as SMS to notify the phone it should poll (or in case of ActiveSync, maybe doing a "long pull"). See <http://msexchangeteam.com/archive/2004/04/26/120520.aspx> versus [http://tools.ietf.org/internet-drafts/draft-maes- lemonade-p-...](http://tools.ietf.org/internet-drafts/draft-maes-lemonade-p- imap-12.txt)

9\. Will the RFC specify a search results algorithm, or will the same search return different results depending on the implementation of mail server the client is connected to? We manipulate a "client" tool to perform the search and access the email, so our natural mental model is of the client at hand, not of the remote server. This lets the brain wrap itself around Gmail's web search versus Apple Mail's search box vs OS X Spotlight vs Gabor's reMail all returning different results. Practially speaking, search at the server does make far more sense from both a data retention and security standpoint. I have 509 MB of index in Gabor's "reMail" app on my iPhone, and would rather not.

Thanks for brainstorming this, and thanks for a kickass iPhone app.

<comment><USER22> _1.HTTP uses a TCP connection. For that matter so does SMTP and IMAP and the proposed REMAP._

Yes, of course. He is not claiming that TCP is bad, but rather that it is too low-level. i.e. One wants an application protocol (e.g. HTTP, SMTP, IMAP) rather than a transmission protocol (e.g. TCP).

The HTTP verbs should be sufficient for email, so why not leverage them?

 _It's not yet clear that people prefer tags to folders. After all, monkeys don't expect a banana to be in two boxes at once._

Heh, dare I reply? Tags can be used as pigeonholes, and this can be enforced if desired. But why? Tags are so much more useful because they are _not_ pigeonholes.

Here is a classic example:

Does my app config go in a system directory or an app directory or a config directory? the executables? the daemon? the log files?

The classic approach is to put system-level config files under /etc, log files under /var/log, executables and daemons in various locations, etc. Some newer approaches (HomeBrew, GoboLinux, etc) keep everything organized per- application.

Instead, keep every file in the global folder / namespace. Tag the executables as exe, the log files as log, config as cfg, and also tag everything with the app's name. Possibly the version, etc.

A file is uniquely identified by its tags and its name. Any combo can be used, so long as it doesn't already exist.

You don't have to make painful decisions about the unique place in the tree that a piece of information should exist. Just tag it appropriately and move on. The tag system could even create an optimal concrete hierarchy based on tag and tag association metrics if needed.

 _But the server will have to know it to send it. Granted, IMAP is for receiving, and SMTP is for sending, but something in the chain has to know MIME._

I'm not sure if this is GoF, but this sounds like the classic gateway pattern. You put MIME gateways at the edges of the new email network. MIME-only servers must go through the gateways.

<comment><USER23> Your intended point about pigeonholes can sometimes backfire within the context of email. Consider a Gmail user who sends a query to a number of different recipients, expecting unique replies from each. Gmail, because of the like headers, will group all of the responses into the parent conversation. Let's say the users tags the first response with a label corresponding to that sender, and then the second response comes in. At this point, the user is at an "oh shit" moment, finally comprehending the implications of Google's labeling of conversations rather than individual messages.

You need to be able to specify both parent and child tags to be able to facilitate search and give users something that isn't too confusing re: organization.

<comment><USER22> > _and then the second response comes in. At this point, the user is at an "oh > shit" moment, finally comprehending the implications of Google's labeling_

I am having trouble understanding what the problem is, here. I also suspect this may be a _Gmail_ problem rather than a _tagging_ problem.

<comment><USER24> It's tagging a conversation rather than tagging an email.

I frequently put different emails from the same conversation in different folders, because they contain different types of information that I need to do different things with.

GMail will not let you do that.

</comment></comment></comment></comment></comment><comment><USER25> The description for #8 sounds more like long polling to me. For push email, I'd envision something like registering a location to send notifications to (web hooks).

<comment><USER6> Yeah, it is long polling. I could be misinformed, but isn't the problem with web hooks that you might not have ports open and could be behind a firewall?

<comment><USER25> Yea, I'd say long polling is probably a better solution in this case than web hooks since clients (likely) could be behind firewalls, NAT, and be going on and off line relatively often. Sorry, the title and description on that one just threw me off a bit - I think you chose the best option though.

</comment></comment></comment><comment><USER26> You could implement this as a service on top of couchdb. The oreilly couchdb book that has just been released shows examples of developing apps using the javascript engine that's inside couchdb. You'd get easy access to some functionality by doing this - tagging, email versioning.</comment>


Our Own Private Germany - <AUTHOR> https://medium.com/matter/our-own-private-germany-6ce44ac93a7b <comment><USER2> I first went to Berlin in December 2000. I was not even one week off the plane from Australia, and it was cold. Very cold. The wind ripped through my inadequate jacket and chilled me to the core. I remember very clearly venturing into the East. Along Unter den Linden, through Mitte and into Alexanderplatz. Even then, ten years after re-unification, it was grey but it was interesting. There were still buildings that didn't appear to have been touched for 50 years. Crumbling, battle scarred buildings that were evocative of everything I'd been taught as a school child.

Over the next five or six years, I must have traveled to Berlin around a dozen times. On each occasion I stayed in the same Mitte hotel, ate breakfast at the same cafe and tried to absorb an atmosphere that was completely different to my very rural upbringing in Australia.

My last visit to Berlin was in 2012, on business. Mitte was nothing like I remembered it. I couldn't find the old hotel, or the cafe, or the bars. The Spree was still there, and the Pergamon museum. Yet, something had certainly changed and I lost feeling for the city. Maybe it was a case of being older, perhaps just being there with different people, under different circumstances.

In 1989 and the early 1990s, I wasted a lot of time. Stoned or drunk, or just being an idiot. The majority of my late teens and early twenties were spent not particularly productively.

I spent a year in South Africa in 1992, before the first free elections in 1994. I treasure the time and friends I made. Yet, I spent my time in very rarefied circumstances, protected and cossetted from a lot of reality. If I look back on that time, I'm grateful for it, as my young immature self would have probably otherwise ended up dead in a gutter somewhere.

The people in this article probably wasted just as much time, stoned and drunk (maybe). Yet, looking back they were part of something. Part of a moment that turned modern Europe, and perhaps Western society, in a different direction. There was no real comment in the article about how they felt about that. At the time, they may not have been so consciously aware of their involvement in a fulcrum, but surely in retrospect they can look at their 1990s youth and appreciate how fortunate they were to be involved in that page of history.

During the last fourteen years, I've spent quite a lot of time in Eastern Europe, mostly Latvia and Ukraine. There is a smell. It's not a bad smell, it's just the smell of clocks running a little slower than in London, or New York, or Los Angeles, or indeed now in Berlin.

<comment><USER3> For years after the reunification, Berlin was known to offer incredibly low cost of living, especially in terms of rent. Possibly the best conditions of any capital in Europe.

In recent years, though, it has been hit by gentrification with full force. Traditional everyman's quarters are being turned into "luxury living spaces". Property prices have skyrocketed since rich investors (apparently prominently of Russian origin, but also others) discovered the city. It seems trendy to buy out apartments only to leave them empty most of the year, and only really use them for the occasional visit.

In some cases, long-time tenants are actively "encouraged" to give up their apartments so that the owners can either renovate them to a higher standard (which the same tenants couldn't afford to pay for) or to tear down the building altogether and build new upscale build complexes.

It's not surprising that you find Berlin a lot different now than when you first visited.

<comment><USER4> Yeah I confirm that. It happened to talk about the rent price with some of my german friends and some of them claim that there is a upper rent-price limit set by Berlin government that keeps the right of poor people to still live in the city center.

Isn't this amazing? It's the greatest social state ever!

</comment></comment></comment><comment><USER5> I find it interesting how many people mentioned smells when describing their first impression.

</comment><comment><USER6> And just like in so many places, these people will become the establishment and will hold on to their position so tightly that a new generation will have to find somewhere else to go.

Except that in the West, we're now running out of places to go.

<comment><USER7> Those people are in their 40s now. Other people have become the establishment around them. (Though they did have a lawyer amongst the interviewed.)

</comment></comment><comment><USER8> I don't get it. They have just occupied a building ?

<comment><USER9> Pretty much. There's a strong anarchist culture in Berlin. And while I'm sure the people described in the article are very nice indeed, there are areas where _any_ police intervention is very unhealthy for the police.

It sounds like for this particular story, people actually signed a (very cheap) lease with the owners after the fact, but there are quite a few buildings that are simply occupied.

(Keep in mind that a lot of buildings also have rather unclear ownership records. And if there's no clear owner, there's much less incentive to evict squatters. Why risk it when it then might turn out it's not even yours?)

<comment><USER10> Especially in case of unclear title it's a good thing to have the building occupied as a squat. It prevents further detoriation of the building and urban blight in general - the occupants will see that the roof is tight and that the windows remain whole. Whoever owner there is may lose out on the real estate, but an abandoned building isn't worth much to begin with, and the city benefits at the end of the day.

<comment><USER11> Actually, it can make a lot of sense to let a house rot until it's beyond repair.

</comment></comment></comment></comment><comment><USER12> NSFW.

<comment><USER7> There's one picture of naked Germans. Not pornographic or anything.</comment></comment>


'We're not claiming to replace humans,' says Google - <AUTHOR> https://www.theregister.com/2020/09/04/google_previews_improved_ai_for_call_centres/ <comment><USER2> Google doesn't want to replace humans...they just don't want to hire them in the first place.</comment>


Possible RFID chip found on Intel's new i9 CPU after removing heatspreader - <AUTHOR> http://www.gamersnexus.net/news-pc/2936-intel-i9-7900x-delidding-cpu-package-thermal-paste <comment><AUTHOR> The relevant part:

> _There appears to be an RFID chip in the corner of the Intel i9-7900X that > we looked at, which would lead us to believe that the chip is capable of > storing user information. Der8auer's theory is that this could be used to > store user overclock data, e.g. maximum stable OC. Such a chip could also be > used for RMA processes, theoretically._</comment>


Ask HN: How can we recreate the world wide web? - <AUTHOR> Recreate the world wide web, add new features, and make it safer. <comment><USER2> ... and get rid of all those spammy sites.</comment>


Microsoft Threatens Bountii for Exposing Bing Cashback Flaw - <AUTHOR> http://bountii.com/blog/2009/11/07/surrendering-to-microsoft-and-bing-cashback/

<comment><USER2> Shouldn't the author have first contacted MS letting them know of the flaw and making a post (and taking the credit) after they have fixed the flaw. That is what I have seen happen in the past when the DNS flaw was discovered and also recently when the Twitter XSS vulnerability was found.

<comment><USER3> This is considered standard. You only go public with a live exploit if the company shows no interest in fixing it. The author receives no sympathy from me on this.

<comment><USER4> Regardless of if what the author did is deserving of sympathy, I think most of us can agree that the correct course of action is fixing the security bug rather than trying to cover it up. I mean we all know how well that works.

</comment></comment></comment><comment><USER5> The original post can be found in this Google cache:

[http://126.96.36.199/search?q=cache:3hxOgSPu460J:bountii.co...](http://18.104.22.168/search?q=cache:3hxOgSPu460J:bountii.com/blog/+breaking+bing+cashback&cd=17&hl=en&ct=clnk&gl=us&client=firefox-a)

If that doesn't work, the text has also mysteriously made its way into this EtherPad:

<http://etherpad.com/0feqRE5pmE>

<comment><USER6> For extra irony, the post is also available from Bing`s cache:

[http://cc.bingj.com/cache.aspx?d=4879267570255838&mkt=en...](http://cc.bingj.com/cache.aspx?d=4879267570255838&mkt=en- CA&setlang=en-US&w=90157511,9ea4ebc5)

<comment><USER7> KA-POW!

Feels like that episode of family guy (post-apocalypse) when the town destroys all weapons only to be destroyed by mutated stewies.

</comment></comment></comment><comment><USER8> Wow. Weird. You can drop a zero-day remote vulnerability in Vista and not get a C&D. The MSN people must be touchy.

<comment><USER9> Because here Microsoft loses Money. A Vista Remote Vulnerability means Microsoft's customers lose money. :P

<comment><USER8> Microsoft loses a shit-ton of money on OS vulnerabilities.

<comment><USER10> Care to explain that?

Because their only important clients - those responsible for about 90% of their revenue (Acer, Lenovo, HP, IBM and Dell) - are still buying lots of licenses.

<comment><USER8> Think about how many people have to work, and for how long, on every OS fix Microsoft publishes, and you have a starting point.

<comment><USER10> I gather that's a high multiple of what was saved in quality assurance.

Sometimes, software QA is a gamble. You don't spend all the money you need to make 100% perfect software, expecting to pay for the correction of all bugs that are discovered and that cost you money in support calls, lost business and lawsuits. Mind you - most of the support calls are to their OEMs.

<comment><USER8> Microsoft spends huge on QA. Unusually so. Google "Microsoft QA ratio" for starters. That has nothing to do with security. QA doesn't find security bugs, because security bugs are different from normal bugs: they're only possible under subtle adversarial conditions.

<comment><USER10> It's not about how much you spend. It's the result you achieve.

It seems the architecture of Windows and its backward compatibility are a growing burden on Microsoft's shoulders.

The sad truth in software business is that you don't have to make your product robust enough to last forever, just long enough for you to pocket your bonus and retire.

I also have a problem with the idea that security bugs are not ordinary bugs. Bugs are parts of the program that don't do what should be done, be it about crashing, corrupting data or handing over the keys to your kingdom, they are still bugs and should be detected and corrected.

<comment><USER8> "I have a problem with the idea that security bugs aren't ordinary bugs, [...] becase they are still bugs and should be detected and corrected".

You just said absolutely nothing about security flaws OR QA. You want to try again? Because I think all you've got here is, "bugs should get fixed". Yeah, you got me there.

<comment><USER10> "Microsoft spends huge on QA" and "QA doesn't find security bugs" are things you said.

If their QA can't find security bugs, then, perhaps, they should rethink what software quality means to them. Remember: even if bugs costs them millions of dollars, they cost even more to their customers.

<comment><USER8> Ricardo, can you point me to the security flaws you've discovered and documented? I looked you up on LinkedIn, and you have a long resume in software development --- but no apparent experience whatsoever in software security.

Your claims about QA and security are so wildly outside my own experience and the general understanding of my field that I'm wondering where you get the confidence to make them so forcefully. I've never met a QA team _anywhere_ that could reasonably be left responsible for testing software security.

<comment><USER10> I don't work with software security and have discovered absolutely no new security flaws. I have, however, experienced many and created some in the long career you refer to.

Still, none of the security problems I wrote into my code could be blamed on highly adversarial conditions - all of them were plain bugs, places I forgot to do something or when I trusted something one should never trust.

The fact you never met a QA team that could uncover security problems possibly stem from them not looking into the code itself and never having the responsibility of finding such problems. Validating compliance, correctness of observed behavior and even user overall experience is also called quality assurance, but it is, by no means, defining of the whole software quality concept.

<comment><USER8> As long as we're clear that by "them", I mean "a broad cross section of the whole industry, from embedded infrastructure code to 'web 2.0'", and you mean "the fictitious QA team that works the way I say QA teams do", then I think we agree.

Because I'm telling you that you're wrong about the relationship between QA and security in the real world.

<comment><USER10> I am deeply sorry you never met such a team. It's a most gratifying experience.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> That Samir guy is pretty shady :)

Seriously though guys, glad to see you're doing well. I hope the publicity nets you a traffic spike that results in more revenue than the $2k you could have kept.

</comment><comment><USER12> The MS Cashback program is great. I don't think it's doing a thing to attract people to Bing but I've used it to buy several Macs at a nice discount off eBay. Thank you Microsoft.

</comment><comment><USER13> hmm, it may have been worth milking this for as much publicity as possible

</comment><comment><USER14> Kind of a dick move by Bountii.

<comment><USER15> dick move indeed, he should have kept it to himself and friends and make as much as he can from them or better yet hint a few cronies to make the easy money as well. I'll be he was trying a little altruism only to encounter the threat of a possible sentence. Bountii if you discover a loophole again email me, i'll pay you for the tip. viabyte at yahoo dot com</comment></comment>


Montreal offers $200k prize for cheap and easy to build ventilator design - <AUTHOR> https://www.agorize.com/en/challenges/code-life-challenge <comment><USER2> I think this is the right aproach to bring all the cool ideas together and let them be evaluated. Ventilation is from what i know traditionally a lucrative nieche business by a few player who cannot easily ramp up production even if governments pour money into it now.</comment>


Ask HN: Did npm5 kill yarn? - <AUTHOR> It's 2018. Is everything bailing off of the yarn ship and headed back to npm? <comment><USER2> Don't you mean, is everything unwinding from the yarn ball?

I'll take my pun-ishment now :P</comment>


On Hackability - <AUTHOR> https://kaction.cc/posts/2019-04-22_on_hackability.html <comment><USER2> I'm sure a more "hackable" web browser exists. But that web browser is likely not as great as Firefox or Chromium. Of course, acquiring technical debt in the short term can improve your performance or feature set in the short term, but in the long term sacrifices "hackability."

I agree with you that hackability is important, but I think we should understand how and why we got here.</comment>


New McLaren impounded minutes after driver leaves dealership - <AUTHOR> https://www.cbc.ca/news/canada/british-columbia/maclaren-impounded-west-vancouver-1.5192113 <comment><USER2> If you own a McLaren you probably have pretty good @#$% you money.

Strange how people with that amount of wealth have disregard for rules normal people have to follow. (/s)

<comment><USER3> Yep - this will likely be a fun story and some pocket change for the owner.</comment></comment>


Ask HN: Moving from London to Amsterdam - <AUTHOR>

I'm a front end developer considering a move from London to Amsterdam. I'm a contractor and I love being a contractor, so I don't want to take a full time position. But I'm having a hard time deciphering the rules and requirements for living and working in Amsterdam as a contractor. If any contractors have made the same move, I'd welcome any advice they may have. <comment> bulte-rs Perhaps I can set you up to have a short talk with my wife; she's does compliance work for expats and is - hence - familiar with legislation. Either she knows what to do or can point you to someone who can help you further.

Shoot me an email (in profile) if you're interested.

<comment><AUTHOR> Brilliant. Thanks in advance.

</comment></comment><comment><USER2> Might be worth speaking to Mike Lee [http://mur.mu.rs](http://mur.mu.rs) of Delicious Library fame. He's started Appsterdam.

</comment><comment><USER3> London and Amsterdam are both EU. So if you can legally work in London, you can do so in Amsterdam.

<comment><AUTHOR> I'm british, so there's nothing stopping me moving out there tomorrow. But we have a pretty sweet deal here in the UK when it comes to tax if you're set up as a limited company, and I'm mainly concerned about tax in the Netherlands. I'm guessing it'll effectively mean a pay cut, I just need to make sure I'm tax efficient.

<comment><USER4> I'm a British developer that moved to Amsterdam as an expat. I was recommended these guys to handle my tax affairs when I was looking for a mortgage:

[http://www.orangetax.com/](http://www.orangetax.com/)

They specialise in help for expats.</comment></comment></comment>


An In-Depth Look at Google's First Tensor Processing Unit (TPU) - <AUTHOR> https://cloud.google.com/blog/big-data/2017/05/an-in-depth-look-at-googles-first-tensor-processing-unit-tpu <comment><USER2> My career feels significantly less meaningful after reading this.

Google, if you can hear this please hire me. I'll mow the lawn or whatever.

Can we just admit Google is the new Bell Labs?

</comment><comment><USER3> How does the AMD Vega Frontier Edition compare to Google's TPU?</comment>


Visualise your Netflix usage [graphs] - <AUTHOR> http://valueflix.tanktop.tv

<comment><AUTHOR> My results here: [http://imgur.com/tO9K5fm.png](http://imgur.com/tO9K5fm.png)

</comment><comment><USER2> Great idea. It's a shame Netflix isn't a part of the TankTop core service... their loss as this app may help people decide to switch away: cheeky! :)

Ex-Lovefilm customer, now with Netflix but unfortunately I don't share with Facebook so can't use the tool.

</comment><comment><USER3> Good if you have your Netflix account connected to Facebook</comment>


EU court rules Holocaust denial not protected speech under civil rights law - <AUTHOR> https://www.courthousenews.com/eu-court-rules-holocaust-denial-not-protected-by-rights-law/ <comment><USER2> The headline is wrong: the European Court of Human Rights is not an EU court. There is also no such thing as a "European Union Convention on Human Rights". You'd expect a website that specializes in legal news to get this right.

<comment><USER3> I am not sure to understand what you are finding "wrong":

[https://en.wikipedia.org/wiki/European_Convention_on_Human_R...](https://en.wikipedia.org/wiki/European_Convention_on_Human_Rights)

>The European Convention on Human Rights (ECHR) (formally the Convention for the Protection of Human Rights and Fundamental Freedoms) is an international convention to protect human rights and political freedoms in Europe. Drafted in 1950 by the then newly formed Council of Europe, the convention entered into force on 3 September 1953. All Council of Europe member states are party to the Convention and new members are expected to ratify the convention at the earliest opportunity.

The Convention established the European Court of Human Rights (ECtHR).

<comment><USER4> The article says "European _Union_ Convention", not "European Convention". And as your quote also shows, it's a Council of Europe thing rather than a European Communit(y|ies)/European Union thing.

<comment><USER3> I see, thanks, I read EU in the headline as short for Europe, not short for European Union.

The OP comment was about the headline being wrong, not the contents of the article, and I couldn't see where that was wrong.

<comment><USER5> EU stands for European Union.

</comment></comment></comment></comment></comment><comment><USER6> There's a difference between a public figure, such as a politician making such statements vs. an ordinary person expressing an opinion.

Politicians have lots of privileges and visibility in society, and with those comes the responsibility of being accountable for what they say.

>>A seven-judge panel found that far-right German politician Udo Pastörs had "intentionally stated untruths in order to defame the Jews and the persecution that they had suffered during the Second World War."

<comment><USER4> > There's a difference between a public figure, such as a politician making > such statements vs. an ordinary person expressing an opinion.

Not sure why you say that, but AFAIK in all places where Holocaust denial is illegal, that applies to everybody equally. Yes, an ordinary person expressing the "opinion" that the Holocaust did not take place would be sentenced just like this local politician was.

See [https://en.wikipedia.org/wiki/Laws_against_Holocaust_denial](https://en.wikipedia.org/wiki/Laws_against_Holocaust_denial), I can't see any special cases for politicians or other public figures there.

<comment><USER4> Huh. Could a downvoter explain whether it's because they think my post is factually incorrect, or because they don't like the facts as presented?

<comment><USER7> Alright. In France or in Germany, if you walked up to a police officer and started saying in a bright clear voice "The Holocaust didn't happen" (in French or German of course), what do you think would be the more likely response:

1) "You're under arrest"

2) "Fuck off, nerd"

<comment><USER4> I can't say for France or Germany since I didn't invest the 30 seconds in a web search, but here is a statistic for Austria: [https://kurier.at/politik/inland/335-rechtsextreme-taten- im-...](https://kurier.at/politik/inland/335-rechtsextreme-taten-im-ersten- halbjahr-2018/400108634) (in German)

798 prosecutions for Nazi activities in 2017, 409 in the first half of 2018. These are _not_ all politicians, nor all the occasional public figure like David Irving. They are average Joes, posting or saying something in public or drawing swastikas on things.

The article doesn't say what activities were prosecuted in detail; the law prohibits much more than just Holocaust denial: [https://en.wikipedia.org/wiki/Verbotsgesetz_1947](https://en.wikipedia.org/wiki/Verbotsgesetz_1947), but all of them are of the form "you are not allowed to say certain things".

You might meet a right-wing policeman who doesn't mind, or you might have to put something in writing or be caught on camera, but overall these are not things that the justice system takes lightly.

<comment><USER7> No you don't understand. When people get prosecuted for Nazi activities it's usually much more than merely saying "The Holocaust didn't happen." Americans in general really overestimate the extent to which these kinds of laws are enforced. This generally stems from a divide between the 'spirit of the law' (it's mainly meant to prohibit political figures from being openly Nazi) and the 'letter of the law' (thinking a policeman will literally handcuff you if you say 'The Holocaust didn't happen' to their face). Americans generally feel the need to spell out every little thing for fear of the law being gamed or selective enforcement (this is why EULAs and License agreements have obnoxious 20-page unreadable legalese crap), whereas continental Europe has a more relaxed approach to the spirit of the law and favors clarity through brevity. A similar misunderstanding arose when GDPR enforcement was looming.

<comment><USER4> I quoted figures. What do you have to support your claims?

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Awesome ruling.

In the age of Trumpism stupid idiots who continue to deny such facts in the face of reality needs to be called out on their nonsense.

They should add the efficacy of vaccines and a few others to the list as well.</comment>


Starting and Running a User Group - <AUTHOR> https://www.techielass.com/starting-and-running-a-user-group <comment><USER2> I help run a ruby user group. Getting speakers for our monthly meetup was often painful and somewhat stressful. Then two things changed:

1\. A friend offered to help run it jointly. My (silly) default position when someone offers help is to say no. That time I said yes and I'm extremely thankful to them for offering. Running a meetup with one or two others is far better than on your lonesome.

2\. We were still struggling to get people to give talks. I suggested a high risk strategy of using a doodle poll and trying to get a years worth of people signing up to give a single talk. If people wouldn't commit we'd shut the group down. We had a years worth of talks offered within the week.

We've employed the same strategy of booking in people at the start of the year for 3 years now, it's working really well.

Good luck to anyone running a meetup!

</comment><comment><USER3> I have been associated with several different user's groups of various technology levels and we always find a couple particular things are the hangups:

1) Insurance

If someone gets injured while at your meeting, you need this. In addition, practically _every_ venue demands this.

2) Venues

This always seems to be a perennial problem. First, finding a venue that is in a useful spot is difficult. Second, evening access is really a deal-breaker for most venues. Third, does the venue have parking that doesn't suck? Fourth, does the venue have infrastructure for a tech meeting and can you access it? I can go on and on. Getting a reliable venue is really hard. And, once you find one, you'll probably lose it after a couple years, so you always have to be looking.

3) Getting young people to show up

I don't know what it is about user's groups/meetups, but it only seems like those of us of greybeard age and older show up regularly. Which is odd, because we greybeards used to go to these groups _when we weren 't greybeards_.

<comment><USER4> On 2) I've seen groups that try to use restaurants, and it's almost always a bad idea.

On 3) The graybeards came of age when doing tech stuff was only for the nerds, and they needed a way to see other likeminded folks. Today, being in tech either makes you cool, or at least it's normal (though maybe not much longer given what Big Tech is doing), so there's not such a strong need for a community outside of "regular" life. You can also meet a lot of community needs virtually.

</comment></comment><comment><USER5> I'm disappointed this article didn't mention the MeetUp or Eventbrite sites, which are the two major sites that are used to organize user groups.

It's naive to think most user groups could avoid using one of these sites.

<comment><AUTHOR> Thanks for the feedback, I completely forgot to include that but have now amended the blog. :)</comment></comment>


Apply HN: Comment on on-demand TV as if everyone is watching at the same time - <AUTHOR> https://spoilr.tv/ <comment><USER2> I've heard of various media companies attempting this for at least the past 10 years; has something changed recently that makes now the right time for this to work? (This wouldn't be the first time cultural and technology changes led to the success of an idea that has failed before)

Do you know why the previous attempts failed to catch on? How will you avoid those problems?

<comment><AUTHOR> The examples that I looked at were all aimed at live broadcast and then just stop making sense (e.g. AMC storysync). The statistics I have looked at for Game of Thrones show, within a week of the first airing < 25% of the views are live, the rest is already some form of delayed watching (DVR, re-run, on- demand).

I am confident that the trend away from broadcast towards on-demand is working in our favor.

Not sure if the attempts are comparable and if the same problems apply. Finding the integration (or other route) that helps generate enough traction is one of the top tasks on the business side of this.

</comment></comment><comment><USER3> This seems actually kind of cool. I've always enjoyed reading Twitter during popular keynotes, but it would be super cool to see what other people think during my favorite tv show. Have you planned to do a Twitter like rating (show popular comments + a few new random ones).

How are you planning on syncing this with Netflix, Amazon, and co? You could have a start button in your app but I doubt this would really work out well because some shows have different lengths on different platforms (some add a longer intro, others filter some content) and I often like to pause the TV show, which would make it out of sync unless I also pause the app.

<comment><AUTHOR> There's up- and downvoting and we use that to rate-limit comments that are being displayed as you go. Downvoted comments (like spoilers) get filtered out quickly, upvoted (or new) comments make it through the rate-limit. We're using a modified version of reddit's published scoring system.

Syncing is the single biggest technical issue and currently not easy since most platforms don't allow access to the point where we could really time- sync. Still looking at a few options, though.

</comment></comment><comment><AUTHOR> Project had been in hibernation mode since this HN thread, which already has some interesting discussion: [https://news.ycombinator.com/item?id=7711961](https://news.ycombinator.com/item?id=7711961)

For examples with some activity, check out House of Cards Season 2 or Game of Thrones Season 4.

</comment><comment><USER4> I'd love to see a demo of this when the next game of thrones is on.

</comment><comment><USER5> Derivative. Do people actually want this? How are you going to monetize?

<comment><AUTHOR> There definitely is some interest. I'm hoping, HN is also going to be an indication whether people want this.

Monetization can happen through partnerships with content creators/publishers (even white label solutions), timed advertising or affiliate links (think "I love the dress Claire is wearing – here's the link" or "Meet 'The Mountain' at ComicCon – link").

</comment></comment><comment><USER6> No one can respond to your comments while you are actually watching the show. This would be a feature that Netflix/hulu/amazon would have to add.

<comment><AUTHOR> They can, if they're watching at the same time. When testing, we did find ourselves checking back what other people's reaction was later on. App still needs notifications for this. Netflix/hulu/amazon are definitely interesting for partnerships/integration.

</comment></comment><comment><USER7> Isn't this what blab.im is doing?

What differentiates this from that?

<comment><AUTHOR> spoilr.tv is to something like that, but asynchronously. Your buddy is a week behind on Game of Thrones, but still sees your comments on the last episode, time-synced with his watching it (and you're going to be notified if he/she responds to them).</comment></comment>


Capital Structure and Shareholder Returns - <AUTHOR> https://multipleexpansion.com/2019/12/06/capital-structure-1/ <comment><AUTHOR> Building out guides to help folks better understand fundamental finance concepts - important for anyone interested in building a company</comment>


Ask HN: how much time did you *really* spend on that "Show HN: My weekend hack" - <AUTHOR>

This is a genuine question/curiousity that I have. I frequently come across "Show HN" submissions that claim to have done it over the weekend. But looking at the apps makes me wonder if it really just took a weekend.
Wondering if ppl would share the actual time taken to build an MVP/app whatever.<p>I do understand that many CRUD apps can be hacked over a weekend. But some of the mor real world stuff that is shared, I highly doubt it. or is it ? <comment><USER2> It's a lot of standing on the shoulders of giants. People take a new framework or library that abstracts things at such a high level like making a chart just by doing chart ((0.1, 0.2, 0.3), (1, 2, 3)). This work has been done by someone else awhile ago, and they can fit them together like LEGO to create something cool in a relatively short period of time

<comment><USER3> And that's much of how API hackathons work. You have all these really fleshed out LEGO blocks. You just need people to come up with interesting ideas. So you give the people API access. And see what they come up with in 24 hours. And a lot of the stuff is just proof-of-concept. It's not like, let me polish this hack and unittest the hell out of it before I release. It's all make and break and testing the waters to see if other people are interested in it too.

<comment><USER2> Can't agree with you more.

</comment></comment></comment><comment><USER4> My latest: controlling small appliances with my iPhone using qr codes to connect to them.

<http://news.ycombinator.com/item?id=4865290>

Thought of it on a Wednesday, started Friday night, finished Sunday night (and took video), posted when I woke up Monday. Total hours, probably about 8. I think I spent maybe 2 distracted hours Monday morning writing it up, but that may have had something to do with my straying into 'manifesto' territory.

</comment><comment><USER5> I took me 3 weekends(6 days) to do my weekend(s) project - <http://news.ycombinator.com/item?id=4753200>

I thought it is wrong to call it a weekend hack, so I called it "Weekend(s) project" implying it took more than one week.

Later I felt I should've called it just "My Side Project". Does it matter how much time it took to develop? Who cares?

<comment><AUTHOR> I like how to titled your post with the (s).

</comment></comment><comment><USER6> I doubt a lot of it too. Same thing as people who underexaggerate how much they studied for a test in high school and college.

</comment><comment><USER7> With the right lego pieces, you can do a lot. All depends on what libraries you can use. It could also be they're re-using stuff they work on day-to-day anyway.

<comment><USER8> You remind me of the guy who made up a t-shirt that said something like "I survived snow-pocalypse". He slapped it together and got it online really quickly, it went viral (in part because he jumped on it, as it was a time sensitive item), and he made a good chunk of change in short order. When asked, he indicated he had longstanding experience with both making t-shirts and doing stuff online.

So, yes, he did it "in a weekend" (in a day or two, though I don't know if it was literally Saturday and Sunday). But there was many years of prior experience which helped make that possible.</comment></comment>