Apple's 2013 Scorecard - <AUTHOR> http://hypercritical.co/2014/01/02/apples-2013-scorecard <comment><USER2> Chalk me up as a user for whom Messages seems to function as advertised. Most people don't take to the air to shout about how something as mundane as text messaging works fine for them.

<comment><USER3> Do you use messages across several devices? And do you have group chats?

If I use Messages just on my iPhone, it works just fine. However, when I use it between 2 macs, an iPhone, and an iPad, it just breaks.

Sure, it's an edge case use - most people use messages just on their phone - but it's a pretty basic feature.

<comment><USER4> Yep, to the first one. No, to the second one.

Works fine for me across the board. My only issue with it is how it's eating ~2gbs of disk space on my phone for attachments. I haven't figured out a way to get rid of it without going through and purging all my messages or formatting my phone.

</comment></comment></comment><comment><USER5> My biggest hope was: Make iTunes (mac) not suck. It's on a short list of the worst software I use every day. Just bringing down the spinny beach balls after every action would have gone a long way. I don't blame the vast majority of people who seem to be avoiding it altogether, I'll have to follow shortly.

<comment><USER6> It still makes no sense to me why, on the Mac, everything is glommed into a single app. For years I've been hoping that Apple breaks it apart into separate music, video, app store, and device syncing/management apps. Why should I be locked out of playing music or a video just because I'm restoring my iPod, and iTunes decides that it wants to present a modal progress bar until it's done?

<comment><USER7> I've been hoping that they might roll the iOS app store into the Mac App Store, and consolidate it all under the App Store banner.

</comment></comment></comment><comment><USER8> I don't want a BIGGER iPhone, I want a SMALLER one. Am I the only person that doesn't need a semi-tablet? I miss the days of the old tiny flip phones.

<comment><USER9> If you've never used a larger-screened phone, you may not see the benefits immediately. I went from a 4s to a Lumia 1020. Initially, I thought it was way too big, but the supple, thick, curved edges and ergonomic design of the 1020's case made it much easier to hold and I acclimated quickly. Going back to a 4s seems quaint and stupidly tiny now.

> I miss the days of the old tiny flip phones

This is progress. Either get with the times or get left behind. Use cases for mobile devices have completely changed, and now there are serious, tangible benefits to a large screened device that no one except an extreme minority is protesting. Note that this doesn't mean they all have to be tablet-sized; anywhere from 4 - 5" is what most would agree on as the perfect range for devices. The iPhone 5s/c isn't even 4". It's 3.997" if we want to be pedantic, which is too small for everything we use smartphones for now.

<comment><USER10> >This is progress. Either get with the times or get left behind.

In some areas. I'll tell you what: my "old tiny flip phone" never froze up, refusing to make phone calls, end phone calls, or respond to user input _at all_. That's pretty important when you really need to make a fucking phone call.

<comment><USER11> My Galaxy Nexus never did that either, and I used it for a good two years. Which phone do you have that works so badly?

<comment><USER10> Motorola Droid RAZR. I don't know if it's just a lightweight phone, or I've just put too much shit on it, or what, but the thing gets quite slow and unresponsive.

</comment></comment></comment></comment></comment><comment><USER12> > Make Messages work correctly

I've had no problems at all with Messages over the last 6-8 months. Multiple devices (iOS/OSX) all messages synced, in the right order no less, and unread badges updated.

> Make iCloud better

IMO iCloud Documents is a lost cause until the document silo problem is fixed. I can't even consider using it knowing that my data may end up being inaccessible on different devices. I don't like having my data locked into a specific application. I think Apple should just throw in the towel here and let other cloud service providers plugin to iOS. Maybe they should just bring back a revamped iDisk for power users.

> Resurrect iLife and iWork

They should have prioritized iPhoto/PhotoStream.

> Reassure Mac Pro lovers

They need to do the same for Mac Mini & iMac lovers next year. Desktops are just going to become more and more of a niche product in the future. I don't know if Mac desktops can continue to exist if they are just MacBooks in a different form factor. What's the point? Apple should be targeting them towards the hardcore desktop users left. For the iMac that's obviously a big Retina display and for the Mini it really needs a discrete GPU option again. It would give people a reason to actually buy Mac desktops again.

</comment><comment><USER13> I feel like the TV thing is such a thorny situation. TV is a cartel run by media companies and I think they already saw how Apple turned the Music Industry on it's head. These media companies are trying to hold onto the last bastion of hope that makes them relevant: Live sports. Without that, I feel like a physical TV or set-top TV box won't really be able to really compete with what you get with cable.

<comment><USER14> People said the same thing before the iPhone. However, I agree about live sports. Apple needs to go directly to the major sports leagues and get them on onboard.

</comment></comment><comment><USER15> _" I'd call that a solid year."_

... I wish everyone else would and give Apple a break.

</comment><comment><USER16> I guess iCloud still ain't usable on platforms other than Mac OS X / iOS, which really limits its potential and appeal.

<comment><USER17> My girlfriend's photo stream syncs right to her Documents folder on Windows.

<comment><USER16> That would be using an application developed by Apple I guess? Cause as far as I know there's no API (RESTful or otherwise) available for other platforms than iOS / Mac OS X for third parties.

<comment><USER18> So you would have preferred apple to give you nothing more than a shitty api and a "good luck" ?

You do realise that not everyone is a programmer right?

<comment><USER16> No, but it would be nice for 3rd party developers to have an API available to implement into their own products. Since Apple doesn't provide an API for platforms other than Mac OS X / iOS, I'll likely use the Dropbox API in my next product, since I will be able to use it on an Android phone, for example.

</comment></comment></comment></comment></comment><comment><USER19> iTunes is starting to show its age. Can't stand it any more, would much rather just use Pandora or Spotify. It's just so... clunky in comparison. Needs a meaningful re-work. Not just the BS "hide the bar you actually use" kind of a re-work like they did this year or last.

Also missing from the list... "Give us another cool new thing." Everything they did this year was just a minor upgrade. I'm fairly technical and I can't tell you what OS X Mavericks did that the last one didn't... or for that matter what any of the last 3 revisions have really added... all I know is that Office on a Mac still sucks, and Pages doesn't let you work on and save Word files as Word files without jacking them up. Someone please make it so I can use Word docs correctly on a Mac and I'd be happy. Basic basic functionality...

<comment><USER20> > _Also missing from the list... "Give us another cool new thing." Everything > they did this year was just a minor upgrade._

But they produced two very big new things:

\- Mac Pro, a completely re-imagined workstation with some extremely clever engineering and a push for future GPU computing using OpenCL

\- iOS 7, a very big change to their most popular OS

You ask for a "cool new thing" but then you complain about a lot of minor, iterative issues ("Office on Mac still sucks", "Pages doesn't let you...", "Basic basic functionality...").

</comment></comment><comment><USER21> I'm surprised Apple hasn't scooped up Nest. If they intend to eventually make the home their next "platform" it seems like a decent place to start.

<comment><USER22> I think Honeywell is more likely to buy Nest than Apple.

<comment><USER23> But integrating that kind of smart device control into iOS and OSX is the kind of crazy shit I expect from Apple.

Well it's the kind of stuff I _want_ to expect from Apple...

</comment></comment></comment><comment><USER24> Fix Mavericks--I wish I never installed it. Oh yea--still don't understand why you screwed with ibooks?</comment>


How to Detect the Distortions of Maps - <AUTHOR> https://www.citylab.com/design/2020/05/map-history-data-literacy-propaganda-exhibit-bending-lines/612157/ <comment><USER2> If you liked that...

