Follow Slashdot blog updates by subscribing to our blog RSS feed


Forgot your password?
DEAL: For $25 - Add A Second Phone Number To Your Smartphone for life! Use promo code SLASHDOT25. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. Check out the new SourceForge HTML5 Internet speed test! ×

Comment Charging? Probably not (Score 1) 140

I remember reading about an ultra-low power wifi antenna that uses incoming wifi signals and "reflects" those signals back at the sender, but somehow manipulates the reflected signal to carry data. This reduced power required by the transmitter by some large fraction. This is the only reasonable explanation I can think of because remote battery charging is not efficient at all, but this signal reflection claimed to be very efficient.

Comment Re:Sadly? (Score 1) 387

I'm not in favor of working on other projects when on the clock for someone else, but it is a very normal thing to take many breaks for any intellectual job. The brain necessitates it. You literally cannot learn anything new while your working memory is consumed by what you've been thinking about. You must take time to forget in order to learn. You do most of your learning when your working memory is empty.

Comment Masters (Score 1) 199

An apprentice under a master is a good way for someone to learn. The problem is there are almost no masters and way too many cargo-cult programmers in the industry that will be passing on their superstitious religion of how they think programming works. A master knows when not to use best practices. A master should be confident enough in their abilities that they can safely ignore the warnings of other masters, but obviously wise enough to know when to take good advice. Or as one master said(paraphrased) ~"If I tell you to not ever do something and you always listen to what I say, you are not a master". Or another one who said ~"A master knows when to use an anti-pattern". According to psychology, a master can synthesize knowledge without having to remember it; Thinking is all that is required. This is also almost exactly the definition of abstract reasoning.

My biggest gripe about how most other programmers "teach" is they want you to memorize everything because that's what they do. No better than a good hands-on technical college. What people need is more theory and practical application of theory.

Only mediocrity can be trusted to be always at its best.

Mediocrity at best breeds more mediocrity, but a master can better themselves.

And don't confuse expertise for mastery. An expert may spend a lifetime honing a skill to deliver mediocrity of a consistent quality. A master will intuitively understand new problems with no time spent. Expertise is dependent on knowledge and experience, mastery is not. One may master without being an expert, but master do tend to be experts.

Comment DOS attack (Score 1) 63

Someone smarter than someone else could flood the other person's brain. Doesn't even need to be overall intelligence, just in whatever part is creating the thoughts. What if I'm thinking about an n-dimensional problem where n is much greater than 3, and I try to transmit this idea to someone else? This is excluding my A.D.D.. Sometimes I think so fast I almost blackout. Many concurrent thoughts traversing many different paths, trying to solve a difficult problem.

I recognize that the rate and quality of ideas transference is highly limited by traditional communication methods, but there is always going to be some amount of "[lossy] compression" going on unless two brains are identical.

Comment Re:What makes me really unhappy (Score 1) 149

Fearing concurrency is irrational. Difficult to reason about concurrency when you're in an irrational state of mind. The ability to quickly debug concurrency issues separates cargo-cult from programmers, because understanding concurrency requires understanding of the code. I will agree that working in poorly designed concurrent code is a major headache.

Comment Re:under-performing colleague (Score 1) 149

No, just under-performing. I am one of those that does not write any code before thinking about the problem. I may go weeks without even opening a prorgamming tool. Just staring blankly at my computer, thinking. For any slightly complex project, I am about 10 faster, ignoring my reduced number of bugs and higher performance.

A more recent projects was one that I had already done in the past. I spent about two weeks working on it. Around 4 days thinking and 6 days coding and testing. It was a high performance async concurrent library that could be easily reused and extended. Extending required little knowledge of concurrency as I wanted the library to be easy to use for any programmer.

Another project came along about a year later that would have been a 100% perfect fit for my library. I could have had the project completed in 1-2 days. Instead management decided to give the project to some senior programmers, because the project was of "high priority". It was a two man team. They came to me for guidance because they were aware that I have worked on this kind of stuff before. I spent about 3-4 weeks in meetings with them, then it took about 5 months for them to complete it. In the end, there was no tests, because they didn't have time, the code was brittle, was slow, everything was hard-coded. Small requests for change would take days, where in my system, everything was just a configuration, so they changes would have taken minutes with my library.

I got to look at their code in git. It's crazy simplistic. Loads tens of gigabytes of data into memory instead of streaming it, among other horrors. Looking at git, I could see they started coding the day they got the project.

Comment Re:Holy Blinking Cursor, Batman! (Score 1) 236

