Nerd time, issue 15

Nerd time is back, due to some complaints in person about how they missed it. In brief, nerd time is an occasional mailing list I send out to people I know that work at research labs. They’re usually slow in getting the tech world news, so I thought it would be fun to pass along some tech news bits. This is issue 15.
—–
Hi all.

Well, after starting work at Frogmetrics last May, I got really busy writing code, learning about business and startup related things, and absorbing sales and marketing stuff, that I simply read a lot less. There was also less tech news going on that I felt was significant. When there’s no significant news, the echoes become pretty loud in the echo chamber. Since I didn’t hear anyone say anything about it, I figured no one read nerd time. And since I was reading less, I became more intellectually lazy. Hence the 10 month silence on nerd time.

But about a month and a half ago, I got in-person complaints that nerd time was no longer being sent out, so here it is reinstated. Some of these might be old news, but it’s what I collected and found was significant over the last couple of months. And what the hell, old news in the tech world takes a while to get to the research lab world, so hey, this might be new to you. This time is mostly about source control and languages. I have other things I’m playing with that might be of interest, but will reveal them as I mature them.

Git the decentralized version control
Decentralized version control isn’t anything new, but its adoption is. Git is pretty powerful. I don’t go into all the reasons why. You can read about it in my post here. But on a deeper level, git is essentially a versioned filesystem. In fact, what’s most interesting about it is how general it is and how you can use it for things other than version control. You can use it to synchronize address books, remote deploy code, or even as a basic wiki or blog.
http://git-scm.com/
http://whygitisbetterthanx.com/
http://eagain.net/articles/git-for-computer-scientists/

Github a social network for developers
Github is like sourceforge, but much better designed, and has a social component to it. I can follow the coders and projects that I admire or find useful, and I can also see what projects they are committing to or watching. Thus, it gives me a sort of leading indicator of what the alpha nerds and geeks find interesting. And what they find interesting is what you and I will be using in our jobs 5 to 8 years down the line. The generality of git, as mentioned in the previous entry is given as an example in the last link. It’s of Raganwald, a well known Ruby coder and blogger who blogs on Github. Having a central place to commit and share code sorta defeats a mainstay of decentralized source control, but let’s ignore that point for now, and drink the github kool-aid
http://www.github.com/
http://github.com/raganwald/homoiconic/tree/master/2008-10-30/thrush.markdown

GitTorrent
Along the same lines, someone combined git with bittorrents. Whoot.
http://www.advogato.org/article/994.html

SUP friendfeed
I’m personally not as excited about SUP as I don’t mess around with feeds that much. But it claims to cut down on bandwidth for servicing feeds
http://blog.friendfeed.com/2008/08/simple-update-protocol-fetch-updates.html

Sinatra
If you thought Rails was lightweight, Sinatra blows it out of the water. While there have been other micro-frameworks for web apps, sinatra takes the cake in my opinion. It doesn’t take very much at all to get something up and running with sinatra. So given the amount of prototyping work that the lab does, it helps to just get something demoable up. If you wanted to continue with it, sinatra runs on pretty solid web server, and you can optionally switch it out also. I’d recommend taking a good look at it, and brush up on your Ruby skills as well.
http://sinatra.rubyforge.org/

Clojure
Clojure is a lisp dialect in a JVM. I’ve heard some good things about it, but I haven’t really tried it out myself, so I can’t speak on the merits of Clojure. However, as the second link below wonders, could Clojure be to concurrency orientated programming as Java was to OOP? I’ve talked about Erlang in the past, and it defn has some amazing traits as a programming language, barring the syntax.
http://clojure.org/
http://bc.tech.coop/blog/081201.html

As for actual programming languages I’ve been messing with, there are three. Erlang, Javascript, and Lua. I’ll only talk about the last one–and I only started messing with it because of LÖVE.

LÖVE is an “unquestionably awesome 2D game engine”
More akin to Pygame in Python than to Shoes in Ruby, Love lets you quickly build a game, but still stay within the realms of programming. The reason why I find it worth mentioning are the merits of Lua. It’s a basic interpreted language, but it’s embeddable into other languages, and its total size is pretty small ~200k or so. This make it ideal to be used in embedded systems. In addition, it’s one of the faster interpreted languages out there, and with LuaJIT (on the JVM), it’s even faster.
http://love2d.org/?teej

Mozilla Weave and Prism
Google Chrome

While I’m sure the lot of you have heard about Google Chrome, what’s interesting to me is in relation to the direction that Mozilla, and also Adobe Air have been trying to move towards: treating web applications like desktop applications. Not only will they be easy to install, and easy to maintain, but they afford easy collaboration with others. And with the maturity of Google Gears, being offline is not a problem now either. While there are still a couple bastions where pure desktop applications reign, such as gaming, I think we’ll find that the web app style development to be more pervasive for desktop apps.
http://labs.mozilla.com/2007/10/prism/
http://labs.mozilla.com/2007/12/introducing-weave/
http://www.google.com/chrome

