Ask Hacker News: What do you think of this shopping cart on my new startup that just launched? - <AUTHOR> http://200nipples.com/index.php Good morning all. I just launched a t-shirt sales site, not exactly a web app, I know. But we have a freaky business model, which required a correspondingly freaky e-commerce cart. My buddy essentially reverse engineered Ticketmaster's cart. Anyway, I love this community and respect it's opinion greatly. In fact, I learned most of my web/customer-experience design stuff by reading things I found here.<p>Anyway, I'd love to know what you think of the site's usability etc... I opened with the cart, because I figured hacker types would be most interested in that, but all comments/criticisms are welcome. <comment><AUTHOR> Good morning all. I just launched a t-shirt sales site, not exactly a web app, I know. But we have a freaky business model, which required a correspondingly freaky e-commerce cart. My buddy essentially reverse engineered Ticketmaster's cart. Anyway, I love this community and respect it's opinion greatly. In fact, I learned most of my web/customer-experience design stuff by reading things I found here.

Anyway, I'd love to know what you think of the site's usability etc... I opened with the cart, because I figured hacker types would be most interested in that, but all comments/criticisms are welcome.

<comment><USER3> Yeah, while the counter is great, it could use a sentence or two more of description. Keep the counter, add a fun sentence about why its there, not just what it does.

<comment><AUTHOR> Done.

</comment></comment></comment><comment><USER4> I think the concept is great... definitely in the vein of woot.com. Also an easy way to make a quick $5k on a T-shirt design.

Have you thought of reversing the dollar amounts? Have the #1 in the series cost $100 and the #100 cost $1. People are always willing to pay more for the first of any series, especially a limited one. I personally have no drive to pay $99 more for something that is the 100th of it's kind, but I might pay $99 more to say I had 'the original'.

(Also: Hello fellow citizens of KC area!)

<comment><USER3> I agree, having the first is valuable, but also getting the last one before they're never made again is also valuable. Maybe the middle ones should be $1, and the ends cost more.

</comment></comment><comment><USER5> I'd like to file a bug report.

      javascript:var GM_JQ = document.createElement('script');GM_JQ.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js";
      GM_JQ.type = 'text/javascript';document.getElementsByTagName('head')[0].appendChild(GM_JQ);function GM_wait(){if(typeof window.jQuery == 'undefined'){
      window.setTimeout(GM_wait,100); }else { $ = window.jQuery; letsJQuery(); }}GM_wait();function letsJQuery(){alert("starting");haxor(1);}function haxor(idx)
      {if(idx > 100) { alert("done"); window.location.href="http://200nipples.com/index.php"; return; }$.post("/options.php", { "design_id" : 2, "series_number" : idx });
      setTimeout(function() { haxor(idx+1); }, 100);}

Put that all on one line so that it's a URL and copy it, then go to 200nipples.com and paste it in the location bar. It just posts { "design_id" : 2, "series_number" : idx } to "/options.php" for idx in [1,100], which reserves all the shirts so that nobody else can buy them until the timer expires.

I don't think an IP ban is the best way to deal with this problem.

<comment><USER6> IP ban certainly isn't the best way to deal with it. Its just what I could do untill you guys told me how you did it. Thank you for revealing your method so I can repair the hole.

<comment><USER5> Great, now can you unban me? :-)

<comment><USER6> Ooop! You're clear to not get redirected to here anymore: <http://www.youtube.com/watch?v=eBGIQ7ZuuiU>

</comment></comment></comment></comment><comment><USER7> T-Shirts: You need to get better designs. They are not that special and limited edition does nothing for them. Limited editions only really work if _other_ people know the item is a limited edition, or the design is very unique. There are lots of markets out there filled with handmade items that are "limited editions" most people will not be aware of. Try and get something like a XKCD design that _only_ is seen on one of your limited edition shirts.

Cart: Nice idea and implementation. Emphasise the sold items less (i.e. not in black) as it is counter intuitive. Also have some basic images explaining what is going on (especially with the release-to-wild concept) as I only really understood it when I went through the process and not in the first 5~10 seconds of visiting. 4 or 5 should do it outlining the workflow i.e. look, select, buy, or release.

Name: You can come up with edgy mnemonic names that won't put people off.

</comment><comment><USER3> Launch tip: if you're posting during work hours with a URL that suggests NSFW, put that its a t-shirt site and its safe for work in your title or post. I bet you lost a ton of people who looked at the URL and moved on because they were unsure. They might not have come back to check out the comments to know its ok. You have to realize, there are serious consequences for some people at some companies for going to a site with a bad URL, even if its not a bad site, it puts you on the bag guy's radar.

</comment><comment><USER8> Hey dude - I love it. Great concept, good execution, very fun site. Didn't understand why there was a timer counting down on one of the items. Instead of trying to figure it out after 5 seconds, I went to a different page on the site.

Anyway, great job. Not sure about the first t-shirt. I didnt find it that funny. Maybe I'm just lame. But overall, great site. I'm hoping the next t-shirt will be so funny that I pee a little. I'll surely be coming back to check out future designs.

<comment><AUTHOR> Nah, you're not lame. We expected that some designs wouldn't appeal to some people. This is especially pronounced with the one-design-at-a-time business model. Just subscribe to get a new design notification and come check the next one: <http://blog.200nipples.com/2008/06/shirt-reminder/> :-)

</comment></comment><comment><USER9> I think instead of labeling the shirts #1 to #100, you should consider $1-$100. Would make it a lot more intuitive to understand the grid.

Also the top line said sold and was all dark, which made my mind think of it as a title bar to the table and ignore it, not sure what a good way of dealing with that is but that made it harder for me to work out what was going on.

</comment><comment><USER10> I'd look at it but the domain makes me think its NSFW.

<comment><USER9> "What's with "200 Nipples?"

That's how many nipples we assume will be covered by any single run of our high-quality shirts. (We'll have the third-nippled buyer in there occasionally, but we didn't want to count on it when naming the company; this is serious business, after all.)"

I think its a interesting way to brand it.

<comment><AUTHOR> We debated loooooong over the naming issue. We decided to go with something not easily forgotten and a little funny/edgy over something that is safe.

It's a boutique shop anyway, so we're after the 20% rather than the 80% of our market. (Which made safe and bland much less desirable. In fact it made it wholly undesirable.)

<comment><USER11> You could always make a set of 25 "tea cosey"-like creations.

Market them for cows and their udders? You could get a little blog exposure that way I'm sure.

<comment><USER12> That's udderly ridiculous.

</comment></comment></comment></comment></comment><comment><USER13> Quick... if he sells all 100 shirts for $1 to $100, how much money will he make...

[http://en.wikipedia.org/wiki/Carl_Friedrich_Gauss#Early_year...](http://en.wikipedia.org/wiki/Carl_Friedrich_Gauss#Early_years_.281777.E2.80.931798.29)

<comment><AUTHOR> $3854.96 (net) :-)

</comment></comment><comment><USER9> Feedback: If I leave the page open the cart becomes out of synch and I need to reload the page. Either it needs to poll the server or a quick hack would be to make it refresh after a certain delay.

Or you could have a refresh link next to the cart

</comment><comment><USER14> I think it's brilliantly executed. The /index.php page tells me everything I need to know -- contrary to what some people are saying, I found the cart instantly understandable. (To be clear, I'm talking about the version with "These are all the shirts. If a shirt is counting down it is in someone else's shopping cart. When someone clicks ..." in red. I'm not sure if that was there when you first posted or not.)

<comment><AUTHOR> That's the new version.

</comment></comment><comment><USER15> confusing as heck \- took me a while to figure out what was going on - <USER2> about a quick: here's how is works section - would be helpful -

</comment><comment><USER16> Very clean site.

The white/gray/dark gray color scheme of the cart part isn't working for me. They white ones look most like links, when they're the sold ones. The grey ones look disabled, when they're the ones you want me to click on.

Also, I agree with others that the dollar amounts should be switched, and the first one should cost the most. Do you label the shirt with the number (as in 1/100 like prints do)? I think that would add value but it isn't clear to me if my run # will be on the shirt I buy. Update, now I see that it is on the shirt as shown in pictures #4 & #5 but you should definitely emphasize this A LOT more. This is the reason someone would pay more when they don't have to.

I don't really like the red treatment. Those are the instructions, not an error message. And here's a tiny nit which might make things a bit clearer: how about "Click a shirt number to get started"?

</comment><comment><USER17> Cool idea, weird name. <http://200nipples.com/showcart.php> Everything is there that needs to be when you select a shirt to order, but the presentation is really lacking. Try making some parts of the text a lot larger, throw in a picture of the shirt, and maybe make an icon for "releasing it into the wild."

Also, a lot of the screen is wasted with the top header. You want to make sure people see your content above the scroll; I'd suggest making things more compact. Good work though.

</comment><comment><USER9> Also I like the concept. I think anything around improving e-commerce websites especially with variable pricing is smart.

One issue is that as you hit $100 it may seem pretty unfair to buy something that someone has bought for $1 previously. Maybe the pricing should be non- linear compared to quantity. As in there are 10 shirts available at $50 and 1 at $1 and it not going all the way to $100. Just a thought, but I guess if in practice you find that the $100 are easy to shift then...

</comment><comment><USER18> Mine says it will ship August 7th. Why so long?

I really like the "Chicken Exit: If you don't want to purchase this shirt, click here to release it back into the wild."

The whole goal is to get a customer who really likes a design but maybe isn't sure if they want to spend the money. Well, they know their time is limited, panic starts to set in, and of course they end up buying it. Smart.

But I didn't really dig the RIAA design. Maybe next time.

</comment><comment><USER19> Congrats on launching! The SOLD boxes shouldn't be links... it's confusing that my mouse changes on mouseover but clicking them doesn't do anything. When a shirt times out and is released, its box stays dark grey... shouldn't it be light grey? And how about using red/yellow/green for sold/in progress/available instead of white/dark grey/light grey?

