GoPro is recalling its Karma drone - <AUTHOR> http://www.theverge.com/2016/11/8/13569730/gopro-karma-drone-recall-announced <comment><USER2> The stock fell from $85 to $10. At around ~$60 the CEO sells ~$180M in stock to buy a yacht. This may sound stupid to most people but consider this. While yachts depreciate they depreciate less that GoPro stock, which the CEO could have known. CEOs need an excuse to sell large chunks of stock. And given that GoPro is* being sued for grossly misrepresenting projections the CEO can make plausible case that he believed in his own projections no matter how outlandish - because after all he bought a yacht. So while a yacht may look like a ridiculous waste of money, it can actually be a very smart investment.

*or was, I don't keep that close of an eye on them.

</comment><comment><USER3> This is not looking good for GoPro at all. The Karma hasn't had really good reviews from the very start, and once DJI released the Mavic it basically lost all chances of grabbing a significant portion of the market. Now this is adding to the injury.

<comment><USER4> It's dramatic... Wasn't the drone their come back strategy?

<comment><USER5> I saw it as a way to show off their brand, the same way that car companies have race teams. A bunch of cool GoPro videos on YouTube, drone displays in stores, etc. But they undersold even the conservative sales figure needed to accomplish that marketing goal. Now it seems they have abandoned it entirely (at least for the time being).

</comment></comment></comment><comment><USER6> I'm surprised by the low number. Of course, it makes it easier for a recall, but 2,500 sold Karmas seems like a very disappointing launch for a new GoPro product category. Or maybe drones are less popular than I thought.

<comment><USER7> I believe about 1 million consumer drones were sold during last year's holiday season. So I would call that moderately popular and 2,500 doesn't seem a lot of units in that regard.

<comment><USER8> 1 million is good but I wonder how many fall into the the Hubsan x4 category - small 'fun' drones - some have FPV cameras, but most either have a fix recording camera or none.

How many 'prosumer' drones sold, do you know?

<comment><USER7> In January of this year the FAA announced that 300k drones have been registered in the first 30 days since the drone registration requirement went public. I can't find any newer numbers on that though.

</comment></comment></comment></comment><comment><USER9> Why did they have to go public? Had they not, their bio would read like:

GoPro. A private company with a cool brand and strong following which sells versatile cameras, is testing out a drone and makes millions along the way.

Of course, not every IPO leads to warmth and smiles but for this company in particular it has seemed like such a burden.</comment>


Ruby Koans - <AUTHOR> http://rubykoans.com/ <comment><USER2> When I started off with Ruby I tried reading through some freely available books (including Why's Poignant Guide) but going through the koans was by far the fastest and most effective way to learn Ruby syntax.