SVG and application development
I don’t know that SVG will be the future of application development or not, but I know that the current html and css constructs were meant for documents. Web developers are actually rebending those tools for application needs. While it’s useful to think of the web as a collection of resources and document–it makes for a scaleable app–the actual page elements are still stuck in document-page speak. It would make it easier for app development to have their own app-specific constructs. SVG may or may not help in that regard
http://www.sitepoint.com/blogs/2008/12/22/svg-is-the-future-of-application-development/

Stackless Python, PyCUDA
There’s lot of people trying to find suitable languages for our multicore future. I’m not so sure that Erlang will be it. However, functional programming concepts are going to make a comeback, if not already. Python is poised to be ready as being able to handle concurrency through stackless. Some people are experimenting with using Python to access the new Nvidia CUDA hardware architecture.
http://www.stackless.com/
http://mathema.tician.de/software/pycuda

Gnip Central
Gnip central acts as a data middle man. Often times, getting through the API sucks for various reasons, and having a middle man that either converts that data for you, makes it available, or converts it into a push model instead makes it convenient. It’s an interesting niche, and I see this is as a perennial tar pit of data portability.
http://www.gnipcentral.com/

New York Times API
New York times is probably the more forward thinking out of all the newspapers when it comes to the web. Who else do you know that has released an API?
http://developer.nytimes.com/docs/movie_reviews_api?authChecked=1

Advertisements

Nerd time Issue 14

I use to work at a research lab, and while they do know what’s going on with military tech, they don’t really get news of consumer web technologies. I read up on it alot while I was there, and I still do now. I started a little mailing list after I left to keep them updated, and that’s what became Nerd time. Here is the latest for your enjoyment.

Hey all,

Happy 2008! It’s been over a month since the last nerd time. At first, it was because not much was happening. I’ve found that Silicon Valley(especially the software/web side of things) is much like Hollywood in the sense that there are fads and fashions that people make ruckus about and then ditch after a month. And it’s like sensationalism news when nothing noteworthy is happening, but people still find lots of trifle things to make noise about. So even though we attempt to filter it all through our favorite feeds and social news sites, it’s still a chore.

I met up with Ray the first time since College, and he said he feels out of touch with the tech world, even though he’s a chip designer. All he has to do is read nerd time! You get my own biased, hand-picked version of what’s noteworthy.

Mike and Nick, check out Johnny Lee and Buglabs, being hardware freaks that you are.

As usual, the easy stuff is up top. If you want to stretch your brain, go further down.

Johnny Lee’s wonderful world of HCI
Wiiremote VR tracking, Wii multitouch, Automatic registration of projection screens. It’s this researcher’s venture into HCI. more melding of computing into everyday lives. The videos are more self explanatory. If you skip everything else, I suggest you don’t skip these.
http://www.youtube.com/watch?v=Jd3-eiid-Uw
http://www.youtube.com/watch?v=5s5EvhHy7eQ
http://www.cs.cmu.edu/~johnny/projects/thesis/
http://www.youtube.com/watch?v=s59PObuJGWY

Facebook, Google, and Plaxo join DataPortability Workgroup
I strongly believe that a users’s data belongs to the user, and they should be able to take it around with them. I was pretty excited about Google’s announcement about OpenSocial platform around October or so. I haven’t personally taken a look at it myself, but according to pips here and there, it’s been said it’s incomplete and there was a case of a security hole. But this announcement of fb joining a data portability workgroup is good news, as making your data portable with you across applications will go a long way in making using computers a lot easier.
http://www.techcrunch.com/2008/01/08/this-day-will-be-remembered-facebook-google-and-plaxo-join-the-dataportability-workgroup/

EarthClassMail
This is a startup that you redirect all your snail mail to, and it opens and scans it in for you. You basically can read snail mail like you do email. You can even choose to recycle junk mail (good for the earth), and shred important documents. Neat idea, though of course, it all has to rely on trust of the company. As the social-political climate of the US over foreign energy dependence gains awareness with the push for ‘green’, we might see more companies like this that tries to move things into digital to save on green.
http://www.techcrunch.com/2008/01/08/133-million-for-startup-that-wants-to-kill-snail-mail/

Google’s philanthropic arm going to develop clean energy cheaper than coal.
Just because something is digital doesn’t necessarily mean it has a small environmental footprint. The servers it’s running on might be burning coal. I think it’s rather big, actually. It remains to be seen whether Google will democratize energy production, to shake up a very traditional energy industry, or simply join as another player. Regardless, this venture makes sense for them, as they run gigantic server farms.
http://www.techcrunch.com/2007/11/27/google-takes-on-global-warming/

Prediction Markets at GooglePlex study organization information flow
Google uses internal prediction markets to gather data on what’s going on. Prediction markets are basically using the mechanics of stock markets to predict things like, “is google stock over valued?”, “Will the U of I win the Rose bowl?”, “Will Comet win mindshare with developers?” This particular article talks about mapping information flow in organizations. I think as the world moves faster and faster, mid-sized companies are exploring more flexible organization structures to be able to respond quicker to changing markets. You’ll probably see more studies into company organization in the future.
http://googleblog.blogspot.com/2008/01/flow-of-information-at-googleplex.html

