Please create an account to participate in the Slashdot moderation system


Forgot your password?

Comment Estimates (Score 1) 299

Over my 25+ years of programming, being able to estimate my time was the last and hardest thing for me to learn how to do.

No matter how much you've mastered computer science and how many clever encryption algorithms you're capable of writing, estimating how much time your work will take is a completely separate ability having nothing to do with your actual programming and/or mathematical skills.

It is possible for every programmer to learn how to do. It's not something you'll figure out in a week or a year or ten years. I promise you that being able to deliver your software on time, every time, will make you the most beloved programmer at your company.

The key is to, instead of jumping right into the coding, spend several days understanding exactly what work you need to do. Learn to be realistic about your abilities. Learn how to communicate with non-programmers so they understand exactly what they're getting. Keep explaining until it's clear that they understand what you're writing for them, and that's exactly what you're writing for them.

When people throw changes at you, warn them that you'll have to start from scratch with understanding exactly the new work that needs to be done, think about the time those changes will take knowing that you may need to discard work you've already done, and continue to be realistic about your abilities. Make sure you get approval for the revised completion time before starting any work. Do not jump right into coding the changes.

If your employer doesn't allow you do to this, quit and go work somewhere else. There is an oversupply of programming work.

Time estimates are something that all professionals do. When you finish your work on time, you are acting professionally. When you reject estimates you look like a rank amateur and I'd never hire you.

Comment Programming (Score 4, Insightful) 616

Based upon my three decades of programming experience, programming at rare times may require you to brush up on what you learned in engineering school, but essentially your degree is mostly a worthless piece of paper in terms of career usefulness. I've used much less than 5% of what I learned there, and probably more like less than 1%. My most useful class was software engineering, because it touched on the non-technical aspects of being a programmer.

There are small subsets of programmers that use geometry and calculus, but even if we only remember the basics those types of programmers don't need to worry about nit picky details because we all use libraries. You'd be absolutely foolish to open up a calculus book and write your own library function, unless you're doing something extremely novel. Novel is bad when you are trying to write maintainable code.

What is useful to you as a programmer is to understand what big O notation is. It's advanced math beyond calculus, but it always seemed like common sense to me. If you have to do n^2 operations for every n, that's worse than having to do n operations. In 30 years I've never had to worry about little o or logarithms. Google gets specific in interview questions about all of these notations, but I'm telling you what is actually useful.

What is not useful to you is mastery of the syntactical details of any language. Try to program as if you're writing English. Write software in such a way that you could be doing it in any language. Write software that the next person can read, instantly understand, and begin modifying.

Programming isn't purely doing Google searches. What I spend most of my time on is seeing how the software I'm working on already solves a problem and to use as similar techniques as possible, so that the next person who works on it will encounter consistency. Every change I make I make for a reason, and I understand every change I make well enough to explain it to my mom.

Another way of looking at it is the technical interview is almost completely useless. You can ace a technical interview and write the shittiest code I've ever seen. You can perform average on an interview and write the cleanest code I've ever seen. If anything, detailed technical knowledge should count against you. The next person to maintain your code might not know every trivial little feature of the language you're using and has no admiration for your cleverness.

Write software like Hemingway, not Thomas Hardy, and don't sweat the math.

Comment Formal proofs of software are useless (Score 1) 168

Hi, MIT guys, formal proofs of filesystems are useless because you cannot incorporate physical systems into formal proofs. Real filesystems exist on real hardware.

I guarantee that your file system will fail if I start ripping cables out. A suitably strong EMP will take it out. In fact, I bet I could nuke your filesystem if I used my ham radio transceiver too close to the device. Other things that would destroy your filesystem include floods, earthquakes, and a lightning strike.

I began writing this by stating that formal proofs of software are useless, but I don't really believe that to be true. I strongly believe that we should strive for software correctness. Any techniques that can we use to make software better are worth pursuing.

But it has to be remembered that software cannot be isolated. When we do develop a true AI, it will escape and destroy us, probably within milliseconds of an unexpected hardware event. No matter how rigorously the beast is programmed!

Comment How much RAM is enough for developers? (Score 1) 350

A better discussion for Slashdot might be how much RAM is enough for developers.

I can barely squeak by on 6 GB, but my next laptop will need to be at least 16 GB, if not 32.

Funnily enough in my current configuration the biggest memory hog isn't VMWare or Oracle. It's Firefox.

  5326 jgotts 20 0 21.584g 1.891g 108628 R 82.1 33.0 287:20.13 firefox

