Apple's FTLJIT project aims to give JavaScript a boost - <AUTHOR> http://www.infoworld.com/t/javascript/apple-has-its-own-javascript-accelerator-in-the-works-242042
<comment><USER2> I have built lots and lots of stuff on mobile web. Never once was JavaScript perf the bottleneck on iOS. Never (especially since the rise of retina screens).

I think there is a lot of hyperbole around the whole JIT in webview thing from people who don't have a good grasp of where the performance problems are on mobile web.

<comment><USER3> This. To my knowledge, JS perf isn't an issue in any modern browser (even the crippled iOS webview). Improving the performance of DOM access and manipulation (not just on iOS) would be a much more fruitful enterprise and is something I would like to see all browser makers focusing on.

<comment><USER4> A million times this. XML at the end of the day is a language with only two types, strings and children. This is woefully inadequate if you want performance.

Take a 3D matrix transform for example. It needs to be marshalled from an array of floats to a string to be applied. Then it needs to be parsed back into an array of floats to be used to position a texture in the GPU. Such a huge waste...

</comment></comment></comment><comment><USER5> Hopefully they'll allow it to be used inside app WebViews. Nitro is already great, but it's disabled inside apps.

<comment><USER6> The only way any JIT at all will ever be allowed inside of UIWebViews is when UIWebView makes the jump to WebKit2, i.e. using a helper process to actually run the web content.

<comment><USER7> They might be able to handle it with a remote view controller. An existing iOS technology that allows for a view controller that fronts an out-of-process application. This is used for the mail composer and facebook sharing.