PathIntelligence
This is interesting because it’s another indication of how real-life is merging with digital. Any website monitors its traffic to know which pages are more popular than others. It uses that as implicit feedback to what customers like. This does the same for physical storefronts. Using bluetooth on customer’s cell phones to track foot traffic, they can see which racks and displays are selling more. As more and more sensors enter into the world, we’ll be able to do analysis and better understand our lives. I won’t talk about privacy concerns, cuz that’s just a can of worms.
http://www.techcrunch.com/2007/12/14/path-intelligence-monitors-foot-traffic-in-retail-stores-by-pinging-peoples-phones/

Amazon SimpleDB and computation on tap
I wish I brought Amazon stock. The more I find out about Jeff Bezos, the more I understand that it’s not really a bookstore that he built, but a philosophy. Anyway, Amazon, in this past year has been releasing “computation on tap” They basically sell distributed computing and storage services to developers and startups. Lots of people have taken advantage of it, for good reasons you can read elsewhere. In the past month, they released simple db, which is really just a fast index db. With computing on tap, it enables small teams to do large things. If computing and storage is a commodity, I suppose the value becomes what you can build with it.
http://www.amazon.com/gp/browse.html?node=342335011

WiTricity wireless power
Wireless power has been in development for some time now. I had mentioned it in one of my earlier nerd times. This one, although just experimentally demo’d, is rather neat. We probably won’t see wireless power more ubiquitous until maybe 5 years later. I don’t quite understand it myself (should have paid attention in PHYS 112), but apparently, it’s not radiation like we’re familiar with. Instead, it uses magnetic resonance, so that only two electromagnetic devices with the same resonance will transfer energy efficiently, everything else, like humans, won’t.
http://web.mit.edu/newsoffice/2007/wireless-0607.html
http://www.technologyreview.com/Infotech/19889/?a=f

Buglabs
This is a startup making mobile devices that you can hack. They plug together like lego pieces and run linux. People can prototype and experiment with different mobile form factors and fulfill their niche needs.
http://video.google.com/googleplayer.swf?docId=-1932063822649530376&hl=en
http://video.google.com/googleplayer.swf?docId=-3090880151267528595&hl=en
http://video.google.com/videoplay?docid=-3950989589304402454&hl=en
http://www.buglabs.net/products

Quagmire 2D programming language
This is a 2D virtual machine, and you can watch it as it uses its memory visually on a 2D surface. What’s interesting is that the latter examples looks like chaos, which reminds me of the pictures you see in “A New Kind of Science” In it Wolfram claims that basic computers nowadays just have simple loop patterns rather than the complex ones you’d see in class 3 CAs. Problem is, we don’t know yet exactly what class 3 CAs compute better, and how to harness it, other than CA120 is turing complete.
http://www.pawfal.org/Art/Quagmire/

Comet – AJAX’s cousin
Comet is using AJAX to push information to browsers, rather than having browser poll the server. The term was coined about two years ago, in reference to the bathroom cleaner. So you can get stuff like chat working in browsers, or like a stock market feed.
http://simonwillison.net/2007/Dec/5/comet/

Sunspider – javascript benchmarking
Javascript is getting faster and faster with work being donw on the underlying engines underneath popular browsers. I’ve seen “lemmings” implemented completely in javascript. You’ll continue to see this sort of thing. However, flash, silverlight, and flex are still far ahead of the curve when it comes to interactivity of the web.
http://webkit.org/perf/sunspider-0.9/sunspider.html
http://www.elizium.nu/scripts/lemmings/

Version control in emacs
The new emacs 22 has svn version control built it! *high fives Ian*
http://www.credmp.org/index.php/2007/12/08/emacs-hidden-gems-version-control/

Tumblelogs
Tumble logs are the half cousin of twitter and blogs. They represent a flow of conciousness digital media tidbits from the poster’s daily life. We might start to see more of this if it catches on. However, other than personal expression, I don’t exactly see a future for it. But then again, I was wrong about Friendster when it first came out.
http://tumblr.com
http://www.robbyonrails.com/articles/2007/12/19/putting-tumblr-to-work-for-you

Next gen ANNs
A talk on next generation Artificial Neural Networks. I haven’t watched it yet, but will this weekend. It promises to be pretty exciting.
http://www.youtube.com/watch?v=AyzOUbkUf3M

Ycombinator in Ruby
I finally figured out what ycombinators are. If I had to take a stab at it, it’s a way to implement recursion when you don’t have named recursions, loops, iterators, etc, and all you have are functions and a couple substitution rules. It’s pretty neat, and will stretch your brain a bit to understand it. Traditionally, you only do this in lambda calculus, but having the code in Ruby made it easier to understand.
http://www.eecs.harvard.edu/~cduan/technical/ruby/ycombinator.shtml

Nerd Time issue 13 – Shoes, javascript, and physics

Hope you had a good thanksgiving. Lately, I’ve been watching math and tech lectures, and dipping into various physics stuff. This nerd time is more hardcore than the usual news clippings. Next time, I think it’s going to be more about geospatial stuff. I’ve been looking into that too. I’m going to start stating why I think something’s significant, so you can figure out whether you should look at it or not. As usual, the easy stuff is up top.

