Show HN: Stein – Use Google Sheets as a No-Setup Database - <AUTHOR> https://steinhq.com/ <comment><USER2> You can do this for free today using open source libraries. [https://www.levels.fyi/comp.html](https://www.levels.fyi/comp.html) used to run entirely on a Google Form + Spreadsheet and still backed by one.

Submit form: [https://stackoverflow.com/a/37743080](https://stackoverflow.com/a/37743080)

Get data from sheet: [https://github.com/jsoma/tabletop](https://github.com/jsoma/tabletop)

Happy to answer any questions.

<comment><USER3> Reminded me of the top comment on the "Show HN" of Dropbox, back in 2007: "you can already build such a system yourself quite trivially by getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem." ;)

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

<comment><USER4> Instead of as a disparagement of the product, you could see this as a no- judgement PSA for anyone interested in and capable of running such an alternative.

Incidentally I am precisely looking for something like this so for me that's valuable :)

<comment><USER5> I didn't "hear" it as suggesting it was a disparagement of the product, more like a "LOL, sure, that's so easy!" sarcasm. "You, too, can do this -- if you are a former astronaut and billionaire. No big!"

A lot of advice that "You can _easily_ do it yourself" presumes a fairly high level of skill and knowledgeable in sometimes multiple domains. That presumption isn't crazy talk for the HN audience. Plenty of people will have the requisite background knowledge to jump on a comment suggesting a DIY alternative.

But that in no way means there isn't a market for the product. Plenty of people may need or want X and not have the capacity to do it themselves, even with some instruction.

<comment><USER6> I don't see anything in the comment claiming that it's "easy" to do yourself, just "possible". I don't think they'd bother saying "Happy to answer any questions" if they thought that it was trivial to do without help.

</comment></comment></comment></comment></comment><comment><USER7> Nice side project but risky to consider for commercial product. With google restricting access to its API, it is unreliable to use a free product for commercial purposes.

<comment><USER8> Unless your company uses GSuite, then this can be a great tool to quickly put together small internal tools.

</comment></comment><comment><USER9> [https://sheetsu.com](https://sheetsu.com)

[https://sheety.co](https://sheety.co) (No pricing)

</comment><comment><USER10> Off topic but anyone know where to start to build a UI which has the similar look and feel? I already came across websites which almost look like this and making me conclude there is a design pattern/layout/framework which allows it.

<comment><USER11> This looks like Material Design.

</comment></comment><comment><USER12> Looks neat! Questions:

\- Do updates show immediately (for both directions)?

\- What are the limits of read/write queries?

\- What are the limits of rows?

\- Can I use formulas in the sheet?

\- How is the type handling? Does everything get treated as text or are there date and number types?

\- Do formatting options for columns (e.g. for number of decimals) survive when I alter things with the API?

<comment><AUTHOR> _\- Do updates show immediately (for both directions)?_

Yes, changes are apparent immediately.

 _\- What are the limits of read /write queries?_

The details are mentioned on [https://steinhq.com/pricing](https://steinhq.com/pricing).

 _\- What are the limits of rows?_

Details available on the pricing page as well. A thing not explicitly mentioned is that you can add any number of rows to a sheet. In append operations, the row limit is not checked.

I'll let you know the other details soon. That's something many have been asking, and I'm deciding what the default behavior should be.

</comment></comment><comment><USER13> I have contemplated using google sheets as storage for parts of the data that I have. It would allow me to procrastinate on many admin UI things, and it would even feel much more transparent. It just feels too fragile somehow, which isn't really a rational assessment. Does anyone have experience with it in a SAAS context?

<comment><USER14> You could also host your website or application's images by creating a facebook account and programmatically uploading the images there, and then linking to the CDN image URL from Facebook. It would work, but there are better ways to handle it.

I would just use Postgres as a database, personally.

</comment></comment><comment><USER15> Looking at the code, it seems tightly coupled to Google's offerings: just for fun, it'd be nice to have it run against NextCloud/OwnCloud.

Sure, if you host those, you might as well host a proper database (you already do), but for quick prototyping might be useful, or as I said, just fun :)

</comment><comment><USER16> At our company, we use an ETL script to suck all our Google sheets into MySQL then we run queries for reporting. It's pretty nice, we'll probably open source it.

The worst part is that as a database, Sheets is not one-tenth as good as MS Access was. You can't enforce constraints or even disable certain people from editing the format of a cell. There's lots of things you can try but you are just one inadvertent copy-paste away from losing formatting/validation rules you had set.

</comment><comment><USER17> How does this compare to Airtable?

<comment><USER18> AT is my go to solution for quick database needs for prototyping. very simple to share "auto created" documentation for external devs to connect via its marvelous api. plus 1200 row free (infinite tables) is good to start

<comment><USER19> I'm building something with Airtable now, but definitely see the need to move away from it quickly. More than anything, I just like the appeal of the web UX to get started in designing the data model. It allows me to work with an 'excel guy' in order to figure out what we need for our application.

The API, which is very well documented, is far from marvelous. For example, there is no way to use a transaction to update two (or more) tables at the same time. It is also rate limited to a tiny 5 requests per second, even under paid plans. The API also does not allow you to request relational data in one request. You make a request to get the parent id, then all the children, by parent id, in a separate request.

I'll also say that the company feels a bit dead. You look at the changelog and they add a couple features here and there, while other features, such as barcode scanning (probably a weekend hackathon feature) languish by the wayside. They respond quickly to support requests with answers like 'we will add that to the long list of things we want to do'... riiigght...

<comment><USER20> They just raised $100M last November, I wouldn't consider them dead... Probably busy hiring :)

[https://www.crunchbase.com/organization/airtable#section- fun...](https://www.crunchbase.com/organization/airtable#section-funding- rounds)

</comment></comment></comment></comment><comment><USER21> So many discontinued services and people still invest their time to Google APIs.

</comment><comment><USER22> I have been doing this for a year or so using the python libraries. Created lookup calls etc.

The only issue in large sheets is sometimes you get time outs.

The setup of the sheet and the sharing has to be done using the api key

</comment><comment><USER23> This is what I did for a webpage I made about books I read. Just have to add a row to the sheet to update the page. Also I should read more books. [https://mnky9800n.github.io/booklist/](https://mnky9800n.github.io/booklist/)

<comment><USER24> I see you're enjoying Tom Clancy like I did back then in 2005. Good read bro.

<comment><USER23> I have an addiction and I can't help myself. I think the strangest thing about Tom Clancy is his politics. He clearly wants an egalitarian meritocracy, a laudable goal imo, then suddenly he's talking about the importance of gender roles or how government handouts are bad. I think his early books are better simply because they seem to be much better researched.

</comment></comment></comment><comment><USER25> Why is it called "Stein"? (Yes, that happens to be my last name...)

<comment><AUTHOR> Keep them guessing ;)

</comment></comment><comment><USER26> Or a FUSE filesystem that stores data entirely within base64 encoded binary chunks in hierarchies of Reddit shadowbanned submissions and comments. Cloud- based, personal, secure!

</comment><comment><USER27> I'm looking for a invoicing solution in google sheets. Currently I have invoices using templates in sheets, but I also need statements.

</comment><comment><USER28> This is both a terrible idea and very cool.

</comment><comment><USER29> Nice! Using spreadsheets as a DB are trend now. Also Spreadsheets are pretty good CMS as well, so people can use it to create websites without code. I made an app called [https://Sheet2Site.com](https://Sheet2Site.com) which takes your spreadsheet of items/objects and translates it into an app, with filters.

</comment><comment><USER30> isn't there like a google sheets user cap that severely limits this for production?

</comment><comment><USER31> This is exactly the approach we're using for hackerpet (hackerpet.com)

</comment><comment><USER32> ah like glideapp.io but more cross platform!

</comment><comment><USER33> What is the performance of this?

<comment><USER34> Data seems to be mirrored to a mongoDB instance on the server where it's served. So my guess is that performance is great.

</comment></comment><comment><USER35> > You need to enable JavaScript to run this app.

Why are people referring to html+script as apps?

<comment><USER36> How do you define app? Is there a clear boundary that you can define between a true app and not an app?

<comment><USER35> Well, let's see.

Begins with:

        <!doctype html>

Has a 3K character script:

I'd say that's a web page.

<comment><USER36> That's a definition of webpage, but you don't explain why webpages aren't a subset of apps. I saw your comment pre-edit, which said that an app has to be downloaded to a user's device to run, but that also doesn't exclude webpages since an HTML document and its scripts also have to be downloaded to a device to run. Is it something that has to be pre-compiled? Is an html and javascript page embedded in a binary an app? I'm only trying to point out that the word "app" is too ambiguous. We can agree that a book isn't an app, but beyond that the definition is purely subjective.

<comment><USER35> App is short for application. Web pages with scripting existed for years before anyone called anything an app.

Maybe it's just semantics. But it comes off, to me, as pretentious.

<comment><AUTHOR> Sorry for coming off as pretentious, but that's just the default message that comes with create-react-app. And I conveniently disregarded the idea of making a change!

<comment><USER35> Hey, thanks :)

Now I know why I've been seeing that error so much.

</comment></comment></comment></comment></comment></comment></comment><comment><USER37> > No-JavaScript solutions for the web with Stein Expedite

> Handlebars

{{title}}

By {{author}}

              {{content}}

Read on Medium

Is there now some built-in HTML templating functionality I wasn't aware?

Since when is this no-JS?!

NO JS means NO JAVASCRIPT and not no need to write JavaScript.

<comment><AUTHOR> I mentioned No-JS because you don't need to write it yourself. But you do need to import a pre-built script in your HTML.

No HTML templating wizardry!</comment></comment>


Rendering AJAX-crawling pages - <AUTHOR> https://webmasters.googleblog.com/2017/12/rendering-ajax-crawling-pages.html <comment><USER2> Todd from Prerender.io here. We always knew this day would come eventually :) We are currently serving around 60 million prerendered pages to crawlers every day, with Google being about half of those requests. We are recaching around 1 billion pages every month in PhantomJS/Headless Chrome. Google is the only crawler executing a meaningful amount of JavaScript so Bing, Baidu, Yandex, Facebook, Twitter, and other SEO crawlers still need prerendering.

For anyone that will need to update their own crawlers to match Google's new javascript crawling, we've opened up our Prerendering engine that uses Headless Chrome at [https://prerender.com](https://prerender.com). You can capture HTML, Screenshots, PDFs, or even HAR files from any web page with just an http request to our service. So it's super easy to add javascript crawling to any crawler with Prerender.com (and it's open source [https://github.com/prerender/prerender](https://github.com/prerender/prerender)).

For our Prerender.io customers, this announcement just means that Google will stop crawling ?_escaped_fragment_= URLs so they won't request prerendered pages anymore. Instead, Google will just execute the javascript directly and index the result.

We've always recommended that our customers use the escaped fragment protocol, so it will be a smooth transition as Google slowly stops crawling the ?_escaped_fragment_= URLs. No changes need to be made if you are currently using Prerender.io. Keep an eye on our twitter (@prerender) and we'll give updates on Google's transition.

The one thing to look for when Google starts executing your javascript is keep an eye on your Google Webmaster Tools for your number of pages crawled by Google. In the past, we've seen that Google crawls much slower when executing the javascript themselves. Hopefully javascript websites don't take a hit in number of pages crawled daily since that can affect large sites having all of their pages up to date in Google's index.

<comment><USER3> This isn't so much a service question as a technical bogglement, but I'm very curious what sort of heavy lifting you need to do 60 million renders a day.

Assuming renders take 7-10 seconds at worst, that means (if I've got my math right!) that you need to do between (60m/(86400/7)=4861) and (60m/(86400/10)=6944) renders per second in order to keep up. (86400 = seconds in a day)

...Ahahahaha :)

Given that a single Chrome instance on my new-but-not-particularly-amazing i3 box can be sluggish at the best of times... I have no idea what sort of tolerances Xeon(?)-class hardware (possibly running Xen? :P) have to running multiple entire copies of Chromium... I initially wondered if you needed 1000 compute instance, then I realized maybe you only needed 400, now I honestly don't know at all.

\--

I'm also curious how using Headless Chrome and PhantomJS is working out. As in, genuinely interested. IIUC my understanding is that PhantomJS has pretty much wound down, while Headless Chrome is fractionally different enough from Chrome that it's possible to tell which one you're running on ([https://news.ycombinator.com/item?id=14936025](https://news.ycombinator.com/item?id=14936025)). I've been idly curious about "perfectly sandboxing" webpages so they honestly can't tell they're not in a "normal" PC/laptop/mobile environment, and my impression is that I'd have to start with a _very_ carefully configured copy of normal Chromium in order to do it.

\--

I must admit that I got curious at what 60m monthly renders looked like against the pricing structure... but couldn't really figure it out, it's not a simple enough exponential curve (and I can't math for nuts). Single-stepping through the pricing algorithm was very interesting though ($1522 for enterprise, huh cool).

\--

PS. The view-source link at the bottom is unfortunately broken; Chrome blocked opening such URLs recentlyish. Fixing it will likely require, ironically, a little server-side renderer :)

\--

EDIT: One last thing, note [https://news.ycombinator.com/item?id=15882066](https://news.ycombinator.com/item?id=15882066) from this thread

<comment><USER2> Yep, we have LOTS of servers :) We pretty heavily cache pages too.

Headless Chrome is great and we're super thankful that the Chromium team put the work in! PhantomJS is good... it just doesn't have all of the latest features, like ES6. So it was really helpful that headless Chrome came along right as people started using more ES6.

Yeah, Chrome did break the opening of view-source URLs a while back for our [https://prerender.io/](https://prerender.io/) buttons on the bottom of the homepage.

</comment></comment></comment><comment><USER4> Their support for rendering JavaScript is, IMO, that they have turned Chrome's engine into their web crawler.

We see some signs of this with the chrome headless project and with the fact that Chrome, masquerading as a mobile viewport, can be used as an effective mobile crawler, even when the mobile UX is provided primarily by JavaScript.

I think they still use a plain HTTP request based crawler for "most" sites (mainly for speed), but then flip on Chrome-based crawling for popular sites and for sites that seem to be JS-heavy. I see no reason why, long term, Chrome wouldn't become the primary crawl/render engine for Google.

<comment><USER2> It looks like they are currently using Chrome 41 ([https://developers.google.com/search/docs/guides/rendering](https://developers.google.com/search/docs/guides/rendering)) when rendering pages. I agree that with all of the work on headless Chrome, they should move towards using headless Chrome in the future.

<comment><USER3> Iiiiinteresting.

I wonder if all. the. security. patches. from every subsequent Chrome milestone regularly get backported to M41?

Obviously it's sandboxed to the hit. Poking the sandbox and seeing what it was made of would be VERY interesting though.

</comment></comment></comment><comment><AUTHOR> update: John Mueller from Google said [1]:

"If you can only provide your content through a 'DOM-level equivalent' prerendered version served through dynamic serving to the appropriate clients (ed. note: e.g. Google bot), then that works for us too."

[1] [https://groups.google.com/d/msg/js-sites-wg/70GqODR- iN4/foUz...](https://groups.google.com/d/msg/js-sites-wg/70GqODR- iN4/foUzscb3AQAJ)

</comment><comment><USER5> I love how the title of this article is an understatement. Google abandons ajax crawling scheme because... it will render javascript in all pages. This is an awesome news :)

</comment><comment><USER6> so, they're actually just removing the option for websites that use still use a /#! url structure to send a pre-rendered copy of the page.

not quite the same thing as abandoning ajax crawling.

<comment><USER7> They are abandoning the ajax crawling scheme. "Scheme" in this case in the sense of "documented interface," not in the sense of "we plan to do things." Easy confusion though, since the scheme didn't see much uptake that I'm aware of.

<comment><USER8> Good thing they aren't abandoning AJAX Crawling Scheme support though. Specialized lisp dialects are the lifeblood of our industry.

<comment><USER9> Your joke is either not well received or over peoples heads, but I chuckled.

<comment><USER3> Thanks; _now_ I went back and reread and noticed the capitalization :)

<comment><USER8> Never change, Hacker News.

</comment></comment></comment></comment></comment></comment><comment><USER10> If you're looking to roll your own HTML rendering [https://browserless.io/](https://browserless.io/) is great for doing just that and allows you to use puppeteer to do the HTML generation.

You could even go so far as to remove all unnecessary JS and CSS, but that'd require a bit more elbow grease.

</comment><comment><USER11> It's mildly amusing that this page itself doesn't render without JavaScript enabled.

JavaScript is killing the static Web — and IMHO that's a terrible thing. In part, I imagine Google like JavaScript pages because it's a barrier to the entry of another search competitor.

<comment><USER12> The content is hidden inside a noscript tag inside a div.loading with visibility: hidden. However setting visibility: visible doesn't help. The quick workaround is editing the noscript section from developers tools, delete the noscript tag and keep its content.

By the way, if Google executes the JavaScript in the pages it means that they could be mining some coins for those sites with coin-hive and the like? They probably check what they run and how long they run it, but people can be very smart if the goal is making money.

<comment><USER11> > The content is hidden inside a noscript tag inside a div.loading with > visibility: hidden.

Why would someone _do_ that? I'm reminded of this exchange from the Hitchhiker's Guide to the Galaxy:

> "But the plans were on display…"

> "On display? I eventually had to go down to the cellar to find them."

> "That's the display department."

> "With a flashlight."

> "Ah, well, the lights had probably gone."

> "So had the stairs."

> "But look, you found the notice, didn't you?"

> "Yes," said Arthur, "yes I did. It was on display in the bottom of a locked > filing cabinet stuck in a disused lavatory with a sign on the door saying > 'Beware of the Leopard."

</comment></comment></comment><comment><USER13> It's so great to read an article like that one and realize halfway that none of it applies to you. [Smug mode on] Having your site/app in ClojureScript+React+Rum, with flawless server-side rendering is quite nice.

</comment><comment><USER14> Google itself uses the fragment meta tag scheme in Google Groups (DejaNews) so users can access certain newsgroups without Javascript. Will this be deprecated too?

<comment><USER15> Haha I long for the days of DejaNews! Imagine StackOverflow but without the bullshit. And Google Groups is obviously terrible.

I'd say that Google totally ruined Deja but if I remember correctly it had already declined before the acquisition.

<comment><USER16> > without the bullshit

Save for the endless cross-posting. Out of control trolls. and the FTDSOJ thread.

<comment><USER3> Google's giving me OCRed PDFs, Chinese text, JSON dumps and license plate numbers when I google that acronym. Think I fell off the end of the index there.

What's it mean?</comment></comment></comment></comment>


Ask HN: Recommend a Gantt chart web app - <AUTHOR>

Is there any website (web app) out there that does Gantt charts well? The Gantt chart gadget in Google Docs is not it. <comment><USER2> I can't claim to be that well versed in the field of Gantt charts, but a guy I used to work with made:

<http://ext-scheduler.com/gantt.html>

if you're okay with ExtJS.

</comment><comment><USER3> Someone from <http://www.teamgantt.com> commented on my RMS, it looked pretty legit...

</comment><comment><USER4> <http://gantto.com/></comment>


The Office of the Future Will Still Have a Terrible Bathroom - <AUTHOR> http://www.bloomberg.com/news/articles/2015-07-08/the-office-of-the-future-will-still-have-a-terrible-bathroom <comment><USER3> > it's unease around the gap between the door and the partition

Why is this a thing in the US? I legitimately don't understand it.

As to the article overall: This is an interesting topic that is rarely discussed. I often see embarrassed bathroom patrons utilise the disabled- accessible bathroom because it is it's own room (i.e. not stall-separate, wall-separate).

I have no issue with gender neutral bathrooms, but from what I hear around the watercooler, women's bathrooms are a LOT nastier than men's (or at least that's how women tell it). Too many women trying to hover and getting it wrong.

But it would be interesting if companies starting doing a "private bathroom" as a perk again, something that was popular some time around the 1980s.

<comment><USER4> Just make them all unisex. What's wrong with unisex bathrooms, so long as they have partitions and not troughs or heads out in the open and have the urinals sectioned off at one end.

<comment><USER3> I answered this in my post...

> I have no issue with gender neutral bathrooms, but from what I hear around > the watercooler, women's bathrooms are a LOT nastier than men's (or at least > that's how women tell it). Too many women trying to hover and getting it > wrong.

<comment><USER4> If the stalls are cleaned out nightly I don't see there being a cleanliness issue. People with gastric issues can cause nastier environs irrespective of sex or gender.

And if hovering is an issue then clean nightly so people don't feel they need to hover and second educate. Talk about it... Lastly think about squat toilets. Easy maintenance.

</comment></comment></comment></comment><comment> pi-err I remember having been immediately struck by differences in office bathrooms between California and UK/France/Germany (where I worked).

The offices were usually nicer overall in the US (roomier, more recent), except for the bathrooms. Small, low quality, like 2 stalls in a 600 persons building. Usually pretty far away from work stations.

Turns out labor code enforces much higher standard for bathrooms in most Europe countries. IIRC for France: 1 stall for 10 person minimum, with a top value somewhere (maybe 10 stalls max), with adequate AC, lighting, water- saving systems, etc. There's a maximum walking distance to workspace. I believe it also now requires full-size partitions (or maybe in mixed toilets only if there's not enough room for separate). It should also now be 100% accessible in new office constructions and redevelopments. An architect friend told me those costs do add up, so the money doesn't go in fancier paint or lighting. It can also limit growth in team size if there are not enough stalls in the building.

I suppose it doesn't change in the US as a perfect "dark design": shitty bathrooms means people will use them less.

So bathrooms sum up the pros/cons of market regulation.

Also speaking of regulation, I like that the german labor code requires that all employees should have permanent access to daily light (with precise lumen values).

<comment><USER5> I work at a company whose office gets a fair amount of press for being cool and "stylish." What you don't see in the press is the half of the office whose only natural light is a 1 sq ft porthole in the corner. It's a dark, depressing work environment that shouldn't be legal. The other half of the building is "open" and "stylish." I seriously wish we had those German laws to prevent situations like this.

</comment></comment><comment><USER6> The University I used to work for had started the practice of building several small one-person bathrooms next to one another, so the would be a block of three or four bathrooms by each other. I found this to a nice setup but I'm sure this would cost far more than a men's bathroom with toilet stall, urinal and sink and a women's bathroom with two stalls and a sink.

I used to go to night classes after working all day and would often times want to change from my business casual attire to something more comfortable. Having those types of bathrooms certainly made changing easier and more private.

I'm sure the University had various reasons for doing this, but I think the spark had come to help alleviate anxiety regarding bathroom use by non-cis persons.

<comment><USER7> At a resort I've been to a few times, the nightclub area had a cool design. It was a largish round room with sink in the middle. The perimeter was individual tiny rooms with just a toilet. These were all gender-neutral, I guess that's OK because they were actual rooms, having walls and doors.

It seems like that gender neutrality would allow for extra efficiency, so that the dense-pack around the perimeter of a single restroom can handle more potential guests.

I never asked about how it affects cleaning effort, though.

In any case, the original article points out specific OSHA regulations. So it doesn't really matter if there are alternate designs that could work better; you're still stuck in the traditional paradigm, as regulation always acts as a drag on innovation.

</comment></comment><comment><USER8> I'm surprised to hear that people have found the bathroom going experience so suboptimal, but I can understand where they are coming from. The vertical gap between door and frame is sometimes more than a finger wide!

Personally, I mostly find the situation funny. I figure I've heard/smelled/been adjacent to my colleagues going to the bathroom more than any other member of my family. There's also something humanizing about seeing your VP walk out of a stall (eye contact optional) after you just smelled them commit acts most foul.

<comment><USER9> The vertical gap issue has always been weird to me, but I don't understand the issue with going to the bathroom in general.

It's something that we all do. I would better understand it if only half the population were afflicted with this strange curse called the poops, while the rest of us had digestive systems that could convert all waste into urine. That's not how it is though.

Everybody poops. Within the next 48 hours, it is pretty much guaranteed that all of your coworkers (from the sheepish new hire to the disgruntled 15 year veteran) will release something foul from their back end. Males, females and everything in between included. Most of them will probably stink something awful.

Everybody poops. Let's end this strange taboo.

</comment></comment><comment><USER10> Are so many adults that insecure and self-centered that they think everyone is focused on their bathroom activities? I'm certainly not paying that close attention. That said, I flush for noise and smell out of courtesy but not because I'm ashamed of something that I largely can't control.

</comment><comment><USER11> Gender inequity in tech has one downside if you are a male -- lack of bathrooms. If there is one male and one female bathroom on the floor, and male-to-female gender ratio is 5:1, then you're gonna have a bad time. :)

<comment><USER12> Men cycle through a bathroom much faster than women when urinating (ever been to a sports event?).

I imagine someone must have urination vs defecation stats. I'd like it be like 30:1 or something.

<comment><USER13> > I imagine someone must have urination vs defecation stats.

Might make for a tricky office survey.

<comment><USER14> Luckily, the wired bathroom of the future will gather these stats for us!

</comment></comment></comment></comment><comment><USER15> We have two (2) cubicles and two (2) urinals for probably 200 males. One cubicle currently has a broken seat and the other is frequently (at least once a week) blocked with toilet paper and filth (properly splattered all over, of course).

It's the worst office bathroom situation I've ever encountered.

<comment><USER16> That is grossly out of code [0]. With only two urinals, there should be a minimum of six full toilets.

Management should be alerted to the violation ASAP so that they can take immediate corrective action, followed up by a complaint to OSHA.

[0] [https://www.osha.gov/pls/oshaweb/owadisp.show_document?p_tab...](https://www.osha.gov/pls/oshaweb/owadisp.show_document?p_table=STANDARDS&p_id=9790)

<comment><USER17> Our office has the same issue. The problem is, the code only talks about number of employees but not proportional allocation between genders. It's possible that they have 200 men but less than 230 employees. This means they need 8 waterclosets, but naturally the builders made 4 for women and 4 for men. It's up to code, but don't expect to always be able to use the bathroom at work.

<comment><USER16> The table is per sex. So, if you have 100 females, you need at least 5 water closets available to females.

</comment></comment></comment></comment><comment><USER18> If the bathroom environment is really the worst thing about your workplace, you're doing alright.

</comment><comment><USER19> Everything about the stall door was irrelevant. They are made so cheap and with such gaps because, they are cheaper that way. They won't go down to the floor because, that would be 12" more material cost. They won't ever fit closely because, they sag and bend because they're cheaply installed. All the blather about how they could be different is ignoring the cost factor, which would be large.

ON a different note, I visited a dept store bathroom recently and was surprise to see, it was a hallway of individual bathrooms! Irrelevantly, they were marked Male and Female. If only one person is in it, why does it matter? The one at my house, upstairs first door on the right, is unisex.

<comment><USER20> >Irrelevantly, they were marked Male and Female.

Anecdotally, my office has about 60 employees and 8 individual bathrooms. They're fully enclosed with sinks and their own heavy closing doors. They also are all equipped with a white noise machine that's connected to the ceiling light switch. I guess we're pretty lucky to have this setup.

About two years ago, however, someone complained that all of the bathrooms were becoming "too dirty" in between weekly cleanings and it was blamed on the men. Therefore, three of the restrooms are now women only, while the remainder are unisex. It seems a bit unfair, but nobody has cared enough to complain.

<comment><USER21> > Therefore, three of the restrooms are now women only, while the remainder > are unisex. It seems a bit unfair, but nobody has cared enough to complain.

Even if today nobody complains, the company might have suffer a lawsuit in the future, by a disgruntled employee.

Better to fix that now, perhaps

<comment><USER20> I could say something, but my boss (the company owner) isn't the most receptive to suggestions like this.

It took nearly three years of my complaining to finally get an End User License Agreement for our product, for example.

</comment></comment></comment></comment><comment><USER22> > OSHA rules require that workplace bathrooms remain clean and dry and a mop > can slide right under partitions.

Well, that explains why so many public bathroom stalls in Europe are nice, private, fully-enclosed spaces and none in America are. Thanks, OSHA /s

<comment><USER23> With the downside that cleaning them is a bit more difficult (and expensive), since you have to pay more attention to the (lower) end of the partitions, as a cleaner. More effort, or possibly even another OSHA violation because the cleaners would have to bend more (but I'm sure they can use a mop on the sides too, or something). There's also the matter of time spent cleaning.

</comment></comment><comment><USER24> I have always wondered why US toilet cubicles are so "gappy". In most of the UK offices I have ever worked in, in the cubicle the toilet door is floor to ceiling and closes completely - like being in your own mini-room with a toilet in.

</comment><comment><USER25> I spent some time last year working out a We Work office in NY and I will say one of the best things they did was create nice private bathrooms. Each stall was a small private room in itself, similar to some airport lounges.

</comment><comment><USER26> At my current work, we have a completely separate bathroom with a shower - <USER2> addition to "normal" bathrooms with a urinal and a stall toilet.

It's wonderful actually.

At Facebook there was one bathroom on the second floor of building 15 with a shower as well. That was the best bathroom I found there.

It's great to have a nice bathroom and full privacy, it just makes it more comfortable.

At sales force at fifty Fremont there is a guest bathroom adjacent to the main reception on 36 that is individual and private - best restroom in that building.

</comment><comment><USER27> I'm reminded of a gym I frequent, with blasting music out on the weightroom floor. Of course it is pin-drop quiet in the toilet area. :/

</comment><comment><USER5> Another tip: get rid of those stupid Dyson hand dryers. They're unsanitary and don't work.

<comment><USER28> hate those so much.</comment></comment>


What does a successful YC application look like? - <AUTHOR> I am really thinking hard about applying for this round. I'm curious though, what do the applications of successfully funded YC companies look like? <comment><USER2> Even if people were willing to post their successful applications, I don't thing pg would approve. That would encourage copying the successful-looking applications and gaming the system.

But generally, he's looking for people who are smart, very determined, and like to make things.

<comment><USER3> "Even if people were willing to post their successful applications, I don't thing pg would approve."

Would PG approve posting a few UNsuccessful applications of different level -- from amusing, to boring, to pretty close? -- guess people like to see those just as much, I sure do, and am not merely joking here.

<comment><USER4> Why would an unsuccessful applicant care about pg's approval? Won't s/he just post it anywhere on the web if s/he so chooses? Why would even pg care?

</comment></comment></comment><comment><USER5> PG of talks about what a successful application looks like.Just read his stuff.

You basically have to prove that you are a great hacker and have a demo, ready to go.

</comment><comment><USER6> IMHO, this is not a college application. The biggest barrier is not "getting in". Your CV will not be improved by a failed attempt to start a company for 15k. If you are serious about offering the product of your work to the world, the application for ycombinator should not be intimidating and should be the least of your worries. Quit "thinking hard" and attack that application.

</comment><comment><USER7> A lot of YC alumni are willing to talk about this. I emailed one person to ask him about an earlier application draft, and he helped me fix things up a lot.

The things that would come to mind (though mind you, I'm only an applicant at this point as well):

* Stand out * Show you know what you're doing * Focus on what's important * Be confident in your idea and your people

</comment><comment><USER8> We got interviewed last time. Our application was pretty durned long. I don't know how they read it. They must skim them for the most part, focusing on the things most important to them and looking for raised red flags.

I do know very much that the tone has changed a bit in the interview (or did last time). They will ask a good bit about monetization. So your application will get extra points if you can show very clearly how you eventually plan to turn this into a concrete business.

<comment><USER9> do the interviews occur prior to application cut off date or after ?

</comment></comment><comment><USER10> I am not PG, but just from the top of my head, I think the application should at least show that:

\- You understand what you're building, who needs it and why

\- You care about this project (incl. that you have already started working on it)

\- You are the kind of team who can pull this off (realistic, committed, hackerish)

</comment><comment><USER11> Best you can do (imho) - Take a look at the existing YC companies, their idea, implementation and the team.

That's what YC is looking for; so the application just needs to be representative of that.

</comment><comment><USER12> You should make the questions look easy.</comment>


Show HN: Initial.js – Gmail like text avatars - <AUTHOR> http://judelicio.us/initial.js/

<comment><USER2> Just an idea. You could assign colors automatically if you used something like [https://github.com/nluqo/autumn](https://github.com/nluqo/autumn) . Found that on [https://news.ycombinator.com/item?id=7824684](https://news.ycombinator.com/item?id=7824684) today.</comment>


Ask HN: How are you reducing your dependency of Google related 'stuff'? - <AUTHOR> Since Google removed the "do no evil" motto from its practices, I've wondering how I could avoid perpetuating my presence on this platform, whether alternatives exist and so on. Share your thoughts. <comment><USER3> I'm gonna play the devil's advocate here:

They say that people think they're smarter than they actually are. Similarly, I think most privacy advocators think their data is more important than it actually is.

This is not to say that ditching Google is wrong; all I'm saying is you better start asking yourself "why do I not want Google to know more about me?". Unless the answer is something along the lines of "because I'm the CEO of a huge conglomerate" or "because my product is competing with one of Google's product", you're fine.

</comment><comment><AUTHOR> Steps:

1\. remove your Picasa pictures at picasa.google.com

2\. since the GDrive search will not help you searching for file sizes, you'll need to install a third-party tool, I suggest WinDirStat ([https://windirstat.net/](https://windirstat.net/))

2.1. discover the files in GDrive folder with the most size and delete the ones you'll never actually going to need (be truthful to yourself here - <USER2> you never open a 1GB in the past 5 years, why do you think you'll open it in the next 5 years?

3\. Empty trash on GDrive online web application

4\. search in GMail for messages larger than 1MB: "larger:1m" and delete the ones you think don't deserve staying in your folder

5\. Go to GMail's trash bin and exclude them as well

6\. Remove Google Chrome and install another browser, Firefox for instance, with all the needed plugins (uBlock, privacy stuff, etc)

7\. Throw your Google Nest in a drawer away from you (now you won't be continuously surveilled)

8\. End your Google Play subscriptions (specially GDrive)

9\. Throw away your Android phone or wrap it with aluminium foil

10\. Use DuckDuckGo as your main search engine (or any other web search you feel like it)

(oh, I just saw how dependent I WAS on Google!)

</comment><comment><USER4> Ditched Google Fi (back on a regular carrier + iOS) and Chrome (firefox), duckduckgo for search.

Still using gmail, drive, and youtube (often on private mode) and hoping that nextDnS + uBlock also shields me from having too complete a profile in Mountain View</comment>


Ask HN: An acceptable cross-platform GUI toolkit? - <AUTHOR> It's interesting but disappointing that there's no standout "winner" among desktop GUI toolkits. Among other things, devs want to write software that runs on their favorite GNU/Linux distribution, but that also runs nicely and is easily installed on MS Windows and Mac OS X. Here are the arguments I hear against some current popular toolkits:
* GTK+ -- Has lots of moving parts. Difficult to build/install on MS Windows. Some say it's too closely tied to X11. Doesn't look enough like MS Windows on MS Windows. The LGPL licensing is very successful though, as demonstrated by the fairly large developer community and by its use in Gnome.
* Qt -- Either GPL your software or pay the licensing fees. Also some don't like having to deal with C++ if you're required to ever look under the hood. Nice that it comes in one big piece though.
* Tk -- Some have referred to Tk as a vistigial GUI appendage from a bygone era. Also it depends upon Tk. This one would be a hard sell to get everyone to agree on.
* wxWidgets -- Complaints are that it looks too much like the MS Windows API, and also that it's too big (being a wrapper around lower-level GUI toolkits).
It would seem that we (the free software community) should just bite the bullet, list out the basic requirements for a successful GUI toolkit, and go ahead and create it. I'd dare say that the requirements might look like this:
* Written in C. C is fast, portable, and everyone knows it. Corollary: keep it simple (like Tk) and packaged in one piece (like Qt). Having a half dozen different pieces all bolted together (like GTK+) in the name of modularity only makes it harder to create easily-distributable cross-platform apps. 2nd corollary: be careful not to tie it too closely to X11.
* Keep it simple so it's easy to port to Windows and Mac OS X (Cocoa). Corollary: simple and easy to build too.
* LGPL licensed. Most camps can probably (at least grudgingly) come to agreement on this, and it's worked pretty well for GTK+. Works for free software and for commercial apps, and tends to build nice communities.
* Can easily be made to look like MS Windows on MS Windows, and Aqua on Mac OS X. I really don't care if it's themable or not, but for wide adoption, it had at least better be able to easily make itself look like MS Windows and Aqua.
* Easy to make bindings for Python, Ruby, Perl, etc. I really do not want to write GUI apps in C, but I don't want it so fancy that you have to do acrobatics to mate, say, Python, to it.
* Simple and easy to use (like Tk).
Anyone working on or know of that cross-platform GUI toolkit? Because that's the one I want to use, and I bet it's the one a lot of devs would also want to use. <comment><USER2> The current Tk (8.5 and above) looks a _lot_ better, using native widgets where possible, and Starkit makes deployment of Tcl/Tk applications a breeze.

Those who forget history are doomed to reimplement it.

<comment><USER3> I think that Tcl and Tk have a terrible "marketing operation" and haven't done a very good job of getting the word out about things like this - it's a huge improvement.

This has some screenshots, which are a bit out of date, but show that things _have_ improved:

<http://tktable.sourceforge.net/tile/>

<comment><AUTHOR> Looking at the Tile screenshots for Unix, I don't see any that are antialiased (like the rest of my desktop), though "Revitalized" doesn't look bad at all.

(Incidentally, Tile doesn't seem very active. It's last News page update is from 2006.)

I think you're right about the "marketing" for Tk. The three things that keep people away from Tk (IMO) are probably:

1\. the notion that they'll have to install or use Tcl,

2\. the extra work of having to install various plug-ins/theme- engines/whatever to get a more modern-looking GUI, and

3\. the revulsion at seeing non-antialiased fonts in GUI widgets.

If someone were to come along and bundle up Tcl/Tk with Tile and make the whole thing dead-easy to install and start using, I think that would be a major step forward for Tk. (Hm. Looks like it may have been proposed to do that back in 2005: <http://www.tcl.tk/cgi-bin/tct/tip/248> . What ever happened to that?)

<comment><AUTHOR> Wait. <http://www.tcl.tk/software/tcltk/8.5.tml> . Most recent release was ... last month.

Looking at that list of Tk highlights, I'm getting the impression that various screenshots and wiki docs on the net are a tad out of date. It would seem that Tile has already been included. Tk 8.5 is looking quite good.

</comment></comment></comment></comment><comment><USER4> I am most curious about GNUstep (gnustep.org). GNUstep is similar to the Window Maker window manager on Linux, like Cocoa uses Aqua on Mac OS X. From what I've seen, GNUstep and Cocoa are very similar (both Objective-C, both using the original NS* classes, etc.) and the project aims to remain compatible with Cocoa where possible. I've used both Window Maker and Aqua, and I like both GUI styles.

Apparently GNUstep is usable on Windows, but I've never tried it.

At least in theory, the same Cocoa-like source could be used for a GUI app on all 3 major platforms.

Objective-C isn't as simple as C, but it's pretty simple, and fully compatible with C. It's also been bound to every major scripting language I can think of.

<comment><USER5> There's also The Cocotron, a Cocoa implementation for Win32 - <http://www.cocotron.org/Info>

</comment></comment><comment><USER6> Please god don't make yet another GUI toolkit. Pick one and start coding.

</comment><comment><USER7> Within the last few years, I've inherited a number of projects written using several of the above choices. While I don't want to appear _too_ negative, IME, apps produced using cross-platform GUI kits look bad on all operating systems.

I'd like to offer a "none of the above", which is to code the underlying "engine" of your app in C++, then connect that engine up to an OS-native GUI.

Just my $0.02.

<comment><USER8> Absolutely agreed. Stop contributing to the horrid usability of each platform by mixing and matching UI paradigms in a vain effort to create something that "fits" all platforms.

Cross-platform UI toolkits are the devil for any serious app - each OS, whether Linux, OS X, or Windows, have their own UI needs and guidelines that _should be respected_.

It's high time that engineers started paying attention to making their software accessible and usable, instead of focusing all their attention on core "features" that nobody can figure out, or want to.

</comment></comment><comment><USER9> If coding in Java is an option, I would highly recommend SWT (<http://www.eclipse.org/swt/>). It's the toolkit that was used to build Eclipse, and it has a _very_ 'native' look & feel (click the link for examples).

Plus, Java itself is cross-platform. Might be just what you're looking for.

<comment><USER10> Java GUI's always seem just a little bit unresponsive, an irritating latency with every small move you make. This is my biggest complaint with eclipse and every other java app I've ever used.

</comment></comment><comment><USER11> Shoes has been more and more impressive lately. I'm not sure about ports or equivalents in Python and Perl, but people are doing great things with it in Ruby.

<http://github.com/why/shoes>

<comment><USER12> I give two thumbs up for Shoes - I'm learning Ruby just so I can use it. However, running through the list of GUI kits the poster has assessed, Shoes differs significantly in that it incorporates web-style widgets on the desktop. It is much more suited to graphical applications and games than native desktop software.

Two thumbs down for wxWidgets. I used the wxPython port to prototype a not- too-complex desktop application, and found it tediously cumbersome (not to mention ugly). I would've been better off coding it natively in Obj-C and then porting it down the track.

</comment></comment><comment><USER13> wxWidgets is "big" because it has features. Considering it meets all your other criteria (aka features), in addition to ones you'll only find out you need halfway through a project, I would look closer at it. Use wxGlade and wxPython if you want easy, C++ if you demand compiled. Use dabo (<http://www.dabodev.com>) if you are interfacing with databases.

<comment><USER14> I have been using wxWidgets for about 5 years now with C++. At first, it was really difficult to do everything in code, hard to change GUI when you need to, very time consuming. But still it was the best option, our project was cross platform. It was also difficult to understand how to build and link.

However, once you get the basics it's quite fast and also have threads, networking, file streaming etc, so you don't need a zillion of libraries to do every little thing. Oh, and it has a great OpenGL support (see my projects at <http://www.ccsoft.com.tr> for screenshots)

With the help of wxFormBuilder (a free design tool), now design and modfications are very much faster.

Besides, it's been there for about 15 years. There is a decent documentation, a book, a large community to answer your questions.

My only plan is to do a project on wxPython and polish my python knowledge and see which (C++ or Python) suits me better.

</comment></comment><comment><USER15> Yeah it has always bothered me that GUIs are so annoyingly hard to make. I used to use Python a lot and Tk wasn't exactly a dream to work with even if something very basic was easy to get up and going.

However now I use Swing+miglayout+CLojure and making GUIs is supereasy.

</comment><comment><USER16> You forgot Swing+Java/Jython/JRuby/Groovy/Clojure.

<comment><USER2> How I wish I could forget Swing.

<comment><USER17> There are some amazing apps built with swing...JetBrains IDEA and jEdit being two.

<comment><USER2> Interesting to note that two "amazing" apps written with Java are to help Java programmers ...

<comment><USER18> Why is that interesting? Emacs uses a lisp; does that mean anything about emacs or lisp? (Edit: I'm being serious, I guess I don't see why Java being used to write Java editors is a big deal.)

</comment></comment></comment></comment></comment><comment><USER19> If you're really picky about the look-and-feel on each platform, just bite the bullet and write 3 front-ends.

If you want something that looks reasonably good on major platforms, go with Qt or wx.

There are a couple more options you have:

XULRunner: I like this option because of the flexibility you get in creating UIs using markup and styles. You can get XULRunner built with Python support so you don't have to resort to C++. And you get a reasonably powerful rendering engine to boot.

Adobe Air: Never used this so I can't say anything for sure but from what I've heard, its similar to XULRunner but uses WebKit and a lot of Flash. It is, however, proprietary.

And,

If you're going to do a new UI toolkit, great. Just make sure you know a) why wxWidgets didn't accomplish this for you b) How you plan on addressing those shortcomings.

I believe wxWidgets was supposed to address the issue you raised about giving the native look and feel on each platform independently. It uses GTK on Linux and Win32 on Windows. No idea about how it works on OS X but I assumed it would use Cocoa\Aqua\whatever. Is that not the case?

<comment><USER20> Yes, it is, wxWidgets is just a wrapper over the native libs.

</comment></comment><comment><USER21> YelloSoft <http://yellosoft.us/>

I complain about the very same thing. There hasn't been a lot of development effort for building anything cross-platform. Out of fifty LISP implementations I looked at, only a few were cross-compatible. Hardly any computer games are multiplatform. I build my own software and release it on Mac, Linux, and Windows whenever possible. It's been really easy starting with a common code base (C/C++/Java/whatever) and creating the GUI using native tools: Xcode, Visual Studio, Glade. The GUIs end up looking good, are easy to make (if a little more trouble to sync between the OSs), and I don't have to spend hours scouring the 'Net for information on GUIs across several operating systems. It's becoming alarmingly common for Google to return no search results about some computing topics and programming errors. If I can't Google it, I can't fix it.

One of my biggest problems has been incomplete programming language support. Why should I learn wxWidgets if wxRuby is half-done? The documentation for RubyCocoa is even less substantial. I can't begin coding unless I understand a minimum of how the various GUI objects interact. I finally understand all those dumb underscores in RubyCocoa methods. Objective C is odd, but consistent.

Something like a Swing but C based would be nice, but it's a lot of trouble to wrap native methods (menubars, system trays, pop-ups, etc.) and not that rewarding. It's easier to extend a codebase using native tools for the interface.

Proof of concept: IOS7Crypt <http://yellosoft.us/index.php?id=55>

This app has a ridiculous amount of ports in assorted languages and toolkits. I've done it with Perl, Python, Java, Lua, Ruby, C, C++, and Objective C; on Tkinter, wxWidgets, Gtk, Qt, Glade, Cocoa, Windows forms, Swing, and HTML/Rails. Ultimately, I just use the command line interface and simple Mac/Windows/Linux GUIs. The screenshots are Cocoa, because it naturally looks the best!

newLISP version coming soon.

<comment><AUTHOR> Have you tried Tk8.5? It looks like there have been some pretty substantial improvements since 8.4.

</comment></comment><comment><USER20> I'm quite surprised to see that nobody has mentioned fltk (<http://fltk.org>). It is light, easy to use, and it uses a modified gpl license that allows linking against non-free code. And it has native look and feel too...

<comment><AUTHOR> IIRC, FLTK had their 2.0 version in the works a long time ago ... and it just kept being in the works. They just never left their 1.x series. Was their redesign doomed to never replace 1.x?

</comment></comment><comment><USER22> That should be obvious: cross-platform GUI toolkits are so hard that there isn't any that you like. It takes a good design or lots of people working on it full-time. So either you pay for Qt or deal with other problems. That's one reason that web programming has become so popular.

There seems to be another factor if you add OS-X to the required platforms: the way of GUI programming for Macs is conceptually different from Windows or Linux.

</comment><comment><USER23> Really? No one has mentioned the most popular, polished, cross platform application that's also a complete development environment: Firefox.

<comment><AUTHOR> The rule I try to follow is to keep things as simple as you can. So, the levels of complexity for writing an app might look like this:

Level 1: command line program. Usable for yourself and others who know their way around the shell. Great for simple tools.

Level 2: Desktop GUI. More complicated, but necessary when you have non- technical users.

Level 3: Webapp with simple browser interface. When you need a GUI _and_ need to allow access to many users all at once (possibly access to the same instance of the app). Drawbacks are that it's slow (much slower than a regular desktop GUI app) and relatively clunky. Also, you need a webserver to run it on, and the setup time that goes along with that. Also keyboard commands probably won't work and so there will be a lot of mousing around for the user.

Level 4: Webapp with some kind of Ajaxy or Javascripty client side. So, you need this even _higher_ level of complexity when you have non-technical users who demand a prettier interface but the app also needs to be usable by lots of people on the net at once. Drawbacks are the same as with a regular webapp but also include a much more complex design, more maintenance, and more testing with different browsers.

The rule is, you don't go up the complexity ladder if you don't have to.

</comment></comment><comment><USER24> Small note about Qt being for C++: There is Qt Jambi which is Qt for Java.

[http://doc.trolltech.com/qtjambi-4.4/html/com/trolltech/qt/q...](http://doc.trolltech.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi- index.html)

<http://dist.trolltech.com/developer/download/webstart/>

</comment><comment><USER25> I have also run into this problem. I have tried at different moments in time Gtk, it's C++ bindings, wxWidgets, Java+AWT/Swing, Qt.

I couldn't agree more that all of them have major drawbacks. We need a good, simple to use, well-designed, fast cross-platform C library.

Do you care to start doing it? Other than doing your own, I think the most sensible choice is wxWidgets, which, from my point of view, only has one big problem: the API (i.e. code doesn't look pretty, bad C++ (no exceptions), and it can take a while to compile).

<comment><AUTHOR> " _Do you care to start doing it?_ "

Unfortunately, I don't think I have the chops, nor the time right now. (But, fortunately, it may not even be necessary... see below.)

" _Other than doing your own, I think the most sensible choice is wxWidgets, which, from my point of view, only has one big problem: the API_ "

That's a biggie. :) In fact, I'd go so far to say that if the API in unpalatable, then you should keep looking. Otherwise you'll end up just procrastinating every time you've got to deal with GUI code.

Thanks to posts in this thread (thanks Baltar!) I'm taking a much closer look at the most recent release of Tk (8.5). Given recent developments, it doesn't seem to be as "vestigial" as I'd thought. And the fact that it's implemented in Tcl instead of C may actually be a hidden benefit. And really, app developers never even need to be aware of the Tcl'ing going on under the covers. :)

</comment></comment><comment><USER26> There's no shortage for GUI frameworks:

[http://www.geocities.com/SiliconValley/Vista/7184/guitool.ht...](http://www.geocities.com/SiliconValley/Vista/7184/guitool.html)

</comment><comment><USER27> How about JUCE - <http://rawmaterialsoftware.com/juce/>

It's for Linux, Mac OS X and Windows.

Nice C++ source base.

</comment><comment><USER28> 'GTK...Doesn't look enough like MS Windows on MS Windows.'

GTK apps for the most part look exactly like other Windows apps [1], and have for the last threeish years. Some, however, still use GTK style File dialog boxes, rather than native Windows ones.

Alas I haven't written any GTK for Windows, so I'm not sure what determines the File dialogs.

[1] Per poster below, I mean Microsoft apps included with Windows XP or Vista

<comment><USER5> "Other Windows apps" is itself vague.

There is an alternative style for Qt which can be configured for ".NET application" or "Microsoft Office" looks, which are not the same as the default "Windows" look which call into the Windows theming engine.

[http://doc.trolltech.com/solutions/4/qtdotnetstyle/qtdotnets...](http://doc.trolltech.com/solutions/4/qtdotnetstyle/qtdotnetstyle.html#details)

</comment></comment><comment><USER29> Where GUI toolkits are concerned, simplicity and C are mutually exclusive, because C just isn't a good language for them.

</comment><comment><USER30> I've worked with Qt. It's great -- C++ and cumbersome build procedure notwithstanding. The API is also nice. Further, it works on embedded platforms too (think cellphones).

There is a PyQt, but the last time I tried it, it wasn't as mature as I wanted it to be. Maybe you can give that a try.

</comment><comment><USER27> Also LispWorks has nice cross-platform GUI called CAPI - <http://www.lispworks.com/products/capi.html>

</comment><comment><USER31> the thing is, GUI is often connected with some messaging system like D-bus or WM_XXX, and that's platform-dependent. And also API for C/C++ is so different. Some may relate to performance demanding 2D even 3D features. The expansion list goes on and on.

The true thing we need is a minimal & native implementation of cross-platform GUI kits.

</comment><comment><USER32> wxWidgets or QT either in python or c++ are fine. SWT with jython Flash?

</comment><comment><USER33> use xul + xpcom

(powers firefox, songbird, miro, thunderbird, activestate commodo ....)</comment>


Post-mortem of Christmas Eve Amazon ELB outage - <AUTHOR> http://aws.amazon.com/message/680587/

<comment><USER2> The post-mortem is missing important pieces.

1) When was the problem detected? 2) How was the problem detected: automated monitoring, operator vigilance, or customer complaints? 3) When were customers first notified of the outage?

This post-mortem starts out with the root cause, but it is likely that was not known until after the outage had ended, so it's important to know how much time passed between the root cause event and when the on-call engineer(s) started treating the outage as such.

I'd also be interested in hearing about technical measures they will use to prevent this in the future. It sounds like their mitigation measures are all social, not technical. For example, do their configuration tools warn them when they are about the push out a huge delta? Do they have a review process that forces two people to look at the change before it's put into action? Would these have prevented the outage?

Finally, I think it's appalling (but not surprising) that it took many hours to revert their configs. It sounds like the tools they are using are way too slow. Any laptop can do an enormous amount of work in an hour; the computing resources available to Amazon can perform truly insane feats in one minute. Slow configuration tools are easy to write but prolong outages. They should be designed to the same standards as production applications.

<comment><USER3> I think the measures they implement to prevent this failure are adequate. Changing access control patterns so that not a single person but at least two persons must allow the job to run are sufficient as a quick fix. They also mention changing the future architecture to automate such maintenance jobs and to make data recovery faster. So it is indeed a mix of process and technical measures, much as the problem was caused by more of a process problem rather than a technical problem.

Finally I don't think that the computational part of the data recovery is the time intensive one. A laptop may churn through gigabytes and gigabytes a minute, but a developer can't. In this case the more time intensive part is probably figuring out which parts of the data got lost and how to get them back, then writing the tools to automate the process, test that the data fits and then put it safely back in production. I understand that it's annoying, but theres only so many flops a human brain can run.

</comment></comment><comment><USER4> "The data was deleted by a maintenance process that was inadvertently run against the production ELB state data. This process was run by one of a very small number of developers who have access to this production environment."

<comment><USER5> And the developer ought to be fired. He cost me a considerable amount of money since my heroku site with SSL endpoint was down over 12 hours during one if our biggest days of the year. Of course, heroku still (over)bills me those hours for Dynos and Workers.

I course, I am small potatoes compared to Netflix being down (while Amazon instant video wasn't.)

Amazon is populated by jackasses apparently and Heroku isn't much better. Why the f*(k doesn't Heroku have some kind of fall-over or something to protect clients from the inevitable AWS-East failures?

Buh, bye Heroku and AWS. Hello Bluebox. I run other apps on Bluebox and have never had any downtime except for some mild nonsense due to my own damned ignorance. Luckily the Blueboxers saved me from myself. AWS needs to get their shit together.

<comment><USER6> You weren't down because an Amazon engineer fat-fingered a maintenance command, you were down because _you_ chose to put all of your eggs in one basket. The basket you chose failed, and you had no redundancy basket to fail over to. Choosing a new basket to put all your eggs in isn't going to fix anything just because the new basket hasn't failed on you yet.

Make smarter decisions. If being up on December 24 was really that important to you, you'd have had backup hosting in place with the ability to quickly fail over to it. You'll start being a better engineer when you quit blaming some poor bastard's bad luck for your failures and learn the real lesson from your downtime: you fucked up by not having high-availability hosting to meet your claimed high-availability needs.

The worst thing Amazon could do is fire this guy. They've just paid a lot of money to have him learn from his mistake. They'd be fools to throw that hard- earned experience away.

<comment><USER7> Interestingly enough a similar article on the front page scapegoated Windows Azure.

People can't own up to the fact that customers don't really care if it's Amazon AWS or Heroku or some other platform that failed -- if your service is down, its your fault!

<comment><USER6> > People can't own up to the fact that customers don't really care if it's > Amazon AWS or Heroku or some other platform that failed -- if your service > is down, its your fault!

I don't, necessarily, have a problem with saying, without animosity, "we're down because our hosting provider is down". For many small businesses, being down when your hosting provider is down is an acceptable tradeoff -- your business simply isn't critical enough for it to be worth the costs of maintaining fail-over redundancy in case of primary hosting loss.

That's totally fine. Most people probably don't want to pay the higher cost of having every service they use having the ability to survive their main host going down. A couple 9s of uptime is more than enough for the vast majority of businesses.

What I have a problem is with people who were behaving as though they were fine with that tradeoff screaming about how they needed to be up when it comes time to pay in a little downtime for those cheaper hosting costs. Grow up and accept the tradeoffs you choose to make.

<comment><USER7> "people who were behaving as though they were fine with that tradeoff"

I'm not sure who is to blame at this point -- is it the fault of the individual for not understanding uptime? is it the fault of the service for not articulating clearly what it means? Is it the fault of the industry for inculcating an unjustified sense of entitlement?

<comment><USER6> > I'm not sure who is to blame at this point -- is it the fault of the > individual for not understanding uptime? is it the fault of the service for > not articulating clearly what it means? Is it the fault of the industry for > inculcating an unjustified sense of entitlement?

I'm inclined to lean towards the third option. It ought to be obvious that there is no such thing as a perfect host, that in the limit your probability of being down at some point goes to 100% as your time hosted with a company increases.

There's just a lot of entitlement and sloppy thinking out there. People believe that their $30 a month hosting ought to be magically invulnerable in ways it by the simple laws of physics cannot be. If you didn't explicitly choose to have multiple geographically separate hosts with a fail-over plan between them, then you were at the very least implicitly accepting that you were going to be down some of the time when (not if) your only host goes down. That's a fine and ok thing to choose, but I don't think you get to be mad at your host because you didn't clue in to the choice you were making.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Good work from Amazon putting together the post-mortem. Whether you agree or not with their remediation plans, they hit the important parts of a public post-mortem very well:

1\. Demonstrate understanding of the event.

2\. Communicate what steps are being taken to reduce the likelihood a similar event in the future.

3\. Apologize.

Not necessarily in that order. Well done.

</comment><comment><USER9> Want to learn great infrastructure management tips? Read and digest these post-mortems.... Regardless of who the provider is.

There is always one takeaway from these that I can use to better my own infrastructure management activities - even when most of my infrastructure runs on AWS. :)

<comment><USER10> Wouldn't it be a better idea to learn from a provider that isn't constantly screwing things up? Amazon's systems clearly aren't working reliably.

If Amazon can have an issue of this severity in ELB, one of their core core services, during peak traffic season for their #1 highest profile customer, every one of their services should be viewed with suspicion and you really need to have non-amazon backup systems in place in case they have an incident that affects you. Yes it is painful to leave the comfortable aws womb, but it's time to grow up and start either managing multiple infrastructure providers or build your own.

<comment><USER11> Or make a calculated cost/risk assessment, and act accordingly.

</comment></comment></comment><comment><USER12> As usual, their summaries leave me with more questions than answers.

A maintenance process whose purpose in life is to delete data from ELB backend database (if it were not the case, you'd see "maint process didn't work right") in such a weird way that it would cause such chaos? Why on earth would such a maint process exist in the first place? I can imagine some possibilities here of course but it feels to me there is more to it than what they've chosen to disclose.

Next. So they lose config data but data path for now not impacted. Fine, makes sense. But then backend, with only partial data, attempts to reconfig running LBs, doesn't fail completely (as in it was able to connect and do at least something but not all actions it was supposed to do) thus forcing otherwise good but impaired LBs into a completely bad state. Sunds suspicious to me.

And then the biggest question - why did they choose to attempt to restore entire backend database when only 6.8% of LBs were impacted?

I also have no idea how a CM process can protect against making a mistake - mistakes happen when somebody is at the controls with or without prior coordination.

All in all, their backend systems are so sophisticated and precisely engineered that any unforeseen/unexpected abnormality caused by manual intervention (be it inadvertent run of a maint script or fat fingered traffic re-routing from primary to backup network) inevitably lead to overwhelming reaction of their automation that makes the problem even worse and extremely hard to recover from.

Very tough position to be in - during these outages, they are essentially fighting the skynet that they themselves created and at their scale there is no way around it.

So hats off to those who've been working on this and good luck taming the beast.

</comment><comment><USER13> It's amazing that the team worked through what is likely the least fun night of the year to be working to fix this issue.

<comment><AUTHOR> I wonder who gets stuck working those shifts -- would it just be following the normal schedule, in the name of fairness? Do more senior people get to claim the day of vacation? Do parents get priority over single people?

<comment><USER14> Most teams I've seen have at least one person willing to bite the bullet voluntarily. Perhaps they don't celebrate Christmas, or they want to do a favor to their team, or they'd prefer to take vacation at a different time. I have volunteered to be on call during Christmas in the past specifically because it is Christmas: other than rare events like this, it's the quietest time of the year. I get a relaxed week of work while everyone else is out, and can then use my vacation on a normal workweek instead. Some managers also give makeup vacation time for people who go on call during the holidays.

<comment><USER15> Yeah, I've volunteered for such shifts before. Usually there's some "unofficial" extra compensation, extra time off or something similar.

</comment></comment></comment></comment><comment><USER16> Thanks to AWS for the full disclosure here... I always jump at the chance to read the post-mortems. However, I don't understand why this took Netflix down. This affected ELB only in us-east-1, but surely Netflix is multi-region, at least for their frontend?

</comment><comment><USER5> 12:24 on 12/24. Interesting coincidence. What are the odds?

<comment><USER17> Just as likely as 12:25 on 12/24.

<comment><USER18> Though technically correct, this (seemingly) common response to highlighted dates belies the fact that no, 12:24 12/24 is in fact more rare than an arbitrary other minute because of the pattern in it's configuration.

Sometimes pedantry gets in the way of appreciating something as small as this.

<comment><USER19> There are any number of ways a number could be considered "special". It could be prime, it could have no repeated digits, it could have sequential digits, it could be a friendly number, it could be a palindrome, it could be a perfect number, ... I could go on...

Eventually the numbers with nothing "special" about them begin to appear the minority: <http://www2.stetson.edu/~efriedma/numbers.html></comment></comment></comment></comment>


Widespread XSS Vulnerabilities in Ad Network Code - <AUTHOR> http://randywestergren.com/widespread-xss-vulnerabilities-ad-network-code-affecting-top-tier-publishers-retailers/ <comment><USER2> We conducted a similar experiment on the top 1000 websites and found 820 unique DOM-Based XSS vulnerabilities in these sites! You can find out more about our techniques in our paper here [http://www.comp.nus.edu.sg/~enricob/2015/fse15-main.pdf](http://www.comp.nus.edu.sg/~enricob/2015/fse15-main.pdf)

<comment><USER3> So basically the top 1000 (alexa?) is completely broken and insecure?

<comment><USER2> yup pretty much. We managed to report and fix some bugs though. But it is pretty hard to get the point of contact person for some websites.

<comment><USER4> Do tools like ublock and adblock protect end users?

</comment></comment></comment></comment><comment><USER5> Douglas Crockford warned[1] us many years ago that mixing Javascript from multiple sources was fundamentally unsafe. The security model of the Javascript and the DOM was never designed for isolation within a page. If you're including Javascript from a foreign domain in the page, you're giving them access to any data in the page (and allowing stuff like this XSS problem). In most cases, this is irresponsible.

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

(re: Google Gears stuff in that talk - remember when the talk was given)

</comment><comment><USER6> More requests to more code by more parties inherently increases attack surface area.

As a user why should I allow this for something that provides me no value (ads, tracking, js comment systems that I dont care about etc).

I can see why some people use noscript religiously and whitelist when needed

<comment><USER7> What I am missing in NoScript is ability to allow 3rd party scripts (say "google.com") but _just for this domain_. If I allow facebook.com, I want it whitelisted only on its own domain, not elsewhere.

<comment><USER8> You should try augmenting NoScript with RequestPolicy.

<comment><USER7> Thanks, looks awesome! I'll try it out...

</comment></comment></comment></comment><comment><USER9> Is there anything that could fix this? Off the top of my head, browsers could encode the results of any functions that get the URL. But after encoding/decoding requests/responses and unknown server logic, the encoding may be removed.

<comment><USER10> If you do ad placements with iframes, that can mitigate some vectors, but then it is very hard to have full screen takeovers or many other hideous things that seem to make advertisers happy.

<comment><USER11> html5-sandbox or iframe will have you terminated from adsense, at least. don't know about the others.

<comment><USER12> > html5-sandbox or iframe will have you terminated from adsense, at least. > don't know about the others.

Really? what's the justification for that policy? You'd think ad networks would want ads to be safe for users.

<comment><USER13> Probably cross-domain abuse. I'd imagine there's a few edge cases that result in behavior Google doesn't want for ads. For example, double serving, accidental clicks, ad obscuring, etc.

Their FAQ does mention that they'll grant exceptions though.

</comment></comment></comment></comment></comment><comment><USER14> won't affect Yahoo.com, even they show ads from that network, because it is one of the few publishers using [http://www.iab.com/guidelines/safeframe/](http://www.iab.com/guidelines/safeframe/)

</comment><comment><USER15> Unfortunately - this is because the ad industry has way too many vendors (almost 0 effort required to get some shady network off the ground trafficking in bad ads) with sloppy code and bad tech.

Similar to many other industries that operate without many standards or QA/enforcement.

</comment><comment><USER16> As if I needed another reason to block javascript and advertising.</comment>


Intel Architecture Code Analyzer - <AUTHOR> https://software.intel.com/en-us/articles/intel-architecture-code-analyzer/

<comment><USER2> Here's an example of the output of IACA: [https://gist.github.com/nkurz/0bea9db0cff60ead1686#file- broa...](https://gist.github.com/nkurz/0bea9db0cff60ead1686#file-broadcast- c-L259)

It's somewhat cumbersome to use since you need to recompile with special asm instructions delimiting the region of interest, but the extensive analysis it gives is amazing for extreme micro-optimization.

</comment><comment><USER3> The whole Intel Compiler stack is really useful from MKL for math, to VTune, to TBB if you're doing any heavy numerical analysis. It runs about as much as Visual Studio for the professional edition (under a $1k US) which is more than reasonable for what you get. We use Coverity for static analysis, Kcachegrind and ICC in concert in C++ and it's a brilliant stack. Intel PIN(1) is free for everyone and is amazing too. There are a lot of open-source dynamic analysis tools coming out from unis (the UC's, Pitt, CMU in particular which are almost there but not quite).

(1) [https://software.intel.com/en-us/articles/pin-a-dynamic- bina...](https://software.intel.com/en-us/articles/pin-a-dynamic-binary- instrumentation-tool)

</comment><comment><USER4> IACA is a very useful tool. When working on the LLVM compiler I've used it extensively.

</comment><comment><AUTHOR> I _almost_ put (2012) in the title since it's shown on the page, but the article and docs/binaries were updated in 2013, 2014, and possibly this year.

<comment><USER5> Thanks! We reverted our (2012) addition.

</comment></comment><comment><USER6> I spent about an hour looking at the tool. They say that only very few instructions aren't supported (and thus ignored by the tool) but a very popular imul instruction can be ignored.

PS I noticed that gcc with -march=corei7-avx generates more cycles compared to a generic amd64 compilation for an unrolled integer(4) to char[4] conversion.</comment>


Tesla car catches fire in California traffic - <AUTHOR> https://www.rt.com/usa/430014-tesla-car-fire-california/ <comment> King-Aaron It should be noted that cars catch on fire spontaneously _all the time_.

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

<comment><USER3> Not the Chevy Bolt. A Chevy Volt caught fire once in 2011 and GM changed the way they manufacture their batteries. It hasn't happened since.

<comment><USER4> It's a little more complicated than that. Since an ICE engine catches on fire so often (every 3 minutes, so 175,000 per year!) no one reports it. You cannot find it by searching google. You don't get meaningful results for "corvette fires" but they are happening. But teslas are almost always news. bolts aren't quite as important as teslas in terms of getting news. But it is interesting that there are not that many reports. Also, Volts (not bolts) should probably catch on fire as frequently as regular gas cars but I didn't find results online about that.

So in summary, (1) teslas are the hype car so issues get reported, (2) bolts have few reports, but they aren't quite the same hype car, but it is a good sign for bolts. (3) ice car fires don't get reported because they are so common. So it's hard to draw conclusions but I will offer that Bolts aren't terrible when it comes to fires because they'd probably get more reports.

</comment></comment></comment><comment><USER5> Russia Today is propaganda. You couldnt find an article from a legitimate news organization?

<comment><USER6> You could also say the BBC is British propaganda.

Not every article is political.

<comment><USER5> Russia is hostile to western democracies and is actively attacking them. We should shun them and anything that comes from their country - <USER2> media.

<comment><USER6> With that logic we should also shun the New York Times and the Washington Post. They both have cased huge damage to the United States and other western democracies.

<comment><USER5> Please list specific examples, and I'll explain the difference.

<comment><USER6> Lead up to Iraq war for example.

The only difference between media like RT and for example the NYT is that RT is directly controlled by the state while the NYT is played like a puppet.

The blatant way RT is influenced is not acceptable in the Unites States however that does not mean the NYT and others are not used for propaganda.

Just think about it from the other side. If you were at the white house or working at the CIA and you needed to push your agenda (what ever that might be). How would you influence the media? What would prevent you from having some of your agents actually work a media outlet, or even for you to pay journalists directly? Or leak via trusted sources that the media loves to use? The media has a strong fear of missing out, how can you exploit that?

<comment><USER5> Russia uses fake American social media profiles to astroturf every website with a comment box with extremist propaganda.

See how that's different than a private news organization being a little too obsequious?</comment></comment></comment></comment></comment></comment></comment>


Start-ups shouldn't try to be unicorns–they should be zebras - <AUTHOR> https://qz.com/933681/start-ups-shouldnt-try-to-be-unicorns-they-should-be-zebras/ <comment><USER2> Zebra is a great metaphor for the type of companies investors should be funding. What we continue to forget is that technology is supported to help build better societies and communities, and not the other way around, where we continue to get more dependent on it (even addicted to it). Look everywhere people are checking every 5 minutes to see what's on social media. People are more than happy to see and contribute on videos of cats and other meaningless junk, but not on meaningful literature.</comment>


Tucker Carlson claims New York Times wants to expose where he lives - <AUTHOR> https://www.yahoo.com/entertainment/tucker-carlson-claims-new-york-times-wants-to-injure-his-family-by-exposing-where-he-lives-081233835.html <comment><AUTHOR> While I'm sure this will be buried instantly, this is in its core the exact same story as with the SSC guy.</comment>


Announcing ReDonate: Recurring contributions done right. - <AUTHOR> http://joepie91.wordpress.com/2013/03/03/announcing-redonate-recurring-contributions-done-right/

<comment><USER2> Doesn't look that good, could be scamming. Be warned!

<comment><AUTHOR> Uhm, how would I be scamming anyone? ReDonate doesn't process any payments...

<comment><USER3> Clearly you're scamming suckers into being better people and giving to society. I commend you, you monster.</comment></comment></comment>


Artificial Life on the Horizon - <AUTHOR> http://singularityhub.com/2009/06/24/artificial-life-on-the-horizon/

<comment><USER2> question: given the current state of machine learning and artificial life research, should we expect the first AI to be silicon or carbon based? both?

<comment><USER3> According to popularist Ray Kurzweil, Silicon. According to others who play with DNA sequencers (hacking Ecoli bacteria etc.) .. carbon.

Some people believe its not possible to make silicon AI. Others do (memristor development, blue brain project etc.)

Let's see what will happen :)

</comment></comment><comment><USER4> Does anybody else find it scary that this article seems to indicate we think we can "reverse global warming, solve the world's energy crisis, and pave the way for breakthrough antibiotics and vaccines… all in one fell swoop."?

Sure, that potential is there, but let's be honest, the greater danger is that we screw things up royally.

<comment><USER3> ACK, scary .. probably just wanted to get attention.

\- Reverse global warming Would be very difficult, take 100k's of years

\- World energy crisis? Heh, fusion again?

\- Antibiotics Hm, recently Quorum Sensing between bacteria seems to be an interesting break-through of Anti-biotics research.</comment></comment>


On FPGAs as PC Coprocessors (1996) - <AUTHOR> http://www.fpgacpu.org/usenet/fpgas_as_pc_coprocessors.html <comment><USER2> Something I've often dreamed about is an fpga board in pcie card form with a sane toolset along side it so I can treat it as software instead of getting advanced degrees in desktop cable management and I/O pin mapping. Does something like that exist?

<comment><USER3> What you're describing is OpenCL, yes it exists, both Xilinx and Intel produce toolsets. No they aren't sane by software standards, but they're fantastic compared to hardware engineering. A card will cost you ~$10k for something you'd actually get acceleration from ([https://www.xilinx.com/products/boards- and-kits/alveo/u250.h...](https://www.xilinx.com/products/boards-and- kits/alveo/u250.html)) and you'll still need a degree in electronic engineering to produce something that convincingly accelerates your task.

<comment><USER4> Most FPGAs that are viable accellerators aren't for hobbyists but they also are not as expensive as you think. I can't find it anymore but I once saw an online shop with a huge variety of 500k+ LUT FPGA modules (just the chip itself on a small PCB) for around 1000€ + 500€ breakoutboard/mainboard. At those prices it makes more sense as an individual to invest into more CPU cores or a GPU (if your problem maps to it).

Edit: Maybe its this one here. [https://shop.trenz- electronic.de/de/TE0808-04-06EG-1EE-Ultra...](https://shop.trenz- electronic.de/de/TE0808-04-06EG-1EE-UltraSOM-MPSoC-Modul-mit-Zynq-UltraScale- XCZU6EG-1FFVC900E-4-GB-DDR4?c=449)

<comment><USER5> How much time would it take to synthesize 500K-lut design on a high-end workstation?

<comment><USER6> wait, we have an FPGA-based hardware module to accelerate synthetization!

(or even more ironic: an ASIC module)

</comment></comment></comment></comment></comment><comment><USER7> I'd think it would be cool to have an FPGA in my PC for various kinds of emulation. If I want to play some old games I can use it for accurate emulation (like the MiSTer project[1]) or if I'm in a DAW and want to produce audio from some old synthesizer I can do that on the FPGA to get a more authentic sound. Likely niche but I'd be all over it.

[1] [https://github.com/MiSTer- devel/Main_MiSTer/wiki](https://github.com/MiSTer-devel/Main_MiSTer/wiki)

</comment><comment><USER8> Probably a stupid question: Instead of 6 core or 8 core CPUs, why Intel doesn't make 4 traditional cores + 2 FPGA cores on same die?

<comment><USER3> It's a good question: the answer is that they have done this. (or atleast they are doing this) [https://www.nextplatform.com/2018/05/24/a-peek-inside- that-i...](https://www.nextplatform.com/2018/05/24/a-peek-inside-that-intel- xeon-fpga-hybrid-chip/)

What's proving to be a problem though is where does this fit? If you don't have a clear need for an FPGA then just buy a normal Xeon. If you do need an FPGA then why compromise your Xeon? Have an FPGA card, or hell a group of FPGA cards.

The only place this makes sense is if you can think of a use case where you have an FPGA task that needs low latency communication with your CPU. Even with this chip though you have an uphill struggle because the cache hierarchy of a Xeon makes access to memory non-deterministic which traditionally isn't what FPGAs are designed for. It's much more difficult to design your algorithm on FPGA to deal with arbitrary memory latency.

So the question back to you is: What would you use it for?

<comment><USER9> The TI AM335x CPU has something (sort of) like this...basically 2 microcontrollers that share memory with the ARM cpus.

People have done some pretty clever things with it. Audio processing, driving LED matrix boards, emulating old video boards, driving precision servos, software oscopes and logic analyzers, etc.

Though that's in a small dev board, like the Beaglebone Black, not a beefy Intel server.

</comment></comment></comment><comment><USER10> Kinda sorta related: Novena, since it has a on-board FPGA: [https://kosagi.com/w/index.php?title=Novena_Main_Page](https://kosagi.com/w/index.php?title=Novena_Main_Page)

</comment><comment> 08-15 The article seems to say FPGA on a high latency bus can only accelerate workload that are streamed via DMA, and implies that a general purpose accelerator has to be closer to the CPU. Sounds like a coprocessor, like putting an FPGA into the slot where the 8087 used to be.

That made me think, why not get even closer? Why not have an FPGA as execution unit? Modern CPUs have multiple ALUs, multiple FPUs, multiple vector units. Wouldn't it be great if an FPGA was added to that, such that the instruction set becomes extensible?

The idea is too obvious to assume nobody ever thought of it. Why isn't it done?

<comment><USER11> It has been researched: Alessandro Forin's eMIPS research project was on integrating FPGA fabric as an execution unit.

Project page: [https://www.microsoft.com/en- us/research/project/emips/](https://www.microsoft.com/en- us/research/project/emips/)

Research paper: [https://www.microsoft.com/en-us/research/wp- content/uploads/...](https://www.microsoft.com/en-us/research/wp- content/uploads/2016/02/emips-emipsreport1.pdf)

Back then Moore's Law was still going full steam so there wasn't much interest but, who knows, maybe that will change in a few years.

</comment></comment><comment><USER12> >So as long as FPGAs are attached on relatively glacially slow I/O buses \-- including 32-bit 33 MHz PCI

GPUs are on the PCI bus, aren't they? Has something changed in the last two decades to increase bandwidth?

<comment><USER13> GPUs worked well because you could transfer all your large art assets upfront and then only communicate your mesh and shader logic as the game ran. They don't work so well if you need frequent access to system memory.

<comment><USER4> They also do not have to send the result back to the CPU because they have a video output directly attached to them.

</comment></comment></comment><comment><USER14> the Netezza shared nothing database appliance used FGPAs as helper cards on each of the x86 data blade servers. A little more about it worked here (and via The DuckDuckGo.)

[https://www.slideshare.net/classicboyir/netezza-pure- data](https://www.slideshare.net/classicboyir/netezza-pure-data)</comment>


Irony: Apple shuts China stores to protect employees, while iPhone makers die - <AUTHOR> http://www.extremetech.com/computing/113765-irony-apple-shuts-china-stores-to-protect-employees-while-iphone-factory-workers-continue-to-commit-suicide

<comment><USER2> Irony: guy uses "Chinaman" term in his article.</comment>


Using Communicating Sequential Processes as Front-End App Architecture - <AUTHOR> http://lucasmreis.github.io/blog/using-csp-as-application-architecture/ <comment><USER2> Super cool! After finding Clojure I have been missing CSP in JS.

If someone reads this article, and finds it interesting, I can recommend you to try it out in Clojurescript. Doing concurrency with CSP in combination with the immutable data structures in Clojurescript is actually cool. It allows you freedoms in your programming that I did not even think possible before. With it, a mediocre programmer like me (although trying my best to always learn) can be productive, and make things that otherwise would require a team.

And it still runs faster than React (with Reagent for UI).

If you are curious, try out coding front ends with

* Figwheel * Reagent * core.async

Happy hacking :)

<comment><AUTHOR> Thanks for the compliment! :)

I agree that Clojure and Clojurescript are superior languages than Javascript. In fact, I had my first contact with CSP through those languages.

I like the React wrappers more than React itself, but I prefer Quiescent than Reagent, because I can use the framework described in the post.</comment></comment>