HN user

stevecooperorg

311 karma
Posts2
Comments118
View on HN
[dead] 13 years ago

The blog post had a lot of errors, and was read by a lot of people. Those errors are the kind that lead to bigotry.

It's worth correcting each in turn, carefully and rationally, because of its widespread circulation.

I'd pay $2 to trial it, and I'd use it while jogging and listening to music. I have no idea whether it'll work out -- twitter timelines tends to be very fragmentary so I don't know if I'd be able to follow conversations well. However, it just needs to hit that 'cheap enough that I'll buy it anyway' price point for apps.

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/

Visual Studio 2013 13 years ago

I think you need a Windows Azure account, not a windows box -- I've seen someone using VS Online on Macbook Pro/Chrome, IIRC. (Can't remember where, though.)

Reminds me of Richard P Gabriel's essay on Habitability (PDF, Page 9, http://dreamsongs.net/Files/PatternsOfSoftware.pdf)

"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."

As a Brit, my reaction was one of complete lack of surprise. I wonder if that is widespread, and accounts for the muted reaction.

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?

Developers are often That Guy because they foresee what will happen when they get to writing code; they realise all the thousands of small problems the work is going to throw at them, and they spew that out to their colleagues.

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.

Great solution -- by the end, that final 'type' object starts to look good;

   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.

All it takes is a seed. A seed of literacy.

[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...

I suspect that just providing digital services to people dying of disease isn't much good, but I think there are some really nice technology projects operating at very cheap and small scales to do good.

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?

It's hard for me to see how I'm living in a walled garden here. If there is a Microsoft walled garden, Hacker News is very much outside the wall, isn't it? I'm here, not on MSDN, trying to have a reasoned conversation with intelligent people from different backgrounds, showing code samples, and asking openly for information about other languages. What else should I be doing?

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.html

We're talking languages here; the way a grammar construct helps the programmer.

The 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 would dearly love for the C# type system to get a bit stronger and less verbose. It's also confused, I think, because you have explicit classes, anonymous types, and dynamic, and they aren't always very well put together. I actually also like what Anders did in TypeScript around structural types, and wouldn't mind some of that mojo in C#.

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.

C# 4 added serious dynamic typing, so that you can make ruby/pthon/js-style dynamic objects;

    // 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 see that sort of thing in myself.

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)

"Researchers say we humans have a limited supply of willpower" -- it's an interesting idea but worth noting there are counter-claims.

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...

This story could be told of any developer who doesn't update his skills for seven years. You could tell this story for Java developers, Flash developers, PHP developers, etc. Anyone peddling skills from 2006 is going to be looking pretty dated, no matter what stack you're talking about.

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?

Cars kill cities 14 years ago

Also, taxis work well here in my hometown. About £8 will get me to the other side of the city, and a weekend hire costs about £50. I found owning a car, all-in, cost about £200/month (adding up tax, insurance, repair bills, etc) so it's cost-efficient to hire a vehicle when I need it.

Why I'm a Pirate 15 years ago

I agree that 'first consumer pays everything' is an option. Hardback books work like this a little -- if you want to read it earlier, you need to pay more.

I don't know that this continues to work for digital goods. Are there examples you're thinking of?