Secret strategies behind many viral videos
As usual, when there’s a new medium of expression, it’s lawlessness and wild fun for a while, but where there are people, there are advertisers and marketers right on their heels to try to grab their attention. I don’t know how I feel about this, but I am a bit disgusted for some reason I can’t yet put my finger on. Perhaps it’s big corporations posing as ‘homegrown’. In any case, if anything positive has come out of this whole thing it’s that advertising has become funnier over the years. Props to Geico.
http://www.techcrunch.com/2007/11/22/the-secret-strategies-behind-many-viral-videos

Verizon opens its network to any device
Traditionally, telecos have seen themselves trying to be both line and content providers. So in 50 years, we’ve only had call waiting, *69, and three way calling. So for a teleco to open up its wireless network to any device is pretty big. Of course, it’s in response to Google’s open phone platform Android, and their bid for the 700MHz spectrum. I’m cautiously optimistic about the open-ness of the mobile web.
http://bits.blogs.nytimes.com/2007/11/27/verizon-wireless-says-bring-your-own-device/

Google goes into renewable energy
If I built big datacenters that sucked down lots of energy, I’d be interested in this too.
http://www.google.com/intl/en/press/pressrel/20071127_green.html

How to destroy the web 2.0 look
I think none of us here are designers, but I check in on this once in a while, since I have to do front-end design. The so-called web 2.0 has a look…the gradients, the beveled edges, and the rounded corners. But I’m also seeing more designers move away from that, and trying to break out of an obvious grid layout, so you might see that bleed over the web apps.
http://www.snap2objects.com/2007/11/20/how-to-destroy-the-web-20-look/

Metalayer over web pages

The web was always meant to be a read/write medium. In the beginning, it was a predominately read medium until wikis and whatnot came along. Some people are still trying to push the envelope by putting a metalayer over web pages that you can write on and communicate to others visiting the same space. So far, nothing in this space has made huge waves, but I expect there to be more developments on this front.
http://www.shiftspace.org/screencasts/intro/index.html

Running in Shoes in Ruby
Ruby is a nice language, but there are some problems with its Std lib. One of which is a poor GUI toolkit. It uses the old Tk toolkit which is super ugly. Shoes is a GUI toolkit by _why_the_lucky_stiff for native apps that is meant to write like web pages. That makes it pretty easy to figure out. Check out some of the screenshots with the accompanying source. It makes Java GUIs seem terribly verbose.
http://code.whytheluckystiff.net/shoes/wiki/Tutorials

MIT’s Open Courseware
For those of you that would like to brush up on various undergraduate and graduate topics. It’s probably less relevant to those of you at the lab, due to the free master’s program. They have courses on other topics besides math too.
http://ocw.mit.edu/OcwWeb/Mathematics/

Future of Javascript 2
Javascript, as I’ve said before, has surprised me. My previous impression of Javascript was a dinky little language on browsers that you use to to do some form validation. It’s evolved into the most used language on the widest platform on the planet. It supports references, OOP, and closures. This slide details more of what’s to come. Beyond Ajax, I think you’ll start to see more and more flexible interfaces in javascript, starting with SVG. Various browsers are making their javascript interpreters faster and meaner, so you’ll see more web sites pushing this envelope by making their websites more expressive.
http://ejohn.org/blog/easy-pdf-sharing/

Jquery vs Prototype
Jquery and prototype are two javascript libraries that provide lots of syntactic sugar as well as hiding browser incompatibilities from the application developer. People often dish it out between the two, so here’s two perspectives.
http://jquery.com/blog/2006/08/20/why-jquerys-philosophy-is-better/
http://alternateidea.com/blog/articles/2006/8/23/jquery-mis-leading-the-pack

SeaForth
Forth is a stack-based programming language. This is a piece of hardware implemented with Forth on top. I actually didn’t read too much of it, because I didn’t get everything they were saying, but Mike and I were talking about Forth the other day, and this reminded me of it.
http://www.falvotech.com/blog/index.php?/archives/200-Forth-Day-Report.html

Quantum Mechanics from a computational point of view
I never really got the wave equation when I was an undergrad. And quantum mechanics had seemed odd and spooky to me. However, this article on the math behind it is fairly clear. It explains how you get negative probabilities, clearly, but gets kinda murky when it starts talking about mixed states. Currently, in machine learning and search, statistical methods dominate the field over ontological methods. I wonder how long it might be before probabilistic methods in quantum mechanics will find a use in machine learning?
http://www.scottaaronson.com/democritus/lec9.html

String Theory in two minutes
This is something fun, isn’t hard, and doesn’t take too long. It’s just a short video on string theory…in two minutes! If you want to know more about string theory, click on the second link. It’s a tutorial.
http://discovermagazine.com/twominutesorless?bcpid=716091875&bclid=686943766&bctid=687029421
http://www.slimy.com/~steuard/research/StringIntro/

3D mouse from electric field sensing
Minority Report certainly inspired some HCI people to get cracking. This is a discussion of how to detect hand gestures using an elec field. I wasn’t able to get all the way through it, cuz I started watching math lectures. However, it is an interesting piece. I don’t think we’ll see 3D mice any time soon, but with mobile devices having small keyboards, this sort of technology might become very useful.
http://www.research.ibm.com/journal/sj/353/sectione/smith.html

