311 karma · joined January 15, 2008
It's worth correcting each in turn, carefully and rationally, because of its widespread circulation.
Trying to be as honest and helpful as possible, I generally prefer to avoid fragmenting features over lots of apps. For instance, the other day I wanted to send >140char tweets, and was annoyed that my main twitter client didn't auto-split tweets. I have a separate app (TweetSplit[1]) which allows me to flip between apps to do the work, but it's not great. The feature (split tweets) was implemented in a separate app and that was annoying.
Reading out tweets seems like a very similar proposition. I don't know if I'd sustainably use one app for reading, and another for TTS. There's friction around logging in to separate apps, switching between apps, and keeping your reading position in both apps.
I think, then, I'd ideally like to see this integrated into my main twitter app. So maybe another group to sell to are developers of twitter clients?
Also worth noting that Abvio's Runmeter app [2] will read out your mentions during a run, which is where I got the idea. I don't use this running app any more, but would still like the feature.
Lastly, maintaining reading position between apps has been looked at by Tweet Marker[3] and might help mitigate the problems of having separate apps for reading the same timeline.
[1] https://itunes.apple.com/us/app/tweetsplit/id460008334 [2] http://abvio.com/runmeter/ [3] http://tweetmarker.net/
http://channel9.msdn.com/Series/Visual-Studio-Online-Monaco/...
The video shows how to clone a git repo containing a node.js/Express app and run it on Azure.
"The Interactive Nature of Computing: Refuting the Strong Church-Turing Thesis" -- http://cs.brown.edu/people/pw/strong-cct.pdf
"The theoretical nature of computing is currently based on what we call the mathematical worldview. We discuss this worldview next, contrasting it with the interactive worldview."
"Habitability is the characteristic of source code that enables programmers, coders, bug-fixers, and people coming to the code later in its life to understand its construction and intentions and to change it comfortably and confidently. Either there is more to habitability than clarity or the two characteristics are different. Let me talk a little bit more about habitability before I tackle what the difference may be.
"Habitability makes a place livable, like home. And this is what we want in software - that developers feel at home, can place their hands on any item without having to think deeply about where it is. It’s something like clarity, but clarity is too hard to come by."
The US operates big, obvious surveillance facilities from inside Britain. For instance, I like to hike, and two places very close to me are the Yorkshire Dales and the North York Moors national parks. So every time I drive out there I will pass either of these two installations;
Menwith Hill: https://www.google.co.uk/search?q=menwith+hill&tbm=isch
RAF Fylingdales: https://www.google.co.uk/search?q=raf+fylingdales&tbm=isch
These are two big, public surveillance facilities -- the first is run by the NSA, the second run partly for NORAD. They are really large, obvious physical structures built for surveillance. It is then no surprise to find out that the NSA and GCHQ have been working together to do actual spying, is it?Imagine as a US citizen that you were living in San Francisco, and knew that the Russian Foreign Intelligence Service had a 500-acre intelligence-gathering base in Mountain View, CA. Would you be in any way surprised to find out the Russians and your own government were spying on you?
Foreseeing the problems is good engineering, but it can be a bad move politically to spend a lot of time describing the issues. That's what makes you That Guy.
It's a terribly quandary -- I have to stop myself from being 'a lawyer for the compiler', if you get my drift.
I would be interested in an article that explains how a good conversation proceeds. Any thought?
type.isNumber(4); // true
And it'd be easy to add validation versions, too, which might help clarify the types as one call per parameter; type.ensureIsNumber(myParameter); // throws exception if not a number
which might help your code fail faster.[citation needed], really. I don't think education was the determining factor in jumpstarting the South Korean economy. South Korea recovered due to external cash and infrastructure investment:
"Much of the country's infrastructure was destroyed during the Korean War that followed in 1950-1953. After the war, South Korea became heavily dependent on U.S. aid." -- http://www.southkoreagovernment.com/economy.htm
I do think there are situations you can't think yourself out of, or be educated out of. Examples are sickness or lack of infrastructure. It's no good having mobile internet access to the wikipedia article on malaria if your child has the disease, you've never been to school, there are no healthcare workers, no available vaccines, and there is no power socket to charge your phone...
Two that spring to mind are kiva microloans (http://www.kiva.org) and the 'Gravity Light' that replaces expensive and dangerous kerosene lamps with kinetic-energy powered LED lights (http://deciwatt.org/)
I suspect that these kinds of small projects, dealing with small amounts of cash, or lighting, or water purification, or similar, are the technology projects that might contribute really usefully and in very short timescales.
Anyone else offer up some examples of cheap, near-term technology projects that HNers might want to get behind?
> The very fact that you're comparing C# to Node.js (!), of all things, just confirms it.
The node.js comparison is fair, I believe. We're talking about language support for asynchronous programming, particularly the evented I/O programming idiom. That's exemplified by C#/await, and the Node standard libraries, and python/twisted, and I'm sure a lot of others.
Node is a very popular, visible platform which takes evented I/O as a core concept, so it's reasonable to compare the implementation of the idiom in C# to the current poster child. Is there a better comparison I missed?
> We've had CSP, Occam, Newsqueak, Alef, Limbo; now we have Erlang and Go.
Agreed. That's fine, and I specifically called out Erlang and asked for more info. However, the others you list suffer from not being mainstream development languages -- TIOBE[1] doesn't list any of them in the top 50 languages. Occam may well do it better, but since I can't pay the bills writing Occam, I'm more interested in the languages I mentioned -- JavaScript, Python, Ruby, Java, and C++. Feel free to throw in C, PHP, Perl or Objective-C. Do any of these languages have better language or core library support for async programming? Do they result in shorter, more readable, or more reliable code for parallel and async operations?
Your original reply -- "Almost every time I read their exhortations it feels like they're blissfully unaware that other languages have already had their own mechanisms for doing concurrency." -- suggests I'm unaware of something. Can you please start telling me what it is.
[1] http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
[2]: http://www.paulgraham.com/avg.htmlThe C# async language effectively writes a whole batch of code that you'd need to write yourself in other languages; try/catch blocks, callback functions, thread synchronization code, code to wait for results, etc. In effect, it makes into a language feature something that has previously been considered a design pattern.
So something like this in C# 5;
01 var foo = await LongProcess1();
02 var bar = await LongProcess2(foo);
03 var baz = await LongProcess(bar);
does a significant amount of work. If I were to code it without the language support, I'd be writing a great deal of crufty code to handle errors, to make sure one thread completes before using the result in another thread (see foo set on line 01 and used on line 02 for an example) and it avoids the callback hell problem of languages like JavaScript, which become apparent in Node.js programming, for instance.I'd be interested to know what other mainstream languages have as complete a solution for asynchronous programming -- afaik, JS, Python, Ruby, Java, and C++ don't have this. I'm guessing erlang probably has it built right in, but I'm not sure. Anyone care to share?
I take your point about pace, though. I wonder how it compares over the same timeframe vs other languages? In the 5 years for C# to cover that distance, what have other languages achieved? The biggies are particularly interesting (JavaScript, Python, Ruby, Java, C++, etc) because users probably demand more in terms of support and compatibility. (For others contributing, I'm thinking language-specific, so not libraries, frameworks, or runtimes, just pure syntax.)
It's also worth throwing uptake into the mix here; it's not much use if there's a version of the language defined in a spec but everyone's using the compiler from 1999 (JavaScript, I'm looking at you) I'm not a pythonista but I understand Python 3 has struggled with uptake, too. Not too sure of the details; happy to be corrected.
// properties not declared anywhere; runtime property definitions
dynamic myObject = new JavaScriptStyleObject();
myObject.firstProperty = "hello";
myObject.secondProperty = 1;
C#5 added async/await, which I think is one of the most 'integrated' ways I've seen of doing async programming. Think node.js with a lot less syntactic cruft around the callback functions; in C#5 you could write, say; // evented I/O using the 'await' keyword;
var fileContent = await ReadFile(@"c:\foo.txt");
Console.WriteLine(fileContent);
rather than; fs.readFile('c:\\foo.txt', 'utf8', function (err,data) {
console.log(data);
});
This eliminates the need to write lambdas while retaining the evented I/O style.Both of these seem pretty significant.
I find myself to be a fundamentally 'enthusiastic' person -- I love to act, and hate to refrain. Which shows up in things like health; I'll exercise like a dog and eat like a pig, because run is an action, but moderation is a lack of action (don't eat)
Particularly, it turns out that this may be self-fulfilling prophecy -- people who subscribe to the limited willpower hypothesis tend to run out of willpower more quickly[1]
What's interesting here, for those looking to practically increase their willpower, is that treating your willpower as delicate and fundamentally limited might be part of the problem.
Personally, I'd like to subscribe to the 'abundant willpower' hypothesis, if that turns out to be the more powerful premise. (But then, I'd also like some cake. What can you do? ;) )
[1] http://www.livescience.com/38980-willpower-is-not-a-finite-r...
I also don't see this: "I would fault them for building their entire ecosystem with total disregard for standards, their refusal to work with whatever community existed outside." My daily experience is very different. If I start a new project, it'll almost certainly be on the open-source (Apache 2.0) ASP.NET MVC platform. That gives me Twitter Bootstrap, Knockout.js, OAuth2.0, etc. It's a neatly integrated patchwork of commonly-used, standards-happy, open-source frameworks and libraries, and it'll work happily on safari and chrome and on my phone. So I don't feel particularly isolated away from the rest of the development world.
Summary is, I'm sure this vision was true years ago, but things seem to have moved on. I think that now, if I want to put together software using modern approach, there aren't approaches or technologies that the MS stack makes tricky. But I'm happy to be corrected; are there technologies or approaches I can't use fairly easily on the MS stack? Cloud computing? single page apps? continuous integration? BDD? etc. What am I missing?
The greek for the letter _A_ is $\alpha$
mashing up the simple markup for bold, italic, lists, headers, and quotes from markdown with the more fully-featured LaTeX support for equations.I don't know that this continues to work for digital goods. Are there examples you're thinking of?