News for hackers. Stuff that matters.

sah

Re:Appium: Drive iOS Apps from Any Test Framework on Wednesday February 06, 2013 @04:02PM (#5178802)
Cucumber does indeed work. We just added an example: https://github.com/appium/appium/tree/master/sample-code/exa...
Re:Goodbye, CouchDB on Thursday May 10, 2012 @05:27PM (#3956150)
The quoted statement was hyperbole. I followed it with as much nuance as I felt it made sense to get into in the broader context of the article.
Re:Goodbye, CouchDB on Thursday May 10, 2012 @04:33PM (#3955858)
"If you don't like it, it must be because you haven't taken the time to understand it" is cognitive poison. What evidence will convince you that someone has understood well enough to judge that something doesn't make sense?

I've spent many years using schemas, and I know well how they work and what they achieve. I'm saying they're a lousy tradeoff.

Re:Goodbye, CouchDB on Thursday May 10, 2012 @03:06PM (#3955324)
I didn't say anything about domain-specificity.

My primary point was just that SQL is old, and I think the reason it is the way it is has more to do with history and compatibility than what we'd want it to look like if we started from scratch today.

SQL is still around because it was successful. And there are reasons to value compatibility, and to avoid changing things for no reason. But my personal experience using a database without using SQL was pleasant, and I'm anxious to see the world move on to something new and improved.

Re:Goodbye, CouchDB on Thursday May 10, 2012 @02:58PM (#3955272)
You're right that I was lumping transactions and data integrity guarantees in with "relational". I was thinking about normalization, and protecting data integrity in ways that lead to joins and transactions.
Re:Goodbye, CouchDB on Thursday May 10, 2012 @02:40PM (#3955180)
"They don't exist, if you don't construct SQL queries by concatenating strings and variables."

My point is, people still do this. You never hear about REST-injection or memcached-injection attacks, even though those are possible in principle, because those protocols don't encourage this mistake the way using SQL as a database API does.

Re:Goodbye, CouchDB on Thursday May 10, 2012 @02:17PM (#3955034)
We keep things we might need to search in regular columns (typically with indexes). The JSON object is just a way to add extra data to rows, which we can fetch and deal with on the app side. That works fine for a lot of things, and we're hoping it will give us some flexibility around when we need to do schema migrations in some cases.
Re:Goodbye, CouchDB on Thursday May 10, 2012 @01:43PM (#3954827)
The connection I see is the attempt to make the syntax English-like. Expressions like "SELECT * FROM users" remind me of COBOL's "ADD X TO Y".
Re:Goodbye, CouchDB on Thursday May 10, 2012 @01:39PM (#3954804)
A number of us know MySQL fairly well, and in particular I've seen how it's used by some of the biggest internet companies. We have some postgres experience on our team as well, but it's a little more of an unknown. So experience trumped feature set in this case.

One thing I would say about postgres is that it has a lot of features. As a new user, it's hard to know which ones to use in which ways, and what the downsides might be.

I'm one of the authors of a Python framework called monocle for doing async programming in this style. It works with twisted and tornado. http://github.com/saucelabs/monocle
Re:Engineering Is Not Science on Thursday December 09, 2010 @08:35PM (#1990188)
Haskell Curry made this argument in his "Outlines of a Formalist Philosophy of Mathematics": http://www.amazon.com/Outlines-Formalist-Philosophy-Mathemat...

His idea is that mathematics is the empirical study of the implications of systems of rules.

I'm not sure I understand your concern here. How does monocle make decomposing logic into functions difficult?

The "yield" keyword is an indicator of where control is returned back up to the event loop and other things can happen. We like that in monocle, because we view it as dangerous; in thread-and-lock terms, it's sort of like "unlock everything".

Eventlet (http://eventlet.net/) is an example of a similar framework that decided not to require "yield" at these points.

Re:Guido van Rossum: Thoughts about Python Future on Tuesday July 27, 2010 @01:03PM (#1551875)
Well, monocle is headed in its own direction. We're abstracting the generator-style concurrency stuff out from the underlying I/O framework, so monocle works with both Twisted and Tornado, and we're prepared to interoperate with other frameworks in the future. On top of that base, we're developing a framework for working in this style; there are some early ideas in monocle.experimental. We're also building simplified base networking APIs in a way that only makes sense if you're committed to this style of concurrency.

I think the question is really whether you're more compelled by generator-style concurrency, or Twisted itself. If you want to work deeply with Twisted, inlineCallbacks lets you use generator-style where you want, and is maintained along with Twisted. If you want to use generator-style concurrency to its full advantage in simplifying complex evented servers, that's where monocle is going.

Re:Python's Original Sin on Friday April 23, 2010 @04:33PM (#1289394)
I don't think it's very credible to hold Perl 6 up as the standard for how to encourage and enable complete implementations, considering that ten years in, it still has only partial implementations.
Re:Sauce Labs on Sunday October 11, 2009 @12:47PM (#874883)
Yeah, we know our front page is lousy right now; we've got a redesign and a much clearer explanation in the works.

You need our service to make sure your web apps work in all the popular browsers.

We've got a bunch of web browsers in the cloud which you can remote-control via and API, to make sure the features of your site work cross-browser. We use a popular open source browser automation tool called Selenium, which my cofounder Jason Huggins created.

I'm curious whether the above description makes sense, or still leaves you scratching your head!

Re:Codepad.org | a pastebin that executes code for you on Sunday October 11, 2009 @11:30AM (#874784)
Loops don't kill the server -- it runs them until they reach a timeout, and then aborts them.
Re:Codepad.org | a pastebin that executes code for you on Sunday October 11, 2009 @11:28AM (#874783)
The JVM is threaded, and threads will require a little bit of (careful!) work for the codepad security sandbox to support. I haven't had time for that project yet.
Re:Codepad.org | a pastebin that executes code for you on Sunday October 11, 2009 @01:17AM (#874350)
That's me. Sauce Labs has indeed been keeping me ridiculously busy. But codepad is my favorite side-project, and I don't mean to neglect it. I'll find a free weekend and update interpreter versions once things are less crazy here!
Re:_why is no more on Wednesday August 19, 2009 @01:40PM (#773222)
That's my mission with http://codepad.org/
Re:Ask HN: What's the Browser Distribution for your site? on Sunday July 19, 2009 @08:47PM (#713675)
http://codepad.org/

  Firefox       55.28%
  IE            17.05%
    7.0  38.08%
    6.0  34.21%
    8.0  27.77%
  Chrome         7.51%
  Safari         7.46%
  Opera          5.53%
  Mozilla        5.34%
  Konqueror      0.95%
Re:SQL Databases Are An Overapplied Solution on Friday July 10, 2009 @02:01AM (#697189)
"Awesome! I can just store things in a JSON-like list and not have another table or anything!" Oh, what if I want to find all the users who have 'ruby' as an interest? Oh, I can only lookup by key? And yes, there are ways around that. You could create a table of interests and each interest would be a key in that table and it would have a list of people with that interest.

This is not true of CouchDB. Indexing is done on the keys generated by arbitrary Javascript views. A view returning results keyed by interest is trivial.

Re:Post-mortem analysis on Google App Engine outage on Thursday July 09, 2009 @08:56AM (#695737)
I think the duration of this outage was basically about waiting for the GFS team to roll in. They knew at 6:44am that they had a crashing GFS Master on their hands, but they didn't decide to try upgrading until 8am, and only escalated to the GFS team after the upgrade failed to help, at 9am. That's the story of this outage, to me:

6:44 AM --- A GFS Site Reliability Engineer (SRE) reports that the GFS Master in App Engine's primary data center is failing and continuously restarting.

8:00 AM --- The cause of the GFS Master failures has not yet been identified. [...] the GFS SRE decides to commence the upgrade immediately in an attempt to alleviate the problem.

9:00 AM --- The GFS upgrade [...] finishes, but the Master is still failing. The GFS SRE escalates directly to the GFS engineering team, and [they begin] live debugging of the failing software[...].

10:00 AM --- GFS SRE advises that the GFS engineering team has identified the cause [...] GFS Master is no longer failing and GFS Chunkservers, which hold the actual needed data, are starting to come back up by 10:30 AM.

Older »