Similarity Search
And lastly, a talk on similarity search. It’s a different measure of similarity. Rather than putting everything in a parameterized space and using malahanobis distance, you calculate distance based on the graphical structure the data makes. I’ve watched it twice, and I feel like I’m still missing something. At least the accent reminds me of “Hokey, here’s the earf”
http://www.youtube.com/watch?v=MsRTrO_p6yE
http://www.endofworld.net/
http://simsearch.yury.name/tutorial.html

Nerd Time issue 12 – Android, Social Ads, Hardware, Networking

I owe you a beer
I’m not sure how many of you heard of Twittering by now, but Twitter is like…microblogging. You say what you’re doing or just quips over your cell phone in 144 char or less, and your friends can get updates from you on what you’re doing on their phone. If any of you use facebook, it’s much like the status update feature. Most people find Twittering useless and inane on one hand, but lots of people seem to use it the world over. They also released an API, which someone took advantage of with Foamee, which is why this is even on here. Foamee records who you owe beers to, and keeps track of that. So even on a seemingly inane platform, I thought the use of foamee for that end is actually pretty creative.
http://twitter.com/
http://foamee.com/

Google’s Android Platform
Submitted: Metlis
As most of you probably heard, Google released its mobile OS platform, not an actual phone, as rumored. I took a moderately deep look into it. It’s a full stack that runs on linux. It compiles Java (rather, a flavor of Java) into their own Java Virtual Machine, named Dalvik. I think with JRuby and Jython around it should be a matter of time to get Ruby and Python on there. The way they’ve decided to organize the application lifecycle is simple to understand and organized. The UI uses xml to declare the view, rather than to connect it together in code, like in Swing. Outside of standard UI components like text fields, they also have mapviews. You can do interprocess communication by broadcasting an “intent”, and it’ll pick the application best suited to fulfill that intent. So if your app need to pick a photo, it sends out an intent to pick a photo, and the photo gallery will respond. The user picks a photo, and that’s what gets returned to your app. The API isn’t done in full. Some of it isn’t completely implemented yet, and an actual android phone isn’t due out til mid to late 2008, I think. So we’ll see if this all pans out, but it’d be exciting if it does.
http://www.reuters.com/articlePrint?articleId=USN0262823920071106
http://code.google.com/android/what-is-android.html
http://www.youtube.com/watch?v=fL6gSd4ugSI&feature=PlayList&p=D7C64411AF40DEA5&index=1
http://code.google.com/android/
http://www.betaversion.org/~stefano/linotype/news/110/

Facebook’s new Ad platform
Last week, on the 5th, Facebook released its new ad platform. The new ad platform uses what people do when interacting with their friends to advertise. Most of us don’t make buying decisions independently. We ask our friends about what to buy, especially if we don’t know much about the domain. Facebook will allow companies to sell their wares on it, and if you buy say…Nike shoes on it, it’ll show your friends on their news feeds that you brought shoes. IBM did a paper on advertising, as we know it, will start to fade out. Advertising isn’t “advertising” when it’s targeted and relevant.
http://www.facebook.com/business/?socialads
http://www-03.ibm.com/press/us/en/pressrelease/22570.wss
http://www.scripting.com/2006/08/03.html

Seiko comes out with thin ebook reader
It’s a prototype, but all the same, pretty impressive. I can’t way until eBook readers become more popular.
http://gizmodo.com/gadgets/e_ink/seiko-high+res-super+thin-ebook-reader-323502.php

Intel releases Penryn Processor
I don’t know too much about this topic, other than, “Nick would know more”. Got any light to shine on this one?
http://www.infoworld.com/article/07/11/12/Intel-launches-power-efficient-Penryn-processors_1.html

Nokia comes out with a tacile touchscreen
This should be of interest to hardware nerds like Mike. Nokia came out with a touch screen that feels like you’re typing at a keyboard. What they do is put an array of pizoelectrics behind the screen to move it, and then time it correctly to fool your senses. That way, it feels like you’re actually clickity-clacking away on the keyboard on a touchscreen.
http://www.redferret.net/?p=9533

Amazon comes out with an eBook reader
I totally didn’t see this coming, but it makes sense in hindsight. The coolest thing about it is the device can download directly off wireless cellular internet, and the subscription to the IP service is included with the price of the device.
http://www.newsweek.com/id/70983

Giggling Robot becomes one of the kids
I’ve always thought that intelligence was partly social. A Qurio robot does enough to fool toddlers into thinking that it’s one of them. Eventually, I think we’ll have the same type of stuff for adults, but fool us into thinking about them as pets with utility, rather than as equals.
http://technology.newscientist.com/article/dn12879-giggling-robot-becomes-one-of-the-kids-.html
http://webjazz.blogspot.com/2007/11/nabaztag-and-pet-appliances.html

Lets you control a real person in real life
Submitted: Howard
Lots of people are experimenting with connecting the real world with the virtual. I think we’ll probably see more and more of this type of stuff as mobile phones become more powerful and connected.
http://www.therawfeed.com/2007/11/new-site-lets-you-control-real-person.html

