Things I Learned Writing a Fibonacci Generator in JavaScript - <AUTHOR> https://medium.com/javascript-scene/7-surprising-things-i-learned-writing-a-fibonacci-generator-4886a5c87710 <comment><USER2> The memoized version does not even remotely work.

      a = fib(5);
      for (i = 0; i < 7; ++i) console.log(a.next());

gives the expected

      Object {value: 0, done: false}
      Object {value: 1, done: false}
      Object {value: 1, done: false}
      Object {value: 2, done: false}
      Object {value: 3, done: false}
      Object {value: undefined, done: true}
      Object {value: undefined, done: true}

But then

      b = fib(3)
      for (i = 0; i < 5; ++i) console.log(b.next());

gives the completely wrong:

      Object {value: 1, done: false}
      Object {value: 0, done: false}
      Object {value: 1, done: false}
      Object {value: 1, done: false}
      Object {value: undefined, done: true}

<comment><USER3> Fixed.

</comment></comment><comment><USER4> One of the exercises in chapter 1 of SICP is writing a Fibonacci function using successive squaring[1]. It's fast, not recursive, and doesn't rely on floating point arithmetic. It would be interesting to see the author's results with a stronger algorithm.

[https://mitpress.mit.edu/sicp/full-text/book/book- Z-H-11.htm...](https://mitpress.mit.edu/sicp/full-text/book/book- Z-H-11.html#%_thm_1.19)

<comment><USER5> > it's fast, not recursive, and doesn't rely on floating point arithmetic

I think using 'iter' in the name is misleading. Recursion _is_ a form of iteration. In that exercise fib-iter _is_ recursive - it calls itself. That's the very definition of recursion. I think they use the name 'iter' because the overall process is linear in time the same way an iterative loop in other languages is. In this case it's logarithmic in time. The additional arguments and tail call optimisation (guaranteed by the Scheme standard) avoid a stack of intermediate values so it's constant space as well.

If you delve further it's not _actually_ constant space OR logarithmic times since the numbers get large so fast that storage, addition and multiplication and evaluation are no longer atomic and will have an effect on the time and space characteristics.

Still it's one of my favourite exercise from the book and they use it and reference it in Racket's number theory module.[1]

[1] [https://github.com/racket/math/blob/5cc1080d90d2603f790abd41...](https://github.com/racket/math/blob/5cc1080d90d2603f790abd41d5b33a6f9a8278c0/math- lib/math/private/number-theory/fibonacci.rkt)

<comment><USER6> >"In that exercise fib-iter is recursive - it calls itself. That's the very definition of recursion."

Yet SICP addresses exactly this point!

The authors still mandate it's not truly recursive in that the required state is passed along to each iterative call.

From the parent's SICP link, but many paragraphs back :

"In contrasting iteration and recursion, we must be careful not to confuse the notion of a recursive process with the notion of a recursive procedure. When we describe a procedure as recursive, we are referring to the syntactic fact that the procedure definition refers (either directly or indirectly) to the procedure itself. But when we describe a process as following a pattern that is, say, linearly recursive, we are speaking about how the process evolves, not about the syntax of how a procedure is written. It may seem disturbing that we refer to a recursive procedure such as fact-iter as generating an iterative process. However, the process really is iterative: Its state is captured completely by its three state variables, and an interpreter need keep track of only three variables in order to execute the process."

<comment><USER5> It's been a long time since I read it and I'd forgotten about that explanation. I understand the distinction they are making but it still it seems a confusing use of terminology, especially when you read it out of context - like the comment I replied to.

They were clearly aware of that too ... "It may seem disturbing that we refer to a recursive procedure such as fact-iter as generating an iterative process. "

</comment></comment></comment></comment><comment><USER7> Sadly, a little known construct from javascript that I've fallen in love with is the closure. I feel like it is an easier way of expressing the idea of a generator.

      var fib = (function () {
              let current = 0;
              let next = 1;
              return function (increment) {
                      for (var i = 0; i < increment; i++) {
                              [current, next] = [next, current + next]
                      }
                      return current
              };
      })();

This is an example of an implementation of a Fibonacci sequence as shown in this post. The same optimizations still apply, but I think this is nicer (in my opinion) then using yield.

Edit: Altogether, good show. I enjoyed the post.

<comment><USER8> Closures predate JavaScript by at least 30 years (it's a construct in Lambda calculus which was being discovered in the 60s). Lisp had closures before many of us were born.

<comment><USER7> By from I mean easily represented within.

Most people don't think of a function with an inherited scope as a closure since by the standard PLT people will tell you that Javascript does not provide "real" closures.

I'm sure you know what I meant. It's the "Javascript Way" TM of doing this.

My "little known" I mean that most programmers do not think of doing this out right. It took me seeing an amazing talk by the creator of JSON called "Javascript the Good Parts" to realize how powerful this construct was, and how Javascript made it so easy.

<comment><USER9> I'm going to push back a little further on this. Closures are fundamental to JS and widely known about and used. Crockford, too, is famous in JS circles, as is the talk you mention.</comment></comment></comment></comment>


Show HN: WizAtHome – WFH Policy Management SaaS Platform - <AUTHOR> https://www.wizathome.com/ <comment><AUTHOR> The motivations for wiz@Home platform is as follows: 1) Covid-19 will have permanent effects, and WFH trends will only continue to rise. Long-term WFH makes employees "free agents" to some extent. In this environment, it's not enough to treat all employees uniformly and apply standard policies. A better approach would be to actively leverage the flexibility it offers and maximize the benefits.

2) Additionally, some companies seem to be engaged in the heavy-handed approach of covert monitoring and surveillance([https://www.washingtonpost.com/technology/2020/04/30/work- fr...](https://www.washingtonpost.com/technology/2020/04/30/work-from-home- surveillance/)) of WFH employees. Our platform takes the opposite approach of treating employees with respect, and enhances trust through tailored policies and employee "opt-in".

</comment><comment><USER2> I've browsed your site and I still don't know what your product does. What's a WFH policy? Why do I need one? How are these enforced?

</comment><comment><USER3> Hi, some suggestions:

1) Avoid the WFH acronym or any acronyms. I know what it means, but I know others don't. Some people use OOO and others use neither.

2) Add a nice photo of someone working from home with a screenshot of your platform that shows visually what exactly a policy is.</comment>


How to spot a lying job candidate - happy-go-lucky http://www.bbc.com/capital/story/20170411-how-to-catch-the-lying-job-applicants-and-what-to-do-next <comment><USER2> Very interesting: have been both sides of the interview desk many times.

The "because I'm passionate about money transfers" fib is an interesting one. Not sure quite how I'd respond to the question but I suspect I'd laugh and say that they might hope I'd say that but the reality is that I'd hope I'd get rewarded for being honest and careful in an interesting job.

Rgds

Damon

<comment><USER3> Please read [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html), which includes "Please don't sign comments; they're already signed with your username."

</comment></comment><comment><USER4> So they say don't do an interview and see how people answer questions - that's a bad way to hire. Instead, do an interview with a survey (is it validated?) and see how they answer questions.

I think it's silly. The power difference between the interviewer/ee is huge, of course the interviewee is going to try and find the right answer - <AUTHOR> or not they actually believe it themselves.

Maybe MDs are used to getting our asses kissed during interviews, but I would never work for a firm that gauged my truthiness in some shitty survey.</comment>


Show HN: Gitcuss – See Reviews of GitHub Repositories - <AUTHOR> http://www.gitcuss.com I just released first version of my side project, Gitcuss.
http://www.gitcuss.com
--What is this?
Gitcuss is a platform for discussing Github repositories. You can learn more about a project, library, gem or anything available on Github. Or you can leave a comment about it.
--Why did I created it?
After reading readme files of repos, I always look for last commit date and watch, star, fork counts to evaluate libraries(gems for ruby) then I decide to use it or not. But sometimes thats not enough. I want to learn what people think about it. Thats why I created Gitcuss. It was something I was looking for most of the time.
A Chrome plugin will be available soon for better experience.
Any feedback would be appreciated.
Leave feedback on Gitcuss. http://www.gitcuss.com/r/beydogan/gitcuss <comment><USER2> Nice RoR project but how are you going to get traction? How is this better then say submitting the repository to HN and discussing it here (with more people to view it).

Infact GitHuss could instead be an engine to discover github projects that have been discussed on HN and link to the HN discussion!

<comment><AUTHOR> Thank you. It doesn't have a good traction but I'm getting good feedbacks. It was something I needed from time to time. I was saying "I wish there was something like this" when I'm searching for Ruby gems.

For example; there are two popular gems for Github API. "octokit.rb" and "github_api", readme doesn't give enough information I need. I want to know what people think about that gems. That was my motivation so I built it :)

> How is this better then say submitting the repository to HN and discussing > it here?

I will create a Chrome plugin which will embed Gitcussion comments to the Github page of the repository. Actually, that was my MVP.

You can think Gitcussion as Product Hunt for Github repositories.

</comment></comment><comment><AUTHOR> Any feedback would be really appreciated. You can leave feedback on Gitcuss [http://www.gitcuss.com/r/beydogan/gitcuss](http://www.gitcuss.com/r/beydogan/gitcuss)

</comment><comment><USER3> Presumably this combines "git" and "discuss" but it now concatenates "git" and "cuss".

<comment><AUTHOR> Oh, Im not a native and I had no idea about the word "cuss" until now. Should I rename gitcuss to gitcussion or something else?

<comment><USER3> I would say so yes, something else that captures the same idea but isn't named gitcuss.

<comment><USER2> It is an awesome name. "cuss" is in the same spirit as "git":

git means "an unpleasant or contemptible person." cuss means "an annoying or stubborn person or animal."</comment></comment></comment></comment>


Why should bottlepy stick to a file? - <AUTHOR> https://github.com/bottlepy/bottle/issues/1158 <comment><USER2> I've learned recently, to my astonishment (I've been using Flask for the last 10 years and Bottle briefly before) that both names are puns on the WSGI acronym (which is pronounced "woos-ghee", and sounds similar to "whisky").

In Flask's case, it's indirect, as Armin admitted in the 2011 presentation ([http://mitsuhiko.pocoo.org/flask- pycon-2011.pdf](http://mitsuhiko.pocoo.org/flask-pycon-2011.pdf)): "Wordplay on Bottle, probably a mistake".

</comment><comment><USER3> The (admittedly biased) history of bottle and flask from the author was fascinating [https://github.com/bottlepy/bottle/issues/1158#issuecomment-...](https://github.com/bottlepy/bottle/issues/1158#issuecomment-526602488)

<comment><USER2> I think one of the most important technical statements in this comment is this: "even the same design errors (global request/response objects)".

(Note to outsiders: we're not talking globals in the usual sense here, they are very carefully crafted proxies on top of thread-locals that behave like globals, i.e. can be imported at module level, but behave correctly in terms of concurrency.)

As a long-time Flask developer, this is the biggest source of frustration when trying to do anything "frameworky" around Flask (see [http://mitsuhiko.pocoo.org/AdvFlaskPatterns.pdf](http://mitsuhiko.pocoo.org/AdvFlaskPatterns.pdf) for some technical explanations).

There are a lot of emerging web frameworks in Python-land these last years, hopefully some of them will get the success they deserve.

To displace the current dominant players (arguably: Django, Flask and Pyramid), one needs a paradigm shift, just as Django displaced the dominant player (Zope) in 2005 when "MVC frameworks" became the dominant paradigm, or when Flask and Bottle rode the "microframeworks" wave in 2010.

This current paradigm shift is probably spelled ASGI. For more read [https://dev.to/florimondmanca/introduction-to-asgi- emergence...](https://dev.to/florimondmanca/introduction-to-asgi-emergence-of- an-async-python-web-ecosystem-38oi)

BTW: here's a fresh take from a friend who did exactly that last year: [https://florimond.dev/blog/articles/2018/12/how-i-built-a- we...](https://florimond.dev/blog/articles/2018/12/how-i-built-a-web- framework-and-became-an-open-source-maintainer/) (with limited success, despite a lot of talent and dedication).

I'm curious to know which of the "new" (ASGI or not) Python frameworks are using these days.

<comment><USER4> FastAPI - [https://github.com/tiangolo/fastapi](https://github.com/tiangolo/fastapi)

</comment></comment></comment><comment><USER5> I don't quite get those arguments [1]:

> The single-file restriction is an effective save-guard against feature > creep. [...] We are able reject pull requests simply because they would add > too many lines or add too much complexity, and that's nice.

bottle.py is already 4425 lines of code [2].

So, despite they say they reject pull requests because they add too many lines, it's also can be said that they reject pull requests because file is too big already and merging PR makes it even harder to maintain.

> A single file is easier to debug and understand. [...] You can read the > entirety of bottle.py in an hour or so. Most of it is pretty easy to > understand. Try that with flask/pyramid/django [...]

Why not at least to just split it to 1 section per 1 file, which they emulate right now by using section-delimiting comments [3]? Will it make code much harder to understand? Or will it make code easier to understand?

Also, from a developer perspective, what about navigation to the correct section quickly. E.g. if developer wants to add a new Exception, how he can efficiently go to the specific section? If it wouldn't be single file, developer could jump to required file by typing couple of letters in fuzzy file opener it his editor of choice.

No one forces developers plunge into a feature creep apart from their own, and it actually doesn't matter is there a single file or not. Some prefer to write as many code as they can in one single line. I doubt that they do it to ease maintenance and to avoid feature creep.

[1]: [https://github.com/bottlepy/bottle/issues/1158#issuecomment-...](https://github.com/bottlepy/bottle/issues/1158#issuecomment-526602488) [2]: [https://github.com/bottlepy/bottle/blob/master/bottle.py](https://github.com/bottlepy/bottle/blob/master/bottle.py) [3]: [https://github.com/bottlepy/bottle/blob/332215b2b1b3de5a321b...](https://github.com/bottlepy/bottle/blob/332215b2b1b3de5a321ba9f3497777fc93662893/bottle.py#L262-L264)

<comment><USER6> I recon it is similar to the desire for header-only C libs, package management isn't great, so single files are easier to deal with. I wonder if anyone has made a Python package manager based on the idea of bundling up all the files in a Python project into a single .py file that can just be downloaded and copied around as-is? No requirements.txt, just vendored .py files in a libs dir.

<comment><USER7> Header only c libs also emerge from c and c++ realities that are less true elsewhere.

The biggest one is the optimizer does a better job when stuff is in the same compilation unit. (Inlining and stuff.) A good example to look at is sqlite, which is developed as multiple files but they concatenate them together for distribution.

Another reason is a C++ one, and C is not C++ but the community has enough overlap that I think it tends to spill over. And that is templates. Templates need to be in the header so a lot of c++ libraries have complicated, slow to compile headers.

I do think, for example when any given person on HN links to a header only C or C++ library, that a lot of these people are overdoing it. They have likely not measured it and found it to be better like the sqlite people. They are fighting, perhaps even misunderstanding the tooling, at the cost of compile times and large binary sizes. And for what? Makefiles are not really that hard to write.

</comment></comment></comment><comment><USER8> Title is confusing, maybe "keep to a single file"? Had to read a while before I realized it wasn't some kind of file-clinging code barnacle.

First I've heard about bottle, I'm intrigued - as a longtime Flask user who is occasionally frustrated with its OOP-zeal it might be up my alley.

</comment><comment><USER9> Back in college, Bottle was where I started to understand how web servers worked. I had written PHP but had zero idea how it worked (or how to write it) and eventually I tried Django, but couldn't configure it to send static files. Once I tried bottle though, it just clicked. It was so simple and I loved that there was little magic. It being a single file that I just dragged into a folder was a BIG part of the simplicity for me, too. I mostly write nodejs these days (express sorta scratches the same itch), but I have fond memories of bottle. In fact, my old personal site ([http://www.superftc.com/](http://www.superftc.com/)) is still a bottle app to this day.

<comment><USER10> Wow the comic is great I've just spent so long enjoying it. Thank you so much! How come you've stopped doing it?

<comment><USER9> Well thank you for the compliment, I'm glad you enjoyed it! I can't really recall why I stopped, but I think I just got tired of doing it and no one was reading it. It was just hard to make time for it I guess :/

</comment></comment></comment><comment><USER11> I have a relatively popular single-Python-file, no-dependency-beyond-PSL project myself (slightly smaller than bottle.py, ~3.5k lines). It would certainly be shorter and easier to develop if I added a bunch of dependencies, but I've resisted the urge over time, and being able to just download a single file and use it with any Python installation that's less than five years old is ultimately worth the effort IMO. Also got me closer to some lower level PSL modules.

<comment><USER12> Care to share what lib it is ?

</comment></comment><comment><USER13> Bottlepy is like one of those plucky little mammals living amongst giants. It is nimble and quick with small footprints.

I use it for quickly deploying endpoints for specific tasks such as a miniscule CDN and the obligatory blog. Great for home automation as well.

</comment><comment><USER14> I don't blame him. I made the same design choice for my python library[1]. I also don't use any non-native libraries in the single file. I'm sorry to say it's a much better experience for users if they don't have to deal with pip if they don't want to. I myself have been burned many times trying to install some python module for hours and failing because of some dependency issue.

[1] [https://github.com/RPGillespie6/fastcov](https://github.com/RPGillespie6/fastcov)

</comment><comment><USER15> Bottle was my 3rd python web framework that I tried and I really liked the idea.

But then I learned about Flask blueprints and now I can't live without them.

Imagine that I can make a lambda function that only loads selective blueprints, selective parts of my API, into AWS.

That's very powerful for off loading bottlenecks.

Is it possible to do blueprints with bottle? Because seeing as they've cemented the single file policy, it would make sense to have some sort of plugin system.

<comment><USER16> Bottle doesn't have "blueprints" but I've used it for something like that in the past. IIRC you can "mount" another bottle app object into a URL path [1].

[1] [https://bottlepy.org/docs/dev/api.html#bottle.Bottle.mount](https://bottlepy.org/docs/dev/api.html#bottle.Bottle.mount)

<comment><USER17> Hm:

> app – an _instance_ of Bottle or a WSGI application.

So, that means a require to load the code, and the some kind of app = my app.default_app()?

Do you have an example of how you create an instance of a wsgi app? For bottle it looks like that's normally something bottle.run() does?

<comment><USER16> wsgi is an interface; if you implement it then you are compatible. The simplest way is to just use another Bottle app, or maybe subclass the Bottle class like this `class MyClass (Bottle):`, otherwise you can create a new class by implementing the interface methods (many tutorials online for this). Then you "mount" that wsgi object into a specific path using the `.mount()` function of your main Bottle app.

<comment><USER17> Right, I get that part (sort of).

But looking at the quickstart, you typically don't subclass Bottle, you require it, and call run()? So your typical bottle app won't be a subclass of bottle? At which point you can't make an instance of it, to pass to mount()?

Looking at the documentation for mount() it looks like you should be able to mount the quick-start app - but it's not clear of you create an instance to pass to mount?

That is if I have example.py:

      from bottle import route, run, template

      @route('/hello/<name>')
      def index(name):
        return template('<b>Hello {{name}}</b>!', name=name)

      run(host='localhost', port=8080)

How do I write example_mount.py that mounts example.py under /hello1 and /hello2?

<comment><USER16>
        test.py
        </comment></comment></comment></comment></comment></comment><comment>=
        import bottle

        @bottle.get('/')
        def index():
            return 'INDEX'

        # a new wsgi app
        hello = bottle.Bottle()

        @hello.get('/<name>')
        def greet(name):
            return 'Hello, ' + name

        bottle.app().mount('/hello', hello)

Test like this: python3 -m bottle --bind :8080 test

You should have 2 working routes, "/" and "/hello/<name>".

<comment><USER17> Thanks, that makes sense.

But I'm still not clear on how I require "example.py" and mount it (ie how do I make an wsgi instance from a python file that is a bottle app)?

</comment></comment><comment><USER18> I love Bottle because it's a single file and I can read through all of it to (re)understand it. It has all the essentials and nearly zero cruft, and I've been using it for ages - it runs my personal website, many API servers I wrote, and the odd minimal system daemon[0].

I rather like the single-file approach for small, focused software - imapbackup[1] and piku[2] were written to be easy to deploy and customize, and there certainly is a place for drop-in-and-forget libraries like bottle (I wish there were more like it, in other fields).

[0]: [https://github.com/rcarmo/azure-k3s-cluster/blob/master/clou...](https://github.com/rcarmo/azure-k3s-cluster/blob/master/cloud- config/master.yml#L15)

[1]: [https://github.com/rcarmo/imapbackup](https://github.com/rcarmo/imapbackup)

[2]: [https://github.com/piku](https://github.com/piku)

</comment><comment><USER19> Kudos to Bottle for keeping their code simple and auditable. I've been writing small projects in Bottle for a while.

</comment><comment><USER20> I never used Bottle and don't doubt the comments saying it's a great framework, but I'm more interested on the "single file" approach in general.

bottle.py may be a single file but it's 4,425 lines long. That doesn't strike me as particularly simple. Any project could potentially be "a single file" if it's a very long file.

Why would splitting it into a few separate files make it more complex? There's a reason why every modern programming language supports modules, and that's precisely to break down complexity into smaller, simpler units.

<comment><USER21> because it's extremely easy to "deploy" on old-fashioned cgi-hosts. You need a python-cgi configured, drop 2 files with ftp and your app is up and running. Also auditing is a lot easier (and you only have to trust a handful of maintainers).

<comment><USER22> Why does a single file mean you only have a trust a handful of maintainers? Each line of the ~4k lines could have been written by a different person and merged by a different maintainer.

<comment><USER21> because generally projects like these have some opinionated person who is maintaining it, which actively blocks "get the ssh-keys"-patches. compare that to the 100+ dependencies of your typical node-package.

<comment><USER22> Having many dependencies can be a problem. And the node ecosystem is a total joke.

But if the question was why not split it up into smaller files (which it was), then that's nothing to do with the number of dependencies or the number maintainers. My point is that auditing a program with no external dependences doesn't get any easier if the code is contained in one file or across ten.

</comment></comment></comment></comment></comment><comment><USER23> Arguments like this are why I gave up on scripting languages. "go build" generates one statically-linked binary that you can send anywhere. You can build a Windows binary from your Raspberry Pi or vice-versa. It is how everything should work, because distributing (and cross-compiling) is something you should have to spend 0 time thinking about. Now I spend 0 time thinking about it.

<comment><USER24> The argument has pretty much nothing to do with dynamic languages.

Single file dependencies are getting more and more popular because integrating with build systems is a major pain, particularly in _static_ languages like C and C++, but also in the mess that is modern Javascript.

Some languages do manage to do this better than others, but the type system has nothing to do with it.

Lastly, having one single statically-linked binary isn't the norm even for static languages.

<comment><USER23> I'm just saying that's why I stopped using them, not that it's a differentiating factor between static and dynamic languages. I wrote books about Perl, I taught classes on Perl. Having to install stuff from CPAN was probably the most common complaint. I wrote a new CPAN client at some point, and it didn't help. Enough was enough; the approach failed and I moved on to writing my code some other way (as did all of those students, probably). npm seems to have gotten something that mostly works; I use that and tolerate it because I have no other choice for client-side stuff, but I don't really do enough browser programming to call myself a Javascript user.

Yes, static languages have dependency hell. I've ./configure'd a million times and have wanted to die about 80% of the time. I've used buildroot and have wanted to die 100% of the time. I never seriously programmed in C or C++ to say that I've stopped using them, so while they're broken... you can't stop using something that you haven't started using. (I still cringe when I see that some C-based project I want to use doesn't have binaries. It's especially annoying because I mostly use Windows now. I want "dc" in Powershell because that is my preferred calculator app... but can't compile it, and apparently neither can anyone else. Wow.)

Python is a pretty great programming language... but it's just not worth the tradeoffs. It is nice that bottle is one file; that is going to increase its adoption. It is not a solution to any general problem, though; the next library you depend on is going to require virtualenv and 100 dependencies, and they will fail to install.

<comment><USER24> I guess we're on the same page then and I wouldn't have written the reply had you been more specific.

Having said that, I do find the situation with Python/PIP/PyPI today is far better than a few years ago, especially concerning binary packages and the Python2/Python3 divide.

I'm not experiencing a substantial quality difference between pip and npm, at the same time I prefer venv over node_modules (while detesting both).

</comment></comment></comment></comment><comment><USER25> Huge fan of bottle. I use it for a lot of things.

</comment><comment><USER26> If this is a design decision for a library it means the package and distribution manager for the language is broken.

<comment><USER27> Which package manager do you regard as non-broken?

</comment></comment><comment><USER28> The singlefile-ness of Bottle is no longer unique. For example, the modern day Fastapi built on async ASGI (and ranks top in framework benchmarks) is also single file.

[https://github.com/tiangolo/fastapi](https://github.com/tiangolo/fastapi)

or Fastapi for that matter - [https://github.com/encode/starlette](https://github.com/encode/starlette)

However, it is a bit tricky to run Bottle with production grade servers like gunicorn/uwsgi.

<comment><USER11> What? FastAPI is certainly not single file: [https://github.com/tiangolo/fastapi/tree/master/fastapi](https://github.com/tiangolo/fastapi/tree/master/fastapi)

The issue is talking about Bottle the framework itself being a single file, bottle.py.

<comment><USER28> oh my bad. That's interesting, but im not sure about utility.

Because everyone literally uses package management to install and maintain bottle.

Bottle has code like this - [https://github.com/bottlepy/bottle/blob/master/bottle.py#L81...](https://github.com/bottlepy/bottle/blob/master/bottle.py#L81-L84) \- which does check for external dependencies (which predicate a package manager)

<comment><USER29> not really.. it uses ujson if it is installed and falls back to the built in json. Hard to call something a dependency when you don't depend on it.

<comment><USER30> Those are often called optional dependencies. Which is of course an oxymoron.</comment></comment></comment></comment></comment>


Namshi(Dubai) Needs Lead AngularJS Dev to Innovate eCommerce [Remote OK] - <AUTHOR> https://www.angularjobs.com/posts/658-senior-frontend-developer-team-lead-at-namshi-in-dubai-remote-or-on-site

<comment><USER2> Not interested in the position, but really interested in the outcome. A fun challenge due to the fact that no major search engine supports running SPA's, so there's need for middleware to handle prerendering of the pages.

<comment><AUTHOR> The job is building out the platform further. Maybe they have that figured out?</comment></comment>


AMD unveils its Vega 10 GPU architecture - <AUTHOR> http://www.tomshardware.com/news/amd-radeon-rx-vega-64-specs-availability,35112.html <comment><USER2> One significant advantage AMD might have is that they have chosen to provide full rate FP16 support:

[http://www.tomshardware.com/news/amd-radeon-rx- vega-64-specs...](http://www.tomshardware.com/news/amd-radeon-rx- vega-64-specs-availability,35112.html)

...unlike nVidia:

[http://www.anandtech.com/show/10325/the-nvidia-geforce- gtx-1...](http://www.anandtech.com/show/10325/the-nvidia-geforce- gtx-1080-and-1070-founders-edition-review/5)

While that's something that developers have to explicitly support, it will be interesting to see what happens when they do.

<comment><USER3> At 21TFLOPS for 400 USD it has good potential in the machine learning field, yes.

AFAIK AMD is busy pushing out support for MIOpen into Tensorflow etc.

<comment><USER4> For machine learning Tensor Cores in the upcoming Volta GPUs seem much better idea, delivering 120 TFLOPS. Although the price would be a multiple of 400 USD, for sure.

<comment><USER5> > For machine learning Tensor Cores in the upcoming Volta GPUs seem much > better idea, delivering 120 TFLOPS.

Yes, but the real-world benchmark numbers nvidia published show a much smaller speedup than one would expect if one looked only at the 120TFLOPS number.

This is because (a) "tensor core" is just a fancy name for "fast 4x4 matmul instruction" \-- it's not applicable to everything you might do on the GPU, and (b) memory bandwidth did not increase commensurate with compute speed.

(I work on the XLA GPU compiler in TensorFlow.)

</comment></comment></comment></comment><comment><USER6> The Radeon Pro SSG is where it's at:

> "The Radeon™ Pro SSG takes it one step further by having 2TB of solid state > graphics memory on board"

Just insane. In a good way.

[https://pro.radeon.com/en-us/radeon-pro-wx-9100-and- radeon-p...](https://pro.radeon.com/en-us/radeon-pro-wx-9100-and-radeon-pro- ssg/)

<comment><USER7> "graphics memory" is probably not the right term here. While the Pro SSG does have 2TB of storage on board, that comes in the form of a NAND flash, PCIe SSD (from Samsung IIRC). While fast, this SSD provides single digit GB/s bandwidth at most, compared to the hundreds of GB/s of bandwidth that the DRAM-based GDDR5 or HBM provide. When we say "graphics memory," we're almost always referring to the latter, and never see more than maybe 32 GB of DRAM based memory on board.

<comment><USER8> More curious about the latency and how that impacts performance, even with DMA going over the PCIe bus to a NVMe SSD is a longer trek.

<comment><USER9> Isn't the "2TB" NVMe SSD (in this case) directly interfaced to the card, so not going over the system PCIe bus?

<comment><USER8> It is, which is why I'm curious how this improves performance compared to exactly the scenario of hitting NVMe storage over the bus.

</comment></comment></comment></comment></comment><comment><USER10> Who is this for then? I should just go Nvidia for my gaming rig?

The RX 480 last year had an amazing price/performance ratio. It was a very exciting product for the mid range gamer. It seems with Vega they are offering slightly worse than Nvidia's high end for slightly less money.

Better performance at the same price would have been compelling. Slightly worse at a bargain price would have been compelling.

Plus, you won't be able to buy these anyway because of mining. This is just sad. Maybe they should just remarket themselves as a mining company.

<comment><USER11> Slightly worse for slightly cheaper could still be attractive. Factor in prices for displays with freesync display vs displays with gsync, and the price difference to Nvidia get a a lot bigger, in favor of AMD. But it depends on whether the cards will be available, and which performance will be reached.

<comment><USER12> Seeing as the Vega 64 "starts at" $500 and I was able to pick up a 1080 TI for about $700 I don't see who the target audience is. If you are the part of the market that is willing to spend $500+ just for a new graphics card then you likely aren't going to get the subpar card just to save a few dollars.

</comment></comment></comment><comment><USER13> Reviewers: make sure to test mining performance of these cards. Not that we care about that, but to give us an idea of whether it'll be possible to actually buy these things.

<comment><USER14> AMD are actually selling a portion of the GPU stock in bundles so that they don't all get snapped up by miners.

<comment><USER13> But will it work, or will miners gladly pay the extra $100? AMD would love that -- miners won't redeem the games or the discounts, so that extra $100 is pure profit.

<comment><USER15> Is that how those bundles work? AMD only pays when the game gets activated/redeemed? I always thought they just buy a bunch of game licenses and pay upfront.

</comment></comment></comment></comment><comment><USER16> Vega is a failure aka bulldozer 2.0 Same performance as 1080, a year later with double the TDP. Only 30% higher than the Fury which was their high end card from 2 years ago. This whole product launch was terrible from AMD laughing at Nvidia with "Poor Volta" to "blind tests" to no live streaming of the SIGGRAPH event.

<comment><USER17> That is a very pessimistic view.

The GTX 1080 is $550; Vega 56 is $400 and Vega 64 is $500. With decent cooling, the vega gpus can be overclocked to give significant boost. Also the freesync monitor is cheaper than gsync. Vega56 + FreeSync will save you around $350. That is ~ 25% saving if you are going for a 1.2-1.5k$ rig.

<comment><USER18> Sure, for desktops.

Poor thermals means that this line of GPUs will find it's way into exactly 0% of the laptop market, which is unfortunate.

<comment><USER19> > into exactly 0% of the laptop market

Alienware will find a way, even if it requires a water connection to cool it

<comment><USER18> Oh man that would be so heavy haha. But I won't rule it out!

</comment></comment></comment></comment></comment><comment><USER20> With the failure of RX Vega to meet performance expectations, I fear Nvidia has free reign now to continue their dominance in the areas of deep learning / machine learning.

I was really quite optimistic, especially with their recent push with the ROCm platform that AMD has been building up. But if the hardware can't back it up, it means little in the end. It seems like we'll have to wait until the next generation to see if any viable contenders will show up. Disappointing to say the least.

<comment><USER21> It didn't meet expectations of gamers who wanted it to beat the 1080 Ti in games. But the compute performance is really good.

<comment><USER20> Even in terms of raw compute, the current Pascal iterations like the 1080 Ti, Titan Xp, etc. perform better than the RX Vega.

In addition to a significantly lower TDP par for par and an established developer environment that currently is unparalleled, much to the frustration of myself and many within the machine learning community as Nvidia has chosen to keep their software closed source, the RX Vega release to be very blunt, is a definitively disappointing result regardless of the distinction between gaming or computation.

I think there is a silver lining somewhere, however, in anticipation for the next generation releases of AMD in a year or two. AMD's investment into their ROCm platform will hopefully continue and iteratively, the open source option will slowly continue to improve. By the time AMD is ready to release their Navi architecture in 2018/2019, perhaps there will be a chance to bring things back towards an equilibrium.

Another contender I see in the nearer future perhaps that might be able to topple Nvidia's current monopoly on deep learning, is Google's investment into their TPU architecture. In addition to fully owning the development of TensorFlow, with the resources that Google has at its disposal, I could easily see the company investing in building out an full end-to-end alternative that takes away the current stranglehold that CUDA has.

Wherever the competition comes from, I hope that it comes sooner rather than later. Closed source single option monopolies that Nvidia currently has managed to position itself into only serve to hurt the consumer.

</comment></comment></comment><comment><USER22> [https://img.purch.com/radeon-rx- vega/o/aHR0cDovL21lZGlhLmJlc...](https://img.purch.com/radeon-rx- vega/o/aHR0cDovL21lZGlhLmJlc3RvZm1pY3JvLmNvbS9HLzEvNjk3ODI1L29yaWdpbmFsL3BlcmYuanBn)

So basically $700 dollar card is worse then 1080. You can buy 1080TI for around ~$900 which would completely destroy this AMD "beast".

Not sure where the hype comes from, or am I missing something?

<comment><USER13> You're linking to a graph that claims that a $500 card is better than a 1080. 53 fps is bigger than 45.

<comment><USER23> The GTX 1080's current MSRP is also $500, though, and it's been on the market for over a year already.

Also, those numbers only represent the "minimum FPS range" for select titles. While minimum FPS is important, the picture is incomplete without other figures such as average FPS.

Plus, AMD clearly cherry-picked one of the benchmarks (Deus Ex MD, presumably using DirectX 12) just to lower the GTX 1080's range in that comparison: [https://www.pcper.com/files/review/2017-07-30/vega-35.jpg](https://www.pcper.com/files/review/2017-07-30/vega-35.jpg)

It's marketing's job to shine the best light possible on their product, of course, but it says something when Vega still doesn't look terribly impressive despite that effort.

</comment></comment></comment><comment><USER24> I really hope that AMD gets better deep learning support so it will push NVIDIA's pricing structure down. Also, AMD's processor lineup looks very appealing compared to Intel (which has had more pressure on their solutions also. (moved from dupe thread).

<comment><USER25> I'm surprised at the absolute lack of news on how Vega FE performs in deep learning...

<comment><USER26> Backends for the deep learning frameworks in use are CPU or CUDA. OpenCL support is essentially non-existent. There's no point benchmarking something that isn't going to be used.

</comment></comment></comment><comment><USER27> Just curious any people own $AMD shares? I was surprised to learn that AMD is the second most owned company on Robinhood trading platform behind Apple. I bought in at $10.47 after last earnings absolutely destroyed it. Just sold right before current earnings at $14.12 and looking to maybe buy back in lower than I sold for. Closed today at $13.61.

<comment><USER28> That's interesting, didn't know the stock was so popular on Robinhood. I remember around 2 years ago their stock price was in the $2 range and r/wallstreetbets were all talking about going "YOLO" with AMD. Pretty nice comeback for their stock. Lisa Su seems like a great CEO.

<comment><USER8> Lisa made a good call bringing Jim Keller back to work on Zen, an investment that seems to have paid off extremely well.

</comment></comment></comment><comment><USER29> I wonder if it would be feasible to couple GPU dies similar to threadripper or EPYC.</comment>


YC Applicants: What did you put for the "surprising/amusing question"? - <AUTHOR> I'm referring to this question, asked at the end of the application:<p>Please tell us something surprising or amusing that one of you has discovered. (The answer need not be related to your project.) <comment><USER2> I'm not an applicant, but I know what I'd put. (And the fact that I'd put this probably makes it good that I'm not an applicant!)

In grad school I proved the following:

 _A polynomial that is symmetric in the roots of two other polynomials is a polynomial in the coefficients of the other two polynomials._

As an example it is easy to construct a polynomial with integer coefficients that has sqrt(2) + sqrt(3) as a root. Just take the polynomial (x-sqrt(2)-sqrt(3))(x-sqrt(2)+sqrt(3))(x+sqrt(2)-sqrt(3))(x+sqrt(2)+sqrt(3)), multiply it out, and you'll get your answer. (In this case, x^4-2x+1.)

Kind of a cute result. So I took it to multiple mathematicians. None had heard of it until I talked to an old mathematician who told me that it sounded like a very old approach, and he encouraged me to look for an introductory algebra book from the 1800s.

I did, and lo and behold! It was once well-known, and a standard part of the undergraduate curriculum. Even better, two of the mathematicians who had not known the result worked in areas of math that STARTED with that observation! (One worked with the algebraic integers - that construction was how mathematicians first proved they formed a ring, and the other worked with symmetric polynomials - and that construction was the original reason why they were studied.)

This incident opened my eyes to the truth of how easily knowledge gets lost, and how little attention mathematicians pay to their own history.

<comment><USER3> Wow, that's impressive. Well, at least it sounds impressive to someone without a lot of math knowledge.

Which has me puzzled. I can't think of anything offhand that I "discovered". I suppose you don't need to have been the first to discover it; it merely needs to be relatively unknown to most people? If that's the case, then nevermind: I'm full of obscure knowledge.

I've actually "invented" an impressive device, but I'm not sure if "something you invented" is what they're looking for.

Of course, I'm probably reading into this a little too much.

</comment></comment><comment><USER4> When I was a child I discovered that band-aid wrappers exhibit triboluminescence when opened. I happened upon that by accident and only learned the term for that now as an adult.

<comment><USER5> <http://en.wikipedia.org/wiki/Triboluminescence>

</comment></comment><comment><USER6> CoinStar does not accept 1943 5 cent nickels!

But it does help identify $80 nickels.

</comment><comment><USER7> When I applied to YC a few years ago, I believe I put down that the quadrillionth bit of Pi is zero.

<comment><USER8> Another interesting fact is that the last bit of Pi is 1. It's not difficult to see why when you stop and think about it, but if you tell that fact without the usual mathematical disclaimers (e.g. - Pi doesn't have a last digit in any base), it tends to put people into a funny "how the hell did you figure that out" state.

<comment><USER9> I don't get it. What does it mean that the last bit of Pi is 1 when there is no last digit?

<comment><USER8> The clincher is that rightmost 0's after a decimal point are insignificant and can be discarded similarly to leftmost 0's before a decimal point. 00045.26030 = 45.2603 - the extra 0's are simply noise. In binary, the only non-0 digit is 1. This means that, if Pi does in fact terminate, its binary representation must terminate in a 1 - any 0's to the right of the last 1 carry no value.

Now, that's a pretty big "if", but this isn't meant to be serious mathematics. It's just an interesting consequence of binary representation and the assumption that Pi might terminate, and is enough to make people do a bit of a double take when you phrase it along the lines of "the last bit of Pi [if it has one] is a 1".

<comment><USER7> _rightmost 0's_

... which Pi doesn't have, since it has no rightmost bits at all...

 _the last bit of Pi [if it has one] is a 1_

This is true; it's also true that the last bit of Pi [if it has one] is a forty-two. A falsehood implies everything.

</comment></comment></comment></comment></comment><comment><USER10> "We've discovered that even owls don't stay up as late as developers." We tried to go for something simple yet slightly amusing. Not sure if we'll change it before the 20th or not.

<comment><USER5> Did you actually discover that?

Or is this more like trying to answer "what is your greatest weakness" (terrible question!) with "I tend to work too hard"? :)

<comment><USER10> It's more of a humorous remark more than something we've really discovered (though spending all day and all night hacking away isn't something that's uncommon for us) which is why I'm not 100% sure we'll be keeping it as our final answer to the question :-)

<comment><USER5> I'd change it :)

</comment></comment></comment></comment><comment><USER11> I posted my entire application here: <http://news.ycombinator.com/item?id=2361753></comment>


Perl for Equity Analysis? - <AUTHOR>

Off late, I have grown really mathematical in my equity and financial analytic decisions. Being a trader, I am trying to develop risk management strategies,my own trading setups, testing them, measuring the analytics etc.
In light of this, does anybody have suggestions, if Perl is a good choice of language for such work. If so, then why do you think so? If no, what would you suggest? What are your experiences? What is your modus operandi?
Basically, I am looking for some neat tool to run my own analysis, quick development etc.So what suggestions do you have for me?
Thanks :) <comment><USER2> Whatever language you choose, you probably want to bea ble to access the linear alg and statistics/prob. libs mentioned here:

<http://quantlib.org/index.shtml>

</comment><comment><USER3> Perl is heavily used on Wall Street and among banks, so, I'd say the answer is yes.

I'm not familiar with the field, but I imagine CPAN has a chunk of functionality to start with. I also recall reading a couple of Perl Journal articles on the topic a while back.

</comment><comment><USER4> As gtani said google the hooks into other programs. Also think about presenting your data in gnuplot, if you are writing the programs to crunch the data.

Perl is a fun language especially for text processing. As long as you have the memory and processor, Perl should work.

Is it the best choice? Depends on the person and how they program along with what preferences they have. If you have the algorithms in your head already, play around and put them into several different languages until you find the language that works best for you.

<comment><USER5> Bavcyc hit the core of this problem: The central item is YOU.

Are you, the programmer, familiar with perl? That's the question that really matters.

</comment></comment><comment><AUTHOR> Thanks SwellJoes, Thanks gtani

But have you noticed that Perl doesnt really have a great charting/graphing or plotting library? So, I am a bit unsure of developing visualisation tools.

And secondly I would like to ask, will it really have a computation edge while handling MBs of data? Or rather put in this way can it scale?

<comment><USER2> Based on my experience, I think the important concerns: database drivers, bridges to linear algebra and stat/prob libs i mentioned, C extensions and java libraries.

I work in python and ruby where appropriate, and forgot all the perl i know, except when I maintain other people's code.

The database driver issue, is moot, all three languages have solid packages for mysql, SQLite or any non-obscure RDBMS and probably hook into couchDB, or mnesia, or any of the non-SQL databases.

The hooks to MATLAB, R, gsl or octave or linpack or whatever, not hard to google. Worst case, you pipe / tee flat files between apps (I'm assuming you're using linux or FreeBSD or solaris).

C extensions: Pretty straightforward in python or ruby. In face, ruby-inline, pyrex/cython make it about as straightforward as could be, assuming you know to look for memory leaks and clean up after yourself. And Jruby is produciton- ready, you can be pretty confident you can hook into whatever java libs you need.

I suggest you look at what Jane St Capital is writing about OCaml analytics.

</comment></comment><comment><USER6> You can also have a look at R and K.</comment>


Linux to begin tightening up ability to write to CPU MSRs from user-space - <AUTHOR> https://www.phoronix.com/scan.php?page=news_item&px=Linux-Filter-Tightening-MSRs <comment><USER2> I see this is a welcome change, particularly as (opt-in) kernel lockdown support starts to tighten down to the point where it is meaningful. MSR writes from userspace should definitely be disabled by default for locked down kernels.

For flexibility, users should be able to opt out of this (as with the rest of kernel lockdown). Sometimes I just want a holster full of foot-guns. Blanket R/W access to MSRs is that.

There are a lot of fairly powerful MSRs. Some of them might already be restricted for all I know. Here are some examples:

      IA32_SYSENTER_EIP -> the instruction pointer after calling SYSENTER. Similar MSRs exist for the syscall instruction.
      IA32_DS_AREA/PEBS MSRs -> DS_AREA is a pointer that points to a buffer of pointers that are written to by the perf subsystem. Manipulating DS_AREA to point to a user page should let you write ~arbitrary data to the kernel.
      IA32_SPEC_CTRL -> disable some of the speculative execution mitigations.

There are less obviously powerful msrs as well, which probably let you get away with some sketchy-ness:

      APIC_BASE -> you could try to get it mapped into userspace then control the APIC directly. Or you could hide particular kernel writes by moving the apic over another page (there was an attack against SMM based on this a while back).
      X2APIC MSRs -> no need to move the apic base when you could just write to the apic through msrs more directly.
      IA32_EFER -> Unexpected switch from long mode to protected. This can't do anything good.
      MTRRs -> Changing memory types underneath the kernel (potentially restricting access to kernel memory) can't do anything good to the kernel. You could also change the caching behavior, which sounds messy.

Edit: Formatting. This is probably still unreadable on mobile.

</comment><comment><USER3> For the curious, I think this article is referring to the LKML thread starting at [https://firstname.lastname@example.com/](https://email@example.com/)

</comment><comment><USER4> Guess I'm going to have to port RyzenAdj to a kernel module...

</comment><comment><USER5> So what happens to software with assembly that reads and writes to registers?

<comment><USER6> MSRs are not your ordinary registers, they are low-level registers for configuring major settings on the CPU.

> _Think performance counter MSRs, MSRs with sticky or locked bits, MSRs > making major system changes like loading microcode, MTRRs, PAT > configuration, TSC counter, security mitigations MSRs, you name it._

I think the only legitimate uses of MSRs in userspace today is changing power- management related settings and performance profiling, which should be managed by the kernel anyway.

I welcome this move. PaX/grsec had an option to block MSR accesses for years.

<comment><USER7> And also, because it's Linux, anyone who _really_ needs this for some kind of niche reason can recompile the kernel, right?

<comment><USER6> It's even better - you just need to change your boot parameters.

> _This behavior right now can be toggled via the msr.allow_writes= kernel > module paramrter with on /off/default. Should legitimate use-cases come up > where writes to MSRs from user-space are still desired, they may add the > infrastructure to selectively grant/deny access to specific MSRs and ensure > they are sanitized by the kernel._

Similar hardware restrictions already exists in the kernel, for example, by default the kernel restricts access to I/O memory since it's a dangerous, low- level zone, but if you really need to for some reasons (e.g. reflash your BIOS), you can boot with "iomem=relaxed" to turn it off. Treating MSR registers in the same way is very reasonable.

<comment><USER8> Is there any clarification on how this MSR whitelisting will be implemented by end users? Or is there just going to be the global "allow_writes" parameters? I'd assume too that even with that parameter set to on, programs accessing the MSRs will still need the SYS_RAWIO capability.

<comment><USER6> Not sure, but I believe root or equivalent (CAP_SYS_RAWIO) privilege is always needed to write MSR, nothing has changed here.

</comment></comment></comment></comment></comment></comment><comment><USER9> This is good, Intel won't fix the CPU in my old Thinkpad W701ds because it's too old now for a firmware upgrade I guess. But the thing is not only more than fast enough for today's use, it also has 32GB RAM and I just got a couple new Chinese batteries for it. There's no way I'm switching from it, you can't even get a real keyboard in a laptop any more.

If operating systems start to beef up security more aggressively then I won't have to worry so much about having old microcode. OpenBSD is ahead of Linux on this too afaicr, sadly though it doesn't like the Nvidia GPU in my computer.</comment>


A social media site that is targeted towards sharing travel - <AUTHOR> http://Dev.wandrlust.co <comment><USER2> From the examples, I don't really understand what it is supposed to be for? Link aggregator? For sharing your own tips and stories? For live-updates while travelling?

<comment><AUTHOR> We are working towards allowing users to create and share posts as they would for a personal blog. There are millions of travel blogs on the web, this platform aims at bringing them together to share their experiences while still giving the user control as if it is their own blog.

</comment></comment><comment><USER3> It doesn't speak highly of your site that you felt the need to push it on HN twice in ten hours.

</comment><comment><USER4> Wow. Are you coming out with an app?

<comment><AUTHOR> Yes, we are working on releasing a iOS and android app as well.</comment></comment>


Philosopher invents clever iPhone case - <AUTHOR> http://www.kickstarter.com/projects/1250439912/popsockets-iphone-case-it-pops-props-kicks-and-cli <comment><USER2> I liked the idea of the product enough on first glance that I went straight to the pledge rewards, and nearly pledged the $25 without knowing any more. That's an affordable price for any case at all - most start around $40.

Since the images happened to be broken when I looked at the page, I decided to watch the video to learn something about the product.

You can guess how well that went.

I tried not to hide behind my hands while he danced and made bad jokes, because I figured that sooner or later, he'd demonstrate some details.

By the time the three minutes and eight seconds of self-love had ended, I not only didn't want to contribute anymore, I never wanted to see him speak again. I've never had a Kickstarter video talk me _out_ of supporting a project before.

<comment><USER3> debbie downer. i thought the video was pretty cool. hey, you did watch it to the end right?

i would customize my pop sockets with cartoon eyes on the sockets.

<comment><USER4> No. Actually, I didn't watch it to the end. Too embarrassing to watch.

I guess some of us are from the Sgt. Joe Friday school of thought when it comes to Kickstarter presentation videos, "Just the facts, ma'am."

</comment></comment></comment><comment><USER5> The video is good exercise in "You can't please everyone."

Comments here are about 50-50 "love the dance", "hate the dance", and with a sparser spattering of "cool" and "who cares" to the philosopher designation.

He doesn't need to win everyone, or even a significant percentage of the population. Attracting the 33% or so that like the dancing and aren't alienated by the philosopher tag gets him a large enough market.

Without the dancing philosopher, essentially no one would have heard of his product.

<comment><USER2> I disagree wholeheartedly. Look at all the great products that have come out of Quirky. No dancing philosophers there.

If this case were truly innovative—and I sort of think it is—people would go for it, and share it with their friends.

I believe he lost sales with the corny video, rather than gaining any new ones.

<comment><USER5> Quirky? Never heard of them. Do they dance? Do they ponder?

What if this case is just one more variation of a theme with 500 incumbents?

Ok, I googled and have seen some of quirky's designs on the "hey this is _design_ " type of web sites. They appear to have established brand and an extensive network of retailer relationships. It seems a different game. A press release gets them eyeballs.

</comment></comment></comment><comment><USER6> I think it would be better if, instead of circles, the pop-sockets were octagons for little flat edges depending on the angle you were using to rest the device.

And the video? The "joke" never ended and got down to details about the product.

<comment><USER7> Agreed. I skipped around looking for the part where he explains the product.

Why octogons instead of squares?

<comment><USER8> So when in "facetime" mode:

[http://sozolate.com/popsockets/Kickstarter%20Images/PopSocke...](http://sozolate.com/popsockets/Kickstarter%20Images/PopSockets_Facetime_Title.jpg)

The phone is actually stable, rather than teetering on the edge of rolling to one side or the other

<comment><USER9> The phone itself has two corners of contact. The circle provides the third. It's like a tripod. I don't think having a fourth point of contact less than an inch away from the other would really add any noticeable stability.

Plus, by having a rounded edge on the table, it will compress a little bit, giving a very solid connection with the table. If it was a flat edge, you might get less solid contact, especially if it warps at all with use.

Circle seems like a good call.

</comment></comment></comment></comment><comment><USER10> Throughout the video, I was just hoping he would stop dancing and show me exactly how the product works. While I appreciate being entertained, a demo/informational video would have been more conducive to the goal of getting me to pledge some funds.

<comment><USER11> I feel like he showed how the product works plenty. He showed you can hold it with one hand sans thumb, it stands in multiple different ways and it's stylish. Also it doubles as a headphone wrap. Had he stopped dancing and just went on about "This is the revolutionary new product that will..." shpeil that every other product does I probably would have quit that video a while back. As far as pitches go his was rock solid.

<comment><USER12> Indeed. This is probably the best Kickstarter video I've ever seen.

</comment></comment></comment><comment><USER13> The success of this project is proof positive that pitching _really_ matters. You could imagine someone pitching the same project without a dance-filled, much less entertaining video, and not creating the same excitement. Congrats to the prof and his team!

<comment><USER14> he won me with the dance. i'm in

</comment></comment><comment><USER15> Pretty cool, but what exactly qualifies someone as a "philosopher", and how is that relevant to this product?

<comment><USER16> being a professor of philosophy, in this case. and it is a summation of the person making it, that also makes it more interesting to click on. "Person creates interesting iphone case" sounds a lot less interesting.

<comment><USER17> Seeing as his philosophy degree had no place in the video and little bearing on the design, I would say that the title is framed the wrong way entirely.

<comment><USER16> What would you suggest as an alternative?

<comment><USER18> "Clever new iPhone case pitched on Kickstarter"? Maybe without the Kickstarter since the domain is always shown with the link.

<comment><USER19> I wouldn't have clicked on it if that were the title.

<comment><USER17> Neither would I. I wish that had been the title.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Looks ugly, not something I would use. Really though, how often do you need to prop your iPhone up? This is something I rarely find myself needing to do with my phone.

<comment><USER21> Looks like propping it up is just an extra feature. From the video the main benefit is easier one-handed use.

<comment><USER22> I so frequently find myself needing to hold an iPhone between my shoulder and ear while schussing down snowy slopes, I can't imagine how I didn't invent this myself!

(To be fair, the headphone windup is probably the most useful feature for those who listen to music a lot.)

</comment></comment></comment><comment><USER23> The music is entirely composed of samples from commercial songs, remixed together by Girl Talk, who re-licensed them as Creative Commons Attribution / Non-Commercial.

</comment><comment><USER24> Reminds me of this from Joel Spolsky's interview in Founders at Work:

"I remember one of the stupidest things I ever wrote on Joel on Software. I was giving advice on writing technical specifications, and I said, "Be funny." The reason that was stupid was that I later realized that most people, when they try to be funny, aren't that funny. They just look kind of sad. That's like, "Be born to rich parents." It's not that useful advice for most people."

I don't use Apple products so I'm not in the target market for this in any way, but count me among the people that think the painfully unfunny video hurts more than helps.

</comment><comment><USER25> This guy is dancing his future-millionaire-dance in advance. Can't blame a guy who designs a nice little product like that.

Can we put out better apps now too with something like this?

There's a significantly higher chance a user [whom is using this case/multi- widget] will be able to control the touch interface more efficiently (and dynamically).

</comment><comment><USER26> To whoever made this video:

1\. Delete this video. 2\. Make a video explaining, how it's designed, what is it good for, why it's useful, why should people buy it. Focus only in its visual design and its features. I want to see how does it look and what are the main features. Avoid all other things.

<comment><USER27> > Avoid all other things.

You mean, like showing it in actual action? Showing it actually working, which, I might add, is not on your list of criteria. I'd go so far to say that if instead of showing you the case in action, he'd described it, it would have been awful.

</comment></comment><comment><USER28> I use The Glif from Studio Neat (<http://www.studioneat.com/products/glif-for- iphone-4>), which was also a kickstarter project. It's a stand and a tripod mount, very elegant and small.

<comment><USER29> Great design and wonderful packaging and marketing. The video made me want one even though I was not in the market for such a device.

</comment></comment><comment><USER30> haha what a fantastic video. I wish this guy was my professor

</comment><comment><USER31> The dancing was very ill-advised.

</comment><comment><USER32> So the article for an iPhone case relies on flash? Wtf?

</comment><comment><USER33> Cool case, I can see myself actually using this one.

It would have been cool to see how the popouts extend and rotate but I think we got the idea from all the different positions they were sitting in.

Authentic dancing also helped a lot that this product is dance-party ready, if you use an app like Djay.

For anyone wanting detailed deathstar level specifications in a video, I'm sure more information will come out. I'm curious how the popouts work.

</comment><comment><USER34> I haven't listened through yet but a quick glance at the track list suggests this is the Girl Talk mashup from the soundtrack: <http://soundcloud.com/walt74/girl-talk-all-day> (unless Girl Talk is using Flava in Ya Ear in multiple mashups ;)

</comment><comment><USER35> Thought the iphone case was going to help me reason with siri or something. Instead I had to turn my speakers down and fight the urge to move to the country side away from noisy, abrasive hunks of plastic. I am glad he's doing what gets him going though and I mildly envy his lack of public inhibition.

</comment><comment><USER36> What a horrible video.

</comment><comment><USER37> Upon seeing those 'sockets', I thought it'd be something along the lines of this: <http://www.youtube.com/watch?v=YvQzxcYZuss>

</comment><comment><USER38> Can someone explain what the benefits of the case are in your pocket? In his video, it's like the main focus. Can't it still fly out if you're dancing just as easily as any other case?

</comment><comment><USER39> I expected more something like a case that says "I'm an iPhone" he says that this proves machine can be self-conscious.

</comment><comment><USER40> Haha! What an awesome video, I want to contribute because of the video alone (don't have an iphone)

</comment><comment><USER41> I think the LEGO case (www.smallworks.com) is more interesting. Modify it to be what you want.

</comment><comment><USER42> this guy was my TA at a philosophy class at nyu 11 years ago. cool!

</comment><comment><USER43> I thought he said "Hot Pockets". Imagine my disappointment.

</comment><comment><USER44> i thought the sockets were speakers. making the noise he was dancing to. nuts.

</comment><comment><USER45> It would be even better if the sockets had suction cups so you could attach it to your dashboard.

</comment><comment><USER46> I just want to give this guy money. Hilarious.

</comment><comment><USER47> Most ridiculous video ever. <3

</comment><comment><USER48> Do you think that's clever ?! Wait until you see this case : <http://www.shapeways.com/model/207851/></comment>


Vladimir Putin Is Replacing Microsoft Programs with Domestic Software - <AUTHOR> http://www.bloomberg.com/news/articles/2016-09-27/moscow-drops-microsoft-outlook-as-putin-urges-self-sufficiency <comment><USER2> This sounds like a good opportunity for Russian state to embrace linux if they haven't already? Munich looks like a good example of successful move out of Microsoft ecosystem ([https://en.wikipedia.org/wiki/LiMux](https://en.wikipedia.org/wiki/LiMux)).

<comment><USER3> When this happens there will be some American politicians claiming that Linux is communism, that open source is socialism and stupid things like "American pay for software" and other non-sense.

How do mitigate damage this causes before it gains any traction?

<comment><USER4> No concern. All the multi-national corps use it. Even Microsoft.

</comment></comment></comment><comment><USER5> Makes sense from one aspect, which is NSA and Microsoft sharing information, such as undisclosed bugs or security flaws with each other[1].

[1] [http://www.bloomberg.com/news/articles/2013-06-14/u-s- agenci...](http://www.bloomberg.com/news/articles/2013-06-14/u-s-agencies- said-to-swap-data-with-thousands-of-firms)

</comment><comment><USER6> Talks on replacing Microsoft software were started back in 90s so before Putin. Also, the article is about Moscow city, so the proper title would be "Sergey Sobyanin Is Replacing Microsoft Programs..." if westerners are so fond of mentioning names of Russian officials.

<comment><USER7> Vladimir Putin is a far more politically-newsworthy name though.

</comment></comment><comment><USER8> I hope Brazil government one day will do the same. We had in the past a great federal investment in free software, but now most of the commitment was abandoned.

</comment><comment><USER9> I have to imagine a couple of things are going on here. 1\. "Buy it local", always a popular political stance, seems to be part of an anti-foreign movement globally. 2\. More opportunities for kickbacks and lobbying now that the market is opened up to local bidders. 3\. But I have to imagine the real motivation here is that Russia foresees a future where trade with the rest of the West is unreliable or shut down altogether. Whether through sanctions or a doubling down on their annexation projects.</comment>


Git alias for printing recently-used branches - <AUTHOR> https://ses4j.github.io/2020/04/01/git-alias-recent-branches/ <comment><USER2> I alias 'git recent' to:

        git branch --sort=-committerdate -v

It gives me the following output (first line for not actually included):

        [branch name]                                      [hash]  [commit message header]
        move-radio-and-checkbox-hints-up                   9dff690 Move the hints belonging to radios/checkboxes up
        update-rubocop                                     8cace1f Update rubocop and pry, fix some new offences
        fix-remaining-injected-content-placement           48dc51d Reorder elements of other inputs

<comment><USER3> I do the same thing for this slightly longer alias

        git for-each-ref --sort=-committerdate --format='%(committerdate:short): %(refname:short)' refs/heads/

Including the dates is crucial; I'll frequently go in and clean up personal branches that are older than X months.

<comment><USER4> I've got one really close to this:

        git for-each-ref --sort=-committerdate refs/heads/ --format='%(refname:short) %(committerdate:short) %(upstream:remoteref)' | column -t

</comment></comment></comment><comment><USER5> So many commenters here providing alternatives seem to miss the key differentiating feature: recently checked out vs. recently committed to. For me the former is immensely more useful as I may have gone to a branch to do something other than commit, and those are missed with the latter.

Anyway, I've had my own (far more involved) version of listing recently checked-out branches for years. It will also filter out the current branch and deleted branches, and has a rudimentary interactive selection.

Maybe someone will find it useful as I have.

[https://github.com/amarshall/git-recent- branches](https://github.com/amarshall/git-recent-branches)

</comment><comment><USER6> What about just `git reflog`? Then, you get to see recent branches _and_ you get additional context about what you were doing at the time.

<comment><USER7> Even better, `tig reflog`, which makes it easy to check out the content of a commit or the history of a branch in context with the reflog.

</comment></comment><comment><USER8> I shared this with a coworker, who discovered that it dumps information about branches that don't exist anymore. This comment's alternate command doesn't list deleted branches:

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

And for those wondering "deleted branches?", check the git-gc man page for gc.reflogexpire (default 90 days) and gc.reflogexpireunreachable (default 30 days).

</comment><comment><USER9> Even better, show your local/remote branches in most-recent order and interactively pick the branch to switch to using fzf:

[https://github.com/kbd/setup/blob/f3ebd5ef2bc8a010357b574c02...](https://github.com/kbd/setup/blob/f3ebd5ef2bc8a010357b574c02ecf5f8f1c2886a/HOME/.config/git/config#L67)

<comment><USER10> That's the way to go!

[alias] rb = for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/ \--count=10

To switch branches, I invoke this from a shell script and type a couple characters from a branch name

git checkout (git rb|fzf)

</comment></comment><comment><USER11> I alias `git ref-recent` to:

        git for-each-ref
            --sort=-committerdate
            --format='%(committerdate:short) %(refname:short) %(objectname:short) %(contents:subject)'
            refs/heads/

The output shows the date, branch name, commit hash, and commit subject, such as:

        2020-04-06 master d8560f4 Add feature foo
        2020-03-28 fix-button 15f985d Fix button for menu
        2020-03-19 optimize-sort 3dbec4d Optimize sort algorithm

I put my aliases in GitAlias, which has many more: [https://github.com/gitalias/gitalias](https://github.com/gitalias/gitalias)

</comment><comment><USER12> I made a small script that outputs local and/or remote branches color coded: [https://i.imgur.com/QkmPhm0.png](https://i.imgur.com/QkmPhm0.png)

[https://github.com/bhaak/dotfiles/blob/master/git/git- overvi...](https://github.com/bhaak/dotfiles/blob/master/git/git-overview- branches)

It has been so useful to me that I think I should extract it from my dotfiles repository and give it its own repository.

Or reimplement it in Rust as a introductory programming project.

</comment><comment><USER13> I had idea to add something similar as tab completion to posh-git module for Powershell. Sadly it was not merged (is posh-git dead?) [https://github.com/dahlbyk/posh- git/pull/641](https://github.com/dahlbyk/posh-git/pull/641)

I wonder if something similar can be done in bash? By default bash doesn't "cycle" through possible completion but just display the list. Still, I guess it would be usefull to display last used branches first.

<comment><USER14> It doesn't seem to be dead. There was a PR commit only a week ago. You probably should poke the author again.

</comment></comment><comment><USER15> Neat! This was a feature I requested in Fork[0], but wasn't sure such a thing was even possible.

[0] [https://git-fork.com](https://git-fork.com)

</comment><comment><USER16> I alias `gbv` to this which shows you commit hash, msg, ID, author, date with colors:

alias gbv="git for-each-ref --sort=committerdate refs/heads/ \--format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objec tname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'"

</comment><comment><USER17> I've got something similar, but it's color coded and has columns with more info.

[https://github.com/whalesalad/dotfiles/blob/master/zsh/git.z...](https://github.com/whalesalad/dotfiles/blob/master/zsh/git.zsh#L12)

</comment><comment><USER18> I use this: git for-each-ref --sort=authordate --format '%(authordate:iso) %(align:left,25)%(refname:short)%(end) %(subject)' refs/heads

The most recent branches will appear closest to your cursor (on the bottom).

</comment><comment><USER19> Been using this snippet from Paul Irish for years: [https://github.com/paulirish/git-recent](https://github.com/paulirish/git- recent)

</comment><comment><USER20> Another option:

        git log --all --author=`git config user.email` --oneline --decorate</comment>


Infographics are what tl:dr is to Reddit and why you need them. - <AUTHOR> http://piktochart.com/use-infographics-for-branding/

<comment><USER2> >Writer and PR Exec at Piktochart</comment>


I Believe in Gittip - <AUTHOR> http://blog.gittip.com/post/27072581481/i-believe-in-gittip

<comment><USER2> Please make it accept bitcoin. No, seriously.

If you convert the bitcoins to cash automatically on reception I don't see any issues with people's confidence in the currency -- it just transparently becomes a payment vector for real dollars that automatically get exchanged via mtgox or whatever.

I really look forward to the day when I can just toss a few bitcoins towards programmers or musicians on the internet. Right now, signing up my credit card for every website I want to interact with is just not going to happen, and Paypal isn't an option for me either.

I wish services like bandcamp and things like bug bounties and the like allowed me to just throw some coins their way, but instead there's this whole complicated credit system with one or more third parties to deal with, and it's annoying. I hate typing my CC number into every damn website I want to make a microtransaction with.

Personally I don't know or care whether bitcoin will _transform world economics_ the way some people predict, but I _do_ think it's a pretty convenient way to deal with internet transactions, even if it's just used as a temporary medium for real currency. This kind of thing, in all honesty, is its "killer app."

<comment><USER3> I'm not opposed to accepting bitcoin if it's transparent as you describe. As krasin mentions the recurring thing is a sticking point. Here's the ticket:

<https://github.com/whit537/www.gittip.com/issues/14>

<comment><USER2> Thanks. Some pretty interesting discussion on that bug actually. Although I think it wouldn't be too hard to rig up yourself, I have to agree with the guy who suggests just hooking up with a 3rd-party bitcoin payment processor--it might make things easier and more similar to handling other currencies.

</comment></comment></comment><comment><USER4> About doing what you really want and getting an income: sometime they don't mix well.

Right now, I am just building projects on whatever I felt like doing. Some are no doubt, useful to everybody else. However, the rest may be just be interesting only to me or solve a problem that is unique only to me.

Do I know where I will get my money? No clues. However, it been a blast for me, personally. I learn a few tech such as meteor.js and how to develop chrome extensions, although I really want greybeard knowledge(algorithms, debugging, and other core skills), not the latest fad.

<comment><USER3> Yeah, it's about making the world better on your terms. I think the crowd can be a better proxy of value to society than the corporation.

<comment><USER4> You will still need to market yourself to the crowd and find work that you like but that the crowd will fund.

Some passions, no doubt, will not be rewarded.

<comment><USER3> Very, very true.

</comment></comment></comment></comment><comment><USER5> I applaud his courage, but leaving a job for $115.73 per week seems a bit risky. Maybe if this concept was combined with something like Kickstarter it would be more effective. E.g. you create an open-source project and pledge to continue development on it as long as your Gittip payments stay above a certain threshold.

<comment><USER6> > In the mean time, I will be looking for about 50 hours a month of contract > work to stay afloat

</comment></comment><comment><USER7> I like the idea of Gittip, and I have definitely thought about the problem of how society can encourage things that benefit it (i.e. open source software).

I had a bad experience with Gittip though. I tried to tip you. It said sign in with github, so I did. Then I go back. I tried to tip you again, and it said there was an error. Then I clicked "back with a credit card". And it says I need to sign in with github to add a credit card. But it already says I'm signed in as my user name in the upper right corner. So something is wrong.

Also I think it would be better to allow one-time payments too. I just wanted to try your system but I wasn't committed to making a recurring payment. I was going to cancel it after I tried it. I would have been fine with a one-time payment.

<comment><USER3> On the one-time payments issue, see:

<https://github.com/whit537/www.gittip.com/issues/113>

The short story is that Gittip is targeted at funders, and the current wisdom is that one-off payments would erode confidence in the stability of one's funding stream. Yes, you can do what you were planning to do, pay for a week and then cancel, but Gittip doesn't want to optimize for that, I don't think.

<comment><USER8> Why are you targeting for "funders" (I think you mean the people getting paid)?

In general, getting the money into systems is the hard part. If money is there, people will come - easy! Getting people to give money - whether to a company or for donations - that's hard!

Also, frankly, this is a nice proposition from the POV of the "funders". You seem to have built it for yourself. But, the value for the donors? Sounds like a tough sell.

So making donors happy is most important. Without them you're toast. With them you can AT LEAST support yourself, if nothing else :)

<comment><USER3> The value for donors is "the feeling of participation in someone else's story" (quote from Kiva co-founder Jessica Jackley[0]). It's up to recipients to tell a compelling story with their life. That's what's going to get money into the system. Tell me a story!

[0] [http://www.theatlantic.com/technology/archive/2012/07/the- po...](http://www.theatlantic.com/technology/archive/2012/07/the-power-and- the-peril-of-our-crowdfunded-future/259304/)

</comment></comment></comment></comment><comment><USER9> How does this compare with Flattr? It may be slightly different, but is it sufficiently different?

<comment><USER3> Flattr is for content. Gittip is for people.

Flattr is optimized for making tippers feel good. Gittip is optimized for making tippees a living.

Flattr takes a 10% cut. Gittip is drinking its own whiskey.

<comment><USER9> Thanks. I understood all of this from the website. Can you be more specific?

> Flattr is for content. Gittip is for people.

> Flattr is optimized for making tippers feel good. Gittip is optimized for > making tippees a living.

What is stopping me from using Flattr for myself? Am I stopped from putting a Flattr thing on my own general personal home page? Am I going to get more money from Gittip over Flattr, and why? Rather than telling me what Gittip is aimed at, can you tell me specifically _what_ Gittip is doing better here? Anything tangible?

<comment><USER3> I don't believe anything is stopping you from using Flattr.

I don't believe you are stopped from putting Flattr on your home page.

I don't have enough data to say whether you're going to get more money from Gittip over Flattr. I don't have data for Flattr because they're not transparent about who makes a living on their site. I'd love to see data if you have it; I've only been able to find a few anecdotes:

[http://translate.google.com/translate?u=http://tim.geekheim....](http://translate.google.com/translate?u=http://tim.geekheim.de/2012/05/01/zwei- jahre-flattr/)

[http://www.quora.com/Flattr/Have-any-bloggers-used-Flattr- to...](http://www.quora.com/Flattr/Have-any-bloggers-used-Flattr-to-pull- income-in)

I don't have data for Gittip because it's only a month old. That said, Gittip is much more transparent than Flattr. On the Flattr homepage (<http://flattr.com/>) I see one piece of data: "Flattr clicks so far: 1,055,458." That doesn't tell me anything about who's making a living on Flattr. A little digging uncovers this Toplist:

<http://flattr.com/catalog/everything/toplist>

There I see that the top ... 30(?) projects have received between 919 and 5,184 "flattrs." When I click on the top project, WikiLeaks' Afghanistan War Diaries, I'm told it has "10 145 flattrs received from 4169 people." I'm not sure how this relates to the 5,184 flattrs mentioned on the Toplist. Whether it's 5,184 or 10,145, I'm not able to find a conversion rate to a real currency, such as euros or dollars. From reading the About page and the FAQ, it sounds like there's actually an inverse correlation, since more flattrs mean each recipient receives a smaller slice of each budget. Moreover, I don't know how many individual people and which ones are behind a project. Are those 5k or 10k flattrs shared amongst 10 people or two? Who are these people? How much do they _want_ to receive?

Gittip is more transparent about who's giving and receiving what, and why. Sure, the design isn't very fancy compared to Flattr. But there's data right front and center on the homepage, and it's in a real currency, dollars. When I click through to an account, I see a statement about what that person is doing to improve the world, and their personal funding goal. I can compare their goal with their current level of funding.

Personally, I'm not interested in playing games with fake currency. Let's move real money for real.

You glossed over the fact that I'm drinking my own whiskey, which I see as a crucial difference. I actually find it a little distasteful that Flattr takes a 10% cut. If the Flattr developers believe in Flattr, why don't they make their living using Flattr? TipTheWeb strikes me as a more self-consistent implementation of the "one-off tips for content" idea, in that they represent themselves as being a non-profit "supported by Tips from our users":

<http://tiptheweb.org/>

But, of course, Gittip is not about one-off tips for content. Gittip is about sustaining people who are telling a compelling story with their life. Tell me a story!

<comment><USER10> As a former Flattr developer my impression is that Flattr's lack of focus on hard numbers is due to one of its core values when it was founded - that all flattrs are equal and should be treated as such - that a flattr doesn't just represent the number of euros given but more so represents the act of giving in itself and that that's what important about it and that the actual size of the donation is secondary as that is dependent on so many factors like the givers personal economical status and such.

As long as people feel comfortable with what they are giving away and recievers feel comfortable with what they are recieving then how much each individual is giving is pretty irrelevant.

Flattr would never reveal any numbers about their users' economy as Flattr very much values, respects and sees the importance in their users' privacy. It's of course always lovely to see users share stories about how they are using Flattr in different ways, but the telling of such stories should be up to the users – Flattr should stay out of that business and instead focus solely on just making such stories possible.

Regarding fees, I think the Pinboard blog makes a great case for why they should exist: <http://blog.pinboard.in/2011/12/don_t_be_a_free_user/> Apart from that I also think that micropayment services are a bit like what Steve Jobs described Dropbox as: "a feature, not a product" Features are embedded into products and are not something you pay for separately. Flattr isn't the goal – it's the means to realize the goals – it's the goals, the "products", that people want and it's they that will be flattred and it's they that should be flattred.

</comment></comment></comment></comment></comment><comment><USER11> He's proven his belief in the product by taking a stand. This is already more than most could hope to do. For that I offer my applause. If this isn't a next big thing, it at least offers a life changing mindset. For that I offer my thanks.

<comment><USER3> :^)

</comment></comment><comment><USER12> So what are the restrictions on getting money out?

That's a major concern to me. You say you handle them manually, but do you have restrictions on how much money can be paid out, what country the recipient may be resident in, etc?

<comment><USER3> Here's the ticket for implementing automatic payouts:

<https://github.com/whit537/www.gittip.com/issues/22>

Balanced Payments is contributing code for integrating with their service. I'm hoping to have this rolled out in the next week or two. Balanced can only underwrite payees in the US. Hopefully we'll start seeing support for Canada, UK, and Europe in 2013.

Gittip itself has no a priori restrictions. You can withdraw your full balance less processing fees at any time. If we can't find a way to get you your money automatically then I'll write you a check and put it in the mail. Or PayPal it. Or whatever.

</comment></comment><comment><USER13> So Gittip is a recurring donation platform for Github authors ?

<comment><USER14> Pretty much, yes.

<comment><USER3> I want to expand it beyond GitHub, but yes.

<comment><USER15> +1 on expanding. making github-only tools when they could as well work in a more generic way is a bit ridiculous.

<comment><USER3> Hey, cut me some slack! This is only a month old and I had to start somewhere. Here's the ticket for opening up:

<https://github.com/whit537/www.gittip.com/issues/80>

<comment><USER15> chill, it was more of a friendly pat on the back than a slap in the face. you made a good decision to generalize it so soon, kudos.

<comment><USER3> :^)

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> Eating your own dogfood: an excellent idea :)

<comment><USER3> Can it be drinking my own whiskey instead?

I guess if I want it to be that I'd better make some whiskey. Hmm ... ;-)

<comment><USER17> my previous managers always talked about "drinking your own champagne"...

<comment><USER18> He's probably not putting a cork in it.

</comment></comment></comment></comment><comment><USER19> can you use dwolla to reduce your costs?

<http://developers.dwolla.com/bd/why></comment>