bconstantin / django_polymorphic. Why am I only finding this now? This is a very nice thing for Django projects with inherited models - as soon as you make accesses to a common model class, you only get instances of the common model class with Django - but with Django-Polymorphic you get instances of the concrete subclasses. In principle, this makes the ORM more of an object database. However, this might come at the expense of performance, as more SQL queries are generated.
Archive 27.4.2011 - 10.5.2011
obensonne / hg-autosync. An extension for Mercurial that implements automatic syncs between working directories via a central repository. Can be executed manually as a command or in daemon mode (then it simply runs cyclically at intervals). This way you can do something like a controlled Dropbox - only the included files are synchronized. I would prefer a combination of inotify and xmpp Notify instead of the interval solution - this way the daemon would not constantly start up. But something like this could perhaps even be built from it. Update there is already such a thing.
Kirk Tuck: Approval. Tacit Approval. Implied Approval and "Street Photography.". There's also something that always makes me think: how to deal with street photography? It doesn't happen to me very often - I usually don't photograph people (or only as a side note), but part of it is also simply because it makes me uncomfortable to just photograph someone. It's just not really my thing.
Mixing it up: when F# meets C#. As you never program in a closed room, the connections between languages are quite important - and especially on platforms like .NET and JVM. The mappings of F# data types to C# data types and the use of these look quite interesting. Using C# data from F# is trivial, but the other way around there are some peculiarities. A similar situation exists with Scala and Java.
philikon / weaveclient-chromium. Hmm, a Mozilla Sync client as an extension for Chrome. Unfortunately, there is nowhere properly indicated how to install it and some comments on the net suggest that it probably does not run stably with newer versions. But maybe still take a look if I find some spare time. With this I could then, for example, connect Chrome on Mac or Linux with Firefox Mobile on Android. Since on Android the normal browser can't even sync with Google's own desktop browser (which is really embarrassing), this might be something.
birkenfeld / karnickel. Quite a weird thing: Macros at AST level for Python. However, in a form that rather reminds of C macros - so simple expression macros (and quite limited block macros). Above all, you get all the nasty problems of such an unhygienic macro system - like name conflicts between macro-local variables and outer variables. It's also rather just proof that it works and what you can do with the AST module delivered with Python.
dyoo/moby-scheme. Another interesting thing for Android: a PLT Scheme (i.e., Racket) dialect and a suitable toolchain to run applications created from Racket Advanced Student Language + World Primitives (ASL is already quite an extensive Scheme dialect in Racket and the World Primitives are for reactive programming in Scheme) in JavaScript and then bundle them into Android applications. So programming Android phones in a reactive Scheme dialect. Or even shorter: parentheses for Android.
Baarle-Hertog. I think I just have to go there because it's so weird. A place that is partly in Belgium and the Netherlands. Sounds a bit like "The City and the City" by China Mieville.
Blurb Plug-In For Adobe Photoshop Lightroom 3 | Blurb. Wow, that sounds really good - the books are priced as a real alternative to those from iPhoto and the available options sound good too - and even the shipping costs are not really problematic with normal Priority-Mail. I really need to check it out, because at the moment I always have to push my photos through iPhoto. Additionally, Blurb also allows you to sell photo books online (if it should not only be private books).
Computer Science and Biology Come Together to Make Tree Identification a Snap. For those who don't know what kind of tree is in their garden, or who, when they finally see the tree for the forest, want to know what they ran into.
Weekly Market. Even More Colorful.
The riot of colors at the weekly market in the sun is simply great. And the Sony NEX-3 with the 2.8/16mm is at least not so bad in sunshine. However, I still hope that the Zeiss 1.7/24mm will come soon, about which there are rumors - because the sensor can do much more than the lens delivers. And somehow I have the impression that manual focusing with the M8 not only gives me more fun, but also hits better.
Munster. Colorful.
Just a series of pictures from walks in Münster, unsorted and without much commentary.
Acta: Lobbyists want to prevent the ECJ from examining Acta. Where would we end up if we dared to check the rights extortionists and their machinations, or have courts examine the cleverly crafted contracts. Especially when experts are already saying that it does not comply with EU law in essential points.
Uni Bayreuth: Guttenberg deliberately deceived. Now it's official. It's all just plagiarized. However, it is strange that in such a debacle, the two people who reviewed this so-called "dissertation" are not scrutinized more closely. After all, how can a doctoral advisor and a second reviewer review a dissertation without reading it? Or should they have actually read the thing but not noticed that nothing particularly impressive was in it or that it was all just copied?
Ralf Jäger: SPD Interior Minister wants "carefree" data retention. Why do we even need the Union if a red-green government can be so crazy as to want data retention?
icylisper.in - jark. Hmm, yet another of many solutions for Clojure that enables simplified deployment of Clojure scripts, complete with persistent VM and #! support. Somehow, there seem to be quite a few of these lately.
Pygame Subset for Android. Wow - there is a PyGame subset for Android. Usage is a bit clunky because there is no IDE - you have to place the files on the SD card (hmm - a Nexus S doesn't have an SD card, where does that go there?) and edit them otherwise.
android-scripting - Scripting Layer for Android brings scripting languages to Android.. Interesting project with which you can run various scripting languages on Android phones. Support for Shell, Python, Perl, Ruby, Lua, TCL and JavaScript is already included. For me, Python is of course particularly interesting. Especially because the Android API is made available - you can thus directly interactively or scripted play around with the things.
PayPal Money Module « Snoopy Pfeffer’s Blog. The original article in which Snoopy describes a bit more about the extensions to Adam Frisby's DTL PayPal Money Module. Not up to date regarding installation, but the features still fit.
SnoopyPfeffer/Mod-PayPal - GitHub. I should take a closer look at this, as it allows you to use PayPal as a money module in OpenSim. It might be interesting if I ever want to revive and share my OpenSim projects again. It is based on OpenSim 0.7.1, so I can only try it out when the new Diva D2 is released (which is already in the works).
Tagbar, the Vim class browser. Seems to be a bit of a souped-up Taglist for VIM. Provides hierarchical views of defined classes, methods, and functions in a project.
ifttt / About ifttt. Sounds interesting: a simple event-action mechanism on the web that can connect various channels (Facebook, Twitter, Email, and so on) with actions - for example, create a tweet when someone tags you in a picture on Facebook or something like that. Although you probably have to provide your login details for some services, which you shouldn't necessarily do for every service ... (still in beta, access only by invitation) - a few more details about the motivation and the ideas behind it on the IfThisThenThat blog.
Scala 2.9.0 RC3 | The Scala Programming Language. Hmm, especially the parallel collections sound interesting - so to speak map/reduce for multicore on local data structures.
jQuery: » jQuery 1.6 Released. Regarding jQuery - a new version has been released. I personally find this .attr vs. .prop change somewhat unpleasant - it could bite me in a few places where I work directly with input fields (various widget code in a rather heavy Django application). Of course, it's great that it gets faster - faster is almost always good.
jgrowl. Definitely check it out, because our hand-knitted notifications are just not as nice and stable. jGrowl makes a much better impression, and as a jQuery plugin, it should also not collide with our jQuery codebase.
the m8 metadata project. Information about the EXIF metadata in Leica M8 image files. Very interesting, especially because of the information about the estimated aperture - the M8 has the mysterious blue dot for this, which is used to determine the ambient light and then, by comparing it with the TTL measurement, an approximate aperture is derived. I had already wondered why in Lightroom my pictures had meaningful aperture values ...
inotify - get your file system supervised. Bookmarked for later - a daemon that automatically triggers scripts on file events. This could be used to implement automatic image imports via upload from Dropbox, for example.
Ettenheim: Awarding of the Small Art Prize: Georg Schramm causes a scandal in the Europa-Park. Well, Georg Schramm is just a cabaret artist with guts and not such a softie like the gentlemen and ladies in the Europa-Park would probably have preferred. But as they say: those who can't handle the heat shouldn't be in the kitchen. You don't invite Georg Schramm for friendly, nice words. He is the personification of anger. And as such, he speaks for many (and I am one of them).
Lake and Castle Garden
Just a series of pictures I took today while walking around the Aasee and to the castle. On May 1st, people usually go on an outing here in the area - and in the city, most outings end up on the meadows around the Aasee (and at the canal, but I wasn't there today), which is why the Aasee then turns into a giant barbecue party.
Handkerchief Tree
I believe I have photographed this tree almost every year in its bloom. But this time I was there quite early in the bloom, so the petals still look really beautiful. The handkerchief tree is in the Botanical Garden. The photos were taken with the Leica M8 and the C-Biogon 2.8/35.
UNO III Streetbike at Firebox.com. Transformers are here! We live in the future! I already have trouble imagining sitting on a motorized two-wheeler, so I'd rather say thank you and pass on such a vehicle - but it looks cool.
Nubrella.com. Ok, looks weird, but could be really interesting for some situations. As often as I've seen people in Münster riding bikes with umbrellas in the wind, something like this would actually improve traffic safety.
PyPy Status Blog: PyPy 1.5 Released: Catching Up. Yay! PyPy is now on par with CPython 2.7! And again a few additional performance improvements. Moreover, the interface for CPython extension modules (i.e. those not written in Python) has been improved, first successes are Tkinter and IDLE.
Recently on Flickr
I have uploaded new pictures to Flickr. Here they are - unsorted and uncommented. Novgorod is actually Veliky Novgorod and is there because it was an important trading partner of the Hanseatic League - on the Salt Road in Münster, stones from various Hanseatic cities are embedded in the ground, with rings on which the origin is engraved.
spock - The Chicken Scheme wiki. If Dylan doesn't fit on JavaScript, how about Scheme? What's interesting here is the connection to Chicken Scheme - Chicken Scheme is one of the more interesting Scheme implementations in recent times that specifically focuses on integration into normal system environments (FFI and easy linking with C libraries), so this also lets us expect a bit from Spock in terms of JavaScript. And the documented functions already look quite good - not just a toy implementation, but apparently already a lot of functionality.
ralph. And if JavaScript under Flusspferd becomes too stupid for someone, they can simply install Ralph and then have a Dylan-like Lisp that compiles its function definitions to JavaScript. For whatever reason one would want that, maybe just because it's possible.
Flusspferd - CommonJS platform | Javascript bindings for C++. For those who want to play with JavaScript completely outside the client world, Flusspferd might be interesting. It is a REPL for JavaScript and various JavaScript libraries (which are oriented towards CommonJS).
PDP-11 emulator. In JavaScript. Runs Unix System 6. Yes, just like that, with disk access and all the well-known programs from back then. Because there aren't enough strange things already.
iPhone Location Data Again
Once again regarding the Apple response to the motion profile allegations and why Apple is right, but there is still a problem (but one that is significantly smaller than the dramatized problem in the press).
Apple produces a database with - anonymously collected, there are no indications so far that it is not anonymous - position data of iPhones with activated GPS, in which positions of networks are stored. Networks in this context are radio masts for GSM, 3G and WLANs that the iPhone sees at that time. However, this is not what is stored in the database that everyone is talking about. This is only the basis on which something is built that then ends up in the database.
The data sent to Apple is averaged internally and a "center" is determined for the networks reported by various iPhones (since the exact position of WLAN routers or radio masts is not simply provided - this must first be determined in some way). This data is stored in a large database at Apple. The position data therefore refers to the center of radio identifications. The original position data is only basic material for the determined position data.
The iPhone can now determine an approximate position via the visible radio identifications and their position information and a weighted average of the data based on transmission strength - but internet access is required for this. And internet access to the database at Apple. Therefore, the iPhone downloads the information about radio identifications and caches this locally. But of course not the entire database - that would be too much. Rather, a relevant excerpt determined by algorithms. This is now the database on the iPhone.
Apparently, Apple not only downloads the networks that the iPhone currently sees, but also neighboring networks - which makes sense, as the user moves around more often and the data from neighboring networks will be needed (potentially - the iPhone does not know in advance where I am going). Presumably, the iPhone will say "I see networks A, B, C" and the database will then provide "here are the networks A-M from the metropolitan area where you are located". The iPhone then takes X% of A, Y% of B and Z% of C as a basis and calculates a rough position and says "here I am". If it then moves into the visibility of network D, its position is already known and the iPhone can perform the position calculation directly without downloading.
In addition, the iPhone seems to store a temporal history of these downloads - presumably the developer assumed that if the user has been there before, there is a high chance that he will go there again. For this purpose, the iPhone keeps these data ready for one year. The claim by Apple that the duration of storage is a bug is certainly rather an embellishment - presumably a developer simply made up a duration and used it without considering how much would really be sensible - after all, these were not special data in his understanding. Only technical caches for downloads that he anyway makes when the user asks for his position.
What does this mean for the user? The data does not reproduce where he was in the coordinates - it only reproduces where the radio identifications are, in whose vicinity he was approximately. And since it also contains neighboring networks, this is really very approximate. Of course, a rough spatial profile of the user can be derived from this - for example, in my data I can indeed see that I have been in Amsterdam, in Frankfurt and in Berlin.
But for example, it also means in reverse that only the approximate regions are included if you also had network reception there, with download options. I was in Copenhagen - there I also had network access via the hotel, so traces of this are present. In Malmö and at the turn of the year in Russia I did not have network access - so GSM, but no internet access - and therefore the iPhone could not access these location data and could not download radio identifications with positions. Therefore, these data are also completely missing from my iPhone and there are no traces of Malmö, Ekaterinburg or Nischni Tagil (the same should apply if you have activated airplane mode or simply turn off WLAN and mobile data).
Furthermore, the spaces should become larger when you come to more rural regions - few WLANs, so mainly GSM cells and these with a larger range and more scattered. If you store a cell with the neighbors, this is already a fairly large area that is covered. In large cities, on the other hand, the covered area should be significantly smaller, simply because WLANs have significantly smaller ranges and there are more of them there. And radio cells there are also usually smaller (just because a cell can only cover a finite number of users, but the user density in cities is greater).
This is particularly interesting for programmers: do you think about what can be derived from cached data when you program? Take as a basis for consideration that someone has access to your DNS cache - which every system has internally, simply to reduce DNS queries. What picture of you as an image could this technically harmless information produce? These are the small pitfalls that programmers like to stumble over. It is actually harmless - auxiliary data that you get from the network is the beginning. Throwing away after use - well, if they are needed again, then it makes sense to have the most frequent ones ready, or? And it is exactly then that you run into problems like Apple currently has.
The discussion about why your browser cache contains porn pictures (because you read your mails with Outlook, for example, and opened a spam mail and had image display activated - not an outlandish situation!), if your wife finds them there, could already become quite interesting. The data no longer shows why they ended up where they ended up.
As stated in the title: I am referring here to the answer from Apple and have only checked this with my own data. My own data matches the information from Apple's statement and this statement itself is also consistent - both the contents and the specification of the use match quite well. I therefore see no reason why I should distrust the statement.
Apple's answer that the iPhone does not record the user's motion profile is therefore correct - it simply stores information for a position determination as an alternative to GPS. At the same time, however, it is at least a profile of the stay in large areas. Criticism is therefore quite appropriate. But in my opinion, it should be more intelligent than "Apple stores the user's positions in the last year", because this is simply wrong.
But as Apple says in the introduction to the answer: these are technical relationships that are more complicated than simply "does Apple store a motion profile Yes/No". And our press has massive problems with questions to which an answer contains more than two sentences. "Apple stores data from which the presence in large areas can be derived" does not sound so great and catchy as a headline.
Unfortunately, this very imprecise reporting can lead to problems arising - if I know that the data only covers regions where I have been, but not precise points of my stay, the explanation why my data from Frankfurt also includes the red light district (it's just near the train station) is much easier than if I have to assume that these are all places where I have been.
Apple must (and will, according to its own explanation) improve this - caching data for a year is nonsense. Backing up the data is also nonsense, they can simply be downloaded again if they are missing. Similarly, the data does not need to be stored if all location services are globally deactivated. It might also be generally interesting to have a switch "Pseudo-GPS Yes/No" or something like that, with which this type of position determination can be deactivated - then the user simply has to wait until the GPS satellites are logged in. Just as, in my opinion, the anonymous data collection for WLAN and radio masts should be switchable.
In my opinion, no cache should exist without a control function for this cache (just as you can also empty the browser cache). Because one thing must be clear: due to the general necessity of linking access time and loaded data (because only in this way can a cache with temporary storage function), every type of cache provides a kind of user profile. And this should be at least rudimentarily controllable by the user (in the sense of deleting). Setting up caches fundamentally with a clear function and a UI for this should become just as much a best practice as the encrypted storage of passwords on servers (hello Sony!).
Paper Airplanes HQ. Paper airplanes. That's all.
kiorky/spynner. Wow, that sounds really interesting - a programmatic (i.e., without a user interface) web browser based on QtWebkit as a Python extension. The advantage? Since a full web engine is underneath, you can use all the features of the web browser - for example, client-side JavaScript and all the other things used in web applications. This could be very interesting for automated testing of web applications - or for scraping more complex websites.
IgniteInteractiveStudio/SLSharp. Net - Write GLSL Shaders in C#, the IL code is then automatically loaded onto the GPU. High-Performance-Computing anyone?
IronScheme. Interesting - a Scheme for .NET. And unlike some dead projects I found, something seems to be happening here. Ok, I probably tend more towards IronPython, F# or if it's supposed to be Lisp, Clojure for .NET (there are now quite up-to-date binary packages to try out, unfortunately probably only Windows, at least it spits out errors under Mono).
F Sharp Programming - Wikibooks, open books for an open world. Seems to be a quite nice basic overview of F# - so especially for those who don't already have prior experience (e.g. from OCAML).
Tomtom apologizes for sharing data with radar traps. It's all quite funny in a way. On the one hand, the naivety of a data provider ("hey, they won't just use my data for something that might be embarrassing for us"), and on the other hand, the innovativeness of a government. (It is still unknown at this hour whether "experts" will run amok again and urge buyers of TomTom devices to sue the manufacturer or the Dutch state.)
Apple Q&A on Location Data. Will the experts who made some rather obscure claims now correct their statements? Or will there now be a great, embarrassing silence? Alternatively, I also have a nice conspiracy theory ready, that always works on the Internet.
Recently on Flickr
I have uploaded new pictures to Flickr. Here they are - unsorted and uncommented.
Home - Redline Smalltalk - Smalltalk for the Java Virtual Machine.. Not very far yet, but could become interesting at some point - and as an old Smalltalk fan, I naturally have to make a blog mark here.
Comics by Nick St. John. That's what it says. Just take a look. Simply and simply drawn, but in a peculiar way appealing to me (especially "How I Came to Work at the Wendy's").
Download Adobe Lens Profile Creator Preview - Adobe Labs. At the bottom of the page are download links. Once the mentioned Profile Creator, with which you can create your own profiles for cameras and lenses. But almost even more interesting is a Profile Downloader - with this you can download profiles from other Lightroom users. This can be useful if there is no profile from Adobe for your own combination yet. I also need to check if there is already a profile for the Zeiss C-Biogon (although it hardly needs one, it behaves so kindly when used).