top POV-Ray Is Now FLOSS
What you have described is called photon mapping. I think there is some support for photon mapping in at least some version of povray (I'm not sure if it ever made it in to an official release), but in any case it's an optional feature. It is more accurate to refer to povray as a ray-tracer. In ray-tracing, you send out rays from the camera position and test them for intersection against objects in the scene. These rays can in turn spawn additional rays (for reflection and refraction), and at each hit location you can cast a ray back to each light source to test whether that light is occluded by an object.
There actually are some pretty good game engines that do ray tracing. I'd recommend looking into
Arauna and Brigade. (Last time I tried them they were a bit sluggish and ran at a low resolution, but that was about 5 years ago so things have probably gotten better.)
top Info Leak Wars To Get Messier
David Miranda, the partner of the Guardian's Glenn Greenwald, was detained while transporting encrypted data on the Snowden affair from Berlin;
That's quite an allegation. Do we have any reason to believe that Miranda was transporting anything of the kind?
top World's First Road-Powered Electric Vehicle Network Opens
Road powered electric vehicles are awesome, I'm glad to see someone doing it, but I'm a little worried about safety and efficiency with the inductive charging technology. I certainly wouldn't want to be right on top of a 20khz rf transmitter that's pumping out tens of kilowatts. I don't remember the permissible exposure limits off the top of my head, but this sounds like it would be way above what's considered acceptable for HAM radio. Is there some way to keep that RF energy from spilling all over the place? How much of that energy actually makes it to the car, and how much is lost to RF, heat, noise, etc..?
top Bell Labs Break Record With 31Tbps Via a Single 7200km Optical Fibre
Wrong, this still requires amplifiers every 100km, just like today.
They don't explicitly say that there were no repeaters for this particular test, but that is strongly implied. (Sloppy reporting.) However, they do compare it to a test done recently over 10,000km with no repeaters:
Then in January 2012 a Japanese team working out of NEC successfully transmitted 4Tbps over a single “ultra-long haul” (10,000km) fibre optic cable (no repeaters) by making use of WDM just like Alcatel-Lucent (here). Lest we not forget all the other developments, such as the successful UK test of a new type of hollow fibre optic cable that earlier this year delivered speeds of 73.7 Tbps (here).
Alcatel-Lucent might have just set a new record and one that it is arguably most notable for its distance but such records are clearly made to be broken. GCHQ will probably get a headache if they want to “tap” (spy) on the next generation of transoceanic cables.
I had no idea that those kinds of distances were possible without repeaters. This is, indeed, big news.
top Interview: Ask Jimmy Wales What You Will
What do you think Wikipedia is going to need to do to keep up with content maintenance in the long term? Is editor decline inevitable, and thus the focus should be on making vandalism harder, or do you think current trends can be reversed with the right tools or policy?
top Dao, a New Programming Language Supporting Advanced Features With Small Runtime
There actually is a
Haskell FPS. State manipulation is a little awkward in some ways, in part because there isn't a universally agreed-on way to do it, but the tools are getting better. With lenses on top of a State monad, things start to look pretty similar to an imperative language, except that you get the benefits of functional programming as well (for instance, error handling is a lot easier when you don't have to back out a bunch of changes because you still have your original state lying around).
top Dart Is Not the Language You Think It Is
Return a list from a function. Sure, you can legally do it, there's nothing in the language inherently stopping you, but experienced C programmers will avoid returning a list at all costs, because suddenly you have to care about whether the caller frees the list properly, and what if the things in the list are used elsewhere and we need to do reference counting etc.. etc... I've worked on a C codebase that was a couple hundred thousand lines of code, and I can't think of anywhere that we ever returned a list from a function. I can't think of any Haskell program more sophisticated than "hello world" that I didn't use "map" and other list functions all the time.
Ultimately, the cost of manual memory allocation isn't just the extra work you have to do to make sure you aren't leaking or corrupting memory, it's the algorithms you won't allow yourself to even consider because the memory management would just be too hard.
I'm not saying C doesn't have it's place, I'm just saying that there are software engineering costs associated with using C as opposed to a higher-level language.
top Discovery Increases Odds of Life On Europa
Given that this thread mentioned using an RTG (a Radioisotope Thermal Generator, which is just an electrical generator that operates off of waste heat produced by a radioactive material decaying), it seems like the solution here is pretty obvious, even if it might be a painfully slow.
top Raspberry Pi's $25 Model A Hits Production Line
That's hard to do without the ethernet port, but
it's been done with the model B.
top Why Dissonant Music Sounds 'Wrong'
Guitar and piano are usually both equal tempered, though pianos typically have a slightly stretched octave to compensate for the strings having harmonics that aren't exact integer multiples of the fundamental. (In other words, it's done to compensate for the physical limitations of the instrument, rather than to compensate for the mathematical limitations of the tuning system.)
One can, of course, tune a piano to just intonation. (My piano is currently tuned that way, partly because I wanted to hear what it would sound like, and partly because, with an oscilloscope, it's a lot easier to tune to just intonation than 12TET and I'm too stingy to hire a tuner to do it the "right" way.)
It is possible to make a just intonation guitar as well, though it's not usually done. Here is
one of mine that I made a couple years ago. I just finished putting together a just intonation walnut through-neck electric bass with a 2-octave fingerboard a couple days ago.
top Torvalds Uses Profanity To Lambaste Romney Remarks
There's something that bothers me about this story. Linus's G+ account is basically a personal blog. It isn't tied directly to Linux or the open source community in any way other than that the author is Linus Torvalds and his posts occasionally mention Linux or open source software. If we were to judge everything Linus says about anything in public based on the criteria of how it "reflects on the open source community", then doesn't that essentially mean that we don't think Linus has a right to express his own opinions in public?
If you don't like those opinions, or find them offensive, that's fine. But let's not always assume that any famous person expressing an opinion must always be representing something bigger than him or her own self.
about a year and a half ago
top How Do I Get Back a Passion For Programming?
I second the functional language suggestion. For awhile, the only two languages I used regularly were C and (to a lesser extent) Perl, and felt a general sense of dissatisfaction with programming -- it wasn't clear at the time if it was the tools, or just me. I happened to take a pretty hard class on game tree search, and realized I needed to learn a more expressive language fast if I was going to keep up with the assignments. I picked Ocaml, and within a few weeks I was more productive (for the kinds of problems that were assigned as homework in this class) than I would have been in C or Perl. I stuck with it and eventually used Ocaml for some bigger projects that I did on my own. After a few years of Ocaml, I switched to Haskell because I wanted better parallelism support. By then, I'd become sufficiently accustomed to functional idioms that Haskell didn't scare me, and I've been using Haskell ever since. Not at my current job though, unfortunately... that's still C, but I rest easier knowing that there is a more pleasant way to get stuff done and I don't necessarily have to write C the rest of my life.
top Ask Slashdot: Unity/Gnome 3/Win8/iOS — Do We Really Hate All New GUIs?
I have a netbook with Ubuntu 11.4. I didn't mind Unity at first, but then I quickly realized that a) it is designed to prevent me from working the way I want to and b) it's really buggy.
I won't elaborate on the second point. If you already know what I'm talking about, then fine, if not then it must either be working fine for you, or you aren't using Unity at all. Regarding the first point, though -- there seems to be someone out there with some sort of religion about not having two windows of the same application at once. Years back, there was a big controversy about Nautilus not opening a new window when you double-clicked on a directory. I didn't pay much attention because I don't use Nautilus. More recently, I've been using gedit quite a lot to write code (take that, vim and emacs users!), but every now and then I want to have two windows open so I can look at more than one file at once. Can't do it. If I try to open another gedit window, it just creates a new tab in the existing window. Maybe there's some way to turn this off, but it seems like a pretty bad default to have an application go out of its way to prevent a user from ever looking at two files at the same time. Fast forward to Ubuntu 11.4. Now, the application launcher thing on the left has some default launch buttons that can be deleted and replaced with the applications I actually use (good bye, word processor; hello, terminal). These launcher buttons have strange behavior though -- if the app is already running, they just highlight the window of the already opened app instead of opening a new window. I'm not convinced that's a good idea even for a word processor, but for terminals it's just unusable.
To be fair, it is possible to open multiple terminals if you don't use the launcher, but instead click on the magnifying glass with a plus in it, which (contrary to every GUI interface I've ever used before) isn't actually a zoom button, but rather is used to search for applications. Searching for terminal and launching it from there allows you to open more than one window.
I feel like the party line about Unity is that "It may be different from what you're used to, but Unity is a significantly better, more usable interface and it will be worth a short learning curve." In actuality, it seems like the real story is, "Working with multiple windows is too messy. We've fixed that bug by not allowing you to use multiple windows. If this upsets you, then you're not Ubuntu's target audience."
I haven't tried the newest Ubuntu. If it isn't any better, I think it might be time to start looking for a better distro.
top Slashdot Asks: Whom Do You Want To Ask About 2012's U.S. Elections?
electoral-vote.com and also wrote a textbook on operating systems that many of us read as undergrads.
top Slashdot Asks: Whom Do You Want To Ask About 2012's U.S. Elections?
top US Troops To Leave Iraq By End of Year
Quite true. As I understand it, members of the United States military are subject to the uniform code of military justice, and we typically require soldiers to have immunity from local laws as a condition of us maintaining a military base on foreign soil. In the case of Iraq, they as a sovereign nation decided not to grant that immunity, so we're leaving.
I'm not so sure what the situation is for contractors. I believe there were a few embarrassing events where private security personnel killed civilians and, not being subject to either local laws or the UCMJ, there was no way to charge them with a crime. I don't know if Iraq has relinquished immunity from contractors since then.
top OCaml For the Masses
I'm not sure exactly what you're trying to say, but it sounds like something along the lines of "We already have for loops and spinlocks and they work. Why would anyone want anything else?", so I'm just going to assume that's what you meant.
Haskell doesn't use for loops because they don't make any sense in a pure-functional execution model. "You want to cause a side effect N times? What is this "side-effect" that you speak of? What do you mean the body of the for loop doesn't have a value?" Haskell does have a sort of for loop for monadic code called forM_, if that's what you really want. Ignoring the restrictions of the Haskell model of computation, if we take a look at the for loop construct, there are few things in its favor and a few that aren't so great. It is simple and it is possible to express a surprising variety of common patterns with the for loop, thus freeing the programmer from learning to use a larger number of special purpose constructs (like map, fold, zip, etc...) that you might use in a language like Haskell. On the downside, though, for loops are rather verbose, they tend to be lousy at abstracting away the details of iterating over data structures, and the compiler often has to make fairly conservative about how it optimizes the loop. It may be a "solved problem", but technology isn't just about running with the first solution that happens to work. Sometimes, it's worthwhile asking if we're using the best abstractions. I'm sure Alta Vista thought search was a "solved problem" before Google showed up.
As for spinlocks, they certainly do work but they're pretty easy to misuse. Common mistakes include forgetting to grab a lock in the first place before reading or writing some shared variable and getting into deadlocks by acquiring multiple locks in an inconsistent order. You can't make either of those mistakes in STM, and it comes with an added benefit that it's possible to take two existing atomic operations and combine them into a single atomic operation without having to re-write the original two operations.
This is assuming you use STM, but in Haskell you don't have to. If you like spinlocks, then you'll be right at home with the MVar interface. Alternatively, it is possible to parallelize pure code without using locks at all, using par, parMap, pseq, etc... The neat thing about going the pure route is that you get parallel code that is deterministic. Pure functions are guaranteed to always return the same value given the same arguments, even if the function is implemented internally as a parallel computation. It's these sorts of invariants that make Haskell programs rather easier to reason about. If you know a certain class of bug won't happen, you don't have to be always on your guard.
top OCaml For the Masses
I use Haskell for personal projects and use C at work. The reasons I use Haskell when I have a choice is that a) I like the typechecker to catch my mistakes, b) the language is performant enough for what I want to do, c) I can get a lot done with not very much code, d) the language is aesthetically appealing and e) using Haskell is fun. If "d" and "e" were the only reasons, I wouldn't use Haskell. I'm lazy, and if I just want to get something done, I'll usually do it the easiest way I know how. For many problems, Haskell is the easiest way I know.
I don't expect people who haven't used Haskell to understand this. I didn't, until I had used the language for awhile and found to my surprise (writing my first large Haskell program) that restricting file access to the IO monad not only didn't restrict me in any significant way, it actually made the design of the program cleaner than what I would have come up with had that restriction not been in place. "Clean design" may sound like an aesthetic issue, but for some reason cleanly designed programs seem to consistently work better than programs that aren't cleanly designed. (I'm not claiming that writing in Haskell is the only way to achieve clean design, just that the language seems to encourage it.)
Some programs I've written in Haskell are the glome raytracer (available on hackage), a web-app, and an environmental simulator. I would consider these, if not "real world" programs, then at least representative of real world programs. I could have written them in other languages... but I didn't. Glome is the most complicated piece of software I've ever written by far (meaning that it does a lot, not that is internally complex), and I don't think it's a coincidence that it was written in the most powerful language I know.
top Cloud-Based, Ray-Traced Games On Intel Tablets
I don't think pre-rendering all possible images would be practical (except in a game like Myst where movement is confined); however when we get into the realm of global illumination, it does make a certain amount of sense to do the ambient lighting computation (which is the same regardless of camera position) up front. In a sense, this is what modern games already do -- the lighting effects are essentially painted on the walls as textures. I think the areas where there's room for improvement is that global illumination ought to respond to changes in the scene (opening a door or window, for instance), and these calculations could be made part of the game engine rather than as an artist's tool, so that procedurally-generated content could benefit from the same high-quality lighting effects as static scenes produced by level designers.
top Cloud-Based, Ray-Traced Games On Intel Tablets
I'm a big fan of real-time ray tracing, but this doesn't sound all that exciting, considering that about three years ago I was able to play a real-time ray-traced game on a middle-of-the-road laptop. Resolution and framerate weren't great, but it was playable. The game I refer to is
Outbound an open-source game based on the Arauna engine.
It's great that this is on Intel's radar, but whenever Intel demonstrates some new real-time ray-tracing demo that requires a cluster of machines, or some other kind of expensive, specialized hardware, I just think they've kind of missed the boat. We can already do that sort of thing on an ordinary desktop. (The linked site is down, so perhaps there's more to this announcement than the slashdot summary would lead me to believe.)
top ham radio
top Wikipedia link of the day: Network Effect
The network effect causes a good or service to have a value to a potential customer dependent on the number of customers already owning that good or using that service. Ergo, it means that the total value of a good or service that possesses a network effect is roughly proportional to the square of the number of customers already owning that good or using that service.
One consequence of a network effect is that the purchase of a good by one individual indirectly benefits others who own the good - for example by purchasing a telephone a person makes other telephones more useful. This type of side-effect in a transaction is known as an externality in economics, and externalities arising from network effects are known as network externalities.
top Slashdot at wikipedia
I recently came across the following articles at wikipedia:
This is an invaluable reference for those of you wondering about the origins of, for instance,
IN SOVIET RUSSIA or you insensitive clod.
top A two party system
recent thread has compelled me to author the following journal entry on the evils of plurality voting and the two party system...
It is a common phenomenon with our current election system (I'm in the US) that, regardless of the number of candidates, the vast majority of the vote is split between the Republican and Democratic candidates. Frequently, a third party candidate gets enough votes to alter the outcome of the election without receiving nearly enough votes to have a chance at winning.
Voters tend not to vote for third party candidates for fear of "throwing their vote away". This is a bad thing: voters don't vote for the candidate the really want, they vote instead for the major party candidate they dislike the least, whom they think might actually win. In other words, the voter's perception of a candidates ability to get votes influences the number of votes they actually get. A vicious cycle.
So, what is the result of all this? Well, we have basically two options at election time. Or, in other words, our individual contributions to the democratic process each ammount to a single bit. What, then, does our political process look like? One dimensional. You're either left wing, or right wing. There are two solutions to every problem: "the free market will solve everything", or "more government will solve everything". Issues (or their solutions, such as the open source "let people solve their own problems" solution) that are orthogonal to this political worldview get ignored (Electronic voting fraud? Reducing copyright duration?). People with complicated and nuanced political ideologies get typecast into one box or the other (i.e. "Lawrence Lessig is just another leftist"). This is much easier than actually
understanding issues. It's convenient for the news media, which prefers to portray things as a simple "us versus them" conflict (they try to do this without being informative enough to offend or bore anyone -- this poor reporting is often interpretted by each side of the percieved one-dimensional political spectrum as a conspiracy by the other side), which in many ways resembles sports news coverage (all entertainment, no relevance).
What, you might ask, is my solution? Well, there's
quite a few ways to elect a public official (plurality voting, borda count, instant runoff, etc...), my favorite is approval voting, whereby voters can vote for as many candidates as they like. This would allow a voter to vote for, say, both George Bush sr. and Ross Perot, or Ralph Nader and Al Gore. The voter is given many more options than they would have with plurality. It's not perfect (there is no way to distinguish between a wonderful candidate, and one you merely tolerate), but it's a very simple system, and the voter is given many more choices than they would have otherwise. chances are, two of the last three elections would have turned out different.
I don't expect a president to be elected this way any time soon, but maybe we can start small (elections for senators, mayors, high school student body presidents, slashdot polls).