It's sometimes hard for me to determine whether Firefox is working properly or there is a massive bug. I have a fair number of tabs open, but never more than 20.

Comment User Dictionary (Score 1) 84

I see they mentioned User Dictionary right in the article. I consider User Dictionary to be malware.

I have to lock my version of Google+ to the factory version or else User Dictionary gets stuck in such a tight crash-restart loop that it only yields to the GUI for a split second before presenting the crash dialog. It eats all battery capacity in a few hours while the phone is sitting completely idle.

I have no idea what uses User Dictionary, but you certainly cannot disable it. Also, technically speaking, I don't know whether this is a bug in User Dictionary or Google+ but it should be my choice to chuck a useless, possibly not buggy app in favor of the incredibly useful app I happen to use to backup my photos which may or may not have a bug of its own.

No word from Google on the bug/interaction. I've posted about it, Tweeted about it, and my review of Google+ mentions the issue. I don't know what other forums might be of use, but I don't want to waste any more time on it.

P.S. I plan on using my smartphone for 5-6 years, so throwing away my hardware is not an option. I think people who get new smartphones every 2 years are fools (whether you pay for your phone in cash up front or pay via a jacked up phone bill every month you're still paying for something you don't need). My 3-year-old model still works great, aside from software bugs.

Comment Quite simply... (Score 2) 419

People who are the most concerned about nuclear energy understand these facts:

1) High-level radioactive waste is deadly to touch, hold, carry, etc., for hundreds of thousands of years. You can pick up a piece of this waste, hold on to it for a while, and be dead in a few days. Perhaps you picked it up, studied it for a while, and dropped it in the space of 15 minutes because it was sitting a pile of rocks.
2) Homo sapiens, our species, is believed to be between 100,000 and 200,000 years old.
3) We've only had writing for about 5,000 years, and in certain countries in sub-Saharan Africa only about half the population is literate in ANY language. Before the modern era, it's thought that no more than 40% of the world population was literate.
4) As we all know, the most advanced civilizations decline and are sometimes replaced by primitive civilizations. Among many other causes, formerly fertile land can become arid. Formerly great civilizations in Central America are now jungle with isolated tribes. Formerly fertile Northern Africa is a now great desert habited by nomadic people and not much else.
5) The world is ignorant about geology. We have no idea how to do fracking safely, even though it could probably done safely. The reason is we don't have enough understanding about how the ground beneath our feet works.

Nuclear energy, in its present form, produces a waste product that will outlive our species. We all hope that Homo sapiens will evolve into a better species, but there is no guarantee of that. Perhaps there will be a Homo successor that is more primitive. We can guess what that species will be like, but we're just guessing. It is of paramount importance that we are able to communicate with that successor species. Then we need to find a place to put the waste on Earth that is geologically sound, yet we can't even drill for oil safely without causing earthquakes. Good luck with that.

The inevitable will happen and the waste will somehow surface. Let's say that there is ample signage. How good are you at Sumerian cuneiform? I'm not so good at it, either. In fact, I don't even know a single symbol. At one time cuneiform was the premier go-to language, the English of its day, and it is only about 5,000 years old, give or take a few thousand years. If radioactive waste was labelled in cuneiform, I'd have to retain a scholar to understand the risk of the material. Can you even imagine how dissimilar a language 500,000 years from now will be from English? That's 100 times as long as the whole history of writing.

We're kidding ourselves by thinking this energy is clean. What we are doing, actually, is poisoning the land for hundreds of thousands of years. The built-in assumption exists that we'll be so advanced techologically speaking by then that future residents of Earth will have no problem dealing with any of it. In fact, I believe that the oppposite is true. We can't depend upon steady progress. Progress has always been in fits and starts, with intense periods of decline, and at times entire civilizations have dropped off the face of the Earth.

Comment Autonomous vehicles' Achilles heel (Score 3, Insightful) 77

Autonomous vehicles will have terribly expensive tire, rim, and suspension repair work in my state every year. Michigan has the worst roads in the nation, and avoiding potholes and subsequent vehicle damage requires illegal driving behavior. Examples that I can think of off hand include driving the wrong way on a two-lane road over a double yellow line, driving halfway in one lane and halfway in another lane, deliberately crossing onto paved shoulders, high-speed swerving maneuvers, and other behaviors that autonomous vehicles will probably not be programmed to do. Expect to pay $1,000-$2,000 per year for your autonomous vehicle, at least if you own one here.

