Apple claims jailbroken phones can crash transmission towers - <AUTHOR> http://www.macworld.com/article/141965/2009/07/jailbreak.html?lsrc=rss_main

<comment><USER2> This is the same old trick that AT&T used back in the 60s and 70s to somehow pass legislation making it illegal to plug anything non-AT&T into your phone jack: the stability of the network. Yet any GSM expert would tell you that what Apple has to say is complete bollocks.

If you've been following Apple's ongoing battle with the EFF, you can see what the real motivation for Apple's propaganda is: Apple has a series of tightly controlled revenue streams flowing through the iPhone, and they don't want that closed ecosystem threatened by the open source community. Movies, music, videos, applications, and other digital content connects the device directly in with their iTunes revenue streams and helps create a complete "suite" of products from Apple that users will be locked into purchasing.

Since the iPhone's release in 2007, developers have threatened that chain ... not with illegal pirating (although that's going to happen regardless), but rather with something Apple fears more than piracy: competition. The developer community has put together a complete community environment for the iPhone including Unix world, software repository, and even their own compiler and tool chain... and they did it long before Apple ever concocted their own. And developers distributing their own software are creating applications that can do more than AppStore apps, lending themselves to many times the number of sales that they'd otherwise get in the AppStore. That is at the heart of what threatens Apple, just as competing telco equipment was at the heart of what threatened AT&T back before they were broken up.

In reality, a jailbroken iPhone is no more unsafe than a laptop running an AT&T air card. In fact, a jailbroken iPhone runs more like a regular computer than one fresh out of the box. This all comes down to revenue for Apple and their bending over for AT&T. Apple will do anything, and say anything apparently, to protect that revenue stream from ever having to face real competition.

</comment><comment><USER3> And if an jailbroken iphone is such a threat to the towers, at what point do we point the finger at apple saying it is there responsibility to ensure their device can't crash the towers.

Anti-competitive practices are not even related to the case/issue of what they allow/disallow in the app store.

</comment><comment><USER4> I feel must add the obligatory thought - "Yeah, because making jailbreaking illegal will definitely discourage those who want to crash transmission towers."</comment>


Suggestions on determining whether a gaming motherboard supports linux - <AUTHOR> There are some incredibly powerful motherboards out there by ASUS, MSI, and others but how do I determine which will work well with Linux? Long story short I need a high quality motherboard that at the end of the day there's no question in whether it will get the job done. So how can I research this compatibility between a motherboard and Linux? From a processor standpoint it's not difficult at all. If I ask the manufacturer directly their response is usually "We have not tested nor support Linux". <comment><USER2> Specify more clearly and let us, the internet, help you.</comment>


Android Design - <AUTHOR> http://developer.android.com/design/index.html

<comment><USER2> This is a long overdue but very well put-together UI and Usability Guide for Android Developers. My only qualm from reading it thus far is the very last section under Navigation [1] regarding System-to-app navigation:

"For the Back key, you should make navigation more predictably [sic] by inserting into the task's back stack the complete upward navigation path to the app's topmost screen."

No. This piece of advice is the sole reason why the back button is confusing to users. Injecting activities artificially onto a user's Back Stack based on some arbitrary and imaginary path that they might have taken to get there is horrible. If I'm in the middle of reading a book and get an email notification, and I touch that notification to quickly read the email, that Back button better damn well take me BACK to what I was doing. Don't take me UP to the list of emails in my inbox. This is where the average user will become lost and not understand why they aren't taken back to reading their book, and will just end up touching Home out of frustration.

Bad Google!

[1] <http://developer.android.com/design/patterns/navigation.html>

<comment><USER3> This was a huge frustration for me on 2.x. I'm glad they're suggesting that people insert fake activities to fix it.

Here's an example -- from the homescreen, click a Music widget. The Music app opens and shows the song I was listening to. I want to go back to the playlist I was playing from so I hit back. Instead, I'm dumped back to my home screen. you have to hit the Google Music icon in the top-left to go back within the Music app. I don't mind having to hit back a couple of times because I've learned that you can just keep hitting back and you'll eventually get where you were.

<comment><USER4> I disagree. I think the confusion is caused by users not intuitively understanding the context of the android "back". In a web browser, if you click a link to a sub-page on a different domain, you don't expect the back button to take you to the home page of that domain, you expect to go to the previous site you were browsing. Do any android devices have something akin to the right click on the back button in web browsers, that shows the back stack?

<comment><USER5> This consistently confuses me too (and I much prefer it when application insert artificial pages).

I've thought about it some, and I think the problem is that the back button lacks the concept of _context_.

In the music app example, when I first use it I get the front screen, then choose a song.

Then I press the home button, put my phone away and at some point the song stops.

Now, some hours later I open up the music player from the home screen and it is still showing the song, what behaviour should the back button have?

I think it should take me back to the song list (because I am now in the "Music" context in my head - and this is what it now does). But one could argue that the back button should take me back to the home screen.

<comment><USER6> The biggest problem for me is the uncertainty and inconsistency. Do you always remember the previous screen you were on in any app hours ago? What if you got to the song from some other screen? I would constantly have to "guess", what is this app going to do, take me back to where I previously was or to a higher level in the app. It needs to be consistant, back is back and navigating within the app needs to be obvious and on the UI itself.

<comment><USER5> The back button in browsers is often used as analogy, but how many tabs/windows do you have open in your browser? What if pressing the back button in the browser switched you to a word processor because that is what you were looking at before.

<comment><USER7> That's what alt+tab and ctrl+tab are for. The confusion comes from the use of only one back button instead of one per hierarchy.

On android we have only one system-wide consistent timeline to work with, and that's the timeline of fired intents. It works across the whole system. Back works on that level by default and is defined by default as "go back in time".

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> As an Android developer for many years I was excited when I read the blog post about the site. When I went to the site, I was very disappointed. I've spent the better part of 10 minutes on the site so far and haven't seen anything other than marketing text and screenshots of what my phone looks like.

How do I make these "beautiful designs" work across all Android phones? How do I use an Actionbar on a non 3.0+ device without external libraries? How can I supply a consistent look and behavior for my application when some android OEM keyboards don't even offer the same modules as other ones?

How am I supposed to follow these guidelines when every Google application has a different implementation of the Actionbar itself?

<comment><USER2> The link at the bottom to the core developer site shows you how to implement most, if not all, of what they discuss here. Though it would be nice if they had links interspersed throughout the design text to their tutorials and API guides about the UI features.

<http://developer.android.com/index.html>

<comment><USER8> That's definitely true, I don't know why they didn't put a "click here for more technical info!" next to each point.

The things that really bother me are:

1\. If I implement one of the new themes they're discussing on the linked page, it only works in 3.9% of Android phones on the market, so if I want my apps to look like Google's on older phones I'm left to implement my own version of the themes. This is the same thing that happened when they announced "Homepages with square buttons for activities are the new way you should do everything!" and didn't release source code for how to do it for years afterwards with the Google I/O app, so every app that tried it did it a different way.