Where am I? Firefox extension
Things have been brewing in the mobile world, with iPhone and Android making waves. One thing is for sure: people will want web browsers on their mobile phones. I think I remember firefox wanting to move to mobile platforms. Anyway, we’ll probably eventually see geo-location aware browsers. Here’s a neat firefox extension that helps patch that need for now.
https://fosswiki.liip.ch/display/WHE/Home

Just an interesting tidbig on cracking MD5
Usually MD5 hashes are used to encrypt a string. The resulting hash you get is suppose to be hard to “reverse” so you can’t tell what the original string is. This guy used google to search for the MD5 hash to get the original string. Let that be a lesson for you. Always salt your passwords!
http://www.lightbluetouchpaper.org/2007/11/16/google-as-a-password-cracker/
http://md5.rednoize.com/

A New way to look at Networking
I imagine most of you don’t ever watch the lectures. But I only list the good ones! This is a pretty good lecture taking you through the history of networking from telephony all the way to the present day TCP/IP and its problems. The proposal Van Jacobson makes is to request data by name to the network rather than by source. So instead of asking for http://nytimes.com, which you assume the content is the nytimes, you’d ask the network “give me the new york times”, and you don’t care where on the network it comes from. Think bittorrent for smaller files without the existence of a tracker. “Change your point of view to focus on the data, not where the data lives, because it doesn’t have to live anywhere” That means that nodes will cache content it receives and gives it to anyone that asks for it. Of course, updating that distributed content will be tougher, as well as how to implement security for content provider. If you want to skip to the meat, start at 40:00.
http://video.google.com/videoplay?docid=-6972678839686672840&q=engedu

Shared Memory Must Die
It seems like programmers will have to figure out how to program more concurrency models outside of locks. I’ve already mentioned this when I talked about Erlang before.
http://www.wellquite.org/shared_mutable_memory_must_die.html

Pattern matching method dispatch and DSL
Ian asks me, “Have you heard of Lua?”, to which I said, “It was in nerd time a couple issues back!” Lua apparently makes it easy to embed custom languages in your applications–what people call DSLs. Ruby has been pretty good at doing it too. This is ruby envying functional programming languages and their weird features like pattern matching method dispatch and lisp’s s-expressions. A guy uses pattern matching to write a DSL to parse Logo, the turtle drawing program. This wouldn’t have been a way I’d ever think to solve this problem, so it opened up my eyes a bit.
http://www.artima.com/rubycs/articles/patterns_sexp_dslsP.html

Nerd time 11 – Open social, web on desktop, random tidbits

I use to work at a research lab, and most of them are playing around with other toys outside the web. I send this out as a mailing list just to keep them updated.

Google Gphone
Rumor mill’s on full churn with speculation about google’s gPhone, so even if you read a bit of tech news, you’ll probably have heard something about it. I personally don’t think that they’re looking to compete with apple’s iPhone. To me, it makes more sense for them to license an open phone to other phone manufacturers to make it a platform they can do mobile and location-based advertising. We’ll see what actually happens.
http://www.techcrunch.com/tag/gphone/

Google Open Social API
Google’s going to announce the openSocial API that is suppose to out-open facebook. There are moves here and elsewhere to try and make your social network portable across different web services. That way, if you sign up for a new service, you don’t have to tell it who your friends are all over again. The last link is by Marc Andersen of the Netscape Fame. His latest thing is Ning, a tool that lets you build social networks–so obviously, he has a vested interested in the topic.
http://www.techcrunch.com/2007/10/30/details-revealed-google-opensocial-to-be-common-apis-for-building-social-apps/
http://www.techcrunch.com/2007/10/29/googles-response-to-facebook-maka-maka/
http://blog.pmarca.com/2007/10/open-social-a-n.html

Eye-fi
This is something I’ve been waiting for for about 2 years now. It’s an SD card that’s also a wifi card. It enables any camera to be wifi-enabled. So you can take pictures and have it be uploaded to the web at the same time. This sort of a thing is a boon to Mobtropolis, as it lowers the barrier between taking a picture and sharing the photo. Hopefully, people will stop taking pictures of the same group pose with all different cameras soon.
http://www.eye.fi/

Mozilla Prism
Prism is still experimental, but both mozilla and adobe are thinking of taking the web experience and putting it back onto the desktop. Prism is mozilla’s Thus, every web application will seem like a native application, regardless of whether you’re actually connected or not. Thus, you can browse your mail or feed reader even if you’re not connected. In addition, desktop apps can take advantage of local hardware acceleration for graphics. This seems similar in concept to Java’s Web Start, except it’s built on top of web technologies. While nothing’s for sure, all the stars seem pointed in this direction. Thus, web developers might start moving on desktop developer’s territory in the near future.
http://labs.mozilla.com/2007/10/prism/

How can I use spreadsheets to answer some of my many questions about the world?
One example of mixing the web with traditional desktop applications is that you can actually put queries in your spreadsheet, such as # of users in Paraguay or the ERA of Roger Clemens. Just a tidbit I thought was neat.
http://documents.google.com/support/spreadsheets/bin/answer.py?answer=54199

