Evil is as Evil Does

(logo from Scroogled and TechRepublic’s GeekEnd)

Google’s slogan used to be “Don’t be evil.”, but whether by accident or design Google’s new privacy policy — really a “you have no privacy” policy — is evil. Giving Google information had been acceptable, because they did not aggregate all of the bits of knowledge we entrusted them with into a single profile.

On March 1, 2012 that all ends. Google is modifying their policies to allow them to use every scintilla of information they have on their users for their own purposes. Let’s be clear, Google isn’t promising to make our lives better, they’re promising to make more money. You might not call that “Evil”, but it sure is not “Good”.

So I just went through Google Dashboard, and scrubbed everything I could. I don’t use Android (and won’t start now), so nothing lost there. I changed every privacy setting, cleared histories, removed profile information, etc. You won’t find me on Google+ or Orkut any longer. I’ve removed deleted contacts, profile pictures, and personal information from every product I could stand to give up. Unless a Google product makes my life significantly better, it’s history. I’m somewhat surprised at how much information Google has lying around about me.

Primarily, I have kept Search (with history turned off), Gmail, Google Reader, and Google Groups. I’ve pared down which groups I belong to, and tried to obliterate any identifying information from the profiles. Finally, I’ve logged out of my Google account, and will only log in for specific purposes. Gmail I mostly handle using dedicated mail clients, so that’s partitioned from my web surfing. Reader and Groups are the two products that will leak information about me, but I’m committed to minimizing my use of Reader going forward. Sadly, I don’t know of a way to really ditch Groups since I don’t control the selection of that product, and I really want to stay in touch with the communities that do use it.

Am I being paranoid — probably. But I’d like to try to hang onto the appearance of privacy a bit longer. Besides, if any rogue player manages to obtain Google’s data, I’d rather be safe(r) than sorry. I hear Google has decided to implement these changes to compete more effectively with the growing Facebook juggernaut. Good for them, but in my case, they’ve just lost some of my viewership and become less central to my Internet life.

PS: It’s worth noting that I’m not much of a Facebook user, but I’m likely to take this opportunity to pare back my profile information there as well.

Electronics fun for the Whole Family

I’ve been struggling with how to help our 11-year old develop her attention to detail and critical thinking skills. I spent some time trying to interest her in programming, but it didn’t take. Anyway, I think I’m too close to that topic, and I don’t know that I’m the best person to teach programming to a kid. On the other hand, I have wanted to get back into electronics for a while, and I think it could make for a good geek/geekling activity.

Like any good pack-rat I still have my old Radio Shack electronics kit, which I dutifully handed down to my daughter:


Science Fair Exploring Electronics Lab - 200 Projects

Science Fair Exploring Electronics Lab - 200 Projects


A quick trip to Radio Shack, netted me a newer version to mess with for myself:


Radio Shack Electronics Learning Lab

Radio Shack Electronics Learning Lab


I should point out that the older set is still available, even though Radio Shack no longer carries them. I prefer that set for kids, since it includes lots of fun projects, but only limited explanations of how the projects work. The newer kit comes with manuals by the famous Forest M. Mims III, but the experiments are a bit more limited in scope, but are somewhat better explained. The newer kit is absolutely a great buy for geeks 16 and older, but might have more limited appeal to those younger.

So far she’s built a couple different projects/games from the old kit, including the Quick Draw II game that provided quite a bit of entertainment for the entire household. Hopefully, this is the start of a beautiful friendship…

My (long) note to the creator of Sierra

I’ve spent the evening trading e-mail with the creator of Sierra. Please forgive the lack of context, but I’m posting my last reply, since I think it sums up my thoughts on the language well.

Ok, I’ll shift my focus from Sierra as implemented to your stated higher level goals for the purposes of trying to illuminate my points.

As background I skimmed EWD340, not having read it in 20 years, and a couple of Milner’s papers contemporary to the IFIP paper since I don’t have a copy of that handy at the moment. You weren’t specific on Dr. Hoare’s work, but I’m relatively familiar with a large portion of it.

I think it’s somewhat disingenuous to talk of a real-time bug checker, since the vast majority of bugs that are hard to find belong to the second class of programming faults described by EWD, those that there is no proof of mechanical recognition. Indeed, even though his specific example ( loop completion, now a subset of fixed point determination) is a much better understood problem, it is not deterministically possible to predict the outcome (the halting problem). Nor are you correct in your assertion that one has to wait until compile-time for existing languages to find bugs. Static analysis can and has been integrated into IDEs (Kleidermacher; 10.1109/THS.2008.4534479).

I can’t address the specific 1986 paper from Milner, but as a general situation, it appears that he was interested in formal abstractions of what code does as opposed to natural language programming per se. Since the problem of natural language programming is itself a composition of natural language processing (an open problem) and automatic proof building (also an open problem), I going to assume that you intend to approach the problem of correct code from the perspective of formal abstraction. In that case, it’s pointless to talk about the Algol derivative languages since much more modern pure languages are at our disposal. Haskell (which implements Hindley-Milner type inference) would be a much better launching point, but I think many of the problems you seek to solve are non-issues in Haskell. The difficulty of programming in Haskell stems from the need to express human thought as a formalism.

This leads to your interest in cutting C in half. Haskell accomplishes this by removing much of the overhead of Algol derived languages, but the result isn’t human readable.