2\. How am I supposed to use the action bar if Google's own applications can't decide on how to use it? Look at the "What's up with the bar" section of this blogpost: [http://minming.posterous.com/google-currents-yet-another- con...](http://minming.posterous.com/google-currents-yet-another-contribution- to-t)

<comment><USER9> As for 1st point, check out section "Pure Android". It says you shouldn't copy UI style from other platforms. I think this could be extended to major versions of single platform too. App with Holo theme on Froyo phone would look very out of the place, I think.

</comment></comment></comment></comment><comment><USER10> Ha! I love that they are using Hipster Ipsum:

[http://developer.android.com/design/static/content/ui_overvi...](http://developer.android.com/design/static/content/ui_overview_app_ui.png)

<http://hipsteripsum.me/>

</comment><comment><USER11> The website felt odd to me. It's clearly aimed at developers, given the subject material, but it felt like it was written as an ad for prospective buyers.

It listed a bunch of features and user interface methods that apps _should have_ , but I couldn't find any resource for actually implementing what they suggested, apart from the link to the android developer page at the end.

<comment><USER12> I completely agree. The wording is so basic and kind of insulting as seen here for instance, "Text fields allow the user to type text into your app. They can be either single line or multi-line." Very elementary for either a developer or a designer to read.

<comment><USER13> If the goal is to bring devs in from other platforms, who might have all kinds of crazy notions about what Android dev entails, erring on the side of over- simplification will give more people the sense that "hey yeah, not so hard."

</comment></comment></comment><comment><USER14> Regarding the Design Principles page: [http://developer.android.com/design/get- started/principles.h...](http://developer.android.com/design/get- started/principles.html)

I love that they included the ICS home screen's "glass desktop" effect in the "Delight me in surprising ways" section ([http://developer.android.com/design/static/content/principle...](http://developer.android.com/design/static/content/principles_delight.png)). It's a completely unimportant feature, but the first time I swiped past the edge of my rightmost homescreen and saw the effect, I appreciated the attention to detail.

Where I disagree is with their "Pictures are faster than words" suggestion. I completely agree that many things are best said with images, but I've had a hard time identifying the function of several features in the icon-driven UI's featured in both ICS and in new Google web redesign. In ICS's Gmail app, I'd understand the words "Mark Unread" much quicker than the "sealed envelope" icon which I had to experimentally discover.

It's also interesting to note that in ICS Gmail, Mark Unread is an icon and Report Spam is text, where in web Gmail, Mark Unread is text and Report Spam is a stop sign.

<comment><USER15> Google is heavy on logic but weak on intuition. Why their designs seem to look good but are hard to follow.

</comment></comment><comment><USER16> I kind of agree with the sentiment that a few others are having. I've spent the past 4 months working on an Android project and when I opened this page I was in shock.

Everything looks so awesome and shiny - but where is the actual implementation? Is this stuff just a ICS theme (I haven't used it myself as our app is in 2.2 land)?

Others pointed out to check the "Developer" link - but that is just the standard Android docs I've been digging through for months already. Searching for things like "Index Scrolling" (which would be awesome to add to an app) or "Switches" doesn't return anything useful - so what are the Building Blocks and how do I get them into my app?

This page should either a) include demos (or links to the demos if they exist already) or b) be embedded in the code docs (android.widget.GridView should show the screenshot and UI guidelines).

<comment><USER17> I think by Index Scrolling it means to use the SectionIndexer interface: [http://developer.android.com/reference/android/widget/Sectio...](http://developer.android.com/reference/android/widget/SectionIndexer.html)

It would be amazingly helpful if they would link from the 'Android Design' page to the docs exactly what they are talking about.

</comment></comment><comment><USER18> Do they have a schedule for when Google's apps will follow these guidelines?

<comment><USER19> This really appears to be for Android 4.0+. Google's core apps follow these guidelines but Android 2.3 down seems to be left behind.

I'm not sure as an Android developer I'm ready to leave those users behind just yet which means a lot of extra work maintaining 2 different sets of UI code. The action bar is the killer.

</comment></comment><comment><USER20> I think this is the most consistent UI for Android so far. It still feels a bit more like a "style guide" rather than "human interface guidelines", but it's a great step forward.

Kudos

</comment><comment><USER21> Am I missing something? I'd like to get my hands on the templates, mocks, wirefames, etc. Let me play with those (as a designer) and I'll be able to better follow the specs and guidelines.

Note: Microsoft (for once) actually one-up Big G. here. They provide the PSD and fonts for Windows Phone 7 on MSDN + the UX Guidelines.

Also, for Apple, 3rd party made all the PSD and templates for them...

<comment><USER22> There's some third party work done for Android as well: <http://designmodo.com/android-kits-developers/>

<comment><USER21> Thanks. Nice. But since Big. G. is heavily pushing ICS, they should really put the ICS files up there.

</comment></comment></comment><comment><USER23> Simply put, and coming from an Apple fan-boy, this is REALLY nicely done. I honestly think this will significantly improve the usability of the platform as a whole by attracting the right designer/developer talent.

</comment><comment><USER24> I know it is silly and offtopic but that gorgeous website's navigation does not work without Javascript for no good reason.

</comment><comment><USER25> I like the density-independent pixel concept...

</comment><comment><USER26> Interesting how they make sure to say that you shouldn't use bottom tabs like in iOS. For my project I decided to do exactly that instead of using an Android standard action bar, because:

1:The bottom bar fits 5 items. An action bar needs to have the app name as well, which means it can't have 5 items anymore. Having a "More" option is just dumb.

2:The iOS bottom bar has text underneath its icons and the action bar doesn't. I'm afraid the icons I have aren't obvious enough without text.

3:This is a conversion from iOS so the images are already made

4:Getting an Android action bar to work on older versions is very difficult. The Android compatibility library doesn't help here, and the third party libraries I looked at were not mature enough. I'm doing this work as part of a fixed price contract so I can't waste days getting it to work reliably.

Bottom line: Android apps would look a lot better if doing things the right way was also the easiest way.

<comment><USER27> you can break out tabs into a separate action bar or use scrollable tabs. You're using elements from another platform your users don't use. You're just going to confuse or annoy them.

<comment><USER26> For sure, but like I said, I don't have days to spend making half-baked action bar code work.

</comment></comment></comment><comment><USER28> I like this bit on using multipane layouts to be flexible on both tablets and mobile:

[http://developer.android.com/design/patterns/multi-pane- layo...](http://developer.android.com/design/patterns/multi-pane-layouts.html)

Good advice for rich web apps too.

</comment><comment><USER29> I wish they'd make this searchable. This is from Google after all.

Does a button marked "on" indicate it is already on, or that pushing the button will make it "on"? I'd like to see that standardised.

</comment><comment><USER30> I like the date picker

[http://developer.android.com/design/building- blocks/pickers....](http://developer.android.com/design/building- blocks/pickers.html)

<comment><USER31> Looks a lot less intuitive than the UIDatePicker in iOS, which is styled like a slot machine [1].

Does anyone know whether you can manipulate the controls by dragging, or do you really have to use those little up and down buttons?

[1] [http://blog.blackwhale.at/wp- content/uploads/2011/05/UIDateP...](http://blog.blackwhale.at/wp- content/uploads/2011/05/UIDatePicker-Template.png)

<comment><USER8> You can drag them.

See my other comment here: <http://news.ycombinator.com/item?id=3458159>

</comment></comment></comment><comment><USER32> This is great! If apps start following this it should significantly improve the Android user experience, as well as making it much easier to design good Android apps.

</comment><comment><USER33> I tried browsing this on my old Android phone... I couldn't get past the first page. I hope "people should be able to read your content" is one of the guidelines...

</comment><comment><USER34> I find the "app structure" schematic ([http://developer.android.com/design/patterns/app- structure.h...](http://developer.android.com/design/patterns/app- structure.html)) a very useful visualization to see the screens of an app in one glance.

Any ideas how they made this schematic?

</comment><comment><USER35> For Android/Google on web, it's possibly the most apple.com-like designed page I've seen yet.

</comment><comment><USER36> Why did choose to put 2 phones on the homepage? Because one phone has 3, the other 4 buttons? Isn't that still a bit redundant. (If it where not for a design-centric page it wouldn't have troubled me)

<comment><USER37> because part of that site talks about compatibility with different devices.

the phone on the left is a nexus s, which has the (now) older style of dedicated hardware buttons. the nexus prime on the right is apparently what newer devices are supposed to have, which are software buttons that are actually just part of the main lcd and the operating system reserves a section of the screen to draw them in software.

the big benefits of the newer style are that they can be hidden while playing movies or in other situations where they are not needed, they can be rotated when the device is rotated, and, maybe most importantly, the operating system now gets to control which buttons are there and in what order they're in. an annoying thing about the hundreds of different android phones prior to this was that every manufacturer seemed to put the 3 or 4 hardware buttons in a random order that made them inconsistent.

</comment></comment><comment><USER38> Utterly worthless. This looks like a web designer on crack had too much time to promote the beauty of the new Android.

However, from a developer's point of view this is almost unusable. By not providing the according XML/Java code, we are forced to reimplement everything from scratch, making smaller and larger errors, introducing inconsistency and making the look and feel not quite the same between apps.

Then again, it fits well with the current way Google is doing UX design ([http://minming.posterous.com/google-currents-yet-another- con...](http://minming.posterous.com/google-currents-yet-another-contribution- to-t)).

<comment><USER39> All of the UI elements are available in source provided by Google. Koush (on Twitter) tweeted with Tim Bray about them being split out into a more-easily- consumed library.

<comment><USER38> Yes, they are hiding somewhere in the multi-gigabyte Android source code. At least the basic default elements. And their style formatting.

And then there are the closed-source Google apps which at least slightly resemble the UX guidelines given on that site.

And then there are the more complicated UI elements which provoked the creation of fork projects to allow for the reusability and compatibility not provided by the Google devs, like <http://actionbarsherlock.com/> and <http://viewpagerindicator.com/>

</comment></comment></comment><comment><USER13> I'm going to assume the internet has already somehow collectively dealt with the fact that the Android name for a drop-down list control is a "Spinner."

<comment><USER27> it doesn't always drop down. Sometimes it "drops" up, like if the element is at the bottom of the phone. You can "spin" through options. Makes sense.

</comment></comment><comment><USER40> Finally!. Isn't too late? Are OEM and carriers going to follow the same principles? Or they can build whatever skin/mess they want as they did so far?

</comment><comment><USER40> Google, good work on the Android design guidelines, but is that enough to tame the wild west in the marketplace and the current "anarchy"?

</comment><comment><USER41> Does anyone know how to see Roboto font as anti-aliased in Windows7? In my windows 7, Roboto font looks really jagged and weird.

<comment><USER42> Likewise on my XP Laptop in Chrome...and I have Roboto TrueType font installed. Then un-installed the font, and it looks far better!!

</comment></comment><comment><USER43> All we need now is an accessibility document for Android.

Accessibility is notably absent from the design doc.

</comment><comment><USER44> "Android Design"

        .../index.html

It's the little things that matter. This is shameful for a company so big.

<comment><USER45> I'm confused, why does this matter?

<comment><USER44> From a technical perspective, littering your URLs with implementation debris is not a good idea. What if you want to revamp the site, put it in a shiny CMS, and now it's in PHP or JSP or does it even matter? You have all these references to `index.html` you have to maintain or you'll be wrecking your linkage.

Bury those. If you're doing a plain HTML site, use MultiViews to hide the extensions. They're not important to the content.

When I see `index.html` in a URL, it's never a good sign. It's done by a sloppy "web designer" that knows how to use DreamWeaver and FTP things to the server. They make a tremendous mess for the next team that has to come along and somehow upgrade the site without breaking everything.

It's not 1998 any more. You can afford to script your pages, have clean URLs, and still get great performance.

</comment></comment></comment><comment><USER46> This site is really useless. As an android developer I was hoping for more steps rather then another marketing docs. Its funny how little android provides out of the box and I have to just keep searching source to find how things are implemented and best way to implementing such designs. Sad state of affairs as I have to waste most of my time trying to understand these designs and corresponding code designs in source.

Another thing I hated about the website is how sparse it is in technical details. If Google really hopes us to make use to these pattern why not release some of these as widgets or templates.

</comment><comment><USER47> Isn't ICS like just around 0.5%(or was it 5%) of Android handsets as of December 2011? This design guide is ALL about ICS and nothing about the 99% of the Android handsets used by people.

<comment><USER27> in 2 years everyone will have ics or better. carrier contracts.

<comment><USER48> That's kinda sad, compared to Apple, Microsoft, and RIM. ICS fixes bugs too. People shouldn't have to deal with them until they buy a new phone.

</comment></comment></comment><comment><USER49> I know some will criticize this is ticky-tacky, but it's one small thing that, when added with a lot of other little details, make Android feel like it's still designed by engineers.

They've "touched nearly every pixel" and "App icons are works of art in their own right" but the contact name on their contacts icon is "Lorem Ipsum". Not exactly a warm, human feel.

[http://developer.android.com/design/static/content/design_el...](http://developer.android.com/design/static/content/design_elements_landing.png)

<comment><USER50> "Lorem Ipsum" is more of a designer thing.</comment></comment>


Creating Man Pages in Markdown with Ronn - <AUTHOR> https://spin.atomicobject.com/2015/05/06/man-pages-in-markdown-ronn/ <comment><USER2> As someone who's written a few well known man pages: that's awesome. The 'troff' format is pretty long in the tooth now.

Most Linux man pages are pretty poor quality: for a long time the the upstream Linux maintainer refused to accept any changes eg, adding an EXAMPLES section for cron tables - because Paul Vixie (the cron author) 'might not like them'. Forking man-pages , using markdown as a source format and allowing pull requests would help a lot.</comment>


Cost Obsessions Around the World - <AUTHOR> http://www.fixr.com/blog/2015/04/17/world-of-obsessions/ <comment><USER2> This is so flawed. It just shows how english speakers use Google search. Do they really believe the top question in Marocco is how much it costs to ride a camel? Or in Ecuador how much a Panama hat costs? That's only interesting to (english speaking) tourists.

"Cost Obsession of english speakers researching the world from home."

<comment><USER2> Top autosuggestion for/from Germany is how much postage for a letter costs. Followed by a child, then electricity, followed by a divorce.</comment></comment>


"In This Thread: We Pretend We're on HN" - <AUTHOR> http://boards.4channel.org/g/thread/73042184 <comment><USER2> The first thread was better. [http://rbt.asia/g/thread/S38087806](http://rbt.asia/g/thread/S38087806)

</comment><comment><USER3> Include me in the screencap

</comment><comment><USER4> >I suffer from deep depression because I wageslave for a surveillance capitalist and I'm also terrible at writing JavaScript. Should I start microdosing lsd or just kill myself?

Ouch.</comment>


NSA plant in San Antonio shrouded in secrecy - Houston Chronicle - <AUTHOR> http://www.chron.com/news/houston-texas/houston/article/NSA-plant-in-San-Antonio-shrouded-in-secrecy-4604109.php <comment><AUTHOR> Bonus content from the article: "In 2010, residents who lived near the facility complained that their garage doors were randomly opening. The NSA issued a statement acknowledging that an antenna it was using interfered with garage door openers."</comment>


Best Jobs For Introverts - <AUTHOR> http://www.forbes.com/sites/susanadams/2014/03/04/the-10-best-jobs-for-introverts/ <comment><USER2> I wish they had put the median salary for a social media manager in the article.</comment>


Is Tech a Meritocracy? - <AUTHOR> http://istechameritocracy.com/ <comment><USER2> This topic gets brought up and beaten to the ground on a regular basis, while the answer seems quite apparent: "No, but then again nothing is." It always struck me as rather odd that tech was seen as some exception where all of the typical powers of politicking, luck, opportunity, and networking/positioning savvy went out the window for some exalted ideal that people would only judge and succeed based on merit.

There may be some draw, I'll grant, in the ability of the individual to have truly massive impact via tech as a force multiplier, but beyond that I've never been convinced as to why tech as an "industry" wouldn't pick up the modus operandi of more matured industries, anti-meritocratic practices and all, once that force multiplier is effectively harnessed, understood, and boxed into just another means for a worker to deliver productive output. All of the same management and incentive structures are relatively comparable across industries.

As is my tendency, this was a bit of a rant, so in summary: There is certainly some merit based reward in tech, perhaps to a greater degree than in other industries due to the aformentioned single-dev-power. But as in all things this is heavily influenced by the opportunities one is presented and the tools one is able/willing to use. (trying to encapsulate everything from "working overtime" to "playing political games" in this)

The greater question to me seems to be, "how do you unseat those with vested interest and power in maintaining the status quo, if you're playing by a set of rules that they aren't (and are starting at a disadvantage)" (if I may handwave at the recent bigCo wage/hiring collusion), or perhaps more deeply, "is it possible to have a complex societal/corporate structure without there being loopholes/social constructs that can be exploited to detract from there ever being a pure meritocracy, and do we even WANT the constrained system that would allow for this?"

<comment><USER3> Tech is a meritocracy, it's just based on many more factors than technical skill. Idiot savants aren't particularly successful, but the sky is the limit for developers that are technically proficient and also able to navigate the murky waters of managerial politics.

There aren't a whole lot of fields that allow someone with only a high school diploma to make upwards of $150K. And I'd argue that those that do are usually meritocracies too.

<comment><USER2> At the risk of being pedantic/taking the pessimistic take, "tech is a meritocracy but..." seems entirely in line with my conclusion of "nothing is a meritocracy, although tech enables those with merit more than most"

Someone with a highschool diploma CAN certainly succeed (two of my strongest mentors, one of which a googler, did not have college degrees) but they had _significant_ hurdles to get where they did; and even in my own experience I've run into (nearly verbatim): "Since you have never held a senior rank, we are not willing to look at you further" (turning down any opportunity to "prove onesself" as well).

As I've said in posts elsewhere, tech is as susceptible to needing other signaling channels as any other field, even if we weight the signaling of "personal achievements" higher.

If we're coming at this from different angles around the basis of whether these side effects preclude the existence of a meritocracy, I can accept that disagreement; since I do tend to take a more pessimistic take on things and could see how the opposite could be argued. (and as I said in the OP, I'm not convinced a "pure meritocracy" could even happen, so perhaps that's a vacuous comparison anyway)

<comment><USER3> We're definitely being pedantic, but what I'm saying is it's a meritocracy because your skills are far more important than your pedigree or seniority.

</comment></comment></comment></comment><comment><USER4> A little bit more than most things but certainly not like what the idealists would prefer. Somehow they do not believe that high end college careers, name- brand companies or knowing lots of good people have merit.

</comment><comment><USER5> Is anything a true meritocracy?

<comment><USER6> Chess.

<comment><USER4> The narrower the rules, the more merit counts. Unfortunately (actually, fortunately), in business and in the world, there are few if any rules.

</comment></comment></comment><comment><USER7> Yes, as much as any industry in the history of mankind, save perhaps prostitution.</comment>


Trump.css (Lets Make Padding and Margin Great Again) - <AUTHOR> https://github.com/rakibtg/trump.css <comment><USER2> I always shy away from projects that mix politics with code, even if it is just a playful satire. Especially when such a revolting figure is chosen.

<comment><USER3> CSS has some poor ideas but calling it revolting is harsh and rude. A builder of huge beautiful buildings like Trump could be better represented by framework for SVG anyway.</comment></comment>


NYT obit of Joybubbles: He hacked the phone system by whistling - <AUTHOR> http://www.nytimes.com/2007/08/20/us/20engressia.html?ex=1345262400&en=9b35c8bc1486822e&ei=5090&partner=rssuserland&emc=rss

<comment><AUTHOR> I'm of the school of thought that whistling into a phone should never be a crime. I wonder if Woz and Jobs would have made it if they had been prosecuted for their crimes.</comment>


Infographic: How to Succeed in Mobile Advertising in 2013 - <AUTHOR> http://blog.sohalo.com/blog/index.php/infographic-mobile-ads-2013/

<comment><AUTHOR> Mobile ads are very frustrating and the best ways brands and start-ups can improve their brand image using mobile in 2013 is through apps or "app-like" experiences. We created an infographic to illustrate this trend. What do you think? What is your marketing strategy for mobile?</comment>


Ask HN: crypto communities. - <AUTHOR>

What are some of the generic crypto communities out there? I don't mean communities that center around a specific technology (like bitcoin), but more broad communities. <comment><USER2> The crypto.stackexchange.com forum has some traffic and isn't focused on any specific technology.</comment>


Ask HN: What do you use to host your blog? - <AUTHOR>

Hey folks,
I am looking for a good place to start my blog. What do you guys recommend?
I googled around and there are just too many options, is it better to use something like Squarespace/Wordpress or create a custom blog using Jekyll and host it on Linode?
Can someone point me in the right direction?
Thanks <comment><USER2> It depends how much work you want to do in installing and maintaining, and how fancy you want the formatting.

It depends on how much control you want over the appearance, and how much time you're willing to spend on that.

It depends on whether you will want "rich content", or just text with some font changes and formatting.

It depends.

This would be a great topic for your first blog post. Do some in-depth research, make a decision, then explain the options and your reasons for making the choice you did. Many people could benefit from that.

</comment><comment><USER3> We use jekyll for our blog( <https://mentii.com/blog> ) and use disqus for the commenting system. If you are comfortable using markdown and need something lightweight and fast, then jekyll is perfect. On the other hand wordpress has a lot of themes and plugins to choose from and pretty much everything that you'll ever need is already there. If there are non developers who are going to contribute to your blog, then wordpress would be a better option IMHO.

</comment><comment><USER4> I use Jekyll on AWS S3. It's dirt cheap (you only pay for what you're using) and combined with a CDN (Cloudflare or Cloudfront) very scalable. It's a bit more work than a standard Wordpress, but well worth it IMHO.

</comment><comment><USER5> I use jekyll for my personal blog (with minimal style), wordpress for an older blog (some fancy look/features). Both are hosted on VPS.

</comment><comment><USER6> I use Octopress (built on top of Jekyll) and host it on Github. Updating my website is quite easy.

</comment><comment><USER7> WordPress for the win :)

I self host my WP blog and use a Bootstrap theme that integrates very nicely with the other part of my site that is pure Bootstrap.

</comment><comment><USER8> I use WordPress on Windows Azure with the database hosted on Google Cloud SQL (previously also Windows Azure).

</comment><comment><USER9> I have tried half a dozen of them, and found HostGator to be the most reliable.

<comment><USER10> I can confirm that Hostgator is extermely reliable. if you dont want to spend a dime i have a huge reseler space just sitting there. Let me know if you want and i can provide you with a free space for your blogging. My email should be visible

<comment><USER11> >My email should be visible

Sorry but can't seem to find that in your profile page

</comment></comment></comment><comment><USER12> WordPress, no other ecosystem with such support, themes and plugins.</comment>


Data Harvester Firefox Extension - <AUTHOR> http://www.orangeinks.com/tips-n-tricks/outwit-hub-image-harvester/

<comment><USER2> actually, it is a media harvester - i was hoping to see actual page/element capturing.</comment>


The ArcticStartup guide to Estonian startup scene - <AUTHOR> http://arcticstartup.com/2014/11/20/the-arcticstartup-guide-to-estonia

<comment><USER2> Estonia is cool. You can get electronic citizenship there. I believe they are the first country in the world who did that.

<comment><USER3> "electronic citizenship" is framed a bit for PR purposes, which is not wrong, just misleading.

The offering is easier to understand if taken purely as a "digital identity that is verified by Estonian government".

There are plenty of countries who provide digital id cards with signing and encryption capabilities. But AFAIK all the rest (Belgium, Portugal,Finland etc) have restriction on being a citizen of the given country or at least being a resident.

Estonian e-residency card does not have a photo so you can't use the physical card itself for identification, just the certs&keys inside it.

</comment></comment><comment><USER4> I just had a conversation concerning building a tech community in the Yukon. The main question that came up was whether you need developers first or the infrastructure (i.e. incubators, capital.. etc) . I am in the boat that you need a few developers first to drive the community and the rest would follow.

Thoughts HN?

</comment><comment><USER5> Any recommended links for info about moving to / living in the cities and countries mentioned on the site?

</comment><comment><AUTHOR> Want to know which startups hail from Estonia? Check out the #EstonianMafia hall of fame at Garage48: [http://hub.garage48.org/estonian- startups](http://hub.garage48.org/estonian-startups)

<comment><USER6> @jkaljundi, Do you work out of Garage48? My co-founder and I just landed in Tallinn, literally 30 minutes ago. We flew from Canada to Helsinki and caught the ferry across to Estonia.

We came here for a brief change of scenery and because we've heard so many great things about doing business here. Many of our suppliers are in the area too. We'll drop by Garage48 tomorrow and see if there are any short-term spots.

Interested in a coffee sometime this week? We plan to be here for 1-2 weeks. My email is in profile.

</comment></comment><comment><AUTHOR> Estonian startups on Angellist: [https://angel.co/estonia](https://angel.co/estonia)

</comment><comment><USER7> Hmm, the guides to Riga(Latvia) and Lithuania do not resolve, oh and Estonian one fails on reload as well.

<comment><AUTHOR> EDIT: And it's up again.

Arcticstartup unfortunately has been down for some time. They are on it, trying to get it up. Hope it was not the Estonia post that took it down ;)</comment></comment>


Ask HN: How the hell Zuck holds 28.4% after all those rounds from VCs? - <AUTHOR>

In every round of financing it's not only about money raised and valuation as many may think; but the story is way more complicated. Especially because of all the pro-rata rights accumulated by investors over time, the option pool for employees, etc.
This would have diluted Zuck and the other founders in a more substantial way.
Look at Google: 1 seed round + 1 series A and Larry and Sergey have only 10% each. Or Groupon, Zynga, etc - the common is between 7 and 15% of the company for a founder that approach an IPO. <comment><USER2> It cannot be taken for granted that Mark was fairly shrewd at business in his own right. I see shades of Gate's more than I see shades of Larry or Sergey. I was clear for day one that Mark knew he was onto something and that he would be willing to walk away from the table. When you have the capability to do that you set the terms. After possible the first round he no longer was in absolute need of capital. He had the users and could have chosen the slow growth option. After MySpace did themselves in, he was holding all the cards because the competition was then well in the rear-view after that event.

</comment><comment><USER3> Simple raising money on increased value of the company. If the company is dramatically increasing its value every round little dilution occurs.

</comment><comment><USER4> By Sean Parker's advice.</comment>


How Ants Walk - <AUTHOR> http://i.imgur.com/wQnLshV.gif

<comment><USER2> Wow. This is awesome. Ants adjust their movement based on their speed. So when they're going slow, only one leg is touching the ground, intermediate speed two legs are moving simultaneously and when running three legs are touching the ground.

I never realised ants were such fascinating creatures in regards to how they move. Nature is beautiful in how even the simplest of creatures like ants can be so remarkably complicated.</comment>


Fun With HTTP Headers - <AUTHOR> http://www.nextthing.org/archives/2005/08/07/fun-with-http-headers

<comment><USER2> The ultimate header is produced by a newspaper. Try running this line and see. It is a random line, so you might want to try it a few times :-)

       curl -i -s --head http://www.vg.no/ | grep N

<comment><USER3> Use <http://web-sniffer.net/> if you are too lazy too install curl: [http://web-sniffer.net/?url=vg.no&submit=Submit&http...](http://web- sniffer.net/?url=vg.no&submit=Submit&http=1.1&type=GET&uak=0)

</comment></comment><comment><USER4> the "Cneonction: close" thing is a quirk of Netscaler loadbalancers. It's done to nullify any "Connection: close" headers the webserver spits out, as the Netscaler wants to manage it better. It's scrambled instead of removed so that it doesn't have to regenerate packets (length is the same) and it's scrambled semi-randomly so that people don't just assume it's a misspelling and add compatibility for it.

<comment><USER5> Interesting, I wonder why they didn't go with something more self explanatory:

      Connection: -> X-Ignore-X:

<comment><USER6> X-Ignore-X is longer than close, which I suppose would mess up the packet length. Or maybe having an unrecognized value for the Connection key would still default to a close? Just guessing here.

<comment><USER7> TCP checksums are fairly simple; a TCP stack basically just sums up the 16-bit words in a packet and stores the result in the checksum field; this will not detect 16-bit words being swapped around.

My guess is that the load balancer tried to invalidate the header while preserving the TCP checksum.

<comment><USER5> Ah yes, forgot about the checksum field :) thx

</comment></comment></comment></comment></comment><comment><USER8> _X-No: I will not give you a job for poking at my headers. But nice try._

</comment><comment><USER9> The simplest explanation for "OCR is watching you" is an old web attack called "HTTP Response Splitting"; it happens when a server generates headers (like a Referer) based on user input, but doesn't escape out newlines.

</comment><comment><USER10> certainly easier to run this in terminal. the firefox way (a bit more tedious, but nice if you're already on the website):

open firebug, enable net monitoring, look at the very first GET request, check out the headers, scan for sense of humor.

\---

stick this in your controller:

headers["We-Are-Uh-Meh-Zing"] = "true on sunny days"

</comment><comment><USER11> I have a web scraping script written in Python that I want to make multi- threaded. It scrapes web pages from a list, and enters results into a DB. Can someone (the author maybe) show me a simple example of how to make a multi- threaded Python script?

<comment><USER12> Check out the docs on the "multiprocessing" or "threading" module. In particular multiprocessing.Pool is handy for controlling the number of parallel things you have going on at once.

      # Assume we have functions GetUrls() that retrieves a list
      # of the urls we want to get, and Download(url) which
      # downloads the content of a url and sticks it in the
      # database.

      import multiprocessing
      pool = multiprocessing.Pool(processes=100)
      urls = GetUrls()
      pool.map(Download, urls)

See:

<http://docs.python.org/library/multiprocessing.html>

<http://docs.python.org/library/threading.html>

Also, if you're entering results into a database, the easiest way may be just to spawn multiple python processes from the command line.

</comment></comment><comment><USER13> If you're using curl to poke around headers, as the author suggests, use the -I flag instead of the -i flag. -I gives you the headers only.

<comment><USER14> That works, however some sites return different headers depending on whether they get a HEAD or GET request. -I sends a HEAD request, while -i sends a GET request.

</comment></comment><comment><USER15> _Speaking of P2P technologies, I was interested to run across a KaZaA server:

HTTP/1.0 404 Not Found X-Kazaa-Username: anonymous_user X-Kazaa-Network: KaZaA X-Kazaa-IP: xx.xx.xx.xx:1348 X-Kazaa-SupernodeIP: xx.xx.xx.x:3699

It looked like it was running on someone's DVR. Anyone have any pointers as to what software does that?_

Uh, Kazaa does that. Not a DVR.

<comment><USER14> IIRC, it was full of recently-recorded TV shows. I hypothesized someone was running some DVR software that also shared the shows on the Kazaa network.

<comment><USER16> I see you watch your referrer log. Created an account here just to reply? Welcome to the site.</comment></comment></comment>


Deep Restricted Boltzmann Machine – Java - <AUTHOR> http://kennycason.com/posts/2014-06-02-rbm.html

<comment><AUTHOR> I would also like to mention that I would like to find people interested in collaborating to extend this code further :)</comment>


The Most Expensive One-byte Mistake - <AUTHOR> http://queue.acm.org/detail.cfm?id=2010365 <comment><USER2> In the article he says it is just one byte extra, but that's clearly not the case, since we probably want strings longer than 255 characters. To be practical, even in the sort term, you'd probably need at least two bytes, and that's still a bit limiting. NUL-terminated strings keep you from having to worry about the size of the length specifier and what byte ordering when storing it.

He notes that other languages of the day didn't go with NUL-terminated strings. It could also be interpreted, considering that C is more widely used still than other languages from the time, that by doing something different, C made the right choice.

<comment><USER3> What you would likely do is use an extension bit so there would be no fixed maximum length for the strings. This would of course add a bunch of overhead that you may or may not make up with the other advantages of knowing the length of strings.

<comment><USER4> * If you're appending data to a string, and the variable-length increases by a byte, will you have to memmove() the entire existing string down 1 byte?

* Is every programmer responsible for detecting this condition?

* (This will make manual string manipulation very complicated and dangerous.)

* Suppose you're concatenating two strings, such that the sum of the lengths requires an additional byte. This could cause a buffer overflow. How would a strcat() function avoid causing a buffer overflow here?

* Does every string need a maximum-length counter too?

* Can you access a random element in the string without having to dereference and decode the length?

On the other hand, if you use a constant-sized length,

* What happens when you overflow the maximum length?

* Can you erroneously create a shorter string by appending text?

* How should string libraries handle this condition? By abort()ing? By returning a special error code? Does every string manipulation need to be wrapped in an if() to detect the special error? How should the programmer handle this condition?

In either case,

* Can you tokenize a string in-place?

* Can an attacker read a program's entire address space by finding an address that begins 0xffffffff and treating it as a string?

<comment><USER3> I think most of these are answered with the suggestion that no one would have made strings this way without making a matching library that handled the concerns you have here. Honestly char[] strings are much less useful in a UTF-8 world anyway.

</comment></comment></comment></comment><comment><USER5> There's another reason for using NUL-terminated strings: It means that a suffix of a string is also a string. Want to convert "hello world" into "hello" and "world"? Just replace the ' ' with a '\0'. With length-prefix strings, you would need to copy the "world" into a new memory allocation -- which is far too wasteful for 1970s programming.

<comment><USER6> Of course, assuming that unwanted space is there. With addr and len, you could split "helloworld" into "hello" and "world" by simply pointing to the two separate parts, each with len == 5. (This is actually really nice when parsing large strings into smaller strings because you can simply point all the smaller strings into a single, large string).

<comment><USER7> This is actually what Java does when you call substr, effectively (String objects contain a reference to a char array, a length, and an offset).

<comment><USER8> That's also because (to my knowledge) that strings in Java are immutable. Same as in Ruby and a bunch of other languages.

So the optimisation that can be done is to put all of the string data into one big (immutable) array and have each string object just reference into it for its data.

</comment></comment></comment></comment><comment><USER9> >Another candidate could be IBM's choice of Bill Gates over Gary Kildall to supply the operating system for its personal computer. The damage from this decision is still accumulating at breakneck speed, with StuxNet and the OOXML perversion of the ISO standardization process being exemplary bookends for how far and wide the damage spreads.

First off, IBM _did_ put CPM/86 on the PC and sell it. Many people bought it. We had it at work. The reason CPM/86 failed relative to PC-DOS was simple - CPM/86 cost nearly $300 and PC-DOS cost $40.

There wasn't anything discernably better about CPM/86 at the time, either its programming API or its user interface, and people did the sensible thing and bought the less expensive operating system. It was a no-brainer.

As to the idea that CPM/86 was somehow a secure operating system, I haven't heard that before. It's patently false.

What killed CPM/86, plain and simple, is it was way, way overpriced. I have no idea who made that decision.

<comment><USER10> pageman has a [dead] reply below linking to [http://www.businessweek.com/magazine/content/04_43/b3905109_...](http://www.businessweek.com/magazine/content/04_43/b3905109_mz063.htm) — claiming that the price disparity was IBM's doing, intended to drive the cross-platform CP/M out of the market while still 'supporting' it.

It looks like pageman got hellbanned 2 years ago for participating in one of the erlang frenzies. I went to email him about it, but it looks like I'd already done so 1.5 years ago!

</comment></comment><comment><USER11> People should not forget that UNIX was an informal experiment, not a plan for what should dominate the computing world 40 years later. When writing informally-experimental software, you should have a bias toward doing things differently from the mainstream, so that you can put new ideas to the test.

There are plenty of options for people who don't want to write new code using NUL-terminated strings. They can make their own decision. There's no reason to blame a 40-year-old decision for errors today.

<comment><USER12> If you want your new code to interact with old code, there is a very significant advantage to using the old code's data format.

</comment></comment><comment><USER13> Whenever I've had to write non-trivial C, I try to use the bstring: <http://bstring.sourceforge.net/> library if possible, which provides a length+blob approach with a nice API, and can be converted to/from nul strings fairly easily.

</comment><comment><USER14> DOS did not "invent" it's own path separator, directories were added to DOS long after command line flags, which already used slash, and COMMAND.COM already supported placing a flag immediately after a command name (without whitespace), making backwards compatibility with their own OS extraordinarily hacky to implement if not impossible.

Also please remember we're talking about the late 70s here. This is one of those annoyingly common vitriolic ideas about Microsoft, really tarnishes the reputation of this article as being well researched by appearing here.

<comment><USER15> The author mentioned this:

"IBM had decided to use the slash for command flags, eliminating Unix as a precedent, and the period was used between filename and filename extension, making it impossible to follow DEC's example."

<comment><USER9> DEC also used periods to separate filename from extension.

People forget that CPM's conventions (which were copied by CPM/86 and PC-DOS) were copied from DEC conventions. DEC operating systems were very, very popular at the time.

</comment></comment></comment><comment><USER16> I wonder whether the most expensive mistake is not so much the NUL-terminated string design, but the persistent use of library string and memory manipulation functions that we now call "unsafe". The culture of constantly writing your own raw-memory-based string manipulation functions and working with memory so directly, without safety constraints.

I remember using strings and STL containers in C++ and wondering why would _anybody_ go back to the clunky ways of malloc'ing, scanning for NULs, using memcpy, strcmp and other things that might "run away" on you so easily. I remember feeling unsafe using strcpy. In contrast, it felt very safe to use C++ strings: I had to out of my way to code a buffer overflow.

Better, but not best, the "safe" replacements of strncpy require you to maintain the correct string length on your own. Basically, there are just so many ways to shoot yourself in the foot.

The industry could've signficantly addressed this by adapting a standard library for manipulating strings and memory, at least with length-restricted "safe" functions (strncpy, but one that always NUL-terminates). Potential language support and compiler support could've been added. All of this should've been done way back in the day, but it wasn't.

<comment><USER17> That subjective feeling of unsafety is excellent. I can only wish that other people felt that same tinge of doubt when invoking these operations, as one mistake can corrupt memory.

I also find it ridiculous how tolerant the OSS community is about these things. Major projects written in C (Pidgin) often find themselves fixing these sorts of mistakes over and over again. Why is this acceptable? To me it suggests a rushed design, and it potentially puts my information at risk. Remember, all of the speed gains to be had from C are lost the moment you core dump.

It isn't that C is inherently insecure, but we should require good reasons for it to be used, particularly with apps that interact with the network. Right now it seems like it has a bit too much geek cred as the language of alpha developers.

</comment></comment><comment><USER18> In the performance category, it imposes a cost on string searches, also, unless you know the string length via some other mechanism. Algorithms like Boyer-Moore get their speed by skipping over some characters, but with null- terminated strings it's unsafe to skip any character without first checking if it's null. Granted, that's mostly a cost imposed on long strings being searched for longish substrings.

<comment><USER19> The case you described as having the cost imposed is literally what boyer- moore excels at, so it doesn't even have the benefit of hurting the pathological case.

</comment></comment><comment><USER7> > The damage from this decision is still accumulating at breakneck speed, with > StuxNet and the OOXML perversion of the ISO standardization process being > exemplary bookends for how far and wide the damage spreads.

Bashing Windows doesn't make you cool, it's just tiresome.

<comment><USER17> Yeah, but it does make you appear cool on Slashdot.

</comment></comment><comment><USER20> A C string is a convention, not a type and I don't know why we still cannot get a string type in C that can live side by side with 'char *'. I mean we got wchar_t duct-taped to C so why did the C99 guys not introduce a 'string' type (add/len)?

<comment><USER8> You can just do it yourself, typedef char* (or some other fancy array) as a string type and treat the first x bytes as a length of the string.

There's nothing stopping people from doing this temselves.

</comment></comment><comment><USER21> _If the source string is NUL terminated, however, attempting to access it in units larger than bytes risks attempting to read characters after the NUL. If the NUL character is the last byte of a VM (virtual memory) page and the next VM page is not defined, this would cause the process to die from an unwarranted "page not present" fault._

I don't see how that could happen. Are there any machines out there where VM pages are not aligned to some multiple (even 1x) of the CPU's native word size?

If I'm correct in assuming there isn't, then by definition, if the NUL character is the last byte of a page, then it's word-aligned, and you'd read exactly to the end of the page anyway. Alternatively, if you're _starting_ your read on an unaligned address but making your read size a multiple of the CPU word size (in which case you could read past the end of the page), you're not really gaining anything performance-wise.

<comment><USER22> The page fault problem seems unlikely, but SIMD-optimized versions of functions like strcspn() will read in 8-byte chunks, causing Valgrind's memcheck to complain about invalid reads when you do a strcspn() on a string where length % 8 != 0.

As for the original problem, I suspect x86 is relatively unique in its tolerance for unaligned memory accesses. The ARM processor I'm working with will return the wrong data if you try a 16-bit or 32-bit read that is not aligned on a 16-bit or 32-bit boundary. malloc() is supposed to return memory that is aligned to the platform's largest alignment requirement, so it takes a bit of deliberate work to create unaligned accesses. It seems unlikely that a NUL-terminated string will be accessed using unaligned multi-byte reads, since optimized libc functions will take alignment into consideration.

</comment></comment><comment><USER23> The choice of a null terminator vs len+adr is distinct from the issue of buffer overflows. A string implementation could use storage buffers sized with len+adr (with len as capacity) and range check them at runtime, but still use null terminators for the actual string length. This wouldn't necessarily be redundant; null termination has desirable semantics for algorithms that process text as a stream (e.g. scanners, regex) and saves having to keep track of distance to string end in a separate counter.

The deeper problem is lack of memory safety. The state of the art in static checks wasn't as advanced back then though (Pascal, in its original form, was not well received at the systems level), and dynamic checks would be considered too costly.

</comment><comment><USER24> Interesting read. However, the article doesn't fully consider the costs of the alternative decision. One of the things I really hated about COM programming was BSTRs (prefix the length of the string in memory BEFORE the actual pointer). Granted, BSTRs are a kludge but to me, it illustrated the elegance of the NULL terminated C-string vs. alternatives.

<comment><USER25> The other thing that came to mind to me was that you have now defined a maximum string length, unless you then had a meta-length number (describing the "length" of the length). And how long should _that_ number be?

I could see where Ken & Co just looked up and figured null-termination was a more elegent answer.

<comment><USER26> You could use a variable-width size field similar to how UTF-8 works, but that's getting pretty complicated and inefficient.

e.x.

0xxx xxxx

10xx xxxx xxxx xxxx

110x xxxx xxxx xxxx xxxx xxxx

1110 xxxx xxxx xxxx xxxx xxxx xxxx xxxx

etc

<comment><USER27> And re-introduces the 'magic character' you're trying to eliminate.

<comment><USER28> The magic character is in a known location, there's no need to iteratively scan for it.

The use of "magic" characters is not the problem, as I see it.

<comment><USER27> No it's not. In the first line, it's in [0], in the second line, it's in [1], in the third line, it's in [2]. You have to scan through to find where the '0' appears

<comment><USER26> True, but it's O(log N) rather than O(N) to determine length.

BTW I'm not sure if it was clear or not but those are bits in my diagram, not bytes/characters. The "x"s are the bits of the length field, not the characters of the string.

<comment><USER8> But you could just as easily set aside the first 4 bytes of a string to be the length and then it would be O(1).

But does that really matter when you're doing operations on the string that iterate over the whole string anyway? Since iterating the whole string is O(n) anyway, you're not really gaining anything.

<comment><USER28> Operations to return string length or return characters from the end of the string become far less expensive.

You also have a fair idea of a reasonable sized buffer to move in duplication operations, avoiding single character move loops.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> I would argue that a more expensive one-byte mistake was the computer industry failing to standardize on a newline representation (CR+LF versus LF).

In mixed Unix/Windows environments, I cannot even _count_ the number of times that this discrepancy has created issues or slowed down work: config files accidentally saved with Windows newlines and causing cryptic error messages ("No such file or directory: filename" because "filename" from that config file has an invisible CR at the end), discovering that a tool had been silently converting newlines from one format to another when you wanted to preserve them but it is too late to fix because the files have been shipped to customers, tools stripping the LF but not the CR and corrupting text displayed on terminals, $ in a regex not matching the end-of-line because of the presence of CR, of course the pain of editing Unix files on Windows (the only reason why Wordpad exists), etc.

<comment><USER30> > the pain of editing Unix files on Windows (the only reason why Wordpad > exists)

An FYI for anyone who might have this problem, Notepad2 is a drop-in replacement for notepad and can handle Unix/Windows line-ending conversions (plus a few other nice features for a small binary).

</comment></comment><comment><USER31> C++'s std::string solves this. Not only does it take care of all memory management for you, it also stores the string as length and a pointer. There's also a common 'small string' optimisation that stores strings a few bytes long inside the class itself, so it isn't doing any dynamic allocation. O(1) to get the size and small strings don't allocate - nice! Still, people will continue to moan that C++ is rubbish or something. You can even invent safe stack- allocated strings using templates to mimic exactly how C does it but in a safe and straightforward way, but the idea hasn't caught on - seems std::string is just fine.

To be fair C++ is best described as using both, since string literals are still null-terminated, and in many cases you have to use the std::string::c_str() method for backwards compatibility where a null- terminated string is expected (which is often regularly, in practice).

<comment><USER32> _"To be fair C++ is best described as using both"_

I think that is the real reason people commonly complain about C++. It's stuck in some sort of weird twilight zone, halfway towards being a modern safe language, but retaining enough of C to make it dangerous. Arguably more dangerous than C since newcomers may not be aware of what they are getting themselves into.

Kind of like the difference between a pit of quicksand, and a pit of quicksand covered in palm leaves. ;)

<comment><USER16> I don't agree that it is more dangerous than pure C. First, you can do all your operations on strings in 100% C++, which will be aggressively optimized to essentially what you'd be doing with C anyway. Second, keeping the underlying representation as NUL-terminated allows you to use other APIs that consume char * C-style strings by calling c_str(). There is a compile-time const check that forces you to write a cast when calling APIs that do not consume a const char *. If the APIs that you are calling do not modify the string, but merely read it (which is the case for almost all uses), then you can have a C++ app that is completely safe from string buffer overflows.

This is called abstracting out an easy-to-make-tragic-mistakes-in problem into a small layer (C++ std::string) and using that layer everywhere.

</comment></comment></comment><comment><USER33> > In other words, this could have been a perfectly typical and rational IT or > CS decision, like the many similar decisions we all make every day; but this > one had quite atypical economic consequences.

In other words, it is the exact same kind of pragmatic decisions as all the rest of the author's examples, but is simultaneously different.

</comment><comment><USER34> "Using an address + length format would cost one more byte of overhead than an address + magic_marker format, ..."

Actually pedantically, assuming an unsigned length, one byte for strings < 256 characters, two bytes for 64K, Etc.

Having heard Dennis at least talk about the development of UNIX the notion that C was 'dangerous' and not for the folks who didn't know what they were doing, was both a conscious decision and expedient. I mean c'mon you can cast a constant into a function pointer. It really was just syntactic sugar over basic assembly.

<comment><USER23> And yet, these days, performing such undefined operations may cause your compiler's optimizer to assume that such code is e.g. dead, and behave unexpectedly.

<comment><USER34> Oh absolutely. The original author was claiming that using a 'signature' character, NUL, to indicate the end of a string was is the most dangerous one byte 'feature' and speculates on whether or not the folks at Bell Labs thought that through.

In context, C was just a glorified version of assembler (but with better looping constructs) and that one could overrun strings, or randomly go into the weeds if the NUL was missing was 'understood' because that was no more dangerous than simply writing the assembler yourself. I mean 'JSR @R7,0x4bee' isn't really that much different :-)

I think the author was looking at the past through today's understanding of what the C compiler does, as opposed to the purpose it was originally set out for (which was to be more readable than assembly)

</comment></comment></comment><comment><USER35> What always bothered me with nul termination is that it isn't a data structure, it's a convention.

And as with all conventions there's discipline involved. You can't unit test and get rid of a certain kind of bug once.

To this day I still think that (Borland) Pascal is a better language than C. It has sets, array indices and best of all, a real module concept.

</comment><comment><USER36> Actually, null-terminated strings made a lot of sense when the string is short. On my 8-bit days, I used both approaches (because, sometimes, strings have to contain a NUL in them)

</comment><comment><USER37> One OS which did not make this mistake was the Classic Mac OS. I had a thread on Ars Technica where I argued whether Copland would have been more secure than Mac OS X based on that.

</comment><comment><USER37> >Another candidate could be IBM's choice of Bill Gates over Gary Kildall to supply the operating system for its personal computer. The damage from this decision is still accumulating at breakneck speed, with StuxNet and the OOXML perversion of the ISO standardization process being exemplary bookends for how far and wide the damage spreads.

As it happens, I researched that one for years, and I now think the root cause of that one is likely Bill Gates being an aggressive businessman who treated business as war.</comment>


The Washington Post Starts Blocking Ad Blockers - <AUTHOR> http://www.geekwire.com/2015/use-an-ad-blocker-the-washington-post-is-now-probably-blocking-you/ <comment><USER2> I don't think this is unexpected. Switching revenues streams is hard and takes time, so the question to me is if this is temporary, while they figure out a new model, or if it's a permanent thing. If it's the latter case, I would expect an arms race which isn't going to be good for anybody.

As an aside, I would love to know what this does to their bounce rate (which is surely why they're testing it). Maybe they'll decide they don't want those customers anyway, in which case I would expect they go back to ignoring ad blockers.

<comment><USER3> Well, it just went up by one. Their writing is really poor quality - as a person from outside of usa I kind of associated WashPost or NYT with the pinnacle of journalism. Boy, was I wrong, when i started reading HN few years back, when I was ~20 i quickly started to think of those as trashy sensationalist junk. I was SHOCKED how bad it can be.

Heavily biased, always spinning a one sided story, poorly researched, ommission galore. Would visit an article every now and then, just to see what caused hundreds of HN comments, but less and less.

Oh well, freedom!

<comment><USER4> I'd be interested to know what you think are good sources?

While they have bias it's obvious and predictable, and thus you can ignore it.

They're very much better than most UK newspapers, which are the worst kind of scum.

</comment></comment></comment><comment><USER5> Seems like kind of a ham-fisted solution. If it's final, their loss, I guess. I expect to see a lot more archive links on news aggregating sites.

</comment><comment><USER6> Easily bypassed. Just filter the css of the overlay.</comment>


How Apple's Moral Compass Works - <AUTHOR> http://www.fastcompany.com/1750514/smuggle-truck-and-5-other-banned-iphone-apps

<comment><USER2> Apple's moral compass is pretty much dictated by image, especially amongst the userbase of it's products.

As far as I can surmise, an app would be banned if:

* it would offend a large potential group of customers

* it offends even a moderate but vocal set of existing customers

* it spews and/or supports the spewing of FUD

* it makes the iPhone or Apple look bad

All in all, these are pretty easy to guess guidelines. They're also very geared towards keeping and attracting customers, and thus, the bottom line.

<comment><USER3> Alternatively, the company is run by a comparatively moralistic CEO. Apple and Steve Jobs are not as superficial as their many detractors accuse them of being. In fact, they're among the least superficial entities in the business.

<comment><USER4> Would this be the same CEO that would fire people if they couldn't justify their job in an elevator ride? Or the Steve Jobs who denied his daughter's existence until it was painfully clear she was his (going so far as to force her mother onto welfare because he refused to support her)? Or are you talking about the Steve Jobs who paid lip service to improving conditions at Foxconn while not forcing them to improve anything (I think there's been 3 suicides so far this year)?

I own Apple products, I love my Apple products, I love Steve Jobs' talent for creating them. But let's hold off on beautifying the man shall we?

<comment><USER5> It's kind of a bummer that you included the Foxconn example, considering that there have been several articles pointing out that Foxconn is _huge_ and, statistically speaking, they have a _lower_ suicide rate than the national average. In other words, working at Foxconn makes you less likely to commit suicide!

That example kind of casts doubt on the others, which I hadn't heard of before (but wouldn't be surprised by, either).

<comment><USER4> On the other claims are you capable of using Google? If you had the time to post this you should have the time to verify the data for your own piece of mind.

As far as Foxconn the company is huge but 30 suicide attempts in 3 weeks is not normal ([http://gizmodo.com/#!5540045/foxconn-suicide-cluster- claims-...](http://gizmodo.com/#!5540045/foxconn-suicide-cluster-claims- another-victim)). China only has a .02% suicide rate and most are in the rural areas ([http://www.chinadaily.com.cn/china/2007-09/11/content_609571...](http://www.chinadaily.com.cn/china/2007-09/11/content_6095710.htm)). That's 1 (Edit: I meant 1,000 here) in every 5 million people killing themselves. Foxconn has 950,000 employees (<http://en.wikipedia.org/wiki/Foxconn>) and 30 suicide attempts in 3 weeks!

<comment><USER6> Your facts don't support your assertions.

Population of China (2007): 1,321,851,888 (<http://www.infoplease.com/ipa/A0004391.html>)

Suicide rate determined in 2007: "more than 287,000 people end their own lives every year" ([http://www.chinadaily.com.cn/china/2007-09/11/content_609571...](http://www.chinadaily.com.cn/china/2007-09/11/content_6095710.htm))

Suicide rate per 100,000 per year: 21.7

Statistically expected suicides at Foxconn per year: 206

Actual suicides in 2010: 14 ([http://topics.scmp.com/news/china-news- watch/article/Struggl...](http://topics.scmp.com/news/china-news- watch/article/Struggle-for-Foxconn-girl-who-wanted-to-die)) with at least 30 attempts ([http://blogs.telegraph.co.uk/news/malcolmmoore/100039883/wha...](http://blogs.telegraph.co.uk/news/malcolmmoore/100039883/what- has-triggered-the-suicide-cluster-at-foxconn/)) (the articles contradict themselves in the number of attempts)

You are assuming the suicide cluster is a continuing trend rather than a short-term incident. Statistics does not work that way, things are not neat and orderly and you can't extrapolate like that. Besides, suicide clusters are a known phenomenon (<http://news.bbc.co.uk/1/hi/uk/7205141.stm>).

Also bear in mind that other sources place China's suicide rate much lower by a factor of as much as 4 (but Foxconn's suicide rate would still be lower than the average).

Is it something to be concerned about? Of course. But it's not at the dark- forces-at-work stage. All you are witnessing is how sausages (or cheap Chinese-manufactured goods) are made; witnessing it is uncomfortable but how often does it turn someone vegetarian?

<comment><USER7> That's a reasonable first approximation.

However, I would add that attempts are a poor indicator because there is a wide range of methods with poor success rates. EX: An increasing in attempts can relate to people choosing low success rate methods and failing.

Also younger people are far more likely to commit suicide than the elderly or vary young. However, generally employed people tend to have lower suicide rates. There is also a significant gender bias in suicide attempts and different bias in rates of suicide. Men are more likely to die on their first attempt in large part due to their chosen methods etc.

Also, suicides rates tend to cluster more than expected, both in the short and long term.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> There is really nothing insightful in this article. It's a list of a few banned apps and them throwing up their hands saying "who knows!?"

</comment><comment><USER3> They view the App Store as, well, a store. Just like virtually any other store, online or off, they restrict what they choose to sell. Ordinarily this isn't controversial, but for the fact that in Apple's case, the App Store is the only way to get native apps.

This sentence

> Apple has complete control over the kind of information you can get on your > phone, and it exercises that right seemingly capriciously.

is just blatantly wrong, of course. It only has (near) complete control over the native apps you can get on your phone. There are several other obvious channels of information that it does not control.

</comment><comment><USER9> Since HN doesn't have a private messaging system...

VoxelBoy, I noticed your username. I'm a graphics programmer --- I'd love to read about the type of stuff you've done, or simply chat. Have you looked into Sparse Voxel Octrees? Toss me an email (it's in my profile).

<comment><AUTHOR> Sure, I will. I'm currently doing game development with Unity and I haven't dabbled in self-contained graphics research. I would hazard that you know more about me when it comes to voxel data and rendering; regardless, it's a topic I'm very interested in. Aside: Voxatron by Lexaloffle is doing some cool things with voxels, check it out sometime.

<comment><USER10> Do you know about the OSS game ForeverWar? <http://foreverwar.sourceforge.net/> It's not developed anymore, but even the demo is pretty fun, and it would be cool if you picked it up. Just an idea. :) Voxatron looks cool too.

</comment></comment></comment><comment><USER11> I the iPad as a videogame platform — that means their peers are really Nintendo, Sony and Microsoft with the Xbox. But unlike the later two Apple is really going for the home market, i.e. marketing to a family (just like Disney).

With that in mind Apple is really closer to being Nintendo than anything else — so if you think in those terms they're in fact very open with what they allow into their store. Also I've never known Apple to tout the idea that "we're open" or even that "we do no evil". So I think in that way they're a bit more honest.

</comment><comment><USER12> The metric seems simple. It's not just Apple that's affected by the way the media find it ver easy to whip up a storm / moral panic / or as the article says "riots"...

If the decision to allow something will get us on Fox News, don't do it.

The media and political class are only allowed two positions on anything. Completely against or completely encouraging. Drugs. Infanticide etc. If you fail to condemn or block it, you're encouraging it. If you fail to encourage it, you're blocking it. Of course, when you spend less than any other industrialised country on education, you get a populous for whom everything is black and white.

</comment><comment><USER13> Why Apple doesn't use some kind of MPAA style rating system?

That isn't without it's politics, but at least it gives a flavor how to deal with publication of different categories of material.

<comment><USER14> not a good example. MPAA is evil, their rating system is subjective and their commitee members' bios are in condradiction to their own rules. [http://www.youtube.com/watch?v=XPQmKTAAeik&feature=relat...](http://www.youtube.com/watch?v=XPQmKTAAeik&feature=related)

<comment><USER15> So you are saying Apple does use something like the MPAA ratings...

* Posted from my iPad...

</comment></comment></comment><comment><USER16> tl;dr: professional-grade trolling

<comment><USER17> tl;dr: not everything critical of Apple is trolling.

<comment><USER16> I didn't say it was. But are you going to defend shit like this?

"And ultimately, Apple just wants people to keep calling, even if tumors are growing in their heads."</comment></comment></comment>


New Advice for Building Your IT Team: Generalists Are the Future  - <AUTHOR> http://redmondmag.com/articles/2010/08/01/building-your-it-team.aspx

<comment><USER2> My favorite quote on the matter is from Heinlein:

"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."

IT is no different in this regard.

</comment><comment><USER3> In my experience, a mix of experts and generalists make for a great team... as long as there's a sense of teamwork and mutual respect.

Experts often make quick work of a solution, or pull answers out of triviata unavailable to others.

Generalists -- particularly those with broad experience and polyglot interests -- can often make great connections from seemingly unrelated details.

Managers, though... now there's a problem that needs solving....

</comment><comment><USER4> Generalization is growing exponentially harder as every system becomes more complex to administer _well_. IIS 7 vs IIS 6. SharePoint. Apache with SSL. DBA. Then there's Rails, VMWare, W7, OS X, iPhone, etc.

I love being a generalist. It's what keeps me in IT. But we are a dying breed.</comment>


[Map] Mashup of Japan's Earthquake Timeline ( hundreds of quakes ) - <AUTHOR> http://lat.ms/fizIFw

<comment><AUTHOR> A map of checkins for Sendai, JP region.

[http://checkin.to/cities/1118129#!/location/4d7e6959a2db1b17...](http://checkin.to/cities/1118129#!/location/4d7e6959a2db1b171b06723e)</comment>


With a new tool, spreadsheet users can construct custom database interfaces - <AUTHOR> http://news.mit.edu/2016/spreadsheet-databases-0708 <comment><USER4> OK... but where are decent user-friendly tools to manipulate, manage and share data and insights? Really, the problem is that to this day data in Corporations is a mess. The moment you step out of the standard warehouse systems you find yourself navigating a mess of spreadsheets, word docs, power points, all showing sometimes the same data in different formats. You duplicate data every time you send an Excel file by email... this data needs to be in sync and when not people get screamed at or fired. That means a lot of work goes into manually maintaining thousands of different files to make sure they tie to the overall picture. It's a mess. The bad part is that nobody is looking into this, everybody is focusing on analytics or reporting, which by now are the easy part.

Then you have ancient tools like HFM or BPC that try to "enhance" spreadsheets and spreadsheets consolidations. They don't work. They are barely reliable and they cost a lot of money for no reason (they are simple SQL databases, they can't even be compared to much more complex software like salesforce or similar).

Then Corporations are now being sold this all "big data" thing, which is old by now for tech audiences, but it's just new for most of the big companies nowadays. Unfortunately, while big data has a lot of potential, it further moves away investments on good old small data where probably there is much more ROI to grab simply because solving this problem is not that difficult and not that expensive if you want to actually fix it.

Then now everybody wants to do Predictive, but Predictive won't beat saving hundreds of employees thousands of working hours by improving the efficiency of how we handle data and data insights. You can literally create a new workforce out of the many hours you would save with better efficiency in this area. Without even considering that on top of efficiency, you get much better, more fact based, decisions driven by the overall increase in transparency which you lose when insights are spread around thousands and thousands of files.

There is some light at the end of the tunnel. Software solutions like Tableau go in the right direction, but they do not provide the much (more) needed tools to properly manipulate and manage data and, especially, consolidations and integration. The only way to get out of this mess is to control the data flow but especially to have 1 and only 1 data flow. That means once your insights are approved and locked, every other view should read this data, there should be no manual intervention any more. If the locked data is wrong, it will be wrong for everybody, which is a good thing compared to having multiple copies of the same and then people fighting on which one is the right one.

<comment><USER5> You're spot on. I can tell you work in Enterprise as well and I feel your pain brother/sister.

1\. Everyone is willing to sell you something that is going to manage all of your disparate legacy data, except that somehow nothing ever seems to die in the Enterprise and instead you end up with users of the unmaintainable legacy system AND a second system on top (and third, and fourth) that now also all need to be maintained.

> Analysis and reporting are the easy part.

I don't agree on this point. They're just as hard as ever. Of course you have Excel, Reporting Services, and Power BI. But everyone wants you to formulate the QUESTIONS as well as the ANSWERS. As soon as they discover all of the issues you've found, now it's bury-your-head-in-the-sand-time, because they just want to whittle it down to that top 1% of 1% of problems so that their stats look good; whack it into a daily email, which goes onto a daily KPI sheet, and the underlying issues they originally wanted to know about of course never (or rarely) get fixed. Progress!

2\. Let me tell you about Big Data! It's a codeword for:

* We know you've never archived or thrown anything away before, that you have data coming out of your ass.

* We also know you'll never use it. You don't have the funds, inclination, or staff to use it. But _one day_ we're going to build something that will magically do it all for you. So you better keep holding onto it.

* Oh yeah and we have something to sell you to help you keep holding onto it all until that magical day arrives! Please send us a purchase order. Thanks.

I love data. I am sure that some companies like energy companies and telecoms do actually have to deal with massive amounts of data. But Big Data has become a management buzzword that doesn't mean much except retaining everything and spending money.

If you retain everything you never have to make a decision about what to destroy. Management _loathe_ having to make a decision to destroy anything that they might be held liable for, but also _love_ spending money on something that they can use to justify that they're solving a problem.

Thus the success of Big Data.

3\. Predictive. I can't comment. Everyone talks about it but I don't see the solutions in the real world. Most of us are stuck in Excel / SQL and just starting to dip our toes into R. When everything else in life is hard, predictive becomes just another harder thing to avoid.

> There is some light at the end of the tunnel.

What you're talking about is Master Data. Of course the well for this has already been poisoned long ago and woe to all who sip from it.

Everyone loves starting an MD project that siphons data in. But the second people have to manage the data inside and start cleansing it and making decisions - it falls in a heap. It rarely gets to the stage where data is then written back to source systems it's game over (LOLOLOL many a vendor I have left in the dust just asking them about this - "That's phase 2" they say - <USER2> they've never had any single customer reach it).

\--

Back on point about the article though, it looks like an interesting way to structure data and it could probably do as an Excel add-on of some kind. I expected something that would create a database but unless there's more than the video this is just writing queries?

This is all well and fine, I guess, if it adds usability. But _nobody 's_ jobs are going anywhere. The article says this tool can create anything SQL-92 can. Good luck... I deal with shit daily that you couldn't even begin to imagine.

<comment><USER6> Yup completely agree. I was hired to do that. Dive in their data, old and new, in my current company. I got insight. I got valuable answers. And when i brought them up they said "uh yeah but we can't change it. It is a political decision. You don't have some QuickWin to show that you are useful ?"

I found things to do... but it is not the core of the problem. I am lucky my boss is quite high on the hierarchy and may be convinced to attack that core problem. But it will take a looooong time.

<comment><USER4> Core problems take months or years, depending on who gets involved. But low hanging fruits are everywhere and you should exploit them to gain credit and credibility. Just don't implement solutions that fix a small issue but then introduce even more technical debt (i.e.: coding a custom access database for non technical users).

<comment><USER6> thing is, most of the time low hanging fruits are the only thing they solved during the past 10 years. They are now stucked with core problems.

And no, most of them would not take long time. They just need a political decision, but could be solved in a couple days.

</comment></comment></comment></comment></comment><comment><USER7> [http://www.fieldbook.com](http://www.fieldbook.com)

I haven't used this in production, but messed around with it for a while. Seems to do what this article is suggesting.

<comment><USER8> Yeah, I reposted that one in a few places. Reason is getting people outta spreadsheets into better DB will need replacement to be just like spreadsheets. Anything too different in UI or workflow will get resistance and workarounds. Fieldbook was clever.

</comment></comment><comment><USER9> Very cool. The right side of the article provides links to a video presentation of the tool and a SIGMOD paper reporting on the details. It is specifically compared against Access in a study on usability.

Link to the project page: [http://people.csail.mit.edu/ebakke/sieuferd/](http://people.csail.mit.edu/ebakke/sieuferd/)

</comment><comment><USER10> This sounds a lot like AirTable[1] to me. AirTable has quickly become my favorite Spreadsheets replacement because it has a nice REST API, ways of linking data from multiple tables, data integrity principles, and pretty solid mobile phone data entry, while still maintaining the simplicity of a spreadsheet.

[1] [https://airtable.com/](https://airtable.com/)

<comment><USER11> I do like Airtable, and i can see the comparison but as far as i understand you cant do the complex querying that the article is suggesting?

</comment></comment><comment><USER12> Am i missing something but... ... Where is the tool ?

Source code or it doesn't exist ;)

</comment><comment><USER13> "when you have something extremely industry-specific is, you have to hire a programmer who spends about a year of work to build a user interface for your particular domain" — with tools like Oracle APEX it can be done much faster, so I think nothing new.

<comment><USER14> As long as one needs a programmer the year is a good rough estimate, the hard part is not the building but the gathering of requirements. Take the programmer out of the equation and thus the communication overhead between programmer and domain specialist and you save a lot of development time.

<comment><USER5> The thing is that having a tool like this does not make the requirement gathering go away.

Dude I can build a house. I've only used a drill once in my life, I've never mixed concrete, or bricks, but I can. I will lay stuff on top of each other and use superglue and whatever it takes.

But _nobody_ will ever want to live in and it would not be safe. That's why you get a professional to do it.

A user might somehow be able to magically skip gathering requirements and just dive gung ho into creating a structure for what they want. Great. And you end up with the legacy Excel monstrosity turds that we've been trying to eradicate from the Enterprise for the past two dozen years.

</comment></comment></comment><comment><USER15> I'm not sure how this is any easier than using Tableau, which can construct most of these types of business analytic queries fairly easily. More complicated queries that pull in data from multiple tables usually requires an understanding of the organization of data across these tables, but that is true of this tool as well (at least from the video on the author's website - [http://people.csail.mit.edu/ebakke/sieuferd/index.html](http://people.csail.mit.edu/ebakke/sieuferd/index.html))

</comment><comment><USER16> So... Pivot Tables? Excel has done this for ages. Excel 2016 even has in- memory BI.

<comment><USER17> Access had a database gui wizard since when? 97?

</comment></comment><comment><USER18> Microsoft Access?

<comment><USER19> Screenshots[1] look more like Power Pivot.

1\. [http://people.csail.mit.edu/ebakke/sieuferd/](http://people.csail.mit.edu/ebakke/sieuferd/)

</comment></comment><comment><USER20> [http://people.csail.mit.edu/ebakke/](http://people.csail.mit.edu/ebakke/)

</comment><comment><USER21> So... they've reinvented Access?

<comment><USER22> In my experience (which includes large companies from sectors like automotive and utilities) in most cases there is a large, RDBMS backed application doing something really critical... And then when you talk with actual users you discover a swarm of Excel files that either support or often second guess the corporate system.

And it is not just reporting. In some cases inputting large quantities of tabular data is just done by writing Excel macros that create CSV files to upload to the system (and sometimes, horrifingly, the data are just retyped...).

<comment><USER23> It's a scenario I've witnessed a few times too many now. Often an unsupported feature X is becoming critical to the team, so users reproduce large chunks of the corporate system in a separate spreadsheet in order to support the feature themselves, then build upon that.

Without the ability to react quickly that smaller businesses have, I noticed that some form of resistance from IT is usually a big factor: lack of resources, divergent priorities or visions, unclear benefits from hypothetical feature, limited architecture, end-of-life maintenance states that end up lasting years, etc.

Reality changes, systems fall behind, users adapt and spreadsheets are born.

One root cause is that it's comparatively hard to add new data in a RDBMS - <USER3> usually requires a full development life cycle. On the other hand, spreadsheets are free, provide immediate benefits, allow users to define and refine requirements as they go, and can be abandoned at the drop of a hat (low risk). Quite the conundrum!

From the article:

> At present, Bakke's tool enables query construction on an existing database, > but it doesn't enable the direct entry or modification of data. He expects > to begin adding that functionality over the next six months

Querying data is a problem with many good solutions nowadays, the bigger question is where and how to write that new data the users want to play with (other than in a spreadsheet).

<comment><USER24> >it's comparatively hard to add new data in a RDBMS I assume you meant to day "to add new schema". Adding new data is easy and in most enterprise environments is happening automatically every day.

As far as "add new schema" goes, I'll claim that the database is just another software component, and if you pursuing an agile strategy, that you should be modifying that schema with every sprint. My client, for whom I do data warehouse consulting, updates the schema every two weeks. Because we are responsive to the business, they never revert to spreadsheet solutions. Of course they are free to create there own custom reports in spreadsheets - we'd never try to take that away. In fact we make it as easy as possible to run business curated queries and dump the data to Excel. Our newest feature for these power users is to allow them to give back to us the Excel reports they built and we will "push and deliver" \- put the current data into the raw data sheets and deliver the report - usually to Sharepoint.

Getting good business software solutions in place merely requires that the business hire some good developers. Why more don't do so remains a mystery. My best guess, like all things "corporate" is fear and laziness.

<comment><USER22> _Because we are responsive to the business, they never revert to spreadsheet solutions._

Not that I do not believe you but... How hard have you looked? In my experience the largest the corporation the more chances there are that IT just does not realize what the situation is. "Shadow governance by spreadsheet" is something you notice only if you actually work in the same office withe business users for a few days, in my experience (or when the whole thing has grown so much that they cannot really manage it anymore then ask you to fold it back into the main system).

Of course, YMMV.

<comment><USER24> We work for the business, not for IT. That's a key difference. And that's what I mean by "business hire some good developers". As a developer, I find it much more satisfying.

</comment></comment></comment></comment></comment></comment><comment><USER25> really cool, easy start to any project</comment>


Security for building modern web apps - <AUTHOR> http://dadario.com.br/security-for-building-modern-web-apps/?hn

<comment><USER2> great tips. thanks

<comment><AUTHOR> You're welcome :)</comment></comment>


Why Mike Maples thinks Apple should buy Tesla right now - <AUTHOR> https://www.facebook.com/mike.maples/posts/10153037753700390?fref=nf

<comment><USER2> See Tesla's market cap, it's $25B [http://finance.yahoo.com/q?s=tsla&ql=1](http://finance.yahoo.com/q?s=tsla&ql=1)

See 'total cash', 'total debt' and market cap: [http://finance.yahoo.com/q/ks?s=AAPL+Key+Statistics](http://finance.yahoo.com/q/ks?s=AAPL+Key+Statistics)

Apple does not have enough cash and giving away too much stock in a cash and stock deal would give too much control to Telsa holders.</comment>


San Francisco bans events for 2 weeks due to coronavirus - <AUTHOR> https://www.kron4.com/news/bay-area/order-san-francisco-bans-events-for-2-weeks-due-to-coronavirus/ <comment><USER2> Only covers events in city buildings

> Effective as of Saturday, March 7, no City-owned facility can allow any non- > essential group events from occurring.

<comment><USER3> Presumably it's not legally possible for the city to ban private building owners from hosting events in their buildings.

</comment></comment><comment><USER4> This article is unavailable in Europe.</comment>