There are also Go koans: [https://github.com/cdarwin/go- koans](https://github.com/cdarwin/go-koans)

<comment><USER3> I found reading The Well-Grounded Rubyist and completing the koans to be a good combination. You get an understanding of the underlying concepts of the language as well as experience with the syntax and core classes.

[http://www.manning.com/black3/](http://www.manning.com/black3/)

</comment></comment><comment><USER4> This is an enjoyable and effective way for getting used to Ruby syntax and some basic TDD concepts. The important point to keep in mind, however, is to try to reflect on each modification that you make, so that you can also learn the language semantics, and make the practice more than just "filling in the blanks".

See also the previous posts of rubykoans:

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

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

</comment><comment><USER5> Very well done. There's also a Python version: [https://github.com/gregmalcolm/python_koans](https://github.com/gregmalcolm/python_koans)

Coincidentally, we're looking for London based senior, test-driven Ruby devs (contract).

<comment><USER6> American OK? Would love to move to London from the US.

</comment></comment><comment><USER7> Your SSL certificate is invalid:

[https://koans.heroku.com/](https://koans.heroku.com/)

edit:

this works though:

[https://koans.herokuapp.com/en](https://koans.herokuapp.com/en)

<comment><USER8> heroku charges $20 a month to allow a SSL certificate for a custom domain!

<comment><USER9> Just use Cloudflare. It's free.

<comment><USER10> Details: [https://robots.thoughtbot.com/set-up-cloudflare-free-ssl- on-...](https://robots.thoughtbot.com/set-up-cloudflare-free-ssl-on-heroku)

There are some downsides to this approach that are described there.

</comment></comment></comment></comment><comment><USER11> Ruby Koans are great. Some others along the same idea area:

* [https://github.com/JoshCheek/ruby-kickstart](https://github.com/JoshCheek/ruby-kickstart)

* [https://github.com/alexch/learn_ruby](https://github.com/alexch/learn_ruby)

<comment><USER12> [https://rubymonk.com/](https://rubymonk.com/) is another good one. The theme got a little tiresome after a while but the lessons really forced me to mess around with Ruby in the console. I learned a lot.

</comment></comment><comment><USER13> A list of koans using different languages - including bash! :

[https://github.com/ahmdrefat/awesome- koans/blob/master/koans...](https://github.com/ahmdrefat/awesome- koans/blob/master/koans-en.md)

</comment><comment><USER14> I miss Jim Weirich :(

</comment><comment><USER15> Love it. It helps me in getting familiar with TDD when I was just starting out to learn Rails.</comment>


Ask HN: Do you earn income from your developer blog? - <AUTHOR>

Many of us probably have fairly similar blogs - code snippets, conference notes, our thoughts on programming, etc.
Are any of you earning income through your developer blog? Not just by finding contract work, or by writing an ebook, but some other method. Maybe selling your libraries, doing training, paid access to "the good stuff".
If you are, can you share what you're doing, how you decided what to do, and how successful it's been? <comment><USER2> I am not monetizing my blog but the eBook/ad routes seems to be the most successful way to do it. For example Dayle Rees writes blog posts on the PHP framework Laravel [1] and then compiles them into eBooks [2][3] that he sells.

[0] [http://daylerees.com/](http://daylerees.com/)

[1] [http://laravel.com/](http://laravel.com/)

[2] [https://leanpub.com/codehappy](https://leanpub.com/codehappy)

[3] [https://leanpub.com/codebright](https://leanpub.com/codebright)

<comment><AUTHOR> Niche ebooks seems the most common way I've seen to generates a little extra beer money (or more) from a development blog.

</comment></comment><comment><USER3> In addition to blog posts, I write short reviews [1] for technical books that I've read and use Amazon Affiliate links (a single link to the book).

It works out to between $20-$50 a year for my blog [2]. Nothing major but it covers a couple "free" Kindle books or a nice steak dinner :)

[1]: [http://www.mdswanson.com/writeup/2013/11/13/how-to-fail- at-a...](http://www.mdswanson.com/writeup/2013/11/13/how-to-fail-at-almost- everything-and-still-win-big.html)

[2]: [https://gist.github.com/swanson/4711006](https://gist.github.com/swanson/4711006)

</comment><comment><USER4> Developer blogs are second only to anime sites for poor monetization.

<comment><USER5> Political blogs also have terrible monetization even with high view counts. Developer blogs generally get the odd pity click on an ad.

Really the only way to be a "professional blogger" is to be an otherwise famous writer or to convince a business that they need a professional blog post writer.</comment></comment>


"What if Michael Bay did our developer recruiting video?" - <AUTHOR> http://bobpritchett.com/2013/03/what-if-michael-bay-did-our-developer-recruiting-video/

<comment><USER2> Watched video, laughed, would not apply. This was pretty obviously done without any input from developers.

"Code that matters", Free Soda, and Ping Pong? Those are the selling points of working at logos.com? You can keep them. How about things that matter like:

        * we actually use TDD
        * you don't have to work til 10PM every night
        * deadlines are based on real estimates, not #'s made up by managers
        * you'll get to learn and use new technologies on the job
        * we fix existing bugs before building new features
        * developers get a quiet, private offices to work in

I could go on. But I've got work to do in my quiet, private office working with a language I've always wanted to use but never had a chance to at any other job.

<comment> david-mitchell It's difficult to convey many of those things in a video (although we're working on it for next time).

I've been a developer at Logos for seven years, and it is a pretty incredible place.

* We're very light on management, and we generally try to have as little of it as possible.

* When faced with deadlines, we choose to cut features and polish what we have rather than insist on crazy hours.

* Our Architect goes home at 4:30 nearly every day. (flexible hours!)

* Logos is an environment of constant learning. Developers are encouraged to find the right tool for whatever job is at hand—we won't try every new thing just because its new, but we're not dogmatic about our current technology stack, either.

Of course, the best thing about Logos is the people. We're all working to improve our craft, and there's a culture of trust that is not common—we don't even have a vacation policy, for example.

</comment></comment><comment><USER3> It hurts how this video pokes fun at the "trying too hard" style of recruiting (using "code ninjas" in air quotes) while simultaneously itself trying way, way, way, WAY too hard.

And I just came away with the impression that the protagonist has a massive unchecked ego and would probably be a terrible person to work with.

While I'm at it, it would benefit from tighter editing.

Bagpipes were a nice touch, though.

</comment><comment><USER4> Cute. If nothing else, I watched it. Video is really engaging, but i'm not sure you're really looking for developers that are quite as committed to procrastination as those who will spend 3 minutes watching an ad. OTOH, everything seems to indicate hiring is really hard. maybe this will pull some great talent for you.

I think your 24 pack was actually a 12 pack.

</comment><comment><USER5> I Googled your company and I guess you write bible software? For non-religious coders is there a reason your code matters? If you're looking specifically for Christian coders it might be good to specify that in the video. If there is a reason why non-Christian coders would think their code matters in your company it would be good to specify that as well.

<comment><AUTHOR> We are looking for fantastic coders, not 'Christian coders'; we don't discriminate on religious grounds. We believe what we're doing matters because it helps people study the Bible, helps pastors spend less time in the library and more with people, helps groups connect and share with each other, etc. Whatever you believe, tools that help people pursue their passion, learn new things, and connect with others are worthwhile: that's code that matters.

<comment><USER6> Amen brotha?

</comment></comment></comment><comment><USER7> Rule #1: show, not tell.

Why does their code supposedly matter? We'll never know..

</comment><comment><USER8> I think there's a chance that the filmmakers' joke is on whoever commissioned it. Robotically saying 'code that matters' over and over, emphasized in absurd ways – sounds like they're making fun of the brief.

</comment><comment> the-come-ons That guy kind of looks like whiskycraig.</comment>


Hackernews title is blacked out – anyone noticing it? - <AUTHOR> http://news.ycombinator.com <comment><USER2> I took me a while to figure out what it means since nothing was on the front page. I clicked the black thing trying to get back to the home page. That linked to battle for the net. Probably better if they had a message instead of just the black out metaphor so it's totally obvious. Maybe I missed something but right now it looks like someone has to click it before fully getting the message.

And to site admins: Thanks for doing something in the first place to bring attention to the net neutrality battle. :)

</comment><comment><USER3> We apologize for the fault in the titles. Those responsible have been sacked.

<comment><USER4> For those unfamiliar with this pop-culture reference:

[https://www.youtube.com/watch?v=djKPvXDwXcs](https://www.youtube.com/watch?v=djKPvXDwXcs)

</comment></comment><comment><USER5> It was the first thing that I noticed.

For the sake of all us, I hope you win this battle.

</comment><comment><USER6> It links to battle for net.</comment>


Simple data analysis in R - <AUTHOR> http://www.mailund.dk/index.php/2009/04/10/simple-data-analysis-in-r/ <comment><USER2> Thanks for sharing, R is really a great tool. Using it as well for my PhD thesis because I needed survival/ hazard rate models, which I couldn't find in Eviews, SPSS et al.

And btw: If you need good alternative to R's native plotting, try <http://had.co.nz/ggplot/> \- it's awesome.</comment>


Ask HN: How do you blog? - <AUTHOR>

I have often many articles in progress, sometimes I lost myself into all my post ideas. Do you organize your posts ? Do you work on one article at a time ? Do you have some organisation tips ? <comment><USER2> Whichever way inspiration takes me usually.

I often have a bunch of half finished posts saved that might get finished, reworked or abandoned. Normally what happens is I have a better idea about which I can write a whole post in one sitting so I do that instead.

That sounds a lot like un-organisation doesn't it?</comment>


ASK HN: Review my latest deal for web designers - <AUTHOR> http://appsumo.com

<comment><USER2> I'm thinking about getting this just for the TypeKit sub, but I don't/haven't used the others.</comment>


The Wall Street Leviathan - <AUTHOR> http://www.nybooks.com/articles/archives/2011/apr/28/wall-street-leviathan/

<comment><USER2> > Measured by their profits, the six largest financial institutions in the US > now account for 55 percent of all banking assets.

And here the author has lost a generous slice of credibility. It's like saying "Measured by their clockspeed, the six largest CPUs in the US now account for 55 percent of all hard drive space".

<comment><AUTHOR> I read it more as "The six most profitable financial institutions in the US now account for 55 percent of all banking assets" which makes sense to me.

<comment><USER2> So it's a failure of editing.

> Measured by their profits, the six largest financial institutions in the US > now account for 55 percent of all banking assets.

should read

> The six largest financial institutions in the US, as measured by their > profits, now account for 55 percent of all banking assets.</comment></comment></comment>


Graph-scroll.js – Simple scrolling events for D3.js graphics - <AUTHOR> http://1wheel.github.io/graph-scroll/ <comment><AUTHOR> If you liked this walk through, definitely check out Jim Vallandingham's write up -> [http://vallandingham.me/scroller.html](http://vallandingham.me/scroller.html) as well as his presentation from the 2015 OpenVis Conf titled "So You Think You Can Scroll"-> [https://www.youtube.com/watch?v=fYQGgaE_b4I](https://www.youtube.com/watch?v=fYQGgaE_b4I)

</comment><comment><USER2> It's such a shame it's still impossible (AFAIK, would love to be corrected) to accurately hook into momentum scrolling on iOS Safari. window.scrollTop only changes once the scroll momentum has finished.

Be pretty simple for Apple to pass this information in requestAnimationFrame but of course they don't.

Don't even talk to me about the mess that is replacing the native scrolling!

<comment><USER3> I think this was changed in iOS 8 [http://developer.telerik.com/featured/scroll-event-change- io...](http://developer.telerik.com/featured/scroll-event-change-ios-8-big- deal/)

<comment><USER2> This does not seem to be true for me in iOS 9.1: try this...

[http://johnpolacek.github.io/superscrollorama/](http://johnpolacek.github.io/superscrollorama/)

The article does mention scrollerama so no idea what is going on.

</comment></comment></comment><comment><USER4> The global warming link is a great example of this in use, look forward to finding some excuse to use it as soon as I can!

<comment><USER5> NYT and Guardian have also put out great scrolling graphics over the last few days:

[http://www.nytimes.com/interactive/2015/10/27/world/greenlan...](http://www.nytimes.com/interactive/2015/10/27/world/greenland- is-melting-away.html)

[http://www.theguardian.com/us-news/ng- interactive/2015/oct/1...](http://www.theguardian.com/us-news/ng- interactive/2015/oct/19/homan-square-chicago-police-detainees)

[https://source.opennews.org/en-US/articles/how-we-made- homan...](https://source.opennews.org/en-US/articles/how-we-made-homan-square- portrait/)

</comment></comment><comment><USER6> This is cool, and can potentially enhance some presentations. However, what I like less is the fact then that this type of thing is peppered any which way on a bunch of pages and ends up making the reading experience less than enjoyable ... Kinda like the animated gifs of the 90's web pages

</comment><comment><USER7> We maxed out on scrollytelling when we built [http://hollowdocumentary.com/](http://hollowdocumentary.com/). I think we probably violated some of his rules here, but it was experimental for us.

</comment><comment><USER8> Really like this one. Lots if practical uses. Only problem I see us that the graphics momentarily disapper after reaching the top if the page.

</comment><comment><USER9> There is also ScrollMagic [http://scrollmagic.io/](http://scrollmagic.io/)</comment>


American Students Have Changed Their Majors - <AUTHOR> https://www.bloomberg.com/opinion/articles/2019-05-06/american-college-students-are-choosing-to-major-in-health <comment><USER2> >We've detected unusual activity from your computer network

>To continue, please click the box below to let us know you're not a robot.

>Why did this happen?

>Please make sure your browser supports JavaScript and cookies and that you are not blocking them from loading. For more information you can review our Terms of Service and Cookie Policy.

I guess they don't want us artificial lifeforms to read their content.</comment>


How does `cd` work? - <AUTHOR> https://blog.safia.rocks/post/171311670379/how-does-cd-work <comment><USER2> As a historical curiosity, in the very first versions of Unix chdir was a normal command rather than a shell builtin.

You see, at that point Unix had no fork system call. There were multiple processes, but they were created statically at startup rather than on-demand. Running a command in the shell would cause the command to replace the shell in the address space of the process, and the process quitting would put the shell back in there.

This worked perfectly with cd being a normal command. Then they implemented fork() and were for a while very confused trying to debug how in the world fork() could have broken the chdir() system call :)

<comment><USER3> This is a really common way for software to become better.

The pattern of development:

      - Make A
      - Make B better
      - A now broken because it had dependencies on B
      - (maybe) Realize a fundamental pattern that unifies A and B.
      - (maybe) Unify principles so that A and B become lemmas.

This is a very scientific way of working. The truth emerges as the byproduct of keeping all the plates spinning in your model. As long as you remain aware of all the plates, you'll eventually realize something deep. It's also the strongest argument I can think of in favour of rewriting a codebase plan-9 style. Once you have the truth in mind, bake your knowledge for big wins. Baked knowledge can form the foundation upon which you can climb higher.

But many developers don't keep all the plates spinning. If you don't have everything (or some subset) making sense in some unified theory, don't rewrite. Without a unified grand theory, then you can't make something better. This is why I write unit tests — doing so keeps your plates spinning. It's not about proving your language and libraries are doing what is expected (although that's valuable too in some languages without unified libraries) — it's about showing that everything is working together the way your grand theory intends. Unit tests should be written to reject some part of the null hypothesis.

<comment><USER4> This is such a cool way of presenting it, I'll reuse that. Thanks!

</comment></comment></comment><comment><USER5> Interesting how the author was looking at "cd" obviously sourced from FreeBSD project (perhaps found on a Mac computer running XNU kernel) and then, to investigate further, she consulted the source code for _the Linux kernel_ to learn about "the" chdir syscall.

Would the title "How does 'cd' work _in MacOS_?" be better for readers wishing to learn, or worse? I wonder.

The blog posts from her friend at jvns.ca have been similarly Linux-centric but never use titles that inform the reader as such, i.e., "How does X work?" versus "How does X work in Linux?"

It makes me ask, how important is it for students to be aware of the Holy Grail of UNIX: portability.

How long should one remain blissfully ignorant of incompatibilities between UNIX-like OS that work against those "still seeking the Holy Grail"?

As a user, the UNIX programmers I admire the most are the ones who understand the value of portability, set it as a goal and through broad knowledge and utmost care can get very close to achieving it, despite the mind-numbing work or the tradeoffs this might entail.

<comment><USER6> I find it sad that people that are so curious about how things work end up buying Macs, and therefore unwillingly contributing to less openness and "studyability".

<comment><USER7> It doesn't stop them using Linux - it does make it more of a pain though.

</comment></comment></comment><comment><USER8> Not one character in the article is actually devoted to how `cd` works...it's just the story of how the author found out where to find the code for it.

An article much more worthy of the title "How does `cd` work?" would maybe, you know, actually go through the code that makes `cd` work.

<comment><USER9> I don't know if the "Update" by Julia Evans was in the article when you posted this. But I'd point to that as a piece of useful insight about how it works at the syscall level.

<comment><USER10> >SO!! If you had a /usr/bin/cd program that ran chdir, that would be fine, but when you started it it would change its own working directory and exit which is not very helpful. It wouldn't change the working directory of you (the parent process)

I am a little confused. What is the parent process and why does that matter here?

<comment><USER9> The parent is the shell that called the theoretical /user/bin/cd. It means that a cd program would get launched by the shell, change its own working directory and then terminate, which is completely useless.

What you want cd to do is change the caller's (or parent's) working directory, or in this case the shell's working directory.

There are hacks to do it that you can find elsewhere in this thread (process injection and debug APIs to name two) but frankly the shell changing its own working directory via a builtin is a much simpler and more reliable solution that is also cross-platform.

<comment><USER10> Ah. This makes sense. Thanks. I will look into the hacks.

</comment></comment></comment></comment></comment><comment><USER11> Instead of which(1), you could use type, which is aware of builtins and aliases:

      $ type cd
      cd is a shell builtin

<comment><USER12> if you use zsh on the other hand..

      % which which
      which: shell built-in command

</comment></comment><comment><USER13> > The cd builtin is invoked as part of the Bash shell.

> The Bash shell invokes the chdir function.

Nope! Not quite.

Bash:

      ~$ ls -ld foo
      lrwxrwxrwx 1 kaz kaz 4 Mar  1 6:50 foo -> /etc
      ~$ cd foo
      ~/foo$ pwd
      /home/kaz/foo
      ~/foo$ cd ..
      ~$ pwd
      /home/kaz

Raw chdir and getcwd syscalls:

      $ pwd
      /home/kaz
      $ txr
      This is the TXR Lisp interactive listener of TXR 190.
      Quit with :quit or Ctrl-D on empty line. Ctrl-X ? for cheatsheet.
      1> (chdir "foo")
      t
      2> (pwd)
      "/etc"
      3> (chdir "..")
      t
      4> (pwd)
      "/"

See the difference? While of course the shell will invoke _chdir_ , it has its own idea of a current working directory, and translates the argument of _cd_ to something else. For instance _cd .._ doesn't translate to _(chdir "..")_.

<comment><USER14> She says that it is all a ton of functions that sanitize input and implement logic before calling chdir.

So the article does point out that CD isn't a direct alias for chdir

</comment></comment><comment><USER15> Nice write up, but the addendum cached my eye.

\-- Can we nominate Julia Evans to the most positive influence in tech prize or something?

</comment><comment><USER16> Unrelated: it seems like this site has some sort of "debug" script set up that downloads half a dozen copies of some test image ("r20-100KB.png"). Safia, if you're on here, you might want to get it checked out since it's more than doubling the amount of time it takes your site to load.

</comment><comment><USER11> Here's cd implemented as a stand-alone program:

[https://github.com/robertswiecki/extcd](https://github.com/robertswiecki/extcd)

<comment><USER17> This looks fiendishly clever, if it really works, but I don't have time to dig through the 'ptrace' man page to figure out what it's doing. Can someone summarize?

<comment><USER16> Let me give it a shot: ptrace(2) allows processes to control other processes for debugging (for example, GDB and LLDB use it). What it's doing is gaining privileges to debug your shell process, using this privilege to gain control over its memory, and then just copying over the directory string to the right spot so that the shell thinks it has a new working directory.

<comment><USER18> Actually looks like it copies the path into the address space of the parent, backs up some register state, tickles the i386 syscall interface by setting registers to call chdir(2), then restores the registers to their original state, resuming the program already in progress.

</comment></comment></comment></comment><comment><USER19> I long ago wrote a cd replacement for Windows. It does a few clever things I like, but I always felt slightly unclean for how it works. Since it's external to cmd, it has to find the cmd parent-process that launched it, write a thread into the process space, then launch that thread that does the call to SetCurrentDirectory and updates the necessary environment variables.

It works, but I'm not entirely sure it should work.

</comment><comment><USER20> I used the first edition, but I think all you need is this:

[https://www.amazon.com/Advanced-Programming-UNIX- Environment...](https://www.amazon.com/Advanced-Programming-UNIX- Environment-3rd/dp/0321637739)

<comment><USER21> Or try this one if you'd like to build your own from scratch

[https://www.amazon.com/Design-Implementation-MTX- Operating-S...](https://www.amazon.com/Design-Implementation-MTX-Operating- System/dp/3319175742)

</comment></comment><comment><USER22> > I decided to dive into the code for the Bourne shell to see what I might be > able to figure out about these builtins. I came across the definition of the > cd builtin here. (link to: > [http://git.savannah.gnu.org/cgit/bash.git/tree/builtins/cd.d...](http://git.savannah.gnu.org/cgit/bash.git/tree/builtins/cd.def))

no, you came across the definition of bash's 'cd' builtin there..

On FreeBSD with a source checkout, the definition of /bin/sh's (the 'ash' shell, [https://en.wikipedia.org/wiki/Almquist_shell](https://en.wikipedia.org/wiki/Almquist_shell)) cd builtin is in:

/usr/src/bin/sh/cd.{c,h}

or, on the web:

[https://svnweb.freebsd.org/base/head/bin/sh/cd.c?revision=32...](https://svnweb.freebsd.org/base/head/bin/sh/cd.c?revision=320340&view=markup)

similarly, most anything in base is available in:

/usr/src/{path with '.' instead of slash}/{command name}

which is by the way, very handy, and in combination with having all your self built packages in /usr/ports/distfiles/<package>.tar.<whatever> a big plus of running a BSD system from source..

<comment><USER23> Yet another example where the BSD code is simpler and clearer.

I don't think it's particularly controversial to say that when you want to explore how the internals of unix work, you're almost always better off reading the BSD source code first. Even if you don't run a BSD. (musl libc is great, too, but limited to libc.)

I do most of my systems programming for Linux platforms, but when I have a question about semantics my first stop is POSIX to learn how it _should_ behave. My second stop is the BSD source so I can quickly grok the mechanics. Lastly would be the Linux or GNU code, to confirm exact behavior. Setting aside the fact that Linux or GNU code usually feels like it was written inside-out and upside-down, you can't well understand why and how something works without having a more general understanding of the problem and solution space. This applies to everything in life, but in the context of systems software programming I've developed a very concrete process.

Having a copy of POSIX locally (greppable, but also the local HTML frames version is super easy to navigate), as well as easy access to BSD code in /usr/src, can make this a very fast and efficient process. Much faster than Googling, wading through Stack Overflow, and other haphazard habits.

</comment></comment><comment><USER24> Huh, makes perfect sense about changing the shell processes directory. I always wondered why some commands were built-ins. Thanks!

</comment><comment><USER25> Random piece of info about cd:

cd.. (no space between "cd" and "..") works on Windows

<comment><USER26> Or try zsh with a good pre-made config like grmlzshrc[1]. It allows changing to a directory by typing only its name (or path). This includes the .. directory. Doesn't get faster.

[1] [https://grml.org/zsh/](https://grml.org/zsh/)

<comment><USER27> Or use Autojump[1], changed my life

1\. [https://github.com/wting/autojump](https://github.com/wting/autojump)

<comment><USER28> This is like the zsh plugin 'z'

</comment></comment></comment></comment><comment><USER29> Okay, but now I want to know how it works on something other than (foo)Nix, because that's not an OS space I care about. What about how it works in CP/M or foo-DOS? I've never used a *Nix computer, but I know that I used 'cd' going back to the time of using a TRS-80 CoCo.

I know it's a low-level system call in most on-disk operating systems to change directories. But, for instance, how does it translate physical address to the human-readable name? Do modern (WinXP+) implementations actually take the time to translate folder names from 8.3 to the extended name field? How?

Heck, I'll be dumb enough to ask - why, specifically at the call level, does 'cd\' stick to one level up/down whereas 'cd ' can just pull from just about anywhere? And why, dare I ask, can 'cd' not display like 'tree'?

These are questions about how 'cd' works, to me. Not just, oh, in (foo)Nix it's a system call.

<comment><USER30> What you want is a question and answer WWW site.

* [https://superuser.com/a/380231/38062](https://superuser.com/a/380231/38062)

* [https://unix.stackexchange.com/a/251215/5132](https://unix.stackexchange.com/a/251215/5132)

... and so on.

<comment><USER29> I appreciate the information honestly, but I meant it mostly in the sense that those would be some of the things I'd expect to see in a "how does 'cd' work?" post.

</comment></comment></comment><comment><USER31> The funny thing here: why does cperciva, of tarsnap fame, show up in the source code of the CD script? I saw it on the article, checked it on my Mac, and it does indeed show up. Intriguing.

<comment><USER11> Mac's userland is based on FreeBSD. Colin Percival is a FreeBSD developer who last modified this file:

[https://github.com/freebsd/freebsd/commit/0bc1bed704cc7b7292...](https://github.com/freebsd/freebsd/commit/0bc1bed704cc7b7292be893f0c8c2b9f8f6a4b60)

</comment></comment><comment><USER32> I tried to create a command line tool that mimics some behavior of a bookmark manager in the terminal.

[https://github.com/serv/lbm](https://github.com/serv/lbm)

Unfortunately, I learned that there's is no way to invoke cd programmatically from a program, but I didn't get an explanation I could understand why this is not possible.

Can someone explain why you can't invoke cd from a program?

<comment><USER33> I have had this snippet in my `.bashrc` for years. No idea who to give credit to:

        #    eg. save mc
        #    cd mc # no '$' is necessary

        if [ ! -f ~/.dirs ]; then  # if doesn't exist, create it
            touch ~/.dirs
        fi

        alias show='cat ~/.dirs'
        save (){
            command sed "/!$/d" ~/.dirs > ~/.dirs1; \mv ~/.dirs1 ~/.dirs; echo "$@"=\"`pwd`\" >> ~/.dirs; source ~/.dirs ;
            source ~/.dirs  # Initialization for the above 'save' facility: source the .sdirs file
        }
        source ~/.dirs  # Initialization for the above 'save' facility: source the .sdirs file
        shopt -s cdable_vars # set the bash option so that no '$' is required when using the above facility

What this does is, whenever you're in a directory that you'd like to "bookmark" as you'd call it. Just type `save whatevername`. Then, when you navigate somewhere else you can type `cd whatevername` and it'll change you back there. It's simply adding to this ~/.dirs file and so overwriting is taken care of by just saving the same name in a new (or the same) directory. It just appends a line.

Also, you can just type `show` and any point and it'll tell you what you've saved and where.

The nicest thing is that this persists with new logins (the only drawback is that other shells that are running don't get the update automatically).

<comment><USER27> [https://github.com/wting/autojump](https://github.com/wting/autojump) does something similar, just automatically (and better, IMO).

</comment></comment></comment><comment><USER34> Not to be negative, but for learning: There are a few "problems" with this snippet of the article:

\----

        $ which cd
        /usr/bin/cd
        $ cat /usr/bin/cd
        #!/bin/sh
        # $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2 2005/10/24 22:32:19 cperciva Exp $
        # This file is in the public domain.
        builtin `echo ${0##*/} | tr \[:upper:] \[:lower:]` ${1+"$@"}

Oh, bother! Reading shell scripts can be such a hassle sometimes. I know the tr command is used to translate characters. In this particular case, the second half of the command, the part after the pipe symbol, basically converts the command cd dev to CD dev. I have no idea why this is. In any case, this modified command is passed to the builtin command which is handled by the shell (Bourne shell) that we are using.

\----

1\. The first mistake is typing `which cd`. `which` is a separate program that looks things up in $PATH, which may not actually be what happens when you run the command. You should have used `type cd`:

        $ type cd
        cd is a shell builtin

As you discover later in the article, `cd` _must_ be a shell builtin. Which makes it a little mysterious (and interesting!) why the file /usr/bin/cd exists; it won't really do anything, try it:

        $ pwd
        /home/lukeshu
        $ /usr/bin/cd /usr
        $ pwd
        /home/lukeshu
        $ # but it will print error messages
        $ /usr/bin/cd /bogus
        /usr/bin/cd: line 4: cd: /bogus: No such file or directory

So, why does /usr/bin/cd exist? The comment with the CVS ID gives us a hint: It's a common "src/usr.bin/alias/generic.sh" that is copied (hard-linked) in to /usr/bin for several shell builtins ( [https://github.com/freebsd/freebsd/blob/0bc1bed704cc7b7292be...](https://github.com/freebsd/freebsd/blob/0bc1bed704cc7b7292be893f0c8c2b9f8f6a4b60/usr.bin/alias/Makefile) ). For other builtins that don't _need_ to be builtins, it makes sense; let other programs call them with exec. For `cd` it doesn't make much sense though, and I'm not sure why it exists. Is it just for consistency with other builtins, or does it serve a real purpose? IDK.

(edit: the short answer is "POSIX says so" [https://github.com/freebsd/freebsd/commit/55d0b8395514ae4055...](https://github.com/freebsd/freebsd/commit/55d0b8395514ae4055e7af8e4e9812637dbcc463) , but _why_ does POSIX say so? See my child comment for further citation.)

2\. The second mistake is about what `tr` is doing. You claimed it's converting lowercase to uppercase; but that's backward, it's converting uppercase to lowercase.

So, _why_ does it convert to lowercase? Recall that we learned that it's the _same_ script being used for all builtins. If it weren't literally the same file (at the cost of a few more bytes disk space), it could have just done a search/replace within a template, having each be `builtin BUILTIN_NAME ${1+"$@"}`. But they wanted to save a few bytes, and instead the script must _detect_ the appropriate builtin name by translating its program path to a builtin name. If you execvp("cd", ...), it will invoke the script with $0 set to "/usr/bin/cd". If /usr/bin is on a case-insensitive filesystem, and you execvp("CD", ...), that will also call the script, with $0 set to "/usr/bin/CD". How is it going to translate from "/usr/bin/CD" to "cd"? The ##*/ bit trims the leading directories, then the tr bit converts the remainder to lower case.

(as an aside: the `${1+"$@"}` is a little interesting too; why not just write `"$@"`? "$@" will expand to the full list of arguments (after argv[0]). The ${1+...} bit says to only do that expansion if the first argument exists (i.e., there are >= 1 arguments). But that should basically be happening anyway; if there are no arguments, "$@" should expand to a zero-length list. IDK, perhaps a weird historical shell?)

<comment><USER11> [https://www.gnu.org/savannah- checkouts/gnu/autoconf/manual/a...](https://www.gnu.org/savannah- checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Shell- Substitutions.html)

 _One of the most famous shell-portability issues is related to "$@". When there are no positional arguments, Posix says that "$@" is supposed to be equivalent to nothing, but the original Unix version 7 Bourne shell treated it as equivalent to "" instead, and this behavior survives in later implementations like Digital Unix 5.0.

The traditional way to work around this portability problem is to use ${1+"$@"}._

<comment><USER34> Thanks for digging that up! But for scripts written for FreeBSD in 2002 [1], I have to wonder which non-POSIX-y shells they were worried about.

[1]: [https://github.com/freebsd/freebsd/commit/55d0b8395514ae4055...](https://github.com/freebsd/freebsd/commit/55d0b8395514ae4055e7af8e4e9812637dbcc463)

</comment></comment></comment><comment><USER35> > I started, as I usually do, by searching for the term "chdir" using the > GitHub search bar.

That's not bad, but I'd also suggest checking man pages for syscalls. `man 2 chdir` will give the some documentation on both Mac and Linux OSes and call out the specs that are relevant to the call. (Why `man 2`? That searches section 2 of the man pages which is dedicated to syscalls. How on earth would someone know that? `man man` of course. :-) )

On linux, an interesting thing is that you can inspect a process's current working directory (IE the last thing they chdir()ed to) by looking in /proc/<pid>/cwd/. It presents itself as a symlink to the actual current directory as stored in the kernel.

</comment><comment><USER36> On the one hand, I admire the search for knowledge, taking things apart and seeing how they work. On the other hand, this seems a bit cargo-cultish. It's as if I took apart a record player, trying to see how it plays music, and I told you it works because the motor turns the the record.

In this case, the author got tangled in the shell script and code, and totally missed the whole subtlety and complexity of the Unix architecture. I expected to see something about the processes, file system, and directory entries. Even after the author added key information that was emailed to him by a reader, he didn't really follow up or try to understand more. I understand that not all coders have or need a degree in computer science, but it really surprises me what this author doesn't know (and doesn't know he doesn't know).

Another example from his next blog about 'ls': "I'll admit, scrolling through all this C-code can be a little tiresome. Oh, how I miss the days when all I had to do was read JavaScript source! Because C gives you so little out of the box, a lot of the code that you end up reading is not that interesting. It's largely the kind of stuff that higher level languages implement in their standard library." [[https://blog.safia.rocks/post/171381157060/looking-into- ls](https://blog.safia.rocks/post/171381157060/looking-into-ls)]

Here's a book about Unix, among many (I got this one as a CS graduation present): [https://www.amazon.com/Magic-Garden-Explained-Internals- Rele...](https://www.amazon.com/Magic-Garden-Explained-Internals- Release/dp/0130981389)

<comment><USER37> I had the same sentiment as yours, but the blog is fine (for the author and appropriate audience).

I am quite surprised/curious how it got to top page here.

<comment><USER38> HN is not immune to cargo cults. SV and modern "tech culture" applauds people for writing blog posts like this: "Today I decided to find out what makes the sky blue! I just thought I'd write a blog post about it." Then the culture is reinforced, as when you mention how it's stupid to upvote the blog of someone who literally admits they do not know what they are talking about, you get shouted down for not handing out participation trophies. And yes, I realize how rude this comment is, and how stereotypically anti-millennial it is. But it's what has been happening on HN for years.

</comment></comment></comment><comment><USER16> > For one, the source for Bash does not have a mirror on GitHub

Here's one: [https://github.com/bminor/bash](https://github.com/bminor/bash)

</comment><comment><USER39> Nice! Great article fro HN.

</comment><comment><USER40> Well... that was... anticlimactic.

<comment><USER41> just like reading plot summaries on wikipedia</comment></comment>


Threat Modelling for Developers - <AUTHOR> https://martinfowler.com/articles/agile-threat-modelling.html#PreparingToStart <comment><AUTHOR> I've been following this, as Martin Fowler released it in instalments over the past few weeks. The final part came out today.

While specialists who are experienced in TM may not get a great deal from it, it should be useful for developers new to it.</comment>


'Five-Second Rule' for Food on Floor Is Untrue, Study Finds - <AUTHOR> http://www.nytimes.com/2016/09/20/science/five-second-rule.html <comment><USER2> If you need a study to tell you not to eat off the floor, you probably aren't going to understand the study.

</comment><comment> a-no-n The Onion must've renamed itself NY Times.</comment>


A Year of Tech Solidarity - <AUTHOR> https://civichall.org/civicist/a-year-of-tech-solidarity/ <comment><USER2> I feel like tech workers are already highly engaged, just very selectively with the causes that matter to the tech world. A good example of this is EFF. EFF has a huge presence both in the community and at every industry event I've ever been to. Most tech people I know donate to them.

There is also the FSF, numerous hacker camps and conferences aimed at women (Grace Hopper Celebration, etc).

I'm very skeptical on the need for a broad coalition of tech professionals.

<comment><USER3> EFF and FSF aren't politically neutral in the broader sense. EFF is broadly libertarian, and FSF is, from what I can tell, generally leftist. Neither of those are bad things in and of themselves, but you should be aware before deciding to collaborate with them.

<comment><USER4> Also the EFF is aimed at protecting the rights of people who communicate electronically, and the FSF is aimed at protecting the rights of people who use software. Neither is aimed at protecting tech workers.

</comment></comment></comment><comment><USER5> The tech solidarity is at odds with the progressive causes. I would probably join a solidarity group, but I would not join one that pushed causes other than 'tech worker interests'

<comment><USER6> Yeah, same here. I'm not willing to stick my neck out for putting tech money into progressive causes (or conservative causes, for that matter). I'm willing to stick my neck out for better working conditions, retirement plans, professionalism standards, and fairness in equity compensation.

<comment><USER7> > I'm willing to stick my neck out for better working conditions, retirement > plans, professionalism standards, and fairness in equity compensation.

That _is_ a progressive cause, no?

<comment><USER8> Progressives like to think they're the only ones who care about that when, in reality, everyone except the strictest libertarian wants all of those things.

What frustrates me personally is the inability of many progressives to _rationalize anything other than Marxist /socialist means_ for those ends and then act as if everyone who doesn't believe in those means doesn't share those end goals.

<comment><USER7> > rationalize anything other than Marxist/socialist means

What does this actually mean?

<comment><USER9> Throwing around 'Marxist' seems extreme here, but I think I recognize the sentiment. There are a lot of ways to improve the position of workers, and historically progressivism has been interested in some and opposed to others.

Two examples:

If you want to improve salaries, you can do that via unionization and lobbying for guaranteed raises. That's a popular leftist approach. You can also do that by advocating for bonuses based on personal achievement or corporate profit. The left has generally been disinterested in that, and has indirectly opposed it by advocating for higher taxes on bonuses.

If you want to expand worker influence on how companies are run, you can found co-ops, establish worker's councils, and so on; these are popular leftist programs. You can also give meaningfully-large stock grants to large numbers of employees - equity-granting startups are worker-owned every bit as much as co-ops. This isn't a leftist initiative at all, and has been indirectly opposed by calls to heavily tax options and capital gains even when they're being given in lieu of salary.

I don't especially want to debate any of those as policies; it's just a demonstration of what some leftist and non-leftist roads to labor power look like.

<comment><USER10> >If you want to improve salaries, you can do that via unionization and lobbying for guaranteed raises. That's a popular leftist approach. You can also do that by advocating for bonuses based on personal achievement or corporate profit. The left has generally been disinterested in that, and has indirectly opposed it by advocating for higher taxes on bonuses.

The reason they are disinterested in bonuses based upon personal achievement is because it is guaranteed to be used as a tool for favoritism and divide and rule, which ultimately just lowers worker compensation.

It will only work if the measure is objective, which is almost always impossible.

<comment><USER11> The counterexample to both these points is a union like the Screen Actors Guild, which allows superstars to be compensated accordingly and does not depend on something like objective measures of achievement. If I were a tech worker in a union I'd want it to go in that direction, as opposed to something like the traditional UAW.

<comment><USER6> Absolutely agree. They also run a multiemployer defined benefit plan, which might be worthwhile to set up. That, alongside defining and pushing for developer-friendly working conditions.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER4> It's interesting that the efforts to kick money out of tech are getting more traction than the efforts to unionize, even though unionization is by far the less extreme option.

</comment><comment><USER12> I'm not sure we need more progressive activism in tech. After the way the James Damore thing was handled I'm starting to think maybe tech workers are safer keeping their political beliefs between them and the ballot box.

I think people should be free to hold any political belief, but are wise to separate work and politics.

<comment><USER13> Work and politics are inherently connected though. "Not being political" in the workplace is a political stance in itself - it's taking the position that the current state of politics is perfectly agreeable to you.

James Damore was made an example of, yes, because he went against the politics of the status quo. He made the mistake of not organising with others and building power as a group that challenges the status quo. This is why unionising is important: a demand from a mass worker movement that can pose a real threat to the status quo is the only demand that has a chance of being met.

<comment><USER14> > "Not being political" in the workplace is a political stance in itself - > it's taking the position that the current state of politics is perfectly > agreeable to you.

No, not being political in the workplace means someone values their stable income more than they value the need to talk about their opinions.

Even though their opinions might almost completely agree with what their peers think, it's abundantly clear that deviating even slightly from the orthodoxy within tech can be disastrous to one's ability to pay for their home and food.

edit: I can no longer delete this, but I would if I could. I'm not defending nor condemning any partisan stance. I am not stating my own opinion on any matter at hand. I'm giving what I think could be a reason for someone not wanting to be politically active.

<comment><USER15> > No, not being political in the workplace means someone values their stable > income more than they value the need to talk about their opinions.

Support of the status quo is a political choice. There is no neutral.

Also, the option to "stay out of politics" is something not afforded to everybody. As a financially comfortable white guy with in-demand skills, I can do it. But if you are on the sharp end of any of America's ingrained biases, you may not be able to.

See, for example, all the women now able to come forward about workplace harassment. Their speaking out, their striving for workplaces where they are free of abuse: those are inevitably political actions. So too is ignoring or resisting that movement.

<comment><USER16> _Support of the status quo is a political choice. There is no neutral._

The "status quo" is "the person who was elected gets to be President". It's OK for you not to believe in democracy per se, or in a specific flavour of it, that's Freedom. But let's call a spade a spade shall we?

<comment><USER17> _The "status quo" is "the person who was elected gets to be President"._

He gets to be President until he's impeached, loses an election, or is declared unable to discharge his duties using the procedure in the 25th Amendment.

And... that's it. He doesn't get a guarantee that nobody will criticize him or his agenda. He doesn't get a guarantee that nobody will try to rally legislative support to prevent his agenda being enacted. He doesn't get a guarantee that nobody will use the courts to challenge his executive orders. He doesn't get a guarantee that the courts will allow any executive order he issues. He doesn't get a guarantee that state and local governments will assist federal initiatives. He doesn't get a guarantee that large donors will support him or his preferred candidates and causes.

There are many, many ways to challenge a sitting President without removing him from office. You don't have to challenge him, but the fact that you choose not to is a political choice, not an apolitical one, since it constitutes acceptance of and complicity in whatever he manages to do as a result of not being challenged.

Neutrality and "apolitical" stances are _never_ neutral or apolitical. They always constitute acceptance of whatever will happen in the absence of your explicit action, since if you didn't want that stuff to happen _you had an opportunity to challenge it and actively chose not to_.

<comment><USER16> _it constitutes acceptance of and complicity in whatever_

I'm not sure you really believe that, here's an experiment to find out: did your feelings about Hillary change at all as a result of the Weinstein thing? Do you feel complicit in all Weinstein's deeds? Or substitute any of the many Hillary-supporters caught up in scandals now.

Just as an experiment of course.

<comment><USER18> >I'm not sure you really believe that, here's an experiment to find out: did your feelings about Hillary change at all as a result of the Weinstein thing? Do you feel complicit in all Weinstein's deeds? Or substitute any of the many Hillary-supporters caught up in scandals now.

I've been feeling particularly smug, after all these corruption and graft scandals, to be on my #BernieWouldHaveWon train.

<comment><USER19> > I've been feeling particularly smug, after all these corruption and graft > scandals, to be on my #BernieWouldHaveWon train.

Oh, cool, do you have some actual evidence about the alleged HRC corruption and graft scandals that you can share?

<comment><USER18> Donna Brazile wrote a whole book about it. Money meant for down-ballot races was being funneled to the HRC campaign, and both HRC and Obama had left the DNC in heavy debt. From the stories, it sounds like the Party didn't like Obama much more back in 2008 than they liked Bernie in 2016, and as a result, they basically rejected Obama's attempts to reconcile and merge his electioneering efforts back into the Party. This basically fucked them over completely on down-ballot races.

The Democratic Party sounds like a terrific lesson in the Iron Law of Institutions, and right now, much of the American Left (that is, actual left, social-democratic and leftward) is behaving the same way, too.

<comment><USER19> > Donna Brazile wrote a whole book about it.

Her claims that the DNC rigged the primaries were quickly shot down as bullshit and she walked them back the very next day.

<comment><USER18> Maybe so, but nonetheless, it shows how the DNC has traditionally been a device for funneling money from ostensible _members_ of the Democratic _Party_ , to whichever presidential campaign is on at the time. If you ever wondered why the Democrats lost so many down-ballot seats, the basic answer is: because they sent all their money to Hillary, Obama, and then Hillary, _including_ the money meant for the down-ballot races. Pay nothing, play not at all, lose by default.

<comment><USER19> >>> Donna Brazile wrote a whole book about [HRC corruption] >> Her claims were bullshit and she walked them back. > Maybe so, but nonetheless, it shows [...]

No, look, you can't say "this proves it", have that proved to be bullshit, and just go "maybe so but" and carry on with your disproven argument!

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER20> For the most part, its safer not to stick your head up. There's a real chilling effect in action, and for the sake of your career, it's better to keep your opinions to yourself, lest the torches and pitchforks be directed at you.

<comment><USER21> People in other countries routinely face much greater threats of reprisal than those faced by most activists in the US.

In other countries you have people resisting in the face of totalitarian regimes which brook no dissent under threat of death or torture for activists and their families. Yet people still resist.

As far as I'm aware, we're still far from a state of affairs where joining a union in the US means facing those kinds of risks. Yes, it might affect your career negatively -- but it might also affect it positively, as there are among us people who actually look at union membership as something to be proud of rather than hide.

Yes, there are libertarians and economic conservatives who froth at the mouth at the very mention of a union, but I haven't heard of many of them actually going as far as killing people for joining unions in recent decades.

So what kind of risks are you realistically going to face if you join a union?

<comment><USER22> That escalated quickly. From chilling effect for the sake of the career to torture and killing.

<comment><USER23> In late 19th to early 20th century in America (and some other places), union membership actually _could_ be a life or death proposition. Back then, violence went so far, particularly around mining industries, at times to literally be called as warfare and battles.

Examples: [https://en.wikipedia.org/wiki/Coal_Wars](https://en.wikipedia.org/wiki/Coal_Wars) [https://en.wikipedia.org/wiki/Colorado_Labor_Wars](https://en.wikipedia.org/wiki/Colorado_Labor_Wars) etc.

At this point in America, push-back against organized labor (or in fact most other activism) doesn't reach this level. In some countries, however, activism of any kind is still potentially on this level of risk.

</comment></comment></comment></comment><comment><USER24> Culture is something that top senior leadership is responsible for. And in that regard, they also have to lead by example.

If senior leadership represent mono-political-views, and their actions are representative of their views, then the rest of the organization will act the same and we feel the need to act the same.

So if (or rather 'when') senior leadership in US tech company (or a non tech company, like a bank) was mocking Trump and his supporters, you can be sure that employees not sharing those views, would be feeling unsafe (in the sense of keeping their job/promotion opportunities/word-of-mouth effects).

Anti-Trump crowd tends to call their views and

policies 'progressive',

their positions on labor force/visa as 'inclusive'

their unacceptance of opposing view as 'fight against bunch of '..isms''.

\--

A side point..

It is unfortunate that politicians, their media propaganda arm, (and trial lawyers) take such an active role in 'wordsmithing' that, they pollute the meanings of the words. To the point, those words feel 'dirty' or 'less impactful' to be used (because they are now 'loaded' ).

<comment><USER25> The idea that top leadership is responsible for culture is exactly what makes organizing in tech so exasperating.

Tech workers can have their own culture, their own priorities, their own views on what is ethical, important, and valuable in life. And they can come together in defense of those values in a way that senior management must understand, accept, and respect.

That ability to come together, organize, and prevail is something people gave their lives for. It mattered to them and should not be something we give up.

<comment><USER26> Perhaps a better way to phrase things is that top leadership is responsible for creating a set of environmental conditions where the right culture can thrive and grow.

A not-insignificant chunk of that is in choosing the right people, which is more than just selecting for raw ability.

It's a mix of having enough skills to contribute, and having the ability to rapidly adapt and upskill on top of that, but it's also being collaborative and working to strengthen the organization at all levels, and being kind and considerate of others.

The way that you structure your organization has a huge impact on all of those things.

Stack ranking? Kiss collaboration goodbye. You've just put every team member at odds with their peers for their very survival.

Purely top-down performance reviews? People will put more effort into being visible to their managers than in being helpful to their peers.

And so on it goes with interviews, onboarding, etc.

All of these things matter hugely, and they all very much flow from the top of the organization.

<comment><USER27> You're missing the point of organizing, which is to ensure that if the workers don't like the culture, they can force the top leadership to make changes to the "environmental conditions"

<comment><USER28> I agree. They are also missing the conflictions with top leadership first being responsible for making money. I think the points made here are fine and good, but not exactly helpful.

</comment></comment></comment></comment></comment><comment> wav-part I think it need to be resaid: Do we make world a better place by progressing technologically/scientifically or socially ? There is really not much time for both. No offence to those who do later, but I like to believe that we do former here. Please correct me if I am wrong.

Working together for a tech is beautiful endeavour completely oppositie to a political movement.

<comment><USER7> Technical progress without social progress is the standard road to dystopia. At best this is China. At worst it's Saudi Arabia: glittering cities of the mega-wealthy built by slaves.

You cannot say that something is "better" without considering how you're evaluating that and for whom it's better.

<comment><USER29> I object to the postmodern relativism embedded in your comment. "Better" can be universal in science and technology. Cleaner energy, faster processors, and less disease are not socially constructed forms of bullshit. These improvements are real.

Technical progress, in fact, is the _only_ progress. Moral fashions comes and go, but we remember new scientific principles and how to apply them. Far too often, I see people try to slow the development of technology to suit the current moral fashion. That infuriates me: technology improves the human condition far more than moralizing ever has, and slowing technology development creates incomprehensible amounts of human misery.

<comment><USER30> How was the invention of chemical weapons "universally better"?

And where would you rather life: In a world with the technology of today, but the value system of 1438. Or in a world with today's system of law and human rights, but with the technology of 1438?

<comment><USER29> Any scheme that would have blocked chemical weapons research would also have blocked the green revolution. We're never worse off for having more basic knowledge about the universe. If you don't like chemical weapons, do something about people using them. Don't try to keep people ignorant.

Re dates: moral fads always look like moral progress from the inside. That doesn't make it so. I hope that our ancestors are kinder to us than we are to our own predecessors.

<comment><USER30> Yeah, now you're doing some sort of logical yoga, with an added dose of maybe- identured-servitude-was-actually-great-relativism.

Also, if I did "something about people using [chemical weapons]" wouldn't many of the things I would do qualify as useless non-technical progress? After all it's not technology that stops the US from dropping Sarin on ISIS, but the Chemical Weapons Convention.

</comment></comment></comment></comment></comment></comment><comment><USER31> Absolutely shocked, shocked there is such a dearth of understanding, let alone endorsement of an organizing push in the tech sector on HN. fwiw I'm actually farther to the left of mace, and I disagree substantially with some of his positions, but there are few issues in such dire need of exposure and support. Here's to another year of work and a deeper foundation laid. Cheers to those of you doing this work, you are noticed, your work is not in vain.

<comment><USER32> Such perceptions of HN are, as far as I can tell, in the eye of the beholder. People with different politics just find different samples to consider representative (e.g. [https://news.ycombinator.com/item?id=15585780](https://news.ycombinator.com/item?id=15585780), [https://hn.algolia.com/?sort=byDate&prefix&page=0&dateRange=...](https://hn.algolia.com/?sort=byDate&prefix&page=0&dateRange=all&type=comment&query=by:dang%2013110004)).

The statistical distribution known as HN isn't consistently political. But there is a contrarian dynamic. As soon as a theme appears, other commenters start posting objections to it. Once those appear, then contradictions of the contradictions show up (often with comments that begin "I can't believe that HN..." or some such). Circle of life on the internet.

<comment><USER31> while I appreciate who you are, I've also been on this site almost since the very beginning. I almost never comment, and didn't start commenting for literally years because of the quite obvious political/economic biases of the main contributors, which has seemed in the long run to have held rather steady. There are outliers, of course, but I'd be willing to bet that the proportion of highest voted commenters identifying as pro-labor, let alone critical or hostile to capital, is going to be vanishingly small. especially given that it was originally called Startup News (or something along those lines). Grahams politics are also well known, and I've actually asked him, myself, directly, about them at a well known conference.

I'm also a little weirded out that someone who seems as scientifically/mathematically literate as you would link to a couple of comments as if the story of HNs political biases would be summed up or even broadly illuminated that way.

Again, I know who you are, I know what a pain in the ass the work you do here is, I just think that maybe you're a bit too close to the sun to see this one. My 2 cents.

<comment><USER3> I'm _the_ highest voted commenter on the site, by a weird and embarrassing margin, and I'm pro-labor (though not anti-capital).

<comment><USER31> which is not by itself indicative of anything other than regard for your opinions on security? Really man? I get that you want to go to bat for dang here, but way to sidestep my point, I said quote "the proportion of the highest voted commentors that are pro labor or hostile to capital will be vanishingly small." There's a fair amount of semantics around what that could mean in practice, but one person, _who themselves complains about HN social /political biases on twitter on the regular_ does not a majority make.

edit: not to mention I noted in my post to dang that there will be outliers, which, again, you clearly are at an internet forum originally and still largely dedicated to startups, a demographic slice not exactly well known for their love of labor rights.

</comment></comment></comment></comment></comment><comment><USER33> I've enjoyed Ceglowski's talks but he says a lot of things that just are clearly wrong in this article.

 _" When you have a monopoly you can't really have a consumer boycott," Ceglowski said. "People can't realistically not use Google or Facebook at this stage"_

What? People can't not use Google or Facebook? I use Bing sometimes, it works fine, and of course you only really need to use search engines at all if your job requires it. And lots of people don't use Facebook, or used to use it and no longer do. This statement is just so clearly and factually false it is disappointing.

 _For progressives like Ceglowski, organizing tech workers is ... about pressuring companies to do better on a range of issues, from sexual harassment in the workplace, to user privacy and security, to election integrity_

"Election integrity" presumably meaning that he wants the tech industry to control what people see about politics and politicians, lest they accidentally vote for the wrong guy.

As for doing more on progressive agendas ... the big tech firms are all notoriously controlled by an extremist "progressive" agenda already. How exactly does this guy expect Google to do even more than it already does on things like privacy and security, or sexual harassment in the workplace? They fired Damore for having the audacity to point out that years of bending over backwards to recruit more women had failed to make much difference because women don't study CS at the same rate - a verifiable _fact_ that upset a bunch of fundamentalist feminists.

The idea that the tech industry needs to unionise to force tech firms to be even more Clintonite, globalist and to try and control elections is tremendously disturbing. My respect for this guy has plummeted.

<comment><USER3> No, the _tech labor force_ needs to _organize_ to force tech firms to _operate in ways that respect the majority of their employees_ , rather than ignoring them entirely.

<comment><USER29> That sounds good, but in practice, such organization will amount to the destruction of the meritocracy and the elevation of a certain set of political views to the status of job requirements.

A tech union would, I think, inevitably devolve to the kind of organization that denies the existence of skill differentials.

<comment><USER34> You say this as if tech is currently a meritocracy.

<comment><USER29> It's closer to a meritocracy than practically any other field. I firmly reject the postmodern war on quality and the dismissal of merit as an illusion or a form of oppression. Impact matters.

<comment><USER3> This is a field that in 2017 still deploys vast amounts of new PHP code, and in which the most successful new database offering of the last 5 years has been MongoDB. You've got a very tough row to hoe to support the argument that it's a "meritocracy".</comment></comment></comment></comment></comment></comment>


P2P file sharing in the browser - <AUTHOR> http://gigaom.com/2013/06/04/pipes-facebook-file-transfer-system-is-finally-out-of-beta/ There's also http://www.sharefest.me which was on google io13 <comment><AUTHOR> There's also <http://www.sharefest.me> \- p2p file sharing web app which featured on google io13</comment>


Show HN: Create/update product catalogs with CSV an bulk image uploads - <AUTHOR> http://merchantbot.co/ <comment><USER2> There's nothing to "play with or try out" on the page. The only activity is to provide contact information. That's about all the feedback I can give.

Good luck.</comment>


Ask HN: Login credential management for teams? - <AUTHOR>

Hello HN,
I'm looking for an easy and preferably free way to manage passwords and credentials in my company. Recently there was a post on HN about a service like for this, but I can't remember the name of the website. (it used browser add-ons to enable auto-login for various services, it stored the passwords in the cloud).
Does anyone remember the name of that product? If not, do you know a good solution for this?
Best regards, Andrew <comment><USER2> You might be thinking of Meldium (YC W13) -- happy to help you set it up!

<comment><AUTHOR> Yep, this is what I was looking for :) Unfortunately I need 7 users and $29 is too much for the 2 extra users I need.

</comment></comment><comment><USER3> LastPass or KeePass might be what you're looking for.

</comment><comment><USER4> Active Directory is pretty good.

<comment><AUTHOR> I need something to manage website passwords: for example domain registrar name.com. And also auto-login for long and complex passwords.</comment></comment>


Five 2010 Stories That Nobody Predicted - <AUTHOR> http://www.pcworld.com/businesscenter/article/215328/five_2010_stories_that_nobody_predicted.html

<comment><USER2> I can't believe they left off wikileaks itself. Wikileaks is by far bigger than anonymous ddos against sites that declined to provide service to wikileaks!</comment>


Video Streaming with RethinkDB Changefeeds - <AUTHOR> https://github.com/AtnNn/rethinkdb-stream

<comment><USER2> Is it possible to "backload" changes?

"Start the changefeed at timestamp `x`. Once it's caught up to realtime, keep feeding me new ones"

<comment><USER3> RethinkDB's `.changes()` command doesn't support this directly. Here is the corresponding github issue: [https://github.com/rethinkdb/rethinkdb/issues/3579](https://github.com/rethinkdb/rethinkdb/issues/3579)

The code in the demo does this by performing a separate `between` query.

</comment></comment><comment><USER4> Hah, Étienne, lord of hacks :)

</comment><comment><USER5> I read the changefeeds post, but I don't think I understood exactly what they're for. Would clients be talking directly to the database, or would a persistent app worker block on database updates and then send this to the client?

<comment><USER6> In a more conventional usage scenario, your application is responsible for picking up updates from the changefeed.

You can see an example here of a node.js app using a changefeed to convey updates to the frontend through Socket.io: [http://rethinkdb.com/blog/realtime-cluster- monitoring/](http://rethinkdb.com/blog/realtime-cluster-monitoring/)

Though, of course, you can also build things other than web apps. Here's a simple IRC bot built with Go that also uses RethinkDB changefeeds: [http://rethinkdb.com/blog/go-irc-bot/](http://rethinkdb.com/blog/go-irc-bot/)

<comment><USER5> I see, thanks. So you basically get a blocking message queue for free, which is pretty cool.

</comment></comment></comment><comment><USER7> How does this compare with, say, using a Redis pub/sub queue? (Aside from the hack value, of using a database like RethinkDB for the task)

</comment><comment> iso8859-1 how many FPS and how much CPU usage?

<comment><USER3> I told ffmpeg to use `-r 25` but the console output says `fps=7.6`.

I just put it together in a few hours to see if it was possible. Given the unexpected interest in it, I'll put some more work to see where we can take it.

</comment></comment><comment><USER8> obviously this isn't production quality or scalable but interesting. on the topic of video streaming, could you build something like twitch.tv with this type of tool? or are there other tech stacks at play in order to make video broadcasting possible.</comment>


The Stimulus Plan Update - <AUTHOR> http://blogmaverick.com/2009/02/17/the-stimulus-plan-update/ <comment><USER2> "Of the 7, the amounts requested range from about $20k to more than $100k"

Interesting. I was not thinking that the investments would be this "large".</comment>


Ask HN: Patronizing co-worker - a PHB in the making? - <AUTHOR> First, some backstory: despite having a good few years experience, he wasn't living up to the development standards in the shop, so was quickly turned into a project manager of sorts (classic), dealing with clients and stuff to ease the load on the owner.
First day after the announcement he comes in a suit and tie (normal outfit for everyone was t-shirts + jeans). Now, he's somewhat clueless as a project manager, everyone knows it, and for the most part he tries to be reasonable, but he seems to have embodied an "I'm a manager", entitled pose. He actively tries to have the last (meaningless) word on meetings/reports/discussions and generally makes it sound like he has harder responsibilities than everyone else. He sends out "thanks for your hard work" e-mails though he doesn't actually managed anything.
So, the work is all well, but this is ultimately nurturing some negativity. Now he's being brought aboard some new projects while the devs are left out of the loop, though he has no merit. It's like I'm watching the stereotypical pointy-hair manager being created right in front of me. What is there to do? <comment><USER2> The sooner you deal with this, the better. Dev's being cut out of the loop -- particularly combined with his cluelessness and lack of real contribution -- is a big warning sign. In this, you can see that things are already getting worse. Expect that to continue, unless the situation is rectified.

As for responsibility: He's the one who, frankly, started acting like a douche (or, finally started showing his true colors). He's the one who, fundamentally, needs to change. Yeah, you may be willing to work with him in an honest effort. But don't start thinking that this is _your problem_. It's your problem to deal with -- meaning him -- but it's not your problem to adapt to his self-serving douchiness.

Get together with the team, break out the clippers, and sheer down those points. ;-)

P.S. If things don't change, it's going to come down to "he goes, or I go", sooner or later. (Whether to a different firm, or -- in a larger organization -- to a different team that has no interaction with him.) Otherwise, prolonged misery.

Also, right now, his credibility -- unreal as it may apparent to your knowing eyes -- is limited. The longer things continue, the more valuable he may end up looking to management. And the harder your argument becomes to make. This is why living with the status quo is a losing proposition for you.

Finally, this is just my personal opinion. I may be wrong. But I've put up with some douches, and it mostly always only seemed to keep getting worse. Until I got out.

</comment><comment><USER3> The first thing I thought of after the suit + tie was that he was dressing the part and trying to distinguish from being 'one of the gang' which could lead to problems down the road (which is why some companies won't let a co-worker become the new boss, they'll transfer someone new in).

Then I got to the second part which led me to think that he got dropped into a position that he has no earthly idea on how to do and is just struggling to try to maintain a position of authority and get some sort of hold on your team, who appears (to him) to be subverting him. How can you manage if no one will let you manage? While you could see there's some solutions to that, it's difficult to see when you're the one in the fire. The hard work emails could simply be a (potentially failed) attempt at positive reinforcement. From your perspective he doesn't do anything, but perhaps it's because you're unaware of what he does, either because you're unfamiliar with the responsibilities or he doesn't broadcast it.

Or he could be a PHB in the making and it's exactly what you're thinking.

In either case, you've got a few options.

1) Direct feedback. In a 1 on 1 meet with him and figure out what it is that he does, give him some positive feedback on what he does, some negative feedback. This feedback could also be anonymous (depending on the size of your team and how well he knows writing styles)

2) Is it possible to go to the next person up on the totem pole and give your feedback? This could protect you from a confrontation and yet still convey the information.

3) Perhaps he should work with a mentor in the company to learn from someone more experienced? There's a few ways to arrange this depending on your relationships in the company, but either asking him about his mentor (which should cause him to think about getting one if he doesn't have one), or asking someone else to become his mentor, or asking his boss to assign him one to get him brought up to speed.

The goal shouldn't be to nail the guy to the wall but instead work with him to improve the team. I've worked with a guy who was a "C" employee in one position, but more "B" in another. This transfer could be his chance to be a more productive member of the team.</comment>


Show HN: Jpeg.io – Convert any major image format into a highly optimized JPEG - <AUTHOR> https://www.jpeg.io <comment><USER2> Has anybody tried mozjpeg? [https://github.com/mozilla/mozjpeg](https://github.com/mozilla/mozjpeg)

It works _much_ better than _any_ of the alternatives listed here, I'm surprised noone mentioned it yet.

Here is an image compressed to the same size with

mozjpeg [http://m8y.org/hn/12597098.jpeg](http://m8y.org/hn/12597098.jpeg) jpeg.io [http://i.pi.gy/AP8v.jpg](http://i.pi.gy/AP8v.jpg)

<comment><USER3> MozJPEG is especially impressive at reducing artifacts around text:

[http://calendar.perfplanet.com/2014/mozjpeg-3-0/](http://calendar.perfplanet.com/2014/mozjpeg-3-0/)

<comment><USER4> > If you want to run MozJPEG on your own machine, then you'll need to use an > ugly command-line program.

:(

And I'm out.

<comment><USER5> Command-line-only apps are typical of this genre of software (pngquant, pngcrush, all the webp utilities, ffmpeg, etc.)

However, sometimes there are GUI apps which wrap the tool itself.

<comment><USER4> There has been a request pending for it on the IrfanView forums for 3 years now ;)

</comment></comment></comment></comment></comment><comment><USER6> Did a quick comparison test with this beautiful piece of artwork I just created.

original [http://i.pi.gy/0K7d.png](http://i.pi.gy/0K7d.png) (2.1 MB)

jpeg.io [http://i.pi.gy/AP8v.jpg](http://i.pi.gy/AP8v.jpg) (102 KB)

Photoshop 60% jpeg Export [http://i.pi.gy/Wr4P.jpg](http://i.pi.gy/Wr4P.jpg) (90 KB)

tinypng.com [http://i.pi.gy/ndKA.png](http://i.pi.gy/ndKA.png) (74 KB)

Note pi.gy does not compress uploads.

<comment><USER7> Since he doesn't summarize the test above, let me. The jpeg.io result is bigger than the other two and noticeably worse quality. The problems were with the sharp lines.

Perhaps jpeg.io specializes in photo-realistic pictures rather than graphics and logos.

<comment><USER8> jpeg.io may have lost on sharp lines, but it had WAY fewer artifacts than either of the other exports, and the blue was closer to the original compared to the Photoshop export. In my opinion, it's a better quality image.

<comment><USER9> Honest question: if I can't see the artifacts without zooming in, is there any reason why I should care? Of all the conversion results offered, the Photoshop export actually _looks_ the best to my eyes, so I'm genuinely trying to understand why the jpeg.io result would be considered better quality in this particular case.

<comment><USER8> I don't need to zoom in or even look that hard to see the artifacts. Maybe that's me, or maybe that's the retina display on my MacBook, but that's why jpeg.io looks the best for me. If you can't see the artifacts though, I would say jpeg.io loses out.

</comment></comment></comment></comment></comment><comment><USER10> I am pretty sure "Kraken.io's proprietery JPEG optimization algorithms" is based on the Psychovisual Error Threeshold: [http://ieeexplore.ieee.org/document/6530010/](http://ieeexplore.ieee.org/document/6530010/)

Have a read at what Google engineer Colt McAnlis has to show about it: [https://medium.com/@duhroach/reducing-jpg-file- size-e5b27df3...](https://medium.com/@duhroach/reducing-jpg-file- size-e5b27df3257c)

</comment><comment><USER11> I was about to share it, but FB cached something crap:

[http://imgur.com/a/2yfDC](http://imgur.com/a/2yfDC)

I was about to refetch it for you, but the FB debug tool throw some error.

</comment><comment><USER12> Please stop using .io domains.

[https://gigaom.com/2014/06/30/the-dark-side-of-io-how- the-u-...](https://gigaom.com/2014/06/30/the-dark-side-of-io-how-the-u-k-is- making-web-domain-profits-from-a-shady-cold-war-land-deal/)

</comment><comment><USER13> From a technical point of view, this is a great way to collect more real-world image datasets to test and optimize their algorithms against.

Moreover, from a business point of view, this is a great way to collect pictures that are usually not published by other means (e.g. Flickr), but I don't quite see how this could be exploited without copyright infringement.

<comment><USER11> Look at the bottom, it's powered by Kraken.io. This service is just a nice acquisition channel for them while providing something useful. I like these win-win scenarios.

<comment><USER13> _> just a nice acquisition channel_

My point was that it is _not just_ an acquisition channel, but also a great way to collect more sample images for their algorithms.

<comment><USER14> I totally agree. I suppose the parent comment could be referring to customer acquisition or acquiring real world sample image data.

</comment></comment></comment></comment><comment><USER15> Really nice tool, but I'm not getting the best results in terms of size optimization so far: [http://i.imgur.com/2lfx3P8.png](http://i.imgur.com/2lfx3P8.png)

I guess "highly optimized" is a rather ambiguous term. Maybe add a slider for quality <\</comment><comment>> compression?

<comment><USER16> Progressive jpgs increase the size

<comment><USER15> For anyone else who also didn't know what progressive jpegs are - [https://www.wired.com/2013/01/the-return-of-the- progressive-...](https://www.wired.com/2013/01/the-return-of-the-progressive- jpeg/)

<comment><USER16> When I was experimenting with PS a few years ago, progressive JPEGs were always larger than baseline which is why I came to that conclusion.

This isn't however the full picture. To keep it short, baseline JPEGs are usually smaller if the file size is less than 10 KB.

Useful article about progressive JPEG sizes: [http://yuiblog.com/blog/2008/12/05/imageopt-4/](http://yuiblog.com/blog/2008/12/05/imageopt-4/)

</comment></comment></comment></comment><comment><USER17> Has anyone gotten it to accept a webp image as input? It threw 'Error while processing this file' for the ~10 files I attempted with. They were all created with cwebp and the photo preset.

I was, of course, quite curious if it could improve upon file size, as that was the main reason I was using webp in the first place.

<comment><USER18> Worked for me with a file from Opera Turbo. The result was about two times bigger (as expected).

To make comparisons though, you shouldn't use webp as input, use original instead.

</comment></comment><comment><USER19> Strange, I uploaded this PNG [1] and it came 14,917 bytes larger:

        $ ls -lhias
        -rw-r--r-- 1 root root  2845 Sep 28 07:58 colors.png
        -rw-r--r-- 1 root root 17762 Sep 28 07:59 optimized.jpg

EDIT: Disregard, it's because of the addition of the white pixels.

[1] [https://gist.github.com/anonymous/de2f5f8e6ecb5881e1357ebaf4...](https://gist.github.com/anonymous/de2f5f8e6ecb5881e1357ebaf4954ea2)

</comment><comment><USER20> Cool. When would you want to use JPEG over PNG though? I don't know much about these things (just using PNG/SVG everywhere).

<comment><USER21> Any time it's a photographic image (rather than a drawing, diagram or rasterised vector image).

<comment><USER22> This. Here's a quick guide:

JPG - Use for photographic images only.

GIF/PNG-8 - Use for line-art, logos, etc.

PNG-24 - This is a a lossless format/TIFF replacement and generally shouldn't be used for production sites.

<comment><USER14> > PNG-24 - ... generally shouldn't be used for production sites.

But it is sometimes of course, particularly when the designer does not want the PNG restricted to 256 colors. For example, suppose that your logo is a single lowercase letter with an overlaid multicolor gradient rainbow, the banding in the transitions becomes super pronounced in PNG-8.

Beyond that, SVG can replace _a lot_ of what PNG has been used for on the web for the past couple decades.

</comment></comment></comment></comment><comment><USER23> How do jpeg.io's proprietery JPEG optimization algorithms perform compared to JPEG2000, webp or re-jpeg ?

<comment><USER24> Probably well against JPEG2000, which isn't actually that good. Wavelets look bad when compressed because they blur so much.

JPEG will have a really hard time competing against WebP, x264 --tune stillimage, or HEVC. Nobody uses those though.

</comment></comment><comment><USER25> No privacy policy on the main or "About" page.

If you upload an image, who knows what the site operator will do with it? Without any kind of limit spelled out, we must assume the worst.

OP, unless the main goal of this site is to harvest images from oblivious people, please add a privacy notice.

</comment><comment><USER26> So do these do anything different than making image magick available in the browser?

</comment><comment><USER27> PDF support would be nice.

</comment><comment><USER28> What about openjpeg.org?

</comment><comment><USER29> The amount of people in this thread who don't understand what is JPEG and PNG for is staggering!

</comment><comment><USER30> no pdf?

<comment><USER31> In what scenario would that be useful? I'm just curious.

<comment><USER32> Probably when you accidentally scanned a document to PDF. Or when you received a document in PDF from some nasty man.

</comment></comment></comment><comment><USER33> Cool. But I prefer tinyjpg or tinypng

<comment><USER34> Why?

</comment></comment><comment><USER35> Forgive me, but why on earth would I want to use JPG in the age of PNG?

<comment><USER36> Are you serious? A digital photo translated to PNG is going to be quite large. PNG has it's place, for sure, but it doesn't compress photographs like JPEG does. PNG is great for line art, solid color vector that has been rasterized, etc. JPG is great for photos.

<comment><USER35> >Are you serious?

Perfectly. I'm not very familiar with image compression and JPEG conjures up images of pixellated atrocities.

It seems like either progress has been made in this domain or most JPEG encoders on the internet are poorly configured (in which case the present webapp makes sense).

<comment><USER22> I think it's more likely that a pixelated jpg is a result of the creator using the wrong format (ie, using jpg where gif/png-8 would have been more appropriate) or over-compressing the image.

PNG-24 is a lossless format, and generally shouldn't be used for production sites.</comment></comment></comment></comment>


Lessons from Peter Thiel's Class On Startups - <AUTHOR> http://www.forbes.com/sites/ryanmac/2012/06/07/ten-lessons-from-peter-thiels-class-on-startups/

<comment><USER3> > But in perfect competition, nobody actually makes any money; all economic > profits are competed away.

This is incorrect. Competition drives economic profit to zero in the long run, but!

First, there's also the short run - "in the long run, we're all dead", etc - where gobs of money could be made.

More importantly, economic profit includes a term for opportunity cost - <USER2> you'd be making with your next best option. So if you have an alternative that would also be making you lots of money, and your economic profit is zero, you're making lots of money.

<comment><USER4> Can you add some detail? Isn't it true that in a competitive market the actual profit tends to 0, in the long term? (whatever you call it; the actual money you make at the end of the day). From what I understand in your message, this is not true, but the truth is that there is a different value, "economic profit", that tends to 0. Is that right? If so, why doesn't the actual profit tend to 0?

Edit: most importantly, how can the economic profit include a term for opportunity cost, isn't the opportunity cost different for every person / company?

<comment><USER3> It's been a while since I took micro, but from what I recall...

In a competitive market, the "actual" (IIRC, the term you want is "accounting") profit doesn't tend toward zero, no. If it falls low enough that more accounting profit could be had elsewhere, firms will move to that elsewhere, supply will be reduced while demand stays the same, and firms will see more accounting profit.

</comment></comment></comment><comment><USER5> I'm very grateful for Blake Masters taking the time to type up his essays on his class notes for the rest of the world that didn't get to sit in on this class. If he wants to get his name out there more with your typical 4 page/3 bullet points per page/10 point lesson that is on Forbes.com then that's fine.

It's an alright article but don't let that take away from what he did over the last 10 weeks

<comment><USER6> Blake did indeed a great job typing up his notes in these very enlightening essays. Always enjoyed reading them. Glad to see that his sharing efforts get fully credited by Forbes/Ryan and not just the typical aggregation recycling write-ups.

</comment></comment><comment><USER7> Way to condense what, going by the one on founder/heroes, is an awesome series of insightful lectures, into a crappy set of ten platitudes.

<comment><USER8> Without the authors notes we wouldn't have learned anything from those lectures.

I received value from his summary and wouldn't remotely classify it as crappy but YMMV.

</comment></comment><comment><USER9> Forbes! Congrats to Blake. Only spotted the notes on his blog via HN. Now guest blogger on Forbes. One good motivation for writing notes in class!</comment>


YouTube Video screenshot from custom position - <AUTHOR> https://www.tubescreenshot.com/ <comment><USER2> Feature request:

Make it possible to add the time field in the URL: [https://www.youtube.com/watch?v=6ychdzz6UEA&t=2m3s](https://www.youtube.com/watch?v=6ychdzz6UEA&t=2m3s)

<comment><AUTHOR> thank you, will update on that too

</comment></comment><comment><USER3> if there is youtube screenshot button extension its would be great.

<comment><AUTHOR> soon it will available on chrome web store too.</comment></comment>


Tiptop Speakers Launches On Kickstarter - <AUTHOR> http://techcrunch.com/2013/05/02/tiptop-speakers-launches/

<comment><USER2> The corner of a room is probably the worst place you can put a speaker if you care about sound quality. The room resonances will be nasty.

<comment><USER3> True, but lets be honest: We're talking about a 4 inch driver in a tiny enclosure with nearly no power budget; Even with the 0db-12db of gain you can get at low frequency from driving into 1/8th space your not getting any meaningful output, this thing is going to roll off hard under ~200hz; Sound quality isn't even a target feature here.

</comment></comment><comment><AUTHOR> I think it could be an even more viable idea if they bring the costs down. I would say it is more suited to general consumers than audiophiles, and should be priced as such. From their campaign I got the idea that it is going to cost $250 retail/$175 campaign (not sure if that cost will come down). For $175ish I can buy a pretty good Polk Audio 5.1 system or something of similar quality, albeit it won't fit well in a corner. Also I wonder how easy it is to set up multiple ones as a bluetooth sound source...otherwise, I like the design!

</comment><comment><USER4> Injection molded plastic case, just like a plastic kiddie toy, lol. This might be great for a $10 speaker, but not for a $150 to $250 speaker!

I'm amazed at the stupid stuff that people fund on Kickstarter! Some things are very unique and worth it, but other things like these speakers suck compared to what is currently on the market. This proves there are too many morons with money in this world!

<comment><USER5> Find me a speaker for $10 with an active crossover.

</comment></comment><comment><USER6> I like the corner idea, but I don't really see myself needing to pull it out and carry it with me. It's kind of hard to reach the top corners in my house anyways.

</comment><comment><USER7> Congrats to the TipTop team! I've been coaching their class a bit, and think these guys have a great product in the works!

</comment><comment><USER8> I live in a loft with 30-foot tall ceilings– curious about how they would sound :)

<comment><USER3> Pretty bad. It's battery powered and has a 4 inch driver in a tiny enclosure. Even with the boundary gain from being in the corner it won't be loud enough to amount to much in a space that size. You'd also have to figure out how to get it down to recharge it every 5-10 hours of use (if I were to guess).

<comment><USER8> :(

</comment></comment></comment><comment><USER9> How's this techcrunch worthy?</comment>


CDC director warns second wave of coronavirus this winter will likely be worse - <AUTHOR> https://www.washingtonpost.com/health/2020/04/21/coronavirus-secondwave-cdcdirector/ <comment><AUTHOR> Frankly, it's a little misleading. Not so much the CV itself being worse, but more about if it coincides with with the peak of flu season, rather than several weeks later as it so happenend.</comment>