[https://www.amazon.co.uk/How-Lie-Maps-Mark- Monmonier/dp/0226...](https://www.amazon.co.uk/How-Lie-Maps-Mark- Monmonier/dp/0226534219)

<comment><USER3> There is no such thing as an "honest" map. Space is three dimensional. Some datum[1] is required to "fib" space into a two dimensional representation.

Maps can do a more or less good job of communicating, depending on who composes them and how careful they are.

[1] [https://en.m.wikipedia.org/wiki/North_American_Datum](https://en.m.wikipedia.org/wiki/North_American_Datum)</comment></comment>


Ask HN: What are you fellow geeks using for blogging? - <AUTHOR>

I would like to know what platform are you using for blogging at this moment. I'm trying to decide which one to use! At the moment I can't afford to host my own blog. <comment><AUTHOR> Ok. Making a resume: If you're a ruby-mentality guy and have some money for hosting then check these out (in no specific order):

Enki - <https://github.com/xaviershay/enki> Toto - <http://cloudhead.io/toto> Jekyll - <http://jekyllrb.com> Nanoc - <http://nanoc.stoneship.org> Timeless - <http://timeless.judofyr.net/timeless>

Otherwise... Just use Posterous. :P

</comment><comment><USER2> I have 3 nanoc ( <http://nanoc.stoneship.org> ) blogs: <http://frozenlabs.com/blog> , <http://deadsunrise.net> and <http://vivirdescalzo.com>

deadsunrise.net started as a sinatra app, then wordpress, now nanoc with markdown or haml. Nanoc is cool and they are static pages so you can host them anywhere.

</comment><comment><USER3> I've been using wordpress on <http://puremango.co.uk> for a year and a half with no major complaints. It's easy to set up and modify which is a big plus.

edit: Oh, and I also use it on <http://sciencewallpaper.com> and <http://geekwallpapers.com>

</comment><comment><USER4> I'm using Tumblr for my personal blog, have been for years, but am starting to become very unhappy with their stability problems. I'm using Wordpress (self hosted and Wordpress.com) for a number of other sites and I'm very happy with it. There's loads of themes and plugins for Wordpress, many of which are free, and it's fairly easy to customise.

<comment><AUTHOR> Thanks for your comment. I have to say I am a bit hurt by Wordpress UX and (no flamewar intended) its PHPness. I think I am going for Posterous. If I could host my own blog there are three interesting options I would ponder: toto - <http://cloudhead.io/toto> jekyll - <http://jekyllrb.com> timeless - <http://timeless.judofyr.net/timeless>

</comment></comment><comment><USER5> BlogEngine.NET running on DiscountASP.NET - I had used WordPress for three years and wanted to try something else.

WordPress is still the best platform all-around, but I think it's easier to extend BlogEngine.NET.

<comment><AUTHOR> Oh forgot to tell you that I'm on a Mac... Even with Mono I prefer to stay native.

</comment></comment><comment><USER6> I use Blogger. It has customizable CSS, lets you use custom domains, and scaling is never a worry. All for free. I can't for the life of me figure out why someone would pay for blogging software or hosting.

</comment><comment><USER7> I'm using Posterous for my company blog and Blogger for my personal blogs. I'm happy with both of them.

I've used wordpress and livejournal in the past but wouldn't really use them for a new blog.

</comment><comment><AUTHOR> After all I'm using posterous! Here it is: <http://mindimension.posterous.com>

</comment><comment><USER8> Good old Posterous. I have 2 blogs in there and I love it.

</comment><comment><USER9> toto!

<http://cloudhead.io/toto>

<comment><AUTHOR> I know toto (and jekyll as well) but as I told you I can't afford hosting... And Heroku's network performance is really not good at this time (at least for Lisbon, Portugal, Europe with a 100MB Fiber Up-Down Link).

</comment></comment><comment><USER10> You could just use Posterous.

</comment><comment><USER11> Github pages</comment>


Tags, as we know them, are flawed - <AUTHOR> http://bi-review.blogspot.com/2011/09/tags-as-we-know-them-are-flawed.html

<comment><USER2> I think it's a bit of an overstatement to say tags are "flawed". Tags are, well, simply just tags, and not meant as a proper taxonomy system. They are lightweight labeling and metadata and I think they serve that purpose relatively well in the contexts they work well in.

The question that isn't being asked perhaps, is should tags be used or should a fixed, organized and meaningful taxonomy of categories be used instead (or in addition).</comment>


Triber: a community compass to find your friends in large/crowded places - <AUTHOR> http://triberapp.co

<comment><USER2> Does this app work peer-to-peer? One of the problems I often have at events like this is that the cell network becomes overloaded, making it impossible to communicate with people I'm looking to meetup with.

<comment><AUTHOR> Good question ! xD

The p2p network is in development.

However, we have already tested it in festival or in crowded places and the results were good.

Thanks for your interest.

</comment></comment><comment><USER3> This is a very good idea!! Good luck.

</comment><comment><USER4> Tested and approved!</comment>


What is wrong with "A successful Git branching model"? - <AUTHOR> https://barro.github.io/2016/02/a-succesful-git-branching-model-considered-harmful/ <comment><USER2> Once you miss a hotfix done on a release branch in your master you'll see the value of back merging release branches.

Long lived feature branches are sometimes inevitable.

Moreover, this model has no provision for code review as done e.g. by GitHub or GitLab.

<comment><USER3> In GitLab EE you can use a merge request to review code and then rebase it, see [http://doc.gitlab.com/ee/workflow/rebase_before_merge.html](http://doc.gitlab.com/ee/workflow/rebase_before_merge.html)

</comment></comment><comment><USER3> I documented an alternative model in [http://doc.gitlab.com/ee/workflow/gitlab_flow.html](http://doc.gitlab.com/ee/workflow/gitlab_flow.html)

</comment><comment><USER4> Also for large scale changes rebasing can be very difficult. Yes you can minimise it by rebasing often, but once you didn't manage to do it a merge can be easier.</comment>


Learn unix. you will gain a great company. - <AUTHOR> http://static.flickr.com/61/171133362_47769991b0.jpg

<comment><USER2> would have been nice if you add NSFW to the title or not post since it is not at all relevant to this site

<comment><USER3> Exactly. This picture just keeps popping up on all the 'social news' sites. I guess it's time to move to a new community that hasn't been "topless chicks with unix book roll'd"</comment></comment>


Patreon will pay out 95% of pledges going forward - <AUTHOR> https://patreon.zendesk.com/hc/en-us/articles/115005631963 <comment><USER2> There's a hidden layer to this that's really bad.

Patreon charges once per month. But they are not charging the 2.9% + $0.35 fee per month. They are promising to charge that 35 cents _per pledge_ , per month.

$10 in pledges going to one creator will have $.64 in fees. That's fine.

$10 in pledges split across ten creators will have $3.79 in fees. That extra three dollars is just profit for patreon, plucked right out of the user's pocket.

</comment><comment><AUTHOR> >> _" In the past, a creator's income on Patreon varied because of processing fees every month. They could lose anywhere from 7-15% of their earnings to these fees. This means creators actually took home a lower percentage of pledges than their patrons may have realized."_

I got $7.94 out of $9 pledged this month, so this is a welcome change. It's only going to get more significant as the number grows. People who depend heavily on smaller pledges will probably be hit hard.</comment>


Freakonomics: Q&A with 23andMe founder Anne Wojcicki - <AUTHOR> http://freakonomics.blogs.nytimes.com/2009/08/12/genetics-entrepreneur-anne-wojcicki-answers-your-questions/

<comment><USER2> Only one good question in there about gene methylation. Nothing about how/if they plan to increase the accuracy while reducing the costs. Nothing about plans to make it a real mass market product. Nothing about life time tracking of methylation and mutations.</comment>


Facebook rolls out voting for news feed items - <AUTHOR> http://www.jumpfromairplane.com/fbdigg.png

<comment><AUTHOR> Maybe it's been there for a couple days but this is the first time I've noticed it. It seems cool, but it makes the news feed look even more cluttered and I worry about what they'll do with my data--will one of my friends find out that I voted their story down?

Unfortunately there's no "vote down" button for the ads... you can downvote Facebook Pages news items though.

<comment><USER2> It doesn't really bother me, but my news feed is already pretty relevant because I adjusted <http://pitt.facebook.com/feed_prefs.php>. I have a feeling that most people have never clicked on the "Preferences" button at the top of the news feed.</comment></comment>


Offshoring Is Dead: How to Thrive in the New World Order - <AUTHOR> http://blog.assembla.com/assemblablog/tabid/12618/bid/2453/Offshoring-Is-Dead-How-to-Thrive-in-the-New-World-Order.aspx

<comment><USER2> Wishful thinking backed up by flimsy anecdotes

[http://finance.google.com/finance?chdnp=1&chdd=1&chd...](http://finance.google.com/finance?chdnp=1&chdd=1&chds=1&chdv=1&chvs=maximized&chdeh=0&chfdeh=0&chdet=1192048356000&chddm=494615&cmpto=NYSE:WIT&q=NASDAQ:INFY)

Offshoring is alive, here to stay, and has made permanent changes to the IT industry in America. Why do you think IT contracting rates haven't gone up in the last 7 years?

<comment><USER3> This morning I recieved a phone call soliciting me to use there outsourced services. She had a full on Indian accent and everything.

I suppose I should have asked her why should I outsource to India when I can outsource programming to China for half the rate but I was too suprised and just told her thanks but no thanks.

</comment></comment><comment><USER4> Welcome to the third world, Americano!</comment>


Facebook Ads: The Cheapest Traffic You'll Ever Buy - <AUTHOR> http://blog.imranghory.org/facebook-ads-the-cheapest-traffic-youll-ever <comment><USER2> Edit: the link that one of the commenters provided is a _lot_ more informative (if you came here lookinf for a "how")

[http://www.dipoll.com/blog/2010/11/six-steps-to-run-cheap- an...](http://www.dipoll.com/blog/2010/11/six-steps-to-run-cheap-and- successful-facebook-advertising-campaigns/)

OP, if you're reading this, _how_ did you get such low CPC rates on facebook?

No offense, but this post just sortof sounds like bragging. What were you targeting? What were you bids? What did your ad actually look like? What sort of picture did you use (facebook ads require a picture, last I checked).

Etc. etc.

This is really interesting to me, because I've tried facebook ads before and done _miserably_ with them. I was planning on doing some more reddit self- serve advertising this week, but if you can get traffic from facebook for as cheap as you're claiming, I would definitely give that a try instead.

This would be a really great post if you could share some of the research you did.

<comment><USER3> Thanks for posting that link, definitely much more informative than the original post. I'm not sure if it was quite as shocking to everyone else but I had previously written off facebook ads. I'll definitely be giving this a try.

And great timing too, I posted a question that this answers about an hour ago. ("How do I improve marketing without being a domain expert?" <http://news.ycombinator.com/item?id=2408842>)

<comment><USER4> Read again the data I shared here: [http://blog.fairsoftware.net/2011/04/01/sell-your-google- sto...](http://blog.fairsoftware.net/2011/04/01/sell-your-google-stock-like- right-now-adwords-data/)

Facebook definitely works for me, despite the fact that my target audience is not particularly fan of Facebook (just like HN ;-)

</comment></comment></comment><comment><USER5> My Facebook ads experience in a nutshell: mega-targeted towards US women interested in elementary education & etc, used a seasonally appropriate image and tagline, spent $140, got 275 clicks (~$0.46), _four_ free trial signups (pick email and password), and (unsurprisingly) no sales. $140 of AdWords would typically get about 2.5k clicks and $300+ of sales.

This was a year ago. Every couple of months I wonder "Hmm, should I take another whack at FB?" and then I decide to do something useful with my money instead, like buying Frontierville dresses.

<comment><AUTHOR> I feel silly asking you of all people this, but did you A/B test the targeting and images used or were you picking them based upon what worked elsewhere ?

If you want to take another shot as trying out Facebook and want to have someone look over your campaign, feel free to drop me an email.

<comment><USER5> That is a perfectly reasonable question. I didn't do any testing -- it was an experimental campaign and totally flamed out. If it had been anywhere in the general ballpark of feasible, I would happily have started iterating, but $35 CPA to the _free trial_ of a _thirty_ dollar product did not strike me as something which was amenable to iterate-quickly-to-victory.

<comment><AUTHOR> For both the Theory of Geek and CoderStack ad campaigns going from initial ad to an optimized ad dropped eCPC by two orders of magnitude. Optimization has a huge impact on Facebook Ads.

Although if you're paying $0.05/click for traffic on Google there's probably less upside for you then someone who's paying $0.50/click on Google.

<comment><USER6> I second that. Just changing the image will often swing CTRs wildly. One of the great things about FB ads is that you can put an image (unlike google text ads) and the audience responds very well to images.

</comment></comment></comment></comment></comment><comment><USER7> There is a lot of click fraud in Facebook ads. Have you ever checked your analytics logs to verify you are getting what you are paying for? In my case, around 40% of clicks I paid for never made it over. I emailed facebook ad support 6 times and the only response I ever received was from an auto responder. I'd never use their service again.

<comment><AUTHOR> I've not seen any sign of fraud, FB data matches up with my own analytics.

How are you doing analytics tracking ? - if you're using GA or something similar then it could well be that the GA code isn't loading before the user bounces. If you check your webserver logs that should give you an indication if that's the case.

<comment><USER7> Yes, I used GA & getclicky and the results were almost identical. The landing page I was using was extremely lightweight and loaded in less than a second in most cases. I'd be really surprised if people could bounce before it loaded.

By the way, I'm not the only one reporting this issue: [http://www.google.com/#sclient=psy&hl=en&q=facebook+...](http://www.google.com/#sclient=psy&hl=en&q=facebook+click+fraud&aq=f&aqi=&aql=&oq=facebook+click+fraud&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=fd1a2cf87d4138e7)

<comment><AUTHOR> I guess it depends on what your selling in the case of my comic click fraud doesn't make sense, and for my job board the majority of my competitors buying ads are major job boards.

If you're working in a more "black hat" corner of the ecommerce world like affiliate links, it's certainly possible that click fraud occurs, I just haven't seen it occurring.

Have you checked the analytics reports that Facebook generate to see if it is the same users clicking the advert over-and-over again ?

</comment></comment></comment></comment><comment><USER8> Once you take into account that Facebook traffic tends to start out at ~$1 a click and the fact that the people clicking it are just browsing(instead of searching like they do on Google)...you'll realize that Facebook traffic is the most expensive traffic you can buy.

Most people who make money off craigslist are the affiliate spammers who get paid something like $3 for every email submission form they get.

<comment><USER8> just noticed that I said craigslist...I was talking about Facebook

</comment></comment><comment><USER9> We also got better results from Facebook Ads than from AdSense. Something that we found is that we got better results if we changed the image on the Ad periodically and if we stopped for a while our campaigns.

We track the user by source, so we can check if the FB users are more or less active than users from other Ad networks or from users that come from organic search, and so far we have not observed a significant bias.

We are paying a few cents for each user _registration_ (not click). No other Ad network comes close to these numbers for our site. Our budget is of some (single digit) thousands dollars per month, and we have been running these Ads for a few months.

<comment><USER10> > We are paying a few cents for each user registration (not click).

How do you do that? I thought Facebook Ads only offers CPC (pay per click) and CPM (per thousand impressions)?

<comment><USER9> We use CPM. When the user registers we store their source (facebook Ad, AdSense, organic, etc.), and we derive how much are we paying for each user, as I said, a few cents for each user registration.

</comment></comment></comment><comment><USER11> I recently tried BuySellAds in an attempt to target ads a specific interest group (technology websites). The result has been horrible. CTRs are like 0.001%. I'm getting about 30-50 clicks a day and with the same funds on AdSense I'd be getting nearly a thousand clicks a day. It's too bad i sunk so much into the experiment.

<comment><AUTHOR> I hadn't looked at BuySellAds before, but looking at it now, I wouldn't buy ads on any network that didn't let me filter by geography.

It's trivial for an ad network to implement geographic filtering, ads are worth a lots less outside the handful of major economies, generally speaking if an ad network doesn't do geotargeting it implies the ad network is trying to sell you low value international traffic at US traffic prices.

</comment></comment><comment><USER12> I've gotten clicks that cost about .01. The whole idea is just to super target. For instance, target users who are interested in runescape, use a runescape image, use a ad text along the lines of "Love Runescape?" and some creative ad text.

Then you want to split them all up into different ads for different demographics.

My problem with facebook is CTR's will drop a lot over time... so you constantly need to keep submitting fresh ads.

<comment><AUTHOR> CTRs will definitely drop over time if you're super-targeting, it's a trade- off you need to make.

FB don't offer frequency capping, so if your target demographic only has 5000 members then if you're showing 10,0000 ads/day then pretty soon everyone in that demographic will have seen your ad and the CTR will drop. FB has some decent reporting though for measuring ad saturation among your demographic.

</comment></comment><comment><USER13> What's the policy (and the actual enforcement) on using copyrightten content as your picture? I'm not surprised Twilight imagery converts better than a company logo, but it seems a little sketchy.

</comment><comment><USER14> In my opinion and experience Facebook ads can work well only if you advertise your fan page. Get people like it (obviously the fan page needs to be interesting for this), then from time to time post stuff that advertises your startup.

It's more work, but you can market to every fan many times instead of hoping she will buy from you or give you her email address from the single visit the ad would bring to your site.

</comment><comment><USER15> Cheapest CPC, maybe. But usually very low conversion rates on FB.

<comment><AUTHOR> For Theory Of Geek most of my organic traffic is driven from social sites like Twitter and Reddit, Facebook visitors are actually much more engaged (average Reddit visitor views about 1.2 pages, average Facebook visitor 4.5 pages).

For CoderStack engagement (developers applying for jobs) roughly matches that of long-tail organic search traffic.

<comment><USER15> There is a huge difference between organic traffic and paid. The former has a huge selection bias, by definition, for those visitors that are interested in what you have to offer.

Ever tried doing a CPC campaign on Facebook for any of those sites? I'd bet that the usage metrics would come out way differently.

<comment><AUTHOR> That data is for advertising on Facebook

<comment><USER15> Interesting... Misread your comment then. I'm working in e-Commerce in Europe, and I see opposite results.

<comment><AUTHOR> Are your ads clear about what you're selling?

</comment></comment></comment></comment></comment></comment><comment><USER16> The biggest problem with FB ads of course, is having a product that is sale- able to the facebook audience. I.e. entertainment/interest products, not needs-based products

<comment><USER17> I don't buy that limitation. A tax accountant could properly make good money around tax time with the right targeting.

The key is not to target too broad a group.

<comment><USER16> I'd still say that's targeted based on "interest." Everyone needs tax work around tax time. It's much harder to target say "people who need a new furnace."

|The key is not to target too broad a group. <\-- That's the key in almost all direct marketing.

</comment></comment></comment><comment><USER18> For most project it is not about clicks but about conversion and that is greatly depends from the product that you are selling. Facebook is more "fun" than "money spending" community. Google unrelated CPC keywords give 8X fold better conversion than Facebook targeted ads from each click for me. Would be more useful to have specific information on your numbers beside clicks.

<comment><AUTHOR> See my comments elsewhere in this discussion:

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

I'm not directly selling for either of my campaigns (although FB has incidentally netted me a few sales for my job board; that's incidental rather than intentional), so you could be right about people being hesitant to spend money.

Although for CoderStack I do get plenty of people applying for jobs after clicking on an ad, so it's not all fun.

I think a lot of it is about being careful about how you're tuning your ads, it's easy to make an ad that people will click on that misleads the clicker as to what your website will contain.

But if you start with an ad that's very specific about what you're delivering and then tweak the other aspects (image, demographic targeting) then you can probably get a healthy conversion rate.

(all my ads are clear about what you'll get if you click through)

</comment></comment><comment><USER19> The important thing every single article on HN always misses out is that spending 100, 200 or even 5000$ is almost never a large enough pool to deduce anything about a ad network. Put through a hundred million paid impressions and then tell me what does and doesnt work.

<comment><AUTHOR> I'll be the first to admit that the techniques that work for me may well not work for someone running a million dollar ad campaign.

For most startups and SMEs (i.e the HN audience broadly speaking) that doesn't matter, most of us are running ad budgets in the thousands rather than millions.</comment></comment>


A perspective on friendly C - <AUTHOR> http://www.philipreames.com/Blog/2016/01/03/a-perspective-on-friendly-c/ <comment><USER2> Fantastic article. This nails down in a very precise way what I've always said whenever the "compilers should just stop doing optimizations that rely on undefined behavior" meme comes up here. You depend on undefined behavior for performance; you don't realize you're depending on it because the optimizations "just work" most of the time; the reasons they work is due to undefined behavior, but it's easy to overlook that and blame compiler developers for being language lawyers when in fact GCC and LLVM are doing what you want them to do.

<comment><USER3> Fair enough, but this isn't exactly an argument in C's favor. If you're saying "But we _need_ this unsafe behavior for performance!", that only adds to the urgency to abandon C as soon as possible in favor of things like Rust, which should eventually have all of the speed and none of the UB insanity.

<comment><USER4> >which should eventually have all the speed and none of the UB insanity

Judging by the benchmark game [1] [https://benchmarksgame.alioth.debian.org/u64q/rust.html](https://benchmarksgame.alioth.debian.org/u64q/rust.html) Rust has almost caught/eclipsed C. The biggest issue for the marks its behind on are stabilized SIMD support in Rust (nightly has it but its not finalized on an RFC level).

[1] Look I'll save you the comment. Yes the benchmark game isn't always indicative of real world performance. Its a bunch of small micro benchmarks that demonstrate basically how quickly Regexs/Hashing/Math are in each language. While that's not everything you do when programming its a decent chunk.

<comment><USER5> While I completely agree with migrating towards Rust, these games are a little misleading. I can't find the source, but when I was reading some of the authors comments in the past, it sounded like there was unsafe code used.

Does anyone have a link to the source used in these tests?

<comment><USER6> _Hiding in plain sight._

The program names on the website are links to the source code, the task names are links to measurements for the task, _etc etc_

[http://benchmarksgame.alioth.debian.org/u64q/measurements.ph...](http://benchmarksgame.alioth.debian.org/u64q/measurements.php?lang=rust)

<comment><USER5> Wow. I feel like an idiot.

<comment><USER6> And that is not what I want looking at the website to make you feel!

However, underline for all link text makes a distracting mess. Hmm.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Start by removing _gratuitous_ undefined behavior from the dialect: undefined behavior which has not reason to exist because it arises from of the lack of requirements with regard to some translation aspect of the language, and not anything related to a run-time difficulty.

For instance, the unspecified order in which function arguments are evaluated, or the operands of most operators, or initializers in a declarator and such. In combination with certain uses of side effects, this creates undefined behavior (and even when not undefined, it can create surprises and bugs). This is purely a C semantics problem, not connected to the way the machine works, or the large scale way in which programs and their data fit together.

And let us note that _even if evaluation order is pinned down by the language semantics, the compiler can still re-arrange it anyway, when it can recognize opportunities in which re-ordering evaluation makes no difference (the result, including all effects, are still as if it had been left to right)._

Contrast that with, say, bounds checking arrays, where the neglect to do so is justified by the fact that pointers don't carry the size information, since they are mapped to machine addresses, which is a translation decision that has deep, non-localized semantic implications. Wider pointers don't fit into a register, which affects how they are passed between functions. They take up more space in every data structure which has pointers, and so on. There is a tangible, external difference, and performance impact.

A reasonable dialect in C should sacrifice safety only when there is a tangible performance issue.

Undefined behaviors at translation time (particularly in the preprocessor!) should be completely banished.

Here is one: there is no reason why a preprocessor token pasting operation (A ## B) which results in an invalid token should be undefined behavior. The execution of the preprocessor is quasi cost-free. Whether or not two elements pasted together to form a valid token can be checked, and diagnosed. The few preprocessor cycles which that requires are worth it!

The fact that it's not practical to banish or diagnose _all_ undefined behaviors (nor desirable or reasonable to do so, since UB is an area for useful extensions) shouldn't be used as an excuse not to eliminate some of the silly ones.

<comment><USER8> The undefined behavior is there so that the language can be used across heterogeneous systems. 9-bit chars, 36-bit words, 1's complement arithmetic, decimal registers, NULL somewhere other than address 0? You can have all that with standard compliant C.

<comment><USER9> Fine, so keep those aspects. There still remains plenty of relatively pointless undefined behavior. For instance, is the following well defined?

int f(int* p, int* q){return ++ _p + ++_ q;}

It depends! It depends on whether p == q. If so, it is not defined, and on high optimization levels, compilers will tend to give the wrong answer, but on low levels not so much. I bet a lot of people (but probably not all) would be willing to take the speed hit so that this becomes well defined, as it is in most other languages. (Note: I haven't fact checked anything I wrote here; no doubt some language lawyer will correct me if I'm wrong.)

<comment><USER7> We don't even have to take the speed hit. Why? Because here is how the unspecified evaluation order benefits the above scenario: the compiler doesn't have to reason about whether p == q.

But since C99 we have had a tool by which we can tell the compiler, "trust me, p != q". Namely:

      int f(int * restrict p, int * restrict q) { ... }

So with this, even if we have strict left to right order, it can still reorder the code the same as before.

</comment></comment></comment></comment><comment><USER10> Regehr recently wrote a response to his own proposal, called "The Problem with Friendly C", [http://blog.regehr.org/archives/1287](http://blog.regehr.org/archives/1287). HN discussion: [https://news.ycombinator.com/item?id=10786512](https://news.ycombinator.com/item?id=10786512)

<comment><USER11> That post is linked to in the first sentence of this post.

<comment><USER10> Somehow I missed the reference to the follow-up, but I mostly wanted to link this HN discussion to the one from two weeks ago.

</comment></comment></comment><comment><USER12> This seems like a crazy conversation to be having in 2016. We're seriously considering what semantics to attach for illegal operations? How about doing what every other language of the last couple of decades does and just not allow them?

> I doubt anyone is willing to pay 2x performance for their C code to be more > friendly. If they were, why are they writing in C?

Beats me why anyone is writing in C full stop.

<comment><USER2> > How about doing what every other language of the last couple of decades does > and just not allow them?

I fully agree. But this is not without tradeoffs: eliminating undefined behavior pretty much means (a) the performance and runtime overhead of a GC (most languages); (b) forbidding malloc (verified "mission-critical" variants of Ada, C, etc.); (c) requiring programmers to learn a lot of new concepts (Rust†). I do think that there is rapidly becoming little reason to use C except for throwaway programs, and as an industry we need to be more open to (c) if we are ever going to move beyond making the same memory management mistakes we've been continuously making since the 1960s. But I also understand the reasons why programmers continue to choose C and C++.

† It's interesting to me that the biggest reason C++ programmers give for bouncing off Rust is fundamentally "I want my undefined behavior back", though very few actually word it like that.

<comment><USER13> This is really overkill. When I'm writing C, it's generally for one of two reasons:

1\. Interoperability code with some library or the OS.

2\. C as the closest thing to a portable assembler there is (e.g. to implement something like the Ruby interpreter).

What I need for this isn't perfect safety; it's the ability to reason with some confidence about the code I'm writing (I may want to be able to rely on code review by merely mortal programmers or create my own tools to enforce this). If I wanted a safe, expressive language, I wouldn't use C in the first place.

But right now even something as simple as a malloc implementation is riddled with traps even for reasonably skilled programmers. The Linux kernel uses -fno-strict-overflow and the FreeBSD kernel uses -fwrapv because the price to be paid by enabling the undefined behavior of -fstrict-overflow was too high.

<comment><USER2> > 1\. Interoperability code with some library or the OS.

If by "interoperability" you mean "binding a more modern language to a C library", no argument there. Binding to C is a legitimate reason to write C.

> 2\. C as the closest thing to a portable assembler there is (e.g. to > implement something like the Ruby interpreter).

My question is: why do you want a portable assembler? Why not write Ruby in, for example, Go? It could certainly be done; look at JRuby, for instance.

The vast majority of the time, the answer to this question is "performance". Which brings us back to the point of the article. Without compiler optimizations enabled by undefined behavior, you can easily lose 2x performance or more. A 2x performance loss for MRI is unacceptable.

Malloc implementations embody this even more. In fact, it's kind of hard to think of any piece of code that's more performance critical than malloc. Many large applications (apps, games) spend 10%-20% of their time in the malloc and free functions. Allocator performance is so important that Facebook and Google have invested a huge number of man-hours into these two routines (jemalloc and tcmalloc respectively). It all comes down to performance again: under these extreme contraints, malloc simply can't afford a 2x performance loss. A Friendly C that produced slower code would have little chance of being adopted by allocator writers.

<comment><USER13> > My question is: why do you want a portable assembler? Why not write Ruby in, > for example, Go? It could certainly be done; look at JRuby, for instance.

I would in principle like to do this in another language. Go isn't that, because Go's runtime makes some very specific assumptions (about things like stack layout and how it interoperates with syscalls). I may not want to be weighed down by these assumptions. For similar reasons, you may want to eschew JRuby, as it locks you into the JVM ecosystem (which is great if that's what you need, not so great if you don't want to suffer from the poor interop with non-JVM libraries).

> The vast majority of the time, the answer to this question is "performance".

The answer for me is generally that C is ecosystem-agnostic (what I'd expect from a portable assembly language; practically any other language that isn't called BCPL makes more ambitious assertions about its environment). Note that when I talk about interoperability above, I don't just mean interoperability between one language and C, but also to build bridges between two non-C languages (which is actually fairly important for some of my current work). Performance is a nice additional benefit.

> A 2x performance loss for MRI is unacceptable.

We have a few points to chew through here. First, I didn't say that undefined behavior is unacceptable. My problem is with undefined behavior that is difficult to reason about or to investigate (as an extreme case, when an infinite loop is turned into a no-op).

Second, I don't buy the 2x performance loss. What makes most bytecode interpreters slow is how C compilers optimize the dispatch loop (poorly), not the exploitation of undefined behavior or the lack thereof. For example, -fwrapv has virtually no effect on Ruby's performance (even though clang/gcc unnecessarily disable strength reduction in some cases where they don't have to). Ruby would likely benefit a lot more from having its bytecode dispatcher rewritten in assembler LuaJIT-style (I'm talking about the LuaJIT interpreter, not compiler) than it would lose from not exploiting undefined behavior on a large scale.

Finally: code that crashes really fast (or may suddenly start crashing for inexplicable reasons because the compiler was upgraded) is not going to help anyone. This is not a hypothetical concern; you'd be surprised how much C code doesn't survive an encounter with UBSAN.

</comment></comment></comment></comment></comment><comment><USER14>
        int foo(int* p_int, float p_float) {
         int a = *p_int;
         *p_float = 0.0;
         return a - *p_int;
        }

Should that be `float* p_float`?

</comment><comment><USER15> _I doubt anyone is willing to pay 2x performance for their C code to be more friendly. If they were, why are they writing in C?_

To me this is the fundamental issue with the friendly/boring C proposals. The whole reason to use C/C++ anymore is for performance, in return for which you are responsible for certain things - like using only defined behavior.

If you are writing e.g. crypto code, why not use a higher level language that provides more checks and guarantees, and is generally easier to reason about? Or segregate the performance-critical "engine" type code into C++ and use something higher level for everything else?

<comment><USER16> Crypto may be one of the fields where you need tight control over speed of execution to alleviate timing attacks. The mere presence of a GC can be exploited.

</comment></comment><comment><USER17> _As a simple example, let's consider trying to establish semantics for stray (i.e. out of bounds) read and writes. We can start by trying to define what happens for a stray read. That's fairly easy, we can simply return an undefined value._

I don't disagree with this piece, but I think it's missing the thrust of the "friendly C" argument. The desire (at least I feel it) is simply for the compiler to "do what I mean", rather than making unexpected optimizations based on undefined behavior. There is no expectation that the resulting language will be "safe" as the word is normally used. If one wants safety (and can accept the performance compromise that this entails) then there are alternative languages to choose from.

Instead, "friendly C" has much simpler ambitions: replace undefined behavior with compiler specified behavior. The spec could simply guarantee that if you read an out-of-bounds value, that the compiler will generate assembly that attempts to read the value at that address. Having the program segfault on the attempt is perfectly acceptable. The only thing that is not acceptable is for the compiler to reason that the read will be out of bounds, and thus decide to omit the error checking code that follows.

<comment><USER2> > The spec could simply guarantee that if you read an out-of-bounds value, > that the compiler will generate assembly that attempts to read the value at > that address

You didn't understand the example. Your proposal destroys load-load forwarding, as the article demonstrates.

<comment><USER17> _You didn 't understand the example._

Certainly this may be true, but I've re-read it again with your prompting and still think I understand it.

 _Your proposal destroys load-load forwarding, as the article demonstrates._

I'm fine a compiler that optimizes out the write to a value on the stack on the assumption that this can't be the same address as a passed pointer, whether that parameter is an int or float. I'm fine with a compiler that creates assembly that simply returns 0 here, with or without 'restrict'.

That you and the author think this example represents a conflict with John's "friendly C" proposal makes me more certain that you don't mean the same thing by "friendly C" as I do, or as I think John does. Really, I think we're asking for something quite different, and much simpler to achieve.

<comment><USER2> Are you proposing that compilers emit actual load instructions for every memory access you write in your code? That is, preventing the compiler from optimizing out memory loads? I can't read your comment any other way, but I may have missed something.

In any case, if you require that a compiler emit an actual load instruction for every memory access then you've destroyed SROA, which is one of the most important optimizations, especially in C++. Without SROA C++ can easily be 4x-5x slower.

<comment><USER17> _Are you proposing that compilers emit actual load instructions for every memory access you write in your code?_

No, if the compiler can reason that that there is no aliasing between pointers, there is no need to emit a load. Reordering operations so a value remains in registers is desirable, even if an out-of-bounds write would otherwise have had the side-effect of changing the value.

The problem (in this context) is limited to optimizations that reason that the value of the read is "undefined" (as opposed to "implementation defined"), and that the compiler no longer has any obligation to be faithful to the source code for any actions that follow.

For example (conceptual rather than exact) if I set all the bits in a region to 1's, and then somehow manage to write an unaligned load from within this region, I do not want the compiler to reason that this value is undefined and that all consequent code can be ignored.

I'm fine with a compile time error, and I'm fine with generating assembly that attempts the load and uses the result. Getting SIGBUS for the load on some processors is perfectly acceptable. I'd probably even be OK with skipping the load and using a constant, although I'd hope this would at least be accompanied by a warning message.

What I don't want is for the compiler to silently omit the load and all the rest of the code within that function on the theory that once undefined behavior has been encountered it no longer has any obligations, not even the obligation to inform the programmer that it has perversely optimized the function to nothingness.

(And while most of the lack of clarity is probably my own fault, I do now realize that I was being thrown off by an unfortunate typo in the original post: presumably he meant for the second argument to be a 'float *' rather than a 'float'. Please ignore my comment about 'stack variables' higher in the thread.)

<comment><USER2> > No, if the compiler can reason that that there is no aliasing between > pointers, there is no need to emit a load.

Without strict aliasing? Then you destroyed a bunch of optimizations that lower for loops to memset. 4x performance loss if AVX would have been used in memset.

See: [http://blog.llvm.org/2011/05/what-every-c-programmer- should-...](http://blog.llvm.org/2011/05/what-every-c-programmer-should- know.html) ("Violating Type Rules")

> What I don't want is for the compiler to silently omit the load and all the > rest of the code within that function on the theory that once undefined > behavior has been encountered it no longer has any obligations, not even the > obligation to inform the programmer that it has perversely optimized the > function to nothingness.

No, you need that optimization too. After aggressive inlining, especially of templated code like the STL in C++, it's often the case that large swathes of code are never dynamically reached, and people want that dead code to be removed. However, the only—or at least the easiest—way the compiler can tell that this is the case is by observing that, for example, a null pointer would have to be dereferenced to get to that dead code. Therefore the compiler is doing you a favor by eliminating that obviously dead code.

Again, all of these optimizations do not stem from compiler authors being language lawyers for the fun of it. They stem from their customers filing bugs on real-world missed optimizations.

<comment><USER17> _Without strict aliasing?_

Generally, I think strict aliasing is a fine thing. It would have been nicer to have "restrict" be the default and "alias" being an optional specifier, but likely there was no way to do this without breaking too much existing code. Warnings are often nice, but I don't recall having any issues with compilers optimizing based on assumptions of lack of aliasing.

 _especially of templated code like the STL in C++_

I'm an opinionated C programmer, but have no opinion of how C++ should handle things. I'm only considering the impact on C. If the STL requires an unfriendly C++ compiler, I'm OK with that, but this doesn't affect my thinking about C compilers.

 _However, the only—or at least the easiest—way the compiler can tell that this is the case is by observing that, for example, a null pointer would have to be dereferenced to get to that dead code._

Or, for example, that a signed integer addition would have to overflow. Or a full-width shift. Or a variety of other things that have a might make sense in both the programmers mental model and on the processor on which the compiled program will be run.

 _Therefore the compiler is doing you a favor by eliminating that obviously dead code._

Do you really believe that the compiler is doing you a favor by silently removing a check for signed integer overflow that you explicitly included? If so, we have found (at least one of) the point(s) of our disagreement!

If on the other hand you feel that removing security related error checking is an unfortunate negative consequence of a necessary optimization, perhaps we can find a way to mitigate the consequences?

<comment><USER17> Here's a timely example of the behavior I'm referring to: [https://github.com/websnarf/bstrlib/issues/8](https://github.com/websnarf/bstrlib/issues/8)

I'd be happy to concede that this is not good programming practice, but I do not accept that the compiler is doing us a favor by silently creating this security problem. I do appreciate that gcc at least offers a warning for some of these cases.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> i believe the premise for a "friendly C" (wether attainable or not) is one such that, existing C programs can be compiled with a new compiler, which could, in principle, prevent certain classes of bugs.

designing a new language somewhat hinders this - unless some sort of source to source translator tool could be produced, perhaps.

in my opinion, C should roughly stay the way it is. we have higher level languages which provide a lot more safety, and we have the clock cycles available to absorb the reduced performance that they may incur. more importantly, compiler implementations for these languages can continue to reduce the gap between "high level" and "native C".

<comment><USER19> The thing is, such languages already existed outside AT&T before C had any value outside UNIX.

</comment></comment><comment><USER20> The "2x slower" is an extremely conservative estimate if all loads and stores were bounds checked. Given the indirect effects on program optimization, it might be closer to 10x for practical programs.

</comment><comment><USER21> Let's say someone developed a variant of Go with manual memory management. How far would this be from a "friendly C"?

EDIT: _" I doubt anyone is willing to pay 2x performance for their C code to be more friendly. If they were, why are they writing in C?"_

Because it's friendly? Because the cost/benefit in terms of avoided bugs and productivity is worth it to the company/shop.

<comment><USER2> > Let's say someone developed a variant of Go with manual memory management. > How far would this be from a "friendly C"?

Depends on what the semantics of that hypothetical Go variant are. How would that Go variant solve the load-load forwarding problem described in the article?

> Because it's friendly? Because the cost/benefit in terms of avoided bugs and > productivity is worth it to the company/shop.

I think the point the author was making is that if you are OK with that performance hit you're probably OK with Java, which banishes undefined behavior in the C sense entirely.

<comment><USER21> I could see someone being ok with 100% overhead, but not with 400%. Last I checked (which was years ago) hitting 50% native speed in a JIT managed language was an admirable feat and not guaranteed.

</comment></comment></comment><comment><USER22> > In the example above, your normal C compiler could return "0" because it > assumes the intervening write can't change the value at p_int

not unless you use the restrict keyword...

<comment><USER2> Strict aliasing. The article is correct.

<comment><USER22> You're right. You'd have to change int to char to make it valid</comment></comment></comment>


Australia drafts laws forcing Facebook and Google to reveal encrypted data - <AUTHOR> https://www.theguardian.com/technology/2018/jun/06/planned-laws-to-force-tech-firms-to-reveal-encrypted-data <comment><USER2> > But Nigel Phair, from the Centre for Internet Safety at the University of > Canberra, said if the legislation avoided having to use a backdoor entry to > encrypted data then it was likely that it would use a "frontdoor", a means > of accessing the information before it was encrypted.

...you mean a backdoor to the device, instead of a backdoor to the encryption?

<comment><USER3> Nice bit of spin there by Nigel.

Using the phrase 'frontdoor' sounds more 'legal' and appropriate. But in reality the implications of backdooring the device, ie "before encryption" happens, is actually a far, far worse invasion of privacy than purely server side decryption. Because it exposes the entire devices to surveillance, every app and piece of data flowing through the device is then exposed (and many times not just to the intended target, the police, but also evil black hoodie sunglasses wearing hackers). While a warrant for a server-side wiretap/search is just one single data source, narrowly focused on particular data and not easily exploited by hackers as it happens largely offline.

<comment><USER2> > Using the phrase 'frontdoor' sounds more 'legal' and appropriate.

It's also wrong, since there already is a "front door" on all devices: just use the normal password/fingerprint/face picture to unlock it.

</comment></comment></comment><comment><USER4> This could be a silly question but how does this:

>> In the second half of 2017 alone Apple received 2,601 requests for access to devices from Australian law enforcement agencies and granted them in 87% of cases.

…align with the famed Apple refusal to comply with the request to unlock an iPhone in the US a while back. Is the jurisdictional context different (re: the 4th amendment) or is this something different to unlocking a device?

<comment><USER5> This is mostly requests to Apple as a service provider. "What IP registered, and logged into email@example.com on 1/1/2018? And what are the registered users details?"

They don't have your iphone passcode on file so they can't provide it to law enforcement.

<comment><USER6> This is what I thought, too, but they explicitly state "access to devices", not "access to data".

Could also very well be that the author didn't distinct between the two sufficiently.

<comment><USER7> Or that older devices (that have outdated hardware security) are more prevalent in Australia for which Apple can decrypt.

<comment><USER8> Would be surprising; even the iPhone 5s from Fall 2013 is equipped with the Secure Enclave and is getting iOS 12. Including the feature to disable USB communication pins after 1 hour without the user's passcode. A feature aimed squarely at disabling Cellebrite from uploading their brute-force firmware.

</comment></comment></comment></comment></comment><comment><USER9> Truly, Australia is governed by morons. Would it be asking too much for a highly paid minister of the crown, who supposedly is supposed to lead government policy in an area, to have substantial knowledge of it?

Instead, we have these lawyers who treat maths, science and technology with contempt, who legislate for us, and don't understand what the fuck they're even talking about.

<comment><USER10> People keep saying "We need more scientists in government", but I think that trying to make that happen is running into a brick wall: those scientists will _also_ need to be lawyers and there just aren't that many people who are competently both. Without an understanding of the law, they'll end up drafting laws without basic things like mens rea requirements. We live in a highly specialized world; Can anyone here can butcher a hog, design a building, _and_ plan an invasion with a rock-solid level of competence? No. So stop looking for a unicorn who is able to:

* Sell themselves to a wide and fickle audience of stangers

* Manage a campaign staff

* Understand problems in the context of history

* Read and write legislation in a way that avoids unintended consequences or misaligned incentives

* Negotiate against people with whom they have fundamental philosophical differences

* Complete a PhD program in science or engineering

That last one isn't necessary for our actual goal... and it doesn't even help when you consider that this person will _also_ need to be an expert on military grand strategy, healthcare administration, procurement, urban design, and agriculture. We don't need a congress full of subject-matter experts. What we need are people who respect and can work effectively with subject-matter experts.

So what is it that Senator Ron Wyden and Judge Aslup do that others should copy?

<comment><USER11> I would be happy with a politician who can accomplish even one of these things.

<comment><USER12> I'll take the first two for granted. Otherwise they wouldn't be in charge, isn't it?

<comment><USER13> * Sell themselves to a wide and fickle audience of stangers

* Manage a campaign staff

It is not necessary that politicians _can_ do either / both, it is just that they appear to be the least worst option for at least a brief moment in the past.

I'm often reminded of that single panel comic where small child says "Dad, I'm considering a career in organised crime" and the father, holding a news paper, says "Government or private sector?".

</comment></comment></comment></comment></comment><comment><USER14> "The key point here is that we need to modernise our laws and get access to information for holding criminals and terrorists to account for investigations and gathering evidence," he said.

great, now you might catch the dumb ones, but is there a shortage of secure communication channels? :)

<comment><USER15> > "The laws of Australia prevail in Australia, I can assure you of that," he > said on Friday. "The laws of mathematics are very commendable, but the only > law that applies in Australia is the law of Australia." \- Prime Minister, > Malcolm Turnbull

I'm not certain that they understand what they're asking for, can't be done. That is, there are politicians who believe math can be bent to fit the law.

<comment><USER16> It was a throwaway joke comment - Turnbull is much smarter than that.

Worth noting that Malcolm Turnbull made part of his money from investing in the internet sector in the early 90s. He invested $500,000 in OzEMail (one of Australia's first internet service providers) back in 1994, and sold his stake for $57 Million to Worldcom in 1999. He's not an engineer, but he's not entirely ignorant on these matters.

<comment><USER15> However, it is representative of his backers. And the comment wasn't given in jest, but to reopen the backdoor debate. I'm not worried he doesn't understand, but the rest of the party?

</comment></comment></comment></comment><comment><USER17> I'll say it no one else will...

Yeah and all is well and good until some faceless stalker tracks down, stalks, molests, brutalizes and finally murders some 'important/high muckety mucks' 11yr old daughter and posts it all over the net. Then the the gov have no choice but to enforce 'real' protection of your security.

A house has two doors, frontdoor and backdoor. Either one gives you access to the contents you're trying to protect.

It's time public/gov wises up and demands REAl security.

</comment><comment><USER18> In WhatsApp: Australia has joined the conversation

<comment><USER19> That would be a hell of a way to get people aware of the law and lobby against it. Just have that pop up for all users in Australia.

</comment></comment><comment><USER20> Unfortunately tech policy in Australia seems to have a history of being poorly thought out and this doesn't appear to be an exception to the trend. The thing I find so disconcerting is just how little expertise seems to be present in the legislative space around tech in Australia compared with other countries, how did this come to be? It's not as though there's a complete lack of legislative skill either, in other areas things seem to be a whole lot better.

<comment><USER21> >The thing I find so disconcerting is just how little expertise seems to be present in the legislative space around tech in Australia

There is expertise. Our Prime Minister knows tech, Turnbull is a millionaire from seeing the potential of the internet in the 90s and heavily invested in an ISP and took on role of chairman. Half a decade later he'd turned 500k into $50 million when Ozemail was acquired.

The policies aren't because of incompetence, they're actively malicious against the publics best interest in favour of the elite set to make bank.

<comment><USER22> I don't believe Turnbull had anything to do with the technical side of Ozemail (which was only ever a dial-up network and mail provider), he was just on the business side.

Clearly when he became the communications minister I think he demonstrated that while he was willing to ignore experts and destroy things maliciously for political gain, I believe he also demonstrated he didn't actually understand recent tech or broadband networks much at all through a lot of it either. There were things that I think he actually believed that were rubbish.

</comment></comment></comment><comment><USER23> Yeah... good luck with that.

Our Government cant get a simple census, fibre broadband or even site blocking right.

<comment><USER24> Annoyingly bipartisan efforts, I completely forgot about that ridiculous filter.

</comment></comment><comment><USER25> The source of this story is a 10-minute interview on ABC Radio this morning [1]. Unfortunately, there's no transcript, but it's a more reliable source than the second-hand summary in the article.

Despite the headline, it's not clear that any bill has actually been drafted and certainly nothing has been introduced to Parliament. According to the minister, what will be proposed is a law that is 'completely consistent in principle with the existing laws for telephone intercepts.' While he 'dodged multiple questions' about whether the laws would authorise the use of 'surveillance codes' (whatever that means), he denied that there was any proposal to introduce laws requiring the use of backdoored encryption algorithms.

It would be consistent with the existing telephone intercept laws in Australia [2] (and most other developed countries) to require service providers to surveil users upon production of a warrant. In Australia, judges must consider the seriousness of the offence being investigated, and the impact on privacy, before issuing a warrant [3]. Warrants can also be obtained to install covert surveillance devices (ie. bugs) [4] if a telephone intercept or search warrant is unlikely to produce evidence.

Contrary to the comments suggesting that the legislators are completely uninformed, an Australian parliamentary committee has been conducting a public inquiry into the 'impact of new and emerging information and communications technology' since October 2017 [5]. Any member of the public may make a submission [6] to the inquiry and advocacy groups such as Electronic Frontiers Australia and the Law Council of Australia have done so. Relevant experts have also appeared before the committee in public hearings. It is likely that any draft legislation would be informed by the committee's findings.

Given that the government recognises the efficacy and importance of strong encryption, the proposed new laws may look more like the US All Writs Act at the centre of the FBI–Apple encryption dispute [7]. It might not be practical to backdoor the ciphers used to encrypt data at rest on an iOS device, or in flight in a WhatsApp message. But it would be consistent with the principles of the existing telephone intercept powers (which are targeted and subject to judicial, parliamentary and ombudsman scrutiny) to require publishers like Apple to push out backdoored OS updates or apps to targeted users (or physically seized devices, as in the San Bernardino case). Perhaps the ability to obtain such targeted warrants would be less socially harmful than increased use of the existing, but more intrusive, surveillance powers.

[1]: [http://www.abc.net.au/radionational/programs/breakfast/new-e...](http://www.abc.net.au/radionational/programs/breakfast/new- encrypted-data-laws-compromise-user-security/9839610)

[2]: [http://www.austlii.edu.au/au/legis/cth/consol_act/taaa197941...](http://www.austlii.edu.au/au/legis/cth/consol_act/taaa1979410/)

[3]: [http://www.austlii.edu.au/au/legis/cth/consol_act/taaa197941...](http://www.austlii.edu.au/au/legis/cth/consol_act/taaa1979410/s46.html)

[4]: [https://www.homeaffairs.gov.au/about/national- security/telec...](https://www.homeaffairs.gov.au/about/national- security/telecommunications-interception-surveillance)

[5]: [https://www.aph.gov.au/Parliamentary_Business/Committees/Joi...](https://www.aph.gov.au/Parliamentary_Business/Committees/Joint/Law_Enforcement/NewandemergingICT)

[6]: [https://www.aph.gov.au/Parliamentary_Business/Committees/Joi...](https://www.aph.gov.au/Parliamentary_Business/Committees/Joint/Law_Enforcement/NewandemergingICT/Submissions)

[7]: [https://en.wikipedia.org/wiki/FBI–Apple_encryption_dispute](https://en.wikipedia.org/wiki/FBI–Apple_encryption_dispute)

<comment><USER2> > [...] to require publishers like Apple to push out backdoored OS updates or > apps to targeted users (or physically seized devices, as in the San > Bernardino case). Perhaps the ability to obtain such targeted warrants would > be less socially harmful than increased use of the existing, but more > intrusive, surveillance powers.

We've seen in the push to Windows 10 that, when automated updates are used in a harmful manner, people disable automated updates. The same would happen here: once it's been shown that the automated updated mechanism has been used to purposefully push a harmful update, people will start disabling automated updates.

Which means that Apple and Google have a good reason for opposing such requests.

(And that's before getting to the "elephant in the room": the same mechanism created for these requests can, and probably will, also be used by malicious actors.)

<comment><USER12> Can malicious actors issue Windows 10 updates? I heard this for (improperly implemented) application updates but not for Windows 10 updates. Microsoft has strong incentives to prevent this and done a good job so far. I agree with you if MS would push a bad update it would be a PR desaster for MS.

<comment><USER26> Well, the other issue is that if the public lose trust in first-party updates, they're also potentially skipping security patches, making everyone more vulnerable on the whole. Obviously this might work in favour of one government's agenda, but equally opens those devices up to exploiting by anyone else (including foreign actors.)

</comment></comment></comment></comment><comment><USER27> I always wondered if we could steal every piece of private/personal data the politician demanding these laws has and expose it for all the whole world to see, what that might do to their attitude. We might even find some real criminals this way.

<comment><USER28> Similar things have happened in the past, in the vast majority of cases the politician doubles down and ends up spending more time and resources trying to prosecute the hacker, and use it as an example of why they need to go further with these kinds of laws so they can find these "hackers" before they can do damage.

<comment><USER29> The word 'steal' was used ironically. If I looked at you, and decided to write myself a law that allows me to monitor your every move and communication, and I charge you for that monitoring through unavoidable taxes, and I keep the accounting of the costs protected from public scrutiny, and I always remind you it's done for your security, and me and my friends are making loads of money from the surveillance game, raising the prices and adding more security and justifying more reasons to do so, how do you know it's not stealing?

</comment></comment></comment><comment><USER30> Doe this mean with warrant, or without?

<comment><USER31> With warrant.

<comment><USER32> You are making an assumption. We have not seen the proposed bill.</comment></comment></comment>


Anatomy ads: a new way to monetize your brand - <AUTHOR> http://anatomyads.com/

<comment><AUTHOR> Hey guys. I recently submitted an application for this Winter's Y Combinator, and I just wanted to introduce myself here and get some feedback. I've been a lurker here for a while and thought I might chime in.

Feel free to have a look at the site. Right now it's sort of a rough prototype of the idea we've been playing with. What we wanted to do is create a network that allows people to promote their own ad network by combining all of their web spaces together. A new way to create a personal brand, promote a cause, or fund an event. It's a portable ad widget that works through fixed sponsorships.

I'd like to know what questions you guys might have, and what you think. Feel free to rip it apart and leave nasty comments too. Your feedback is most welcome.

Thanks!</comment>


Nokia Sales Numbers Look Grim, but There`s Hope With Windows Phone: IDC - <AUTHOR> http://www.eweek.com/c/a/Mobile-and-Wireless/Nokia-Sales-Numbers-Look-Grim-but-Theres-Hope-With-Windows-Phone-IDC-402716/

<comment><AUTHOR> Essentially, IDC's hope is ...

"Llamas thinks Nokia should improve training for carrier store reps to better educate them on the Nokia Windows Phone products and get them as "excited" about selling Nokia models as they are about selling Samsung or Apple products. He's also encouraged by news reports that Nokia is considering paying incentives to carriers in Europe to be exclusive resellers of Nokia smartphones running Windows Phone 8 (WP8)."</comment>


Building a Cross-Platform Electron App in Windows with WSL and Ubuntu - <AUTHOR> https://www.beekeeperstudio.io/blog/building-electron-windows-ubuntu-wsl2 <comment><USER2> Excellent write up, I've been looking for an excuse to upgrade my WSL install.

Minor nitpick:

> Another limitation is that WSL 2 does not currently support snap packages, > so make sure you use deb or AppImage versions of whatever app you need.

I'm gonna call that a feature</comment>


How I got his social, license, and credit card via Android - <AUTHOR> http://www.stefankendall.com/2012/09/how-i-got-his-social-license-and-credit.html

<comment><USER2> Not sure about TouchWiz or other varients of Android but on Sense you have two options...

1) Erase Phone Storage (which clearly explains that it is music, pictures, etc)

2) Factory Reset (erase phone data)

Seems pretty straight forward to me.

<comment><USER2> Also to me it makes sense to keep these things separate. My friend had to wipe his phone because it was randomly rebooting and it saved him from having to connect to a computer and backup all his music and photos.</comment></comment>


What do you think about my project? - <AUTHOR> Here you can test it, I also added a nice way to send pm where I have not seen anywhere yet https://debsys.com/ <comment><USER2> I think this should carry a _Show HN_ in the title, then describe what the program does.</comment>


Fully Functioning DApp Browser for Mobile Available in Trust Wallet - <AUTHOR> https://medium.com/@trustwallet/fully-featured-dapp-browser-for-mobile-4d062a0c66cb <comment><USER2> Great app! Helps me coverting ETH to tokens using the decentralized exchange directly from my wallet via DApp browser, it's easy, cheaper and fast!

</comment><comment><USER3> I used to have many wallets, but now I only use Trust. It is very easy to use, developers are very helpful, and works like a charm.

</comment><comment><USER4> This helps me participate in ICO's when I'm at a networking event or a party :)

</comment><comment><USER5> Sweet. Bought my Cryptokittie AND exchanged some ICO tokens through Trust today.

<comment><AUTHOR> Cryptokitties are cool I got 3 of them already, even tho there is too much supply now

</comment></comment><comment><USER6> Nice app, I like the sending max amount ethers / tokens feature.

</comment><comment><USER7> Great apps. I follow dev team from beginning.

</comment><comment><USER8> Nice, great work on this.</comment>


Microsoft 'To Replace Journalists with Robots' - <AUTHOR> https://www.bbc.co.uk/news/world-us-canada-52860247 <comment><AUTHOR> Given how much has shifted to seeing what is trending upon social media, I do wonder if this, whilst may work well to replace that level of `journalists`, but investigatory and other harder `real` journalism, that will take some doing and I don't see that ever happening. Maybe tools to aid journalists, but replacing them outright - nope.

Still in this case it is just the former they are looking to replace, also the term robot, more like program, not robot.</comment>


The Qt Company Introduces a Unified Website - <AUTHOR> http://blog.qt.digia.com/blog/2014/09/16/the-qt-company-introduces-a-unified-website-and-20e25-monthly-indie-mobile-package/ <comment><USER2> This++ I've used Qt for desktop apps as well as apps on Embedded Linux. I've even used it with a Lua wrapper API that made development even easier. Is it a bit bloated? Yes. But unless you are very constrained for memory and flash space it should fit in your embedded system. They also have a way for you to select which components you want to compile for your target, allowing you to control how much of the bloat you actually use. :)

tldr; I like Qt, and I'll use it again.

<comment><USER3> Which "Lua wrapper API" did you use?

<comment><USER2> I used lqt from [https://github.com/mkottman/lqt](https://github.com/mkottman/lqt). It worked out great for the project at the time.

</comment></comment></comment><comment><USER4> Note for those looking for commercial pricing - it is sort of hidden under the top buttons in the download page:

[http://www.qt.io/download/](http://www.qt.io/download/)

That said, just having a publicly listed price anywhere feels like a big step forward for Qt. In the past there was just a "Contact Sales" form with whispered mentions across forums about real pricing. I think this dissuaded a lot of indie devs from trying out Qt.

I'm not sure why this new site doesn't just have a page called "Pricing" that explains what the monthly pricing means. Answer questions like "Do the tools lock out if the subscription is cancelled or do my rights to published statically linked Qt apps get cancelled?" and "Do I have to pay each month to keep those rights even if there is no active development on an app?".

My guess is that Qt must make a bulk of their revenue on enterprise sales and are reticent to open up a self serve sales process (highlighted by the squeeze page they put up when you click the 30 day trial download button). It is a shame because I think Qt could enable a lot of great apps.

<comment><USER5> The way the license information is presented is a little misleading. The Community edition is described as for 'Open Source & Hobby Projects', giving the impression that its not possible to release a commercial product using that. Thats not true of course, its LGPL licensed and so can be used for commercial software as long as the license obligations are adherred to.

The desktop app I sell uses Qt, against the LGPL license. I would probably pay for the commercial license from them if it was more reasonably priced, but $295 per month to distribute on Mac and Windows is just too much to swallow.

<comment><USER6> >Thats not true of course, its LGPL licensed and so can be used for commercial software as long as the license obligations are adherred to.

What are those obligations? Can you summarize or give a link? Thanks.

<comment><USER7> Roughly: link dynamically or provide object files for relinking; don't prohibit reverse engineering of your software (for compatibility with new library versions); don't modify the LGPLed library to require a proprietary component to function.

<comment><USER6> Thanks, JoshTriplett and FigBug.

</comment></comment></comment></comment></comment><comment><USER8> Does Qt still do that thing where they reimplement a lot of the C++ standard components like Vector? I remember years ago having problems with their reimplementation and wonder how much that's changed.

<comment><USER9> Yup, QList, QVector, QString. There are a lot of reimplementations. I tend to find them a lot easier to use than the C++ counterparts. What type of problems were you having?

<comment><USER10> QString is a proper unicode-aware string with conversions to many character codecs. It doesn't really compare to std::string.

<comment><USER11> C++11 has better Unicode support than previous versions.

<comment><USER10> people don't seem too impressed with it though [http://stackoverflow.com/questions/17103925/how-well-is- unic...](http://stackoverflow.com/questions/17103925/how-well-is-unicode- supported-in-c11)

</comment></comment></comment></comment></comment><comment><USER12> Wow, did I get this right that they have an indie mobile offering now for 20 EUR (without VAT)? This would be fantastic! It used to be 130 EUR.

<comment><USER13> per month, yes.

<comment><USER14> How does that work? Do you have to continue to pay the license the entire time that you app is commercially available or is it only during development?

<comment><USER12> Before qt.io was announced I wrote support and asked the same question. In short - yes, you have to pay each month according to them. It's quite reasonable perhaps except for apps that are updated very rarely.

<comment><USER15> You can't sell the app without the license! So update rate doesn't matter.

</comment></comment></comment></comment></comment><comment><USER16> 800,000+ developers seems like an awful lot. I work mostly on the web - do I just not move in the right circles to meet these Qt developers?

<comment><USER17> It is the blind spot of the Web/Silicon Valley/Startup world that not all programming is web programming. While the Googles and Facebooks of this world get all the press, there is a stupendous number of developers working on good old-fashioned desktop applications and embedded software. That is the world where Qt is very popular.

In fact, it is my opinion that Qt is the one thing that keeps C++ relevant these days ([http://weblog.jeroen.ws/blog/2012/11/19/how-relevant-is-c- pl...](http://weblog.jeroen.ws/blog/2012/11/19/how-relevant-is-c-plus-plus- today/)).

<comment><USER18> There are lots of things that keep C++ relevant, not only Qt.

<comment><USER19> Such as?

<comment><USER20> If you count C in the same breath, then between them, they make up the implementation language for probably 99% of other languages, and the operating systems those languages run on.

For anything safety critical, C in particular still has a vice-like stranglehold in many industries (e.g. automobile)

<comment><USER21> > For anything safety critical, C in particular still has a vice-like > stranglehold in many industries (e.g. automobile)

Which is kind of ironic, given its well known foot-shooting abilities.

<comment><USER22> That's partly why the use it: the problems with C are well understood by many people. They choose the devil they know.

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> Is there a modern book which targets a current QT? Last time I was looking (and on Google just now) I wasn't able to find a book that took someone from never having used QT to shipping something.

<comment><USER24> I've been looking for this too, but most books like this are older and focus on Qt 3 or 4, not Qt 5.

<comment><USER11> I guess it was changing too rapidly. I'm waiting for such book as well.

</comment></comment></comment><comment><USER25> I was under the impression that I could use the (L)GPL version and deploy to various app stores - I wouldn't get support though.

But this article describes "deployment rights", which one would apparently not have access to if using the open source version. A quick google revealed no additional information on this.

Does anyone have any concrete info on deploying mobile Qt apps to app stores with the open source version?

<comment><USER9> LGPL requires that the user be able to replace the LGPL portion with an updated / modified version. This is usually accomplished with dynamic linking. Since the iOS store requires apps to be signed and disallows dynamic linking, there is no way for the user to modify the LGPL portion. I assume other app stores are similar.

GPL is disallowed for similar reasons, no way for the end user to recompile and app from the app store and run it on their device.

<comment><USER26> I can make available the source for an iPhone app that could be compiled with XCode.

How is this in violation of the GPL?

<comment><USER27> It's not a violation of the _L_ GPL.

The plain GPL is usually said to be unusable on the App Store because it has a clause that "no further restrictions" may be made on the use of the software; that may be fine with you, but when Apple redistributes your app through the App Store, they do it with a EULA that prohibits a wide range of things, so, as the argument goes, such redistribution violates the license. The LGPL does not have such a clause, so it's OK. (It does have a clause that prohibits further restrictions on reverse engineering, but the iTunes terms of use have an explicit exemption to the general reverse engineering ban based on "licensing terms governing use of any open-sourced components".)

</comment></comment></comment></comment><comment><USER28> On a related note, we are hiring a front end engineer to work on Ubuntu phone and desktop. Stack is Qt,QML, JS and possibly some html5. Could work for a QML dev or a web dev who wants to learn Qt. London based position - email me at email@example.com

</comment><comment><USER29> The site/message is good, but I'm not sure I would ever promote any in-flight entertainment system as a great example of a development framework in action. Almost every one I've used has been among the slowest, clunkiest, crashiest, most unresponsive, poorly designed "modern" UIs I've ever used.

In order to avoid being entirely critical, however, Qt does serve a role that few other dev platforms do, and although I suspect there are better alternatives, I'm glad that there is still strong support for it!

<comment><USER30> I had the chance to fly with Delta this summer, the electronics had been updated in my flight, and the UI was great and felt "responsive" in a certain way, let's say 5 times better than before.

</comment></comment><comment><USER31> $149/mo to develop on desktop OSes, that is too steep. It pretty much rules out all but big publishers.

EDIT: Downvoters, please read and answer my replies below before doing so.

<comment><USER32> It's actually $215 for 1 platform, $295 for all 3. Per developer.

That's low compared to the old one which was something like $3k for one platform, $5k for multiple.

If you cannot make $215/month with your software, how can you pay anyone a salary?

If you are non-professional, why not use the open source edition and add value with support?

<comment><USER31> Why do you assume I'm paying someone a salary? I don't even make enough to cover my expenses (just started going indie). For someone like me, $149/mo is way too steep no matter what other options are. It just tells me qt is not an option for me.

As stated in other reply, open source option not an option as it states I can't publish it in app stores.

<comment><USER33> You could use the LGPL version during development and only switch to the commercial license once you go live.

<comment><USER22> Has the commercial agreement been changed? The terms of the commercial license specifically prohibited that.

<comment><USER33> It does? But I thought it is possible to use the LGPL version to develop apps. It is just not possible to distribute them through the app stores because of the app stores, not because of Qt. You don't use the app store to deploy the development version of your app onto you development device.

<comment><USER22> That's all true. However, the commercial license included this:

"You must purchase a Qt Commercial Developer License from us or from one of our authorized resellers before you start developing commercial software. The Qt Commercial Developer License does not allow the incorporation of code developed with the Qt GNU LGPL v. 2.1 or GNU GPL v. 3.0 license versions into a commercial product."

Basically, you have to choose LGPL or commercial before you start your project. You can only transition from commercial to LGPL, not LGPL to commercial.

They do that to prevent specifically the thing you're suggesting, though they're probably aiming it more at large companies with many developers, so those guys don't just buy 1 license.

<comment><USER33> Ah, I see.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER34> Does anyone have experience with Xamarin AND Qt as well? I am curious how do they compare for cross-platform mobile app development.

<comment><USER12> I only have experience with Qt, and can tell you that a problem with the current version is the difficulty in getting a native look on mobile. If you want a custom UI, QML is great, but Digia really need to offer native-looking UI components. They will do this for widget-based UIs on Android in the next version I believe, but no word on iOS.

Other than that it's quite nice.

<comment><USER35> Native UI goes far beyond the look. Another concern is accessibility, especially for blind users. Non-native UIs can be accessible, but only if the toolkit implements each platform's accessibility API, and gets the implementation right, which seems to be very difficult. (For example, last time I checked, Qt's implementation of the relevant accessibility APIs on Windows was deficient enough that the TeamTalk voice chat client offers a "classic" MFC-based client specifically for blind users.)

</comment></comment></comment><comment><USER36> For all the ruby devs on HN: check out the ruby bindings to qt at [http://github.com/ryanmelt/qtbindings](http://github.com/ryanmelt/qtbindings). Makes developing GUI apps in ruby really easy. Be sure to checkout the large set of example apps to get started.

<comment><USER21> I have always looked upon these kinds of projects with interest until it comes to the packaging.

Let us say I create a really super-duper ruby qtbindings application. Is there any way for me to easily package it as a .msi / .dmg / .deb for distribution?

I have messed around with ocra, monkeybars etc and they have never worked or require arcane and undocumented hacks.

Packaging for distribution is the biggest challenge for desktop ruby apps I think.

</comment></comment><comment><USER37> Is there a good way to get into Qt? Some getting started blog posts for devs would be very useful, but I've always thought that the Qt learning curve starts with good intentions and then goes vertical. Does anyone have some resources to share?

<comment><USER13> It depends on what you want to use it for (Qt covers a lot of use-cases) but [http://qt-project.org/doc/qt-5/qtexamplesandtutorials.html](http://qt- project.org/doc/qt-5/qtexamplesandtutorials.html) is probably a good start.

</comment></comment><comment><USER38> I love Qt, good to see them promoting it more.

</comment><comment><USER39> $25 per month is a steal!

</comment><comment><USER40> Guys please ditch the carousel terrible way to convey information when the initial and first piece of information I am trying to absorb is moving around.

<comment><USER41> +1. The carousel switched faster than I could read all the text.

</comment></comment><comment><USER42> Could someone explain this for me please? It's not really clear from the website, but is this any different from the Qt project? [http://qt- project.org/](http://qt-project.org/)

<comment><USER13> [http://blog.qt.digia.com/blog/2014/09/16/the-qt-company- intr...](http://blog.qt.digia.com/blog/2014/09/16/the-qt-company-introduces-a- unified-website-and-20e25-monthly-indie-mobile-package/) should explain it.</comment></comment>


One-stop performance analysis using atop - <AUTHOR> https://lwn.net/Articles/387202/

<comment><USER2> Does anyone know how this compares to `htop`, which is also quite excellent? It sounds like `atop`'s primary advantage is that it records process information in-between screen refreshes?

Cool stuff, either way!</comment>


Show HN: Cashgram – Send a link to users to collect account details and pay - <AUTHOR> https://www.cashfree.com/cashgram <comment><AUTHOR> Hi, I am Nafey, an engineer at Cashfree (YC S17), and part of the team that built Cashgram.

Cashgram is a weblink businesses can send users to collect account details securely and make a payment. Send a Cashgram link to user. User enters bank account number or PayTM details and receives money instantly.

We discovered the need for Cashgram when hiring for support we realised that half their time was spent processing refunds for cash on delivery orders. Unlike collecting money from users, sending money to users for refunds, rewards, reimbursements requires coordination between multiple teams. This ends up being a slow, error prone process. Businesses have to ask for a customer's bank account details, card number over email, chat or phone which also makes many customers uncomfortable.

Cashgram is being used by businesses to process refunds, distribute rewards in gaming, payout marketing affiliates, reimburse expenses and as a substitute for gift cards.

Features -

a) On-the-fly validation of customer provided details. Throws error in real- time if they provide incorrect bank account number or UPI VPA.

b) Cashgrams are secured via OTP authentication.

c) Instant transfers.

d) Supports 4 popular modes to withdraw: Bank account number, UPI ID, PayTM and Debit cards (issued in India).

e) Auto-expiry of Cashgram, if not redeemed by the prescribed time frame.

f) API support available.

Would love to answer your questions about Cashgram or anything on payments and bank transfers.</comment>


Microsoft Co-Founder's Space Project Is in Limbo - <AUTHOR> http://www.wsj.com/articles/microsoft-co-founders-space-project-is-in-limbo-1447809375 <comment><AUTHOR> Search the Goog for the article title to get the non-paywalled link</comment>


Support of Ruby 2.3 has ended - <AUTHOR> https://www.ruby-lang.org/en/news/2019/03/31/support-of-ruby-2-3-has-ended/ <comment><USER2> Was this a particularly popular version? Does this affect a lot of projects?

<comment><USER3> The beauty of Ruby is that upgrading Ruby versions is not much of an issue most of the time. Most deprecations are also simple to fix.

<comment><USER4> I'd disagree with the upgrade from 2.3 to 2.4:

> Though ISO/IEC 30170:2012 doesn't specify details of the Integer class, Ruby > had two visible Integer classes: Fixnum and Bignum. Ruby 2.4 unifies them > into Integer. All C extensions which touch the Fixnum or Bignum class need > to be fixed.

[https://www.ruby- lang.org/en/news/2016/12/25/ruby-2-4-0-rele...](https://www.ruby- lang.org/en/news/2016/12/25/ruby-2-4-0-released/)

<comment><USER5> How many C extensions does the average Ruby developer maintain?

<comment><USER4> The question should be: how many C extensions does the average Ruby developer have in their Gemfile. And my guess would ranging from a few to many.

</comment></comment></comment></comment></comment><comment><USER6> The post will be complete with a guidance how to upgrade Ruby 2.3 itself ;)

<comment><USER7> depends on where you are going to, ideally you would go for 2.6. the vast majority of gems is compatible with 2.6 so it would mostly be fixing internal code.

the main change I remember would be the Fixnum/Bignum disappearing in favor of the Integer parent class [1][2][3] (which isn't hard to fix).

also if you are stuck on 2.3 you might have a lot of other issues too (like outdated gems).

[1]: [https://www.ruby- lang.org/en/news/2016/12/25/ruby-2-4-0-rele...](https://www.ruby- lang.org/en/news/2016/12/25/ruby-2-4-0-released/) [2]: [https://www.ruby- lang.org/en/news/2017/12/25/ruby-2-5-0-rele...](https://www.ruby- lang.org/en/news/2017/12/25/ruby-2-5-0-released/) [3]: [https://www.ruby- lang.org/en/news/2018/12/25/ruby-2-6-0-rele...](https://www.ruby- lang.org/en/news/2018/12/25/ruby-2-6-0-released/)

</comment></comment><comment><USER8> Looking to upgrade an app from 2.3. What is the upgrade path? Can I just go to the latest version? Should I be watching for any regressions? Where would I find breaking changes?</comment>


How a Hacker Fired a Locked Smart Gun Using Only Magnets - <AUTHOR> https://www.youtube.com/watch?v=ANllOmgJH9Y <comment><AUTHOR> For those who can't watch Youtube with sound right now, TL;DR:

\- overriding the signal (jamming) jams the gun

\- same attack as against contactless car keys: capture and retransmit the signal key near the receiver (in this case: capture watch's signal and transmit near the gun)

\- holding strong magnets to the side triggers the same mechanism as the gun would normally use to unlock itself after receiving the authorization signal</comment>