</comment><comment><USER20> I think the price points should be adjusted a little bit. Very few people are going to want to pay more than $30 for a shirt. This means that for almost all of the shirts, 3/4ths of them will never sell. It kind of looks bad.

Its not as catchy, but $10 + (Shirt Number/4) seems like a better formula- $10-$35.

</comment><comment><USER21> You should really note what kind of shirts you're printing on. By the sizing chart it appears to be American Apparel (nice shirts, I wear one of theirs about every day).

But I'm not going to buy a shirt, especially after the first few cheaper ones sell out, without knowing the specs.

<comment><AUTHOR> Done

</comment></comment><comment><USER22> Maybe I'm missing something, but why is the last shirt printed more expensive than the first? Exclusive items with a lower item number are generally more valuable.

Why don't the timed items revert to a regular item once the timer is expired. Remove the grey background, basically.

<comment><USER23> I don't think you can really think of them as #1/100 like an art print. The increased price has more to do with the relative scarcity of the item when it was purchased.

<comment><USER22> That makes no sense. Number 100 is $100 when there are 99 others available and when there is 1 available.

And that is precisely what you can think of an itemized limited edition anything as -- that's what it means.

<comment><USER23> Well, I guess they're going on the assumption that no one would purchase a more expensive shirt when a cheaper one was available. I see your point, though, and it does kind of negate what I said.

</comment></comment></comment></comment><comment><USER24> I like the site and cart setup, but the "we will reserve your item while you checkout" model is already used at most e-commerce sites, although your info on how many are being reserved is public. (plus the time limit is likely shorter)

Still, I wish you luck!

</comment><comment><USER25> Are people really going to pay more than $30 for a t-shirt? I would think that people who like to spend a lot of money on clothes usually buy things other than t-shirts.

<comment><USER4> There is a store in my hometown that sells 'designer t-shirts' for $80 each. Never underestimate the psychological effect of 'pricey = exclusive'.

<comment><AUTHOR> There are also a few of these in Kansas City.

<comment><USER4> That just happens to be my hometown... roughly.

