Domain: github.com
Stories and comments across the archive that link to github.com.
Stories · 729
-
Kinectasploit: Hack Tools Meet Kinect
mask.of.sanity writes "While Hollywood often fails to portray hacking, one researcher has made the art of exploitation look more like the big screen. Kinectasploit is hacking in the form of a first-person shooter that melds Microsoft's Kinect controls with 20 hacking tools including Metasploit, Snort, Nessus, John the Ripper and Ettercap. The work in progress can be downloaded from github." -
Obama Announces Open Data Policy With Executive Order
In an overdue but welcome move, President Obama today issued an executive order mandating "open and machine-readable data" for government-published information. Also, kodiaktau writes "In a move to make data more readily available, the United States of America has announced the Project Open Data and has chosen GitHub to host the content." Ars has a great article on the announced policy, but as you might expect, it comes with caveats, exceptions, sub-goals and committees; don't expect too much change per day, or assume you have a right to open data, exactly, in the eyes of the government, but — "subject to appropriations" — it sounds good on paper. (I'd like the next step to be requiring that all file formats used by the government be open source.) -
Obama Announces Open Data Policy With Executive Order
In an overdue but welcome move, President Obama today issued an executive order mandating "open and machine-readable data" for government-published information. Also, kodiaktau writes "In a move to make data more readily available, the United States of America has announced the Project Open Data and has chosen GitHub to host the content." Ars has a great article on the announced policy, but as you might expect, it comes with caveats, exceptions, sub-goals and committees; don't expect too much change per day, or assume you have a right to open data, exactly, in the eyes of the government, but — "subject to appropriations" — it sounds good on paper. (I'd like the next step to be requiring that all file formats used by the government be open source.) -
Tool Reveals iPad and iPhone User Locations
mask.of.sanity writes "A researcher has found that Apple user locations can be potentially determined by tapping into Apple Maps and he has created a Python tool to make the process easier. iSniff GPS accesses Apple's database of wireless access points, which is collected by iPhones and iPads that have GPS and Wi-Fi location services enabled. Apple uses this crowd-sourced data to run its location services; however, the location database is not meant to be public. You can download the tool via Giuthub." -
Btcd - a Bitcoind Alternative Written In Go!
An anonymous reader writes "The folks at Conformal have announced btcd, an alternative full-node implementation to bitcoind, written in Go! They have released the first of their core packages, btcwire, available for download at GitHub. As a bitcoin user myself, I love the idea of a full alternative. It will only make bitcoin stronger and more independent. This will be great for the Go community, too!" -
OpenStreetMap Launches a New Easy To Use HTML5 Editor
SWroclawski writes "On the heels of the news that OpenStreetMap is allowing anonymous contributions with its 'note system,' the project has launched a new in-browser editor called iD, which is not only easier to use, but written completely in JavaScript, using the D3 library for rendering. With all these improvements, OpenStreetMap is gaining popularity and has started a new donation campaign for additional hardware to support all the new contributors." This replaces a flash based editor (really great news!). The code is, naturally, available (under the WTFPL). -
Firefox Is the First Browser To Pass the MathML Acid2 Test
An anonymous reader writes "Frédéric Wang, an engineer at the MathJax project, reports that the latest nightly build of Firefox now passes the MathML Acid2 test. Screenshots in his post show a comparison with the latest nightly Chrome Canary, and it's not pretty. He writes 'Google developers forked Webkit and decided to remove from Blink all the code (including MathML) on which they don't plan to work in the short term.'" -
Epic and Mozilla Bring HTML5 OpenGL Demo To the Browser
sl4shd0rk writes "Mozilla and Epic (of Epic Megagames fame) have engineered an impressive First Person OpenGL demo which runs on HTML5 and a subset of JavaScript. Emscripten, the tool used, converts C and C++ code into 'low level' JavaScript. According to Epic, The Citadel demo runs 'within 2x of native speeds' and supports features commonly found in native OpenGL games such as dynamic specular lighting and global illumination. This concept was previously covered on Slashdot, however the Citadel demo has just been released this week." -
IBM Researchers Open Source Homomorphic Crypto Library
mikejuk writes with news of an advancement for homomorphic encryption and open source: "To be fully homomorphic the code has to be such that a third party can add and multiply numbers that it contains without needing to decrypt it. In other words they can change the data by working with just the encrypted version. This may sound like magic but a fully homomorphic scheme was invented in 2009 by Craig Gentry. This was a step in the right direction but the problem was that it is very inefficient and computationally intensive. Since then there have been a number of improvements that make the scheme practical in the right situations Now Victor Shoup and Shai Halevi of the IBM T J Watson Research Center have released an open source (GPL) C++ library, HElib, as a Github project. The code is said to incorporate many optimizations to make the encryption run faster. Homomorphic encryption has the potential to revolutionize security by allowing operations on data without the need to decrypt it." -
FSF Certifies Atheros-Based ThinkPenguin 802.11 N USB Adapter
gnujoshua writes "You may recall that last Fall, the LulzBot AO-100 3D printer was awarded the use of the Free Software Foundation's Respects Your Freedom certification mark. Today, the FSF announced certification of the ThinkPenguin TPE-N150USB, Wireless N USB Adapter, which uses the Atheros ARAR9271 chip. The FSF's RYF certification requirements are focused on the software (not the hardware designs) of a product, which in this case was primarily the device firmware and ath9k-htc module in the Linux-libre kernel. (Disclosure: I work for the FSF.) There's also a cool story that is within this story... which is that the firmware for the Atheros AR9271 chipset was released as a result of a small device seller (ThinkPenguin) striking a deal with a large electronic device manufacturer (Qualcomm Atheros) to build a WLAN USB adapter that shipped with 100% free software firmware. This deal was possible largely because two motivated Qualcomm Atheros employees, Adrian Chadd and Luis Rodriguez, made the internal-push to get the firmware released as free software." -
BeagleBone Black Released With 1GHz Cortex-A8 For Only $45
DeviceGuru tipped us to the release of the latest single board computer from Beagle Board. It's been two years since the previous BeagleBone was released, and today they've released the BeagleBone Black (including full hardware schematics) at a price competitive with the Raspberry Pi ($10 more, but it comes with a power brick). Powered by a Cortex-A8, it has 512M of DDR3 RAM, 2G of onboard eMMC, two blocks of 46 I/O pins, a pair of 32-bit DSPs, the usual USB host/client ports, Ethernet, and micro-HDMI (a much requested feature). Support is provided for Ångstrom GNU/Linux, Ubuntu, and Android out of the box. Linux Gizmos reports where some of the cost savings came from: "According to BeagleBoard.org cofounder Jason Kridner, interviewed in a Linux.com report today, cost savings also came from removing the default serial port as well as USB-to-serial and USB-to-JTAG interfaces, and including a cheaper single-purpose USB cable. (Three serial interfaces are available via the expansion headers.) In addition, the power expansion header for battery and backlight has been removed." -
LLVM Clang Compiler Now C++11 Feature Complete
An anonymous reader writes "With the latest development work on Clang ahead of the release of LLVM version 3.3, Clang is now C++11 feature complete. The last remaining features of the ISO C++11 feature specification have been implemented. C++11 support for GCC is also more or less complete." -
Mozilla and Samsung Collaborating to Bring New Browser Engine to Android
An anonymous reader writes with this bit from The Next Web: "Mozilla and Samsung on Wednesday announced a new partnership to build a 'next generation' web browser engine called Servo. The ultimate goal is to bring the technology to Android and ARM, though the two companies have not shared a timeframe for a possible launch. With the help of Samsung, Mozilla is bringing both the Rust programming language as well as Servo to Android and ARM. Samsung's contribution so far has been an ARM backend to Rust as well as the build infrastructure necessary to cross-compile to Android. In fact, the code is available now on GitHub, as is the source for Rust and Servo." For those unfamiliar, Rust is Mozilla's new safe systems programming language (kind of like BitC), and Servo is their general project to write a brand new engine using Rust. Rust has an interesting memory model that eliminates much difficulty in reasoning about threaded programs. If you know what you're doing, they claim you can cross compile the code for Android, but no functionality guarantees have been made. -
Mozilla and Samsung Collaborating to Bring New Browser Engine to Android
An anonymous reader writes with this bit from The Next Web: "Mozilla and Samsung on Wednesday announced a new partnership to build a 'next generation' web browser engine called Servo. The ultimate goal is to bring the technology to Android and ARM, though the two companies have not shared a timeframe for a possible launch. With the help of Samsung, Mozilla is bringing both the Rust programming language as well as Servo to Android and ARM. Samsung's contribution so far has been an ARM backend to Rust as well as the build infrastructure necessary to cross-compile to Android. In fact, the code is available now on GitHub, as is the source for Rust and Servo." For those unfamiliar, Rust is Mozilla's new safe systems programming language (kind of like BitC), and Servo is their general project to write a brand new engine using Rust. Rust has an interesting memory model that eliminates much difficulty in reasoning about threaded programs. If you know what you're doing, they claim you can cross compile the code for Android, but no functionality guarantees have been made. -
Mozilla and Samsung Collaborating to Bring New Browser Engine to Android
An anonymous reader writes with this bit from The Next Web: "Mozilla and Samsung on Wednesday announced a new partnership to build a 'next generation' web browser engine called Servo. The ultimate goal is to bring the technology to Android and ARM, though the two companies have not shared a timeframe for a possible launch. With the help of Samsung, Mozilla is bringing both the Rust programming language as well as Servo to Android and ARM. Samsung's contribution so far has been an ARM backend to Rust as well as the build infrastructure necessary to cross-compile to Android. In fact, the code is available now on GitHub, as is the source for Rust and Servo." For those unfamiliar, Rust is Mozilla's new safe systems programming language (kind of like BitC), and Servo is their general project to write a brand new engine using Rust. Rust has an interesting memory model that eliminates much difficulty in reasoning about threaded programs. If you know what you're doing, they claim you can cross compile the code for Android, but no functionality guarantees have been made. -
Mozilla and Samsung Collaborating to Bring New Browser Engine to Android
An anonymous reader writes with this bit from The Next Web: "Mozilla and Samsung on Wednesday announced a new partnership to build a 'next generation' web browser engine called Servo. The ultimate goal is to bring the technology to Android and ARM, though the two companies have not shared a timeframe for a possible launch. With the help of Samsung, Mozilla is bringing both the Rust programming language as well as Servo to Android and ARM. Samsung's contribution so far has been an ARM backend to Rust as well as the build infrastructure necessary to cross-compile to Android. In fact, the code is available now on GitHub, as is the source for Rust and Servo." For those unfamiliar, Rust is Mozilla's new safe systems programming language (kind of like BitC), and Servo is their general project to write a brand new engine using Rust. Rust has an interesting memory model that eliminates much difficulty in reasoning about threaded programs. If you know what you're doing, they claim you can cross compile the code for Android, but no functionality guarantees have been made. -
EdX Online Classroom Code Going Open Source, Uniting With Stanford
The edX project today announced that they are joining forces with Stanford and releasing the source to edX on June 1st. As part of the platform going Free, Stanford will be integrating features from their Open Source Class2Go project. From Stanford: "Mitchell said that Stanford's Class2Go platform development team has been in contact with the edX team for a number of months, and that much code is already synchronized so that the collaboration between the two platforms will be a smooth one. The advantage will then be 'a larger team building one strong open source platform, rather than two competing open source platforms, which we think will be more desirable for universities around the world,' Mitchell added." -
Erlang Getting Too-Big-To-Fail Process Flag
From Joe Armstrong comes news that Erlang will soon feature a new process flag for those processes that just really need memory, or else: "Too big to fail processes behave like regular processes until they get too big and memory congestion occurs. If a memory allocation error is triggered when a too_big_to_fail process needs more memory, then a random smaller process is killed, and the system reattempts memory allocation for the too_big_to_fail process. An interesting situation can occur if the too big to fail process has killed all other processes and still cannot get enough memory. In this case the node running the process tries to memory steal from other nodes." Read below for your FREE logged-in-reader's-eye view of the special rot-39 version!Sebz Wbr Nezfgebat pbzrf arjf gung Reynat jvyy fbba srngher n arj cebprff synt sbe gubfr cebprffrf gung whfg ernyyl arrq zrzbel, be ryfr: "Gbb ovt gb snvy cebprffrf orunir yvxr erthyne cebprffrf hagvy gurl trg gbb ovt naq zrzbel pbatrfgvba bpphef. Vs n zrzbel nyybpngvba reebe vf gevttrerq jura n gbb_ovt_gb_snvy cebprff arrqf zber zrzbel, gura n enaqbz fznyyre cebprff vf xvyyrq, naq gur flfgrz ernggrzcgf zrzbel nyybpngvba sbe gur gbb_ovt_gb_snvy cebprff. Na vagrerfgvat fvghngvba pna bpphe vs gur gbb ovt gb snvy cebprff unf xvyyrq nyy bgure cebprffrf naq fgvyy pnaabg trg rabhtu zrzbel. Va guvf pnfr gur abqr ehaavat gur cebprff gevrf gb zrzbel fgrny sebz bgure abqrf."
-
Erlang Getting Too-Big-To-Fail Process Flag
From Joe Armstrong comes news that Erlang will soon feature a new process flag for those processes that just really need memory, or else: "Too big to fail processes behave like regular processes until they get too big and memory congestion occurs. If a memory allocation error is triggered when a too_big_to_fail process needs more memory, then a random smaller process is killed, and the system reattempts memory allocation for the too_big_to_fail process. An interesting situation can occur if the too big to fail process has killed all other processes and still cannot get enough memory. In this case the node running the process tries to memory steal from other nodes." Read below for your FREE logged-in-reader's-eye view of the special rot-39 version!Sebz Wbr Nezfgebat pbzrf arjf gung Reynat jvyy fbba srngher n arj cebprff synt sbe gubfr cebprffrf gung whfg ernyyl arrq zrzbel, be ryfr: "Gbb ovt gb snvy cebprffrf orunir yvxr erthyne cebprffrf hagvy gurl trg gbb ovt naq zrzbel pbatrfgvba bpphef. Vs n zrzbel nyybpngvba reebe vf gevttrerq jura n gbb_ovt_gb_snvy cebprff arrqf zber zrzbel, gura n enaqbz fznyyre cebprff vf xvyyrq, naq gur flfgrz ernggrzcgf zrzbel nyybpngvba sbe gur gbb_ovt_gb_snvy cebprff. Na vagrerfgvat fvghngvba pna bpphe vs gur gbb ovt gb snvy cebprff unf xvyyrq nyy bgure cebprffrf naq fgvyy pnaabg trg rabhtu zrzbel. Va guvf pnfr gur abqr ehaavat gur cebprff gevrf gb zrzbel fgrny sebz bgure abqrf."
-
Emscripten and New Javascript Engine Bring Unreal Engine To Firefox
MojoKid writes "There's no doubt that gaming on the Web has improved dramatically in recent years, but Mozilla believes it has developed new technology that will deliver a big leap in what browser-based gaming can become. The company developed a highly-optimized version of Javascript that's designed to 'supercharge' a game's code to deliver near-native performance. And now that innovation has enabled Mozilla to bring Epic's Unreal Engine 3 to the browser. As a sort of proof of concept, Mozilla debuted this BananaBread game demo that was built using WebGL, Emscripten, and the new JavaScript version called 'asm.js.' Mozilla says that it's working with the likes of EA, Disney, and ZeptoLab to optimize games for the mobile Web, as well." Emscripten was previously used to port Doom to the browser. -
Gamer Rewrites Valve's Steam Installer For Debian
An anonymous reader writes "Gaming on Linux is growing fast right now, and most of that is thanks to Steam. Initially, Steam committed only to the most popular desktop distribution, Ubuntu, but more recently has opened the door to others. So what do you do when you want to game in Linux and you're using something a little less popular — at least, on the desktop? If you're a programmer called GhostSquad57, you rewrite the installer for Debian. GhostSquad57 uploaded his efforts to Github yesterday, and has since reached out to the Linux community." -
A New Approach To Database-Aided Data Processing
An anonymous reader writes "The Parallel Universe blog has a post about parallel data processing. They start off by talking about how Moore's Law still holds, but the shift from clock frequency to multiple cores has stifled the rate at which hardware allows software to scale. (Basically, Amdahl's Law.) The simplest approach to dealing with this is sharding, but that introduces its own difficulties. The more you shard a data set, the more work you need to do to separate out the data elements that can't interact. Optimizing for 2n cores takes more than twice the work of optimizing for n cores. The article says, 'If we want to continue writing compellingly complex applications at an ever-increasing scale we must come to terms with the new Moore's law and build our software on top of solid infrastructure designed specifically for this new reality; sharding just won't cut it.' Their solution is to transfer some of the processing work to the database. 'This because the database is in a unique position to know which transactions may contend for the same data items, and how to schedule them with respect to one another for the best possible performance. The database can and should be smart.' They demonstrate how SpaceBase does this by simulating a 10,000-spaceship battle on different sets of hardware (code available here). Going from a dual-core system to a quad-core system at the same clock speed actually doubles performance without sharding." -
Interviews: Khan Academy Lead Developer Ben Kamens Answers Your Questions
A couple of weeks ago you had the chance to ask Khan Academy lead developer Ben Kamens about the future of online education and the academy itself. Below you'll find his answers to the questions we sent and a few extra that he found interesting. Higher Education
by null etc.
Joel Spolsky has famously stated that he prefers software engineers who come from highly accredited universities, preferably Ivy-league. His thought is that one has to distinguish oneself in order to be granted admission to such places. Do you think that Joel's opinion, and those of other elitist employers, will change with the introduction of free, quality online education?
Kamens:Yes. It's not just access to education, it's the ease with which somebody can demonstrate their ability. Ask any developer if they'd sleep better at night having just hired:
A) somebody from a no-name school with an impressive github profile and side projects
B) somebody from an impressive school with no github profile nor side projects
Then take everybody who answered B and keep them away from me. And here's the thing: I'm confident Joel agrees. Joel's most famous edict when it comes to hiring is making sure somebody's "Smart and Gets Things Done." There was a time when a college degree was the best credential for Smart and Gets Things Done. In many hiring situations, it still is.
In the programming world right now? Not so much. There are too many chances to prove your ability before you graduate for that name on your degree to carry all the weight. Sure, between two otherwise equal candidates, neither of whom have littered the internet with blog posts and side projects and bits of their code, highly accredited universities can still help differentiate. It's a helpful filter, especially when sorting through thousands of otherwise similar resumes.
Even at Fog Creek 6 years ago, graduating from a top-tier university only gave you one point (out of 6 possible) in the initial resume screening process...which was the most trivial part of an otherwise lengthy recruiting pipeline designed to figure out if you're Smart and Get Things Done.
Short version: yes, this is changing and will continue to. Quality online education will hopefully continue advancing alongside easier and easier ways to demonstrate your skills to the world. At Khan Academy, we've hired people from all sorts of colleges (even three high schoolers!) who've demonstrated tremendous skill way before a degree credentials it. We'll continue to do so.
Platform For Schools
by GeneralSecretary
I've heard that KhanAcademy has a platform for schools. Students can learn using Khan Academy and teachers can monitor their progress and help students where they need it most. When I last heard about this the platform was a pilot program being launched at select schools. Are there plans to make this platform generally available? or even open source?
Kamens:It's actually for any teacher in any school right now, for free. Our "teacher toolkit" is the best place to start, w/ videos of other schools' usage and tips from their implementations.
When a teacher signs up and gets their class on Khan Academy, they'll get the exact same platform our pilot classrooms receive. Same product a parent would get if they signed up with their child. Those teachers in the pilot program you mention aren't using anything special.
The significant difference is our ability to personally engage with specific teachers and classrooms. We're a small team and have to focus on a (relatively) small number of classrooms. We use these few pilots to get feedback, learn from students, try to understand how our product can empower teachers, etc. But any changes we make as a result are then given to all students around the world.
Verification
by GeneralSecretary
It seems to me that the problem with online education is being able to prove what you have learned. I can learn Calculus online at Khan Academy or at my local community college. I'll probably learn Calculus better at Khan Academy and for less money. But, I cannot use that knowledge to get a degree nor would I have any other way of proving my knowledge to other schools or potential employers. Do you have a solution to this problem?
Kamens:It's a big deal. The MOOCs have already started tackling this. Coursera, Udacity, and edX are working with colleges to provide official credit for their online classes.
There's more than one way to work this issue. The MOOCs are attempting to build an educational brand that's valued in much the same way as, say, Stanford. They can then hand out stamps of approval that serve as signals for employers or colleges who're trying to assess candidates.
There's also the github model. Github doesn't bill itself as an accreditation machine. It doesn't try to hand out branded stamps of approval. But talk to employers about the power of github profiles and you'll hear an interesting story. And they're not the only ones. Sites like Stack Overflow have managed to build systems of reputation that send meaningful signals (disclosure: I'm biased about Stack Overflow).
Bottom line: your question represents an *enormous*, world-changing opportunity, and Khan Academy has some important choices to make. The team is sprinting on this problem as I type.
Where are all the CS courses?
by Anonymous Coward
Where are all the "traditional" Computer Science courses? I'm not asking about the "interactive manual" type courses like how to do loops in Python - there are a ton of materials about that all over the web. I'm asking about theoretical computer science, such as Turing completeness, Chomsky hierarchy, abstract data types, compiler design, that kind of stuff which is the backbone of a university computer science education. The reason I'm asking is not to diminish the value of hands-on courses, but because many (including myself) were not able to get a "traditional" CS degree, coming into programming jobs from other disciplines (or no degree at all) and are largely self taught. Self teaching is great when it comes to practical stuff early on, but once you move on to more senior roles you start feeling the gaps of not understanding the theory behind your tools, design, and implementation, as much as you should.
Kamens:Agreed!
I'd encourage you to check out the computer science section we have. While it's not the high-level content you mention, it's far from those "interactive manuals" you see around the web. John Resig and his team have built something pretty special.
That being said, the most honest answer we can give when asked about missing content is that we've chosen to focus on a few topics (like core math) until we nail them and the experience built around them.
We're opportunistic when we find an incredible person to help us teach other areas while the rest of the team focuses on core math. Examples would be Dr. Beth Harris and Dr. Steven Zucker's Art History content and Vi Hart's brilliant and somewhat indescribable videos.
We are building quite a content team. There's little we don't hope to cover one day. Just not focusing on higher-level CS *yet*.
Explanation vs exploration: Pedagogical challenge?
by fantomas
I've heard a criticism of the Khan Academy pedagogic approach is that it is explanation based (effectively the old model: the teacher talks, the student listens, the student carries out an exercise, listens again) - while schools are moving towards exploration based learning (where students are encourage to try and approach problems from different angles supported by teacher-as-facilitator). To what extent does Khan Academy replicate a very old fashioned rote-learning form of education (albeit delivered and presented via a new media with minor improvements like pause and rewind), and in what aspects does it offer significant new pedagogical advances in learning?
Kamens:Dangit, I just listened to Sal answer this exact question at a dinner yesterday. Now you're gonna make me feel like I'm a puppet. I'll do my best to break free of these puppet shackles and answer with my own words.
The fundamental belief of Khan Academy is that students should engage with content they need on-demand, at their own pace. We agree that any curriculum that forces all students in a class to follow the same, preordained "watch this video, do this exercise, watch this other video" path isn't using technology in a meaningful way. So we design our product and work with teachers to help students feel ownership of the learning process.
Our classrooms see varying implementations, but the best of them try hard to help students move at their own pace. Some students might never need to listen to Sal say a word. They can master content by experimenting on their own. Absolutely. Fine. By. Us. Others may benefit from rewinding one of Sal's videos over and over and over until a concept clicks. But not every student masters content at the same speed.
It takes a fearless teacher to embrace this controlled chaos in a classroom. I've seen it happen. I have the highest respect in the world for those teachers able to do it. They're simultaneously ready to help mentor a student who's stuck working on fractions and another who may've advanced all the way to trigonometry. They let one student run free on her own while giving another strong encouragement to try the next challenge. Watching these teachers in action is a sight to behold.
Khan Academy exists to give students the freedom to engage with the content they need while giving teachers immediate feedback about who's working on what and where they need help. We think we can help teachers by making this acquisition of core skills a more personalized, efficient process.
In doing so, we hope to move teachers _up_ the value chain so they can focus on exploration-based learning and targeted coaching with the rest of their class time.
I personally think that'd be a significant advance in learning. And FWIW, we consider anybody who fights for exploration-based learning to be an ally of Khan Academy.
Plans to make KA easier for researchers to use?
by Anonymous Coward
I'm a middle school teacher experimenting with using KA with my classes. I think it is an amazing tool, especially for differentiation -- helping teachers to help their students who are behind have successes in math and, ideally, work towards getting caught back up to their peers. I think it can allow math teachers to do more interesting and fun (non-drill) types of work in the classroom, such as focusing more on students learning by doing open-ended, authentic, rich projects with each other. The key word there is that I *think* it must be helpful to the type of classroom described above. I want to know it is, and as part of our practice in Ontario, Canada, it is encouraged that teachers engage in personal inquiry projects to get more data on whether what we think is working actually is. It is difficult to get the data I need out of KA. We're having to do a lot of manual grabbing of student usage times and populating spreadsheets with that. Any plans to extend the external API to allow more sophisticated queries? Or, perhaps plans to provide a tool allowing more extensive data dumps which researchers can use? And if you don't have plans at the moment, does this post influence that? ;-) With a more thorough access to student data, I expect there will be researchers who will be more interested in investigating KA in their research and fleshing out the actual benefits (and also any issues that might be addressed). My students and I thank you!
Kamens:Holy crap, I should've just pasted your first couple sentences in response to the previous question! Would've been way more authentic.
Ouch. This one hits home. I want our API to support this type of thing, and I know it's far from perfect. Can you make sure the specific API queries you need are requested here? We haven't had time to do everything we want, but we're always on the lookout for big API wins that'll enable the community to build cool stuff. Thanks for being an early API adopter. Sorry you've had trouble. Please know that we want to help.
The large data dump request is a bit more complicated due to student privacy issues, but it's on our radar.
lead dev
by vlm
I always ask coder/tech types whats their coolest hack / coolest piece of code. Not something else someone else did, not some giant overall project or vague thing like "world peace" just your coolest isolated to one individual "thing" hack. Something they did personally not hired someone else to do, or something their boss did. Maybe in your LOB its an amazing caching technique, or an astounding way to compress video or whatever. Or some astounding workflow thingy. A short story just a paragraph no more. The kind of thing a /. audience would respond with "cool!" when they read it.
Kamens:While I can't promise "amazing" or "astounding" I can at least make you cringe. A couple years ago we had to take Khan Academy down for maintenance. Was gonna take a couple hours. We put up a cutesy little "Shhhh...we're studying!" page to let users know we'd be back soon.
We were Google App Engine novices at the time. The method we used to display that "Shhh...we're studying!" page did something we didn't expect: it returned a caching header that told all downstream clients to cache the page. For 365 days. For _all of our URLs_. And this was _entirely_ our fault (not App Engine's).
Every server or browser between us and our users was now allowed to return "Shhh...we're studying!" for every Khan Academy URL without ever asking us for new content. Our users were gonna sit there, smashing reload, and seeing "Shhh...we're studying!" for a freaking _year_. And our servers would never even see their requests to get a chance to fix the problem. Thankfully, the App Engine team came through in the middle of the night and gave us a way to clear the cache for exactly two URLs on all of their frontend servers, where most of this problematic caching was happening. We chose the homepage URL, www.khanacademy.org, and (here's where the hack comes in), the URL of javascript file that all of our pages, including the static "Shhhh...we're studying!" page, happened to be referencing. Something like khanacademy.org/jquery.js. We replaced that javascript file with a single line that redirected users to a new subdomain we'd set up at www2.khanacademy.org. The www2 URLs weren't cached all over the entire internet, so kids could start learning again!
Once the disaster died down we switched back to www.khanacademy.org and modified our URLs in a different way to avoid any remaining caches. Surprisingly, our traffic didn't take a hit and everything recovered nicely. But we wondered for about a year if anybody was still seeing that "Shhh...we're studying!" page.
Internships
by Niris
As someone who is currently a senior in computer science and looking for summer internships, what is it that Khan Academy developers look for in perspective interns? I've looked over the blog posts from some of the past interns, and their projects all seem pretty amazing. Is it possible for someone who doesn't have a fair amount of professional level experience to jump in to the internship program with Khan Academy? Disclaimer: I currently have an application in for the internship program, hence my curiosity :)
Kamens:Side projects. Blogs. Having built or written things that others find useful. Being passionate enough to find us and ask interview questions on slashdot.
A past filled with creating value will go a long, long way. Rooting for you.
Jude the Obscure
by Quirkz
Discussions about online learning tend to remind me of the book Jude the Obscure, by Thomas Hardy. It's been a couple of decades, but from what I remember it's the tragic story of a poor working man who dreams of pursuing education/knowledge but who can only barely scrape by with the essentials and can rarely afford even the occasional book. Do institutions like Khan Academy mostly or completely erase that scenario in the modern day? Would a modern Jude have been able to educate and better himself? Are there other obstacles that replace the cost as a barrier to taking this free learning and finding advancement or satisfaction?
Kamens:Ever read The Diamond Age? We give a copy to all interns on their first day. Our long-term sci-fi dream is to remove exactly these obstacles. If we can get one small step closer to The Young Lady's Illustrated Primer (sounds like it would've helped this Jude)...well, that's a dream. -
Two Years of GNU Guile Scheme 2.0
Two years ago Guile Scheme, the official extension language of the GNU project, released version 2.0, a major upgrade to the implementation. As part of the two year anniversary, the maintainers organized a challenge to hack a small project using Guile in 30 days as part of a birthday software potluck. The two coolest dishes appear to be OpenGL support using the FFI, and XCB bindings built using the XML specification for XCB: "guile-xcb is a language implemented in the Guile VM that parses the XML files used by the xcb project to specify the X protocol and compiles them into Guile modules containing all the methods and data needed to send requests to the X server and receive replies/events back. If new X extensions are added to the xcb library, guile-xcb can compile and add them with no additional work. " See the release announcement for details on the other dishes. -
Liberated Pixel Cup Code Winners Announced
After a laborious judging process, the Liberated Pixel Cup has finally announced the winners of the code contest. Out of the 48 entries, Lurking Patrol Comrades (now Source of Tales), a "MMORPG with a vast world, plenty of characters to speak to, both a melee and a magic based battle system, and a polished user interface," won the grand prize. The best HTML5 game was Big Island, written in Dart and playable directly from Github. The art prizes were given last August in case you missed it. Congratulations to everyone who participated! -
Game Closure "DevKit" For Mobile HTML5 Games Is Open Source
First time accepted submitter Chris Taylor writes "Silicon Valley startup Game Closure has open-sourced their HTML5 game development toolkit. The trailer video showcases some interesting new technology. It allows game developers to write code in JavaScript on Windows, Mac and Linux desktops to rapidly create and then deploy new games on the Internet, Android, and on iOS cellphones. The source code for the entire stack is available on GitHub, including the changes to Google V8 and Mozilla SpiderMonkey." -
Ask Slashdot: Spreadsheet With Decent Programming Language?
First time accepted submitter slartibartfastatp writes "Spreadsheets are very flexible tools for data analysis and transformations, the obvious options being MS Excel and LibreOffice. However, I found increasingly infuriating to deal with the VBA--dialect functions or (even worse) its translated versions. Is there any spreadsheet that allows usage of a decent programming language in its formulae? I found PySpread intriguing, but still very beta (judging from its latest release version 0.2.3). Perl or even javascript would be better options than =AVERAGE(). Do you know any viable alternatives?" -
JavaScript Comes To Minecraft
mikejuk writes "JavaScript is the language of the client and it is becoming the language of the server. Now it seems set to be the language of Minecraft. ScriptCraft is a Minecraft mod that can be added to the game to allow the player to use JavaScript commands. Walter Higgins ported the Rhino JVM implementation of JavaScript in a few spare weeks over Xmas. Some additional JavaScript classes allow the construction of blocks making it possible to automate construction. It also provides a 'turtle like' drone class that makes it easier to move in 3D. It makes use of a fluent API to create a domain specific language for movement. As its creator says: 'Ultimately I think the ScriptCraft mod could be used to take building in Minecraft to a whole new level. With a full-blown language at the Player's disposal, it should be possible to create not just castles and forts but entire road networks and cities.' Most importantly of all, it not only pushes the boundary of Minecraft, it also provides a way to get kids who are already hooked on Minecraft to start learning JavaScript." -
O'Reilly Giving Away Open Government As Aaron Swartz Tribute
jones_supa writes "The classic hacker book publisher O'Reilly is releasing their book Open Government for free as a tribute for Aaron Swartz. The book asks the question, in a world where web services can make real-time data accessible to anyone, how can the government leverage this openness to improve its operations and increase citizen participation and awareness? Through a collection of essays and case studies, leading visionaries and practitioners both inside and outside of government share their ideas on how to achieve and direct this emerging world of online collaboration, transparency, and participation. The files are posted on the O'Reilly Media GitHub account as PDF, Mobi, and EPUB files." -
GitHub Registers Its 3 Millionth User
hypnosec writes "Online version control system GitHub, which is based on Git — the distributed version control system developed by Linus Torvalds — now has over three million registered users, it has been revealed. Announcing the achievement, the code sharing site used by the likes of jQuery, Perl, PHP, Ruby as well as Joomla said in a blog post that the 'three millionth person signed up for a GitHub account' on Monday night." -
Book Review: The Nature of Code
eldavojohn writes "I kickstarted a project undertaken by Daniel Shiffman to write a book on what (at the time) seemed to be a very large knowledge space. What resulted is a good book (amazing by CC-BY-NC standards) available in both PDF and HTML versions. In addition to the book he maintains the source code for creating the book and of course the book examples. The Nature of Code starts off swimmingly but remains front heavy with a mere thirty five pages devoted to the final chapter on neural networks. This is an excellent book for Java and Processing developers that want to break into simulation and modeling of well, anything. It probably isn't a must-have title for very seasoned developers (unless you've never done simulation and modeling) but at zero cost why not?" Read below for the rest of eldavojohn's review. The Nature of Code: Simulating Natural Systems with Processing author Daniel Shiffman pages 520 publisher The Nature of Code rating 9/10 reviewer eldavojohn ISBN 978-0985930806 summary A book concentrating on the simulation of natural elements through both basic and advanced programming concepts in Processing. First off, I feel like defining the audience of this book is very important to avoid disappointment. This book is not for someone who's already developed games or modeled highway traffic or knows how to build their own physics engine. No, this book is geared at the people who are familiar with one language (preferably Java or Processing) and want to get a taste of all of the above. This book is possibly suitable for a someone new to the world of programming who is willing to put in the extra effort of coming up to speed on Processing in tandem with the text. After all, Processing is a comparatively forgiving language with a dead simple API to interact with the mouse and draw/animate objects.
I'd also like to address the "exercises" that are found throughout chapters and at the end of chapters in this book. They are excellent. I picked a couple and invested actual time in fleshing them out and I feel like Shiffman succeeded in inserting a wide range of difficulty. Leading along through each chapter, it is easy to successively complete each new exercise while the end of the chapters present stretch exercises. In addition to that, applicable chapters urge and provoke the reader to utilize newly learned concepts into what Shiffman calls "The Ecosystem Project." Where the user is basically defining an ecosystem and continually adding new animals, new movement patterns, new behaviors like predation and finally artificial intelligence.
Lastly this book can be found in many formats and I read the first half as HTML with animated diagrams. While the animated diagrams were awesome and added greatly to the text, I still found myself enjoying the dead tree book much more. I know I will soon be a dinosaur with shelves of needless weight that people will mock but I cannot make the jump to reading on a screen. The book's binding and paper quality is average as it appears to be from Amazon's CreateSpace. Diagrams that would animate are shown in the book as having progressively darkening shadows of the paths of objects and is fairly easy to envision movement. I did love the HTML version's moving examples though!
The introduction of this book brings up a few fundamental concepts on randomness like random walks and Perlin noise as well as a bit of statistics. For being labeled "Introduction" this chapter is fundamentally important and the aforementioned concepts are referred back to throughout the rest of the book. The book immediately dives into code snippets of a very simple nature that are easy to run and understand. Great detail and careful explanation are found throughout these opening chapters. The user is given informational boxes going further in depth to certain concepts. This was done really well in the first five or so chapters and was rare if even present in the final chapters.
The first chapter is devoted to vectors. It does an excellent job of explaining why they are so important as well as define and code mathematical concepts that affect vectors. A great aspect of this chapter is that the author fleshes out PVector functionality before your eyes to better understand Processing and object oriented programming. New (to beginners) ways of representing and implementing velocity and acceleration using vectors are explored at their most basic levels.
The second chapter moves naturally enough to forces on objects and begins to delve in basic physics formulas. Newton's Laws are modeled as well as friction, aerodynamics, fluid dynamics and gravity. Shiffman does a great job of keeping these unruly topics in easy to understand language while at the same time offering the scary looking formulas. He even goes so far as to insert an informational box imploring the reader to not be afraid of scary looking formulas by breaking down friction. I feel like one of the strengths of this book is showing how a complex looking formula can be deconstructed to easy English and then further implemented roughly in a model in Processing. While this modeling is by no means completely accurate or state of the art, it is a good introduction and would likely suffice for simple games and web design.
The third chapter brings angles into the mix by concentrating on oscillations. While it does a great job of talking about the important aspects of trigonometry, the text does really follow through with recalling these concepts. For instance, the mnemonic device SOHCAHTOA from geometry class is briefly explained and subsequently dropped. We use it in later chapters but it is used implicitly and may be difficult for people who are not intimately familiar with it to see the trigonometric reductions employed for simplified coding of the visualizations. Shiffman does an excellent job at starting with something that looks like a complex system, breaking it down to its component vectors and showing incremental changes to the code that iteratively improve on the visualization at hand. In doing so he gives an example of how a modeling programmer should think and work through known physical behavior to derive something that works visually in Processing.
Next up is particle systems. The reader is introduced to simpler ways of maintaining a set of particles as we start to focus on multiple particles with complex interactions. Shiffman opts to keep it simple and shies away from coding aspects like ArrayList versus LinkedList versus HashMap. Instead minimal space is spent on side ventures and the particle systems are surprisingly easy to get off the ground. The user is introduced to polymorphism, inheritance and more advanced class constructs so that the user can reduce the amount of code required to activate, handle and delete heterogenous groups of particles. For a beginning developer this chapter is great at walking them through these more advanced concepts and helping them see a direct benefit to the code.
So far, Introduction through Chapter Four of the book, everything has been great. Shiffman points out that there are a plethora of physics libraries out there in any imaginable language of any imaginable quality. And, consequently, it's unlikely you're going to forge forward with the aforementioned concepts and find yourself making the next engine for latest blockbuster space shooter game. As a result, Chapter Five is an overview of how to interact with physics libraries and use your Processing sketch as a facade that just queries said library for position. Box2D is the first library he tackles and with good cause — it's the same engine used by Angry Birds. And that's great because it is certainly empowering to know that if you can skin a simple game that adds a few game rules to physics, you can make a billion dollars. I learned a lot from this. I have never interacted with a physics library like this before and it was easy to produce fluid and impressive results. But it felt like glue code and it also felt like this text could be deprecated with a large update to Box2D (or it's Java and Processing equivalents). This really is a necessary and helpful chapter for this book but I felt sad that we had so quickly given up on rolling our own physics library. After Box2D, Shiffman presents VerletPhysics and provides a helpful resource for when you should use one over the other. Also, the terms for interacting with the libraries are slightly different but represent the same concept (side note: I wasn't a big fan of the convoluted names these two libraries used to designate objects and object types).
Chapter Six shows the reader how to emulate an autonomous agent by introducing "desired" vectors to each object. In this case it is a race car trying to reach a target. As the object moves, the desired vector is a updated. Examples of code are provided that show the object overshooting its target and Shiffman progresses on his path of slightly improving it by algorithmically adjusting the desired vector by introducing a slowing magnitude upon approach of the target. The actions of the object become more complicated as a flow field is suggested instead for behavior. The author explores path following and how to introduce a bit of wandering around straight line like an ant following a pheromone trail or a person walking along a wall. Simple examples of group behavior like even spacing in a crowded group or flocking in a sparse population within a large space. Lastly this chapter covers a very important aspect of code: performance. By now the reader has seen many examples where code can run slowly and this chapter's continual pairwise updating of all objects on the screen brings up Big O Notation. I wish Shiffman would spend more time on this or at least provide a separate box with more technical information on it like he did with other concepts.
The seventh chapter takes an interesting turn into cellular automata. While an interesting chapter and an interesting concept, it feels a bit disjoint from the rest of the text. While there is a way to tie it back into the long running ecosystem project. The most important aspect of cellular automata is that they are fun visualizations where as other concepts in programming that revolve around mutating state might not be as readily visible (like finite state machines or Markov models). This is the first chapter that feels a little rushed and more like a brief foray into a potentially deep field. The Game of Life is covered but only in its simplest aspects and I feel like this chapter could be better.
Chapter Eight dives into fractals. Again, like the last chapter, it is a bit short but I enjoyed this chapter. They are a great visual way to introduce newcomers to recursion and get them excited about it. On top of that, Shiffman shows how fractals appear in nature. Koch curves and Sierpinski triangles as fractal visualizations. Shiffman has a great informational box discussing the "monster" curve and tantalizes the reader with the paradox that an infinite recursion of the Koch curve results in an infinitely long line in a finite area of paper. This sort of stuff is what makes reading a book like this enjoyable and drives people to delve deeper into this concepts. I only wish the book had more of this. Also crucial to recursion in this chapter is a processing feature new to me: pushMatrix() and popMatrix(). As these are built out into trees, the author moves on to L-systems as devised by Aristid Lindenmayer. It's amazing how this simple grammar could result in a simulation of an algal growth.
The ninth chapter helps the user through a high level overview of genetic algorithms. I think one thing this book lacks is caution or warning about jumping into concepts or using concepts just because they sound cool. While genetic algorithms sound cool and futuristic, I have rarely found them to be at all useful on a professional level. Shiffman does a great job of explaining precisely how selection is determined by defining the constraints of the environment as well as the evaluation function. Unfortunately I find that these things are often hard to define and it's warnings like these that the text lacks. Nevertheless, there are a few good examples picked out for coding — unsurprisingly they use the laws of physics we just discussed and a number of computable variables for valuation. The best example is the rocket ship which is introduced after the standard monkeys trying to type the works of Shakespeare at a typewriter. Shiffman does a great job of explaining genetic algorithms and it's certainly a neat topic that's fun to think about but I'm not sure it's a good practical fundamental aspect of coding. It definitely works for the simulation side of coding so it should stay in the book but again it feels rushed with a lot of the simulation application left to the reader in the ecosystem project. I think that a much longer chapter that models predation — like wolves and rabbits — might work a lot better. You could even tie in a little bit of math and show situations where not enough mutations cause the hunter or prey to settle in on local maximums.
The tenth and final chapter briefly covers neural networks. Again, this chapter felt rushed and was missing a lot of the great explanations that were present in the first half of the book. The scant thirty five pages covers peceptrons, neural networks, training vehicles with them and even backpropagation of multilayered neural networks to hand more complex classification demands. In an effort to give this chapter some fun visualizations, the last thing Shiffman covers is the animation of the operation of a neural network. I'm intimately familiar with all these topics but the pace at which this chapter moves might be too much for a starting developer. I feel like there's a huge opportunity in this chapter to more thoroughly explain neural networks and to get readers more excited about classification systems in code.
All in all, the book was thoroughly enjoyable and I really enjoy that it is a creative commons work with both a github for the source code and the raw book. Although the latter chapters could use a lot of additional work this book is a great beginning tool for people who wish to start modeling nature in visualizations quickly and easily.
You can purchase a physical copy of The Nature of Code from amazon.com or you can name your price on a PDF directly. Slashdot welcomes readers' book reviews — to see your own review here, read the book review guidelines, then visit the submission page." -
Book Review: The Nature of Code
eldavojohn writes "I kickstarted a project undertaken by Daniel Shiffman to write a book on what (at the time) seemed to be a very large knowledge space. What resulted is a good book (amazing by CC-BY-NC standards) available in both PDF and HTML versions. In addition to the book he maintains the source code for creating the book and of course the book examples. The Nature of Code starts off swimmingly but remains front heavy with a mere thirty five pages devoted to the final chapter on neural networks. This is an excellent book for Java and Processing developers that want to break into simulation and modeling of well, anything. It probably isn't a must-have title for very seasoned developers (unless you've never done simulation and modeling) but at zero cost why not?" Read below for the rest of eldavojohn's review. The Nature of Code: Simulating Natural Systems with Processing author Daniel Shiffman pages 520 publisher The Nature of Code rating 9/10 reviewer eldavojohn ISBN 978-0985930806 summary A book concentrating on the simulation of natural elements through both basic and advanced programming concepts in Processing. First off, I feel like defining the audience of this book is very important to avoid disappointment. This book is not for someone who's already developed games or modeled highway traffic or knows how to build their own physics engine. No, this book is geared at the people who are familiar with one language (preferably Java or Processing) and want to get a taste of all of the above. This book is possibly suitable for a someone new to the world of programming who is willing to put in the extra effort of coming up to speed on Processing in tandem with the text. After all, Processing is a comparatively forgiving language with a dead simple API to interact with the mouse and draw/animate objects.
I'd also like to address the "exercises" that are found throughout chapters and at the end of chapters in this book. They are excellent. I picked a couple and invested actual time in fleshing them out and I feel like Shiffman succeeded in inserting a wide range of difficulty. Leading along through each chapter, it is easy to successively complete each new exercise while the end of the chapters present stretch exercises. In addition to that, applicable chapters urge and provoke the reader to utilize newly learned concepts into what Shiffman calls "The Ecosystem Project." Where the user is basically defining an ecosystem and continually adding new animals, new movement patterns, new behaviors like predation and finally artificial intelligence.
Lastly this book can be found in many formats and I read the first half as HTML with animated diagrams. While the animated diagrams were awesome and added greatly to the text, I still found myself enjoying the dead tree book much more. I know I will soon be a dinosaur with shelves of needless weight that people will mock but I cannot make the jump to reading on a screen. The book's binding and paper quality is average as it appears to be from Amazon's CreateSpace. Diagrams that would animate are shown in the book as having progressively darkening shadows of the paths of objects and is fairly easy to envision movement. I did love the HTML version's moving examples though!
The introduction of this book brings up a few fundamental concepts on randomness like random walks and Perlin noise as well as a bit of statistics. For being labeled "Introduction" this chapter is fundamentally important and the aforementioned concepts are referred back to throughout the rest of the book. The book immediately dives into code snippets of a very simple nature that are easy to run and understand. Great detail and careful explanation are found throughout these opening chapters. The user is given informational boxes going further in depth to certain concepts. This was done really well in the first five or so chapters and was rare if even present in the final chapters.
The first chapter is devoted to vectors. It does an excellent job of explaining why they are so important as well as define and code mathematical concepts that affect vectors. A great aspect of this chapter is that the author fleshes out PVector functionality before your eyes to better understand Processing and object oriented programming. New (to beginners) ways of representing and implementing velocity and acceleration using vectors are explored at their most basic levels.
The second chapter moves naturally enough to forces on objects and begins to delve in basic physics formulas. Newton's Laws are modeled as well as friction, aerodynamics, fluid dynamics and gravity. Shiffman does a great job of keeping these unruly topics in easy to understand language while at the same time offering the scary looking formulas. He even goes so far as to insert an informational box imploring the reader to not be afraid of scary looking formulas by breaking down friction. I feel like one of the strengths of this book is showing how a complex looking formula can be deconstructed to easy English and then further implemented roughly in a model in Processing. While this modeling is by no means completely accurate or state of the art, it is a good introduction and would likely suffice for simple games and web design.
The third chapter brings angles into the mix by concentrating on oscillations. While it does a great job of talking about the important aspects of trigonometry, the text does really follow through with recalling these concepts. For instance, the mnemonic device SOHCAHTOA from geometry class is briefly explained and subsequently dropped. We use it in later chapters but it is used implicitly and may be difficult for people who are not intimately familiar with it to see the trigonometric reductions employed for simplified coding of the visualizations. Shiffman does an excellent job at starting with something that looks like a complex system, breaking it down to its component vectors and showing incremental changes to the code that iteratively improve on the visualization at hand. In doing so he gives an example of how a modeling programmer should think and work through known physical behavior to derive something that works visually in Processing.
Next up is particle systems. The reader is introduced to simpler ways of maintaining a set of particles as we start to focus on multiple particles with complex interactions. Shiffman opts to keep it simple and shies away from coding aspects like ArrayList versus LinkedList versus HashMap. Instead minimal space is spent on side ventures and the particle systems are surprisingly easy to get off the ground. The user is introduced to polymorphism, inheritance and more advanced class constructs so that the user can reduce the amount of code required to activate, handle and delete heterogenous groups of particles. For a beginning developer this chapter is great at walking them through these more advanced concepts and helping them see a direct benefit to the code.
So far, Introduction through Chapter Four of the book, everything has been great. Shiffman points out that there are a plethora of physics libraries out there in any imaginable language of any imaginable quality. And, consequently, it's unlikely you're going to forge forward with the aforementioned concepts and find yourself making the next engine for latest blockbuster space shooter game. As a result, Chapter Five is an overview of how to interact with physics libraries and use your Processing sketch as a facade that just queries said library for position. Box2D is the first library he tackles and with good cause — it's the same engine used by Angry Birds. And that's great because it is certainly empowering to know that if you can skin a simple game that adds a few game rules to physics, you can make a billion dollars. I learned a lot from this. I have never interacted with a physics library like this before and it was easy to produce fluid and impressive results. But it felt like glue code and it also felt like this text could be deprecated with a large update to Box2D (or it's Java and Processing equivalents). This really is a necessary and helpful chapter for this book but I felt sad that we had so quickly given up on rolling our own physics library. After Box2D, Shiffman presents VerletPhysics and provides a helpful resource for when you should use one over the other. Also, the terms for interacting with the libraries are slightly different but represent the same concept (side note: I wasn't a big fan of the convoluted names these two libraries used to designate objects and object types).
Chapter Six shows the reader how to emulate an autonomous agent by introducing "desired" vectors to each object. In this case it is a race car trying to reach a target. As the object moves, the desired vector is a updated. Examples of code are provided that show the object overshooting its target and Shiffman progresses on his path of slightly improving it by algorithmically adjusting the desired vector by introducing a slowing magnitude upon approach of the target. The actions of the object become more complicated as a flow field is suggested instead for behavior. The author explores path following and how to introduce a bit of wandering around straight line like an ant following a pheromone trail or a person walking along a wall. Simple examples of group behavior like even spacing in a crowded group or flocking in a sparse population within a large space. Lastly this chapter covers a very important aspect of code: performance. By now the reader has seen many examples where code can run slowly and this chapter's continual pairwise updating of all objects on the screen brings up Big O Notation. I wish Shiffman would spend more time on this or at least provide a separate box with more technical information on it like he did with other concepts.
The seventh chapter takes an interesting turn into cellular automata. While an interesting chapter and an interesting concept, it feels a bit disjoint from the rest of the text. While there is a way to tie it back into the long running ecosystem project. The most important aspect of cellular automata is that they are fun visualizations where as other concepts in programming that revolve around mutating state might not be as readily visible (like finite state machines or Markov models). This is the first chapter that feels a little rushed and more like a brief foray into a potentially deep field. The Game of Life is covered but only in its simplest aspects and I feel like this chapter could be better.
Chapter Eight dives into fractals. Again, like the last chapter, it is a bit short but I enjoyed this chapter. They are a great visual way to introduce newcomers to recursion and get them excited about it. On top of that, Shiffman shows how fractals appear in nature. Koch curves and Sierpinski triangles as fractal visualizations. Shiffman has a great informational box discussing the "monster" curve and tantalizes the reader with the paradox that an infinite recursion of the Koch curve results in an infinitely long line in a finite area of paper. This sort of stuff is what makes reading a book like this enjoyable and drives people to delve deeper into this concepts. I only wish the book had more of this. Also crucial to recursion in this chapter is a processing feature new to me: pushMatrix() and popMatrix(). As these are built out into trees, the author moves on to L-systems as devised by Aristid Lindenmayer. It's amazing how this simple grammar could result in a simulation of an algal growth.
The ninth chapter helps the user through a high level overview of genetic algorithms. I think one thing this book lacks is caution or warning about jumping into concepts or using concepts just because they sound cool. While genetic algorithms sound cool and futuristic, I have rarely found them to be at all useful on a professional level. Shiffman does a great job of explaining precisely how selection is determined by defining the constraints of the environment as well as the evaluation function. Unfortunately I find that these things are often hard to define and it's warnings like these that the text lacks. Nevertheless, there are a few good examples picked out for coding — unsurprisingly they use the laws of physics we just discussed and a number of computable variables for valuation. The best example is the rocket ship which is introduced after the standard monkeys trying to type the works of Shakespeare at a typewriter. Shiffman does a great job of explaining genetic algorithms and it's certainly a neat topic that's fun to think about but I'm not sure it's a good practical fundamental aspect of coding. It definitely works for the simulation side of coding so it should stay in the book but again it feels rushed with a lot of the simulation application left to the reader in the ecosystem project. I think that a much longer chapter that models predation — like wolves and rabbits — might work a lot better. You could even tie in a little bit of math and show situations where not enough mutations cause the hunter or prey to settle in on local maximums.
The tenth and final chapter briefly covers neural networks. Again, this chapter felt rushed and was missing a lot of the great explanations that were present in the first half of the book. The scant thirty five pages covers peceptrons, neural networks, training vehicles with them and even backpropagation of multilayered neural networks to hand more complex classification demands. In an effort to give this chapter some fun visualizations, the last thing Shiffman covers is the animation of the operation of a neural network. I'm intimately familiar with all these topics but the pace at which this chapter moves might be too much for a starting developer. I feel like there's a huge opportunity in this chapter to more thoroughly explain neural networks and to get readers more excited about classification systems in code.
All in all, the book was thoroughly enjoyable and I really enjoy that it is a creative commons work with both a github for the source code and the raw book. Although the latter chapters could use a lot of additional work this book is a great beginning tool for people who wish to start modeling nature in visualizations quickly and easily.
You can purchase a physical copy of The Nature of Code from amazon.com or you can name your price on a PDF directly. Slashdot welcomes readers' book reviews — to see your own review here, read the book review guidelines, then visit the submission page." -
Netflix Open-Sources "Janitor Monkey" AWS Cleanup Tool
Nerval's Lobster writes "Netflix has released 'Janitor Monkey,' an open-source tool for killing old Amazon Web Services (AWS) instances, that began life as an in-house product. While those hosting a private data center will have little use for this scrubbin' simian, those enterprises with a public cloud can add Janitor Monkey to their administrative bag of tricks. The premise behind the tool is a simple one: while AWS allows for easy (and cheap) experimentation, it's easy for even the most diligent IT pro to rack up unnecessary costs when they forget to shut off a particular instance. While Netflix's Asgard tool—open-sourced in June, because this is how the company rolls—allows administrators to delete unused resources, Janitor Monkey takes things one step further by allowing those instances to be automatically found so that Asgard can clean them up. Over the past year, Janitor Monkey has deleted more than 5,000 resources running in the Netflix production and test environments, the company said. Janitor Monkey detects AWS instances, EBS volumes, EBS volume snapshots, and auto-scaling group." -
Steam For Linux Is Now an Open Beta
New submitter jotaass writes "In news that is guaranteed to make the Linux gaming community (in particular, but not exclusively) excited, Valve has just announced that the Steam for Linux client Beta is now open to the public. A .deb package is available here. Interesting as well, they are using an empty GitHub repository solely as an issue tracker, open for anyone to submit, edit and track bugs, with no actual code in the repo." -
For League of Legends Creator Riot Games, Big Data Is Serious Business
Nerval's Lobster writes "Riot Games created the very successful League of Legends gaming franchise, which hosts millions of monthly users. Barry Livingston, director of engineering for the company's Big Data group, talks about how Riot Games scaled up to deal with that enormous data load. Consider all the millions of people playing the game in real time. Picture joining three massive tables — player data, game data, and session data — and you begin to see the full scope of Riot Games' issue. Gamer activity generates more than 500 GB of structured data and over four TB of operational logs every day. Riot Games has also posted 60 open-source Chef and Opscode recipes, among other code samples." -
Netflix Gives Data Center Tools To Fail
Nerval's Lobster writes "Netflix has released Hystrix, a library designed for managing interactions between distributed systems, complete with 'fallback' options for when those systems inevitably fail. The code for Hystrix—which Netflix tested on its own systems—can be downloaded at Github, with documentation available here, in addition to a getting-started guide and operations examples, among others. Hystrix evolved out of Netflix's need to manage an increasing rate of calls to its APIs, and resulted in (according to the company) a 'dramatic improvement in uptime and resilience has been achieved through its use.' The Netflix API receives more than 1 billion incoming calls per day, which translates into several billion outgoing calls (averaging a ratio of 1:6) to dozens of underlying systems, with peaks of over 100,000 dependency requests per second. That's according to Netflix engineer Ben Christensen, who described the incredible loads on the company's infrastructure in a February blog posting. The vast majority of those calls serve the discovery user interfaces (UIs) of the more than 800 different devices supported by Netflix." -
Netflix Gives Data Center Tools To Fail
Nerval's Lobster writes "Netflix has released Hystrix, a library designed for managing interactions between distributed systems, complete with 'fallback' options for when those systems inevitably fail. The code for Hystrix—which Netflix tested on its own systems—can be downloaded at Github, with documentation available here, in addition to a getting-started guide and operations examples, among others. Hystrix evolved out of Netflix's need to manage an increasing rate of calls to its APIs, and resulted in (according to the company) a 'dramatic improvement in uptime and resilience has been achieved through its use.' The Netflix API receives more than 1 billion incoming calls per day, which translates into several billion outgoing calls (averaging a ratio of 1:6) to dozens of underlying systems, with peaks of over 100,000 dependency requests per second. That's according to Netflix engineer Ben Christensen, who described the incredible loads on the company's infrastructure in a February blog posting. The vast majority of those calls serve the discovery user interfaces (UIs) of the more than 800 different devices supported by Netflix." -
Netflix Gives Data Center Tools To Fail
Nerval's Lobster writes "Netflix has released Hystrix, a library designed for managing interactions between distributed systems, complete with 'fallback' options for when those systems inevitably fail. The code for Hystrix—which Netflix tested on its own systems—can be downloaded at Github, with documentation available here, in addition to a getting-started guide and operations examples, among others. Hystrix evolved out of Netflix's need to manage an increasing rate of calls to its APIs, and resulted in (according to the company) a 'dramatic improvement in uptime and resilience has been achieved through its use.' The Netflix API receives more than 1 billion incoming calls per day, which translates into several billion outgoing calls (averaging a ratio of 1:6) to dozens of underlying systems, with peaks of over 100,000 dependency requests per second. That's according to Netflix engineer Ben Christensen, who described the incredible loads on the company's infrastructure in a February blog posting. The vast majority of those calls serve the discovery user interfaces (UIs) of the more than 800 different devices supported by Netflix." -
DOOM 3 BFG Edition On Github, Timed For Oculus Rift
New submitter alexanderb writes "While DOOM 3 BFG Edition might not have blown most gamers' minds, it sure blew some hackers' minds by supporting the Oculus Rift head-mounted display. Now, id Software have put up the source code of the BFG Edition under the GPL in good time for the tentative Oculus Rift release date, 12/12/12." -
Gentoo Developers Fork udev
In October, Linus Torvalds expressed concerns that udev was making "...changes that were known to be problematic, and are pure and utter stupidity." Several Gentoo developers were also concerned about the removal of features and uncooperative nature of udev maintained by the systemd developers, so they've announced a fork: "After speaking with several other Gentoo developers that share Linus' concerns, I have decided to form a team to fork udev. Our plan is to eliminate the separate /usr requirement from our fork, among other things. We will announce the project later this week." The project name (for now) is udev-ng, and you can grab the code from Github. Update: 11/16 21:29 GMT by U L : One of the developers commented that this isn't yet an official Gentoo project (but hopefully it will be!). There's also an informative flamewar about the fork on debian-devel. -
Fully Open A13-OLinuXino Single-Board Linux Computer
Penurious Penguin writes "Via LXer, an article from PCWorld describes the A13-OLinuXino, produced by OLIMEX. Similar, but distinct from the Raspberry Pi, the Linux-powered OLinuXino is touted as 'fully open,' with all CAD files and source-code freely available for both personal and commercial reuse. Its specs include an Allwinner A13 Cortex A8 1GHz processor, 3D Maili400 GPU, 512MB RAM, all packed into a nano-ITX form and fit for operation in industrial environments between -25C and 85C. The device comes with Android 4.0, but is capable of running other Linux distros, e.g., ArchlinuxARM." -
The Shumway Open SWF Runtime Project
theweatherelectric writes "Mozilla is looking for contributors interested in working on Shumway. Mozilla's Jet Villegas writes, 'Shumway is an experimental web-native (Javascript) runtime implementation of the SWF file format. It is developed as a free and open source project sponsored by Mozilla Research. The project has two main goals: 1. Advance the open web platform to securely process rich media formats that were previously only available in closed and proprietary implementations. 2. Offer a runtime processor for SWF and other rich media formats on platforms for which runtime implementations are not available.'" See also: Gnash and Lightspark. -
The Shumway Open SWF Runtime Project
theweatherelectric writes "Mozilla is looking for contributors interested in working on Shumway. Mozilla's Jet Villegas writes, 'Shumway is an experimental web-native (Javascript) runtime implementation of the SWF file format. It is developed as a free and open source project sponsored by Mozilla Research. The project has two main goals: 1. Advance the open web platform to securely process rich media formats that were previously only available in closed and proprietary implementations. 2. Offer a runtime processor for SWF and other rich media formats on platforms for which runtime implementations are not available.'" See also: Gnash and Lightspark. -
Emscripten Compiler Gets Optimizations, Now Self-Hosting
Emscripten is an LLVM-based compiler from dozens of languages to JavaScript (previously demoed as a repl and used to port Doom to the browser), and some recent changes have made it a bit faster, and allowed it to compile itself. Some highlights include a redundant variable eliminator, parallelization of the optimizier and compiler, and a new relooper. From the developer's weblog: "With all of the emscripten optimization passes now in JavaScript, I then worked on parallelizing that. ... The speedup can be close to linear in the number of cores. ... For the LLVM to JS compiler, I made the emscripten compiler parallel as well: It splits up the LLVM IR into 3 main parts: type data, function data, and globals. The function data part is unsurprisingly by far the largest in all cases I checked (95% or so), and it can in principle be parallelized - so I did that. Like in the optimizer, we use a Python process pool which feeds chunks of function data to multiple JavaScript compiler instances. There is some overhead due to chunking, and the type data and globals phases are not parallelized, but overall this can be a close to linear speedup. ... [On the new relooper] Note that this update makes Emscripten a 'self-hosting compiler' in a sense: one of the major optimization passes must be compiled to JS from C++, using Emscripten itself. Since this is an optimization pass, there is no chicken-and-egg problem: We bootstrap the relooper by first compiling it without optimizations, which works because we don't need to reloop there. We then use that unoptimized build of the relooper (which reloops properly, but slowly since it itself is unoptimized) in Emscripten to compile the relooper once more, generating the final fully-optimized version of the relooper, or 'relooped relooper' if you will." -
Facebook's Corona: When Hadoop MapReduce Wasn't Enough
Nerval's Lobster writes "Facebook's engineers face a considerable challenge when it comes to managing the tidal wave of data flowing through the company's infrastructure. Its data warehouse, which handles over half a petabyte of information each day, has expanded some 2500x in the past four years — and that growth isn't going to end anytime soon. Until early 2011, those engineers relied on a MapReduce implementation from Apache Hadoop as the foundation of Facebook's data infrastructure. Still, despite Hadoop MapReduce's ability to handle large datasets, Facebook's scheduling framework (in which a large number of task trackers that handle duties assigned by a job tracker) began to reach its limits. So Facebook's engineers went to the whiteboard and designed a new scheduling framework named Corona." Facebook is continuing development on Corona, but they've also open-sourced the version they currently use. -
Gate One 1.1 Released: Run Vim In Your Browser
Riskable writes "Version 1.1 of Gate One (HTML5 terminal emulator/SSH client) was just released (download). New features include security enhancements, major performance improvements, mobile browser support, improved terminal emulation, automatic syntax highlighting of syslog messages, PDFs can now be captured/displayed just like images, Python 3 support, Internet Explorer (10) support, and quite a lot more (full release notes). There's also a new demo where you can try out vim in your browser, play terminal games (nethack, vitetris, adventure, zangband, battlestar, greed, robotfindskitten, and hangman), surf the web in lynx, and a useful suite of IPv6-enabled network tools (ping, traceroute, nmap, dig, and a domain name checker)." Gate One is dual licensed (AGPLv3/Commercial Licensing); for individuals, it's pay-as-you-please. -
Gate One 1.1 Released: Run Vim In Your Browser
Riskable writes "Version 1.1 of Gate One (HTML5 terminal emulator/SSH client) was just released (download). New features include security enhancements, major performance improvements, mobile browser support, improved terminal emulation, automatic syntax highlighting of syslog messages, PDFs can now be captured/displayed just like images, Python 3 support, Internet Explorer (10) support, and quite a lot more (full release notes). There's also a new demo where you can try out vim in your browser, play terminal games (nethack, vitetris, adventure, zangband, battlestar, greed, robotfindskitten, and hangman), surf the web in lynx, and a useful suite of IPv6-enabled network tools (ping, traceroute, nmap, dig, and a domain name checker)." Gate One is dual licensed (AGPLv3/Commercial Licensing); for individuals, it's pay-as-you-please. -
ARM Code for Raspberry Pi Goes Open Source (Video)
"The Raspberry Pi project relies heavily on Open Source and Free Software — heck, it's targeted by more than one Linux distro. But some of the hardware stack that makes up the Pi itself needs closed-source code to run; the code that runs all kinds of low-level hardware is often closed source and closed off. I got wind from project instigator and lead Eben Upton that the system-on-a-chip at the Raspberry Pi's heart is about to get a lot more open. Says Upton: "We're about to open source all of the remaining closed source ARM code for the Pi. This will make BCM2835 the first ARM multimedia SoC with a fully-open-source ARM user and kernel implementation." I spoke for a few minutes with Alex Bradbury, who runs the Linux software work for the project, about licensing and what the new code means not only for Raspberry Pi but for users and other OS projects." (Note: the sound quality on this translantic Skype call is poor. We suggest reading the transcript.) Get the code while it's hot. -
CyanogenMod Android ROMs Accidentally Logged Screen Unlock Patterns
tlhIngan writes "Heads up CyanogenMod users — you will want to update to the latest nightly build as it turns out that your unlock patterns were accidentally logged. The fix has been committed and is in the latest build. While not easy to access (it requires access to a backup image or the device), it was a potential security hole. It was added back in August when Cyanogen added the ability to customize the screen lock size.`" -
3-D Model Support Comes To MediaGoblin
paroneayea writes "MediaGoblin and LulzBot have teamed up to bring 3-D model support to MediaGoblin! The announcement shows off a live demo of the new feature... it uses Blender on the backend to render stills and thingiview.js to show realtime WebGL previews. This means MediaGoblin is becoming more useful for 3-D artists and people interested in 3-D printing, especially those looking for a free-as-in-freedom alternative to Thingiverse."