For all non-social or coding aspects of programming, abstract reasoning is universally considered the single most important ability. Yet this ability allows one to solve problems with zero prior knowledge. It is by definitive the ability to recognize a new problem and solve it with no prior knowledge of anything. Knowledge is virtually useless for anyone with decent abstract reasoning. If anything, knowledge is a hindrance that makes it more difficult to learn because accessing knowledge is mentally expensive.

You make a clean discretion between "text book" knowledge and the ability to use knowledge, but the same ability that allows you to use knowledge also makes knowledge moot. There are people who can "use" knowledge but have weak abstract reasoning, but they also have the problem of not knowing when to NOT use their knowledge. This is dangerous. Behold, the golden hammer. The only way these people learn is from making mistakes over very long periods of time and the luck of happen-stance allows them to realize their error.

This is why there is virtually zero correlation between experience and ability in the tech industry. People with knowledge are useful as reference books.

Another related topic is about forgetting. Turns out forgetting is an important part of learning. The brain regularly needs to make room. Research seems to be leaning towards the inability of older people being able to learn and reason seems to be highly correlated with how much knowledge they have. Being able to quickly learn and quickly forget is important. Abstract reasoning allows for quick learning. They even say abstract reasoning peaks in your teens, for a normal person. After that, they assume people start to rely more on their knowledge, allowing their abstract reasoning to atrophy.

Comment Re:Holy Blinking Cursor, Batman! (Score 2) 236

Knowledge seems inversely related to understanding. /sarc

But really. In psychology, it is known that accessing memory while attempting to learn hampers your ability to learn. Internalizing a concept such that you no longer need to access memory, but instead "just think that way" frees up your memory. A typical person can only hold a hand full of concepts in their head at once. If you're dealing with a complex system, memorizing it is incredibly inefficient. Learning to think like the system allows you to effectively hold it all in your head without having to use your memory.

Like Minecraft, if you instead algorithmically generate your "memories" you can free up your actual memory. Minecraft manages to compress an entire map down to a small seed and only has to store the differences. This is how you deal with large complex system.

I literally have a memory disability, but I can manage hugely complex systems in my head by designing the system using simple patterns and making sure the patterns can express the complexity of the system. Like a fractal. I compensate for my disability by "regenerating" my memory in real time. I have difficulty telling the difference between something I just thought of or something that I remembered because thinking is nearly the same as remembering for me.

This breaks down outside of logical systems. Day-to-day activities give me issues. Sometimes I forget my own birthday. It took me nearly 6 months to remember my wife's name while we were dating, and I saw her almost every day. I had to give her a pet name. At first she didn't like it, but it grew on her. Most people who meet me think I'm fairly normal but slightly dunce. That is until they get me working on something that requires abstract reasoning.

I think anyone could do what I do, but I take a much longer time getting up to speed because it takes time for me to internalize a concept into my way of thinking. But once I integrate a concept, I no longer have to remember anything about it, it become natural for me to think that way. I am forced to do this because of my disability, but if people were not in such a hurry to crank out some code, they to could free up their limited memory for other more important things, like learning.

Comment Re:Holy Blinking Cursor, Batman! (Score 1) 236

"Tell me what a class invariant is."

I don't know most terms myself. I typically self discover nearly everything that I know by thinking about a problem for a little bit. I didn't know the term "race condition" when I was 8 years old when I theorized they would be an issue within a few minutes of learning that multi-core CPUs exist. I've been using "tiling" for years to optimize memory access without knowing what it was called. These things just seem blindly obvious when you see the problem.

Comment Re:Picking one at random (Score 1) 234

I wouldn't say you have to specialize. It would just mean you need to spend more of your time researching. In general, I find I can catch up to almost any specialist within a month, but that's a month of no production, just learning. That is a lot of down time. On the flip side, most projects that we have take 6 months to a year, and spending 1 month of it researching to catch up to what a specialist spent a life-time specializing is probably acceptable.

It really comes down to the size of your project. If it's really small and needs to be done quickly (less than several months) and well, go with a specialist.

Comment Re:Lots of links to articles, phfft (Score 1) 234

The "Clean Code" guy makes a lot of extremist devil's advocate assertions with the intention of making your think about clean code in a purist way. Of course it is up to you, the reader, to apply his wisdom in a practical manner. His most useful chapters are about code smells. They are the most practical. Kind of "If you see this, stop and think about why, and if it should be done this way or is there a cleaner way".

Slashdot Top Deals

1 1 was a race-horse, 2 2 was 1 2. When 1 1 1 1 race, 2 2 1 1 2.