Fibbonacci in Haskell:
fib n = fibs (0,1) !! n
where fibs (a,b) = a : fibs (b,a+b)

This is neither easy to read, nor immediately intuitive (though admittedly it would be hard to have a significant logic bug in this code).

Sierra as it exists today isn’t a level above existing code since it doesn’t significantly vary from C. That example I sent earlier is neither terser or more readable than the equivalent C code. Nor does much in your existing specification show progress towards more intelligible code. While I understand that this represents a first step, it is essentially a step *backwards*. “var” was implemented and discarded by Wirth in Pascal. Operator overloading (+ as addition and concatenate) was tried and discarded in C++. “y@myPixel” is neither better nor worse than myPixel.y, but having both is confusing and neither implies that y is a property of MyPixel.

Many languages have obviated the need for C pointers and direct memory management (see Java, Haskell, etc). In fact, it is possible to have a reasonable garbage collector for C (Boehm, Spertus, WG21/N2310=07-0170). Nor is verboseness particularly a problem (EWD said as much in ’72), human communication is terribly verbose with low S/N and lots of redundancy to make up for it. Nor do I think there is a compelling case that interactivity can improve the situation.

You speak of “higher up” than “traditional languages”, but the truth is that you still seem to be generating a 3GL language without even addressing the existence of domain-specific and constraint based languages (4GL and 5GL respectively). Indeed most new language development seems to be integrating 3-5GL into comprehensive systems. Frameworks like Hadoop have us programming across large-scale distributed systems, They’ve abstracted away the idea of a single execution thread or even a single computer, and they hide the network/memory/latency issues in ways that I don’t think you’ve even considered.

I just saw a blurb about “Julia” (http://julialang.org/), which appears to be an attempt to be most things to most programmers. I don’t know anything beyond the press release, but frankly they at least are hitting all the right notes.

And I think this is the fundamental problem with your pitch for Sierra (here and during the last 3 years). Your approach and materials seem to have ignored the last 25 years of programming language research and development. Whether the end product is compelling or not is impossible to judge because what I can see of it today doesn’t seem well informed. I took the time to read some of the trials and tribulations you seem to have suffered in trying to bring Sierra to market, and while I feel for your struggle, I wonder if you ever had competent technical advice. Your existing demo tackles the problem from the wrong level. You’re taking a bottom-up approach to developing Sierra (which is appropriate), but there doesn’t seem to be a top-down roadmap for the language. I have asserted that you seem to have moved backward from C, and without seeing where you’re going I have no way of assessing otherwise. General assertions that there are higher-level, fuzzy logic components in the future have the ring of SHRDLU (Winograd, MIT AI Technical Report 235, February 1971). It’s 40 years later, and I don’t think we’ve made much progress with that project either.

So maybe that’s my advice to you. Get a roadmap together. Let’s see a architecture overview for Sierra. Let investors (Kickstarter and VC) know that you’re aware of what has been tried, and have concrete ways to do better. At this point, it’s not about the code, it’s about the path.

Hosting changes

Things are a changin’ at Knot.

I’ve started the ball rolling at moving the server infrastructure to a web-hosting provider.
It looks to me like most/all of the functions we still depend on can be much more economically handled be an external hosting company. There’s the additional benefit that I’ll be less involved in routine maintenance and security. It should also cut costs by about 10x-12x.

WordPress instances and custom (sub-)domains should still be supported, along with e-mail and forwarding.

If anyone who uses our server or services is worried about the transition, please contact me and I’ll review your needs and try to address them.

Sierra, again.

OK, there are other things I meant to post, but I ran across the latest update on the Sierra language Kickstarter, and I really need to comment. First the update:

Update #1: Sierra to Objective C
Posted 5 days ago
I have decided that the project will first translate into Objective C
rather than having Sierra translating into C
so that software development for the iPhone and iPad can
be accelerated by 10X for each programmer and it will reduce bugs
by at least 50%.
So the funding for this project will focus on having Sierra translating
into Objective C.
Please everyone who currently codes in Objective C add your input
to the design of the Sierra language.
Blake

<rant>
Oh my fracking lord! I don’t even have words for this.

I think it’s basically programming 101 that any superset of C allows for the inclusion of C. Any C-preprocessor that generates C will perforce work with any superset of C. That’s the bit that anyone with a passing familiarity with C/C-front/C++/Obj-C/Turbo-C/Tiny-C/etc. would know.

But to compound the idiocy (and that’s what we have here), the idea that Obj-C programmers would be 10x faster because of SYNTAX improvement is absurd. The majority of ideas in Sierra don’t even really make sense in the context of Objective-C.

Additionally, Sierra doesn’t even begin to address any aspect of iOS programming. Objective-C might be the language, but all the heavy lifting (and therefore the bugs) stem from the iOS frameworks. Creating new/better frameworks might be a worthy goal, but is thisthe project, or the person to undertake that task? If someone came up with a DWIM-framwork, that might make us 10x faster, maybe. I’d be skeptical even then. Heck, most iOS/MacOS programmers would be more efficient if all the existing frameworks actually worked exactly as documented.

Finally, will someone tell this guy that declaring yourself associated with the iPhone/iPad does not automatically make your idea better? This needs to go away. Now.
</rant>

You can see my previous posts on Sierra: here and here.