Evidence Based Scheduling
Joel came out with this article a couple days ago. I thought it was pretty neat and obvious (in hindsight). He comes up with a way to estimate shipping dates of software with a specific probability. He adapts a version of Monte Carlo in order to do it, and while I don’t know if it works as well as it claims in practice, I assume that Joel eats his own dog food, and it seems to make sense. If you’re interested in software scheduling, defn give it a read.
http://www.joelonsoftware.com/items/2007/10/26.html

The 4 boneheaded biases of voters
As some of you know, I’m pretty interested in decentralized systems–especially since Mobtropolis will have social problems at larger scales if I don’t pay attention to them. Capitalist economies and voting systems being two examples. This is an article I found detailing the biases that people have about large-scale decentralized systems–specifically the economy. It’s an interesting read.
http://reason.com/news/show/122019.html

State Machine Compiler
Ragel generates state machines for you. I found this to be interesting because I was wondering about how to do minimal aspect orientated programming without a full-fledges AOP system in place.
http://www.cs.queensu.ca/home/thurston/ragel/

Ruby’s Object Model
When you grew up with OOP, you think you know it all. But the object model changes when you’re using a dynamically typed language. It’s a rather different beast altogether, and in order to keep straight the meta-programming things that people do, it helps to know and understand the object model. These are the two best ones that I’ve seen that explains Ruby’s Object Model, and particularly, the Metaclasses.
http://rubyforge.org/docman/view.php/251/96/ChrisPine_UROM.ppt
http://www.klankboomklang.com/2007/10/05/the-metaclass/

MapReduce in a Week
If you’ve got a week to spare. Mapreduce is how google churns through embarrassingly parallel problems. It has its roots in functional programming. If you don’t know what mapreduce it, check out joel below. Though I’m sure I posted that link before, it’s worth checking out. He gives a good overview.
http://code.google.com/edu/content/submissions/mapreduce/listing.html
http://www.joelonsoftware.com/items/2006/08/01.html

Nerd time – issue 10

Nerd time is just a short mailing list I put out to my ex-coworkers at APL. They’re in the applied engineering research fields, so what’s going on in the web world isn’t well known to them in their daily work, so I fill them in from time to time. If you regularly read techcrunch, proggit, or slashdot, I’m sure you’ve seen these before.


Hey all,

I was going to make this one about new services I use that might not be well known, since there’s nothing terribly interesting going on lately. But after a month of haphazardly collecting interesting things, no particular pattern appeared. Just a hodgepodge of things I found interesting. There’s nothing terribly hard this time. All easy reading, except for the one on APL at the end.

Take screenshots to measure your productivity.
This is something Ian’s been asking for, and I thought he’d like to check it out. No Linux client yet though.
http://www.rescuetime.com

Prof. Randy Pausch’s Last Lecture
This is a CMU prof that is dying of cancer, and he gives a last lecture. You can skip all the intros and extros, as the actual lecture is about an hour. It’s pretty good, and entertaining. I found his lecture of time management to be pretty helpful.
http://video.google.com/videoplay?docid=-5700431505846055184

Voice tracking camera
This is one of those “simple” things that you wish you did. Theoretically, it’s pretty easy. You use microphones to do triangulation, to figure out where the voice is coming from. But when you see his setup, he uses seven all around the room–so it might be a bit complicated. It’s a long way from our own two ears.
http://www.youtube.com/watch?v=rrOy6LpL940

Commenting engines
Commenting is one of those fundamental aspects of web interaction that gets implemented over and over again, in wikis, in forums, in social apps, in blogs. But with commenting comes a host of problems. Some technical such as spam bots, cross referencing them, keeping the most relevant ones. Some social, such as trolls, scaling a conversation, etc. These two implement that for you, and commenting becomes just a widget. Not a bad idea, especially if they can thread conversations
across different blogs.
http://cocomment.com
http://www.disqus.com/

Build your own car
I’ve always wanted a hackable Linux based car. Everything from the onboard entertainment system to the safety system. While this isn’t it, it’s a step closer. I think they’ll ship you all the parts you need to build your own car.
http://www.grabercars.com/content/view/80/2/

Dopplr is a service way to tell your friends, “hey, I’m going to [town], who’s already there, let’s hang out, or I need a place to crash” sort of thing. It’s a social network focused on travelers. I’ve often was somewhere, and found out a friend was there at the same time too, but we didn’t know. It’s still in private beta.
http://www.dopplr.com

Mozilla Lab’s social network in a browser.
This is an experimental add-on from mozilla that tells you want your friends are doing online. It’s like the news feed in facebook. So any time anyone posts a link, updates their status, etc. you’ll see it. And sending links to people is easy. You just drag it to their photo in the side bar. So instead of me sending nerd time over email,
I might as well blog it or use something like “The Coop”
http://wiki.mozilla.org/Labs/The_Coop

OAuth is Open Authentication.
I think I posted something about OpenID way back. OpenID is an open way of having uses verify to you they are who they say they are. That way, you don’t have to have a separate login/pass everytime you want to use a new service. OAuth is a way for users to grant permission to a new service for their API. So if you signed up for mobtropolis, and your social network is elsewhere, you’d use OAuth to authorize
Mobtropolis to look up your friends.
http://oauth.net/about/

