Ask HN: Good resource for finding a iPhone developer? - <AUTHOR>

My startup is looking for an iPhone (and/or Blackberry) developer to work on some iPhone extensions to our .Net based web application.
I'm trying to track down an iPhone developer to write a little app as an extension to a .Net based website.
I'll go over a few of the required features to give you an idea of what I'm talking about:
The web app is basically a collaboration tool (projects, forums, etc) The iPhone app would need to be able to browse, search, read, and edit online project details (so all of this would be implemented on the server, the iPhone app would essentially just call certain dedicated webservices to get/set the required information) The iPhone user would be able to take a photograph or video from the iPhone which would upload to the server. Caching on the iPhone would be necessary (at least for v2.0) to handle disconnected sessions, with auto synching on app startup when re-connected.
I know nothing about iPhone development, should an app like this be fairly simple to develop for a moderately experienced iPhone developer?
Can anyone recommend any resources, or are any members here proficient in the art?
Contact Info:  email@example.com (remove the Z's)
Thanks for any replies. <comment><USER2> Probably one of the more important things is to have a realistic budget. If you're thinking anything less then a few grand, I can tell you you're not going to find a good developer in the states.

Try local meetup groups for iPhone devs, they're pretty common all over the country. If you can't find anyone, send me an email (in profile) and I can put you in touch with a dev.

<comment><USER3> I second this. I bill at $40/hr and I'm the cheapest iPhone developer I know.

Any developer who's remotely competent it working on his own apps, where he takes 100% of the risk and 70% of the profit. Unlike desktop/web programming, where you can sort of snatch the students before they get real jobs, _every_ iPhone developer has a "real" job working for Apple. The only reason at all to work on contract apps is to _reduce your risk because somebody is paying you up front_.

If you want somebody decent who writes clean code, budget at least 5-10k and start interviewing developers. If they've got an app on the app store that you like, they pass the competence test. It also doesn't hurt to simply cold-call developers who've written something similar (but be aware anyone with a really successful app store app is going to focus on that, not contracting for random cold-callers. I get 15-20 coldcalls a week, and I only even call back 1-2% of those).

<comment><AUTHOR> Thanks for the input. But a 5-10k budget for something like this to me seems amazingly high. The only things that seem even remotely complicated in this would be the offline synchronization, and the taking/uploading of photos. I don't know about the synchronization, but is it really difficult to create an app that can take a picture and upload it to a webservice?

I'm not trying to argue, I am genuinely interested in if this is actually a difficult thing to do....

<comment><USER3> Please don't take this the wrong way.

I get inquiries like this every day "I have $1k, build me X." Where X is a moving-target project.

The fact is, I don't even look at a project where the budget is under $5k. Every project expands in scope as it goes along. Every change, feature request, "misunderstanding" adds to the time to put together an app. To a developer, somebody who's trying to put something together on a shoestring budget is sending off vibes of unreliability, of focusing on cost over quality, is going to nitpick and obsess about every little thing. I realize that's a little unfair, but that's how other developers are going to perceive your request.

There's overhead too. I have to do an estimate; I have to research whether we can really use that control, how do we do this so that the numbskull apple reviewers will pass it, have to budget time to wrestle with the gnarly Apple bugs, have to walk you through signing up as a developer, getting the certificates, filling out the forms right, setting up codesign chains, helping you understand app submission... Doing a "hello world" app would probably have 10-15 hours just of overhead, and that's without researching anything complicated like how to do SOAP requests or whatever technology you're using.

Also, what I have said, and what others have said: lots of people want iPhone apps, and there are a small number of developers. There's lots of reasons with for this: one is that (at the risk of starting a flame war) ObjC is harder than some more modern languages because there's a lot of crap you have to think about (memory management) that you don't in, say, Python or Ruby. I bet a third of my time is spent worrying about memory. Plus there's a lot of Apple hoops to jump through that forms a pretty high effective barrier for developers.

And, when you think about it, all of the good people are working on _their own_ apps. The only way to get anyone's attention is to pay them more money then (they think) they'll make spending equivalent time on their own app. Either that or pick a developer so incompetent they can't _write_ their own apps, and obviously that's not what you want (but you'll find an awful lot of them below the $5k price point).

If your budget is that small, do what others have suggested and pick up a mac and some books and do it yourself. It will take you a lot longer than someone who has 5+ apps in the app store, but at least you can do it right within your budget.

<comment><AUTHOR> Hi Drew,

I read your new post on your blog: <http://sealedabstract.com/?p=515>

__And I must say, to anyone that is thinking of getting someone to develop an iPhone app, this is a must read!!!!

So, regarding that post, I have a couple questions. First, for context, I should mention, I am a developer myself (.Net), I read tons of blogs, I have casually read a fairly large amount of iPhone development related articles (just as they come through places like HN, not because of research).

So, a few questions if you don't mind, I have a feeling now that I am quite naive regarding the iPhone:

* developing on the iPhone, memory management, the issue with unknown screen size, etc....this gives me the impression that iPhone development is really quite "archaic" low level stuff...ie: nothing is easy or can be taken for granted. I would have thought that despite being a low power platform, no garbage collection, C Language, etc that Apple would have to a great degree abstracted a lot of this away. For example, my take a photo and upload requirement....I would have thought that there would be some sort of a Camera Control that could be embedded in a form, that would then inherit the inherent functionality of the control, and after the photo is taken, you would then have code that decides what to do with it (save, upload, etc) Do you really have to do great amounts of memory related programming to do this kind of task?

* The App store - I have read the horror stories and don't doubt your assertions. But for my app, I have no interest in listing it in the app store for general public consumption...if it has to be deployed via the app store, fine, but I don't want to market in any way to general consumers. Is there no 2nd tier of any kind for corporate aplications? I can't see the logic on Apple's part of making life so difficult for corporate developers (but I can see it for the consumer market)

* I've read several anecdotal stories of people writing graphics intensive apps/games in their spare time to learn the platform and doing well....this "fact" seems inconsistent with the idea that the simplest app is extremely difficult.

Anyways, I would really appreciate if you could address some of these. I'm getting a bit depressed on the notion of developing on this platform. Approximately 100% of my customers are already on blackberry platform, so I wonder if I should just say screw it and go there. I liked the superior UI, screensize, and multimedia capabilities of the iPhone, and I have no doubt that my customers would have any problem laying out the $ to equip field personnel with one, but from what I'm hearing, if you're not doing mass market stuff, its just not worth the bother.

<comment><USER3> I think your concerns could be better answered one-on-one than in this forum. Contact info on my website in profile.

</comment></comment></comment></comment></comment></comment><comment><USER3> > should an app like this be fairly simple to develop for a moderately > experienced iPhone developer?

Yes. The only thing really difficult that you want to do is syncing, which can be done by a competent developer.

Don't forget, though, that there needs to be some time spent designing a winning interface. You don't want users to have to type in markup with the keyboard; you need an intuitive way to do that on a mobile device. Little touches like that are the difference between something people use and something they don't use, and going through that process takes some time.

<comment><AUTHOR> If by markup, I assume you mean bolding text, things like that, or did you mean something else?

I suppose that would be nice, I guess the iPhone doesn't come with a native rich text editor of some sort?

So do you happen to know anyone that might be interested ina project of this nature??

<comment><USER3> Well you mentioned forums and project editing, I naturally assumed there would be some sort of bbcode (or html, or equivalent) for markup. Typing that on an iphone keyboard would be a real PITA.

No, there's no rich text editor of any sort. You've got plain text entry and you can render HTML in Safari. That's it.

Sorry, I don't. I'm "booked", in the sense that I have too many projects of my own to take on any new clients. All the other developers I know are in the same boat. Like I said above, try cold-calling people who have done something similar.

</comment></comment></comment><comment><USER4> I know a few of these guys personally. They started making iphone games but lately their success has been garnering them contracts with local businesses to make internal iphone applications. You might want to get in contact with them.

<http://www.resolutegames.com/>

</comment><comment><USER5> I think you should provide a way for people to contact you.

<comment><AUTHOR> Sorry, updated....

</comment></comment><comment><USER6> Actually, I prefer to think of your name being Trev Zorgo Zuld, like some kind of arcane coder from days long past, skilled in the obscurities of Fortran and COBOL.</comment>


Wordpress site running on Raspberry Pi - <AUTHOR> http://pipress.vo3.net/?p=6 <comment><USER2> Headers: W3 Total Cache/0.9.2.4

So he's serving a static page 90% of the time? I'd love to see how this thing operates without a cache.

<comment><USER3> Running

        ab -n 1000 -c 20 http://pipress.vo3.net/wp-login.php\?action\=lostpassword

Seems to have killed it. The site came back when I killed the process.

Sorry jstalin but I had to do it! For science!

<comment><USER4> For science lots of people will probably try to replicate your results, as good scientists should.

<comment><USER5> Haha, I liked this conversation! @jstalin I'll get my raspberry pi delivered in a few days, I'll let you know if I can figure out the varnish issue. Meanwhile, you can also submit a ticket on Trac <https://www.varnish- cache.org/trac>

<comment><USER4> The quickest way to get an answer regarding varnish issues is to ask on the irc channel.

irc://irc.linpro.no/#varnish

<comment><USER5> This seems like a permanent issue and should be reported as a bug rather than an IM.

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm working on a project where I have a rails site running on a beaglebone, it is populating its database with data coming from a usb device (~200 byte/s continuous). I am finding that the SD card with all of the data and the OS fails quite quickly (scale of weeks). Are SD cards just not up to the task?

<comment><USER7> Yes, SD cards are not designed as disks. 'SSD' drives work by selling you 4 - 10x the amount of flash as 'advertised' and replacing failed pages from the excess over time. They are more like light bulbs than switches in that way (finite lifetime).

<comment><USER6> I figured as much, thanks for the input. It would be wise then for the OP to make sure that noatime (turns off date accessed) is set in fstab for the filesystem, you don't want to write to that SD card on every read.

<comment><AUTHOR> Thanks, that appears to be the default on the wheezy image they distribute.

</comment></comment></comment></comment><comment><USER8> Wow. Front page of Hacker News and it's still up. (granted, it's only been 19 minutes...)

<comment><USER9> Most people who have their site go down aren't using proper caching so their Wordpress sites are evaluating the PHP and querying the MySQL database with each page load. This is extremely wasteful of processor cycles and memory, hence the site goes down when the server gets overloaded. The proper way to do it is to have caching in place such that it evaluates once and saves the result as a static HTML page. Then the static page can be served very quickly and efficiently.

It looks like this is what he is doing. I'd be willing to bet the site will stay up.

<comment><USER10> If it survives does that mean that the Pi can essentially saturate its network connection if it doesn't need to do any "real" work? I bet you could stick it in a rack in front of the grownup servers to act as a haproxy dongle, how _hard_ can it _be_?

I officially dub it the cutest webserver.. in the _world_.

<comment><USER11> > Pi can essentially saturate its network connection

There are a few caveats here. If you're serving the same content ( < 512MB ) and it's static, then yeah, why not? Serving static content isn't CPU intensive and you're serving directly from RAM.

<comment><USER12> Let's not forget the caveat of network speed (4MB/s tops), and the other caveat of alleged stability concerns when saturating the network link AKA USB system.

</comment></comment></comment></comment></comment><comment><USER13> Nice. With Redis and a simple script I wrote I load WP in a few milliseconds: [http://www.jimwestergren.com/wordpress-with-redis-as-a- front...](http://www.jimwestergren.com/wordpress-with-redis-as-a-frontend- cache/)

He should try it, as he is getting errors with Varnish.

<comment><USER14> I test your script and compare it on my LEB with my common setup.

\- OpenVZ 128MB RAM

\- Ubuntu

\- Nginx

\- MySQL

\- PHP-FPM

\- APC

\- Varnish -->> Redis

At 250user/second here's the result : <http://imgur.com/a/hPkyZ>

This is vanilla WordPress installation. There is almost no difference in load time or overall resource usage as far as I'm concerned. I've never use Redis before so thank you for this.</comment></comment>


Microsoft PowerShell now available on Linux as an Ubuntu snap - <AUTHOR> https://www.zdnet.com/article/microsoft-powershell-now-available-on-linux-as-an-ubuntu-snap/ <comment><USER2> Good. A crappy shell is something Linux never had. I can't wait to start using OverlyVerboseCommands with -VeryLongOptionNames.</comment>


Show HN: Tracktl – Let People Control The Music - <AUTHOR> http://www.tracktl.com/

<comment> o0-0o Good idea. A few tweaks...

Most of the tracks do not load.

You cannot delete songs from history.

You cannot delete providers whose songs do not load (grooveshark, namely)

EDIT: I have a test HN channel here: [http://allwax.track.tl/](http://allwax.track.tl/)</comment>


Ask HN: How useful is "Patterns of Enterprise Application Architecture" today? - <AUTHOR> How useful is Martin Fowler's 13-year-old "Patterns of Enterprise Application Architecture" today?<p>Are there some newer content (web, books etc.) on the same subject you would recommend? <comment><USER2> I found it to be very useful. Even though it is a few years old, the underlying concepts of each pattern remain the same and I find it much easier to maintain code when I know which pattern was implemented.

As for newer content, I would point you again to Martin Fowler and his piece on Microservices[0].

[http://martinfowler.com/articles/microservices.html](http://martinfowler.com/articles/microservices.html)

</comment><comment><USER3> Architecture of Open Source Applications.

[http://aosabook.org/en/index.html](http://aosabook.org/en/index.html)</comment>


WAMP – The Web Application Messaging Protocol - <AUTHOR> http://wamp.ws/ <comment><USER2> WAMP usually means the "Windows, Apache, MySQL, PHP" stack. So creating a new "web technology" with the same abbreviation is a bit stupid. Your going to have a bad time getting search working.

<comment><USER3> Though I do agree with the general sentiment of your comment, I should point out that the maintainers of this project do address this issue in their FAQ[0].

[0] [http://wamp.ws/faq/#naming](http://wamp.ws/faq/#naming)

<comment><USER4> Wow. You can't just... use the same acronym and assume everything is hunky dory because you _pronounce_ it differently. It's still the same damn letters! This project should have gone with "WebMP" or the full WAMPWS acronym.

By "stealing" an existing, long-running and popular acronym, the maintainers are going to stifle this project no matter how much they try to separate themselves from WAMP.

Trick question: is it possible to run WAMP on WAMP?

</comment></comment></comment><comment><USER5> I've been forced to use this on a contracting-job and not exactly happy with the state of the current components. It's a bit too brittle, there's usually little to no documentation on the different authmethods between different components (MDWamp and AutobahnJS specifically). There's sloppy typo's and every few hours the server decides not to accept connections for a certain auth-id anymore until it is rebooted.

<comment><USER6> Regarding docs, yes agreed. But we are working on this and things are improving. This is still moving fast .

Rgd the server stability issues you mention: what WAMP router are you using?

</comment></comment><comment><USER7> While WAMP is awesome on the paper. (And it is definitely awesome.)

Some disclaimer would be fair. Currently, the most complete router implementation is Crossbar.io (Python), while it is functional, documentation is lacking cruelly. For example, we don't know yet how to do proper cookie authentication. Or the WAMP-CRA authentication has a little flaw and should be replaced with a new auth scheme.

Another example is that AutobahnPython or AutobahnJS are lacking documentation on CallOptions or SubscribeOptions and other things. There is a lot of boilerplate to achieve simple things like... managing a connection lifetime (there is onopen, onclose, and onclose gives you some details, but no consistent, it's hard to know when auth failed or connection aborted).

Anyway. It just means that WAMP is in his debuts, I hate some weaknesses of the WAMP ecosystem (documentation, boilerplate, etc...) Nevertheless, it's awesome and you should definitely try something with. And if you can, contribute and make it incredible.

(No offense, I'm a fond of WAMP, but I don't want people to say things that are obvious like: "oh there is no doc it's a shitty project" \-- WAMP is moving fast. Very fast.)

</comment><comment><USER8> Can somebody elaborate why the need for such libraries, when:

-client side websocket handling is ~3 lines of code

-server side websocket is ~200 lines of code even with pure bit level C/C++ on top of any TCP socket (the websocket RFC is very simple)

-writing a simple protocol for yourself is obvious

So, you can write all these for yourself within one day and then you know all the details. It takes more time to study how to use others code and you will still remain on the wrong path if some modification would be needed, feature missing or you have to fix a bug.

<comment><USER9> Reconsider your statement, replacing "WebSocket" with "TCP socket". Why do so many networking and messaging libraries exist when you can communicate with another socket endpoint in a few lines of code?

This specification describes two common network design patterns (RPC, PubSub) and establishes a reusable heterogeneous framework for using them. If somebody needs those patterns, they can just pick this up and use it, and also interoperate with other clients/routers that use the same specification. Since there is this implementation-agnostic specification, client APIs and routers can be implemented within whatever language and context (embedded system, server, web browser, whatever) and they will all work together.

The WebSocket is a transport. One can put many sorts of subprotocols over it and this is one effort to make a common , useful one.

<comment><USER8> It takes a lot of time to implements fast/robust/scalable sockets. However this is not true with websockets. With websocket you don't have to play with various models, OS API's and threading. You just have to interpret/format the received/sent bytes as described in the RFC. Of course, you can put any app logic over websocket, but this has less to do with the websocket itself (then we enter the word of "app servers" for which we have endless other solutions if somebody favors a certain framework)

</comment></comment></comment><comment><USER10> Might have misinterpreted this, but from reading all the slides - it seems that even for RPC, you have to pass all messages via a central server.

For use internally between services, this seems like a really bad idea. Seems like it'd be a big bottleneck when it came to scaling.

<comment><USER11> No, you're right. Multi-node support is on the roadmap, but no ETA yet. Until that's implemented I can't seriously consider it for production.

I love the concept, though. One unified layered for all your services.

</comment></comment><comment><USER12> I'm unclear why the root node of WAMP messages is a JSON Array.

The rationalization for verbose, weird, ambiguous formats like XML and JSON is that they're "self-describing".

Might as well just use MSGPACK or something.

<comment><USER6> WAMP can use different serialization formats, and MsgPack is one of them.

</comment></comment><comment><USER13> I read this as "Winamp" and I had a flood of nostalgia.

The good ole' days.

<comment><USER14> I read this as "WAMP" and I had a flood of bad memories.

</comment></comment><comment><USER15> I'm using deepstream.io for a project and it works well so far. It has some extra features like distribuited RPC calls, realtime search provider and transforming outgoing data.

</comment><comment><USER16> So this is an alternative to hook.io?

<comment><USER17> and also socket.io?

<comment><USER6> socket.io is a JS point solution for PubSub only .. [http://wamp.ws/compared/#socketio](http://wamp.ws/compared/#socketio)</comment></comment></comment>


GitHub AMA Reader - <AUTHOR> http://akashnimare.in/ReadAMA/ <comment><AUTHOR> I love reading AMA's of developers. Currently to read the comments I have to open each issues in a new tab. That sucks. So using some Angularjs and GitHub awesome api, I have made this little app. Any suggestions to improve this?

<comment><USER2> 1\. Using Firefox, the search box does not work for me.

2\. Adding a small handful direct links to your favorites, might show people the value you derive and determine if they find similar value in AMA's.

3\. When it's working and if it meets the guidelines, this might make a good "Show HN". Show HN guidelines: [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

<comment><AUTHOR> Thanks for the feedback. It's working now. Including favourites questions links seems a good idea.</comment></comment></comment>


The Guts of a Spineless Machine - <AUTHOR> http://jozefg.bitbucket.org/posts/2014-10-28-stg.html

<comment><USER2> Another very cool representation is Urban Boquist's GRIN (graph reduction intermediate notation). GRIN is used in Jhc (and thus in Ajhc and Lhc).</comment>


Hamilton on Quaternions (1844) [pdf] - <AUTHOR> http://www.maths.tcd.ie/pub/HistMath/People/Hamilton/QLetter/QLetter.pdf

<comment><USER2> yesterday I think, on Geometric Algebra

Reforming the Mathematical Language of Physics [https://news.ycombinator.com/item?id=3284160](https://news.ycombinator.com/item?id=3284160)

<comment><USER3> Actually, that was a discussion from a few years ago.

The discussion today was this:

[https://news.ycombinator.com/item?id=8192054](https://news.ycombinator.com/item?id=8192054)</comment></comment>


Cutestrap: 8k CSS framework - <AUTHOR> https://www.cutestrap.com <comment><USER2> In my opinion this is still the best option for CSS, especially in combination with React.

[http://tachyons.io/](http://tachyons.io/)

Most importantly it contains a ratio-based scale: [http://tachyons.io/docs/layout/spacing/](http://tachyons.io/docs/layout/spacing/)

<comment><USER3> Geez. Those selectors.. ""

<comment><USER4> It is a bit weird to use at first but I highly recommend giving it a shot.

I've built some complex UI's with the same class name styles (Basscss). 99% of the time I'm reusing classes and I don't have to write anything custom.

Prototyping is great once you memorize the classnames.. Just write HTML, no need to switch to CSS files.

If you're working with global styles this is by far the most scalable CSS methodology as of right now IMO.

<comment><USER2> "...once you memorize the classnames"

I don't know which editor you are using, but for TextMate I've written a 20 line-plugin that greps the tachyons.css file and gives me code-completion.

[http://postimg.org/image/tq038rwqp/](http://postimg.org/image/tq038rwqp/)

</comment></comment></comment></comment><comment><USER5> Cool, but what does it offer that Pure (4kb doesn't)?

[http://purecss.io](http://purecss.io)

<comment><USER6> The grids are way nicer in cute. You just have to specify a grid container and the flex takes care of the rest.

<comment><USER7> Yes, but just one row at a time (it doesn't wrap). And with flexbox it's just 2 lines of CSS code anyway (unprefixed).

<comment><USER8> Originally I had one class with grid, direct children were rows and direct children of rows were cells, but it turned into div soup pretty quickly, so I opted for one row at a time.

</comment></comment></comment></comment><comment><USER9> BEM may be effective for some, but it's a total turn-off for me simply because of the `__` syntax making my eyes bleed.

<comment><USER10> Had to look up BEM, this appears to be a good overview:

[https://css-tricks.com/bem-101/](https://css-tricks.com/bem-101/)

[ed: Having now read: [http://mrmrs.io/writing/2016/03/24/scalable- css/](http://mrmrs.io/writing/2016/03/24/scalable-css/) linked above, I can at least see where this idea is coming from. I guess I'm still thinking in documents with semantic mark-up, rather than UI widgets. I'm not entirely convinced throwing out all the cascading bits is the best approach, but I sympathize with that point of view.]

This is madness. Why work so hard to avoid how CSS selectors work? I mean, if you have a menu-structure built around divs, surely it should be enough to say that direct children of the div with class menu, should be considered menu items?

      <!DOCTYPE html>

Item one

Also
an item

Item #3 and CSSv3

knows (still blue)

        it

Item #4 and CSSv3 knows it

wat

<comment><USER8> I'm with you, those two concepts are mutually exclusive though.

</comment></comment></comment><comment><USER11> Just throwing this in here in case anyone is on the look for other frameworks: [http://semantic-ui.com/](http://semantic-ui.com/)

So far this is my favourite!

<comment><USER12> Semantic UI is far from a light-weight CSS framework. I was recently working on a project using semantic, and I saw that the CSS alone was around ~960KB. I'm guessing that something must have been misconfigured for CSS output to be that high just for the Semantic UI framework, but offhand I didn't see it. That didn't include the icon fonts or the JS with Semantic. I'm guessing with some work, that CSS payload could have been trimmed down, but I doubt it could be trimmed enough to be considered light-weight.

I prefer CSS frameworks to provide the bare minimum instead of the kitchen sink. The only exception I make is if I am working on a project that I know will not have design provided. If a project does have a provided design, overriding framework defaults is counterproductive. Just write your own styles when you need them.

</comment></comment><comment><USER13> can someone explain the convention of importing a directory into a file of the same name (and same level) before main.scss. The structure is:

        src/sass/
            components/
            support/
            vars/
            _components.scss
            _support.scss
            main.scss

and within main:

        @import "components";

Just curious why this is? I usually just import them directly into main, but I could understand if they were nested into the directory so they could be broken out. This structure doesn't make sense to me though as they are all flat & in same directory.

<comment><USER8> Hey! Usually I do exactly what you describe, but I laid it out like this so that if people want to include all the components, it's one line. Or if they'd want to include just the grid from components, it would still just be one line.

With something this small, it could be just into the one file, but I'm optimizing for that granularity.

</comment></comment><comment><USER14> > bower install cutestrap

People still use bower...? Somehow I thought it officially(?) was dead.

<comment><USER15> What do you suggest to use instead?

<comment><USER14> npm.

<comment><USER16> Is style(src="/node_modules/foo/bar.min.css") really that superior to (src="/bower_components/foo/bar.min.css").

You could argue that npm is the better package manager, but the average user does care about the underlying semantics.

</comment></comment></comment></comment><comment><USER17> No words about browser support?

<comment><USER8> It's IE10+, the flexbox grid is the only limiting factor.

</comment></comment><comment><USER18> I think it will need to follow Foundation style and offer mixin rather than hardcoding the classes. A library taking like .btn andothers etc is not something you'd want. Or maybe it's just me that don't like putting tons of classes in the HTML.

<comment><USER19> This is something that interests me as well. I would like a bare-bones configurable SCSS library to use in my projects.

</comment></comment><comment><USER20> What do you think of [http://bulma.io](http://bulma.io)? It's based on Flexbox, what it attracts me is that: 1) Quite feature rich out of the box. 2) Very nice-looking out of the box, than Bootstrap. 3) Much lightweight than bootstrap. 4) It's very easy to learn, even for a desktop-app-guy like me. 5) It's very interesting that Bulma has very little "global styles" \- most of the time you need to explicitly reference a Bulma class. To me this seems like to way to go - you know, in the programming world we try our best of best to avoid global variables.

What do you think?

</comment><comment><USER21> Small typo in the following paragraph on the front page: "There are plenty of amazing front end ___framworks - > frameworks_ __already, such as, Bootstrap and Foundation. If you 're looking for something feature rich with loads of components, those are both great choices."

<comment><USER8> Thanks! Someone opened up a PR and it's merged now :)

</comment></comment><comment><USER22> Read '8k' and thought we were talking about resolution, not kilobytes. Cool, but not as absurd as I was hoping for.

</comment><comment><USER23> Bootstrap can be customized to be as small as you want it to be: [http://getbootstrap.com/customize/](http://getbootstrap.com/customize/)

<comment><USER24> unless its still not small enough

</comment></comment><comment><USER25> For me, forms look microsoftish (maybe can be easily customized though) and BEM is hungarian notation of CSS.

<comment><USER26> How is BEM the Hungarian notation of CSS?

<comment><USER27> For those, like me, who hadn't heard of Hungarian notation: [https://en.wikipedia.org/wiki/Hungarian_notation](https://en.wikipedia.org/wiki/Hungarian_notation)

(Not suggesting you're one of them.)</comment></comment></comment>


Why would anyone buy Yahoo? - <AUTHOR> http://www.bbc.co.uk/news/technology-36015021 <comment><USER2> Why would anyone use Yahoo?</comment>


Unity Software Inc S-1 - <AUTHOR> https://www.sec.gov/Archives/edgar/data/1810806/000119312520227862/d908875ds1.htm <comment><USER4> Out of any software tools I use frequently, Unity is the one that brings me the most joy.

Any reasonably complex interface is essentially a game whether it's a music composition app, simulator, MMO or even a basic form.

The basic abstractions of entities and components sometimes feel like they could apply to any software project. It's seamless to animate something, add physics, style in ways that would seem mind boggling in other environments I've worked in like Python or Javascript.

You can learn so much going over basic Unity tutorials on Youtube and disassembling Unity games on Steam.

The asset store has many people aggressively experimenting with better user experiences for doing certain tasks whether its character skinning or node based programming, many of the best assets end up added to Unity by default.

Unity is not mostly used for mobile games, some insanely complex games are made in Unity. You can check out this list on Steam [https://store.steampowered.com/curator/31285130-Unity- Engine...](https://store.steampowered.com/curator/31285130-Unity-Engine- Games/)

Unity ML agents is the single most exciting ML project out today which helps you create the most complex Reinforcement Learning environments you can dream of.

Unity ate the indie game market but I think they will also eat Robotic simulations, Animation, interior design, VR, Web apps and Desktop apps.

Can't wait to buy shares.

<comment><USER5> > Any reasonably complex interface is essentially a game whether it's a music > composition app, simulator, MMO or even a basic form.

I've been out of the game development arena for a while, but I can't help but pause here. Are people really writing DAWs and big desktop app interfaces in _Unity_?

The last time I played with a game engine, I would have said UI was its weakest aspect. Clunky, slow controls, visually unappealing, and certainly lacking in accessibility. Without researching more, I would feel pretty confident placing a bet that if I pointed JAWS at a Unity Window, it would say "Game Window" and that's about it. Windows accessibility hooks and tab navigation certainly didn't work out of the box, and I would say that is bare minimum for a UI toolkit.

So while it's valid that Unity is a beast and game engines will eat the world for games, I have a really hard time taking them seriously for UI-driven application development.

<comment><USER6> > Are people really writing DAWs and big desktop app interfaces in Unity?

Arguably the biggest non-game applications are in virtual cinematography, architectural visualization, non-game simulations, and immersive art installations. Most of those uses don't result in discrete "apps", though, they're just workflows within Unity designed to produce a specific type of output.

One prominent example of a discrete pro app made from Unity, though, is Digital Monarch Media's filmmaking toolsuite, which is built on Unity.[1] But it fills some unusual hardware and interface needs that Unity is built, or has plugins, to provide (touchscreen interfaces, motion tracking, color grading).

That said, I see non-game apps in the vein of content creation or productivity pop up more frequently now in Godot development than Unity. There are some proof-of-concepts, like the Godello[2] Trello clone that was posted here a while back, but more useful examples are Pixelorama[3], an open-source pixel- art editor built with Godot, and Heavypaint[4], a painting/sketching app.

[1] [https://www.vfxvoice.com/instant-feedback-expozure- expands-i...](https://www.vfxvoice.com/instant-feedback-expozure-expands-its- virtual-toolset/)

[2] [https://github.com/alfredbaudisch/Godello](https://github.com/alfredbaudisch/Godello)

[3] [https://orama-interactive.itch.io/pixelorama](https://orama- interactive.itch.io/pixelorama)

[4] [http://www.heavypoly.com/heavypaint](http://www.heavypoly.com/heavypaint)

<comment><USER7> Godot is written in Godot. Anything you see in its UI can be used by Godot developers.

<comment><USER8> Which can be abused in fun ways! [https://twitter.com/yafd/status/1294719274657787904](https://twitter.com/yafd/status/1294719274657787904)

</comment></comment></comment></comment></comment><comment><USER9> I use Unity every day at work. This is a mixed bag for me. Unity gives google a run for their money when it comes to abandoning old features / letting them rot.

The editor is kind of crashy, launch times get unwieldy fast. Sometimes there's subtle differences between build version and running in the editor, and solving the disparity is a death march.

All that said, it's still one of my favorite environments to work in. I wonder if I have Stockholm syndrome.

Hopefully all this public money will get them to make a saner serialization format for their scene files. Unity's relationship with version control is... tense.

<comment><USER10> I'm curious what issues it still has with version-control? I know that for a while the default asset format was binary instead of text, but I believe they made text the default a little while ago (I've used Unity in a hobby capacity over the years but never professionally)

<comment><USER9> Scene files are the biggest thing. They're merge conflict magnets. You breath aggressively and they'll "change". Our workflow tends to be based around prefabs, and a main scene we _rarely_ change. Despite never touching it, everyone on the team has to revert Main.scene before committing, pretty much every time.

VFX Graphs are also pretty nuts. Cut one line and it changes 3000 lines of code. This isn't the biggest deal in the world, but it makes for weird diffs.

There was a memory leak bug with the videoplayer component, and the only fix I found was to update to a newer-than-LTS version. That version likes to strip public rendertexture fields from the inspector every time you pull a scene down from git. Hopefully they fix that before they call it an LTS :)

<comment><USER11> I've found additive scenes a little nicer for avoiding scene merge conflicts. Additive scenes come with a lot of baggage of their own, but it's worth it to learn to get that initial start up time down way more.

</comment></comment></comment></comment><comment><USER12> Like some others who are commenting, I use Unity for my job every day, and it's not been a great experience these last few years, each 'part' (graphics pipelines, documentation, Editor and tooling, and so on) has been steadily deteriorating over the versions. This article from Garry (from Garry's Mod, Rust and so on) from earlier in the year is still all accurate: [https://garry.tv/unity-2020](https://garry.tv/unity-2020)

Sadly, I wonder how much the last few years of very obviously aiming at Going Public has led the company and Unity as a software to this state. When the forums are full of "what is going on with Unity" threads and the company blog is full of "we've bought this cloud company" and "we're investing in AR for automative engineering", something isn't matching up.

<comment><USER10> What I've heard is that many of the problems are growing-pains; Unity has some really deep technical debt and they're (perhaps too hastily) ripping it out and updating things, which is causing angst for devs when a) their existing projects break, and b) in some cases the old system actually gets deprecated _before_ the new one reaches parity. But it also sounds like all of the completely new stuff that doesn't involve scorched-earth deprecation is generally well-received (and in some cases, a long time coming).

Does that line up with your experience?

<comment><USER12> I really, really wish it did.

Here's just one concrete example: real-time point-light shadows in the Universal Render Pipeline. URP is the new 'default' way of rendering, the old renderer is being phased out, this is the new way of doing things - as you say; technical debt as they re-engineer. But how horrid has this process of eliminating technical debt been? You've got Unity proudly announcing that URP was 'production ready' in February 2019, but you still can't have a point- light cast real-time shadows. Currently that (let's face it, really basic) feature is planned for Unity 2020.2, which is still in alpha, but even if you download the alpha you can't access that feature yet, _and_ they've announced they're not going to backport it, so bad luck if you're using 2019 or even 2020.1 for your game.

It's actually making me a bit sad to go into detail on what watching the URP fiasco, so I'll spare any other examples involving post-processing stacks, or 'camera stacking', or Ambient Occlusion, or...

<comment><USER10> That's pretty bad, but I'd still file that under "too-hastily deprecating things before the new version is at parity". Not that it isn't a huge issue, but could it be a temporary issue? Is the newer one, in theory, on a good track for the long-term?

<comment> squeaky-clean The newer one (URP) is already in its second rewrite after ditching the initial version (LWRP). They also completely split the post-processing stack into two incompatible stacks depending on whether you're using URP or HDRP, then backtracked and are attempting to merge them into a single stack again.

So while maybe they'll get it all fixed soon, based on their track record I'm pretty cynical and bet it's more likely in 2021 or 2022 they'll announce yet another overhaul of the rendering stack(s), probably unifying them back into one stack or something.

<comment><USER12> Absolutely. One more additional thing: the latest back-track has been the URP- is-not-a-standalone-package anymore, URP package versions going forward are going to be tied to a specific Editor version. I imagine this is going to make the ability to backport features and bug fixes incredibly difficult because the dependencies are going to be so tightly enmeshed.

</comment></comment></comment></comment></comment></comment><comment><USER13> I'm quite bearish on Unity in the long run.

Unity to me seems like a team with a fantastic marketing department to contrast with a much weaker engineering department. I've tried to use Unity off and on for years and every time I spend time learning it, I regret it. I'm a full-time React developer, and the difference in engineering culture and best engineering practices between Unity and React is massive. The Unity experience is riddled with bugs, poorly-thought-out workflows, and half- finished or obsolete features. Simple tasks, more often than not, become an exercise in frustration. I've written a blog post about this[1], though it's incomplete (mostly because somewhere after writing the 2000th word I wondered why I was even using Unity at all) so I've never published it anywhere.

I've honestly wondered a lot why Unity is successful at all, and the only answer I can really come to is that their direct competition - Unreal Engine, and a few other studio-made engines like CryEngine - are even worse. (Which leads to another question: why is it so hard to make a good game engine? But that would be another thousand words, so let's not stray too far from the point...) Godot is a glimmer on the horizon, but it looks like it still needs a few years to catch up.

I also have a sneaking suspicion that Unity is successful because it is used by a lot of people as their introduction into programming, and they simply don't know that anything better is possible.

Still, I suspect that most developers who use Unity will eventually reach the same conclusion and move on, and this seems to be confirmed by the google trends graph, which has been sloping steadily downwards over the last 5 years or so[2].

[1]: [https://www.notion.so/UnityIsFundamentallyBroken-e3b1474e7af...](https://www.notion.so/UnityIsFundamentallyBroken-e3b1474e7afb42bdb05cadcd3c2dbd77)

[2]: [https://trends.google.com/trends/explore?date=all&geo=US&q=%...](https://trends.google.com/trends/explore?date=all&geo=US&q=%2Fm%2F0dmyvh)

<comment><USER14> Comparing a web library to game engine is a bit of a stretch.

Unity is very nice to develop actually. It's a lot more simple than UE4 for example, but UE4 is much better suited for more complicated games, but then again, Subnautica is made in Unity, so Unity is very flexible.

Neither is "bad" or "worse". Unity is obviously not perfect, but video game engines move and change all the time, that is the nature of the video game industry.

Unity is mostly used for mobile video games, to which UE4 is not that much suited because it's more complicated and requires a better phone + the apk size will be larger in the end.

<comment><USER13> It's really not as much of a stretch as you might think.

Let's put aside everything that the two libraries actually _do_ for a second, and just think about them in the abstract. React very clearly tries to _guide the developer towards correct patterns and abstractions._ It's clear that React developers have thought very deeply about how to lead engineers towards the happy path of code with fewer bugs in it. It throws loud errors and warnings if you do something that could even potentially lead to an error down the line. They deprecate and eventually remove broken features. And it almost goes without saying, but they finish the features they're working on, rather than leaving them in the codebase in a half-finished state.

Unity does none of these things. Unity doesn't mark old features as deprecated: you could be using a deprecated or obsolete API for months without ever recognizing it because the only communication Unity gives you is a post on the Unity blog post from years ago. (This has happened to be multiple times.) Unity doesn't tell you when you're doing something wrong - you can still StartCoroutine with a string, even though you should be using a function reference. Unity absolutely does not try to lead your code towards the happy path of fewer bugs - GetComponent<>, possibly the most used Unity function, can easily trigger bugs because Unity does not statically verify that the component you're looking up exists, so if you forget and remove it later, your code will crash. React is very intentionally designed _not_ to have problems like this.

I wrote like 4000 words on this topic, if you want more detail. Feel free to dig in if you'd like: [https://www.notion.so/UnityIsFundamentallyBroken-e3b1474e7af...](https://www.notion.so/UnityIsFundamentallyBroken-e3b1474e7afb42bdb05cadcd3c2dbd77)

<comment><USER15> AAA here. Actually, it is a stretch, because you're expecting an entirely different discipline of software development to reflect the trends, knowledge, and assumptions of your discipline. We are a CryEngine shop but I've used Unity extensively for MVP pitches, spec work, and side projects. I also left the Web vertical to do this so I still have context from your side as well.

I took the time to read what you've written. Just about every single point you made in that essay can be distilled to "Web developer with strong convictions about Web software engineering and expecting game development to look like familiar territory," with only a couple exceptions. I read that essay and I walk away with "that person is going to have a hard time if they pursue professional game development," not the intended conclusion you had about Unity's lackings. That's reflected in nearly every concern about Unity expressed in this thread because this is a Web forum.

Unity has deficiencies we are all aware of in the industry, but none of them are in your essay. Several of your points are misunderstandings, several are just wrong, and all of them paint a picture which also gives a lot of AAA shops pause about hiring Web folks (and that I've had to deal with): there's a pretty strong strain among the Web industry of "if you don't do software like FAANG does, you're doing it wrong and your stuff is terrible." Meanwhile, the stuff you call bad/terrible/worse is generating billions in revenue and employing thousands. Seriously, Unreal is worse than Unity? Nearly stopped reading there.

I'm reminded of a friend who does control development for factories and had someone come in straight from a Google internship who started trying to reimplement SCADA from first principles using Kubernetes. The Web is one way to do software engineering. There are others, and one of those others is reflected in the design of Unity.

<comment><USER16> Game programming _isn 't_—or at least _shouldn 't be_—so different from other fields that fundamental software engineering principles do not apply. It seems like discarding criticism just because it comes from outside the immediate industry is going to lead to an insular culture and get in the way of any real change or progress.

Doubly so for an industry that still has high-profile, highly funded projects (Battlefield V, Anthem... etc) flounder because of technical debt and poor tooling. (And yes, these issues are all downstream of awful management for those particular projects, but that doesn't change the technical side of things!)

<comment><USER16> This goes in the other direction too: other fields can and should borrow ideas from game programming. At the end of the day the goals of different software projects are pretty comparable: we all want to produce quality code, minimize bugs and do it as quickly and productively as we can. The details and trade- offs aren't identical, to be sure, but at the end of the day different programming fields are far more alike than not.

</comment></comment></comment></comment></comment></comment><comment><USER17> Having followed this space for some time, Unity made huge strides at the beginning but has become notorious for punishing shiny features while leaving things broken or half-supported, which makes the developer's life hard if you happen to run into one of those bugs. Closed source means you're stuck writing ugly workarounds.

My impression was that you can bootstrap some incredible stuff in Unity, but demanding kinds of games will push you into its uglier corners and leave you at the mercy of its updating schedule.

This is very different from Unreal, or even Godot, which have their own trade offs. But it seems to me like there is enough of a "mid market" for all of them to coexist.

<comment><USER18> Hearthstone is built with Unity. I don't know if it's on Blizzard or on Unity (though, comparing things to other Blizzard games, I'd suspect Unity), but Hearthstone uses an awful lot of resources and is quite laggy on mobile, despite it presenting a pretty bare-bones 3D scene with barely any special effects.

<comment><USER19> Card games use a lot of high res art. They take a surprising amount of textures.

<comment><USER18> Have you played Hearthstone? It was released in 2013 and I wouldn't call their graphics "high end" by any stretch of the imagination. If racing games or FIFA run fluently on a Galaxy Tab S4, so should Hearthstone...

Even their PC version is laggy, check out streamers restarting the game (!) before important and action packed battlegrounds turns.

<comment><USER19> Racing games and FIFA can reuse a lot of texture data. Same rock. Same uniform. Repeating crowd. That said, HS just runs on mobile. It's not optimized for it. It's obvious when you can only look at a chunk of your collection at a time instead of smoothly scrolling that the cards take up a lot of ram.

Users also have a lot more control over what is shown on screen. For a FIFA game everything is loaded beforehand. In a card game that has to hide information, it has to load as the game progresses.

<comment><USER20> I don't think that's actually a fair explanation for why the game is so janky. Very simple animations that aren't loading new resources like Ysera Unleashed visibly badly lag even on the top end machines used for tournaments.

Maybe more clearly, whenever you enter a game there's a loading spinner that freezes for several seconds even on the very highest end desktops; you'd think for a game whose main graphics concern is exactly "image asset streaming from disk", they have wouldn't need to hard-freeze the menu UI to do the loading.

<comment><USER19> Its not an explanation for why the game is janky. Its a rebuttal to the comment that HS(card games in general, really) is bare bones or should be trivial to run well. Almost certainly they could fix the issue with background thread loading and some UI tweaks if they wanted to. That said, the issue is most likely that they're simply loading texture data from disk on the main thread. This is the default Unity behavior with asset loads and it's not really possible to hit their RAM quotas if they load every card. A subset of cards reveals information.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> Ehh.

I really hope Unity raises tons of money , and inspires some decent competition here.

Unity is the worst game engine, aside from all others. UE4 is a convoluted mess. I've tired several times , but even getting it setup with the C++ build chain is a pain.

Godot ( which epic funded recently ) isn't done yet.

I'm going to stick with Unity until someone else can build an easy to use game engine. Ultimately Unity does tons of very difficult things, like I wouldn't want to write build systems for a half dozen platforms solo.

The asset store is easily Unity's greatest advantage. With about 1000$ and a month you can make a full playable games. I also owe Unity my career. I work far from game design , but Unity taught me how to program.

In my dream Valve releases Source 2 , it's just as easy to use as Unity and then game developers have a real choice.

Or I get a spare 600k to build something in UE4. I'm a fairly experienced programer and I still can't make heads or tails of it

<comment><USER22> I'm a highly experienced programmer and I can't get started with Unity. Maybe I'm just an old curmudgeon now. But I just want to see some code and drive from code. The workflow of starting from objects and scenes in a GUI and attaching scripts is totally foreign to me. And then most of the tutorials seem to be videos, which I have no patience for, with text I can skip around and tailor my learning to my personal needs. And then I have no idea how to predict if any given video or documentation or sample project is out of date. It's extremely frustrating and makes me feel dumb and old.

<comment> squeaky-clean I originally had this mindset. Still kind of do. But the way of managing things through gameobjects, serializable components, and the scene hierarchy UI is very beneficial when you have non-programmers working on your game with you.

It's annoying when you're a solo dev who wants to handle everything in code, but they're definitely trying to optimize the workflow for a small diverse team rather than for a programmer or group of only programmers.

> And then I have no idea how to predict if any given video or documentation > or sample project is out of date.

100% agree with this. I wish I could just buy a comprehensive book on an older version of Unity and stay on that as long as I can. But I can't really find much for more advanced Unity that doesn't exist as a video or GDC talk. (though an exception would be the catlikecoding tutorials)

<comment><USER23> > the way of managing things through gameobjects, serializable components, and > the scene hierarchy UI is very beneficial when you have non-programmers > working on your game with you.

honestly it's extremely useful even if you're an experienced programmer working alone. Being able to pause the simulation, move some objects around in space, and then resume the simulation is extremely powerful. Typing out the coordinates into code would: be ridiculously tedious -and- force you to commit to disk (by writing the files) the changes to something you really only need in memory. Being able to play with the state of the simulation by hand is extremely powerful.

</comment></comment></comment></comment><comment><USER24> This should be a monster. We have no direct game development tools exposure on the stock market, unless you count Autodesk, but their tools are usable by other industries. That means it's gonna be shouldering a burden for an entire industry, and one that the stock market doesn't understand or appreciate. Potential for going either way, really.

Development tools have traditionally been a poor investment long term, but that's not been the case since about 2010, especially since Atlassian went public.

Unity is also gonna be a proxy for Unreal. Since these two competitors are not directly competing on the stock market, Unity should be a bit of a mirror for what the market thinks Unreal would be worth on its own.

<comment><USER25> > That means it's gonna be shouldering a burden for an entire industry

> Unity is also gonna be a proxy for Unreal

Why do you think it has to do all these things? Why can't it just be a stock on its own?

<comment><USER26> There's always a sector influence on the valuation of stocks - if an analyst writes a report saying the gaming sector as a whole is going to grow 1000x in the next 10 years, you can bet people will be looking for stocks to ride that wave.

If Unity is the only buyable stock in the sector, then they'll feel the impact.

<comment><USER27> There are lots of existing stocks in the gaming sector though, so it would need to be more like "game engines are going to grow 1000x".

</comment></comment></comment></comment><comment><USER28> "We have experienced rapid growth. Our revenue grew from $380.8 million to $541.8 million for the years ended December 31, 2018 and 2019, respectively, representing year-over-year growth of 42%, and from $252.8 million to $351.3 million for the six months ended June 30, 2019 and 2020, respectively, representing period-over-period growth of 39%. We generated net losses for the years ended December 31, 2018 and 2019, and six months ended June 30, 2019 and 2020, of $131.6 million, $163.2 million, $67.1 million and $54.1 million, respectively, which included $20.9 million, $44.5 million, $14.8 million and $21.7 million, respectively, of stock-based compensation expense. We reduced our net cash used in operating activities from $81.1 million to $67.9 million for the years ended December 31, 2018 and 2019, respectively, and from $19.8 million to $15.4 million for the six months ended June 30, 2019 and 2020, respectively."

Promising financials!

<comment><USER29> But growth is already slowing from 2018-2019 vs 2019-2020 period.

40% YoY growth for SaaS is par for the course, and the revenue figure is a bit light.

Not necessarily a home run in the public markets though if there's a time to do a tech IPO it's now given the frothiness of the market.

<comment><USER30> I've heard this term used a few times now - a "frothy market," or a "frothy startup," but I'm not familiar with it. What does frothiness mean in terms of markets?

</comment></comment></comment><comment><USER31> It is clear from the financials that in the coming months/years, they will be pressured (or simply need to) cut back massively on R&D, marketing, etc.

They have a gross profit margin of 78% in the last 2 years (revenue - <USER2> operating costs), but then if you subtract R&D, sales + marketing, admin, it drops to -30% net profit.

Not even knowing that much about them, you can see what's about to happen.

<comment><AUTHOR> this is the story of almost every tech company at ipo, whats the big deal?

</comment></comment><comment><USER32> I'm bullish on Unity (especially with how it's positioned to take advantage of the AR/VR boom). I know Facebook tried to buy them at some point, and am glad that didn't pan out after watching what they've done with Oculus.

As someone who has invested heavily in SaaS stocks, I know the current market is likely going to want to send this thing to space. There has arguably never been a better time to IPO.

</comment><comment><USER33> Unity filing for an IPO is very interesting. I use both Unity and Tableau and they have always seemed very similar to me in terms of marketing. They have massive communities and excel at getting people up to speed and making you feel powerful. However, once you get passed the "beginner-intermediate" phase you realize this isn't really all its cracked up to be but at that point you invested time into learning them and they technically get the job done so you stick with it.

</comment><comment><USER34> > Industries Beyond Gaming: In industries beyond gaming, we estimate the > market opportunity for our Create Solutions and Operate Solutions to be > approximately $17 billion today, based on the number of software developers, > architects and designers our solutions could potentially serve.

There is a graphic I stumbled upon years ago - I haven't been able to find it recently - that described Facebook's gameplan - 10-20 years out. It basically described how the focus of the platform would evolve with how effectively users would be able to share their lives with their network, in progression with technology, or - more specifically - the price of bandwidth. Let me explain:

FB early years was very text-centric. I recall not "getting it" because it was effectively a tricked-out twitter. Kinda like Asana vs Clickup today - <USER3> features doesn't directly translate to "better". I of course didn't factor in the "network effect". I digress. Early years was text-centric.

When internet speeds picked up (without much of an increase in price to the end user), photos became more of a focus. The Instagram acquisition happened around this timeframe

At the time I found this graphic, The same price/data speed phenomenon was in effect and FB was transitioning to video as its core sharing focus. Facebook acquires Occulus, which leads into the last part of the graphic -

VR. I remember MZ's Mark Zuckerberg's virtual Puerto Rico jaunt. New tech is often akward, but knowing Facebook a player in an industry typically "beyond gaming" is in line to blur that line, is one good example of the viability of Unity as a real revenue producing entity.

This is getting a little long winded, but I think this next part drives the point home.

I'm a real estate agent, and I used to work at a brokerage called Exp (NASDAQ: EXPI). Their pitch (to agents) is that they are a "cloud-based brokerage". While not required - there is a Club Penguin-esque "world" you log into, make an avatar, walk around and an attend meetings in auditoriums. Its very cheesy, but as mentioned above, all new tech is cheesy. Check out Exp stock performance this year. Unity is in a prime position to work with companies in "non-gaming industries" looking to keep current and move with the pace of tech

</comment><comment><USER35> Unity has completely destroyed my faith in their ability to deliver on anything other than marketing.

\- It took them YEARS to deliver their new input system. Think about that. A company with Unity's resources took YEARS to develop a system that takes inputs from keyboards, mice, and gamepads and routes them to C# callbacks. YEARS.

\- They completely abandoned their networking system (UNET) without a replacement system... This was YEARS ago and we STILL don't have a production- ready replacement.

\- They wrote a new render pipeline called the Universal Render Pipeline (URP) and marketed it as a production-ready replacement for the old built-in renderer. However, the new pipeline isn't even close to feature-parity and the remaining features are still in development. How in the world is that a "production-ready replacement"???

<comment><USER19> Its not that they can't build anything. URP is ok. It cuts out features that made it slower so its not going to ever hit feature parity. The problem is indeed that the marketing oversold it. They should have never suggested devs "move" to URP. For new games its alright.

<comment><USER36> URP doesn't support casting dynamic shadows from point lights[0], something which many games use and should really be a feature in a production-ready game engine.

[0]: [https://forum.unity.com/threads/urp-point-light- shadows.8819...](https://forum.unity.com/threads/urp-point-light- shadows.881902/)

</comment></comment></comment><comment><USER37> Very, very few Danish tech startups are listed. There are literally years in between, unless you count NASDAQ First North. I guess this is the way to do it :-)

<comment><USER38> Is Unity Danish anymore? I mean, it got started in Copenhagen and its founder is Danish but that's the extent of it.

I don't think people say Basecamp is a Danish company just because DHH is Danish.

Not trying to poke holes at your statement. Just genuinely curious on what determines where a company is from. In my book, headquarters location is the baseline.

<comment><USER39> According to the Danish Companies House they haven't been very Danish since 2015. They've moved ownership 100% to Singapore (and from there, who knows).

Still 300 FTEs in Denmark, though.

[https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&...](https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&id=30719913&soeg=unity%20technologies&type=undefined&language=uk) (the original company with David Helgason etc)

[https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&...](https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&id=30719883&language=uk) (IP company)

[https://datacvr.virk.dk/data/visenhed?enhedstype=person&id=4...](https://datacvr.virk.dk/data/visenhed?enhedstype=person&id=4006112978&soeg=unity%20technologies&type=undefined&language=uk) (reference to the Singaporean company)

</comment></comment></comment><comment><USER40> In 5 years Unity will completely dominate the creative space, even outside of games you're going to be finding this tech everywhere and there is no double in my mind you'll be seeing the unity logo at the end of summer blockbuster credit sequences.

<comment><USER41> Unreal Engine is already very far ahead into the cinema space and already being used in numerous works being produced. Epic has been investing money into supporting toolchains and devices built to support Unreal Engine in cinema to boot. I simply don't see Unity catching up.

</comment></comment><comment><USER42> reading most of these comments, its clear and odd that people view "going public" or filing an S-1 as a coveted position, something that someone "deserves" or "doesn't deserve"

and to me that is a very odd side effect of companies not going public often

<comment> nv-vn I think it has to do with the fact that HN has many users who are employed at startups. When you get paid in what is essentially monopoly money, you're going to be envious of startups which are able to turn that into cash. It seems to me like it's just the side effect of people having 90% of their net worth tied into a private company's equity and wanting the golden ticket to actually redeem it.

<comment><USER42> Tragic, but not really, either way I would like to see more nuanced discussions just about its under or overpricing, or something more overt like its "pumpability".

Or maybe a discussion about how to get price discovery at lower valuations instead of just dumping on everyone's 401ks at high valuations.

</comment></comment></comment><comment><USER43> It seems like Epic is going to trounce Unity when they go public. They've got a more powerful engine, megahit game, and distribution platform.

<comment><USER44> I'm bull Epic too, but honestly, I don't care about the quality differences. The main thing Epic has going for them that Unity does not is it's diverse marketing channels. They are becoming huge in the cinematic, and broadcast markets, huge markets Unity doesn't even have a presence in.

</comment></comment><comment><USER45> I wish them the best, they have transformed the landscape of indie game development really drastically and forced others (Unreal) to follow suit.

<comment><USER46> I'm surprised by this perspective. I see Unreal as leading the charge for indies and Unity struggling to follow suit.

* Vastly better free content to throw in your games

* Source available engine

* No fees on the first million dollars of gross revenue

* Clear communication on roadmap for engine development and what's going to stay vs. change

</comment></comment><comment><USER47> Interesting given the current issues with their primary competitor Unreal Engine/Epic, although the timing of this IPO is 100% coincidental.

</comment><comment><USER48> Oh great, with all that money maybe they can get symlinks to work in Windows.

</comment><comment><USER49> Can someone explain what this means to a finance noob? Does this mean it will be possible to purchase stock in Unity soon?

<comment><USER50> Yes, it means that they are going through the paperwork required to do an IPO. [https://en.wikipedia.org/wiki/Form_S-1](https://en.wikipedia.org/wiki/Form_S-1)

<comment><USER4> How long does this process usually take?

<comment><USER51> ~ 2+ months

</comment></comment></comment></comment><comment><USER52> Audio recording API in Unity is awful, you can only record a short clip on button press and thats it. No continuous listening, no sample rate configuration, no realtime. And processing thread changes from version to version. We had big trouble implementing speech recognition with Vosk in Unity.

</comment><comment><USER53> Having only just installed Unity over the weekend and starting to go through tutorials and starting to understand how I can build AR/VR/XR 'things', I've started to see the light and wished I'd started on this a while ago.

I also see they acquired 'Bolt' and made that part of the free toolset. I think 'visual programming' tools like that could be a great help in adoption by young developers. I also like that visual aides like that can help the understanding of underlying code.

This S-1 is a surprise, yet not. If you know what I mean.

Out of the various IPOs I've seen crop up recently, this is the one I'd go for, due to the changes in the way people are to going to have to learn and work, since the pandemic.

Right technology. Right time.

</comment><comment><USER54> There's no mention of Apple here, but I suspect the timing of this is directly related to Apple threatening to cut off Epic's SDK access due to the fight over app purchase fees. This was almost certainly in the works already, but now they need to accelerate it.

<comment><USER55> In my experience it is exceedingly difficult to meaningfully accelerate the timelines on publishing an S-1. There are too many lawyers, financial audits, investor roadshow schedules, et cetera. This is likely pure coincidence.

<comment><USER54> I was confused and mixed up a story about Apple blocking Unreal Engine, thinking that Epic owned Unity. I figured they had been playing the long game, preparing a Unity IPO to launch in case Apple tried to block it.

</comment></comment></comment><comment><USER56> Unity's done great things in its space. I worry about its long term prospects against the likes of Epic, who are going to be able to vertically integrate Unreal Engine with the epic games store and thus compete in ways Unity can't. I think a better business strategy would've been acquisition that could've given them that synergy, but I can also understand that, for the owners, the biggest cash out may not be what they're going for.

</comment><comment><USER57> as a counterpoint to all the complaints, i still think unity is by far the easiest game engine to pickup even for people who've never coded before. and there's so many resources out there to pick it up that there isn't really a strong competitor imo despite any potential misteps

</comment><comment><USER58> > Our common stock is currently not listed on any securities exchange. We have > applied to have our common stock listed on the NYSE under the symbol "U".

U like Unity, not Uber or Unreal.

</comment><comment><USER59> There revenue strategy is bad. They really should've had a cut from sales after a certain threshold, similar to UE4.

Now they make peanuts from people who make millions using unity.

</comment><comment><USER60> What's their plan to someday turn a profit?

</comment><comment><USER61> Hopefully this will allow them to start a grant program in the same vein as Epic MegaGrants.

</comment><comment><USER62> Web developers are learning it's all pointer math on arrays.

Which game engines happen to be heavily optimized for.

SRE tools could be VR based. Omg lookit me pretending to manage a real server. Meanwhile its just sending something that conforms to an API spec.

There's your singularity

</comment><comment><USER63> How can I short this?

<comment><USER64> Usually, there is a 'no short' window after IPO. It is better to buy put options as it limits your downside risk. Unless you are a big dog (can actually effect the market). Then shorting is better because you can force the price in your favor.

<comment><USER63> put options are fine too, do you know where I can buy them?

<comment><USER65> You can only get them after they eventually IPO.

<comment><USER66> I believe there is a wait time before options are available on new listings also

<comment><USER67> There probably is.</comment></comment></comment></comment></comment></comment>


FDA launches openFDA to provide easy access to valuable FDA public data - <AUTHOR> http://www.fda.gov/NewsEvents/Newsroom/PressAnnouncements/ucm399335.htm?source=govdelivery&utm_medium=email&utm_source=govdelivery

<comment><USER2> Great to see this on HN! I'm one of the openFDA core team members and would love to help people who are interested in using the public drug adverse event API. It's good to note that we've also released all of the source code behind the platform ([https://github.com/fda](https://github.com/fda)) and are actively interested in having members of the community help us make improvements.

Please do ping me if you have any questions about the API or want to learn more! email@example.com

Also, here's a direct link to the API documentation: [https://open.fda.gov/drug/event](https://open.fda.gov/drug/event)

<comment><USER3> I'm sure a lot of people, myself included, feel that government projects would be better and cheaper if they were developed as open source rather the the typical proprietary solutions developed by contractors that we see today.

What's your take on government and open source projects like this one?

<comment><USER4> The current state of federal IT contracting is so horrendous, that it is worth trying something if it has a 50% chance of failure, but how much harder is it to get contractors to work on a project if your contract mandates that it be open source or Free Software?

seanherron, do you work for a contractor or are you an in-house developer for the FDA or another federal agency?

<comment><USER2> I'm a federal employee serving as a Presidential Innovation Fellow ([http://whitehouse.gov/innovationfellows](http://whitehouse.gov/innovationfellows)) working on open data initiatives at the FDA. We worked with a contractor to build the platform and were happy to find they were incredibly excited about the prospect of open source.

<comment><USER4> Well if the site turned out well and you liked the experience of working with them, give the contractor some love! Who are they?

<comment><USER5> We're Iodine ([http://www.iodine.com](http://www.iodine.com)), a consumer health startup based in SF. Our backgrounds are varied but many of us came from Google, including three of us from the search team. We're big believers in both open source and open data and we're excited to be part of openFDA!

</comment></comment></comment></comment></comment></comment><comment><USER6> Hey guys, I'm an owner of DrugCite.com, we've talked to the FDA a few times over the last few years while building our site (They contacted us at various points with questions). They let us know last August they would be releasing this site but I guess I never thought it would so close to ours. Examples: Our Drug Page: [http://www.drugcite.com/?q=ABILIFY](http://www.drugcite.com/?q=ABILIFY) FDA Drug Page [http://open.fda.gov/drug/event/](http://open.fda.gov/drug/event/)

Looks like they're including some data we didn't previous have access to or know about. Anyways, make no mistake this is huge and will be incredibly useful for doctors and patients everywhere, this is some great data. This is the type of data that should be investigated before you take any medication, prescription or not. I can see some of this data becoming common label information shortly.

<comment><USER7> I am sorry I don't see any similarities between the two pages.

</comment></comment><comment><USER8> If you're interested in this, you should also check out the UMLS published by the National Institutes of Health.

[https://www.nlm.nih.gov/research/umls/](https://www.nlm.nih.gov/research/umls/)

It's a very big semantic database of health terminology. Among other things, it has a subset called RxNorm that contains all currently prescribe-able prescription drugs.

I've been very impressed with it and I feel like not enough people have heard of it.

</comment><comment><USER9> I have some history working with the Adverse Event Reporting data. The API is nice, but it just exposes what they already offer in flat files .... stale data. Does it seem reasonable to you that the FDA runs a year behind on this data?

[http://www.fda.gov/Drugs/GuidanceComplianceRegulatoryInforma...](http://www.fda.gov/Drugs/GuidanceComplianceRegulatoryInformation/Surveillance/AdverseDrugEffects/ucm082193.htm)

They don't respond: [https://twitter.com/statwonk/status/413355130461761536](https://twitter.com/statwonk/status/413355130461761536)

</comment><comment><USER10> This is awesome. Adding to the list of US Federal APIs - [http://18f.github.io/API-All-the-X/pages/status](http://18f.github.io/API- All-the-X/pages/status)

</comment><comment><USER11> My colleague and I have developed a search interface for web browsers at [http://openfdasearch.herokuapp.com/](http://openfdasearch.herokuapp.com/)

Feel free to tweet at us at @SocialHealthIs, @Geek_Nurse, and/or @Skram

</comment><comment><USER12> It's really encouraging to see that there's someone in the U.S. gov't who not only cares about open source and the associated effects of transparency, but has some practical experience* in it.

The openFDA website is built on Jekyll ([https://github.com/FDA/open.fda.gov](https://github.com/FDA/open.fda.gov)) and its API is powered with Python and Node.js ([https://github.com/FDA/openfda](https://github.com/FDA/openfda))...It's not just the framework/current-tooling that is nice, but that such systems use open, readable formats (such as Markdown for the web pages).

The current administration has always paid lip-service toward open- source...they won't satisfy people who think "open source" and "government" means hand over just about everything...but they're doing a good job making inroads on the parts of the U.S. data interfaces that were well-intended, but so obfuscated by poor design that it was a job in itself to parse/scrape their sites.

(FDA has always had really exhaustive dumps of their data...strewn about their legacy site...the API isn't as interesting to me as the documentation for the API and the pipeline of data)

* I don't want to just slag on Drupal...but Drupal was what Obama's head tech officer wanted in place, and to their credit, they did open-source parts of their custom Drupal modules...which were not particularly useful, because of the particulars of Drupal's module system and its quickly changing API...nevermind being only useful for other Drupal installations. But a lot of credit has to go to the U.S. gov't for pivoting off of Drupal to a mix of WordPress, Jekyll, and even node.js sites with less coupled components. It's been only about two or so years since Data.gov open-sourced its Drupal components before promptly switching to WordPress and CKAN modules...considering how a non-significant number of the fed sites are built on 12+ year-old code...the turnaround in the U.S. gov's stack is pretty amazing...(when it's not attempted on a service-critical site, such as healthcare.gov)

</comment><comment><USER13> Awesome initiative! As I was testing it, I noticed that the response consists of prettified JSON. I'm guessing that all that whitespace can be removed to save bandwidth?

<comment><USER5> Thanks!

We support gzip on the api json response for clients that support it. Given that, I'd expect the size improvements would be minimal for whitespace stripping but let us know if you have evidence to the contrary!

<comment><USER13> Good point! I always blindly assumed that removing whitespaces would lead to a decent size improvement, even after gzipping, so I ran a small test (gzip on linux, default parameters):

[http://i.imgur.com/U1O4Xg5.png](http://i.imgur.com/U1O4Xg5.png)

The raw json contains the whitespaces, while they were removed in the minified json. So there is a 47% improvement for the uncompressed version, and a 21% improvement for the compressed version.

What would be interesting to see is how the second (compressed) number scales with the filesize (I don't know enough about compression algorithms to guess that).

EDIT: I really don't know how to format a table in plaintext...

</comment></comment></comment><comment><USER14> Ok. This is actually pretty surprising and welcomed news!

</comment><comment><USER15> Impressed, very very useful. Thanks!

</comment><comment><USER16> I hope the NSA will do the same and also open their datasets... maybe someone could catch someone who plans some "terroristic" actions before they happen...</comment>


How the Nathan Barley Nightmare Came True - <AUTHOR> http://www.theguardian.com/tv-and-radio/2015/feb/10/nathan-barley-charlie-brooker-east-london-comedy

<comment><USER2> Lots of Barley's discreetly hidden away in expensive office blocks too:

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

Barley was fun. I see Hoot Your Trap Off is still online! [http://trashbat.co.ck/](http://trashbat.co.ck/)

Cook Islands FTW</comment>


Bose headphones spy on listeners: lawsuit - <AUTHOR> http://reuters.com/article/idUSKBN17L2BT <comment><USER2> Previously on HN: [https://news.ycombinator.com/item?id=14148145](https://news.ycombinator.com/item?id=14148145)

</comment><comment><USER3> Highly misleading headline (though I'm appalled by the apps' data collection as well). The headline suggests (and it was why I initially clicked it) that the noise-cancelling microphones listened on the user and transmitted those recordings to Bose. Now _that_ what be a proper scandal.

</comment><comment><USER4> Statement from Bose's home page ([https://www.bose.com/en_us/index.html](https://www.bose.com/en_us/index.html)):

A message to our Bose Connect App customers

April 20, 2017 We understand the nature of Class Action lawsuits. And we'll fight the inflammatory, misleading allegations made against us through the legal system.

For now, we want to talk directly to you. Nothing is more important to us than your trust. We work tirelessly to earn and keep it, and have for over 50 years. That's never changed, and never will. In the Bose Connect App, we don't wiretap your communications, we don't sell your information, and we don't use anything we collect to identify you – or anyone else – by name.

If there's anything else we think you should know, you'll hear it straight from us.

April 23, 2017 We told you you'd hear things straight from us. We've answered your questions when they've come in, but when news stories repeat misleading information from a class action lawsuit, we have to repeat our response to clarify. So we're going to share with everyone what we've shared with those of you who've contacted us directly, and what we've shared more broadly to correct the record.

First, our privacy policy can be found on the Connect App. You'll find that the Connect App collects standard things to make your experience, and our products, better -- like device information, app performance, and app and product usage. That includes information about songs playing on the device, volume played, and other usage data.

But you have to be using the Connect App with your Bose product for that to happen. You can use every Bose Bluetooth product without the Connect App.

For as long as we're hearing from you, you'll keep hearing from us. And we'll keep posting additional information that you haven't asked us about, too.

</comment><comment><USER5> I submitted an Amazon review for my QC35 (purchased on Amazon) mentioning the questionable privacy policy.

It was instantly denied (..."not following review guidelines...")

<comment><USER6> I've just done the same...wonder if they will publish mine. The app store did publish it.

Edit: mine has been instantly published and I see another from 2 days ago that also cites concerns. I wonder if it will be removed.

</comment></comment><comment><USER7> The prevalence of suing in the US always surprises me. I wonder though: Can Kyle Zak (the plaintiff) be just anybody? Does he need to prove any damage occurred to him as a result, or is the violation of TOS enough?

"Zak is seeking millions of dollars of damages for buyers of headphones and speakers"

who would hypothetically get said millions? This doesn't seem to be a class action.

</comment><comment><USER8> Does this mean that anyone who's using Segment to collect data on their customer and sends it to a warehouse like Google Big Query is more likely to have a problem because the data is "shared" with two third parties? (pardon my ignorance, not good with this stuff)

<comment><USER9> I believe that is the reason we have "cookie law" in EU.

</comment></comment><comment><USER10> The app does, not the headphones themselves.

Source: reddit :P

<comment><USER11> Ah, I was going to ask why in Earth someone would create Internet-enabled headphones but I wouldn't have been particularly surprised.

<comment><USER12> For the same reason Internet-connected "bottles of wine" exist: people want to take advantage of the "smart" and "IoT" buzzwords, no matter how little sense such products make, and how much they expose users to hacking and privacy invasions.

[https://www.theverge.com/2016/3/28/11317518/kuvee-bottle- kee...](https://www.theverge.com/2016/3/28/11317518/kuvee-bottle-keep-wine- fresh-smart-wi-fi)

</comment></comment></comment><comment><USER13> A more in depth look into what data is collected by a security researcher:

[https://bscc.support/files/bc_privacy/bose_connect_privacy_e...](https://bscc.support/files/bc_privacy/bose_connect_privacy_evaluation.pdf)

</comment><comment> bjelkeman-again This type of case could get interesting with the new EU data privacy laws, GDPR, coming into effect in a year (May 2018).

You have to be able to prove consent. "Controllers should also implement mechanisms to ensure that personal data is only processed when necessary for each specific purpose." It will be interesting to see which type of cumbersome consent forms we are going to have to go through when this comes into effect.

[https://en.m.wikipedia.org/wiki/General_Data_Protection_Regu...](https://en.m.wikipedia.org/wiki/General_Data_Protection_Regulation)

<comment><USER14> The interesting bit with consent (for EU data protection stuff) is that it has be freely given (so you have to be able to say no), and it has to be informed, so you'd have to show that the person _knew_ what they were signing up for. 20 pages of legalese is probably not "consent"

</comment></comment><comment><USER15> always monitor your TCP connections.

<comment><USER16> Is there an easy way to do this on iOS?

I use Little Snitch on my laptop, but haven't ever found an equivalent for mobile devices.

<comment><USER17> Enable Always-On VPN on iOS and monitor traffic at the VPN device.</comment></comment></comment>


Amazon projected to pay 0 federal income tax, second year in a row - <AUTHOR> https://theweek.com/speedreads/823590/amazon-pay-0-federal-income-taxes-second-year-row <comment><USER2> rather than making them pay income tax why don't we make it so nobody pays income tax?

<comment><USER3> :thinking_face:

Very controversial libertarian thought, but not necessarily a dystopian one. Are you talking about income tax in general or just federal one? (Not sure we can do much with federal one)

But we def can do something with local taxes. Shifting some of the "governmental" responsibilities and distributions (police, fire dept, DMV offices, schools, etc etc) to a more efficient private entities (entities that can be laid off when not performing) might give local communities a huge boost. This might trigger a great backlash from UBI proponents though, since most of the government jobs are basically some versions if the UBI (you get you paycheck only for showing up kind of thing).

</comment></comment><comment><USER4> Bezos has almost always ran Amazon as a virtual nonprofit making expenses balance earnings.

<comment><USER5> IMHO, companies should operate in one of two modes... either paying shareholders any profit (zeroing out) or growing/expanding (zeroing out) and wouldn't pay taxes in either mode. I'm fine with either.

</comment></comment><comment><USER6> see prior discussion: [https://news.ycombinator.com/item?id=19155655](https://news.ycombinator.com/item?id=19155655)</comment>


Is libcURL slower than hand creating socket requests in C? - <AUTHOR> http://www.konceptz.com/2014/05/why-you-shouldnt-use-libcurl.html

<comment><USER2> _I still haven 't answered a very important question. Why is libcUrl so much slower?_

I would be very hesitant to be giving this kind of advice until i had an answer to that.

<comment><USER3> Agreed. libcurl may be broken, or it may be that there's a some default that's been compiled in that does weird things like try IPv6 DNS or... something weird. Could be that a simple options flag when initializing the library might fix the problem, and you have the benefit of using a well-used and well-tested library rather than your own likely-buggy code.

</comment></comment><comment><USER4> Far too little detail in this post.. e.g. how was the application handling the curl callbacks? I fixed one app that used repeated strcat() calls (which was never correct.. it was also handling binary data)

Would be nice if OP profiled his new code vs. his old code, though I'm guessing libcurl isn't the issue even without seeing profiling results

<comment><USER5> Agree, but it's still a bit of useful data, even if more would have been more useful.

</comment></comment><comment><USER6> A curious result, but the conclusion is ridiculous. I can think of a handful of explanations for this result, none of which would implicate libcurl.

-Incomparable harnesses

-Misuse of the library's api

-Build switches

-UA sniffing

-Not measuring or controlling for system/net load

This isn't a post about why you shouldn't use libcurl; it's a post about why you shouldn't benchmark your way to blind conclusions.

<comment><AUTHOR> Author here:

You're right about the conclusion, I'll reword the title.

As far as why, my calls are certainly in the post somewhat buried in the github code linked to directly on the post.

Certainly more attention should be paid to how testing was done, I'll update that later tonight.

<comment><USER7> If you do benchmarks you should also keep in mind that EC2 micro instances are terrible because they have highly variable CPU speeds which will be greatly reduced if the CPU load is high for a short time.

<comment><AUTHOR> This is very interesting, it's the first I've heard of this but I have experienced some issues implementing pthreads. This could be a reason.

Do you know where I might find some documentation on this?

<comment><USER7> There is only a small part on the EC2 website, where Amazon is mentioning it, as far as I know. However there are some blog posts about it: [http://blogs.adobe.com/digitalmedia/2011/02/amazon- ec2-micro...](http://blogs.adobe.com/digitalmedia/2011/02/amazon-ec2-micro- instance-and-stolen-cpu/) [http://hughht5.blogspot.de/2012/05/amazon- ec2-micro-instance...](http://hughht5.blogspot.de/2012/05/amazon-ec2-micro- instance-and-stolen.html?m=1)

</comment></comment></comment></comment></comment><comment><USER8> Given the final paragraph:

> I still haven't answered a very important question. Why is libcUrl so much > slower?

I'd assume it's likely a result of misuse of libcUrl, or cUrl properly implementing some part of the spec that this hand-rolled implementation ignores.

On top of this, the author's C code isn't very well written. There's use of `sprintf` without arithmetic bounds checks (really he should use `snprintf`), unnecessary construction of a one-character array (that's what a dereference is for), inconsistent whitespace, `malloc` when a stack allocation would make more sense, use of `unsigned char` instead of `char` for strings, etc.

From what I can tell, the libcUrl guys are serious about performance, and I have trouble believing such a wild allegation without any further analysis.

<comment><AUTHOR> >I'd assume it's likely a result of misuse of libcUrl, or cUrl properly implementing some part of the spec that this hand-rolled implementation ignores.

Author again. I have my code in the post, it would be helpful for me to see what mistakes I've made in libcUrl utilization.

<comment><USER8> I'm not familiar with libcUrl, so I can't say what you missed, but I am suspicious. Do however look at my complaints about your code. I understand that writing good safe C code is hard (I've written plenty of bad C code myself), but that's one reason why you should use cUrl. Any code you write yourself is another liability.

<comment><AUTHOR> I will certainly apply your suggestions to the code. Thanks

</comment></comment></comment></comment><comment><USER9> Smells of a DNS cache issue. Maybe libcurl is using its own resolver? I know at least it has its own in-process DNS cache that for example may not be activated by default with the easy API. Or that it can be compiled with c-ares support, etc.

<comment><AUTHOR> I wasn't aware of this, thank you I'll check it out!

</comment></comment><comment><USER10> Would it not be more likely that libcurl is battle-tested and adds layers upon layers of validation, correction, ssl support, cookie management and what not that hand-crafted requests don't?

</comment><comment><USER11> I recently tested some software that used libcurl, and it was also horrendously slow. I don't remember libcurl being so slow when I used it for a project a few years ago. It makes me wonder whether some more recent change made things a lot worse, at least for some configurations. Maybe it's DNS- related, as some have suggested. This is probably neither experimenter error nor the last word on the subject. More likely, it's a strong signal that there's something here worth investigating.

</comment><comment><USER12> I had to search on hn.aloglia because this ridiculously bad science got rightfully killed.

Did the OP even test with ruby/python/wget/curl ? Could be a DNS issue and nothing to do with libcurl.

Why spend all that time and not run `gprof` ?!

<comment><USER13> Looks like you're confusing things. While the article wasn't well done testing with your suggestions adds nothing more than unrelated , in the case of wget especially, background noise.

<comment><USER12> It does in terms of narrowing down why libcurl could be slow. Are you presupposing it is slow for some reason? Nearly all http libraries should be running at wire speed which is << native | interpreted.

Showing curl and wget from the command would have been highly beneficial. Would you not have tested that before writing an HTTP client in C?

<comment><USER13> I see your point here for some baseline but I'm opposed to the comment about adding implementation of every library under the sun.

<comment><USER12> I said nothing about an impl, I mean

        wget -vv http://localhost:8080/bigbin.bin --header="Range:bytes=1000-20000" -O test.out
        curl -vvv http://localhost:8080/bigbin.bin --header "Range: bytes=1000-200000" -o test.out

Both of these got 350MB/s +

for impl, it isn't terribly difficult

        In [2]: from requests import Request, Session
        In [3]: s = Session()
        In [8]: req = Request('GET', 'http://localhost:8080/bigbin.bin', headers = { 'Range' : 'bytes=1000-2000000' } )
        In [9]: prepped = s.prepare_request(req)
        In [10]: %timeit resp = s.send(prepped)
        1 loops, best of 3: 238 ms per loop

All of these are faster than what he outlined. So there is some _other_ issue going on. His hand rolled http request is faster but not for the reason he thinks. Crack out some wireshark, not some code.

</comment></comment></comment></comment></comment><comment><USER14> Title should be "libCurl is slow" since the article fails to present any alternative other than "make your own", which is unfeasible in many situations.

<comment><USER15> Please don't draw that conclusion yet. There are some serious issues with the blog post, I think "benchmarking is hard" might well prove to be a better re- title!

</comment></comment><comment><USER16> It seems kinda suspicious that 50 requests and 5 MB takes as long as 1000000 requests and 100 MB. It makes me think that something is wrong with your benchmark.

</comment><comment><USER15> It's suspicious that doing N requests of 100 bytes is slower than doing N requests of 10000 bytes. That doesn't pass the sniff-test for me.

<comment><AUTHOR> Good point, I found this odd as well. Because the requests are coming from EC2(NE) to S3 I believe that the pipe is very large and 100 byte vs 10000 bytes is not a large enough difference.</comment></comment>