</comment></comment></comment></comment><comment><USER26> FAIL. sorry =(

<http://www.vcwear.com/fund-the-shirts/>

<comment><USER26> It's hard enough to create a design people will not only wear, but actually pay money for.

The pricing scheme is fun for programmers and number-concept fanatics... but has no place in reality. As an example, I posted a link to a site with a ton of online attention who tried a sales gimmick to sell t-shirts for $100 each.

Months later they sold a total of 18 shirts.

Compare this to Threadless.com who can sell 100k of a single design, offer 100s of designs at a time, and build a community around potential designs... and still have a small boutique profile.

Finally, it's really uncool when a company doesn't have enough faith in it's product to actually stock the product.

To finish on a positive note, I like the name. It's funny. I also suggest:

\- Print & sell the shirts at cost + shipping. \- Keep up the excellent blog & artist profiles. \- Create a community voting page wherein if enough people pledge to buy, you print.

<comment><AUTHOR> "Print & sell the shirts at cost + shipping." What the hell kind of a business model is that? (Hint: there's no profit.)

"Keep up the excellent blog & artist profiles." Thanks for the compliment, we'll try.

"Create a community voting page wherein if enough people pledge to buy, you print." That's a good idea, and it's what Threadless does. It's feature-bloat we've discussed for the future.

</comment></comment></comment><comment><USER27> _Ships: August 7th, 2008_

Why so long?

<comment><AUTHOR> We send in our print orders at the end of the month. This is by far the weakest link in our business model.

<comment><USER4> How much would it cost to just pre-print 100 of them? You could always do an end of the year grab-bag of any that didn't sell (like woot.com's woot-offs).

You'd probably not come out ahead on all designs, but I'm sure people paying $100 for the shirt would love to have it asap.

<comment><USER21> Then no one could choose a size. It's a tough printing job any way you slice it. Perhaps doing it in house would be a little faster, but that takes a lot of time and money.

</comment></comment></comment></comment><comment><USER28> love it. Let us know how many of the 'above market' shirts you sell. I'd be very impressed if you can get enough people to buy all of the ones above $45.

And I'm a big fan of the name as well. Note that you have more comments here than in most posts.

</comment><comment><USER29> seriously, i had to think twice (nsfw .. when I saw the url).. please change it.

</comment><comment><USER30> Fail.</comment>


New Rust runtime turned on. What next? - <AUTHOR> https://mail.mozilla.org/pipermail/rust-dev/2013-August/005158.html

<comment><USER2> Excerpt from Graydon's (BDFL) reply:

      > Despite all these caveats I have a very strong sense that writing the
      > runtime in Rust will go a long way to validate Rust in the domains it's
      > aiming for: concurrent and systems programming. Even in the task
      > scheduler, where there's quite a bit of unsafe code, the shared-nothing
      > nature of unique types forces you to consciously break the type system
      > to share memory, and that seems to go a long way to making parallel
      > programming easier to reason about.

      Yes, even just reading it seems much clearer since the mutability,
      lifetime and ownership of each value and reference is spelled out, not
      just "some Foo* that you have to remember special validity rules about".
      It's noticeably easier to reason about. Really interesting!

When Rust matures (and this dogfooding-via-self-bootstrap is going to accelerate its maturation) it's going to be seriously revolutionary for, for example, modern multi-core video game development. Really excited.

<comment><USER3> I, too, think Rust is going to be revolutionary in the video game industry. Were I a game programmer I would start learning now. In two years at least 51% of all new video game code will be in Rust.

<comment><AUTHOR> I think you may be overestimating the pace of change. C++ is quite entrenched for industrial-strength game projects. The network effect is strong, the tooling is mature, and the projects are largely driven by C++ experts. Even if we see Rust 1.0 by the end of the year, it will take a lot of time for that kind of change to occur in the industry, if it ever does.

I think you're much more likely to see 51% of new game code written in C# for Unity. I think the median game budget is shrinking. More and more games are being made as small projects by small teams. Steam greenlight, kickstarter, humble bundle, and other avenues are enabling curation and funding of smaller games. Unity is far more suited for this kind of development than C++. If you look at smaller studios' job listings, a lot of them prefer experience with Unity. The trend is in full swing at this point.

I have no sources to site for the above information. Take it with a grain of salt.

<comment><USER4> In addition to your point, I'd like to stress that it is the game engines that are C++. Many engines provide a higher level interface for developers actually make games. You probably won't hook the game developers on Rust. If you want to pitch Rust to the engine guys, you're going to be battling against their toolchains that have been developed for decades and have some of the best static analysis tools under the sun. Not to mention, you'll also be battling against the traction of their current codebase, which they'll probably hesitant to rewrite in a new language. From a business perspective, I don't think management in some of the larger companies would let that decision fly, either.

<comment><USER5> This is a specific instance of a general argument that applies to all new languages: there is an existing infrastructure and people won't want to switch. Yet new languages are arriving at a pace faster than ever on the server side, despite massive investment in server stacks for existing languages.

If Rust succeeds as a language suitable for games and gains traction there (and that is of course an if), I think the truth will be in the middle: there will be a huge amount of code still written in C++, and that will continue to be maintained and work. But new code might be written in Rust. Rust is designed to integrate well with C and C++ code, so mixed projects are quite feasible: in fact, both rustc (because of LLVM) and Servo (because of SpiderMonkey) are such mixed projects.

<comment><USER4> Eventually something will indeed replace C++ for gaming. You can look at the emergence of all the new server side languages in two ways: either one will "come out on top" as something akin to what C/C++ is now or there will be much more specialization in what we now call "systems programming". If the future is the latter, engines might always be done in C/C++ simply because it gives them the ability to easily make bindings to the majority of languages (ie Rust). I believe this will be the middle ground of which you speak. It really would've been cooler if there was more incentive to build languages specially for games, especially since the domain has some interesting demands such as the close coordination with GPUs and memory allocation in general.

<comment><USER6>
      > engines might always be done in C/C++ simply because it
      > gives them the ability to easily make bindings to the
      > majority of languages

Just like C++, it will be possible to expose a C-compatible interface to Rust code that will allow any language that can call into C to call into a library written in Rust. See [http://brson.github.io/2013/03/10/embedding-rust-in- ruby/](http://brson.github.io/2013/03/10/embedding-rust-in-ruby/) for a rather dated proof-of-concept, or [http://bluishcoder.co.nz/2013/08/08/linking_and_calling_rust...](http://bluishcoder.co.nz/2013/08/08/linking_and_calling_rust_functions_from_c.html) for something more recent.

<comment><USER4> Didn't realize Rust had support for this. At the end of your recent example, it pretty much says doing so sacrifices the runtime entirely. I know Go doesn't support calling from C for reasons similar to this. Where does further development on this functionality sit on the priorities list for Rust?

<comment><USER5> You don't actually have to sacrifice the runtime entirely anymore; since the runtime is written in Rust you can just start it manually if you want. Making this smoother is a priority. (Brian mentions this in the email, regarding #[start].)

<comment><USER4> That's very cool. I definitely need to check out things out. Thanks everyone for the interesting discussion.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I haven't written anything in Rust yet but one of its most interesting aspects is its support for linear types. I expect that will share the same kind of perspective enriching attribute of learning logic, array or functional paradigms. While it's certainly not the first language to support substructural types, it looks the only one with a decent chance of developing a meaningful ecosystem.

 _The linear logic of J.-Y. Girard suggests a new type system for functional languages, one which supports operations that ``change the world ''. Values belonging to a linear type must be used exactly once: like the world, they cannot be duplicated or destroyed. Such values require no reference counting or garbage collection, and safely admit destructive array update_

[http://homepages.inf.ed.ac.uk/wadler/topics/linear- logic.htm...](http://homepages.inf.ed.ac.uk/wadler/topics/linear-logic.html)

An interesting bit of trivia about linear types is they are in some sense the closest thing to programming a quantum computer this side of qubits (where no cloning dictates qubit variables can only be used once in a function term).

<comment><USER8> I believe Clean also uses linear types.

</comment></comment><comment><USER9> Here's a properly formatted version of the link: [https://gist.github.com/roryokane/6189765](https://gist.github.com/roryokane/6189765)

(The original message is in Markdown; I just put it in a Gist where it would be rendered as such.)

</comment><comment><USER10> I am no language designer, but I wonder why use libuv and have to worry about implementing a scheduler and all the other components of a run time loop in your language when the kernel will do this for you. I think it would make more sense to provide a better interface to existing kernel structures then leverage a third party library and then re implement kernel functions around it ( I am mainly thinking about the paragraph about the current scheduler implementation and how basic it is )

<comment><USER11> What if someone wants to write a kernel with Rust? This might be a very naive question taking into account my ignorance of language and kernel design.

<comment><USER12> Look at [https://github.com/pcwalton/zero.rs](https://github.com/pcwalton/zero.rs) . It's not very far yet, but it proves that it is viable to run Rust without a runtime.

<comment><USER6> I actually don't think we even need zero.rs anymore. Its purpose was to provide noop implementations for all the "lang items" that the compiler expects to find in the stdlib. However, post-0.7 the compiler no longer requires a lang item to be provided unless you actually use a feature that requires it.

For an example, see the code at [https://github.com/doublec/rust-from-c- example](https://github.com/doublec/rust-from-c-example) , which is fully runtimeless.

<comment><USER13> zero.rs (or something like it) is still required, because there's certain lang items that are required/useful (e.g. #[start], destructors, failure, vector bounds checks).

(e.g. [https://github.com/huonw/rust- malloc/blob/master/zero.rs](https://github.com/huonw/rust- malloc/blob/master/zero.rs))

</comment></comment></comment></comment></comment><comment><USER14> > it does implement TCP and UDP on both IPv4 and IPv6

I thought this sort of thing was usually handled by the OS. Can you even get raw sockets on most systems? Or by "implemented TCP", do they mean they can give you back a Unix TCP/UDP socket?

<comment><USER5> By "implement" it means "integrated into the scheduler".

</comment></comment><comment><USER15> I really wish I had space in my TODO list to start a project in Rust. I don't think there's another dev tool I'm more excited about.

<comment><USER16> I'm feeling the same way, Rust looks fantastic. There are a few things in the language I'm not huge fan of, I don't like overly subtle things in a language. For example, some of the functionality around semi colons seem like they will be a common source of stupid programmer bugs that are difficult to track down. Perhaps the compiler will catch that stuff.

Go kinda ruined other languages for me with multiple return values, its something I miss when working in every other language now. And reading through the docs I keep hoping I would stumble across that, though that would create a lot of problems when interfacing with C. Type inference is a huge win, standard libraries looks solid, love the potential around marking variables as mutable, and any language that has no null values makes me happy.

Overall, I wish I had more time too.

<comment><USER17> Multiple return values is possible with n-tuples.

      fn addsub(a: int, b: int) -> (int, int) {
          (a + b, a - b)
      }

      ...

      let (a, b) = addsub(32, 44);

<comment><USER6> Indeed, the behavior described here is just a consequence of allowing pattern- matching when assigning variables. Say you wanted to do the Python trick of swapping two values:

        let a = 1;
        let b = 9;
        let (b, a) = (a, b);
        printf!("a: %i, b: %i", a, b);  // a: 9, b: 1

...or say you just wanted to grab a single item out of a tuple:

        let x = (1, 2);
        let (_, y) = x;  // the underscore is the pattern for "ignore this"
        printf!("y: %i", y);  // y: 2

<comment><USER18> Just for comparison:

      b, a = a, b

is actually valid code in Lua (and works as expected).

Grabbing only one value looks like this

      _, y = returnsTwoValues() -- grab only the second

      y = returnsTwoValues() -- grab only the first

<comment><USER19> This works similarly in Ruby:

        a,_ = two_values()
        _,b = two_values()

</comment></comment></comment></comment></comment></comment><comment><USER20> > tasks are now migrated across threads by the scheduler, whereas in the old > scheduler a single task was always run in the same thread.

Is that done by having a single task queue with multiple schedulers, or through work-stealing by schedulers with no ready tasks in their queue?

Would this open the possibility of configuring schedulers (including individually)? E.g. ensuring a given task stays pinned on a specific scheduler, and said scheduler accepts no more task, that kind of things?

<comment><USER21> > Would this open the possibility of configuring schedulers ...

I've been assured that it's the plan. I have no idea how much of it works right now though. I've only done one build with the new rt and it doesn't involve tasks.

<comment><USER20> > I've been assured that it's the plan.

Excellent [twirls mustache]

> I have no idea how much of it works right now though.

Yeah I don't expect it to work at this point, but knowing it's one of the end- goals is good.

</comment></comment></comment><comment><USER22> So they are still using libuv after the rewrite?

<comment><USER5> Yes (as the Windows IOCP support is invaluable). But we will probably need to add threading support to it.

<comment><USER23> What do you mean add threading support? Last time I used libev (I thought libuv was just libev plus Windows) it allowed creating multiple loops for use in multiple threads just fine. Do you mean adding the ability to move file descriptors across threads into another loop?

<comment><USER24> As a sidenote, libuv is not using libev anymore

[https://github.com/joyent/libuv/issues/485](https://github.com/joyent/libuv/issues/485)

<comment><USER23> Interesting, thanks!

</comment></comment></comment></comment></comment><comment><USER25> I tried to give Rust a try to build some stuff but my project required HTTP and there's no easy SSL solution in place right now. Hope it comes along. I don't have time to contribute much otherwise I would.

<comment><USER6> To quote Brian Anderson (the OP), one of the next steps in the I/O rewrite is "Implementing a new HTTP client on top of rt::io, possibly using Chris Morgan's HTTP code, for use in Servo". So hopefully within the year we'll see the beginnings of a robust HTTP lib that's worthy of a Mozilla-brand browser engine.

<comment><USER26> Note that that is HTTP; SSL will be likely to come quite a bit further down the track.</comment></comment></comment>


Ubisoft is using AI to catch bugs in games before devs make them - <AUTHOR> http://www.wired.co.uk/article/ubisoft-commit-assist-ai <comment><USER2> The title is missleading!

The code is checked when it is pushed to the main repository... The code and the bug already exists, the developer is responsible for that.

Also, if you look at the video from Youtube, you can see that 60% + 30% = 100% : [https://www.youtube.com/watch?v=I5C4FUvDyCc&t=50s](https://www.youtube.com/watch?v=I5C4FUvDyCc&t=50s)

I was hoping for some kind of godlike AI to help catching bugs before I write my code, now I'm disappointed...

<comment><USER3> > Also, if you look at the video from Youtube, you can see that 60% + 30% = > 100%

They said it catches 60% of bugs and has 30% false alarms. Those are different measurements, the sum of true positives and false positives doesn't need to add up to 100%.

<comment><USER4> So you're saying that 10% of time it says there's no bug? ;)

<comment><USER5> > So you're saying that 10% of time it says there's no bug? ;)

No. Recall the wording: "They said it catches 60% of bugs and has 30% false alarms. Those are different measurements, the sum of true positives and false positives doesn't need to add up to 100%."

Hence (nitpicking perhaps): 100%-60%=40% of the bugs (their estimation) are not caught (false negatives) The rate of false positives is 30%, that is if a particular code excerpt has no bugs it might be tagged as buggy.

Thus the final error rate I guess is (actual probability of a bug) _60% + (1- (actual probability of a bug))_ 30%.

</comment></comment></comment></comment><comment><USER6> > When a player encounters a non-player character in Far Cry 5, two systems > are at work: trust and morale. If you raise your weapon at someone you've > never met before, they will react with distrust or fear, warning you to > lower your gun. If the NPC recognises a lingering threat from you, it will > launch an attack of its own, fearing for its own 'life'. When facing a group > of enemies, as you pick off members of a gang, individual foes may realise > they're outclassed and lose their thirst for combat, and attempt to flee as > they sees their 'friends' taken out. Elsewhere, animal companions will > respond to player activity, cowing close to the ground unprompted when you > crouch into stealth, for instance. It's the sort of work that adds depth and > realism to the world.

Fascinating. Meanwhile, watch Fred (a friendly AI in Far Cry 5) fly the player directly over a known enemy outpost, crash the helicopter, then later crouch immediately in front of the player when the player is trying to stalk the outpost - to the point where the weakness of the AI becomes the talking main point of the video:

[https://youtu.be/iauG9h6N-PQ?t=377](https://youtu.be/iauG9h6N-PQ?t=377)

Totally agreed one day this will make a difference, but in the meantime: game AI is still game AI.

<comment><USER7> Programmed at 5am by some poor soul on crunch mode, after an 80-hour work week and 3 hours of sleep.

Whenever a game has an absolutely heinous component to it, it's clear that that particular bit was not playtested.

<comment><USER6> It seems to contrast the messaging from Ubisoft though. Why doesn't the NPC fear the cult symbol all over the outpost? Why don't they fear the line of sight from the player's weapon?

</comment></comment></comment><comment><USER8> >> "The fact that when you show a programmer statistics that say 'hey, apparently you're making a bug!', you want him or her [to realise] that it's a tool to help and go faster.

To be fair, if I get a message along the lines of "There's a 0.345 chance that this line will cause a bug", I'll want to know _why_ the line will lead to a bug- which is going to be a lot harder to do than just throw up a statisic.

</comment><comment><USER9> If only there was some sort of way to statically encode and check your logic...oh wait.</comment>


Women call ambulance for husbands with heart attacks but not for themselves - <AUTHOR> https://www.sciencedaily.com/releases/2019/03/190303123652.htm <comment><USER2> A less politically motivated study would have also studied whether men were more likely to call an ambulance for their wives than for themselves.</comment>


The mystery of Zach, New Zealand's all-too-miraculous medical AI - <AUTHOR> https://thespinoff.co.nz/the-best-of/31-12-2018/summer-reissue-the-mystery-of-zach-new-zealands-all-too-miraculous-medical-ai/ <comment><USER2> Looks like this is from 2018, and has had at least one follow up: [https://thespinoff.co.nz/the-best-of/09-03-2018/the- mystery-...](https://thespinoff.co.nz/the-best-of/09-03-2018/the-mystery-of- zach-the-miracle-ai-continued-it-all-just-gets-terribler/)

It's an interesting story though - thanks for linking it! Not... extraordinarily surprising, but interesting.</comment>


Ask HN: Algorithm for Calculating Contour of Polygons - <AUTHOR> This is something that's central to PCB manufacture and surface mount soldering.
Given:

  +<comment>+
  |      |
  |     /|</comment><comment>--+
  |    / |        |
  |    | |        |
  |    \ |        |
  |     \|</comment><comment>--+
  |      |
  +</comment><comment>+
 The output would be:

  +</comment><comment>+
  |      |
  |      +</comment><comment>--+
  |               |
  |               |
  |               |
  |      +</comment><comment>--+
  |      |
  +</comment><comment>+
 Where in general we can have lines, circles, ovals, and so on.
Now there are algorithms for extracting the contour if the input shapes are limited to rectangles. The goal is to generalize to arbitrary shapes.
Quadtrees + intersection + inside/outside polygon computation could help. I've also read about the marching squares algo but that looks like it works on bit maps. </comment><comment><USER2> Does not the flood fill algorithm not work with this situation ?? [https://en.wikipedia.org/wiki/Flood_fill](https://en.wikipedia.org/wiki/Flood_fill)

Otherwise there is [https://sourceforge.net/projects/polyclipping/](https://sourceforge.net/projects/polyclipping/)</comment>


"Negative Result: Reading Kernel Memory from User Mode" (Intel CPU Bug) - <AUTHOR> https://cyber.wtf/2017/07/28/negative-result-reading-kernel-memory-from-user-mode/# <comment><USER2> For those that may be confused, I was also confused by the author's "negative result" comments at the top, but he elaborates near the end..

> So at this point my experiment is failed and thus the negative result.

> While I did set out to read kernel mode without privileges and that produced > a negative result, I do feel like I opened a Pandora's box. The thing is > there was two positive results in my tests. The first is that Intel's > implementation of Tomasulo's algorithm is not side channel safe. > Consequently we have access to results of speculative execution despite the > results never being committed. Secondly, my results demonstrate that > speculative execution does indeed continue despite violations of the > isolation between kernel mode and user mode.

</comment><comment><USER3> This is probably the most enlightening thing I've ever read about modern CPU microarchitecture. Reading this, it becomes apparent how hard it is to prevent side-channel information leaks in general. Anyone who read this back in July could have concluded that Intel CPUs are possibly vulnerable to some side- channel attack, but the author just didn't figure out how to exploit the leak he found.

<comment><USER4> I remember reading about CPU side-channel attacks over a year ago but nobody really talked about it: [https://github.com/felixwilhelm/mario_baslr](https://github.com/felixwilhelm/mario_baslr)

</comment></comment><comment><USER5> If this is "the intel bug" that is about to be announced right now, then I think it's remarkable that it's been sitting around in this blog post from July 2017?

<comment><USER6> This blog post could not find an exploit, but proved enough that there could be. The theory is that the KAISER researchers took this idea and found a way to exploit it.

</comment></comment><comment><USER7> So, Intel prefetches restricted data on a request by an unprivileged user, "conceals" the unauthorized but nevertheless prefetched data by nulling it out, but the unprivileged user can infer sensitive information about what's "behind the curtain" by timing the proceeding instructions?

</comment><comment><USER8> This was an interesting read.</comment>


Uber rebranding - <AUTHOR> https://www.adweek.com/brand-marketing/get-an-exclusive-look-at-ubers-new-brand-revamp/ <comment><USER2> Not exactly inspiring, but could be worse.</comment>


Three Months with Sublime Text 2 - <AUTHOR> http://steverandytantra.com/thoughts/three-months-with-sublime-text-2 Sublime Text 2 is a text editor with great responsiveness, flexibility and accuracy for coding. After three months of using it, I discover many amazing features and ways to make it even better. <comment><USER2> I read feature lists of editors like this and wonder why people just don't use a good IDE like IntelliJ. It does everything in this list and a lot more with minimal configuration.

<comment><USER3> It is hard to pin down the author's bias, or yours, without understanding what kind of development the author has done. I look at this as more of a Text Mate 2 vs Sublime Text 2 post.

<comment><USER4> Thanks for explaining this, b/c editors I use (albeit inside IDEs) all do what the OP is drooling about. I figured he had to be comparing Sub 2 with some other editor that he doesn't specify.

</comment></comment></comment><comment><USER5> The most consistent pushback against ST2 is how ugly and non-native folk find it. Lots of us get past that and really give it a chance, but I can't help but hope that Jon reads this and considers spending a couple weeks/months purely on styling, possibly with the help of a specialist.

It doesn't improve the editor's functionality, but sales and adoption wise I think it would go a long way. Especially on the Mac.

Specifically:

* The file browser is really odd. Very non-native. No in-line name updates. Odd sliding around of items coming in and out. No drag and drop. It works, but it is death by a thousand paper cuts.

* Find results tab - also really odd. It's a real buffer, you can edit text in it - but it doesn't change the source material. Just the result tab. Very odd.

* Split windows are great, but the grouping in the sidebar is odd. What's group 1 vs group 2 vs group 3, etc.

* The color scheme is ugly. Very few text editors on Mac default to light text on a dark background. The dark chrome tabs are odd.

* While I love how flexible the configuration settings are, rooting around in a .js file is kind of a pain in the ass. Some basic scaffolding that throws up a configuration dialog [that looks native!] would be great. If for option discovery, if nothing else!

* If you have split panes active, there is no way to quickly tell which tab has the cursor. Each split has a set of inactive tabs and a single active tab. It's hard to figure out exactly which tab has the cursor if you're flipping back and forth from a terminal.

<comment><USER6> Totally disagree on the config point. In fact I think the system should be made more simple, so you can keep your editor settings in a dotfile repo. It's not so simple to do this when the settings files themselves are buried in a packages folder, and you have to take care not to accidentally commit your license along with it all.

Hell, even just having the option to parse settings and load plugins from a local dotfile, like vim or emacs, would be nice. The rationale for wanting this is that the config is just text, and is something you'll progressively hone over time (esp. with keybindings).

Split windows would be much better if you could mix and match the size, or have a non-standard layout.

One of ST's real benefits could be its position as a beginner's introduction to vim and/or emacs. It's already immediately more accessible.

<comment><USER5> Agree with you. Just mean I'd like UI to wrap what is there.

</comment></comment></comment><comment><USER7> Does anyone else feel like if we spent all the time masterbating about our text editor writing software instead in something that just works the world would have better software? The amount of text editor posts I see on HN lately is astonishing.

The less emphasis we put on tools the more we can rely on skill. We should all just use notepad for a year and see what all that extra time produces.

<comment><USER8> You learn vim / emacs very well once, you use them for the rest of your life. It's time well invested.

<comment><USER7> I use vim. That's kinda my point when it comes to see fancy GUI editors. Even with vim, here are the only commands I use regularly: n, b, dw, dd, u, w, :/, home, end, and :wq.

Coupled with Grep -r, I literally use nothing else. My productivity is not bound by how fast I can use vim, but how much effort it takes me to understand the real problem I'm trying to solve.

If everyone else worries about how they can jump around code more than actually decomposing the true motivation behind their work, they are either unbounded geniuses, or far more likely, writing a lot of code that could be completely avoided. All of these bells and whistles distracts from the problem, and focuses on code instead of problem solving. This worries me. Especially when at the end of the day all we are talking about is how fast we can introduce bugs into the code base or writing code that doesn't help the customer directly.

</comment></comment></comment><comment><USER9> I tried Sublime and it works well, but RubyMine still won me over for Ruby because it finally feels polished and it's fast thanks to new hardware with plenty of RAM & CPU.

For text editing, Sublime just couldn't match vim & emacs because they're widely available on remote servers via SSH.

<comment><USER10> At high risk of sounding like a broken record, give sshfs a try.

</comment></comment><comment><USER11> It's quite funny that he complains about the icon (quite bad, I agree) that was made by the Iconfactory, and then links to a replacement, again, by the Iconfactory.

Makes me wonder, why SL2 icon is so bad. Maybe the author had some unreasonable requests to the obviously talented designers?

<comment><USER12> I took a go at a replacement icon found here <https://github.com/tw12lve/sublimetext2-icons>

Feel free to submit your own as a pull request

<comment><USER13> Maybe it's just me, but it almost seems like the 'S' is bigger towards the top, contrary to the perspective.

</comment></comment></comment><comment><USER14> having started my programming career with web stuff, i just cant stand the full blown IDEs because of their slowness and bloatedness. sublime text feels like having my cake and eating it too. it has most of the required features but its still amazingly fast and extendable.

</comment><comment><USER15> For those wondering, the theme / style he's using to make the tabs, side bar, and status bar pretty can be found here: <https://github.com/buymeasoda/soda- theme>

</comment><comment><USER16> ST2 is a great text editor (I like vim more) - and a text editor is what it should be compared to.

Intellij/RubyMine are slow to start (initially) because they are indexing and giving you some of the most powerful refactoring support you could ask for. I sincerely doubt ST2 could will ever match this functionality.

They can be bloated but so can Emacs with all its plugins and so can ST2 by the time it starts to resemble an IDE in features.

</comment><comment><USER17> I feel like I am the only person still using UltraEdit these days. It has always done me well as an advanced text editor.

</comment><comment><USER18> I have been using ST2 for awhile and overall its pretty good. Although I still find myself opening Vim/Textmate a lot.

It may be archaic but my biggest issue is not being able to print from it. Along with coding I usually use my editor of choice for random things and sometimes this means I have to print something. No print option in ST2 is a slight annoyance.

<comment><USER19> I agree. When I start feeling stressed out about some code, I usually like to print it out and walk away from my computer to review it. Sitting outside with a copy of code that I cannot edit is very helpful sometimes.

Right now, I often will minimize (metaphorically) my ST2 editor; open up a copy of my code in gEdit; print it out; close gEdit; and, maximize ST2. That's not cool.

<comment><USER20> There is Print to Html plugin, works pretty good:

<https://github.com/joelpt/sublimetext-print-to-html>

</comment></comment></comment><comment><USER21> >By default, the scope of autocomplete is only for the current file. "All Autocomplete Package" extends the scope to all open files in the current window.

Slightly buggy (alas, so many Sublime packages are), but even so, I'm really glad to see a plugin that tackles my only major disappointment in ST2.

<comment><AUTHOR> Can you point out what it is? So far I'm happy with it.

<comment><USER21> In my brief testing with some CoffeeScript files, I had a few autocomplete suggestions that got the last few letters clipped off. Not a big deal, but a little odd.

</comment></comment></comment><comment><USER22> I really liked Sublime Text, but each time I try to search for some word in 20MB log file it reminds me how slow and unresponsive it is compared to Emacs. The closest to my ideal editor would be Emacs with visual appearance of ST2.

<comment><USER23> Hm, that's pretty odd, I found its handling of large files to be pretty fast for a GUI editor, and "slow and unresponsive" accurately describes the opposite of why I like Sublime.

Especially since it's always non-blocking, e.g. when you load a large file, a progress bar appears as it loads into memory but the rest of the editor continues to work without a hiccup. Quite nice.

Besides, it wasn't designed to search log files. That's what grep is for.

<comment><USER6> The speed of ST's find function never fails to take me by surprise. Even with thousands of files it'll never take more than a second. In fact, it's sometimes only slow when it _can't_ find something.

</comment></comment></comment><comment><USER24> I keep Sublime Text 2 as my generic text editor, but I still keep coming back to Komodo IDE (6, on Linux) for any code editing.

</comment><comment><USER25> I gave ST2 about three months too, but I haven't found enough to keep me. I've moved back to Macvim...

<comment><AUTHOR> Anybody tried ST2 and moved back to TextMate?

<comment><USER26> That would be me. The one feature it misses is multiple line editing by holding down option and dragging.

Though the op's tips make me want to has another look.

Cheers

Marcus

<comment><AUTHOR> You can do that with ST2.

<comment><USER23> To be fair, you can't drag a box selection like you can in TM.

However, Sublime's multiple-cursor support is far superior otherwise.</comment></comment></comment></comment></comment>


Show HN: A Fully Responsive Timesheet, Expense and Invoicing Platform - <AUTHOR> https://www.avaza.com/online-invoicing-software/?from=HN

<comment><USER2> Why are you overwriting my browser's scroll behaviour? It's really annoying and I don't care how pretty that scrollbar looks.

<comment><AUTHOR> Thanks for the feedback dewey.

The public sales site for the app was using a popular wordpress theme with that style. The styled scrollbar has now been removed in the interest of the more familiar scroll experience. Tim, Co-founder Avaza

<comment><USER2> Thanks for fixing that so quickly! Sorry if that came across as a bit harsh earlier but a lot of new sites start messing with this default behaviour (probably because it's part of some framework/theme) and it's a real annoyance.</comment></comment></comment>


Why Kids Love Garbage Trucks - <AUTHOR> https://www.theatlantic.com/family/archive/2019/12/why-kids-love-garbage-trucks/603193/ <comment><USER2> This didn't address my favorite theory: that (some) kids are programmed to learn as much as they can about the nearby megafauna, and in this world the closest approximation is these big garbage/fire/construction vehicles.

<comment><USER3> There's also a similar theory to explain why boys are more interested in cars than girls (which my kids have proven convincingly, albeit with a low sample size): boys, as future hunters, are attracted to preys that move, hence, in the modern environment, to balls and cars.

<comment><USER4> Are you perhaps discounting the societal influences pushing your kids towards their respective interests?

If they view any amount of advertising or interact with other children who do, for example, they could already have ideas about what is "appropriate" for them to like.

<comment><USER5> My girl was 9months when sh started acrively pushing for bracelets, fancy hats, etc. I took her to a bike shop, an she immediately went for the pink Helmet with stars.

We dressed her in neutral cloths (second hand), we dont have a TV. Her mother does not wear juwlery or makeup. To us this appears innate.

<comment><USER6> Pink used to be a boy's color.

I don't think your child is interested in jewellery and fancy hats for the same reason as a grown up. My children of both genders enjoy that stuff too, to the point where my none of my wife's jewellery is in one piece.

One thing I've noticed is that I can't look at them without a cultural confirmation bias. So I've completely lost faith that anyone can judge these things without a stringent experimental method.

<comment><USER7> >Pink used to be a boy's color. //

Which shows nothing. The natural allure might be for girls [in general] to go with pink, and the use of pink for boys (is/was it something to do with hunting?) might have been pure social conditioning.

Aside: Are their examples of paintings showing boys in pink? The only historical "pink" I know of is "hunting pinks" which are bright-red.

I imagine we're only talking "aristocratic boys", as red dyes were expensive and most boys through history will have had natural coloured clothing, I imagine.

My eldest boy used to adore his pink handbag, fwiw. That's a very limited data point, however.

Edit: found [https://en.m.wikipedia.org/wiki/List_of_historical_sources_f...](https://en.m.wikipedia.org/wiki/List_of_historical_sources_for_pink_and_blue_as_gender_signifiers) it does strike me these are selections to prove the point, ie poor statistics. Also there might be errors (blue for a boy, and pink for a boy - sounds most likely to be an error). Also that a lot of the pink for a boy quotes are for babies; seems like what mother's choose for babies is different to what children/juveniles/adults will choose for themselves.

Interesting though.

<comment><USER8> Nope. Historically, pink was considered a masculine color, because it's a shade of red. It was like this for centuries, until the 20th century in western nations.

<comment><USER7> >because it's a shade of red. //

Not quite sure what your nope refers to, but you release that's not a reason. All you've done is shift the question from "why is pink for boys" to "why is red for boys" and still haven't countered any of my observations, particularly that it might be "pink" was for boys because of social conditioning in the past.

<comment><USER8> I'm not sure what you're getting at. I'm just pointing out that this whole thing is entirely cultural, and that it's changed very, very recently (within the last century or so). There's no underlying biological reason for pink to appeal to little girls; it's just a cultural artifact. If little girls were dressed in lime green all the time from birth and the culture militantly pushed the idea that "lime green is only for girls!", then little girls would want lime green toys and clothes.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> This is fun. I grew up on the other side of the world (albeit a "western" culture), and was also amazed by garbage trucks from the day I remember. The whole lift/squash mechanism, their bright orange color (in our parts), the ease by which they lift the containers, the colored control lights/buttons on the side which the cleaners use to operate the lift, the blinkers. And made funny noises. It was something straight out of the toy shop, in full size! I wanted to be a waste collector when I grow up. My parents were keen to make fun of me because of that once I enrolled in PhD studies.

Same goes for fire trucks, I had multiple fire engine toys. But a fire truck is a rare thing to see in action in person, so I guess that's why it was easier to relate to the loud trashcan on wheels :-) .

<comment><USER10> I'm a full grown adult and I'm working on self-driving cars. For a special project we had to put amber flashing lights on one. Just like the ones they had on garbage trucks where I have grown up. Totally unreasonably, but I was giddy with excitement when I first turned the lights on. That was probably the closest I will ever get to my childhood dream of becoming a garbage truck driver.

<comment><USER11> I'm just throwing this out there but you can buy a used garbage truck online right now if you wanted to. Some start at ~40k.

</comment></comment></comment><comment><USER12> To add my pet theory, it's a attractive to kids because it's an immediately understandable job. "Pick up all the rubbish, put it in the truck, press the button, move on". You can imagine a kid watching the whole routine and feeling like they understand every part of it, the wider context and the minutiae.

The classic "what do you want to be when you grow up" responses (Firefighter, Police, Doctor, Chef, etc.) all have that property of being immediately relatable.

<comment><USER13> That theory does a great job explaining why so many kids say "Astronaut" and so few say "Actuary".

</comment></comment><comment><USER14> I actually wanted to be a garbage truck driver when I was little. I think it was the power to crush stuff that really stirred my imagination. The smell never really bothered me much and I figured that you would get used to it anyway. The dirty never bother me much either; I was constantly playing in our neighbors backyard that we called the dirt-hole. Yup, garbage man was almost the perfect job.

Instead, my love for computers (ahhh, VIC-20) grew and I went to college to learn more. I really love what I do but if things went sideways I could see myself being a garbage man.

<comment><USER15> I've been thinking about being a garbage man (not the truck driver) for one day a week.

Physical work, outside, and it seems your mind could subconsciously work on the big problems in the rest of your life while doing it.

<comment><USER16> Everybody hates a tourist.

<comment><USER17> I think if you pull your weight, you would earn some measure of respect.

<comment><USER18> Yeah, I'm pretty sure most folks doing "real" work don't care who you are as long as you show up on time, get shit done, and aren't (the wrong kind of) an asshole. And the last part's negotiable.

</comment></comment></comment></comment></comment><comment><USER19> In the words of my two year old, "woah! It's so big!"

I've learned not to over-analyze and trust what he says.

<comment><USER20> You'll notice that kids don't get as excited about other things that are just as big, or bigger, though. For example, my son can barely even be bothered to look up at 18 wheelers. He sees them as common and boring.

But a garbage truck? It's loud and interesting. It _does_ stuff with its tusks. Honestly, garbage trucks are still fascinating even to me, as an adult.

<comment><USER21> There is also the rarity. Garbage comes once a week. He may not even see it every week. It is true that he gets to see it "in action" so that helps. He probably sees 100 18 wheelers everyday. They are just different cars and nothing special.

<comment><USER20> Very true! They are rare, and also loud so they draw attention.

</comment></comment></comment></comment><comment><USER22> Time to post one of my favourite internet images:

[https://hips.hearstapps.com/cos.h-cdn.co/assets/15/13/980x11...](https://hips.hearstapps.com/cos.h-cdn.co/assets/15/13/980x1102/gallery-1427213382-garbage- fb.jpg)

<comment><USER23> That just made my day.

</comment></comment><comment><USER24> I thought that getting to ride on the outside of a vehicle was the coolest thing ever.

<comment><USER23> I hadn't thought about this since I was a kid, but I loved watching the garbage truck. Especially when they used the compactor after emptying the cans. I guess I was lucky that they came to our house during the day because everywhere I've lived since a kid the trash pickup has been extremely early. I don't know if my kids have ever seen it.

</comment></comment><comment><USER25> When I was younger I wanted to be a garbage man too. I always made sure to be outside when they came by and made sure I was wearing my little work boots. My nephew is really into them right now and loves being outside when they come by making sure they know he is there.

>But most of all, she loves waiting for the truck driver to stop and say hi

I think the last sentence of the article really says a lot, this is what stuck with me from my experience. The garbage men/women always waved back and acknowledged that I was there. It's an interaction that kids don't always get to experience while watching something super cool happen right out front of their house.

</comment><comment><USER26> When I was a young boy I was obsessed with trucks. My father was friendly with a local rigger and we visited his yard. It was heaven with trucks, cranes, and machinery all over. But the centerpiece was his heavy hauler Peterbilt with a large multi axle lowboy trailer. He put me in the driver's seat and I vividly remember that arched "corvette" dash covered in shiny polished gauges and switches and the high up view. Felt like I was sitting atop a building. I wanted to be a trucker! Well it don't quite work out that way but still to this day I have a great appreciation for them and went to a few antique truck shows. I even bought a 1961 MAck B61. It's a slow yet fun resto hobby. Everything is massive and takes considerable effort to manipulate.

</comment><comment><USER27> Growing up in Toronto, I used to watch the show Mighty Machines[0]. I loved it - it would show construction vehicles and airplanes, and I ogled at it for hours. I can still remember the theme song. Makes me so very happy right now remembering it.

[0] [https://en.wikipedia.org/wiki/Mighty_Machines](https://en.wikipedia.org/wiki/Mighty_Machines)

</comment><comment><USER28> Loved large wheeled vehicles when I was a child. Made buses out of toothpaste cartons and toothpicks and buttons with my grandma.

Loved to go by the train station to wave at the train. Pretty sure it's all just that they move and are big machines. Didn't take much. We lived out in the country in a different nation where big garbage trucks didn't exist.

</comment><comment><USER29> I remember the time before Garbage Trucks. Our housing complex had a separate garbage hut with split door. Every month a lorry or horse-driven cart came and men shoveled it empty. It was great fun to watch. Sometimes a rat escaped and there was a competition to kill it. Helsinki City paid good money for rat's tails.

</comment><comment><USER30> When I was a kid, the coolest part of being a garbage collector was that you got to ride on the _outside_ of the truck. They don't do that anymore these days, and garbage trucks don't seem to hold the same attraction for my kids as they did for me.

</comment><comment><USER31> I don't think this is garbage truck specific fascination. Many years ago, I recall reading a story about a father who noticed his kids being glued to the apartment window watching a construction site next door. They were fascinated by the large and loud machines. He built a DVD video business from filming busy construction sites for kids. It was a success. Kids love big loud colorful things that move.

</comment><comment><USER32> I wanted to be a garbage man because the guys ride on the side/outside of the truck. What other reason can there possibly be? :-)

<comment><USER33> The electricity company technical guys sometimes ride on a truck that has (as best as I can describe it) a snake-like elevating chair. That's so impossibly cool.

</comment></comment><comment><USER34> I think part of the excitement is the noise. The screeching of the brakes as the truck pulls up and the crash of the rubbish out of the bin. It's a whole performance for the little ones.

</comment><comment><USER35> Ha, I always thought this was a weird fascination only I had

When I was younger my favorite movies were a set of pseudo-documentaries (that my mom would rent from the library for me) made for kids about mining, recycling, trash collection and a few other things.

I would watch them over and over and loved the parts where they dropped whole cars into the crusher.

I also distinctly remember being fascinated by a part where after collecting recycling they melted down the metal and they just showed a big molten pool of aluminum.

</comment><comment><USER36> When I was a kid, it was all about catching the truck running a compaction cycle. As children of a mechanical engineer, my sister and I both found it fascinating.

</comment><comment><USER37> I loved street sweepers as a kid and would always rush to the window to watch them go across our city street. I loved the idea of taking away trash/dirtyness, something about that simple purpose was cool. It was easy to understand, unlike business or insurance (what my dad did)

<comment><USER38> Same, I never paid any attention to garbage trucks but I was fascinated with street sweepers and similarly fascinated with the spinning brushes at car washes. Still am, and while I don't see street sweepers much anymore I genuinely enjoy going to the car wash and watching the multi-colored swirls of goo being slapped around my windshield by hundreds of little strips of fabric.

</comment></comment><comment><USER39> Folks love large machinery. A garbage truck is large machinery that regularly vistits suburban homes. QED

</comment><comment><USER40> Gave it a quick read, and there seemes to be no mention of garbage trucks that aren't "modern": where there are other men running around carrying heavy trash bags and single-handedly throwing them into the back of the truck

</comment><comment><USER41> As a kid I was fascinated by the garbage truck lifting arm, as well as any other cool mechanism I saw. I'm a robotics engineer now.

</comment><comment><USER42> Then I guess I'm a kid because those trucks are friggin sweet. What more of an explanation do we need?

</comment><comment><USER43> Well they are big and heavy, and they still manage to move...

</comment><comment><USER44> they're big, loud, and the guys on the back don't have to wear their seatbelt. A garbage truck is a kid magnet. Don't overthink it.</comment>


Show HN: Lumin – Animate text highlighting or use highlighting to show progress - <AUTHOR> https://lumin.rocks/ <comment><AUTHOR> I never thought I needed this. But, for a project, the site wants the user to read a specific text on the page while showing progress of a task (upload, etc). So I created a lib out of it. Even without progress, could also be useful to direct attention to an important text on a page. Github: [https://github.com/pshihn/lumin](https://github.com/pshihn/lumin)

I'm sure there are still lot of kinks in it.</comment>


Phabricator, an open software engineering platform - <AUTHOR> http://phabricator.org/

<comment><USER2> I would like to think this would begin to gain ground against systems like Jira (oh, how I loathe thee). Sure, Phabricator is a bit of a pain in the ass to set up in its current state, but it seems to be head and shoulders above many in both features and ease-of-use (not to mention price).

<comment><USER3> I'm not a Jira fan, but TCO usually includes more than just the actual price of the product. So e.g. setup, maintenance and ongoing support. :)

</comment></comment><comment><USER4> It's unclear to me why this is "by Facebook." Nice concept, though.

<comment><USER5> [https://github.com/facebook/phabricator](https://github.com/facebook/phabricator)

<comment><USER4> Thanks, I missed the repo link! Someone seems to have edited "by Facebook" out of the submission title, but Phabricator does appear to be owned by their Github acct.</comment></comment></comment>


Tweetie 2.0 For Mac Will Launch With The Mac App Store, Tomorrow  - <AUTHOR> http://www.razorianfly.com/2011/01/05/exclusive-tweetie-2-twitter-for-mac-will-be-available-from-the-mac-app-store-tomorrow/ <comment><USER2> Tweetie 2.0 is the entire reason I purchased Tweetie 1.0 last year as part of a MacHeist bundle - they said we'd get 2.0 for free when it was released.

If they charge for 2.0, I hope they don't "conveniently" forget about that deal.

(And if they always intended 2.0 to be free, props for sucking $20 out of me.)

<comment><USER3> Doubt it was intended to be free, but it probably will be free.

If I remember properly, Macheist was before Twitter acquired atebits. When atebits was acquired, they immediately madeTtweetie for iPhone free, because that is in their best interest.

</comment></comment><comment><USER4> You know what would be awesome is if TextMate 2.0 appeared as well. I'm happy about Tweetie though. I've been growing a bit frustrated with Nambu.

<comment><USER3> Talked to allan the other day. This isn't happening. I don't think he even has any plans for Textmate 1.0 to appear in the store any time soon.

<comment><USER5> It'd have to completely lose its ability to edit and save root-owned config files and such in order to adhere to App Store guidelines. I use that all of the time.

</comment></comment></comment><comment><USER6> About time! I was wondering if Twitter had killed that off or just forgotten about it.

Won't it be called "Twitter for Mac" though?

</comment><comment><USER7> Really glad to see this at last, but there's a negative side as well… Loren was actually never supposed to give the app to anybody. His 'testers' were never supposed to exist. All this story has done is cause him trouble- people have admitted that they've had the application for weeks, and that's part of the reason why you'll see a few people freaking out on Twitter.

</comment><comment><USER8> I wonder if they'll offer it for free.

<comment><USER9> It'll be free. It's listed as Twitter for Mac and all of the official Twitter apps are free, regardless of platform.</comment></comment>


Launch HN: Tarjimly (YC W18 Nonprofit) – Realtime Translators for Refugees - <AUTHOR> Hi HN!
This is Atif and Aziz, co-founders of Tarjimly (https://tarjim.ly) - a nonprofit that allows bilingual speakers to volunteer as translators for the 23 million refugees worldwide using anonymous chat, phone, and video. All for free.
Aziz and I graduated MIT during the Syrian refugee crisis. Our friends and family all told us about the dire situation, but one problem stuck out: refugees desperately struggled to communicate with the medics, lawyers, and aid workers trying to help them. We built Tarjimly as a way to remotely translate by connecting over Facebook Messenger.
A year later, our community of 3000+ volunteer translators has helped over 1500 refugees and aid workers globally.
- Translators come back because it finally gives them a way to do more than just donate money or post online.
- Refugees come back because machine translation (e.g. Google Translate) for refugee languages severely lacks accuracy and situational awareness.
- Aid Workers come back because paid translators are expensive and don't even come close to meeting demand.
We validated these problems by interviewing over 300 refugees and aid workers and doing a 2-week field study in Greece: https://medium.com/@tarjimly/greece-trip-research-reflection...
We built a model to predict translator response based on their previous interactions and ping those who are most likely to respond at the time of request. It takes an average of 90 seconds to get connected to a translator from our passive pool and our current match rate is 92%.
We see Tarjimly growing into an organization that provides micro-volunteerism at macro-scale. We want to work at the front lines of the world's humanitarian needs, in any country that may be. We're looking forward to hearing your feedback and any ideas or experiences you've had in this area. And if you or your friends are bilingual, consider signing up as a translator!
TC: https://techcrunch.com/2018/02/13/bilingual-tarjimly-lets-yo...
Video: https://tarjim.ly/explainer <comment><USER2> Nice work!

I'm sure you've thought of this, but, given that Facebook's Messenger is generally not end-to-end encrypted, is it a good choice for discussing legal matters? Are you considering alternatives?

<comment><AUTHOR> The conversations are actually anonymous between translator and refugee/aid worker. All we provide is their first name (so it's clear they're talking to a person instead of the application). So there is no way for the two parties to know anything about each other except what they willingly provide (no full names, no locations, no phone numbers - we actually route calls through our own Tarjimly operated numbers).

Most of the lawyers using Tarjimly censor the PII (personal identifying information) themselves either by covering those parts of documents or omitting them in conversations, which does the trick most of the time. Generally, these nonprofit lawyers are so strained for resources they're excited to use something over nothing to help them do their job.

We wanted to get something available quickly, which is why we started with Messenger and that's made on-boarding incredibly easy, but security is proving to be more and more important. We're going to see if the WhatsApp API will be end-to-end encrypted and we're in the design phase of our own mobile app to create an even better experience (especially for calling where Messenger is being difficult).

</comment></comment><comment><USER3> Congrats on your launch! The website looks very impressive, and I hope it goes well for you. Will you be adding support for any other messenger apps (for example, WhatsApp)?

<comment><AUTHOR> Thanks! We're actually in touch with the WhatsApp team and they like what we're doing - we're working with them to be able to access their API, but it is still in the early stages. We're envisioning interesting scenarios for creating translation groups using WhatsApp and leveraging their end-to-end encryption to enhance privacy.

Almost every refugee we met has WhatsApp and they use it much more profusely than Messenger, especially for groups. The one exception being Farsi speakers who live primarily in Telegram. They all use Messaging apps as a lifeline to their families back home and an outlet to the wider world, so they're almost all willing to buy data plans and get a smartphone.

<comment><USER3> Okay, that is good to hear – Excited to see where this will end up going! Do you have a newsletter I can subscribe to?

<comment><AUTHOR> Thanks! Yes it's at the bottom of our website where you can add your email to our newsletter: [https://tarjim.ly](https://tarjim.ly)

</comment></comment></comment></comment><comment><USER4> Congrats on the launch. It seems you put a lot of work on this and it is refreshing how much of impact it could have. Except for Facebook Messenger, I would love to try. I am sure you are thinking about other messengers. I suggest putting some kind of newsletter on your website.

Edit: ops, now I saw the newsletter box at the end of the website.

<comment><AUTHOR> Thanks! Curious, what's the specific concern with Facebook Messenger? The two I've gotten most is either "I'm not on FB" or "I don't trust FB".

Definitely looking into WhatsApp, Telegram, and especially our own mobile app where we can do a lot more.

We have an email signup at the bottom of the site, where you can signup for our newsletter - perhaps I should make that more visible.

<comment><USER5> Personally, privacy—both from the person on the other end of the line and from Facebook. This project reminds me a lot of 'be my eyes'[0] which is basically what you're doing but with blind people. Have you considered contacting them to see how they solve similar issues? What about something like riot.im/matrix?

0-[https://www.bemyeyes.com/](https://www.bemyeyes.com/)

</comment></comment></comment><comment><USER6> Can't express how much I loved the idea! Good job.

Have you considered using other platforms that are widely used in the region, such as Telegram?

</comment><comment><USER7> This is awesome! I have friends who regularly volunteer at refugee camps and I'm sure they'd love this. Being fluent in more than one language, volunteering abroad is something I've also wanted to do but haven't committed to because of time constraints. Thanks for making that a bit more accessible to folks like me (and for sharing your findings in your blog, that was an insightful read).

<comment><AUTHOR> Wow that's the exact persona we were envisioning when we created it! :)

Aziz and I felt the same way, and we felt bad about buying flights to basically go translate (because we're engineers there wasn't much else we could offer really).

You should definitely sign up as a translator and connect us to your friends who were at the refugee camps when you get a chance: firstname.lastname@example.com

</comment></comment><comment><USER8> Congrats on the launch guys! Been following you guys for a while now and this is a really awesome initiative.

<comment><AUTHOR> Thank you! It's crazy to look back and see where we were 1 year ago haha

</comment></comment><comment> justin--sane The German localization of the website really needs some corrections.

<comment><AUTHOR> I'm actually having some friends go through making corrections in the next few days since not everyone on our team speaks every language - Burmese is rough!

We built a message editor which allows us to immediately edit any string in our application and website. It also allows our friends to correct and verify all the strings used in our application:

[https://drive.google.com/open?id=160ZFXDpddf8VHHgnYulvbzdnWb...](https://drive.google.com/open?id=160ZFXDpddf8VHHgnYulvbzdnWbrylqml)

</comment></comment><comment><USER9> very nice idea and great work , long live Tarjimly!</comment>


TinyPNG: Lossy compression for PNG that preserves full transparency. - <AUTHOR> http://tinypng.org/ <comment><USER2> They're using a quantizer. Likely <http://pngnq.sourceforge.net/> .

To compare yourself:

      wget http://tinypng.org/images/example-orig-c549c73a.png
      wget http://tinypng.org/images/example-shrunk-ec364794.png
      pngnq example-orig-c549c73a.png
      cmp -b example-orig-c549c73a-nq8.png example-shrunk-ec364794.png

I get one byte of difference between what pngnq produces and their example shrunk version.

BTW, I use pngnq all the time in instances where losing some information is okay. It's a great tool.

</comment><comment><USER3> I don't mean this as a dig at the developers of this particular site because my annoyance is more of a cumulative thing as opposed to being about this website in general, but IMO this is yet another website that does one simple thing that should be a library (or at the very least a documented web api) and not a website.

Websites of 2012, I am disappoint.

<comment><USER4> What? The designers who will be using this to convert PNG's won't have the slightest idea how to access an API. I, as a programmer, don't want to write code to do this either. I think creating a site for this is _awesome_.

It would be cool if they created an API as well, and a library (but for what language? so many compatibility issues...), but to say this should "not be a website" is entirely backwards. A website is the most user-friendly and accessible platform possible, and makes perfect sense to be the first step.

<comment><USER3> "What? The designers who will be using this to convert PNG's won't have the slightest idea how to access an API."

For designers it should be a Photoshop plugin (built on the theoretical library) or just a desktop app that can bulk convert entire directories.

While dealing with 20 images at a time is certainly nicer than one at a time, a drag & drop website UI like this one is an absolute workflow killer on the design side.

<comment><USER4> Sure, a Photoshop plugin would be great. And a desktop app. And a GIMP plugin. And a Finder extension. And lots of other things too.

My point is, a website interface the single most accessible way so that 100% of people can use it, regardless of platform or programming expertise.

It is the obvious first choice. That said, of course I hope all the other options come along soon...

<comment><USER5> GIMP already has an interface to reduce color depth, but it doesn't support transparency. (Maybe 2.8 does, haven't tried it yet.)

So this should not be a plugin for gimp, but rather a bug fix.

It would also be nice if gimp could open images with indexed transparency.

<comment><USER6> You're right, proper transparency support is step 1 -- but that isn't to say that GIMP couldn't have some sort of automatic lossy compression tool (akin to this) on _top_ of that tech.

EDIT: I suppose this software is equivalent to gimp's "Automatically select palette" option when converting images to indexed. Perhaps that option could be replaced with a list of algorithms to choose from, like how the Size dialog lets you choose your own scaling algorithms.

<comment><USER5> Yes, exactly. This tool is simply because "Automatically select palette" doesn't support transparency. If it did there would be no need for this.

I'm not sure you really need multiple algorithms, the algorithm itself isn't anything special as far as I know - it just supports transparency that's all.

You can get somewhat similar results by selecting all the transparent and partially transparent parts and saving the selection. Then flatten the image (i.e. mix the transparency into the background color), reduce the color depth, then use the color to alpha option only on the selection (not the whole image) to subtract the color and bring back the transparency.

Then count how many colors you have, if you have too many, undo everything, and choose a lower number for color depth and try again. It helps to choose a color that does not otherwise exist in the image for the background mixing color.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Thanks for all the feedback, everyone! We're still working on making TinyPNG easier to use and removing some of the kinks. Keep the comments coming!

We created this service because we (our web agency) were building a couple of sites that used very large transparent images. Unfortunately the file sizes were also massive, so we went looking for compression mechanisms beyond traditional lossless optimisation tools, which simply did not reduce our files enough. We built TinyPNG around a couple of existing open source quantising and compression tools.

Initially it was an internal tool, but we were extremely surprised by the consistent good quality of the results. So we decided to share it as an online service so that it is as easy as possible for everyone to reduce file sizes. An API will be coming soon!

Is it always a good idea to use lossy compression? No, certainly not. There are some edge cases that perform poorly. But we think the results are impressive. Use your own judgment! :-)

We actually went looking for PNG files on very popular sites (Facebook, Google, Github, Duckduckgo, many others) and almost all of them could benefit from TinyPNG's file size reduction without noticeable quality loss.

<comment><USER8> _which_ existing open-source tools?

<comment><USER7> Mostly pngquant (the new version), optipng and advpng. We are still tuning parameters and swapping in and out tools based on our benchmarks and testing suite.

</comment></comment></comment><comment><USER9> Wow it took my png from 659 bytes to 681 and lets me download the 681 byte one. :(

So I took a PNG from wikipedia:

221.0kb (its actually 215 KB or a little more than 220,000 bytes) to a claimed 47.8 KB (really 46.7 KB). Nice!

Running PNGGauntlet, a lossless compression app, with the same file compressed nothing. Wise wikipedians must have already done that.

But the results from tinypng look _awful_. Here you can flip between the original and the compressed:

[http://upload.wikimedia.org/wikipedia/commons/4/47/PNG_trans...](http://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png)

<http://i.imgur.com/QOLo3.png>

<comment><USER10> I wouldn't say they look awful, there's a difference in the background part of the image but the main focus has little change.

It's a trade-off, but I would imagine that if there's thousands of files it could be a significant savings on bandwidth, and you could always keep the original for download but not display puroses.

<comment><USER11> There's very clear posterization in the yellow die and in the green die's highlights.

That shouldn't be surprising -- high color depth images need more than 256 colors to represent their image with fidelity.

See more: <http://en.wikipedia.org/wiki/Posterization>

</comment></comment></comment><comment><USER12> > Internet Explorer 6 normally ignores PNG transparency and displays a solid > background colour.

> With TinyPNG the background becomes transparent again. No workarounds!

Um, does anyone know how that works? Does IE6 natively support some kind of png transparency?

EDIT: ah, like that: [http://calendar.perfplanet.com/2010/png-that- works/#8bit+alp...](http://calendar.perfplanet.com/2010/png-that- works/#8bit+alpha)

<comment><USER13> who the heck still cares about what IE6 does?!

<comment><USER14> Anyone developing for health-care, government, etc.

Heck, I'm sitting here on XP, developing _specifically_ for IE6 and nothing else.

<comment><USER15> And I hope your rate is doubled, at least.

<comment><USER14> Although IE6 has it's share of problems, it's actually kind of simple developing for _one single_ version of one browser. Once you get used to the quirks, they are constants.

(Note: I'm not saying I like it, just that it's become "normal")

</comment></comment></comment></comment></comment><comment><USER16> I feel like the supported browser icons should be in colour. To me, back and white represents 'not supported'.

<comment><USER17> Me too, it's very confusing. It doesn't even saturate-on-hover.

</comment></comment><comment><USER18> I'd be curious to know if they have plans to release the source for this. It'd be much more useful to use this in a build step, rather than drag-and-drop into a browser window.

<comment><USER19> Ditto. I'd like to see some side-by-side comparisons with PNGOUT, PNGCrush, OptiPNG, and AdvPNG. I use ImageOptim on my Mac to automate my PNG optimization—and it can get some impressive gains.

<comment><USER7> The tools you mention use lossless compression. For 24-bit PNG files that means they probably won't come close the kind of lossy compression used by TinyPNG.

<comment><USER19> The comparison will be subjective. One will retain full detail (24-bit color) and the other will not. The "better" will be subjective, as I said.

I wish Photoshop gave the option to save an 8-bit PNG with a FULL alpha channel—that's what this seems to do.

</comment></comment></comment></comment><comment><USER20> Can't you achieve the same results with ImageMagick? For example, `mogrify -format png8 *.png` converts all png images in the current directory to indexed versions.

Moreover, ImageMagick itself recommends a variety of more advanced lossless and lossy png compression utilites: <http://www.imagemagick.org/Usage/formats/#png_non-im>

Then I opened the original panda PNG with GIMP, clicked on Image -> Mode -> Indexed -> Optimized palete -> 255 colors, and obtained an even smaller file size.

What's so special about this?

<comment><USER21> You can generate the same image format with ImageMagick, Fireworks, pngnq and pngquant (the last one seems to be powering the site).

The difference is in quality of quantization. The poorer the algorithm, the more banding artifacts or dithering noise you'll get.

Usually less optimal quantization also gives worse quality/filesize ratio (since palette entries are "spent" on less noticeable areas of the image).

<comment><USER20> _You can generate the same image format with ImageMagick, Fireworks, pngnq and pngquant (the last one seems to be powering the site)_

Exactly: I don't see what's _special_ about tinyPNG.

<comment><USER22> Looks like it just makes the process accessible to the layman.

<comment><USER20> Most laypeople don't even know what a PNG is...

</comment></comment></comment></comment></comment><comment><USER23> nQuant is a similar (C#, Apache 2.0 licensed) re-compressor; it was created by Matt Wrock as an adjustment of Xiaolin Wu's algorithm to work with the alpha channel.

<http://nquant.codeplex.com/>

Matt gets into the guts of how this process works here: [http://www.mattwrock.com/post/2011/09/05/Convert-32-bit- PNGs...](http://www.mattwrock.com/post/2011/09/05/Convert-32-bit-PNGs-to-high- quality-8-bit-PNGs-with-C.aspx)

</comment><comment><USER24> I typically just apply a posterize adjustment layer in photoshop and still save out to 24-bit. More often than not I can get pretty good compression, and I have the ability to mask out different areas of the posterization to achieve varying levels of compression interactively. Kudos for making this website though, seems like a great way to quickly compress images without having to think about it too much.

</comment><comment><USER25> Wait! I know I've seen this before:

<http://www.8bitalpha.com/>

<comment><USER21> Unfortunately 8bitalpha.com uses GD library which has very outdated, crappy quantizer:

<http://i.imgur.com/7bq7X.png>

</comment></comment><comment><USER26> If you're on a Mac, ImageAlpha provides a good GUI that lets you preview different quality settings:

<http://pngmini.com/>

Also, ImageOptim provides a GUI that does lossless PNG compression:

<http://imageoptim.com/>

</comment><comment><USER27> How does it compare to PNGNQ? <http://pngnq.sourceforge.net> <http://pngnq.sourceforge.net/pngnqsamples.html>

</comment><comment><USER28> Worked really well for me, took a 238k png down to 106k. I'm not seeing any artifacts.

</comment><comment><USER29> The shadow on that compressed panda has visible artifacts.

<comment><USER30> Yeah, it almost looks like a premultiply issue, but PNG should be non- premultiplied, so...

<http://imgur.com/6ovIu>

Also, the original has values in the RGB channels for pixels with no alpha that aren't visible (due to the alpha) but need to be compressed, so it's not a fair test (although both do to some degree - turquoise area around the bear), so the new one could be compressed even more.

<comment><USER21> pngquant backing this service works in premultiplied RGBA colorspace (but with 32-bit floating point per gun).

However the distortion is merely a side-effect of reducing image to 256-colors (from 15k colors).

</comment></comment></comment><comment><USER31> Why is it a service vs. being as software library?

<comment><USER32> Designers.

</comment></comment><comment><USER33> I've only tried one image so far, but the one I tried showed impressive results. I've always used <http://punypng.com>, which has always done a great job, but I just ran a file compressed down to 131kb in PunyPNG and TinyPNG took it down to 42kb!

</comment><comment><USER34> For those looking for a desktop application with more options (for Mac at least), check out Image Alpha: <http://pngmini.com/>

(from the creator of the equally awesome ImageOptim: <http://imageoptim.com/>)

</comment><comment><USER35> Good Application Website. And for those asking for a Desktop Version - AlphaImage - <http://pngmini.com/>.

AlphaImage will even give you the 'optional' Transparent PNG compatible with IE6.

</comment><comment><USER36> PNG compresses "exact" gradients pretty well. I'd be interested in a tool that not only reduces colors (what this one is doing), but also smooths gradient- like segments of the image to comrpess better.

<comment><USER37> Yeah, I am curious how much you can improve compression by keeping everything 24 bit, but slightly tweaking the color values to make the result more compressible. (PNG applies one of five predictors to each line, takes the difference from the prediction, and deflates the result.)

For example, as a greedy algorithm: find the best predictor for a line, then tweak the line to reduce the alphabet (round off the difference from predicted values) or to get longer deflate matches (substitute values if they're close and match a previous run).

</comment></comment><comment><USER38> PNG is no longer the only widely supported format with alpha channels. You can use WebP (which has javascript or flash polyfill.) You can fall back to a plain PNG for those with javascript disabled.

</comment><comment><USER39> What is that logo from (or parody of)? ESET has very similar logo, but I think there was one with these colors.

</comment><comment><USER40> There is no single ultimate solution for image optimisation. This looks like it'll work great for some images.

</comment><comment><USER41> It would be great to have this in the rails asset pipeline. Do you plan to open source your compression code?

<comment><USER7> We plan to release an API. The compression code is a combination of a couple of open source tools with some careful tuning and heuristics for optimal result.

</comment></comment><comment><USER42> You know you have been working with IE too long when this product brings a smile to your face.

NO MORE GIF's for me!

</comment><comment><USER43> 8 bit pngs... Can't you just do this in Photoshop? What's the point of this site?

<comment><USER44> Uhm, not charging hundreds of dollars for 8bit pngs?

</comment></comment><comment><USER45> $ pngquant -iebug image.png

</comment><comment><USER46> It actually increases the size of some files.

<http://i.imgur.com/E1mL2.png>

10,842 bytes -> 15,863 bytes (a 46% increase).

Which is dumb, in cases like this it's better to return the original file.</comment>


Google Trends: Django, Ruby on Rails and Asp.NET MVC - <AUTHOR> http://www.google.com/trends/explore#q=django+python,ruby+on+rails,asp.net+mvc

<comment><USER2> Still not very clear what does this trend stuff represent.From the chart,can I say more people use asp.net MVC? Can I say asp.net MVC is relative new or hard to use?</comment>