See: [http://oleb.net/blog/2012/10/remote-view-controllers-in- ios-...](http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/)

(I suspect there are some constraints on how a remote view controller can be used, and they'd have to do some additional work to shunt in NSURLProtocol and all.)

<comment><USER6> That's quite unrelated. That's a technology that allows for e.g. the Mail compose screen to run out-of-process while still compositing into the same layer hierarchy as the host application and receiving touches. This not only allows restricting access to Mail accounts to the daemon that runs the remote controller, but also prevents the host application from doing things like hiding the mail compose controller behind another view and forwarding touches to it, so a press on an unrelated button actually triggers an email send.

WebKit2 is done differently. The UIWebView still handles all the user interaction and whatnot, and it talks to the Web Process to send it requests (e.g. "load this URL", "run this JavaScript in the context of the page", etc). I'm not quite sure how the compositing of the web content works, but it's not the same system as remote view controllers.

<comment><USER8> There's stuff here about a UIRemoteWebViewController:

[http://oleb.net/blog/2012/10/more-on-remote-view- controllers...](http://oleb.net/blog/2012/10/more-on-remote-view-controllers/)

[https://github.com/nst/iOS-Runtime- Headers/blob/master/Frame...](https://github.com/nst/iOS-Runtime- Headers/blob/master/Frameworks/UIKit.framework/_UIRemoteWebViewController.h) [https://github.com/nst/iOS-Runtime- Headers/blob/master/Frame...](https://github.com/nst/iOS-Runtime- Headers/blob/master/Frameworks/UIKit.framework/_UIServiceWebViewController.h)

<comment><USER6> Possibly interesting information, but still not actually relevant to WebKit2.

<comment><USER7> I might not have been clear in my grandparent post. I wasn't proposing this as a means to WebKit2. (I don't know what WebKit2 is.) I was suggesting this might be a way to get JIT support in native apps with the current iOS WebKit, by running the entire UIWebKit out of process.

However, I have no idea if there are enough hybrid apps out there, with javascript performance issues, to justify going to the trouble of doing this.

<comment><USER6> Ah. Well, it's a cute idea, but it won't work with UIWebView. Besides the fact that existing apps already rely on the fact that UIWebView isn't remote (because they can muck about with various view properties of it, including direct access to its UIScrollView), UIWebView also exposes at least one synchronous API (-stringByEvaluatingJavaScriptFromString:) and synchronous APIs are no good when doing stuff out-of-process. It also has a delegate that runs in a synchronous mode (e.g. it's asked questions it has to answer by returning a value, instead of just being notified of events or using a callback-based response), and that's the same problem as synchronous APIs (because now the remote process has to block waiting on a response from UIWebView).

WebKit2 is an existing effort by Apple to do out-of-process rendering. Various desktop apps already use it, including Safari, Mail, and iBooks. It features new APIs for doing everything, because it's all asynchronous. If third-party iOS apps gain out-of-process rendering it will be through WebKit2 and not some attempt to port UIWebView to the remote view controller system.

Incidentally, the same synchronous issues with UIWebView that I mentioned above suggest that porting to WebKit2 is a non-backwards-compatible change. If Apple makes this change, I would guess that either they'll introduce a separate UIWebView class that's used for WebKit2 and leave the existing UIWebView alone, or they'll give UIWebView two modes, a WebKit mode and a WebKit2 mode, and whichever mode it uses will be selected at initialization time (and using a WebKit method on a WebKit2 UIWebView would be an error, and vice versa). Either way, apps will have to be rewritten to take advantage of WebKit2.

<comment><USER8> What is it that makes a synchronous call to an out of process view on ios so bad?

Also, apple has changed the internal subviews of system views before. In some cases they seem to provide a backwards compatible subview layout mode triggered by looking at the compiler/linker/sdk version so existing binaries will keep running. For sure I have seen previously working code like this breaking merely by recompiling with a newer xcode, as if it is taken to be an opt-in to new internal layouts - but not always; sometimes even existing apps needs rush updates if they have been assuming too much about undocumented subview hierarchies.

<comment><USER6> > What is it that makes a synchronous call to an out of process view on ios so > bad?

Because it's blocking the main thread. Worse, it's blocking the main thread doing something that has effectively no upper bound on how long it can take. Web Process is blocked trying to handle a previous request to calculate Pi to a trillion digits in javascript? Oops, your synchronous call to execute more javascript will just have to wait. Indefinitely.

> Also, apple has changed the internal subviews of system views before.

I'm not talking about internals. UIWebView directly exposes its scrollView as public API. And you can muck with the view properties of the UIWebView too to make changes. For example, if you really want to you could set your UIWebView to 50% alpha (and this is totally legit, not depending on internal subview hierarchies). Whereas Remote View Controllers explicitly prevent you from mucking with any aspect of the view hierarchy.

<comment><USER8> It would still be blocking the main thread if it was in-process? I'm not seeing the big deal here, at least if there's a 1:1 relationship of web views and the out of process counterparts. And it's not like ios is running a lot of foreground apps simultaneously either.

Fair enough about the scrollviews, although maybe they could be proxied somehow.

<comment><USER6> I suppose you're right in that my example of calculating pi only makes sense if you're sharing the web process with another app. But the real point, that I skipped to try and make what I thought was the more dramatic (but flawed) point, is that out-of-process requests have built-in latency that in-process requests don't. It's just plain bad design to have a synchronous API that talks to another process.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> The title makes me cringe. It makes it sound like this is the first JIT from Apple, when it's actually the "Fourth Tier LLVM" JIT. It goes on top of the current JavaScript engine, which is already pretty fast.

<comment><USER10> Ok, we replaced it with the subtitle.

</comment></comment><comment><USER11> Safari is basically the worst browser right now. They have a firm toe hold in mobile obviously, but in terms of desktop it's the worst browser to support, even behind IE. Nice to see them finally getting with the times. Every other browser has had this technology for years.

<comment><USER12> This is just flat wrong. Safari is basically at feature parity with Chrome, which isn't surprising given that they only diverged recently. I haven't to my knowledge ever had to work around differences between the two.

Indeed, Safari has had JITed JS for longer than most browsers - this is just an update.

<comment><USER13> > Safari is basically at feature parity with Chrome

Is this a joke? IndexedDB, WebRTC, etc.?

<comment><USER12> No, it's not a joke. You've identified two features that are in Chrome that aren't in Safari. There are a few others - the new filesystem APIs, Shadow DOM etc. - there are also a few features in Safari that aren't in Chrome, like MathML and I think CSS region support.

IOW, they aren't far off each other. Safari suffers from a much slower release cycle in particular - Chrome is usually a few features ahead due to this. Same with Firefox.

<comment><USER13> Pretty much every game-changing web feature comes to Safari years after Firefox and Chrome. Yes, they are good at some things, particularly CSS, but not at the types of things that allow new types of applications to be built.

</comment></comment></comment></comment></comment><comment><USER14> Why can't they just use v8 or spidermonkey? Why invest time on creating something that will be only marginally superior (maybe?) than current open source technologies?

<comment><USER15> It's great that Apple has smart engineers working on this. It's trying out a new approach that neither v8 or spidermonkey have - to use LLVM as a 4th tier JIT. This is how interesting things happen.

The world would be a poorer place if we had fewer independent implementations, as each has its own design and architecture.

<comment><USER16> _to use LLVM as a 4th tier JIT_

So, what if this led to a bytecode derived from LLVM IR becoming a universal bytecode for the web?</comment></comment></comment>


How to Prepare a Flat for Sale to Earn More? - <AUTHOR> https://instastaging.com/how-to-prepare-flat-for-sale/ <comment><USER2> If I ever saw a text-rickroll, this is the one. The "how" is nowhere to be seen after 10 page scrolls or more.</comment>


It's not C, it's the API - <AUTHOR> http://www.upbeat.it/2014/04/15/its-not-c/ Behind heartbleed there is a design flaw, it's not the programming language fault. <comment><USER2> Even if it was C, does it _really_ matter?

I think everyone in tech knows (or suspect, at least) writing good C is hard. Very hard. But there is something comparable we can use? Something that can offer a similar level of interoperability?

I'm not really sure.</comment>


Show HN: A ncurses CRM system (and accounting) - <AUTHOR> I've been building a CRM/accounting system for my personal small company. It's still in an early stage and is lacking a few features. But it is finally usable.
https://asciinema.org/a/0g9f8c00mrkm018p10r8p8km3
Please share your thoughts <comment><USER2> I like ncurses, and have been a fan of this interface for 20 years. I know that these days, we are supposed to build web interfaces, push them on to a load-balanced server and so forth, but I think small tools which can be run on the linux terminal are still relevant. Whenever the application is a single- user app, and the data not too huge, this kind of an app has its charming simplicity. I am not an expert developer, but I like this project!

<comment><USER3> I want to be able to create an ncurses app first and then have a renderer create a web app from the ncurses app.

<comment><USER4> I have used ncurses to build a simple backend interface, that I use for testing new features etc. The end result looks nice, and is functional, but ncurses the library is a pain. It feels like something that would not be written by a programmer today: C, manual pointer-management, the interface feels too low-level. I ended up writing a C++ wrapper around it, adding thread-safety, better scrolling and some convenience functions (the ncurses form library I believe was a particular pain).

What I would like is a high-quality redesign of ncurses with a modern C++ interface.

<comment><USER5> A modernized curses library with clean UTF-8 support would be really nice. There's no need to make it a drop-in system library replacement, either, so there's no need to maintain ABI compatibility, as ncurses does.

<comment><USER4> re. UTF-8 support: ncurses does include this, in libncursesw. It seems to work, although I haven't tried anything outside of Latin-1.

</comment></comment></comment></comment></comment><comment><USER6> What's old is new again!

Beautiful and reminiscent of old school mainframe systems in CICS.

When system users were mainly roomfuls of data entry staff (universally female) these systems were absolutely optimised for power users banging through as many transactions as possible. No mice in sight, all keyboard operation.

<comment><AUTHOR> My thought is that such interfaces are bad for learning software and for get a good overview. But when you're a power user of a certain system (like the data entry staff) there's nothing that's better.

<comment><USER7> Probably correct. And given that you're spending a comparatively small amount of time in that learning phase, would you want it any other way?

<comment><AUTHOR> I would prefer software that I use often to be hard to learn but easy to use. Seldom used software should instead be easy to learn, hard to use. I find that most software today is in the latter category.

</comment></comment></comment></comment><comment><USER8> It seems a bit silly to write an accounting system, this is no easy task once you get to the complicated bits and pretty fatal if you screw it up. Surely saner to throw a curses interface on top of an already existing one? Like [https://github.com/beancount/beancount](https://github.com/beancount/beancount) or [http://ledger-cli.org/](http://ledger-cli.org/)

Looks pretty nice though!

<comment><AUTHOR> Storing accounting information is not that hard. Generating reports on them is. I know about ledger and beancount and will definitely look into them.

Unfortunately local laws demand each verification to be enumerated and not editable. That's something ledger and beancount doesn't provide to my knowledge. (and this again proves your point, writing accounting systems are hard, perhaps it's better to stick with the CRM bit).

<comment><USER9> Not editable? Local laws are obviously misguided, because everything is editable.

<comment><USER10> There's really no need to edit accounting data, because any mistakes can be fixed with additional journal entries.

</comment></comment></comment></comment><comment><USER11> Thanks for sharing! It seems that computer systems have regressed heavily from decades ago when every keystroke resulted in an instantaneous action, even with hundreds of simultaneous users. I miss those days of simple tui's.

<comment><AUTHOR> Thanks for the comments. I can't say I miss those days (I'm too young) but I do miss responsive applications.

</comment></comment><comment><USER12> I love this. I've been thinking about the error we've made in stuffing so many enterprise interfaces into the browser (I say this as a web developer).

Somehow we decided to trade-off upfront training (no longer required) for long term speed & productivity (no longer available).

An interface that can be used by anyone with almost no training, is almost certainly a low productivity interface.

I haven't expressed this very well. But, in short, I love this and would download and use it tomorrow.

</comment><comment><USER13> Just out of curiosity: what prompted you to make it ncurses based?

I can see lots of reasons why this could be practical but most of them (like bad network connection or slow hardware) belong to the past.

Is it just a personal preference or aesthetics?

<comment><AUTHOR> I do most my work in the terminal, using vim and mutt. I wanted something fast, I can't stand waiting for a webpage to load. That's not a good user experience for mem.

So I tried to mimic vim (fast load times and no use for a mouse). Then ncurses was a natural choice because I wanted to be able to reach the app from everywhere (at least until I've made it network aware).

</comment></comment><comment><USER14> I absolutely adore this. This reminds me of the old AS400 greenscreens I used to work on. Clean, fast, and everything within finger's reach. Can't wait to get home and play with this a bit.

<comment><AUTHOR> I'm sorry, but all I've right now is a video. The software isn't ready to be released and I'm still thinking about how it should be release (closed or open source).

I appreciate your feedback and will definitely reach out to hacker news as soon as I've something for you to play with.

</comment></comment><comment><USER15> I remember how, when I was child, video store clerks used to operate this kind of systems blazingly fast, knowing all the key shortcuts by heart and achieving incredible productivity.

<comment><AUTHOR> That's one of my goals. To have something blazingly fast. I actually flag every command that takes longer than 100 ms to execute as an ERROR.

</comment></comment><comment><USER16> This reminds me that I used to do my Dad's Tax return preparation with MONEY.BAS (QBASIC) for far longer than we had any right too.. definitely in the 2000s.

</comment><comment><USER17> This is lovely. There have been a few projects floating around HN aimed at personal CRM lately, and I could see this being an excellent interface for such a thing. I'd love to know more: how is the data being stored / how configurable do you plan on it being (custom objects, fields )

<comment><AUTHOR> Thanks for your support. The data is stored in a sqlite3 database. The next two big features will be network awareness (that is, you can have multiple databases sync with eachothers) and custom data fields where I was planning doing something like [http://backchannel.org/blog/friendfeed-schemaless- mysql](http://backchannel.org/blog/friendfeed-schemaless-mysql) to get a fully customable configurations.

<comment><USER18> Instead of multiple databases in sync, why not use a real RDBM such as Postgres and have the clients sync to the master. The distributed databases- in-sync idea feels a bit like Git, which I love for code but would hate for production customer data. Those types of things need a canonical representation.

<comment><AUTHOR> I single database would require a constant internet connection and would be much slower.

I aim for 0.1s feedback, and that's hard going over the network. See [https://www.nngroup.com/articles/response- times-3-important-...](https://www.nngroup.com/articles/response- times-3-important-limits/)

I don't think it's such a bad idea for production customer data. Actually I think it's a great idea and wrote my master thesis about that: [http://fileadmin.cs.lth.se/cs/Personal/lars_bendix/Teaching/...](http://fileadmin.cs.lth.se/cs/Personal/lars_bendix/Teaching/Lund/Theses/Gustafsson16/final.pdf)

I would love to hear why you think it's a bad idea! Would you care to elaborate?

<comment><USER18> I definitely agree that you should continue to use sqlite as a local cache and read from it for initial display. But I believe that on save writing back to a central server and occasionally polling it for updates would provide many benefits, the most obvious of which is decoupling the UI from the data. See my reply to self in which I mentioned a possible HTTP interface.

<comment><AUTHOR> To get a reasonable real world working application I believe I've to do something like that. Thanks =)

</comment></comment></comment></comment></comment></comment><comment><USER3> It should be possible one day for ncurses to serve a web based app and a theme folder.

I'd much rather create an app in ncurses as a developer and then include ncurses-web (if it existed) compile and give the .css file to a designer.

</comment><comment><USER19> I love this, but I would instantly want to access the info from mobile.

I'm a heavy Evernote user. About once a year I look for a replacement and consider rolling my own low tech CLI interface. Then I remember all the notes I take on my phone and how often I use the web version to look things up.

</comment><comment><USER20> Love the project :)

Can you create an OpenGL interface in voxels please.

</comment><comment><USER21> Is there a link to the source or a project page?

<comment><AUTHOR> Not yet, it's something really early and I haven't had time for a project page yet.

Still figuring out if I should make this open or closed source. Hard choice!

I definitely reach out here again once I've project page up and running.

<comment><USER17> You said above, "...local laws demand each verification to be enumerated and not editable." That suggests a good value from open-sourcing where you can get 3rd party validation on your operations and security.

</comment></comment></comment><comment><USER22> Waiting for Turbo Vision version :)

</comment><comment><USER23> Cool. Out of curiosity, what language is it written in? (Fellow ncurses fan here ;))

<comment><AUTHOR> Thanks! It's written in C for the reason that I want to become a faster C developer. It hasn't always been the most convenient experience but I sure get better in writing C :).

<comment><USER23> Great, I did some work with ncurses & C, and it's not easy but it's worth it.

</comment></comment></comment><comment><USER24> A web based interface IMHO would be more usable. However nice project. I am an emacs person so using the system via a vi-like editing style seems hard to me.

Maybe you could automatically generate invoices with LaTeX and save a pdf, that would be cool.

Also, you could add an account overview, where you could see the balances of all your accounts, compare it with previous periods. Paint them red if you're expenses are soaring etc. Maybe some graphs...

You could also prepare a screen for financial indexes such as cash flow, debt- capital ratio etc.

<comment><AUTHOR> Hi, I'm the developer. Thank you for your suggestions. I must make you dissappointed that there's no plan for emacs style keybindings at this point.

The system has a very clear API between GUI and backend, so future plans is to add more interfaces, a web based one is on the list (although IMHO web based interfaces are worse to use).

The LaTeX idea is great, so great that it's already done. I tried to keep the video short and don't show all features. I also have integration with mutt. Sending a new invoice is just a keystroke away and then mutt is opened with an attached pdf and a template mail body.

The account overview is the biggest weakness right now and something I look forwared to improve. I definitely take your suggestions with me towards that work.

<comment><USER3> don't create a web interface please, maybe there needs to be a way to render ncurses in the web.

<comment><AUTHOR> While your idea of auto generating web gui might be nice (I haven't seen it in action yet), there's no such solution what I know on the market yet. I want to be able to have a native feel on every platform. That means a web UI, a windows UI, an Android UI, etc.

Therefor my current solution is to have a really tiny presentation layer that is able to adjust to multiple UI.

<comment><USER3> if you look at blessed for example [https://github.com/chjj/blessed](https://github.com/chjj/blessed) you'll see that the widgets fit every use case you would need for a webapp, but just need to write a wrapper for web rather than ncurses if that makes sense.

<comment><USER25> You'll want to check out "react-blessed", a way to use Blessed through React -- which enables common UI code for both web and terminal.

[https://github.com/Yomguithereal/react- blessed](https://github.com/Yomguithereal/react-blessed)</comment></comment></comment></comment></comment></comment>


Code review with vim - <AUTHOR> https://github.com/codegram/vim-codereview

<comment><USER2> The intro in the screencast was hilarious. Love the plugin. Using this =)</comment>


A possible explanation for the mysterious ice circles in Lake Baikal - <AUTHOR> https://phys.org/news/2020-02-explanation-mysterious-ice-circles-lake.html <comment><USER2> OK, it seems to be eddies. Just as for ice circles in rivers, in pools below constrictions. But they don't know why eddies are forming in Lake Baikal.

Also, TFA says nothing about the ~sunken vehicle in the 18 March photo. Odd.

</comment><comment><USER3> Vehicle that broke through the ice in the 18 March photo described here:

[https://earthobservatory.nasa.gov/images/146220/baikals- gian...](https://earthobservatory.nasa.gov/images/146220/baikals-giant-ice- rings)

"This particular ring was more than just a scientific oddity; it posed a serious hazard because Russians often drive over the ice to get across the lake in the winter. In fact, a few weeks before the satellite image was captured, a van broke through and sank along the edge of this ice ring; the driver and passengers escaped and were rescued. A few days later, a second van (photograph above) broke through and got stuck along the eastern boundary of the ice ring."

</comment><comment><USER4> > Lake Baikal—the deepest lake in the world.

Sounds like a primo submarine testing facility. Deep, clear and low salinty.

<comment><USER5> It also is designated as protected national park, is a unique ecosystem and a UNESCO World Heritage Site. So I wonder, why you look at all this, and think - "why don't we let the military-industrial complex pollute and abuse it" ?</comment></comment>


Mailgun support, really? - <AUTHOR> https://gist.github.com/mkarnicki/c627d6377df58d57e7ef8dc1211a21cc <comment><USER2> Looks like automated emails or copy pasted responses</comment>


Show HN: Qt/Qml support for .NET - <AUTHOR> https://github.com/pauldotknopf/net-core-qml <comment><USER2> Awesome, great to see another cross-platform UI option for .NET Core. I love the idea of being able to write my core logic in .NET and using a GUI toolkit like Qml for the interface.</comment>


Followup to "I bought more than 1 million Facebook data entries for $5" - <AUTHOR> http://talkweb.eu/openweb/1842 <comment><USER2> You really don't want to mess with the Facebook police. They'll delete your life.

I wish I had something more substantive to say here, but the problem is that we give Facebook an _extraordinarily_ huge power in our personal lives. It's not just some random web service.

<comment><USER3> 20 years old. No Facebook account.

I 'deleted my life', and y'know what? Nothing changed. I still have the same friends I talked to before Facebook, still meet up for drinks on their birthdays, still arrange nights out, and still share what's going on in my life.

The best thing about no Facebook? I know what information is out there, and nothing personal that Advertising Inc. can buy.

<comment><USER2> You have a much easier story.

I'm 47. Because of the network effect, using Facebook I've connected with people I knew and cared about that I haven't seen in 30 years. Dozens of them. I barely remembered person A and B, found them and became friends. Then they knew person C and D. E and F were close behind. Pretty soon I have 200 friends from places scattered all over the world.

Life sneaks up on you, and people stop having the same phone, email, or street address. You wake up one day wondering what happened to Bob, then slowly realize that you'll never see him again. It's a weird feeling.

Yes, if I were 20 and still had a cell phone with all my friends from 4 years ago, it'd be no big deal. But if I lost my FB data now? I'd never find these guys again.

Personal sidebar ahead: by the way, my wife and I are having a competition to see who can get the most friends. As long as you're not selling anything, and I promise not to sell you anything, send me an invite! Right now she has 600 friends and I have something like 250.

<http://www.facebook.com/danielbmarkham>

<comment><USER4> _But if I lost my FB data now? I'd never find these guys again._

You haven't bothered to copy off important contact data to some personal file? That's crazy.

 _You wake up one day wondering what happened to Bob, then slowly realize that you'll never see him again. It's a weird feeling._

True. OTOH, when that has happened to me, I realize there's a reason for it.

At 54 I find that a) life is not only short, it's shorter than you think, and b) there's a whole lot going on right now that dwelling on acquaintances lost to the past is probably a waste of time.

 _[B]y the way, my wife and I are having a competition to see who can get the most friends._

Seems we're very different people, so my anecdotal reflection likely as alien to you as yours is to me.

<comment><USER2> The purpose of my post was to point out to HN users, some of which may be old cranky guys with too much time on their hands, the way the average Facebook user looks at things.

If you'd like to make it about me, happy to do that. My email is in my profile.

<comment><USER4> _If you'd like to make it about me [...]_

That wasn't my intention, but your post was _about you_ and how _you_ use FB. Just as my response was about me and how I (don't) use FB.

I'm curious to know, though, how anyone can know if they are an average FB user. I know a few people who use FB and they all seem to use it differently. I wonder if each of them think they're an average FB user too.

</comment></comment></comment></comment></comment></comment><comment><USER5> I recently had cause to log in to facebook (first time in 6 months) because my account had been compromised and was used to place a bunch of ads ("find hot guys in your area") which they had apparently approved (and ran to ~$100 in a few hours).

I was impressed with the account recovery process ("you entered an old password -- do you want to recover your account?"), but I felt like they were completely optimized for recovery versus preventing the intrusion in the first place (ala Google's two-factor auth).

Anyway, in this case they obviously took the wrong approach with the blogger and I hope it blows up in their faces. (Microsoft and everyone else used to not be nice to security researchers, Facebook will no doubt learn that cooperation is a better strategy too).

<comment><AUTHOR> FYI Facebook has two-factor auth as well: <https://www.facebook.com/note.php?note_id=10150172618258920>.

<comment><USER6> I'm not very keen on those two-factor approaches like this that use text messages to your phone. The text message often does not arrive. And in some places you have to pay to receive text messages so it can cost money to log in.

It would be preferable if they could just use the Google Authenticator app like a few other sites do.

<comment><USER7> There is a 2-factor code generator built into the Facebook app for iOS and Android specifically to help with SMS deliverability problems. Have a look at <https://www.facebook.com/help/270942386330392/>

</comment></comment></comment></comment><comment><USER8> I would say without facebook your life becomes much more productive regardless of security issues. I rather prefer to be in touch with certain few people through other media rather than having a bunch of schoolmates which only stalk my profile. There would be no difference in having them because after all I would not have any contact with them even on facebook.

</comment><comment><USER9> I spot-checked some of the profiles in the original post screenshot. Four out of five were realtors. So it could be the profiles in the screenshot were ranked by profession, or that this is a lead for where the leak came from. Or coincidence.

</comment><comment><USER10> What surprised me is that Paypal is facilitating the payment for gigbucks, the marketplace where this is (still) offered.

<comment><USER11> Well, it's not like they're trying to take donations for cancer patients or anything.

</comment></comment><comment><USER12> > I tried to ask what they would do next but they said it would be an internal > legal investigation.

"By who?"

"Top. Men."

</comment><comment><USER13> I don't know why Facebook reacted like that. But as I understand, those information are not from Facebook itself. They are from an unknown third party app. Also, anyone who has a knowledge in Facebook API can mine those information by creating a Facebook app. I'm sure those app like "God wants you to know" have more than 1 million Facebook information.

By reacting like that, I think Facebook can be considered as guilty as charged.

<comment><USER14> You don't even need to write a facebook app. I have put together scripts in R and Matlab with those capabilities. Its absurdly simple to do using Facebook API and a JSON parser.

<comment><USER15> Using facebook API you are at the mercy of other's person consent to give you access to their email address and other data. You cannot just put some number to access a profile and get the email address or until you have some preferred access to data from FB itself.

Please let us know if you were working using some other better approach.

</comment></comment></comment><comment><USER16> So Facebook is not only the x largest state, but also acts on the same level of paranoia as government agencies do?

</comment><comment><USER17> Is not that a good thing that fb is taking this issue seriously and going after the people who sell this information?

On the other hand, they are trying to solve this issue secretly, no disclosure. And we dont yet know if they are taking any privacy measures to prevent this kind of data leak.

<comment><USER18> It becomes much harder to track down a leak when the leakers know they're being chased.

</comment></comment><comment><USER19> Is selling such information even illegal? Is it against Facebook's terms?

By using an app you are giving them access to a whole bunch of your personal information. I always assumed that many were scraping data from my profile. This is why I have never use Facebook for authentication.

When I read the original post I figured Facebook would want the data so they could narrow down who the probable culprit is. I would have thought finding a common app among a million users probably wouldn't be too difficult.

That said the nature of this conversation is ridiculous.

<comment><USER20> Scraping data via app permissions is prohibited by TOS but not policed.

</comment></comment><comment><USER21> this is so normal. ark torrented all the fb accounts for their yc demo day

<comment><USER15> Ark only shows publicly available data from the people's profile at fb. If its not public then you cannot get it from ark.

<comment><USER21> you can find the exact profiles mentioned on demo day on piratebay.

<comment><USER22> ? It's true that there is a low quality dump of FB data from years ago, but it's totally useless in terms of our faceted search and we never use these kinds of sources.

</comment></comment></comment></comment><comment><USER23> Well this sounds like a good example of social engineering. Someone was really interested on his data an he just send it to them for free :/ I mean "Policy - Police", "It's secret", "we're recording you" are classic social engineering techniques used to put the target in a uncomfortable situation. I used them a few times, too.

</comment><comment><USER24> This is pretty insane. Did you ever agree to the confidentiality of the conversation you were having?

</comment><comment><USER25> I know someone who generated thousands of links to facebook profiles, including non-linked ones. They crawled for images with facebook meta data, pulled the facebook IDs, and used those to generate the profile links.

<comment><USER26> I'm not able to verify this right now, but facebook stores user identification information using EXIF in JPEGs? If so, I wonder whether image hosts delete this info before hosting your file.

<comment><USER27> Actually, the user ID is in the photo URL. Well, at least it was some time ago.

</comment></comment></comment><comment><USER28> "According to Facebook you are not allowed to read this post, so beware."

</comment><comment><USER29> Relevant: [http://www.theonion.com/articles/google-responds-to- privacy-...](http://www.theonion.com/articles/google-responds-to-privacy- concerns-with-unsettlin,16891/)

<comment><USER30> I wish I could hit a "Like" button on this.

</comment></comment><comment><USER31> There's a like button on that page. I was logged in to facebook. Now facebook knows I read that page!!!

</comment><comment><USER32> It looks like FB is really unhappy about people stealing their profits, selling user's information.

</comment><comment><USER33> Haha: I'm guessing the app that leaked this info is called "facebook"</comment>


CSVjs: Basic CSV parsing and encoding in JavaScript - <AUTHOR> https://github.com/knrz/CSVjs

<comment><USER2> > text.split("\n")

I don't want to be negative but this will not work on CSV files that contain newlines inside columns. You should also implement escaping quotes - this is _very important_ to ensure that the data can round-trip! Good for a first attempt, but as simple as CSV may look, there are subtle points that you should be aware of if you want to handle most if not all CSV out there. I've worked with lots of other implementations that get these little things wrong too, and it is particularly aggravating when CSV is supposed to be a pretty standard interchange format for tabular data. Please refer to RFC4180 for the details.

<comment><USER3> yet, that is what most csv code does. heck, ms excell did that until a few versions ago.

<comment><USER4> MS Excel has supported CSV that had newlines in fields for a least a decade.

<comment><USER5> MS Excel also defaults to using /r as the newline char on the OSX version (despite /r being obsolete in OSX since v10.1). It's true that CSV parsers have been around in various forms for a long time but 'complete' implementations in JavaScript haven't been available until recently.

</comment></comment></comment></comment><comment><USER6> This kind of thing is incredibly useful.

Large frameworks are great, but generally I only adopt them when starting a new project; or the occasional large refactoring project.

Whereas targeted problem-solving libraries like this one get adopted all day long. Next time I need to parse a CSV on the client, you can bet the first thing I'll do is Google to see if there's a library I can download and be done with it.

So, great job solving a targeted problem! Keep building things and keep contributing. People will find code like this endlessly useful.

<comment><USER7> (sorry accidentally hit the downvote button, so commenting to give you the karma back. hmm that used to work afaik, doesn't seem like it helped.)

<comment><USER6> I'll live. :)

</comment></comment></comment><comment><AUTHOR> First anything I've contributed to the community.

As a 16 year-old just getting into software development, it'd be amazing to get feedback from hn.

<comment><USER8> Some feedback:

\- Vanilla JS would be cleaner

\- Make it useable with Node. (Check if "window" variable exists, if not, do export CSV as a module. Should be this easy AFAIK)

\- You have some typos on the README.md

\- Put this on bower and npm

Good work. I was writing software at 16 but I wasn't doing it open source, I wish I did.

<comment><AUTHOR> Vanilla JS is up :) It's now usable with both Node and AMD. Typos should all be fixed. I'll put up on bower and npm once I become RFC4180 compliant.

Thanks for the feedback!

<comment><USER9> What's AMD? I keep seeing that acronym but searching it just returns "Advanced Micro Devices"

<comment><USER8> Asynchronous Module Definition[0].

[0] [http://en.wikipedia.org/wiki/Asynchronous_module_definition](http://en.wikipedia.org/wiki/Asynchronous_module_definition)

</comment></comment></comment></comment></comment><comment><USER10> d3.js provides a pretty solid JS csv parser [https://github.com/mbostock/d3/blob/master/src/dsv/dsv.js](https://github.com/mbostock/d3/blob/master/src/dsv/dsv.js)

[https://github.com/mbostock/d3/wiki/CSV](https://github.com/mbostock/d3/wiki/CSV)

<comment><USER7> Mike Bostock pointed out that he had already extracted D3's DSV parsing into it's own repo when i expressed my disappointment i couldn't use d3's w/o rewriting parts of D3's DSV parser.

It lives here: [https://github.com/mbostock/dsv](https://github.com/mbostock/dsv)

ps it properly scans & tokenizes CSVs and handles quoted fields fine as a consequence

</comment></comment><comment><USER11> If you are doing large-scale CSV parsing or encoding in Node, you may also find these two packages useful:

[https://www.npmjs.org/package/binary- csv](https://www.npmjs.org/package/binary-csv)

[https://www.npmjs.org/package/csv-write- stream](https://www.npmjs.org/package/csv-write-stream)

They are both written with handling very large files in mind, so they use buffers and streams for i/o.

</comment><comment><USER12> The CSV 'format' is hell. I just wrote a blog highlighting some of the issues : [http://tburette.github.io/blog/2014/05/25/so-you-want-to- wri...](http://tburette.github.io/blog/2014/05/25/so-you-want-to-write-your- own-CSV-code/)

<comment><USER5> It's not as complex as you make it sound. The parser should pass along any non-terminal characters without issue.

The rest of the edge cases (ex newlines in data) can be handled by using a proper DFM (Deterministic Finite State Machine). None of that String.split('\n').split(',') garbage.

If you're processing text as binary without using a string reader that can differentiate between UTF-8 and ASCII then you're doing it wrong.

With that said, I agree completely that people should use an established library. Code that has been viewed, used, broken by thousands of users is infinitely better than any home grown variant.

Source: With lots of blood sweat and tears I authored one of those 'solid' libraries.

</comment></comment><comment><USER5> Ever heard of jquery-csv?

I wrote the jquery-csv over two years ago with the goal of being the first completely RFC compliant CSV parser for Javascript.

It integrates with the CSV namespace but doesn't depend on it, uses pure vanilla JS, works with Node.js.

At the very least, if you want to claim RFC compliance you should have a test runner that verifies that your code doesn't break on the edge cases.

[https://code.google.com/p/jquery- csv/source/browse/test/test...](https://code.google.com/p/jquery- csv/source/browse/test/test.html)

Once you have your state machine working, your best bet to optimize speed is by limiting string copy operations. I managed this by using a regex tokenizer that groups any non-terminals (ex data between quotes).

I wrote it with the intent of providing a lib that can effectively parse CSV data from the browser (loaded remotely via AJAX or locally via the HTML5 File API).

The biggest weakness of parsing CSV on the browser is the inability to process data streams. That 2GB memory limit on JS scrips in the browser becomes a fundamental weakness when you're trying to process large CSV files.

CSV in general is terrible for data storage, unless it's only used for serialization because arbitrarily reading any point in the input data stream requires the parser to start from the beginning. You're basically screwed if you can't hold the whole dataset in memory as a 2D array.

</comment><comment><USER13> Consider starting at the default behavior with the documentation. For example, in the parse section, if no header option is provided, the first row will be returned as an array correct?

Start there: "The default behavior is to return each row of the CSV as an array." then "If the CSV file has a header, pass in {header: true} to get back an object using the header values as keys." then "If the file does not have a header, pass in ...".

Also, can a user override a header that is present in the data?

<comment><AUTHOR> Thanks for the feedback on the docs. Working on them now.

As for overriding the header, I think its possible utility offsets the ~3 LoC that it adds. Coming next commit.

</comment></comment><comment><USER14> So will this let me make a csv file in JavaScript and actually then let the user download it as a file?

That would really simplify a lot of my workflows instead of having to make separate csv and HTML views I django.

<comment><USER8> You could create a download file, but only in newer browsers.

We have an internal application which requires CSV export, we use something like this:

            csv = cleanTurkishChars(makeCSV(data));
            csv = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);
            $("#csvexport").attr({
                'href': csv,
                'target': '_blank'
            });

<comment><USER14> Thanks! Any idea where I can read more about it? What browsers support it? Are there file size limitations?

</comment></comment></comment><comment><USER15> in case someone wants a more mature parser: [https://github.com/koles/ya- csv](https://github.com/koles/ya-csv)

</comment><comment><USER16> Hey, I needed JS CSV parser few days ago. Here is my parser, I bet it is 100 times faster than yours :)

function parseCSV(str) { var obj = {}; var lines = str.split("\n"); var attrs = lines[0].split(","); for(var i=0; i<attrs.length; i++) obj[attrs[i]] = []; for(var i=1; i<lines.length-1; i++) { var line = lines[i].split(","); for(var j=0; j<line.length; j++) obj[attrs[j]].push(line[j]); } return obj; }

<comment><USER17> Looks like you've missed values enclosed in quotes that might contain new line characters or commas -- very important for things like address fields.</comment></comment>


I'm feeling lucky - <AUTHOR> Hey people, Do you think this startup is imitating Google's "I am feeling lucky" concept and taking it to next level ? <comment><AUTHOR> [http://goo.gl/VZDvts](http://goo.gl/VZDvts)

<comment><USER2> [https://play.google.com/store/apps/details?id=com.oneappsear...](https://play.google.com/store/apps/details?id=com.oneappsearch)

</comment></comment><comment><USER3> Not at all. (Both the concept and the next level)</comment>


"Is P Versus NP Formally Independent?" (2003) - <AUTHOR> http://www.scottaaronson.com/papers/pnp.pdf

<comment><USER2> This is a wonderful paper. The Razborov-Rudich theorem, in particular, is a classic result, up with the unsolvability of the halting problem, and Goedel's incompleteness, in my opinion. It's described in section 4 of this paper. The rest is also well worth reading.</comment>


Help me bring Black Girls Code to Brooklyn - I'm matching the first $5K - <AUTHOR> https://www.crowdtilt.com/campaigns/no-sleep-till-brooklyn-for-black-girls-code-ny?force_desktop=1&utm_source=crowdtilt&utm_medium=email&utm_term=comment&utm_content=comment_cta&utm_campaign=notification <comment><USER3> I am a member of Geekdom in San Francisco and they just hosted an event there recently. It appeared to be an alive and vibrant organization from what I saw. Great turnout too. Prior to that event I had no idea Black Girls Code existed. Thanks for bringing this to Hacker News for people to see.

Here is a video of Rackspace S.F. showing their support: [https://www.youtube.com/watch?v=08Kv1Q2noU4](https://www.youtube.com/watch?v=08Kv1Q2noU4)

<comment><AUTHOR> Sure thing! Thanks for spreading the word about my fundraiser!

</comment></comment><comment><USER4> Only a handful of comments and this is already looking like your typical reddit thread regarding anything geared towards and underrepresented minority: "what about us white men???".

I expect better from you guys. Perhaps that's my mistake.

<comment><USER5> I'm among those who think this organization isn't doing it right, but I'm a 'colored' developer. Does that make my opinion any more valid than the white men's ?

To me this is as beneficial as a 'white girls rap' bootcamp, but hey, whatever helps.

<comment><USER4> Its one thing to think that "they're not doing it right", its another thing to think it is actively racist. One is an opinion, the other is idiocy.

</comment></comment></comment><comment><USER6> In Europe this would be inappropriate... (The "Black" in the title of the program, not the teaching girls, obviously.)

I don't think any European here would disagree. The fact that you categorise someone as "black" is just awful. How black exactly do they have to be? Are you going to measure it? Are southern Italians black? What about Turks? ... See the problem?

Edit: Just want to point out that I'm not talking about the specific word "black". Use whatever word you want. Just to put this into context: here, in Belgium, it's actually illegal to register someone's "race" (except for medical reasons).

<comment><USER7> I read somewhere that using african american is also bad since there are many black people that don't identify as african and don't even have african heritage. I think black is much more inclusive.

<comment><USER8> African-American also has the problem that not all black people identify themselves as American. Although it does lead to an interesting conversation about American imperialism when one expresses concern over how much of African governments are run by African-Americans.

</comment></comment></comment><comment><USER9> African-American women are severely underrepresented in IT, so this charity is addressing that problem. They are teaching children a skill. If that really bothers you, take a minute to reflect on yourself.

<comment><USER10> This is the argument that always baffles me. There are many reasons for that imbalance, just as there are many reasons for imbalance in other industries (sometimes in the opposite direction).

I coach youth sports, and many times the kids on my teams come from poor families. When I talk to them about their interests, not once have they mentioned or indicated that they would be prevented from pursuing that interest.

<comment><USER11> Growing up in the United States, I was often told that there were certain things that I could not do because I would face a glass ceiling due to my skin color. Reading history books it was clear that this was true for the people who came before me. Looking at the people who were in the positions I wanted to attain, it was clear that something was preventing people who look like me from succeeding in those fields. And listening to the comments I received from my peers, it was clear that I was not perceived in the same way as others.

I can't speak for anyone other than myself. But, from my experience, it is helpful to know that people who look like you can succeed in this world.

<comment><USER10> Who told you these things? Obviously, that's where the problem starts, and though I've never experienced that (nor has anyone I know), I can't deny that it exists.

<comment><USER11> Older members of my family. They simply related to me their experiences living in the United States. Unfortunately the Civil Rights Act of 1964 was not that long ago and the world didn't change overnight with its passage. And they received similar teachings from their parents who dealt with even greater injustices before that.

</comment></comment></comment></comment></comment><comment><USER12> I was actually a presenter at one of these before. They used App Inventor [http://appinventor.mit.edu/explore/](http://appinventor.mit.edu/explore/) It's actually a good experience for the girls if you plan for it in advance and have at least some knowledge of app-Inventor (I assume they almost always use that).

</comment><comment><USER10> Is anyone else troubled by this?

"Black Girls CODE is an international non-profit organization with local chapters in San Francisco, Memphis, Atlanta, Chicago, Detroit, and New York. They teach _girls of color_ (ages 7-17) to become the masters of their technological futures by teaching them classes in game design, web development, robotics and more!"

Why not teach all girls or call it, 'Impoverished Girls Code?'

<comment><USER12> Every time...

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

Potential examples:

      1. https://news.ycombinator.com/item?id=6885123
      2. https://news.ycombinator.com/item?id=6365495
      3. https://news.ycombinator.com/item?id=6448409
      4. https://news.ycombinator.com/item?id=6857739
      5. https://news.ycombinator.com/item?id=6035263 - This is the most obvious one.
      6. https://news.ycombinator.com/item?id=6902563 - Cover up.
      7. https://news.ycombinator.com/item?id=6907915

I'm going to just keep on collecting these links and post the list on every instance I see. This will be added as the 8th link.

<comment><USER13> Your theory doesn't really accord with the evidence you posted.

Your theory is that anything positive about Black people is pounced on by trolls. To me, evidence of this would be a story about an individual Black programmer, for example, or (as you say) programmers in Oakland.

But this is a story specifically about a program for Black girls learning to code. Race is not incidental, it is central to the story. So for you to claim some kind of hidden agenda because people with differing views on race post in these stories, is ridiculous.

</comment></comment></comment><comment><USER14> Some of you understand the value of dividing and conquering, which is precisely what Black Girls Code is doing - breaking a problem into a sub- problems until eventually each solution helps solve the bigger problem.

The beauty in Black Girls Code is who it chooses to focus on (call it niche market) - Americans who historically have been downtrodden by lack of humanity attention especially in software arena.

The "digital divide" is factual and real. Why its important to address can only be understood by those who have insight or live it.

</comment><comment><USER15> This is so awesome. I'm stoked just knowing this is happening .

<comment><USER15> I snort derisively at white kids saying 'reverse racism' like it's a thing. HOWEVER.

1\. Why is there a white dude in the driver's seat on the donation page? That's a bit dances-with-wolves, and most of the (admittedly triggery) activist communities I orbit wouldn't stand for that sort of thing. If this isn't astroturf, where is the leadership from the community? (Which isn't to say they're not involved, I just want to see more presence so I know this is really for them.)

2\. Usually the stated justification for a progressive segregated space (if there is such a thing -- not going to wade into that one) is to protect folks with PTSD oppression-related triggers. E.g. at many universities men aren't allowed in a lot of on-campus women's spaces for this reason. But it isn't clear if that's the case here, and if not, why is the space segregated? It would help me feel comfortable if they'd explain their reasoning.

In general, though, like I said: stoked.

<comment><USER16> The organization itself was founded a female african-american EE. I agree that that stuff should probably be on the donation page... but the flip side is they clearly picked Alexis because a) he's internet famous and b) he lives in Brooklyn,

For the second, if the goal is to try to get black girls into programming, then there's very little reason for them to spend the resources on other people. Why limit to black? Because the founder felt culturally isolated while going through EE, and wanted to minimize that from happening in the future. Why limit to girls? Because the founder felt culturally isolated while going through EE, and wanted to minimize that from happening in the future.

But seriously, the donation page should link to the charity's website: [http://www.blackgirlscode.com/](http://www.blackgirlscode.com/)

<comment><USER15> Thanks for the research and link, I'm super stoked now. :) Going to go off and tweet it.

</comment></comment></comment></comment><comment><USER17> I kicked in during summer of code, and I'm just not doing well enough right now to help them out again. It's good to see it on HN, but the comments are probably going to take a dive soon.

<comment><USER12> Already has. It's impossible to talk about black people on HN.

...and there are people who think the tech-community doesn't have a problem with race....

<comment><USER17> I'm Black and used to being on the Internet. I just hope it doesn't discourage any young women or minorities from going into a STEM field. I wish I could tell them it gets better but it really doesn't.

</comment></comment></comment><comment><USER18> Gotta love US and its inverse racism. "White girls code" would be persecuted like KKK is back in business, but "Black girls code" is all good. That's not right.

<comment><USER19> I think that's because black people have historically been "unluckier" than white people in the US.

Do you feel the same way about the sexist component of this? Should I be annoyed that "Boys code" would be persecuted but "Girls code" is all good?

(I'm not saying there are any correct answers to my questions)

<comment><USER20> _> I think that's because black people have historically been "unluckier" than white people in the US._

"Have historically been unluckier than", " _are_ systematically objectified socially and repressed economically by"\--I understand your typo, though, the keys are so close to each other on the keyboard.

(The tenses are important, too. It isn't new, but it isn't dead.)

<comment><USER19> Tell me about it. I was just trying to put it in blue pill white people language

<comment><USER20> I figured as much. =) It is something that I think is difficult to soft-pedal, though, and still encompass what it actually means.

I tend to think most of HN hasn't even the slightest idea, which makes me a bit sad.

</comment></comment></comment></comment></comment><comment><USER21> The day I left Hacker News and didn't look back. Sick and tired of this "community".

<comment><USER10> I don't think anyone is up in arms. Those questioning the charity are simply wondering why it's OK to have a black girls code charity and not OK for a white girls code one.

Still, put us all in a room and I'm sure we'd get along fine.

<comment><USER4> >why it's OK to have a black girls code charity and not OK for a white girls code one

If you have _any comprehension_ of the racial history in the US and have to ask that then you really don't belong in this conversation.

<comment><USER10> I don't think it's your right to tell anyone whether or not they belong in a conversation. The post was made on a forum in which I'm a user. That gives me every right.

You can try to marginalize the opinions of those that disagree with you, but that's not a rational argument against them.

<comment><USER4> Despite what your teachers and your parents may have told you, your opinion is not inherently valid. You have shown yourself to be ignorant of too many things to provide a meaningful contribution to this discussion.

<comment><USER10> I'm trying to bring some humanity to the discussion, but you're making it difficult.

</comment></comment></comment></comment></comment></comment><comment><USER22> My 2 cents (not that anybody asked). I teach computer science at an predominantly black all-girls school in Brooklyn - my students are exactly the demographic that this organization is targeting. And I think its great - <USER2> more opportunities we can provide for these girls, the better, and Black Girls Code looks like an organization that has done a lot of good - I'm looking forward to seeing them come to Brooklyn.

But the name does bother me a bit, too. Not because 'racism!', but because while it accomplishes the goal of making it clear that this is a safe space for black girls, it raises the question "am I welcome here?" for anyone who isn't black. And a handful of my students aren't black (they're Hispanic) - afaik, they are welcome there too - from the website it looks like Black Girls Code is looking to provide opportunities for all girls of color - but as a teacher, I'd like to be able to just say to my class, "hey, you should all check out this awesome event/opportunity" without it turning into a discussion about race. Plus, I have no idea whether I, as a white woman, would be welcome there as a volunteer? I'm used to being the only white person in a classroom full of students of color - that's not something that's ever been an issue at school - but at a place called Black Girls Code, I'd have to wonder whether my help might not be wanted.

</comment><comment><USER23> And, perhaps predictably, a noble post falls off the front page as the discussion devolves into a cartoonish dust ball of chest-beating, setting off the flame-war detectors. The girls lose, but thank god the opinionated "experts" on US racial politics have had their moment.

</comment><comment><USER13> The one fact we can all agree on is that Black people, and women, are both underrepresented among programmers, and Black people in general economically disadvantaged.

My understanding is that this program should be seen in the context of a political movement that sees this under-representation as an example of systematic oppression by a society that privileges White males. This oppression comes in the form of discrimination in employment, unequal access to education, and stereotypes that guide White males towards higher paid careers. The movement sees eliminating this oppression as a very high priority.

There are two points where I disagree with this movement. First, there may be explanations of this underrepresentation that are unrelated to oppression. These include lack of interest in programming (due to cultural differences in values), cultural differences in how education is valued, and genetic differences in personality and intelligence.

Second, I think that it is natural and inevitable that the majority culture be dominant, and this has social and economic implications. For example, Israel is fundamentally a Jewish nation, and this implies that Jewish values, culture etc. are dominant in that society. While many Israelis explain economic and social inequality in Israel as a result of the backwardness of Muslims, I think the truth is that really this is just another instance of the inevitable trend in societies. So I would like to curb the worst excesses of inequality that result from different races/cultures living together but I do not see inequality as a something terrible that must be eliminated entirely.

</comment><comment><USER24> is there any way to contribute besides donating?

<comment><USER17> They're always actively looking for volunteers in the areas. I believe more information about becoming a volunteer is on their website.

Passing the links/events/fundraisers around doesn't hurt either, imho.

<comment><AUTHOR> Yes to all of the above.

</comment></comment></comment><comment><USER25> It is not helpful to blanket condemn the HN community. Yes, the vast majority are white men. Yes, a significant portion hold political positions on minority peoples that do not take into account the history and structural disadvantages of being both not-white and not-male. But that position is a meaningful way to survive in a system that for hundreds of years would have punished or killed even white men for acknowledging the humanity and difficulties of those peoples.

So, while I disagree with them, telling them that they're all assholes is useless.

Building equality is not a zero-sum game between those who-have and those who don't. It is the elevation of our collective humanity through empathy.

<comment><USER26> Although you have to realize that there are people who see 'equality' as mythological, based on analyses of gender and race that see them as inherently hierarchical through their social construction (basic reasoning reveals that race isn't just skin color and gender is not sex organs and characteristics). Unfortunately these people are few in number, and they're mostly women and non-white people, so no-one listens to them anyway.

If we sympathize with those folks, HN comment threads become even more futile.

<comment><USER25> I understand that it seems like it will magnify the futility, but the way you are describing is the way that has been tried forever. It has resulted in slow change, usually only being realized when society as a whole has been influenced enough to forget the old perspective.

There's a lot of power into both taking the full fears of another into consideration while simultaneously trying to present the full fears of their Other to them.

</comment></comment></comment><comment><USER26> I don't need White Boys Code. I'm a white male who learned to code when I was about 12 years old, at an NYIT summer program that my parents paid for. My high school had enough coding classes (including AP) that I could take one every year. My parents could afford to buy me a computer and they and others didn't stigmatize me for spending hours on it. I don't need White Boys Code and neither do white-boys-in-general.

I guess this is a lot of stuffy white dude HNers' first interaction with a little thing called identity politics. Surely no white bystander questioned why the Black Panthers weren't called the People Panthers (and they did provide a plethora of community services, they weren't just a militia group[0]); we're at a time where, after black radical politics was systematically destroyed by the US government and police , white-people-in- general sort of exude this attitude of "you seem to have won [read: lost], stop rioting [i.e. Trayvon] and trying to organize around identity because we live in a post-racial society now and any mention of race, or exclusion of whiteness, is Racism."

But actually: "Just as the capitalist system is not a capitalist plot, so racial oppression is not the work of "racists." It is maintained by the principal institutions of society, including the schools (which define "excellence"), the labor market (which defines "employment"), the legal system (which defines "crime"), the welfare system (which defines "poverty"), the medical industry (which defines "health"), and the family (which defines "kinship"). Many of these institutions are administered by people who would be offended if accused of complicity with racial oppression." (that's Noel Ignatiev).

So, the ultimate solution for those who recognize race as a force of _institutional_ violence and marginalization (rather than an outdated idea, because hey explicitly racist speech and laws are impolite now!) would be to dismantle those exact systems and rebuild without any idea of whiteness at all -- "white skin would have as little social importance as big feet." But if you try to do that, at best you're lonely, and at worst you're killed (Obama can assassinate terrorists on US soil, remember).

So Black Girls Code is doing what can be done right now to help a severely marginalized, invisible group (you have to remember the experience of young girls in the US [1][2][3]) get into a field that is basically guaranteed employment if they develop interest and go with it long enough.

If you're white, especially a white guy, no one cares about your Very Reasonable And Logical opinion or how this makes you Very Uncomfortable on the Internet.

[0] [http://www.stanford.edu/group/blackpanthers/programs.shtml](http://www.stanford.edu/group/blackpanthers/programs.shtml)

[1] [http://reelgirl.com/2013/11/im-not-a-pilot-im-a-pilots- wife-...](http://reelgirl.com/2013/11/im-not-a-pilot-im-a-pilots-wife- says-3-yr-old-girl/)

[2] [http://www.metafilter.com/121190/teenage-girls-they- havent-b...](http://www.metafilter.com/121190/teenage-girls-they-havent-been- living-theyve-been-performing)

[3] [http://sodisarmingdarling.tumblr.com/post/34106027759/what-i...](http://sodisarmingdarling.tumblr.com/post/34106027759/what- its-like-being-a-teen-girl)

</comment><comment><USER27> Sorry I donated all my money to the "Lesbian Eskimo Left-Handed Midget Albinos Code" [1] Charity. They are far less well represented in our industry.

[1] [http://www.youtube.com/watch?v=FB9DSWxtsgU](http://www.youtube.com/watch?v=FB9DSWxtsgU)

<comment><USER28> Think about your comment for a bit. Did you feel good making it? Ok, it's a free country and you have free speech.

Now consider that to most intelligent people that comment was the most useless thing they read all day.

<comment><USER27> Humor is just my way of poking fun at quirks in our society.

For example why aren't we as concerned about the male domination of the sanitation industry?[1]

[1][http://jobstat.net/jobs/sanitation- worker/](http://jobstat.net/jobs/sanitation-worker/)

<comment><USER28> Of all the "quirks" in this world you find this one worthy of snark?

What I find more quirky is that using the word "black" is perfectly ok in all other domains of life "black neighborhood", "black music", "black hair", "black person"... But as soon as this word invades a professional domain tyically occupied by white males, with the goal of hopefully attracting some black girls who previously would have never seen programming as an option, it becomes a "quirk". Or as some other vigilant posters in this thread have indicated, out right DISCRIMINATION. Supposedly against blacks themselves, or maybe just human life in general. But who are we kidding, it's discrimination targeted at the world's most endangered creature -the rare and precious north american white male.

<comment><USER27> >Of all the "quirks" in this world you find this one worthy of snark?

Because it's here on the front page and I was listening to the "Dead Milkmen".

I'm sorry if I may have offended you.

The quirk I was referring to is the fact that equality is only championed for trendy jobs perceived as desirable. There are no "Black Girls Construction" events for example.

<comment><USER28> As a white guy I take no personal offence. Just pointing out life's little quirks.

Desirable generally doesn't equal trendy.. Desirable just means "doesn't have to work two additional jobs in order to make ends meet". Construction is probably a bad example of undesirable.. Where I'm from it is rather desirable as you can make a lot of money and have a great degree of independence. I bet there are one or two "black girls in construction" groups around here in Canada at least.

<comment><USER27> fair enough, my point still stands though. I don't see people clammoring over the gender disparity in janitorial positions for example. I simply think events like this are odd. I don't think they should be gendered or racially restricted. When I was in high-school I had to teach myself programming. There were no resources for me to take advantage of like this I would have loved to attend something like it. There were also huge negative stigmas associated with (nerds) who played computer games at the time which is how most of us got into games.

The best way to get any kid interested in tech is video games. They will be interested in a career there if they look up to role models in that industry. Kids need to respect and look up to scientists and engineers rather than pop culture and sports stars. I myself was guilty of this when I was younger, Then I played quake and it blew me away. Afterward I looked up to John Carmack and started learning about computers.

<comment><USER28> There are many events that are not catered to specific genders or racial backgrounds. This one just happens to be not one of those.

I guess I can see how an event like this might seem odd to a non-black male.. But America is an odd country where cultural trends are completely deformed (its not just america but let's focus on her for now). This event would just be the first step to show an alternative norm to a girl who has all her life been exposed to completely negative examples of what she can become. This is her Quake.

When the day comes and somebody creates an event called Black Girls Code, and other people: men, women, white and black, completely honestly ask that person "why", that's the day when we can truly call ourselves an equal opportunity and just society. Unfortunately I think this is still quite a ways away.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> As a side note to kn0thing: you should put an e-mail address or some other contact info in your HN profile; I want to send a note about how most nonprofits get funded in the U.S., but there's no contact info available for you.

<comment><AUTHOR> Duly noted. Thanks! (Added)

</comment></comment><comment><USER5> I'll chip in, but only because you asked, not because I think this will accomplish anything.

<comment><AUTHOR> Every bit helps. I'm trying my best not to use that starfish cliche....

</comment></comment><comment><USER30> There is a bit of a chicken-or-the-egg issue with these sorts of programs that has always bothered me. I've had some experience with attempts to address diversity in subcultures, and while I agree with the goal, the methods have always rubbed me raw.

The problem is, they tend to always be ran by the majority group to try to "give a helping hand" to the minority group. It's kind of a patronizing position. I didn't need a "helping hand" to become a programmer, and women are smart enough that they don't need a "helping hand" either. And they won't want it.

Think of it this way. There is an extremely similar situation in teaching, where there aren't a lot of young males going into the field. I have had some interest in becoming a certified teacher, having done some semi-formal class programs of various types, but I know for myself I would never go to a "Get Men to Teach" type of program. I wouldn't want to be treated special. I would just want to go through the normal program and be treated no more differently, either positively or negatively, than anyone else. In addition, a lot of people don't like to be told by outsiders that they're doing something "wrong", or that they should do something differently. Someone coming to a programmer conference and espousing how great it would be if more of us got into teaching is terribly unlikely to be convincing. I think most people are probably like this, and I think that's probably why, after two solid decades of "get more X to Y", we haven't really seen an increase in Xs Ying.

And while there is a lot of blame to be placed at the feet of the in-crowd treating the out-crowd poorly, and thus driving them away, I came to a greater realization that the problem was more that the in-crowd just never socializes with the out-crowd, period. I have very few friends who are teachers, but of the few that I have, I know most of their friends are teachers. I have a lot of programmer friends. It goes all the way back to college. I didn't know any teaching students, even though I went to one of the biggest teaching universities in the country, and we tended to have a very dull view of the few we even came into contact with. They tended to have a very dull view of us. The business students were the same. The art students were the same. Hell, even the physics students were the same. We were all compartmentalized from each other in our respective departments.

Then you go to work and the programmers are in one cube farm over here, and the accountants are in another, and the designers are separate. We've managed to create a culture that sees the segregation of people by skillset as a natural thing, and never question it.

And then you get companies saying "we can't hire qualified female programmers. They just don't apply!". Frankly, I don't think open-application is any sort of reliable way to find a decent employee. The only employees that I've known to stick around for a long time were ones that came with recommendations from current employees. You see it all the time, "the importance of networking". "But we haven't done anything to keep them away!" And that is mostly true (though it is important to recognize that there are several instances where active prejudice is still a problem, I think this is a much bigger problem). But employees are people, and trying to "hire more of <adjective>" is treating them like checkboxes, not people. Well, no wonder you don't see more female programmers, because most existing programmers are already male and they don't socialize with many women, period, say nothing about ones that would be interested in programming.

Anyway, my point is, I don't think these sort of "Xs working to get not-Xs to do more Y" are ever going to work, so long as the Xs mostly socialize with Xs. You want to find more black designers? Make more friends of black people. You want to find more female programmers? Make more friends of women. They are out there. While you personally may have not done anything to drive them away, you're also not doing anything to make them a whole part of your life, either. It will always be the case that men will be over represented in programming so long as men are the gate keepers into programming organizations and men do not do more to socialize with women as peers--with the complete reverse situation being true for women and men in teaching. And while you personally didn't ask to be the de facto gate keeper to your industry, the state of things is that you are. Tough shit. Play the hand you're dealt.

EDIT: long-story short, "Get more X to Y" is still treating the Xs as "others". These types of programs perpetuate that cycle. The answer is to eliminate the otherness of whatever property we're concerned about today.

<comment><AUTHOR> >The problem is, they tend to always be ran by the majority group to try to "give a helping hand" to the minority group. It's kind of a patronizing position. I didn't need a "helping hand" to become a programmer, and women are smart enough that they don't need a "helping hand" either. And they won't want it.

I'm a white guy from Brooklyn who's been successful in tech -- I'm not running this organization, I'm just doing a crowdtilt fundraiser for it.

[http://www.blackgirlscode.com/about- bgc.html](http://www.blackgirlscode.com/about-bgc.html)

<comment><USER30> Yeah, I realize that is the case here. My intention was more to head-off the sort of comments that one tends to find in these sorts of threads that try to deny that any problem exists just because the speaker doesn't have an active hand in the problem.

But, at the same time, there is a significant problem with the way that people have been trying to address the issue of diversity in general, because it doesn't seem like any progress is being made.

There is a lot of prejudice in the world, and it can be overt as in the case of someone specifically ignoring resumes from people not matching their sex or race. And it can be subversive, such as people subconsciously paying more attention to people more like themselves than people less like themselves.

I personally believe it's this latter form that is the reason that lack of diversity continues to be an issue. There is not a single aspect of our American culture in which we do not compartmentalize people. We still have sitcoms built on the tropes of housework-inept dads and shopaholic moms. We still have separate boys' and girls' happy meal toys. And because of that, I don't think it's surprising that tackling diversity in one of the leaf-node areas has largely failed.

</comment></comment></comment><comment><USER31> I have a serious question: What if title would be "White Girls Code"? Is there going be an outrage in the society?

I'm just trying to understand the racial words connotation in USA, just to not make faux pas in the future.</comment>


Apology - <AUTHOR> https://www.gliffy.com/apology/ <comment><USER2> Actually the first time I've seen production data successfully restored from backup without a hitch. In my experience, something along the lines of "what do you mean the last six months of backups are corrupted due to a problem in the backup process nobody noticed?" is usually heard emanating from a conference room.

So this actually weirdly kind of increases my confidence in the company. Once they figure out how to use sudo they'll be good to go.</comment>


Backup your Database in Git - <AUTHOR> http://www.viget.com/extend/backup-your-database-in-git/ <comment><USER2> I find my self saying this a lot lately

 _Just because technology A can do action B, does not mean it's the most appropriate path to take_

<comment><USER3> I know what you mean. Yeah, I _could_ do this, or I could just rely on automated iSCSI snapshots to seamlessly and automatically backup the entire machine whenever I want.

<comment><USER4> Are those reliable for a database, though?

I haven't done enough at such a low level to really understand how that would work. I mean, the database application layer typically promises to be atomic, sure. But at any given point in time are the bits on disk truly atomic? Does a database not sometimes take 2+ writes to fully change data? And does an iSCSI backup really copy the entire disk at a single point in time? I thought that was magic specific to something like ZFS. Because if it doesn't, couldn't you have a database backup that isn't really usable?

I guess what I'm trying to say is that application level DB dumps exist for a reason - and I'm no expert so I'd love someone to explain how full disk backups work re: databases.

<comment><USER3> _DB dumps exist for a reason_

Indeed they do, and that is the "faultless" way of creating a backup. Depending on your RDMS (and luck perhaps), the backups can be fine or they can be unusable. In my experience, MySQL databases backed up this way almost always end up being corrupted. On the other hand, I've had good success with PostgreSQL. Sure, occasionally the internal registry indices will be out of sync and will need to be recreated, but it has never been a big deal.

Even still, I wasn't decrying DB-level backups since, obviously, they're far better (and sometimes necessary). But you can still start a cronjob to write the backup and let the snapshots take care of the rest. My point is, you already get heavy-duty compression and incremental algorithms and restoration, not to mention the ability to restore the complete system state in the event of a catastrophe.

</comment></comment></comment></comment><comment><USER5> Too bad git is not good for large files - <http://kerneltrap.org/mailarchive/git/2006/2/8/200591>

<comment><USER6> Well, the extent to which this matters depends on how often you run it. Even if the hashing for a 10gb database dump takes ten minutes* , it will still get backed up ten minutes after the hour, every hour. There are very likely _better_ solutions, but it would be easy to set up, and better than nothing.

(Besides, any solution that has to deal with a complete db dump is going to have to hash, diff, or otherwise process a large volume of data.)

* As a single data point, sha1 just ran for me at approx. 800mb/min.

<comment><USER7> a better fix is to mysqldump every table individually, and then git commit those as distinct .sql files. This way less-often updated data (reference tables, etc) tend not to need updating, and your hash generation is typically smaller. Plus, you can skip log/session type tables if you are that way inclined to use them. :)

<comment> patrickg-zill That is exactly what 1 client of mine does for Postgres.

</comment></comment></comment></comment><comment><USER8> This git backup approach is crap. Pure crap.

Sorry to lower the tone on HN, and I'll get to the _reasons_ soon, but my brain overloaded at how over-engineered this problem is.

\</comment><comment></comment><comment></comment><comment>

Deterministic SQL Output ::

For the delta set in git not to jump around, the ordering of the statements MUST BE THE SAME every time. git is designed for source code

Trivial Amounts of Space Saving ::

just creating a well known bz2 of the file is going to give you excellent compression, and then you can save it to S3 / DropBox, your home computer

ALTER TABLE ::

ALTER TABLE or any UPDATE * is going to yield a line by line delta... checking in the whole DB/Table again. Given that this is app specific, WHY not just compress the whole dump.

Backup Complexity ::

You've written a cron script, validated that the whole db is being dumped, hdd space is cheap, so why involve another step that can go wrong?

Duplicating a tar.bz2 file is a lot easier to validate than a git commit. Much much much faster too.

<comment><USER9> MySQL usually does not reorder the data on disc, so in the OP's case, this might actually work for him. I do agree though that just moving around bz2 files is much easier. Andit scales better (as in: continues to work) once you begin accumulating REAL data.

A common size for a complete dump of one of the plattforms I'm working with is 400 MB bzip2 compressed. You certainly would not want to have that amount of data uncompressed in a git repository.

should you decide to compress pre giting, you of couse lose all advantages of using fit for this in the first place.

This feels like a non-solution to me

</comment></comment><comment><USER10> Backing up MySQL's binary log is probably a better solution than doing periodic mysqldumps. Also the ordering of the inserts in the dump isn't likely to be deterministic, screwing up some of the benefit of this method.

<comment><USER11> Yep. I've tried tracking mysql dumps, and lots of little things can cause spurious diffs.

</comment></comment><comment><USER12> I wrote a short Ruby script that does a similar operation with Subversion - it's somewhat Rails specific in that it takes the username/password from RoR config files, but that can be easily modified.

The code is (ironically) here: <http://github.com/niryariv/dbbackup/tree/master> and some background here: [http://niryariv.wordpress.com/2009/03/23/backing-up-mysql- da...](http://niryariv.wordpress.com/2009/03/23/backing-up-mysql-database- with-subversion/)

</comment><comment><USER13> Happy to see someone confirm this can be done. It also made me think of <http://www.liquibase.org/></comment>


Coders at Work - Interview Snippets online - <AUTHOR> http://www.codersatwork.com/?a=b

<comment><USER2> ?a=b ?

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

</comment><comment><USER3> It's a must read.</comment>