Worse than money, though, is bad accidents. Potholes in Michigan cost the average person about $500/year with defensive driving, but potholes were so bad one year on a road I drove every day that they caused a wheel to fall off. Only because I had just turned off onto a less-used road was I able to stop safely.

I'd be quite upset if my autonomous vehicle was trying to be legal, and as a result caused a total and possibly risked my life.

Comment Impractical (Score 1) 243

AA batteries are $1 for a four pack at the dollar store. That's 25 cents per battery. Admittedly, these batteries are low end. If you use one of their coupons, Harbor Freight sells their private label AA batteries for about 25 cents when you buy 24.

Let's say that I'm using a 4 AA cell device, my old camping lantern. It has one dollar worth of batteries and $10 worth of these devices. The lantern itself isn't even worth $10. Seems like an awful lot to spend to me, because the $10 investment becomes a permanent part of the lantern. You don't swap it around. For each device you need 2, 4, 6, or 8 of these things.

More logical than buying this product would be using rechargeable batteries, but for me even that is a tough sell because I recycle alkaline batteries.


Choosing the Right IDE 443

Nerval's Lobster writes: Modern software development often requires working with multiple tools in a variety of languages. The complexity can give even the most skilled developer a nasty headache, which is why many try to rely on Integrated Development Environments (IDEs) to accomplish most of the work; in addition to source-code editors and automation, some even feature intelligent code completion. With so much choice out there, it's hard to settle on an IDE, so we interviewed several developers, who collectively offered up a list of useful questions to ask when evaluating a particular IDE for use. But do developers even need an IDE at all? When you go to smaller, newer developer shops, you're seeing a lot more standalone editors and command-line tools; depending on what you do, you might just need a good editor, and to master the command-line tools for the languages you use. What IDE do you prefer, if any, and why?

Comment Yes (Score 1) 267

I'm firmly in the yes camp.

Since I began programming in 1985, I've encountered dozens of languages. The popularity of every language waxes and wanes, and occasionally it will wax and wane a second time (perhaps like Java is doing today). Programming languages never completely disappear, but the trend in usefulness of languages is on the rise due to more sophisticated toolkits.

Knowing these facts, it's never a bad thing to learn a new programming language. Since languages never completely disappear, you never know when your knowledge of that language may come in handy. I occasionally get job offers to work on languages and APIs that I haven't touched in 15 or 20 years. Software can have an even longer life. We still use software that's 50 years old (via ATM networks that connect to bank mainframes, for example). I once used a bank API that had a ridiculously complicated link like including -lcobol. It is possible that I was linking in code on that Linux system that was older than me.

If you're looking to learn a little-known programming language, lean towards a newer language. As I said, newer languages can do more, and do so more compactly.

Finally, think of the big picture. As a programmer, you do programming. The language is your tool. What your job really is is creating and manipulating mathematical expressions. I know that sounds super boring but that's what programming languages are, a way to make dealing with math a bit easier. The more ways you learn to deal with this math, the better programmer you will become. Think of repairing a car. The best mechanic in town might work at a Mercedes dealership, but if you put him in a GM dealership he would probably become their best mechanic after a short time. The job is not the tools.


Microsoft Increases Android Patent Licensing Reach 103

BrianFagioli writes: Microsoft may not be winning in the mobile arena, but they're still making tons of money from those who are. Patent licensing agreements net the company billions each year from device makers like Samsung, Foxconn, and ZTE. Now, Microsoft has added another company to that list: Qisda Corp. They make a number of Android and Chrome-based devices under the Qisda brand and the BenQ brand, and now Microsoft will be making money off those, too.

Comment ASUS (Score 1, Interesting) 417

ASUS will outlive Acer, but does it really matter?

Unless you're a gamer, you're wasting your money buying a desktop (whatever form factor). Before long reasonably priced laptops will run games well, too, and the desktop PC will be effectively dead. I've been building/maintaining towers since 1991, and I said goodbye to all but one machine this month. I don't know why I kept it. I turn it on once a month.

Maybe you want a desktop for storage. Laptops are shipping with more than 1 TB of storage, and you can replace a desktop with one or two USB 3.0 enclosures with 4 TB (or larger) 7200 RPM drives for a few hundred bucks.

Eventually laptops will be dead, too. A more interesting question might be who will be the last laptop vendor and when will nearly all people finish the switch to tablets, phones, watches, or perhaps nearly invisible computing.

Computer Science is merely the post-Turing decline in formal systems theory.