Ask Slashdot: Privacy Paranoia
The funny thing about conforming is that you do society an injustice.
The world needs radicals but political powers and clandestine powers-that-be do not.
There are plenty of good and bad aspects to transparency. I'd rather not explore the extremes. Instead we should keep the debate alive and well. We should push back against extreme transparency and make sane choices regarding what privacies we are willing to sacrifice for our collective benefit.
The best defense against invasion of privacy is to simply be aware and (re)act accordingly.
Better Development Through Competition?
This is the sort of solution I see proposed by business stakeholders who've been burned by out-sourcing or consulting.
I say, if you can't build it yourself then you shouldn't be directly involved in managing it. Too often I find that business stakeholders tend to stick their noses where it doesn't belong. Inolving themselves in this way does more harm than good.
Who wants to work longer hours, invest in more training, and constantly feel like you could lose your job?
Nobody. Not even the managers and CEOs. So why is it okay to think programmers would just love to work this way?
A Call For an Open, Distributed Alternative To Facebook
Facebook is a huge waste of time.
She was being funny, but I think there's a grain of truth there.
What I don't get though is why people see this as a vital social tool. I've used it for more than a year and a few months ago I deleted my account. My life has remained relatively the same. The only difference is that I'm not being inundated with status updates and photos from people I don't regularly have time for anyway. All Facebook allowed me to do was extend my ability to manage a social network beyond my limited human means. However I find that this is just an illusion. Even without it, I'm still connected to the friends, communities, and interests that I care about.
Perhaps that's just me and there are people who really cannot manage their social life without some kind of software tool. That's fine of course. However I hardly see how it makes Facebook or any other such "social networking service" an integral part of the Internet experience.
What I happen to agree with is the need for open-ness. Facebook has taken to exploiting its valuable resource to an extreme and turned on its users. You are not allowed to opt-out of many of its programs now. One can only assume that future programs will only become more invasive and open to commercial exploitation by any entity that comes along. Much like the phone book. This leads me to believe that we need the ability for people to opt-out of using Facebook all-together... but there doesn't appear to be a satisfactory alternative.
So invent it. The demand is there. You'll probably get a lot of kudos.
Why Linux Is Not Attracting Young Developers
I could waste my time asking candidates I interview questions about hash tables, linked lists, and bubble sort; but I'd be wasting my time. They're perfectly capable for the job and don't need to know it. 100% of their work will be serializing and deserializing data between libraries. As long as they have a basic level of competency they'll probably get the job.
When was the last time you built a website and needed to implement your own binary search algorithm or write your own laplacian matrix structure?
I wouldn't expect a PhD bio-chem professor to be applying for an entry level job in a GPs office. So why would I expect that degree of expertise from someone who's job is mostly going to be fetching rows out of a database and rendering them in HTML or *gasp* JSON? The hardest part of their job will be optimizing the persistence layer as the project grows. Even that isn't too hard.
The reason why colleges are pumping out generic programmers and fast-tracking them past studies of algorithms and data structures is because for the jobs they're applying for they won't need it. If they want to be writing operating systems, phsyics engines, object recognition systems, search engines and the like -- yeah, they'll be going to university and work on a masters (or if you're like me, you'll buy lots of books and waste away your free time noodling through it on your own).
If the work you do really truly needs candidates to understand complicated algorithms and educated, well-thought out use of efficient data structures — congratulations you're in the minority.
Cross With the Platform
"It's 2010, and we're still innovating on how you pass color components around. Seriously?"
It's 2010, and we're still using cars? Where's my jetpack dangnabbit!?
Google Go Capturing Developer Interest
Fair, the transition from D1 - D2 is seeing some significant backwards in-compatible changes.
I wonder how long it will take Go to go through the same process?
Google Go Capturing Developer Interest
Why pick Go when there's D which already has a pretty stable platform to develop on?
What Knowledge Gaps Do Self-Taught Programmers Generally Have?
I'm a self-taught programmer.
I know algorithms, complexity theory, and lots of math: linear algebra, discrete maths, etc.
What does a good programmer need to know though? Fundamentals. Everything else is specialization. You'll need to know hardware, compilers, interpreters; abstractions, and a solid foundation in scientific principles. You need to be able to hypothesize, implement, test, and evaluate. A basic understanding of algorithms and complexity theory naturally comes into play when theorizing about computer problems which is why most courses integrate them into the curriculum. Beyond a very principled but fundamental understanding however, an in-depth and broad education in such subjects isn't necessary.
I taught myself a lot of maths because that's what interests me. I wanted to know how to write ray tracers, how to optimize them; how to use statistical analysis and discreet mathematics to sort through and find interesting facts about large sets of data. Do I need to know any of that to write a piece of software, compile it, and have it run efficiently? No. I learned that stuff for the kinds of programs I was writing.
The only real difference I find between myself and my university-trained colleagues is that I haven't suffered under the same financial burden as they for the knowledge I've acquired. Yet they talk about it like it's a serious advantage! Of course, there really isn't a serious difference between us that matters when the software ships. It's just a matter of perspective.
The stigma engendered to self-taught programmers however, is the hurdle I find most difficult to overcome and also easiest to ignore. Difficult because people assume things about you when you tell them that you learned on your own. Easy because once they realize that you are competent and capable, the stigma is removed. What many people don't seem to realize is that there are some great programmers out there who were self-taught. Just read through some of the interviews in "Coders at Work" by Peter Siebel. If the autodidacts among us are to be taken seriously, this generalization that self-taught programmers are backyard hacks has to stop. A bad programmer is a bad programmer whether they are self-taught or university taught.
After all, I could just turn around and generalize by saying that university trained programmers are privileged snobs who think "real-world" programming is beneath them. But that wouldn't be fair would it?
It takes all kinds and to each their own.
If you think you need to know something to solve the problem you're having, learn it. Move on.
US To Build Nuclear Power Plants
It's about time some common sense was applied to the issue.
Does anyone realize that you and I will each produce about a coke-can worth of nuclear waste in our lifetime (a TED speaker mentioned this, can't find the source atm)? I think that's pretty easy to store. At least compared to the thousands of tonnes of coal that would have to be burned in its place.
You say the air is polluted and we have to stop burning coal; but you helped keep that industry alive because you protested nuclear energy into the dark ages for the past thirty years. Our modern lives don't exist without electricity and generating it is no easy task. There are trade-offs. I think we would have been better off if nuclear energy development had continued: we'd have thirty years more experience building, developing, and maintaining it.
Good on this Obama guy for having a little common sense.
How Do You Accurately Estimate Programming Time?
Pretty much. Even when you're coding to a completely laid out specification, the time it takes to understand the specification and determine how many lines of code you'll need to write to meet each point of that specification is basically equal to the time it takes to code the specification less a factor based on your typing speed.
If you have a specification, you're done -- as long as you consider the software the specification as I do.
Anything I receive from a client or non-technical stakeholder is just documentation of wishful thinking. It's the equivalent of a sketch on a napkin. Even if it's twenty pages and "really thorough." Unless it compiles, it doesn't specify anything.
The exception of course are specifications written by -- programmers! Unless they're n00bs with a lot of wishful thinking, these will tend to be more like blue-prints and less like napkin sketches. Unless they already compile. Even better.
If a client insists for an estimate and they aren't satisfied with the reasons for my reticence, I just let them know that it's a WAG and will be readjusted once the project moves ahead and I get a better understanding of the system and its specification.
How do I guess my WAG? I look back at past projects I've worked on that resembles what their project is going to be and pad it out from there based on numerous qualitative feelings. I ask myself, "Does this feel more or less complex? Has this client worked on software projects before? Do I trust these people? What's the worst thing that could go wrong?" That sort of thing.
Police Want Fast Track To Get At Your Private Data
... so long as it's enforceable.
If the majority of ISPs refuse to comply, what could they possibly do about it?
But if they start arresting people, then you'll know what kind of country you're living in.
Murdoch Says E-Book Prices Will Kill Paper Books
The medium might be changing, but the concept of a book isn't going anywhere.
However, paper books will be around for another couple generations at least. And then they might go the way of vinyl.
The wonderful thing about paper books is that they're easy to read and don't require batteries.
Trade off? They take up physical space. Kill trees (a renewable resource anyway).
Personally I use a mix of both. I prefer technical manuals in e-book but damned if I'll read my fiction on a glowing box. Print doesn't strain my eyes as hard and won't run out of power during long reading sessions. :)
Is Programming a Lucrative Profession?
Your POV is elitist.
You think that because you got a degree that everyone else will be polishing your shoes and fixing your cars?
I've met a number of people with no degree who make six-figures or close to it and get invited to lecture at universities.
Your reality is just a cultural expectation. People think that if they get the degree, the job and the money will be given to them. Where people get these ideas from, I don't know — perhaps their egos have been coddled a little too well.
The reality is that you're going to live, die, and no one is going to give a rats ass in the end whether you paid an institution for your gains or whether you earned them yourself.
The only way to get ahead is to use the resources you have to get what you want. If you have some money and can secure a large sum of debt to get an education, then all the more power to you — especially if that education is the only means to the end. In programming it certainly isn't; you don't have to be certified to compile a program and I'm a firm believer that it doesn't take a specially gifted child born under the proper signs and a virgin moon in order to be a good programmer. It also doesn't take a genius to pick up a few technical manuals, buy some tools, and start hammering away at repairing an engine. Any more than it does to learn law or psychology. I learned how to program when I was a kid and took out a few books from the library one summer. Anyone who's resourceful can take what they need and make something from it.
That's the only reality.
The Apple Paradox, Closed Culture & Free-Thinking Fans
What GUI you prefer is a personal choice.
At least most Linux-based OSs give you the choice.
I personally cannot stand Cocoa/Aqua... or any other GUI environment. I'm far more productive in a mouse-less grid layout personally... OS X doesn't give me the choice.
You either drink the kool-aid or get out of the party.
I think Linux gives you more freedom of choice. That's my choice.
Sitting Down Too Long Is Bad Even If You Exercise
Working from home, it's natural for me to spend 10+ hours in front of a computer some days. It used to be anyways. It's the exception now; I generally can't stand sitting in front of a computer for more than a couple hours at a time. And more than 8 hours behind the desk? Forget it!
Three or four years ago I joined a martial arts club. Then when we moved to an office I started cycling to work. Ever since I've become a rather physical geek. I need exercise and often crave it throughout the day. I'm back to working at home again and I can't tell you how important it is.
We are made of meat after all.
I'm not a doctor by any stretch, but getting fit and training hard has definitely improved my life and work. I get back pain less often, I can think more clearly (especially after a good workout), and I feel more motivated in the mornings. The only thing I don't like is that programming isn't a physical endeavor.
Or could it be? Punching bag keyboard anyone?
Facebook's Zuckerberg Says Forget Privacy
You don't have a choice. A public record of your exploits will remain in the pocket of one corporation or another regardless of your willing participation. You cannot control what other people say about you or what information they share. The reality is that you can hold out and refuse to get a YouFace page and deride Zuckerberg for his disregard for your privacy; but the problem is he's not the only one who doesn't care.
These sites collect a lot of information. Other people can be the source of information about you. They're the ones posting the embarrassing photos, commenting publicly on your ideologies and actions, and making available a wealth of information about you regardless of your consent. So really it doesn't matter what dumb-sh*t posts what -- if you think NOT posting anything will protect you, you are sadly mistaken.
The only interesting question remains is whether joining the fray and creating your own profile will at least grant you the opportunity to do some spin-control.
The recent changes to YouFace's privacy settings and policies tell me... no.
Jaron Lanier Rants Against the World of Web 2.0
Well I read the review and it seems that Jaron's just wrote another book full of ignorable generalizations and blow-hard postulating.
It's not his fault. He's just given into the same delusions as every other human being. He thinks he's smarter than you. We all do.
From what I can tell by the review, it's just another book on technology. Like most books on technology, it says a lot of things that don't really mean anything and hold only a tenuous grasp with reality. Sadly, it doesn't fall far from the generic-mainstream-technology-writing-tree. Most books written on the subject tend to be written by authors who think they know it all or know better than every one else. They think they can see the forest for the trees, but most of them fall into the same delusions and end up either rehashing the same points or showing their age.
Everyone wants to be a visionary.
I get the sense that Jaron's book is just this kind of drivel. Though he might have some salient points on Facebook and such, but I might just be seeing the glow after deleting my account. I might give the book a go if I happen across a copy at the library. I just won't expect much.
Google About Openness
After using Wave preview for the past couple months, I don't think I like where Google is heading.
There is a lot of good and a lot of bad.
GWT so far is bad. Development of the compiler is slow and forces developers to target specific supported browsers. So far none of which except Google's own Chrome are well supported. Wave preview in any other browser than Chrome is horrendously slow and crashes regularly. Besides, who wants to go back to the mid-90s and have to put warnings on their site, "This site optimized for Chrome at 1900x1080"?
Yet they do contribute to a lot of open source projects and have made a number of their projects open source themselves.
This sounds more like idealism than anything. Their company is too big for any one stake-holder to steer the ship towards a single goal or at least navigate by certain guiding principles.
So to sum up, "meh."
Palm Pre Development In the Browser
I'm afraid I'm already familiar with your rhetoric.
All I am saying is that there has to be a better way to build web-aware networked applications.
Web browsers like FF, Chrome, Opera, Safari, etc -- they all treat the resources they fetch as documents. Sure it's archaic by our human notions; we've been building interactive applications inside of them for years. Yet the tools we build to do this are only tricking us and this is my major point. We see fly-out menus and pop-ups that insert information into the "page" when we close them; but even then we cannot escape the metaphor. No matter how many layers we make on top of it, there's an impedance mismatch between the language of an interactive non-linear application and a document model. So while we think of websites like Facebook or applications like gmail as rich application interfaces, the browser just sees them as documents and I see them as clever hacks.
In developing these applications with the current crop of technology we must constantly be aware of a cognitive dissonance. An application wants to pass data to the user and update its display but in order to do so another layer is required to map that data into a document model. We make clever abstractions to make it look very much like an intelligent interface widget for the application programmer's sake, but in the end it's not and we are forced to be aware of that.
For applications where the final representation does happen to match a document-model the impedance mismatch is really low and the application code tends to make a lot of sense.
But for more sophisticated application interfaces, these really complex abstractions are required. Tools like Morphic, GWT, Parenscript, and Pyjamas are written so that application developers can write programs that update UI code without having to translate their data structures into the document model. There's a point where maintaining that side of the application is cumbersome and not worthwhile. Yet even these powerful tools make their short-comings painfully obvious.
They make it hard to support all the different browsers. The compilers have to be extremely sophisticated. They're generating code that will be compressed and sent as plain-text to another compiler at the other end which has to interpret the results and which ultimately updates a document model. This is both brilliant because they got it to work and I doubt I'd be able to write such a compiler myself in any reasonable amount of time but it's also incredibly stupid IMO because so much effort was spent working around the problem instead of solving it.
(The evidence of how crappy this can be, try the Google Wave preview in any browser but Chrome. Then try it in Chrome. Google can't improve the JS-generating compiler in GWT fast enough that instead we're back in the mid-90s where sites are optimized to the browser).
There are better ways for delivering sophisticated interactive GUIs across the web.
X, VNC, XUL, SVG, Cairo; stateful application protocols.
It would be nice to be able to be sitting on my Ubuntu desktop to click on an application icon and run it like a local application in my native window environment. Then when I'm done I can close it. If later I want to return but I'm out and about I can open up my Macbook and open it up there. Same application, same state it was in when I left it, same data, and it happily lives in my native environment there.
As an application developer I want my application to be the same kind of first-class citizen as any other in a users' environment. I don't want my interface to be limited by a document model or require large amounts of engineering effort to work around one. I definitely don't want to tell my users what browser they should use to access my application (then neither of us are in control).
Ultimately I think we both want the same thing.
I'm just not convinced that the tools currently popular and available are the best ones for the job.
I think we can do better.
Palm Pre Development In the Browser
Let's all remind ourselves what the acronyms HTTP, HTML, and the like stand for.
I think it's a classic case of over-engineering. We're building applications with rich interfaces over a stateless text-based protocol. The application UI is being delivered in source-format to be rendered by this "browser/application framework" that thinks of it more like a document (because technically it is). That the end result happens to look and quack like a duck doesn't change the reality. An interactive UI shouldn't be written with methods like "document.getElementById" — it doesn't make sense. However, with a number of layers of abstraction we can make it seem like we're programming a UI and then completely forget about the actual implementation. But at that point you've probably thought they said "trains" when they really said "brains," and hopped on for a ride.
The reality here is that the web browser is designed to retrieve, render, and transfer document-based data. It treats locations it can fetch and upload document data as resources. The interface treats these documents as pages. Pages have a sequential order to them, hence the "history" and famed "back" and "forward" buttons. "The browser" should be a short-hand reference to a more specific and clear name, "the document browser." Or perhaps, "the hypertext document browser."
However if we alter our perception a little we can, with a few tricks, call an apple an orange and turn the browser into an application framework. Documents become user interfaces and resources become APIs. Pepper in some false-pretenses and pretty soon a browser isn't an application but an operating system. For the web.
There have been many attempts at a cross-platform application framework. Some are built in Python and utilize GTK2 or Qt. Others built in C, Lisp, Ruby, whatever.
There are cross-platform protocols for delivering GUI objects over the network. There's a famous one called, X11. Check it out.
In the end however, there isn't likely to ever be a universal language and API. Try getting Lispers to write in Java or what have you. ;)