XFN microformats and FOAF
This is also part of the effort to open up your social network. Microformats are basically little bits of meta-data inside HTML tags. It’s part of the effort to make the web more semantic. This can be used in conjunction with OAuth to make your social networks portable. We’ll see if people make headway. You can view microformats with the Operator mozilla plugin for firefox. Microformats are actually on quite a few web pages now.
http://microformats.org/
http://www.gmpg.org/xfn/
http://www.foaf-project.org/
https://addons.mozilla.org/en-US/firefox/addon/4106

Forth is a stack based programming language. I don’t know as much as I should about it, but it’s mind-expanding. The language lacked conditional branching and loops. But apparently, that’s because you can write your own, not to mention any other weird control structures you can think of. In fact, you can write your own Forth based-PC, its environment, OS, and language in about 2000 lines of code (it is said)
http://weblog.raganwald.com/2007/10/until-you-understand-how-forth-is.html

APL — the language
I heard of this language, but never managed to see any code. I can see why. You need a whole other keyboard to program in it. But it is pretty neat. You can write Conway’s Game of Life in one line. I expect this is because it maps well to functions. Neat idea.
http://catpad.net/michael/apl/

Nerd time, issue 8

I used to work at a research laboratory, where the fanfare and fads of the web aren’t of great concern. But the co workers liked to know what was going on outside the ivory towers, so after I quit, I sent them an informal mailing list. I post it on here just for fun too.

So after a little hiatus deploying mobtropolis, nerd time is back. As
usual, easy reading is up top. This time it’s on databases. Dbs and
backends usually inspire yawns, because frankly, they’re not
sexy–there’s no pretty screens to look at. However, dbs are often a
bottle neck, and scaling beyond the usual db configs has been a source
of pain for large scale software. Here, I point out some relatively
obscure db stuff on the horizon–after some easy reading and news.
And oh, if you don’t want to get these anymore, just lemme know.

A group is its own worst enemy
Nothing to do with dbs. Just a classic piece of text on social
software. Easy reading, but good lessons for me when building
http://www.mobtropolis.com
http://www.shirky.com/writings/group_enemy.html

Firefox 3 with XUL runtime
I did comment on this, and FF3 should be less prone to crashes, unlike
FF2, and the significance of this is much like Adobe’s Integrated
Runtime(AIR), web devs will be able to create native desktop
applications using the usual web tools–HTML, javascript,
actionscript, XML, etc.
http://arstechnica.com/journals/linux.ars/2007/08/21/using-firefox-3-as-a-xul-runtime-environment
http://webjazz.blogspot.com/2007/08/using-firefox-3-as-xul-runtime.html

Adobe also open sourced their Photoshop engines. Offhand, I’m not
sure what one would do with it, unless there were some type of
innovative image manipulation–of which you’ll see on the next link
http://opensource.adobe.com/group__asl__overview.html

Content-aware image resizing.
This is kinda neat. It uses energy functions to resize images while
keeping important content, and killing out background parts of the
images. If you don’t click on any of the links but one, I’d click on
this one.
Update:
Well, what’s interesting is that the basic energy function they used is simply a two-dimensional gradient. It’s under the assumption that high frequency image content is usually what contains information/foreground/interesting parts of the image. This is probably usually true, and probably works for a large number of images. However, I think if you had an image of a flag with a forest as the background, it’ll cut out the flag first.
http://www.youtube.com/watch?v=c-SSu3tJ3ns
http://www.faculty.idc.ac.il/arik/imret.pdf

Byte-serving is an aspect of the HTTP protocol that I didn’t know
about. Apparently, you can request specific parts of a file over
http. Web-based bittorrent?
http://www.coneural.org/florian/papers/04_byteserving.php

hBase – Google bigtable open source clone. Bigtable is a in-house
developed distributed database. I watched a video lecture of it one
time, and it seems pretty neat.
http://glinden.blogspot.com/2007/07/hbase-google-bigtable-clone.html

A free database of the world’s spec-related knowledge in one place.
Oddly enough, it is populated with things. I’m not sure what
motivates people to enter things in, but probably the same motivation
as people contributing to wikipedia. The neat thing about this is
that you can query it with an API.
http://www.freebase.com/signin/

CouchDb is an database that doesn’t use relational tables. Mostly for
documents. It’s still in alpha.
http://couchdb.org/CouchDB/CouchDBWeb.nsf/Home?OpenForm

Ambition is an experimental ruby gem that makes SQL queries as Ruby’s
Enumerable functions. Web devs seem pretty allergic to SQL in general
and has tried to build layers between the dev to have one less
language to learn. Probably also the result of wanting a 3 tiered
architecture too.
http://errtheblog.com/post/10722

Mnesia is Erlang’s distributed DB. I’m under the impression that it
doesn’t use SQL. One queries directly by using Erlang tuples. I’ll
have to learn more about this one.
http://www1.erlang.org/documentation/doc-5.0.1/lib/mnesia-3.9.2/doc/html/part_frame.html