238
showing only google [see all]
Aktuelles TV-Show-Setup mit dem Plex Media Server
Wie bereits angedeutet: Plex löst Air Video ab. Die Media-Server-Software bringt a) alle Geräte zur Wiedergabe von TV-Serien unter einen Hut (iPhone, iPad + Apple TV), b) verpackt den Desktop-Datei-Dschungel aus Listen und Ordnern in eine angenehme Couch-UI und c) merkt sich Episoden und Staffeln meiner Shows, die noch ungesehen auf der Festplatte schlummern.
Insgesamt stellt der Plex Media Server im Zusammenspiel mit seinen iOS-Programmen (4.49 €; universal; App-Store-Link) die komplettere Lösung im Umgang mit TV-Aufzeichnungen dar.

Ein elementares Puzzleteil, das sich bei mir über die vergangenen Monate als absolut robust entpuppte, ist die Kennzeichnung von bereits angeschauten beziehungsweise noch ausstehenden TV-Episoden innerhalb einer Staffel. Air Video fehlt eine solche Funktion gänzlich. Das bedeutete: Nach jeder ‘abgearbeiteten’ Folge markierte ich im Finder die Videodatei farblich. Natürlich wurde das a) regelmäßig vergessen und b) ist diese Kennung über die iOS-App von Air Video nicht einsehbar.
Beim parallelen Konsum mehrerer Serien, bei denen komplette Staffeln auf der HDD verweilen, ist ein transparenter ‘Zählerstand’ nicht nur eine Bequemlichkeit sondern ein tatsächliches Feature.

Relativ neu in meinem Setup ist das Trakt.tv-Plugin, das beim gleichnamigen Webdienst vermerkt, welche neue Folge als angeschaut gilt. In jüngerer Vergangenheit benutzte ich zur manuellen Kennzeichnung bislang uTrakt (1.79 €; universal; App-Store-Link). Abgesehen von einem kleinen Bug funktionierte der gegenseitige Abgleich bislang zufriedenstellend – auch wenn’s einen Moment dauert bis der ‘Seen it‘-Banner auf dem Trakt.tv-Konto auftaucht. Da der Plex Media Server jede dieser Aktivitäten abwickelt, ist es nicht ausschlaggebend auf welchem Gerät man konsumiert – der Sync steht.
Apropos Geräte. Am Fernseher baumelt bei mir ein Apple TV der zweiten Generation mit Jailbreak. Die aktuelle Plex-Installation (0.11.0b2) funktioniert überwiegend akzeptabel. In (für mich nicht nachvollziehbaren) Abständen nimmt sich die aufgehakte Apple-Box eine Auszeit und startet einmal neu durch. In seltenen Fällen läuft die Audio- und Videospur bei der Wiedergabe auseinander. In diesen Fällen hilft es (zuverlässig), einmal ins Menü zu wechseln und dann erneut (an der letzten Abspielposition) anzusetzen.
Als Fernbedienung benutze ich die iOS-App Rowmote (0.89 €; universal; App-Store-Link) – ohne speziellen Grund, nur weil es geht (und ein iPhone oder iPad immer in Griffweite liegt).

Doch es braucht keinen Apple TV mit Jailbreak! Die AirPlay-Wiedergabe über die Plex-iOS-App funktioniert verlässlich und ist ab und an sogar die nervenschonendere Lösung weil die Navigation durch die TV-Shows direkter verläuft.

Letzter Tipp: Der Plex Media Server erkennt Serien eigenständig und ordnet mit beeindruckender Genauigkeit der Show die korrekten Zusatzinfos aus dem Netz zu. Eine rudimentäre Benennung reicht für populäre Sendungen oft aus. Sollte doch einmal Nachrüst- beziehungsweise Korrekturbedarf bestehen, füttert iFlicks (17.99 €; MAS-Link) sorgsam den Videodateien ihre Metadaten (und wandelt bei Bedarf auch das Format).

Mehr zum Thema
Gridlee spielt Nintendo-PlayChoice-Games (+ Video)KompromisseStrom im Auto: der Griffin PowerJolt SE mit Lightning-AnschlussDie Netatmo ‘Urban Weather Station’ (+ Video)Verkaufsargument Simlock: Telekom verzichtet beim iPhone 5 auf die Netzsperre
Zubehör  Hardware  airplay  iFlicks  Plex_Media_Server  Apple-TV  Jailbreak  plex  Hack  trakt.tv  from google
february 2013
Triggering tasks remotely with notifyutil and launchd
Let me start this by saying that I’m fully aware that there are multiple ways to accomplish this feat, and that my choice may not have been the perfect one. It happens to work around some frustrations I found with other solutions, but I kind of got on a kick of really wanting to make this work. It works (though it killed my Sunday). It’s pretty complex to describe, though, so I’ll probably end up leaving some holes in the story. If something doesn’t make sense, point it out in the comments and I’ll fill in the blanks.

The final summary, early

Here’s the summary of the system I’m using to build my Jekyll blog by having scripts in protected shells set up the necessary environment and run Rake tasks from them.

A launchd job for each trigger
A notifyutil key for each trigger
each job calls the same script with a different argument

The first instance of the script that opens creates a shared id.running key for determining if a job is running (0 = unset, 1 = no job running, 2 = job running)
The script argument sets a unique notification key for the instance and assigns a set of tasks for that trigger
The script launches notifyutil -1 with the unique key, causing it to wait for a notification to be posted to that key before continuing
When that key is posted to, notifyutil -1 yields and the script continues:

If the running.id state is 2, it pauses and polls for the current job to finish (id.running = 1)
It sets the id.running key to 2 to indicate that its own job has started
Performs the tasks for that key
Remove the id.running notification
Loop returns to waiting for a signal





A few details

launchd (man page)
A system built into OS X that handles scheduled, constant and triggered tasks for the system. It’s easy to add your own tasks and have run in the background as any user.
notifyd/notifyutil (man page)
The notification system in OS X is an easy way to post “messages” between shells and across users. It registers “keys” such as foo.bar and allows you to listen to them, post values to them and query their value.

notifyutil basics:

You can name your keys whatever you like, you just have to know the name of it to call it later. For my Jekyll listeners I’ve been using a convention like “jekyll.deploy” and “jekyll.generate”. Easy to remember.

Start a listener for a key with notifyutil -1 key.name where the -1 can be any number and it will wait for that number of posts before yielding.

An active key can have a state set using notifyutil -s key.name 123, where 123 is the numeric value to assign. I use these to mark whether jobs are running or idle, with 0 being “inactive,” 1 being “listening,” and 2 being “running.” You can query the value of the key with notifyutil -g key.name.

Why in the…

I wanted to be able to control more aspects of my computer remotely than standard methods would allow. I pulled a few hairs out trying to solve various problems, and this is what it came down to.

The reason I wanted to do this with launchd is because it provides the ability to run scripts as any user (including root), manages keeping the listeners alive automatically, and runs invisibly and without additional hooks and setup requirements. notifyd simply provided me with the easiest way to communicate with these processes.

With tools like LaunchControl, setting up launchd jobs and confirming their status is really simple. Yes, I’ve come to prefer LaunchControl over (even the latest incarnation) of Lingon. LaunchControl can set up jobs as root (Lingon X can, too, now), quickly load and unload agents, edit every known key with a helpful wizard (with expert mode for adding your own) and — my favorite feature — shows you at a glance what’s loaded, what’s running and what has errors (with descriptive info).

The launchd and notifyutil combination isn’t perfect, at least not in my current implementation. Using the methods I currently have set up, I can’t pass anything to the daemon; it just keeps the listener scripts running in the background to handle the notifications. If I expand on this idea, the first thing to do is hook up sockets that I can read and write data to so that I can control everything from one central script and pass arguments through the launchd agent.

I’ve been able to automate the generation and loading of the plist files it uses, so adding jobs is a bit faster now. It’s still convoluted. If I end up wanting more than a few triggers, I’m going to have to centralize everything better.

Triggering

The jobs are now triggered by anything that can run a notifyutil command from any user on the system. Say I have a script that is listening to brett.whatnot, I’d just call notifyutil -p brett.whatnot from any tool that can run a shell command.

SSH/shell
Run notifyutil (or an alias) from any script, via local or remote SSH sessions. Yes, in this case you could also use screen, nohup and/or at to perform the tasks, so it’s not the most useful example.
BetterTouchTool/EventScripts
AppleScript actions called from BetterTouchTool Remote can simply run do shell script "notifyutil -p [key]" to trigger any action controlled by the launchd agents. This means that even though those scripts run in a protected shell as the login user, they don’t need any special permissions to trigger scripts that load in their own shell and perform actions you wouldn’t otherwise be able to from the triggering application.
Web interface
Running a Internet-accessible website securely more or less precludes the ability to access the system in the ways most of my scripts would need to. Actions that I can trigger via PHP or Ruby exec calls are run as the _www user and there are endless headaches involved with trying to load an environment and run scripts outside of the web folder. This frustration was the impetus for the whole project, and now I have a system that I can quickly build web interfaces for while still maintaining a modicum of security1.

REST API
You can also build a simple API for the same setup as above, which lets you trigger scripts from applications other than a web browser. Even a quick curl command from a remote machine can set things in motion.
Cocoa applications
You can do this from compiled languages like C and Objective-C, too, of course. For now I’m just using notifyutil, but the notifyd system could have some fun possibilities for simple automation from applications, too.

How I’m using it

I built a remote trigger system for builds and deploys of my Jekyll blog. It currently runs on my home machine (with a static IP and externally-accessible ports set up). It could easily be moved to the server side of my blog, too (which runs on a Mac mini), if I change my setup and require that.

As stated above, the system uses launchd to keep four instances of a script running in the background (sample), each with different parameters: preview2, generate, deploy and a combination generate/deploy task. Each one builds a unique notifyd listener key based on its name and begins waiting for posts to that key. When a given notification key is posted, the associated instance of the script runs the necessary Rake tasks.

I have AppleScripts set up in BTT Remote for each task, and each script is just one do shell script line that runs a notifyutil -p jekyll.task command. I also have a full web interface that uses a combination of front and back-end scripting to provide feedback and prevent things like job overlaps and accidentally deploying a preview site.

In addition to the feedback provided by the web interface, I added the Pushover API to the Rakefile, and using my beengone utility I can push notifications to my iOS devices when a task finishes and the computer has been idle for more than 5 minutes. That way, no matter where I trigger from, I can get a progress report/confirmation on my phone3.

It’s complicated.

This was partly necessary to reach my goal, and partly just mad science gone awry. The end result is stable and perfectly suited to me, but I’m pretty sure it would be neither if I handed it as-is to anyone else. Hopefully this proof-of-concept is inspirational to others in some fashion.

I’m not sharing any of the code for this except by specific requests from people who have most of the system in hand first. If this is something you actually want to implement, have a go at it and let me know if there are specific hanging points that I might have already solved and forgotten to mention.



There are too many considerations to list here. If you choose to set up an open web server with password protection or similar, you’ll still need to think twice about what points of entry you provide. It’s not foolproof in this regard, but it narrows down the possibilities compared to opening up directory permissions.↩



My Rake tasks for previewing set up Jekyll to only render the last 10 posts and include future-dated posts. I use it with my drafting setup to see post previews without having to render the whole site.↩



I also added a rake mobile task that forces push notifications if called before other tasks in a rake command. If I’m triggering from remote I can prevent any issues detecting idle by just sending rake mobile deploy instead of rake deploy.↩
from google
february 2013
New flexible timestamps in Drafts
One of the least-well-kept secrets in the iOS app world is the big jump in functionality that Drafts has made in the revisions released in last few weeks. I’m pretty sure that by the time I’m done writing this post Federico Viticci will have figured out a URL scheme that will have it making his breakfast. I’m going to focus on a more mundane feature: time and date stamps.

A couple of revisions ago, the good folks at Agile Tortoise added Dropbox Actions, which allow you to take the text in your current draft and use it to create, append to, or prepend to files in your Dropbox. To give you more control over these actions, a sort of macro language to Drafts was created. Certain words enclosed in double brackets will trigger the inclusion of meta information: [[title]] inserts the first line of the draft, for example, and [[body]] inserts all but the first line.

A few of the macros inserted time and date stamps, but unfortunately, the formatting of the stamps was fixed and didn’t match up with the kind of formatting I like to use. But with the most recent revision, Drafts has a time and date stamp macro that gives you the full power of the C/Unix strftime mini-language.

You’ve probably seen strftime formatting before. Because it’s a standard C library, lots of developers leverage it when they want to add time and date formatting to their language or application—it’s well-documented and familiar to many. Perl, Python, and Ruby all use it, as do apps like TextExpander (although TextExpander puts a user-friendly gloss over it).

The strftime formatting works by replacing certain codes in a text string with parts of the date or time. Each code starts with a percentage sign (%) and is followed by a letter that determines which date/time part is inserted. Characters that aren’t preceded by a % are taken literally. So

%m/%d/%y

will insert the current date in the American style, with the two-digit month, day of month, and year separated by slashes. Today, that would be replaced by

02/10/13

Similarly,

%I:%M %p

will be turned into

06:05 PM

Drafts has added strftime formatting by extending its existing macro system. To include codes like these in your Dropbox Action, you’d add

[[date|%m/%d/%y]]

or

[[date|%I:%M %p]]

to it. Just add a vertical bar and the strftime code after date in double brackets.

In the blog post introducing this new feature, Agile Tortoise linked to this summary of the strftime codes. It’s a good summary, but it’s missing a useful extensions that isn’t in every strftime implementation, but is in iOS and OSX. The extension—a hyphen that goes between the % and the letter code—gets rid of leading zeros.

You can see in the examples I gave where that would be useful. Although leading zeros in months and days can be helpful when you want to make sure all your date stamps are the same length, they aren’t the way we usually write dates. To suppress them, the datestamp code would be

[[date|%-m/%-d/%y]]

to give

2/10/13

and the timestamp code would be

[[date|%-I:%M %p]]

to give

6:05 PM

(You wouldn’t want to suppress the leading zero for minutes.)

If you look through the various codes available in strftime, you’ll see a couple—like %e for the day of the month and %l for the hour of the day—that you might think will do the same thing as the hyphen. They do eliminate the leading zero, but they replace it with a space, which probably isn’t what you want.

So how can this be used? I’m not an obsessive tracker of myself, but there are days when I need to carefully monitor what I’m doing and when. Here’s an action I’ve set up that’ll append a timestamped note to a Dropbox file named “Diary.txt.”

Hidden in the template is the blank line at the bottom. That gives me some separation between the entries, like this:

2/10/13 1:14 PM
Started 200° test

2/10/13 1:45 PM
Ended 200° test

2/10/13 1:54 PM
Started 300° test

The advantages of doing this in Drafts instead of directly editing a file in, say, Notesy and using TextExpander to add the timestamp are

Drafts opens faster and always opens to a blank draft ready to type in.
I sometimes mistype my TextExpander timestamp abbreviation and have to do it over again. That’ll never happen with the Drafts action.
TextExpander snippets, which aren’t words, don’t lend themselves to Siri dictation. Because the Drafts action handles the timestamp and the formatting, I can just tap the microphone button and start talking. In Notesy, I’d have to type the timestamp and then dictate afterward.

The disadvantage of using Drafts is that it requires an Internet connection. Notesy can save everything on the phone and sync to Dropbox when a connection is available. This is less of a concern now than it was even a couple of years ago. And internetless areas will only get rarer.

Once you get the hang of it, automatic timestamps like this will seem natural, and you’ll want to use them more and more. After all, why should you be entering the time and date by hand when your phone already knows it?
Uncategorized  drafts  iphone  text_editing  from google
february 2013
My OmniFocus Setup
As I prepared for my OmniFocus Setup session, I took the opportunity to step back from the application to look at the way I use it. I figured it couldn’t hurt to share this with those of you who may be considering the app or struggling to find your own way with it. This post won’t be for everyone, but I hope it will help those (like me) who tend to learn by watching/hearing how others approach a specific tool.

This won’t be a thorough look at OmniFocus. Just a thorough look at how I use it.

Mac, iPhone and/or iPad

I own all three versions, but I tend to do the majority of my work on the Mac, with the occasional use of the iPhone for capturing tasks and taking a peek at the day. The iPad is by far the nicest looking version of the app, but the limitations of iOS keep me from ever getting all that serious about using it.

Projects and Folders

At first, this sidebar served only as a place to drop all of my projects and to get a quick overview of just how much I was attempting to tackle. As I put more of my life into the app this became unwieldy. So I started creating folders that grouped logical projects together, but I still couldn’t make much sense of things. Turns out I was going about it wrong (or at least wrong for me). Rather than taking a bottom up approach to projects and folders, I made a switch to top down.

Folders

I started by creating five folders that represent the most essential aspects of my life (or “horizons of focus” as we GTD junkies like to call them) including Home, Work, Web, Personal and Family. I also keep a top-level Single Actions list that functions more like an Inbox for me (more on this in a bit). In each area, I determined key areas for each folder to determine where my attention should be. For example the Web includes my site, my podcasts, my newsletter with Mike Vardy and any guest work I do for other sites.

Projects

Once these folders were established, I set my sights on reviewing and recreating my projects. Once the essential aspects and key areas were defined, the projects fell into place. While they were still logical groupings of tasks, my folder structure often served as a gut check to make sure that the projects I took on made sense to help me achieve my goals. If a project didn’t help achieve a goal, I’d either have to determine if a goal was missing, redefine the project to align it with my goals or, best yet, abandon it.

Contexts

There are two kinds of contexts when it comes to OmniFocus: the Context field which allows for one context per task and actual contexts which are a person, place or thing needed to accomplish a specific task. Ask 100 people about how they use contexts and you will get 100 answers. Here’s mine:

The Context Field

When I first started using OmniFocus, I used a traditional contexts hierarchy that leveraged all of the people, places and things in my life. As almost every task involved multiple people, places or things, this fell apart. There’s also the added challenge that things like email can be done on at least four devices that I own, many of which can be used just about anywhere. I looked at the approaches used by others, including those that added contexts for energy levels, but over time I found that I only really needed two: Work and Home. Of all the crossover in my life, there’s a clear split between the things I do for my job and just about everything else. These contexts are all I need to power my perspectives, and despite some minor flaws, it’s proven to be the most usable for me (more on said flaws in the perspectives section).

True Contexts

Convenient as the two context approach is, it has limits. It lets me focus in on my mindset (which tends to be very different when I’m doing my job vs. my own pursuits), but it doesn’t do much to help me batch tasks together. This is where “True Contexts” come in, and by that I mean all of the people, places and things required to do a task. I no longer need to put much thought into what I put into the context field (considering there are only two options), but I put tremendous thought into how I name my tasks. By adding contexts into the task name, such as, “Email Bill re: Meeting time,” I can use search in OmniFocus to group tasks.

If I’m going to be working on email, I can use the search field in OmniFocus to see any task that includes the word email. If I’m going to be seeing Bill, I can search for any tasks that may relate to him. Combine this with project and context filters, and I can get very granular, very quickly. Is this perfect? No. If I had a task titled, “Call to Bill about his Email,” it would show up when searching for things I need to email. Does it work for me despite this minor shortcoming? You bet.

The Inbox

As you may have gathered from the section above, the naming and creation of tasks is a very intentional act. With intent in mind, I tend to avoid a very common step in OmniFocus: sending tasks to the Inbox. For many, the Inbox is a great place to throw things; for me, it’s a place to add clutter and another place I need to check. To avoid this I do my best to provide all of the information I’ll need when I look back at a newly created task later on.

When I’m not sure about the project (which tends to be the biggest outlier for me when creating a task), I’ll add it to my Single Actions list rather than dropping it into the Inbox or omitting it. When I do my weekly review, any incomplete tasks in this list get reviewed to see if projects have emerged from any these single actions.

As for the Inbox itself, there is one case where I do find it useful. If I want to brain dump (read: create a ton of tasks at once), I will just start creating tasks that only include a name (and often not the final one I’ll use), but this is just to get everything out of my head. I tend to immediately refine these after creating them. Brain dumps tend to be far more successful when I figure out what I want to do (or not do) with the crap that just fell out of my head.

Tasks

Much as this may be a taboo (or possibly even wrong), I don’t put every task into OmniFocus. Just the ones that OmniFocus is going to help me accomplish. The most obvious omissions are various types of to-dos that I leave out of this system in favor of more focused tools (e.g., reminders live in Due, lists live in Listary, habits in Good Habit and my appointments live in Gcal/Fantastical). I also tend to leave certain aspects of my creative work outside of these kinds of systems entirely. While OmniFocus does wonders to keep me on track when I have an article due for someone else, it proves to be more of a burden than a benefit when attempting to use it to track the writing for my own site.

The creation of tasks is nearly as important to me as what constitutes a task. This intentional approach does wonders to ensure I actually remember what the hell it was I wanted to do at the time of creation. Here’s my approach:

Task Name

I always try to balance clarity and brevity. My hope is that if I were hit by a bus, a relatively intelligent person could look at my list and figure out what I wanted to do (primarily because when I’m not clear, I often look back at a task and have no earthly concept of what I meant). I also try to make each name a specific action. Stupid as this may seem, “Email Bill re: Vacation Days” or “Call Bill re: Vacation Days” tend to get done faster than “Talk to Bill re: Vacation Days,” which requires me to think about how I’m going to communicate with him.

Project

I tend to skirt the line between best practices and what works for me. There are some people who love to get super granular with projects. I don’t. By GTD standards anything that requires more than one step is, in fact, a project. I try to boil the task down to the most reasonable starting place, as it can get a little nuts. As much as “Call Bill re: Vacation Days” requires that I check to see if I have a number for Bill, it’s rare that I would make this a separate task. This gets me in trouble every now and again (like when I go to change light bulbs around the house but have run out), but I find the sanity of a more manageable task list to be worth the tradeoff of occasionally not having exactly what I need for common tasks. Don’t get me wrong, I can see the benefits of this approach, but the practice drove me insane. I found myself spending more time time managing projects than doing them. I also found that creating these kinds of micro-projects often slowed down task creation.

My current approach (which is still a work in progress) is to assign tasks to existing projects. If a new project name is not readily apparent to me, I drop the task in my Single Actions list. If I know the name of the project, I’ll create it using the on-the-fly functionality in the OmniFocus Quick Entry or Clipper, but not file the new project into a proper folder. This ensures that it gets a good, hard look during my weekly review. During this same review, I will also scan through the Single Actions folder to see if any of the actions should be added to a new or existing project.

Context

When creating a task, I always require that it get either the Work or Home context to ensure it shows up in the proper perspective (more on this in a minute). I run into the occasional challenge where a task can or should be done anywhere (more on this in the section on Perspectives), but I force myself to choose one and get on with things.

Start Date

Start dates were a game changer for me. They allow me to not think about something until I need to think about it. While I love the idea of capture, I hate the idea of reviewing something weekly that won’t matter for some time. When creating a task, I’m a big fan of using a start date to help shield the task from my view until the time is right or until I am doing a more thorough review.

Due Date

Since adding start dates, I’ve really dialed back on the use of due dates. There are only two … [more]
Productivity  Evernote  nvAlt  OmniFocus  from google
january 2013
Ultimate Markdown Maestro Guide
Introduction

Once you have started with Markdown it is likely that you will come to a point where it is indispensable. What you want is Markdown everywhere. If you’re in the browser typing an email to a fellow geek or in an editor with which has no out of the box Markdown support. At least this is my experience when I look back at my Markdown quest so far. Like so often Keyboard Maestro was the best way to tackle the task for me to unify the mass of scripts and services that are floating in the endless space of the internet.

I have a lot of Keyboard Maestro macros and a good deal of them is there for editing text, which means for me: editing Markdown. I called this the “Ultimate Markdown Maestro” because for me Keyboard Maestro is the absolute best way to write and tweak Markdown, no matter which editor I’m in.

This article is about how I organize my macro library and what tools I use for writing Markdown. In short: four macro palettes and one group to rule them all.

The Goal

I want everybody who is willing to write in Markdown and has no idea how to make use of Keyboard Maestro to get inspired and give them some ideas how to use the program. For that purpose I uploaded my whole Markdown setup to GitHub. And for the die-hard geeks I hope there is the one or other thing for you in it too.

To give you a teaser I prepared a short overview in form of a video to let you decide later on which parts of this article you are interested in:

If this is more than you need you can trim it down till your requirements are met.

If you’re already sold then read on before your head on to download everything because there are a lot of dependencies: services to be installed, scripts to put in the right location, etc. Rest assured, I’ll explain everything in detail. At the bottom of this article you’ll find a link list with all referred scripts and services for your convenience.

Organization

Over the last days I cleaned up my macro collection and reorganized it. There were several things I wanted to achieve:

Get rid of macros I don’t use or those that actually don’t work for me.
Fine tune my palettes so that I can get a better idea of what is going on in each palette even if I haven’t visited the palette in question for some time.
A quick way for identifying who made a macro and what its purpose is.
Have a more maintainable system which is also easier to share.

So far I’m happy with my spring cleaning and I think you’ll benefit from it too.

Natural Dichotomy

I narrowed it down to five groups – the first three are focusing on the process of writing while the last two are for the finishing:

TXT: Markdown is where standard Markdown operations like bold, italic and making lists live. I don’t need a palette because what I want here is fast access to the basics.
TXT: Markdown Links is a specialist for links creation.
TXT: Global is a mixed palette which contains Markdown and text macros that aren’t needed all the time, but that provide power users an array of options to choose from like creating footnotes, tables and fenced code blocks. Also in the bag are standard text operations like wrapping, transforming text, etc.
TXT: Markdown Clean Up waits for you when you have finished writing and are in need to bring order into the mess.
TXT: Markdown Export offers you a variety of export options.

Doppelgänger Library

I use more groups than before my spring cleaning. What I did was creating sort of a Library inside of the Keyboard Maestro library. The resulting macro system is quite modular since I now have several sections:

The top section gathers macros from other users. If I have a person is shares a lot of cool stuff he get’s a dedicated group folder. I transferred the folder management strategy I use in Finder to Keyboard Maestro – using hash characters from the Markdown header syntax:

# Miscellaneous → contains macros from other user
# New Stuff → new macro projects or macros where I haven’t yet decided if I keep them
## Regular Contributors

What I mean with modular is that I only use Execute Macro actions in Keyboard Maestro to structure the everything. In case you never used a “execute macro” action, it is the equivalent to an alias in the Finder. The macros of the top section stay where they are and anywhere I need them I call them up by executing the macro. Nice and clean.

The middle section are my standard groups:

Finder
Global
iPhone
TXT: 1
TXT: 2
TXT: 3
Webdev: 1
Webdev: 2
Webdev: 3
Ξ TE: 1
Ξ TE: 2
Ξ TE: 3

I tend to over use unicode characters1 to sort my iTunes Library before there where folders in iTunes. I’ve learned from my failures and kept it to a minimum here.

The reason behind this is that I wanted my text expansion groups to be position right before the bottom section. Unicode characters follow an alphabetical hierarchy and that makes them qualified candidates for sorting stuff or forcing a hierarchy upon files where only alphabetical sorting is allowed.

For example: » comes before ❯ comes before# comes before 123 comes before ABC comes before .

The bottom section is listing all of my application groups:

 :: 1Password
 :: Google Chrome
 :: OmniFocus

This is basic file management. Everybody does it in the Finder to some extend and so I guess most of you probably have setup a similar system for Keyboard Maestro to cope with their library.

Folders

You know have a rough idea of my preferred order. I will now go into detail why I think it’s a good idea to create such a top section.

In the screen shot below you see everything that you’ll have to import into your Library (highlighted in blue).

The folders at the top which have a ## prefix are the first part of the dependencies. These are collections from other authors and myself. To keep your Keyboard Maestro library from gaining too much weight, the GitHub download only includes macros necessary for the Markdown setup which Im going to introduce to you here.

Author Comments

I added a read me file at the top of each group where you can find the original source and a link to their blog2 – all these people are dear to my heart, because over the last years they have contributed to the Mac community by sharing their thoughts, ideas and last but not least fabulous scripts, macros and services.

For example the group of my good friend Gabe from Macdrifter has this little note inside the read me file:

The idea behind this is, that you can check for updates of scripts and services directly at the source without having to search the web for who did what. Also you know every time who to give props to when you build something based on someones work. It’s a reference and safety net.

Macro Comments

Inside those ## Author groups are all the macros that I use for the palettes we need. I rely heavily on the Markdown Service Tools by Brett Terpstra. Probably 80% of this workflow is possible due to Brett’s amazing work. And since the service tools are services, many of these macros are just wrappers for system services. Most of the macros also have a comment at the top position explaining what the macro does (– often just a simple copy and paste from the authors site):

Pro tip:
By setting the menu title in the second action to APPLICATION, I make sure that Keyboard Maestro knows the service can be triggered from any application if it’s available.

Side note:
You can leave most of the groups disabled since we access the macros inside via the “Execute Macro” action. Even the macros themselves can stay disabled. Although, I use this to give me a visual cue which macros I actually use and which are only sitting in my library without being assign to one of my global palettes or applications.

Brett Terpstra SearchLink and Markdown Service Macros

Before we dive in let me introduce two of the dependencies to you:

You have to install Brett’s Markdown Service Tools and his SearchLink service. And just for your information, that was an order Private – I just can’t let you miss the best things in Markdown, that’s why I put the emphasis there. Pardon me.

I couldn’t live my Markdown live as it is without these and that’s why the deserve a) an honorable mention in a separate section and b) I’ve build two macro groups for Brett’s two projects.

While the Markdown Services are basically all over the place because they are so useful, the SearchLink service has one purpose which is generating automatic links by using an easy to understand syntax with a DuckDuckGo-like charm:

!arguments:

Software:


!mas: search Mac App Store
!masd: search Mac App Store, return seller URL
!itu: search iTunes App Store
!itud: search iTunes App Store, return seller URL
!s: software search using Google



General:


!g: first Google result



If you’re still not convinced head over to the example section of the project. The great thing is that Brett’s scripts are always smart – you don’t need to fill out all arguments. Again, read his article to find out what’s optional, how to install SearchLink and get the whole thing running (only one Ruby gem needs be installed). If you’re done, nothing will stand in your way when in need of creating links in an instant .

In addition, if you open the workflow script in Automator you can choose if you prefer inline or reference links as output. To top it, you can enter your affiliate credentials and all App Store links are created as affiliate links.3

As easy as the syntax is to remember, sometimes I forget the correct spelling. So this where my SearchLink generator palette comes in handy:

It prompts you for a reference tag and a search text and then generates ready to use snippet respecting the optional arguments. The result can be expanded via the SearchLink macro.

My intention was to save this extra step by passing the result to a variable and pass it on to another Keyboard Maestro action, an Execute a Shell Script which contains … [more]
from google
january 2013
Blog Posts on Keyboard Maestro
A nice list of blog posts on using Keyboard Maestro. Lots of Gabe’s posts are listed. Ben Brooks has a nice overview of Keyboard Maestro as well.

Related posts:
Keyboard Maestro and MarsEdit
Switching to Keyboard Maestro
Keyboard for iPhone
Macro_Programs  Sideblog  from google
january 2013
Scheduling posts 2: the Rakening
Yesterday I covered how I’m handling scheduling with my Jekyll-based blog. The at command I mentioned there could be used in tandem with any static blogging system. Today I’m dropping in the “publish” task from my Rakefile, so you can see how I apply it specifically with Jekyll. The concepts are still portable, though.

Processing

The rake task can be run with or without an argument. If the argument is there and it’s a filename (and the file exists), it operates directly on that file. If no argument is passed, it offers a menu of available drafts to choose from.

To schedule a post, I just set the “date:” field in the YAML headers to a date in the future. That triggers all of the scheduling features. If the task is being run from the shell, it double checks with you for confirmation that you want to schedule a deploy. If confirmed (or forced), at is run and reads from a file with the necessary commands to generate and deploy the task. In my case, it bumps the site version (used to bust cache on any CSS/JS files), runs a generate task and deploys the site using Rsync.

I’ll be covering my “draft” system in more detail in a future post. I’ll mention a relevant part of it now, though. The _drafts folder is a symlink from my Dropbox writing folder. If a post shows up in there with a “publish_” prefix in the filename, Hazel triggers this system automatically. It passes a filename directly, bypassing the need for any shell interaction. The file gets published and the site gets deployed. There’s also an incomplete “preview_” mode that will generate the staging site but not deploy.

Here’s the relevant part of the Rakefile with lots of comments. For people who would be implementing something like this, they should be explanatory enough. Because it’s a work-in-progress, I’m posting its current state directly. When it’s closer to finished it will be included in a full Git repo of all of my hacks with its most current version.

The “publish” rake task

desc "Publish a draft"
task :publish, :filename do |t, args|
# if there's a filename passed (rake publish[filename])
# use it. Otherwise, list all available drafts in a menu
unless args.filename
file = choose_file(File.join(source_dir,'_drafts'))
Process.exit unless file # no file selected
else
file = args.filename if File.exists?(File.expand_path(args.filename))
raise "Specified file not found" unless file
end
now = Time.now
short_date = now.strftime("%Y-%m-%d")
long_date = now.strftime("%Y-%m-%d %H:%M")

# separate the YAML headers
contents = File.read(file).split(/^---\s*$/)
if contents.count < 3 # Expects the draft to be properly formatted
puts "Invalid header format on post #{File.basename(file)}"
Process.exit
end
# parse the YAML. So much better than regex search and replaces
headers = YAML::load("---\n"+contents[1])
content = contents[2].strip

should = { :generate => false, :deploy => false, :schedule => false, :limit => 0 }

# For use with a Dropbox/Hazel system. _drafts is a symlink from Dropbox,
# posts dropped into it prefixed with "publish_" are automatically
# published via Hazel script.
# Checks for a "preview" argument, currently unimplemented
if File.basename(file) =~ /^preview_/ or args.preview == "true"
headers['published'] = false
should[:generate] = true
should[:limit] = 10
elsif File.basename(file) =~ /^publish_/ and args.preview != "false"
headers['published'] = true
should[:generate] = true
should[:deploy] = true
end

#### deploy scheduling ###
# if there's a date set in the draft...
if headers.key? "date"
pub_date = Time.parse(headers['date'])
if pub_date > Time.now # and the date is in the future (at time of task)
headers['date'] = pub_date.strftime("%Y-%m-%d %H:%M") # reformat date to standard
short_date = pub_date.strftime("%Y-%m-%d") # for renaming the file to the publish date
# offer to schedule a generate and deploy at the time of the future pub date
# skip asking if we're creating from a scripted file (publish_*)
should[:schedule] = should[:generate] and should[:deploy] ? true : ask("Schedule deploy for #{headers['date']}?", ['y','n']) == 'y'
system("at -f ~/Sites/dev/brettterpstra.com/atjob.sh #{pub_date.strftime('%H%M %m%d%y')}") if should[:schedule]
end
end
### draft publishing ###
# fall back to current date and title-based slug
headers['date'] ||= long_date
headers['slug'] ||= headers['title'].to_url.downcase

# write out the modified YAML and post contents back to the original file
File.open(file,'w+') {|file| file.puts YAML::dump(headers) + "---\n" + content + "\n"}
# move the file to the posts folder with a standardized filename
target = "#{source_dir}/#{posts_dir}/#{short_date}-#{headers['slug']}.#{new_post_ext}"
mv file, target
puts %Q{Published "#{headers['title']}" to #{target}}
# auto-generate[/deploy] for non-future publish_ and preview_ files
if should[:generate] && should[:deploy]
Rake::Task[:gen_deploy].execute
elsif should[:generate]
if should[:limit] > 0
# my generate task accepts two optional arguments:
# posts to limit jekyll to, and whether it's preview mode
Rake::Task[:generate].invoke(should['limit'], true)
else
Rake::Task[:generate].execute
end
end
end

Additional functions

choose_file

# Creates a user selection menu from directory listing
def choose_file(dir)
puts "Choose file:"
@files = Dir["#{dir}/*"]
@files.each_with_index { |f,i| puts "#{i+1}: #{f}" }
print "> "
num = STDIN.gets
return false if num =~ /^[a-z ]*$/i
file = @files[num.to_i - 1]
end

ask

This is borrowed from the OctoPress Rakefile.

def ask(message, valid_options)
return true if $skipask
if valid_options
answer = get_stdin("#{message} #{valid_options.delete_if{|opt| opt == ''}.to_s.gsub(/"/, '').gsub(/, /,'/')} ") while !valid_options.map{|opt| opt.nil? ? '' : opt.upcase }.include?(answer.nil? ? answer : answer.upcase)
else
answer = get_stdin(message)
end
answer
end
from google
january 2013
Einstecktuch falten
Inhalt des Artikels:
1. Falttechniken
2. Farbe & Material
3. Einstecktücher kaufen

 

Ein Einstecktuch ist immer eine gute Sache, wenn der Anzug alleine zu uniformierend wirkt, um dem eigenen Erscheinungsbild einen Anstrich mit Persönlichkeit zu geben – ob für eine Hochzeit oder im Business-Look. Natürlich stellen sich dabei unterschiedliche Fragen: Wie falte ich ein Einstecktuch richtig? Gibt es verschiedene Arten ein Einstecktuch zu falten? Und wie falte ich ein Einstecktuch zu welchem Anlass?

Teile dieser Fragen werden im obigen Video beantwortet. Fünf unterschiedliche Arten ein Einstecktuch zu falten – zusammen mit Tipps zu der Wirkung – stellt Mr Porter im hauseigenen Journal vor. Dann klappt auch die nächste Hochzeit.

Das Einstecktuch – Wirkungsvolle Falttechniken und Bedeutungen
Ein smartes Einstecktuch kann mit verschiedenen Falttechniken in die äußere Brusttasche des Sakkos gesteckt werden. Wenn der Anzug alleine zu uniformierend wirkt, dann lässt sich das gesamte Erscheinungsbild mit dem kleinen Tuch hervorragend abrunden. Dabei kann das Einstecktuch generell für die unterschiedlichsten Anlässe herangezogen werden. Sowohl bei der Hochzeit oder einem wichtigen Meeting macht man damit stets eine gute Figur. Es gibt die Tücher in den verschiedensten Farben und Musterungen. Aus diesem Grund kann wahrlich jeder Geschmack bedient werden. Das Einstecktuch lässt sich immer passend zum aktuellen Anzug wählen. So entsteht auch eine fantastische Abwechslung.

Natürlich fragen sich viele, wie man ein Einstecktuch richtig faltet. Hier sei zu bemerken, dass es viele verschiedene Arten gibt. Je nach Anlass kann man sich dabei an zahlreiche Anleitungen halten, die oftmals auch Hinweise geben, welche Bedeutung eine gewisse Faltung hat.

Für das richtige Falten spielt auch stets das Material eine Rolle. Tücher aus Leinen lassen sich sehr leicht zusammenfalten, wenn sie dann passend zur Breite der Tasche auf der Brust eingesteckt werden, sollte noch ein Rand von rund 2 Zentimetern herausschauen. Diese Einstecktechnik wird als sehr elegant und seriös gehandelt. Sie eignet sich gerade deswegen besonders für wichtige Meetings und den alltäglichen Gang ins Büro. Wenn es jedoch etwas lässiger sein darf, dann kann das Einstecktuch auseinandergefaltet mit den Enden voran in die Brusttasche gesteckt werden. An der Oberseite werden die Enden dann ein wenig herausgezupft. Spielend leicht wird auf diese Weise ein relativ elegantes und seriöses Outfit aufgelockert und schon ist der anspruchsvolle Mann für einen legeren Abend gerüstet.

Einstucktuch – Feines Material farblich kombiniert zum Dress


Die klassische Form dieses Tuches besteht aus hochwertigem weißem Leinen. Sehr effektvoll sieht es zu einem einfachen weißen Hemd aus. Für elegante Anlässe eignen sich hingegen ganz besonders farbige Seidentücher. Das Einstecktuch aus Seide sollten am Ende auf jeden Fall mit der Farbe des Hemdes abgestimmt werden. Es ist anzuraten, dass das Tuch stets die Grundfarbe der Krawatte oder aber des Hemdes aufnimmt. So wird ein sehr stimmiger Look kreiert, der natürlich auch sehr elegant wirkt. Zuweilen können sowohl Krawatte als auch Einstecktuch in einem Set erworben werden. So wird Anfängern eine geschmackvolle Kombination gesichert, die harmoniert und daher für jeden Anlass eine Bereicherung darstellt. Wer die Falttechniken selbst nicht anwenden möchte, der hat zudem die Möglichkeit und kann bereits gefaltete Einstecktücher kaufen. Diese müssen dann nur noch in die Brusttasche gesteckt werden und schon ist das Outfit perfekt umrahmt.

Herrenaustatter – Einstecktücher online kaufen
Im Herrenmode Online Shop können Sie hochwertige Einstecktücher in vielen Farben und aus verschiedenen Materialien günstig online kaufen. Kombinieren Sie das Einstecktuch farblich passend zum Herrenanzug oder Sakko. Sind Sie sich bezüglich Farbe oder Material unschlüssig können Sie die Herrenausstatter Modeberatung kontaktieren. Die Modeberatung erreichen Sie unter der folgenden Rufnummer und zu folgenden Zeiten: Tel: 0800 / 999 66 33 | Mo bis Do: 08 – 19 Uhr, Fr: 08 – 18 Uhr).

» Jetzt kaufen: Einstecktücher bei Herrenausstatter.de

The post Einstecktuch falten appeared first on Blog für Männer und Mode: »The Modern Gentleman«.
Mode_&_Outfits  from google
january 2013
Completing my Twitter archive
My complete Twitter archive became available today (yes, I’ve been checking every day), and I just got done processing it to fit in with my existing archive.1 Here’s what I did.

After downloading and unzipping the archive, I had a new tweets directory in my Downloads folder. The tweets themselves are a few levels deep in the tweets directory and are provided in two formats: JSON and CSV. For reasons I hope will become clear soon, I decided to work with the JSON files. They’re kept in several files in a single subdirectory. Each file contains one month’s worth of tweets and the file name is formatted like this: yyyy_mm.js.

The nice thing about this file naming scheme is that it makes alphabetical and chronological order the same, something I exploited when running my script.

My first month of tweets, 2007_11.js looks like this:

Grailbird.data.tweets_2007_11 =
[ {
"source" : "<a href=\"http://twitterrific.com\" rel=\"nofollow\">Twitterrific</a>",
"entities" : {
"user_mentions" : [ ],
"media" : [ ],
"hashtags" : [ ],
"urls" : [ ]
},
"geo" : {
},
"id_str" : "459419062",
"text" : "This NY Times headline is backward: http://xrl.us/bb3xe. Cart before horse, tail wagging dog.",
"id" : 459419062,
"created_at" : "Sat Dec 01 02:52:47 +0000 2007",
"user" : {
"name" : "Dr. Drang",
"screen_name" : "drdrang",
"protected" : false,
"id_str" : "10697232",
"profile_image_url_https" : "https://si0.twimg.com/profile_images/2892920204/2d46631044a7476ad8b355e205ad1e6d_normal.png",
"id" : 10697232,
"verified" : false
}
}, {
"source" : "<a href=\"http://twitterrific.com\" rel=\"nofollow\">Twitterrific</a>",
"entities" : {
"user_mentions" : [ ],
"media" : [ ],
"hashtags" : [ ],
"urls" : [ ]
},
"geo" : {
},
"id_str" : "455042882",
"text" : "Panera's wifi signon page used to crash Safari. Not so with Leopard and Safari 3.",
"id" : 455042882,
"created_at" : "Thu Nov 29 17:14:28 +0000 2007",
"user" : {
"name" : "Dr. Drang",
"screen_name" : "drdrang",
"protected" : false,
"id_str" : "10697232",
"profile_image_url_https" : "https://si0.twimg.com/profile_images/2892920204/2d46631044a7476ad8b355e205ad1e6d_normal.png",
"id" : 10697232,
"verified" : false
}
}, {
"source" : "<a href=\"http://twitterrific.com\" rel=\"nofollow\">Twitterrific</a>",
"entities" : {
"user_mentions" : [ ],
"media" : [ ],
"hashtags" : [ ],
"urls" : [ ]
},
"geo" : {
},
"id_str" : "453535262",
"text" : "Safari Stand now reinstalled on my Leopard machine and all's right with the world.",
"id" : 453535262,
"created_at" : "Thu Nov 29 06:04:55 +0000 2007",
"user" : {
"name" : "Dr. Drang",
"screen_name" : "drdrang",
"protected" : false,
"id_str" : "10697232",
"profile_image_url_https" : "https://si0.twimg.com/profile_images/2892920204/2d46631044a7476ad8b355e205ad1e6d_normal.png",
"id" : 10697232,
"verified" : false
}
} ]

As you can see, it starts with a line that defines a variable. The rest of the file sets the variable to a list of objects. I haven’t looked at this especially carefully, but I assume this whole file is basically just one legal JavaScript assignment statement.

What I see when I look at this file, though, is something that’s damned close to a legal Python assignment. The only problems are

For the left-hand side of the assignment to be valid, I’d have to create some sort of class structure first.
Python’s boolean constants are True and False, not true and false.

These are minor problems and we’ll get around both of them.

My goal is to pull out all the tweets in the archive and write them to a single plain text file with the same format as my existing archive. As I write this, the last couple of entries in that archive look like this:

Complained yesterday about not being able to download my Twitter archive. Today it’s available.
January 17, 2013 at 3:35 PM
http://twitter.com/drdrang/status/292022255536439296
- - - - -

@gruber The reason everyone thinks Apple needs new hit products is because that’s how Apple got to where it is now from where it was in ’97.
January 17, 2013 at 4:33 PM
http://twitter.com/drdrang/status/292036995331522562
- - - - -

Each entry goes tweet, date/time, URL, dashed line, blank line.

After a bit of interactive experimenting in IPython (a tool I should have been using long ago), I came up with this script, which I call extract-tweets.py:

python:
1: #!/usr/bin/python
2:
3: from datetime import datetime
4: import pytz
5: import sys
6:
7: # Universal convenience variables
8: utc = pytz.utc
9: instrp = '%a %b %d %H:%M:%S +0000 %Y'
10: false = False
11: true = True
12:
13: # Convenience variables specific to me
14: homeTZ = pytz.timezone('US/Central')
15: urlprefix = 'http://twitter.com/drdrang/status/'
16: outstrf = '%B %-d, %Y at %-I:%M %p'
17:
18: # The list of JSON files to process is assumed to be given as
19: # the arguments to this script. They are also expected to be in
20: # chronological order. This is the way they come when the
21: # Twitter archive is unzipped.
22: for m in sys.argv[1:]:
23: f = open(m)
24: f.readline() # discard the first line
25: tweets = eval(f.read())
26: tweets.reverse() # we want them in chronological order
27: for t in tweets:
28: text = t['text']
29: url = urlprefix + t['id_str']
30: dt = utc.localize(datetime.strptime(t['created_at'], instrp))
31: dt = dt.astimezone(homeTZ)
32: date = dt.strftime(outstrf)
33: print '''%s
34: %s
35: %s
36: - - - - -
37: ''' % (text, date, url)

In Lines 10 and 11, we defined two variables, true and false to have the Python values True and False. This turns all the trues and falses in the JSON into legal Python. On Line 24, you see that after opening a file, we read the first line but don’t do anything with it. The purpose of this line is to move the file’s position marker to the start of the next line, so that the read call in Line 25 doesn’t include the first line. Everything sucked up by that read is legal Python and can be eval’d to create a list of dictionaries that are assigned to the variable tweets.

With this bit of trickery out of the way, the rest of the script is pretty straightforward. There’s some messing about with timezones because I want my timestamps to reflect my timezone, not UTC, which is what Twitter saves. The conversion is done through the pytz library and follows the same general outline I used in an earlier archiving script.

The guts of the script is a loop that opens and processes each file given on the command line. With the script saved in the same directory as the JSON files, I ran

python extract-tweets.py *.js > full-twitter.txt

to get all my tweets in one file with the format described above.

As it happens, the Twitter archive I downloaded this evening didn’t include any of today’s tweets. So I copied today’s tweets from the archive I keep in Dropbox, which gets updated every hour, pasted them onto the end of full-twitter.txt, and saved it in Dropbox to be regularly updated from now on.

According to the archive, this was my first tweet:

Safari Stand now reinstalled on my Leopard machine and all’s right with the world.— Dr. Drang (@drdrang) Thu Nov 29 2007 12:04 AM CST

Remember Safari Stand? Those were the days.

Why did I need to download Twitter’s version of my archive when I already had one of my own? Because of Twitter’s limitation on how many tweets you can retrieve through the API, my archive was missing my first thousand or so tweets. Now I have them and can sleep peacefully again. ↩
Uncategorized  programming  python  twitter  from google
january 2013
Scheduling posts with Jekyll
After my downloads system was sorted (post coming up) and I had a writing workflow worked out, my big concern with my Jekyll system was scheduling future posts. I tend to write in streaks and, given that very little of my work is exactly time sensitive, spread the posts out to make up for the days I decide to sleep in my free time. That’s a little harder to do with static blogs.

You can rig up a whole setup with Hazel and Dropbox and triggers that make your site build when certain filename prefixes show up, but it gets tedious and sometimes unreliable. While there are some elements of that in my current system — especially with the work I’m doing to be able to post remotely — it’s not a setup I want to rely on.

So here’s what I do have going…

The what

Write a draft in my _drafts folder with a name that’s just a slug. It doesn’t even matter what the slug is, it will be renamed with the date and a new slug based either on the “title:” field or a “slug:” field if it exists. I’ll go into more detail on my draft system soon.
Add a “date:” field in the headers of the draft for some time in the future.
Run rake publish. Without arguments, my publish command scans my _drafts folder and offers a menu of recently-edited drafts. I type a number and the system reads it in.
Headers are checked, modified and updated. If a date header is found at this point, it’s checked against the current time. If the post is for the future, the system schedules a build and deploy for that moment. My Jekyll is configured to not publish future-dated posts, so I can do other builds before the post goes up without worrying about spoiling surprises.
Morning comes, the sun comes up, my post goes live.

The how (meet the at command)

The basis of the system is the Unix at command. The at command is really, really handy and available on most Unix flavors. I’ve been told it’s deprecated, but it’s been so dependable thus far that I’m not certain why it would be (other than Apple passed on it in favor of launchd). With this command you can type something like at 12PM tomorrow, then type a series of commands and terminate with ^d. It will report that a task is scheduled and that task will run, whether you log out of the shell or not. It’s perfect for starting jobs on remote servers, too, and has a batch mode that will queue jobs as CPU allows.

To enable at on OS X, you need to modify its launchd plist. On Lion and later this can be done with just the launchctl command1.

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

The plist file comes with a disabled flag set, but running load -w will override that, so you don’t have to worry about it. Once you’ve run that command, you should be able to test at out.

Open a terminal and type: notifyutil -1 foo.bar && say "Boom"

Open a second terminal and type:

$ at now + 1 minutes
notifyutil -p foo.bar
^d


You can close the second terminal now, just to prove that the command will run in its own shell.
In one minute from the time you hit ^d, your computer should speak the word “Boom.” And there you go, at is working. Boom.

at can also take input from a file, which makes it easy to automate in a Rake task or other script: at -f /path/to/file 15:30 2012.01.29. You can quickly defer or batch queue execution of tasks with a quick call to at from another script. You can also pass the task on STDIN, so you can generate the tasks dynamically in the script and pass it to at when the time comes: echo str_variable|at now + 5 minutes. See man at for a rundown of all the date formats that at can understand.

You can also manage the jobs that are still in the queue waiting to fire. atq queries the database and shows you what jobs are scheduled, each with a number before it.

$ atq
28 Fri Jan 18 15:00:00 2013
29 Fri Jan 18 14:00:00 2013

You can then use at -r 28 to delete job number 28, or at -c 29 to view the contents of job 29.

So, how am I using this? I’m sure you can imagine the setup by now, but I’ll post some code from my Rakefile tomorrow (in a scheduled post) for anyone who’s interested. I’ll eventually publish the whole Rakefile, but it has a ways to go yet as I knock out the features I want one by one. I will get there.

I’ve also worked out a direct upload system that I can use from my iPhone and iPad with direct camera integration. I’m not sure how much I’ll use it, but I’ll show you how I did it soon in this series.



Get lunchy, you’ll thank yourself later.↩
from google
january 2013
A "Web Excursions" system for static blogs
One of the things I was missing when I switched from WordPress to Jekyll was my “Web Excursions” setup. It allows me to gather link collections for posts as I browse and generate a single post with multiple links rather than a ton of individual “link list” posts”1.

Previously, I had just sent sites I wanted to include to Pinboard with a “blogit” tag and a description that would become the post. A WordPress plugin (Postalicious) would poll my bookmarks hourly and generate a post automatically when I had reached five or more new bookmarks with the given tag.

As a replacement, I created a CLI script that I could run manually, via cron/launchd or during the rake generate task which builds my static site. It works like this:

Read in an existing stash of previously retrieved bookmarks
Retrieve the latest pinboard bookmarks for ‘blogit’ tag
Compare the new bookmarks to previous stash
Add new bookmarks to a “draft” stash
Add the bookmarks in the draft stash into the main bookmarks stash and save it to a file
If the draft stash has 5 or more bookmarks

create a draft post
clear the draft stash



I have a custom draft setup that I’ll detail in a future post, but this basically generates a Web Excursions post in my drafts folder with all the necessary title, tags, categories, etc., and formats the new bookmarks using a Markdown template. I can then use Rake to publish at any time, and it updates the title and publish date to the current time.

If you’re interested in the script, help yourself. I’ve posted it as a Gist. It will eventually end up in a repository of my Jekyll hacks, once I have them all ready to share2.

Edit the various $conf[] variables to suit your needs. It should be flexible enough to work with any static blogging system, or even with the Blogging Bundle for TextMate.

Note: the first time you run the script it will pull all entries with the configured tag within the latest 100 bookmarks. It will create a draft with all of them and you’ll need to edit or discard that manually. After that it will only bring in new posts since the last run.



Link list posts are great for some people, and I’m not against them. They just don’t fit my style.↩



Many of them are dependent on others, and they won’t make sense if I publish them one at a time.↩
from google
january 2013
VAM
VAM:
“VAM” is short name for vim-addon-manager. You declare a set of plugins. VAM will fetch & activate them at startup or runtime depending on your needs.
vim  plugins  crossplatform  from google
december 2012
Netflix in Deutschland ohne VPN oder Browser Extension in HD empfangen
Gastartikel von @JojoJohnDoe

Wer träumt hier in Deutschland nicht davon, so ziemlich alle Serien (HIMYM, The Walking Dead, 30 Rock etc.) und Filme zu einem festen Preis im Monat schauen zu können. Obwohl bereits das Wunder von Spotify im GEMA-Land geschehen ist, sehen wir bei Serien und Filmen noch immer in die Röhre. Um diesem Missstand endlich entgegen zu treten, habe ich mich einen ganzen langen Sonntag mit der Materie beschäftigt und möchte euch nun an meinen Erfahrungen teil haben lassen.

Wenn man so als Geek an Content aus einem anderen Land kommen möchte, denkt man natürlich immer zuerst an eine VPN-Verbindung. Dies ist jedoch bei Video-Streaming, und insbesondere bei Netflix, mit den klassischen Bandbreitenproblemen verbunden. Um diesem Problem zu entgehen, muss man sich also in der Regel einen kostenpflichtigen VPN-Zugang zulegen der auch mit den entsprechenden Bandbreiten umgehen kann. Ich probierte hierfür zwei verschiedene VPN-Anbieter aus: BlackVPN und den BigPlayer HideMyAss.com beide kosten um die 10$ im Monat und versprechen ausreichend Kapazitäten für HD-Streaming. Das Problem bei der Benutzung mit Netflix ist allerdings, dass die verfügbare Bandbreite jeh nach Netflix-Content extrem unterschiedlich ist. Am Anfang war auch mit Premium-Acc bei BlackVPN kein Content in HD bei mir zu empfangen, auf eine Support-Anfrage bekam ich folgende Antwort:

"The speed is mostly depending on the routing between ISP's and the latency between you and the VPN Server. This is one of the reasons why we have the 14 day money back guarantee. We have no way of knowing if you will get good speeds before you use the service. In the USA we have servers in 4 different datacenters. We use DNS to load balance between them. You can connect directly on IP to see if you get better speeds from one of them."
Nach erhalt dieser Nachricht verband ich mich also direkt per IP-Adresse mit dem VPN-Service und erreichte somit beim Film “Iron Man 2″ und der TV-Serie “30 Rock” problemlos 1,3MB/s und konnte das Videomaterial in HD schauen während bei “The Walking Dead” selten mehr als 120KB/s drin waren. Mit einer anderen IP Adresse waren die Ergebnisse ähnlich, nur dass es hier anderen Content betraf und ich die zuerst genannten wiederrum nur schlecht erreichen konnte. Dies war also keine Alternative für mich, da ich schon gerne HD empfangen würde, ohne jedes mal mit den IP-Adresse herumspielen zu müssen. Also versuchte ich es mit HydeMyAss.com aber auch dies brachte, außer einem schrecklich aussehendem Mac-Programm, keine weiteren Erfolge. Auf der Suche nach einer Lösung, stieß ich dann letztendlich auf den Heilsbringer und möchte euch deshalb eine Anleitung geben wie ihr US-Netflix in Deutschland ohne Geschwindigkeitseinbußen genießen könnt. Das schöne an dieser Methode ist noch dazu, dass ihr auch alle anderen Geräte die von Netflix unterstützt werden benutzen könnt, da diese nun nicht mehr eine VPN-Unterstützung erfordern. Getestet habe ich es z.B. mit meiner PS3.

Virtuelle US-Kreditkarte bei entropay.com erstellen

Dieser Punkt wird warscheinlich die größte Hürde für euch sein, da ihr hier ziemlich die Hosen herrunterlassen müsst. Allerdings ist er notwendig da ihr irgendwie an eine US-Kredikarte herrankommen müsst um Netflix eine Abrechnungsmöglichkeit zu bieten. Die andere Möglichkeit wäre nur ein amerikanischer Paypal-Acc und wenn ihr den habt, besitzt ihr warscheinlich auch eine entsprechende Kreditkarte. Der verwendete Dienst aus UK ist allerdings Partner von Visa und weiß somit (hoffentlich) mit euren sensiblen Daten umzugehen. Damit ihr eine virtuelle Kreditkarte erstellen könnt, benötigt der Dienst folgende Daten von euch:

Eine deutsche Kreditkarte oder Bankverbindung
Ein Foto eures deutschen Ausweises oder der Fahrerlaubnis 
Ein Beweis für die korrekte Rechnungsadresse (bei mir reichte ein Foto meiner letzten Handyrechnung)
Ein Foto eurer physikalisch existierenden Kreditkarte (ACHTUNG: Nicht einfach so fotografieren: “For security reasons only the first 6 and last 4 digits should be visible, also please COVER the 3 digit security code (CVV) at the back of the card.”)

Wichtig ist es jetzt bei der Erstellung der neuen Kreditkarte darauf zu achten, dass ihr die verwendete Währung auf US-Dollar stellt!Obwohl ich alles an einem Sonntag absendete, erhielt ich bereits nach 20 min die benötigte Verifizierung der Daten und konnte so mit der virtuellen Kreditkarte sofort bezahlen.

Netflix Account erstellen

Da ihr ja jetzt schon im Besitz einer amerikanischen Kreditkarte seid, ist die Erstellung denkbar einfach. Achtet einfach bei der Adresse darauf, dass ihr einen zum Bundesland passenden ZIP-Code eingebt. Ich habe mich dafür einfach in NewYork unter dem ZIP-Code 10101 einquartiert.

Verwendung von unblock-us.com

Obwohl fälschlicherweise von Unblock US behauptet, ist dies kein VPN-Service sondern lediglich ein leicht modifizierter DNS-Dienst.  Der Sinn dahinter ist die modifizierte Abfrage von IP-Adressen der Netflix-Server. Sobald ihr über den UU-DNS die Netflix-IP-Adresse abfragt bekommt Netflix nur die in den USA stehenden Proxy-Server zu sehen.

Adressabfrage über Google DNS:$nslookup netflix.com 8.8.8.8 Server: 8.8.8.8Address: 8.8.8.8#53

Non-authoritative answer:Name: netflix.comAddress: 69.53.236.17

Adressabfrage über Unblock Us DNS:$nslookup netflix.com 208.122.23.22Server: 208.122.23.22Address: 208.122.23.22#53

Name: netflix.comAddress: 173.208.170.14Name: netflix.comAddress: 67.216.222.14Name: netflix.comAddress: 147.255.171.14
Nachdem die Adressüberprüfung abgeschlossen ist, wird der Datenverkehr jedoch direkt an euch gesendet und kann somit in voller Bandbreite erfolgen. Die Kontoerstellung erfolgt ganz bequem per PayPal-Subscription und anschliessend gibt es für fast alle möglichen Plattformen eine Einrichtungsanleitung. (Sogar einen Link für den PS3 Netflix-App !Achtung! Dies geht nur mit US-PS3 Account welchen ihr euch aber ganz einfach erstellen könnt.)

Kosten

Der erste Monat bei Netflix und die erste Woche bei Unblock US ist kostenfrei, sodass ihr es problemlos ausprobieren könnt. Nach der Probezeit entstehen für euch folgende Kosten:

Netflix 7.99$Unblock Us 4.99$---------------------------------------------Kosten/Monat 12.98$/ ~10.20€
Fazit

Ich muss sagen, dass ich von diesem Setup mehr als begeistert bin. Die Möglichkeit einfach eine Serie oder einen Film auf dem PC oder auf der PS3 anzufangen, um ihn dann im Bett auf dem iPad zuende schauen zu können, fühlt sich schon ziemlich nach Zukunft an. Ich hoffe ich konnte euch so eine brauchbare Anleitung geben und bei weiteren Fragen stehe ich euch gerne über Twitter (@JojoJohnDoe) oder über die Kommentare zu Verfügung.



© Oliver Friedrich für aptgetupdateDE, 2012. |
Permalink |
32 comments |
Die Autoren bei Twitter: Oliver, Björn, Stefan D, Stefan & aptgetupdateDE
Filme  Tipps  Web  Browser_Extension  Fernsehen  Netflix  proxy  Stream  streaming  TV  VPN  from google
november 2012
SearchLink: automated Markdown linking improved
SearchLink is a System Service for OS X that handles searching multiple sources and automatically generating Markdown links for text. It allows you to just write, marking things to link as you go. When you’re done, you run it on the document and — if your queries were good — have your links generated automatically without ever opening a browser.

This is similar to the “Auto-link web search” service in the Markdown Service Tools. The difference is that you can now mark links and specify how they should be searched for, as well as provide alternate query terms for linked text.

You format text to be linked with a familiar Markdown pattern:

[text to link](!arg "optional search text")

We’ll get into !arg in a second. The [text to link] portion is just that: the text that will be visible and linked in the output. "optional search text", if it exists, will be used as the search query instead of the link text. You can also leave the “text to link” portion empty and the title of the search result found with the “optional search text” will be inserted, e.g. [](!g "Marked app") produces [Marked - smart tools for smart writers](http://markedapp.com/ "Marked - smart tools for smart writers").

Available searches

SearchLink uses various API’s to provide results for specific types of queries. These are denoted by an exclamation mark followed by one of the following keys:

!arguments:

Software

!mas : search Mac App Store
!masd : search Mac App Store, return seller URL
!itu : search iTunes App Store
!itud : search iTunes App Store, return seller URL
!s : software search using Google

General

!g : first Google result

Terminology

!wiki : Wikipedia link (Wikipedia API)
!def : Dictionary link/fallback to Wikipedia (DDG API)

Music

!isong : iTunes song link
!iart : iTunes artist link
!ialb : iTunes album link
!lsong : Last.fm song link
!lart : Last.fm artist link

Site search

any !address recognized as a url (no protocol required) will become a site-specific Google search for the link text (or specified search terms). e.g. [MarkdownEditing](!github.com)

The list may grow as I need it to, but it covers my bases for now.

Examples

Here’s a list of sample links.

* A search for specified text: [Marked](!g "Marked mac app").
* A simple software search for [Fantastical](!s).
* A simple google search [neat neat neat](!g)
* A Last.fm track search [neat neat neat](!lsong "The Damned Neat Neat Neat") (with specified search terms)
* Mac app store search: [Marked on the MAS](!mas "Marked")
* Mac App Store search [Marked direct](!masd "Marked") with direct dev site link.
* iTunes app search: [Boost 2](!itu)
* iTunes search, direct dev site link: [Boost direct](!itud "Boost 2")
* This search: [](!mas "Purple animator") will have its link text filled in with the title of the first result.
* This is a wikipedia entry for [Sid Vicious](!wiki)
* This will put the definition of [ambiguous](!def) in the title field of a link to the dictionary entry.
* iTunes Artist search: [BRMC](!iart "Black Rebel Motorcycle Club")
* Site specific search: [Keybindings](!brettterpstra.com "Keybinding Madness")

When SearchLink is run on the above block of text, it outputs:

* A search for specified text: [Marked][1].
* A simple software search for [Fantastical][2].
* A simple google search [neat neat neat][3]
* A Last.fm track search [neat neat neat][4] (with specified search terms)
* Mac app store search: [Marked on the MAS][5]
* Mac App Store search [Marked direct][1] with direct dev site link.
* iTunes app search: [Boost 2][6]
* iTunes search, direct dev site link: [Boost direct][6]
* This search: [Purple][7] will have its link text filled in with the title of the first result.
* This is a wikipedia entry for [Sid Vicious][8]
* This will put the definition of [ambiguous][9] in the title field of a link to the dictionary entry.
* iTunes Artist search: [BRMC][10]
* Site specific search: [Keybindings][11]

[1]: http://markedapp.com/ "Marked - smart tools for smart writers"
[2]: http://flexibits.com/ "Flexibits | Fantastical | Meet your Mac&#39;s new calendar."
[3]: http://www.youtube.com/watch?v=4JeDxJkAorU "The Damned Neat Neat Neat - YouTube"
[4]: http://www.last.fm/music/The+Damned/_/Neat+Neat+Neat "Neat Neat Neat by The Damned"
[5]: https://itunes.apple.com/us/app/marked/id448925439?mt=12&uo=4&partnerId=30&siteID=vRL5rYo4h5A "Marked"
[6]: https://itunes.apple.com/us/app/boost-2/id333191476?mt=8&uo=4&partnerId=30&siteID=vRL5rYo4h5A "Boost 2"
[7]: https://itunes.apple.com/us/app/purple/id433132196?mt=12&uo=4&partnerId=30&siteID=vRL5rYo4h5A "Purple"
[8]: http://en.wikipedia.org/wiki/Sid_Vicious "Sid Vicious"
[9]: http://dictionary.reference.com/browse/ambiguous "open to or having several possible meanings or interpretations; equivocal: an ambiguous answer. 2. Linguistics. (of an expression) exhibiting constructional ..."
[10]: https://itunes.apple.com/us/artist/black-rebel-motorcycle-club/id624658?uo=4 "Black Rebel Motorcycle Club"
[11]: http://brettterpstra.com/keybinding-madness/ "KeyBinding madness - Brett Terpstra"

(See the rendered output here)

Note that it uses reference style linking by default. Duplicate results are culled and their marker repeated as needed, and it will begin numbering after the highest numbered reference located in the passed text. If you run it with only one (!arg) link in the selection, it will automatically switch to inline linking. See the configuration below if you want to always force inline linking.

Installation

Dependency: this whole system relies on JSON responses, and Ruby needs the json gem to run this. From the Terminal, run sudo gem install json and in most cases you’ll be good to go. If you’re running a Ruby environment manager (rvm, rbenv) make sure you’re installing the gem in the system Ruby. The service will always use /usr/bin/ruby.

Download the zip file at the end of this post and double click it to extract the .workflow file. Place that file in HOME/Library/Services (or just double click it and it will ask if you’d like to install it). It should become available immediately.

You can assign a keyboard shortcut as well. See the howto for more information.

Usage

Select some text containing [link](!arg) format text, right/control click on the selection and find the “Services” menu at the bottom of the contextual menu that pops up (also available under the application menu in the menu bar). Under Services, select SearchLink and run it. It may take a while depending on how many links are in the text. Any links that return errors or no results will be left as is.

Configuration

There’s not a lot of configuration necessary. To see the available options, open the Service in Automator by double clicking it.

If you prefer to always use inline links, set inline to true.
If you have an affiliate link set up with iTunes, enter the extra portion of the link in the affiliate_string variable. If you don’t have one or don’t want to use it, leave that variable set to empty quotes. It has my own affiliate link code in it by default, but only because that was the easiest way to show which part of the url you need to use. It’s not as shady as it seems.

Download

There will likely be updates to this as I solve more problems, so keep an eye on this page for new versions. The current source code is available as a gist.

Download
SearchLink — Generate Markdown links from web searches without leaving your editor. More Info

Originally posted on BrettTerpstra.com at SearchLink: automated Markdown linking improved
Related posts:
Markdown Linking Services with the Google API
Marked 1.3.1, more MultiMarkdown goodies
Markdown Service Tools 1.3
Blog  Code  markdown  markdownservices  searchlink  service  from google
october 2012
Blogging from stdin
Lately I’ve been figuring out ways to wean myself from TextMate. While it’s possible that the open-sourcing of TM2 will turn out to be a great success, I wouldn’t lay money on it. And even if it does, it’s unlikely to happen quickly (remember when Netscape open-sourced Navigator?) and there’s no guarantee I’ll like the result.

So I need some tools to help me work in other editors. One of my favorite TextMate tools is Brad Choate’s Blogging Bundle, and I wanted something similar that I could call from any editor or from the command line. There’s probably a way to dig into the bundle and extract a few standalone scripts, but that seemed as time-consuming as just writing the few commands I need from scratch—especially since the Blogging Bundle is written in Ruby, a language I’m not comfortable with.

The two essential parts of a blogging system are:

A way of previewing posts locally before publishing. Luckily, the blog previewing command I’d written for TextMate wasn’t much more than a simple call to a standalone PHP script. Calling that script from another editor is easy.
A way of publishing posts after they’ve been written. This is where the Blogging Bundle shines, and I had nothing to replace it.

I decided to write a Python script to handle the publishing. There are a few Python WordPress libraries floating around, but none of them seem to be the library, so I decided to write my script without such a library, using xmlrpclib instead. Apart from some idiosyncrasies in both xmlrpclib and the WordPress MetaWeblog implementation, it went pretty smoothly.

My goal was to start with text that looks like this:

Title: Blogging from stdin
Keywords: programming, python, blogging, wordpress, xmlrpc

Lately I've been figuring out ways to wean myself from
TextMate. While it's possible that the open-sourcing of
TM2 will turn out to be a great success, I wouldn't lay
money on it. And even if it does, it's unlikely to
happen quickly (remember when Netscape open-sourced
Navigator?) and there's no guarantee…

I’d then run it through a script that

Parses the header lines (which could also include a line for the date and time at which the post is to be published).
Publishes the post.
Returns text that looks like the above, but with more header lines. This text could, if necessary, be edited and the post republished.

The return value should look like this:

Title: Blogging from stdin
Keywords: blogging, programming, python, wordpress, xmlrpc
Date: 2012-08-15 23:15:27
Post: 1913
Slug: blogging-from-stdin
Link: http://www.leancrew.com/all-this/2012/08/blogging-from-stdin/
Status: publish
Comments: 1

Lately I've been figuring out ways to wean myself from
TextMate. While it's possible that the open-sourcing of
TM2 will turn out to be a great success, I wouldn't lay
money on it. And even if it does, it's unlikely to
happen quickly (remember when Netscape open-sourced
Navigator?) and there's no guarantee…

This is basically the way the Blogging Bundle’s Post to Blog command works, but with fewer header lines. Because I’m not writing a general-purpose tool, I don’t need a line for the blog’s name; and because I don’t use categories here on ANIAT, I don’t need a line for that, either.

Here’s the script, named publish-post:

python:
1: #!/usr/bin/python
2:
3: '''
4: Take text from standard input in the format
5:
6: Title: Blog post title
7: Keywords: key1, key2, etc
8:
9: Body of post after the first blank line.
10:
11: and publish it to my WordPress blog. Return in standard output
12: the same post after publishing. It will then have more header
13: fields (see hFields for the list) and can be edited and re-
14: published again and again.
15:
16: The goal is to work the same way TextMate's Blogging Bundle does
17: but with fewer headers.
18: '''
19:
20: import xmlrpclib
21: import sys
22: import os
23: from datetime import datetime, timedelta
24: import pytz
25:
26: # Blog parameters (url, user, pw) are stored in ~/.blogrc.
27: # One parameter per line, with name and value separated by colon-space.
28: p = {}
29: with open(os.environ['HOME'] + '/.blogrc') as bloginfo:
30: for line in bloginfo:
31: k, v = line.split(': ')
32: p[k] = v.strip()
33:
34: # The header fields and their metaWeblog synonyms.
35: hFields = [ 'Title', 'Keywords', 'Date', 'Post',
36: 'Slug', 'Link', 'Status', 'Comments' ]
37: wpFields = [ 'title', 'mt_keywords', 'date_created_gmt', 'postid',
38: 'wp_slug', 'link', 'post_status', 'mt_allow_comments' ]
39: h2wp = dict(zip(hFields, wpFields))
40:
41: def makeContent(header):
42: "Make the content dict from the header dict."
43: content = {}
44: for k, v in header.items():
45: content.update({h2wp[k]: v})
46: content.update(description=body)
47: return content
48:
49: # Read and parse the source.
50: source = sys.stdin.read()
51: header, body = source.split('\n\n', 1)
52: header = dict( [ x.split(': ', 1) for x in header.split('\n') ])
53:
54: # For uploading, the date must be in UTC and a DateTime instance.
55: utc = pytz.utc
56: myTZ = pytz.timezone('US/Central')
57: if 'Date' in header:
58: # Get the date from the string in the header.
59: dt = datetime.strptime(header['Date'], "%Y-%m-%d %H:%M:%S")
60: dt = myTZ.localize(dt)
61: header['Date'] = xmlrpclib.DateTime(dt.astimezone(utc))
62: else:
63: # Use the current date and time.
64: dt = myTZ.localize(datetime.now())
65: header.update({'Date': xmlrpclib.DateTime(dt.astimezone(utc))})
66:
67: # Connect and upload the post.
68: blog = xmlrpclib.Server(p['url'])
69:
70: if 'Post' in header:
71: # Editing an old post.
72: postID = int(header['Post'])
73: del header['Post']
74: content = makeContent(header)
75: blog.metaWeblog.editPost(postID, p['user'], p['pw'], content, True)
76: else:
77: # Publishing a new post.
78: content = makeContent(header)
79: postID = blog.metaWeblog.newPost(0, p['user'], p['pw'], content, True)
80:
81: # Return the post as text in header/body format for possible editing.
82: post = blog.metaWeblog.getPost(postID, p['user'], p['pw'])
83: header = ''
84: for f in hFields:
85: if f == 'Date':
86: # Change the date from UTC to local and from DateTime to string.
87: dt = datetime.strptime(post[h2wp[f]].value, "%Y%m%dT%H:%M:%S")
88: dt = utc.localize(dt).astimezone(myTZ)
89: header += "%s: %s\n" % (f, dt.strftime("%Y-%m-%d %H:%M:%S"))
90: else:
91: header += "%s: %s\n" % (f, post[h2wp[f]])
92: print header.encode('utf8')
93: print
94: print post['description'].encode('utf8')
95:

I think it’s commented well enough, but there are a few points worth expanding on:

I keep my blog’s XMLRPC server URL and my username and password in a .blogrc file in my home directory. The file is formatted like this:

url: http://blahblahblah
user: myusername
pw: mypassword

The script gets its input from stdin and returns its output to stdout rather than using files. This seemed like the most flexible arrangement, as I can always used piping and redirection if I need to hook the script up to particular files. An unlikely advantage of doing it this way: as I was debugging, I ran the script directly from the Terminal, piping pbpaste into it and pbcopy out—no need for test files.

The documentation for WordPress’s MetaWeblog API has some errors, which I learned by exploring the return values from the metaWeblog.getPost command. The documentation says that the value of the mt_allow_comments field will be either open or closed; the value is actually either 1 or 0. It says the value of the mt_keywords field will be an array; it’s actually a string with the keywords separated by commas.
The <s>dateCreated</s> date_created_gmt field has to be expressed as a DateTime object. Confusingly, this is not an instance of the standard Python datetime class. It’s a special class defined in xmlrpclib. Some of the messing around you see in the code consists of handling this distinction.
When publishing, the <s>dateCreated</s> date_created_gmt field has to be given in UTC. Because I prefer to work in US/Central, that field is given in must be converted back to my local time zone when a post is retrieved. There’s more messing around in the code to convert back and forth between time zones. I use the nonstandard pytz library to do the conversions.
Lines 35 through 39, where I define the header fields and relate them to the field names in the WordPress MetaWeblog API, may look weird to you. Why am I defining two lists and then ziping them into a dictionary? Why not just make the h2wp dictionary directly? It’s because you can’t define the order of a dictionary’s keys, and I want the header fields ordered in a particular way in the returned text. The hFields list seemed like the simplest way to do that.

So far, the script is working well, but I’m under no illusions—its error handling is practically nonexistent, and I’m sure I’ll run into problems eventually. I’ll solve them as they come along.

Update 8/16/12
As expected, there were bugs, and they didn’t take long to appear.

First, I had forgotten to encode the output to handle non-UTF characters. That was a pretty easy fix.

More troublesome was my confusion over the dateCreated field. When I’d upload a post with dateCreated set to UTC, the publication time appeared correct (in US/Central) in the WordPress web interface, but the post wouldn’t get published at the indicated time. Very frustrating. After examining the metaWeblog.getPost output, I saw that the date_created_gmt field was 10 hours ahead of dateCreated, not 5 hours as it should be. Somehow, the time zone correction was being doubled.

I decided to dispense with dateCreated entirely and just use date_created_gmt.1 I convert from local time to UTC before publishing and convert the other way after retrieving. I’m sure there’s… [more]
Uncategorized  blogging  programming  python  wordpress  xmlrpc  from google
august 2012
The Best Way to Learn Python
Python is more popular than ever, and is being used everywhere from back-end web servers, to front-end game development, and everything in between. Python is a true general purpose language and is quickly becoming a must-have tool in the arsenal of any self-respecting programmer.

But Python isn’t popular just because it’s popular. It is easy to learn, reads like pseudo-code, and is wickedly agile. However, learning any new language can be a daunting task, and finding the right places and people to learn from is half the battle. That’s where this guide can help. This is your blueprint for making Python easy, fun and rewarding to learn.

Assignment 1: Start With the Basics
At the time of this writing, there are two main versions of Python in circulation: Python 2.7 and Python 3.2. Which you choose to learn really doesn’t matter too much, as the differences will be minimal—especially to a beginner. But you should know that, while Python 2 has far, far more 3rd party support, Python 3 is the primary focus of the developers designing the language. The choice is yours, but if your code acts differently to any given tutorial, make sure you use the same Python version used in the tutorial.

Wikibooks’ Non-Programmers Tutorial for Python
Wikibooks is always a great source to learn something new, and Python is no exception. Here you will find a solid and to the point series of guides that will teach you the ropes of Python. It doesn’t get too technical, and you can jump into coding something somewhat useful and rewarding pretty quickly. Because of this, I recommend this site as the best place to start on your Python journey.

The Official Python Tutorial
You won’t find a better source of information than the official python.org documentation. However, if you want to jump right in, as I’m sure many of you will, this might not be the best place to start.

The content tends to be more technical than wikibooks, which will be helpful later on as you progress through the language. But, for a beginner, it may just get in the way of what really is a very simple and beautiful language.

For beginners, the biggest difference between Python 2 and Python 3 will most likely be that Python 2 can use print without parentheses. Python 3 requires parentheses, but that’s all.

Assignment 2: Tutorials and Screencasts
TheNewBoston’s  Python Programming Tutorials
TheNewBoston’s playlists are always great, and you can learn a whole host of languages. ‘Bucky’ is a great instructor because he strikes a really great balance between being funny while also being easy to listen. I highly recommend any of his playlists—especially his Python playlist. He assumes zero prior knowledge of programming and will leave you with a firm grasp of the language.

Nettuts+’s Python from Scratch
A little closer to home is Giles Lavelle’s intro to Python. Like TheNewBoston’s series, Lavelle also assumes zero prior programming experience.

If you want to see some real-world applications of your applications, or would like to aim towards web development with Python, this series might be the one for you.

The screencast takes you from nothing to building a dynamic website using a Python web framework called Django.

ShowMeDo’s Python Screencasts
StackOverflow isn’t just full of ‘newbie’ errors and problems.

ShowMeDo has a huge catalogue of Python related videos. While it may not be the most user friendly experience around, the videos range in level from absolute beginner to the most advanced Python techniques. It is well worth checking out.

Build a Python Bot That Can Play Web Games
This tutorial is pretty specific in terms of what you’re going to learn, and I do not recommend it for a complete beginner. I feel, however, that it’s worth a mention. In this guide, Chris Kiehl shows you how to build a very interesting Python bot that will play a simple game for you. The tutorial really goes to show the power of Python; it can be applied to do everyday repetitive tasks that you may have on your computer.

Assignment 3: Free e-books!

Its hard to beat a good book when your trying to learn something new, and with the great community that has developed around the Python language, there is a plethora of free high quality e-books to choose from. Below is a quick list of some of the best. You can download a free e-book version for each of them, or you can choose to buy the physical book (or donate) if you want to support the author, which I’m sure they would greatly appreciate.

Learn Python the Hard Way
Despite the name, Learn Python The Hard Way makes learning Python incredibly easy—the way it’s meant to be! In this book, Zed A. Shaw works from the ground up giving you a detailed and comprehensive guide to Python without getting in your way of the actual coding. Shaw is informal but thorough, making the book an easy but rewarding read.

Think Python: How to Think Like a Computer Scientist
You won’t find a better source of information than the official python.org documentation.

As the sub title might suggest, “How to think like a computer scientist”, Think Python stays a little more towards the theoretical side of things. This may prove a little frustrating for a total beginner, but the book is well worth the read in regards to algorithm theory and high level concepts.

Invent With Python
If ‘learning by doing’ is your thing, then building your own game will prove to be a rewarding experience! In this book, Al Sweigart assumes no prior knowledge of Python and takes you all the way to building your own game. Given that the book is geared towards game development, the book may move a little quickly for a total beginner. Later on in this article, I mention a similar book of his where he assumes a prior knowledge of Python. If you feel you are have a good grasp of the language, then his other book might be a better resource for you.

The Django Book
If you want to learn Python for web development, then you’re probably going to be using the Django framework. This book assumes fluency in Python, but it teaches Django as if you are a beginner to the framework. The Django Book is as good as they come and will be invaluable for any budding web developer.

Python Books
If you don’t have enough to read yet, or want a book on a specific topic, then you should follow this link. The folks over at python.org have complied an extensive list of books, sorted by difficulty and topic.

Assignment 4: Get Familiar With StackOverflow
Thousands of developers have experienced every problem that you are bound to face. StackOverflow is a great resource where developers find solutions to their problems. When you happen upon an error that you’re not sure how to fix, search StackOverflow. You will more than likely find a solution and how other people solved their problem.

But StackOverflow isn’t just full of ‘newbie’ errors and problems; there are some really clever and helpful people that use the site – learn from them!

Take a look at the Hidden features of Python thread, for example.

Many of the tips and tricks you see here may not be covered in many formal tutorials, but they will be extremely helpful for intermediate to advanced Python users.

Assignment 5: Project Euler

Project Euler (pronounced ‘Oil-er’, to save you some embarrassment later on) is one of my favorite websites. After making an account, you can work through the ~400 problems on the website. Each problem is about 50% mathematics and 50% programming and, in my opinion, the most rewarding way to learn more of either subject.

The problems start off easy to test your knowledge of the language, but grow in difficulty to challenge even the most seasoned programmers. Eventually, the difficulty of the problems will force you to find the most efficient algorithm – that is if you don’t want to wait hours to compute the answer.

Nothing will turn you into a programming wizard more quickly than pushing yourself for the fastest and most efficient solutions to the Project Euler problems.

When you crack a new problem, you gain access to that problem’s forum thread where many people discuss their solutions and ideas with one another. Many of the solutions in later pages of the thread will be in Python. This is really the key to growing your programming prowess. If there is someone with a solution that is faster than yours, take the time to analyze it to see where you could improve your own solution. Over time, you will pick up all the tricks of the trade and grow your Python knowledge in a meaningful and rewarding way.

Additionally, there are also some really great blogs that work through the Project Euler problems in Python. If you are stuck on a problem, there is no shame in having a sneak peak at other developers’ work, as long as you intend on learning from it. Here are two of my favorite:

Dreamshire
Mycila

Assignment 6: Build a Game

Few things are more satisfying than building your own game.

Few things are more satisfying than building your own game. It can be a steep learning curve, but well worth it and very rewarding. PyGame is the best known game library for Python, and you will be able to find many free tutorials on it. Here are some of the best PyGame tutorials. 
Official PyGame Documentation
As with the case of the original Python tutorials, the developers of PyGame also have their own intro documentation. But these may be overly technical if you want to jump straight in and start building your game. Developer documentation, however, will always be your best source of information; so, I still recommend you get familiar with the site.

Invent With Python (With PyGame)
This free e-book by Al Sweigart runs through the PyGame library, taking you from zero knowledge to building a couple of games for yourself. The simple games will provide you with a perfect platform to start your own projects, if you are so inclined. Sweigart provides extensive and detailed comments throughout all of his code to help you … [more]
Python  Tutorials  syllabus  from google
august 2012
Web Fonts with @font-face
I switched this site off of TypeKit @font-face alternatives. TypeKit increased the page load-time by a noticeable amount and since I moved to a static blog system, I'm trying my hardest to keep the site lean.

Here's a brief tutorial on using custom fonts without JS or services like TypeKit. There is also an excellent tutorial at NiceWebType.com

@font-face fonts can be loaded by CSS declarations. There are many different fonts available around the web and there is a service to convert any font to an @font-face format.

I downloaded several fonts from Font Squirrel. There is a large collection to choose from but I chose Gandhi Serif for the body text and Colaborate for the headers and sidebar. Both fonts were available with several variations such as thin and heavy and both were free.

Gandhi Serif

Colaborate Thin Regular

Next, I loaded the fonts into a font directory in my site's path under "/theme/font/"

To load the font, I added the following CSS declaration for each font variation I wanted access to:

@font-face {
font-family: 'ColaborateThinRegular';
src: url('/theme/font/ColabThi-webfont.eot');
src: url('/theme/font/ColabThi-webfont.eot?#iefix') format('embedded-opentype'),
url('/theme/font/ColabThi-webfont.woff') format('woff'),
url('/theme/font/ColabThi-webfont.ttf') format('truetype'),
url('/theme/font/ColabThi-webfont.svg#ColaborateThinRegular') format('svg');
font-weight: normal;
font-style: normal;
}

The CSS loads the various files that are required for rendering the files in each of the different browser formats.

Styling the body text is just as simple. Just load the font as any other standard font:

body {
font-family: GandhiSerifRegular, Garamond, Georgia, serif;
font-size: 100%;
}

I haven't noticed any impact on page loading and a negligible increase in page size. Overall, I like this solution better than TypeKit.
web  design  from google
august 2012
Fünf Antworten für fünf Bumerang-Fragen
Es gibt eine Handvoll Leserfragen, die wiederholen sich bemerkenswert oft. Teilweise über Jahre. Fünf dieser ‘Anliegen’, die mir regelmäßig in die Inbox flattern, krame ich jetzt aus dem Archiv. Weil’s dann zukünftig schneller geht, eine Link-Antwort zu formulieren.

Wie richte ich einen US-iTunes-Account ein?
Der Trick ist simpel: Um eine amerikanische iTunes ID zu erstellen, muss die Neuanmeldung über den Download-Versuch einer kostenlosen App erfolgen. Sonst taucht die Zahlungsoption ‘Keine’ nicht auf, wie Apple dies selbst in diesem Support-Dokument erklärt.
Welche Simkarte kaufe ich für meinen Urlaub in XY?
Der treffende Begriff für die iPhoneBlog-Suchfunktion lautet ‘Prepaid’. Empfohlen wurde seinerzeit: ‘Prepaid Wireless Internet Access’. Bestimmt gibt es mittlerweile noch ganz viele andere (Wiki-)Seiten, die netlockfreie iPhones im Urlaub über lokale Datentarife beraten?!
Die Sonos-Boxen lassen sich auch über AirPlay ansteuern, richtig?
2011 entstand zu dieser Frage sogar ein Podcast-Video. Bis heute hält sich das damals beschriebene Setup in meinen vier Wänden. Einmal ins Sonos-System eingespeister Sound, genießt alle Vorzüge des Mesh-Netzwerks. Einzig und allein das unterschiedliche Lautstärke-Level zwischen Line-In und den Musikdiensten nervt.
Welche App benutzt du eigentlich für dies und das?
Im September 2009 startete ich genau zu dieser Frage eine Artikel-Serie, die man unter dem Schlagwort ‘Homescreens’ findet. Wer die bislang veröffentlichten Beiträge vergleicht (1, 2, 3, 4, 5 oder 6), kann feststellen welche Software sich auf meinem Mini-Computer eine Dauerkarte erspielt hat und welche Anwendungen sich als Eintagsfliege entpuppten.
Welches iPhone-Case benutzt du?
Der Klassiker! Grundsätzlich ist dies eine komplizierte Frage, mir fällt die Antwort derzeit jedoch leicht: Seit Herbst 2011 transportiere ich, wann immer ich das Haus verlasse, mein 4S in einem ‘BookBook’. In jeder anderen Minute benutze ich gar keine Hülle.

Mehr zum Thema
iPad-Ad: ‘All On iPad’
intern  bookbook  homescreen  Leserfragen  airplay  US_iTunes-Account  Fünf_Fragen  Bumerang  sonos  Boomerang  from google
august 2012
Lion DiskMaker 2.0 Final erschienen · bootbare USB-Sticks von Lion und Mountain Lion erstellen
Über den Lion DiskMaker hatte ich letzte Woche schon einen kleinen Artikel geschrieben. Diese kleine App, mit der man bootable USB-Sticks, SD-Karten, Firewire Drives, Festplatten oder DVDs von OS X Lion oder Mountain Lion erstellen kann, ist nun in der finalen Version 2.0 erschienen.

Neben etlichen Bugfixes gibt es jetzt auch ein shiny, new icon ;)

Auch Apple war in der Zwischenzeit nicht untätig und hat seinen Lion Recovery Disk Assistenten zum OS X Recovery Disk Assistenten umbenannt. Dieser kann nun auch mit Mountain Lion umgehen und erstellt aus einer existierenden OS X Recovery Partition einen bootbaren USB-Stick.

-> http://blog.gete.net/lion-diskmaker-us-> http://support.apple.com/kb/DL1433

© Björn für aptgetupdateDE, 2012. |
Permalink |
6 comments |
Die Autoren bei Twitter: Oliver, Björn, Stefan D, Stefan & aptgetupdateDE
Mac  10.7  10.8  Lion  Mac_OS_X  Mountain_Lion  OSX  USB-Stick  from google
august 2012
Install Sublime Packages From GitHub
First, if you’re not using the Package Control plugin then you are only hurting yourself. This tutorial assumes you are using it.

The basic instructions for installing from GitHub can be found here.

Here’s how to install Brett’s awesome MarkdownEditing package

Shift-CMD-P and then select “Package Control: Add Repository”

Now paste in the GitHub address for the package:

https://github.com/ttscoff/MarkdownEditing

Now let’s load the pacakge.

Shift-CMD-P and then Package Control: Install Package

Now you should see Markdown Editing listed. Just select it to get your Markdown on.

The package manager can now check the new repository for updates and upgrade the package when Brett adds new mind-blowing features.

The Package Control plugin is a great addition to Sublime Text, but there are a lot more plugins that are just hanging around on GitHub.
sublime  from google
august 2012
Migrating to Pelican – Extracting WordPress Data
I’ve been slowly working on migrating this site to Pelican.1 I have crossed the first major hurdle, which is getting my posts and meta data out of WordPress and into MultiMarkdown files.

Pelican
There are plenty of other sites that describe what Pelican is and how it works. Here’s a brief synopsis: Pelican is a static blogging system that generates a blog structure and each post from plain text files.

There are plenty of other static blogging options like Octopress or Jekyll. I chose Pelican, because I liked the Jinja templating system and I like working in Python.

I like static blog systems because I can understand all of the pieces without much effort. It’s HTML served up plain and simple. It’s fast and light weight. It’s easily portable to a new server by copying the root directory. There’s no database to worry about. There are no vulnerabilities to patch every few months. But what I really like about a static blog, is that I can just write in MultiMarkdown and post through FTP or Dropbox.2 There’s no API to push content around.

The downside is that most of the documentation for static blogging systems expect a clean installation or migration of very simple content. There are few “plugins” available out of the box. Instead most tweaks are done by writing new modules. There are few themes that can be dropped in to change the site.

Extracting WordPress Data
Pelican provides a built-in option to convert a WordPress XML export or feed directly into a folder full of individual Markdown or reStructured text files. I’m sure it works for someone, but it was fraught with error messages for me. After massaging the XML file a bit I finally finished a successful run just to find that the exports did not properly interpret my footnotes and many code blocks. As any self loathing geek would do, I decided to build my own export tools.

Brett Terpstra was kind enough to provide some custom Ruby tools he made to export WordPress to Jekyll. His code comes by way of Mihail Szablocs and I am thankful to both of them. They provided enough of a foundation, that I decided to build my own custom exporter in Python. Brett’s scripts extracted the WordPress content directly from the MySQL database rather than rely on the XML export provided by WordPress.3 I decided to do something similar.

The first step is to extract all of the WordPress posts in Sequel Pro.4 I really like Sequel Pro. It’s a great app that is donation-ware but works like a high-end app.

Warning
This directly interacts with the WordPress database. I’d suggest having a good backup before doing this. I’d also suggest anyone doing this have a modicum of knowledge about SQL. Selects are good. Updates are bad.

This SQL gets the post title, date, id, author, original URL and any link that may have been used as a linked-list post.

SELECT ps.post_title, ps.post_name, ps.post_date, ps.post_content, ps.post_excerpt, ps.ID, ps.guid, ll.meta_value
FROM wp_posts ps
LEFT OUTER JOIN
    (SELECT meta_id, post_id, meta_value
        FROM wp_postmeta
        WHERE meta_key = 'linked_list_url') ll ON ps.ID = ll.post_id
WHERE ps.post_status = 'publish' AND ps.post_type = 'post'

In Sequel Pro, I then export this data set as a Plain Schema XML. The XML format must be set to the Plain Schema for the script below to work properly.

I also wanted to get all of the post categories. I don’t use WordPress tags. I use categories only. In Pelican, I wanted to migrate those to tags. I decided to create a second export of just the tags and the post IDs. Here’s the SQL I used for that.

SELECT tm.term_id,tm.name, tr.object_id FROM wp_term_relationships tr
    INNER JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
    INNER JOIN wp_terms tm ON tm.term_id=tt.term_id  
    WHERE tt.taxonomy = 'category'

I exported this as a generic XML file. At this point I have two XML files. One file is all of the post content and the other contains the post categories.

String Encoding Be Damned
The next step was to massage the XML files a bit to make the Python script easier. Experience has shown me that no significantly-complex utf-8 encoded text file will only have Unicode characters. Rather than write a bunch of encoders/decoders it is much easier to just open the file in BBEdit and do some basic fixes.5 I used the Zap-gremlins option in BBEdit to get rid of odd control characters. It’s worth keeping the file loaded in BBEdit during processing.

There will be Unicode errors to address individually.

I also reduced the complexity of the XML by removing the extraneous info output by Sequel Pro. It’s not necessary but sometimes one delete key can save many lines of Python code.6

XML to Pseudo Markdown
I tried several mechanisms to reliably convert all of my HTML to MultiMarkdown without success. Footnotes were particularly troublesome. Since most of my favorite bits are in the footnotes, I didn’t want to sacrifice any of them.

Markdown can have HTML embedded so I went with the foolproof conversion. I kept the HTML of the post and just prepended the MultiMarkdown headers required by Pelican. It’s not fundamentalist Markdown. I call it progressive and good enough.

XML Processing
This is a bit of Python that will read in the two specified XML export files. It will then read the XML and generate one MultiMarkdown file for every post. Each file will contain a header of the meta data that can be used by Pelican.

from lxml import etree
from lxml import objectify
import os
import sys
import markdown

# File that holds the XML of all of the posts
filePath = "/Users/weatherh/wp_convert/ZapWP_Test_Export_posts_7-28-129-30 PM.xml"
# File that holds the XML of all of the categories
catFilePath = "/Users/weatherh/wp_convert/ZapWP_Test_Export_category_7-28-129-28 PM.xml"

parser = etree.XMLParser(remove_blank_text=True)
#lookup = objectify.ObjectifyElementClassLookup()
parser.setElementClassLookup(lookup)

# Tree object for the XML of WP Posts. This is a file reader too. Very convenient.
catTree = objectify.parse(catFilePath)
# Get the root of the category tree object
catRoot = catTree.getroot()

# Set the root of the WP Post tree
tree = objectify.parse(filePath)
root = tree.getroot()

# Loop over all of the rows in the XML to get the posts
for post in root.findall('row'):
    md = markdown.Markdown(extensions = ['extra', 'meta'])
    postTitle = post.find('post_title')
    postName = post.find('post_name')
    postDate = post.find('post_date')
    postContent = post.find('post_content')
    postGUID = post.find('guid')
    postID = post.find('ID')
    postLink = post.find('meta_value')
    postHeader = 'title: '+postTitle+'\n'+'name: '+str(postName)+'\n'+'date: '+str(postDate)+'\n'+'guid: '+str(postGUID)+'\n'+'postID: '+str(postID)
    if postLink != 'NULL':
        postHeader = postHeader+'\n'+'link: '+str(postLink)
    postCategory = []

    ## Get Categories for the current post ##
    for category in catRoot.findall('row'):
        if category.find('object_id') == postID:
            postCatString = category.find('name')
            postCategory.append(str(postCatString))
    # We need the categories in a series of tab endented lines
    allCategoryList = "\n\t".join(postCategory)
    ## Convert WP Categories to Tags ##
    postHeader = postHeader+'\n'+'tags: '+allCategoryList
    fullPost = postHeader+'\n\n\n'+postContent
    f = open('/Users/weatherh/wp_convert/content/'+str(postName)+'.md', 'w')
    # Write all of the files. Damn I hate string encoding with a passion.
    f.write(fullPost.encode('utf8', 'replace'))
    f.close()

The result of this madness, is a folder full of pseudo-Markdown.7

Each file contains a properly formatted MultiMarkdown header, which Pelican will convert to post properties.

With this bolus of posts in hand, it’s one terminal command to generate an entire Pelican static blog site that contains all of my old posts from Macdrifter. But I’ll save that for another day.8

It’s slow because there is a crap load of stuff I don’t know and barely understand. It’s also not how I make a living so it’s low on my priority list. This project may never bear fruit other than ceasing my bitching about WordPress. ↩

Yes, I already have a system like that for WordPress. It’s a hack that requires Dropbox and a Mac. ↩

Someone with superior patience could use the XML provided by a WordPress export, but that beast is too ugly for me to stare at. ↩

It’s ugly and brutal but it gets the job done. Like an ape bending a twig to fish for termites, not all of my tools need to be pretty. Sometimes they just need to fish out a damn insect. ↩

BBEdit is one of the only text editors that can open a 254MB XML file in a split second and provide smooth scrolling. It’s a marvel of engineering. Even Find-and-Replace is lighting fast. ↩

Usually one delete key is what it takes to fix many lines of my Python code. ↩

I call it “pseudo” because I typically do not think of Markdown as a bunch of HTML with a MultiMarkdown header. Real Markdown should contain as little HTML as possible. That’s what the processor is for. ↩

I’m not trolling for clicks. This is very much a work in progress. And by progress, I mean just hours ago I finished this script. ↩
pelican  Python  Web  from google
july 2012
Peanut Butter Fudge mit Fleur de Sel
Ihr müsst jetzt ganz stark sein, damit ihr nicht so hysterisch vor dem Rechner anfangt zu kreischen wie ich, als ich das erste Mal die Zutatenliste dieser kleinen Köstlichkeit namens Erdnussbutterfudge durchlas. Daher: Erst einmal atmen. Gaaaaanz langsam, tiiiiief eeeeeiiiin und aaaaauuus und ein und aus. Happy place, everybody. Alle im happy place? Gut. Dann dürft ihr jetzt weiterlesen. Und immer daran denken: Ja, es ist quasi Zeug aus der Süßhölle, aber ganz ehrlich, es macht sehr glücklich. Und nach einem Bissen isst man sowieso eine Woche lang keinen zweiten, weil es wirklich so süß ist wie man es sich vorstellt nach dem Lesen der Zutatenliste. Ihr seid noch beim Atmen und im happy place? Gut. Dann los.

125 g Butter bei mittlerer Hitze schmelzen. Dazu (Achtung, atmen:)
500 g braunen Zucker (bei mir Demerara) und
120 ml Milch geben. Aufkochen und für zwei, drei Minuten kochen lassen, ohne umzurühren. Vom Herd nehmen und

250 g Erdnussbutter (crunchy) sowie
das Mark einer Vanilleschote einrühren.

Das sieht erst mal aus wie ein Klotz Erdnussbutter auf einem Berg Zucker, aber beim Rühren (Holzlöffel) schmilzt die Butter und es verbindet sich alles. Unser Werk ist aber noch nicht süß genug, deswegen gießen wir die Butterzuckerbutter jetzt in eine große Schüssel, in der sich zufällig schon

300 g Puderzucker befinden. Wenn man das alles zusammenrührt, sieht es extrem, und ich meine: extrem unappetitlich aus. Wenn ihr es nach„kocht“, werdet ihr wissen, was ich meine. Außerdem bekommt alles eine Konsistenz von Slime, das, so flüssig es war, nie irgendwo festklebte. Das kommt uns jetzt zugute, denn wir gießen den Berg an Kalorien nun in eine mit Aluminiumfolie ausgekleidete Backform, circa 20 x 20 cm (ich nehme eine rechteckige, denn die hab ich und eine quadratische hab ich nicht), lassen alles kurz abkühlen und stellen es dann für ein paar Stunden in den Kühlschrank.

Wenn die Masse fest geworden ist, schneiden wir sie in mundgerechte Häppchen, packen noch ein paar Kalorien oben drauf, indem wir
50 g dunkle Schokolade schmelzen und damit den Fudge überziehen. Zum Schluss, ganz wichtig, auf jedes Stück noch ein wenig
Fleur de Sel streuen.

Das Rezept ist eine Mischung aus dem hier und dem hier, wo es schöne Fotos zu bewundern gibt. Beide behauptet, es kämen circa 36 Stück raus, bei mir waren es fast 50. Ich bin also ein Jahr lang versorgt. Weswegen man beim Ausprobieren dieses Rezepts einfach mal alle Zutaten dritteln sollte, das reicht locker für den ersten Eindruck.
Weblog  from google
july 2012
Recipe: an easier way to make simple syrup
I’m going to bet that when you read the next sentence, you will slap your head. Sugar does not need heat to dissolve in water. 

Easy simple syrup

Makes approx 1.5 cups (12 oz)

220 g water (about 1 fl cup)
220 g granulated sugar (or about 1 cup, 1 oz, using a liquid measuring cup)

To make easy simple syrup, add 1 part sugar to 1 part nice-tasting water and sit patiently. Do the measurements by weight if possible, as the densities of different brands and types of sugar can vary.

Why this technique is better
1. It’s fast. While heating simple syrup will cause the sugar to dissolve more quickly, you then have to deal with waiting for the syrup to cool. Using the room temperature method requires much less work for the same gain.

2. Simple syrup made without heat may be slightly more viscous than syrup made with heat. Table sugar (sucrose) is a disacharride composed of two monosacharrides, glucose and fructose. Sucrose rapidly breaks down into glucose and fructose when heated. The simpler carbohydrates should be less viscous in solution, but I haven’t independently verified this assumption. If you have experience with the topic, please comment!

Photo proof

In the above picture, a 2:1 ratio of sugar to water is shown on the left and 1:1 is on the right. The photo was taken just after adding water – note how cloudy both samples are.

This picture shows the finished syrups. The 2:1 version took about 45 minutes to fully combine. I shook it lightly every 15 minutes or so. The 1:1 syrup took about 15 minutes to get clear. I’ve done the 1:1 syrup with zero shaking before and I know that it will get clear on its own through diffusion.

As far as which one’s better, 2:1 or 1:1… more to come.

Substitutions and measurements
The below are the measurements I got at sea level at an ambient temperature of 74F:

density of water: 0.93 g/mL, or 220g/8 oz
density of simple syrup: 33.5 g/oz
volume of 220g sugar + 220g water = 1.64 cups (13.13 oz)

For drinks like the old fashioned or the sazerac: Using the recipe I give above, the proper substitute for a sugar cube is about 1/8 oz of simple syrup, or 3/4 of a teaspoon.

How do you make simple syrup?
Cocktail_Science  Recipes  from google
july 2012
Der Frage-Antwort-Katalog für DJs
Ihr kennt das: irgendwer kommt immer, will es lauter oder leiser oder schneller oder langsamer oder härter oder was von Kalkbrenner oder ganz was anderes. Hier der Katalog, der über jeden Mixer gehört.

(via Testspiel)
Nur_mal_so  from google
june 2012
“Shortcut App” CheatSheet landet kostenlos im Mac App Store
Oliver hatte CheatSheet, eine App, die auf Knopfdruck zu allen möglichen Apps die passenden Tastenkürzel angibt, vor knapp zwei Wochen schon vorgestellt.

Neben der nach wie vor verfügbaren Downloadversion, wird ab sofort auch eine Version im Mac App Store kostenlos angeboten. Auch hier wird OS X Lion minimal für eine Installation vorausgesetzt.

CheatSheet Hersteller: Stefan Fuerst Freigabe: 4+ Preis: Kostenlos Download

© Björn für aptgetupdateDE, 2012. |
Permalink |
3 comments |
Die Autoren bei Twitter: Oliver, Björn, Stefan D, Stefan & aptgetupdateDE
Mac  App  Freebies  kostenlos  Mac_App_Store  Mac_OS_X  MAS  Shortcut  Software  Tastenkombination  from google
june 2012
Favs – ein Lesezeichendienst für Lieblingstweets
Favs (2.39 €; App Store-Link) sammelt eure Facebook ‘Likes‘, Instagram ‘Herzchen‘, YouTube ‘Däumchen‘ und Twitter ‘Favoriten‘ ein – ähnlich wie ein Mail-Client, der sich von unterschiedlichen Konten neue Daten holt. Der ‘Posteingang’ von Favs setzt sich derzeit aus 17 verschiedenen Webdiensten zusammen – von Flattr über YouTube bis Flickr.
Da jeder eingefangene ‘Gefällt mir‘-Klick dieser Online-Services auf ganz unterschiedliche Art und Weise zustande kommt und weiterverwendet wird, blüht die App mit facettenreichen Anwendungsfällen. Einen ‘Lieblingstweet’ möchte man, ähnlich einem guten Zitat, vielleicht nur archivieren; ein Vimeo-Video bekommt das ‘Like‘ weil man es zum Anschauen für später vormerken möchte. Die Sternchen und Favoriten scheinen auch als Lesezeichen, für Web-Dinge, die man noch Ausprobieren, Weiterleiten oder Schreiben möchte, stark verbreitet. Für mich persönlich ist Pinboard, das bessere Delicious, der Hauptgrund um über die Suchfunktion nach Schlagworten meine Bookmarks zu durchwühlen.
Favs erfreut sich bereits seit ein paar Monaten im Mac App Store (7.99 €; MAS-Link) großer Beliebtheit. Die heute veröffentlichte iPhone-App steht der Desktop-Version in keinem Punkt nach.

Mehr zum Thema
CloudOn: Word, Excel und PowerPoint am iPad‘Vjay’ produziert dein eigenes MusikvideoAirfoil Speakers Touch: Apples AirPlay-Einschränkung lässt sich aufhebeniOS-Mail: ‘Alles als gelesen markieren’Preisschlacht zur WWDC: OmniFocus, Reeder, Artboard, Pixelmator, 1Password und Fantastical günstiger
dribbble  Facebook  zootool  stackoverflow  read_it_later  Del.icio.us  favstar  follow_favorites  flattr  favs  github  dirk_holtwick  Software  instagram  from google
june 2012
Keyboard Maestro Resize Image Macro
Here’s a macro to take advantage of the new Keyboard Maestro 5.3 Image actions. This macro processes an image (or several) selected in the Finder. If the image is larger than 600px wide, a new scaled copy is created that is 600px wide. But the trick is to scale both dimensions relatively, not just squash the image on the X-axis.

The macro is a bit long but most of it is straight forward. The first steps involve getting the file path, name and extension. This info is used later to write the new version of the file with the suffix “600px” appended to the file name.

I only want the macro to process images that are larger than 600px wide. I added a test to the macro where I extract the image dimensions (with the new KM image dimension action). I then check the image width (held in temp[1]) to see if it is greater than 600px.

The real trick in this process is to resize the image height relative to the 600px width. To do that I use the Keyboard Maestro Image resize action, but I set the dimensions with a calculation rather than an integer. This is useful option that is often overlooked in KM. Any field that accepts an integer value will also accept a calculation that generates an integer at run time.

Finally, the macro saves a new version of the file without overwriting the original. The new version gets the same base file name but with a suffix appended.
keyboard_maestro  from google
may 2012
SSH: What and How
Many web developers use SSH (“Secure Shell”) on a daily basis to manage their servers, back up files, work remotely, and a myriad of other tasks. Today, I’ll explain what SSH is, do a brief history review, and, lastly, teach you how to set it up on your remote server or even your local network. Let’s get started!

A Starting Explanation

If you’re reading this, it’s likely that you’re at least somewhat acquainted with Terminal (or on Windows, something like Cygwin). If so, then you will understand this quick functional explanation of SSH.

SSH is essentially using a network connection to get into Terminal on another computer.

If you aren’t familiar with Terminal, there are a lot of explanations and beginner’s guides to Terminal, both here on Nettuts+ and elsewhere. The power of SSH is reliant on its simplicity; by offering you access to the Terminal of another machine, SSH cuts to the chase and gives you full control over a remote machine. If you understand the power of Terminal and its direct connection to the inner workings of your local machine, then you understand the power of SSH!

A Brief History
SSH was developed in its infant state in 1995. The primary developer, Tatu Ylonen, developed it as the first secure way to administrate a remote UNIX system. Previous to SSH, the only tools that existed sent information like passwords in clear text.

So, How Do I Use It?
There are a million guides out there on how to get set up with SSH. We will specifically cover one method today. First things first, you’ll want to make sure you have SSH on your system.

Mac – A version of OpenSSH comes preinstalled.
Windows – Follow a guide like this one or this one to get Cygwin and the “openssh” package installed.
Linux – OpenSSH is highly likely to be installed already, but if it isn’t, you can follow the same guide to get it installed.

To determine if SSH is installed, run `which ssh`. If Terminal returns something along the lines of /usr/bin/ssh, then you’re good to go! Otherwise, follow one of these guides to get it installed.

In this article, I will assume the version you are using is OpenSSH; there are some configuration differences that depend on your version of SSH. We will be explaining how to set up a Mac to connect to a MediaTemple server through a single SSH command. Once you have SSH installed on your machine, you will need to make sure your target host has SSH enabled. SSH runs over port 22 by default; you can use a command line tool like nmap to ping your server to determine if port 22 is accepting incoming connections, like this:

sudo nmap -sS hostname.com

Of course, you probably have access to the administrative interface for the server. Make sure you look through the options and enable SSH. On a Mediatemple server, this configuration is located under the Server Control panel. Mediatemple SSH is accessible by using root@primarydomain.com. You can add users to the account, but for the sake of keeping things simple, we will use root@primarydomain.com.

Once SSH is enabled (and you have set a root password in your server admin), you can run the following line to SSH into your server.

ssh root@primarydomain.com

…where primarydomain.com is your MediaTemple primary domain. You will then be prompted for your password (which is the root password you set in the control panel). If you are not using MediaTemple, you can SSH directly to the IP address of your server as well.

If using shared hosting, it is likely that you will not be logging in as root. Instead, you will log in with a user account name. For example, if you are using a service like Site5, you may log in with a username at a subdomain, like this:

ssh username@malta.site5.com

Ultimately, these configurations will depend on your specific web server company. Refer to your host’s documentation for more information.

Once you are “shelled in”, you can execute commands and traverse the file system within Terminal. Depending upon on your level of access, you may be able to install things on your server using apt-get or wget commands. You can manage your Apache server, edit configuration files with a Terminal-based text editor, view error logs, clear caches, view files directly on a server to make sure they are the correct version, and plenty of other lower-level system administration tasks. Now, what if you wanted to do more, faster with SSH?

How Do I Use It… Better?
There are a ton powerful things that SSH opens you up to. We will skip a few of them (as quite a few are more sysadmin-related, like tunneling). But we will go over a few useful tricks.

Super-quick Log-in
You’re thinking to yourself, “seems like there should be a faster way to do this.” You’re right. And there is. Instead of having to remember your domain, password, and username for every server, you can set up a few configurations that will allow you to speed up the process to something along these lines.

ssh myserver

With the right configuration, you could run this, and without having to enter any passwords, IP addresses, or long domain names, you’re in! Again, we will assume you are logging into a MediaTemple server. First, we will generate ssh keys. This is basically a set of encrypted keys that live in ~/.ssh on your local machine. You have a “public” key and a “private” key. So, first things first, open a new Terminal window and create the .ssh folder in your home directory.

mkdir ~/.ssh

Next you will generate your keys with the following line. (This comes directly from MediaTemple’s documentation.)

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -C "Comment about your key goes here."

This line will generate an ssh key of type rsa, with 2048 bits (for security), at the file location specified, with the comment specified. You will be promprted for a password, but it isn’t mandatory or necessary; not providing a password will enable you to automatically log in. The RSA type is for SSH protocol version 1. Type DSA is for protocol version 2. Check with your web server to find out which version they are using. Once your keys are generated, you will then run this to make sure your SSH configurations are set to the right permissions.

chmod 700 ~/.ssh && chmod 600 ~/.ssh/*

Next, you will upload your public key to your server. There are quite a few ways to do this; this way comes from MediaTemple’s docs as well.

cat ~/.ssh/id_rsa.pub | ssh root@example.com 'cat - >> ~/.ssh/authorized_keys'

This code is echoing your id_rsa.pub through a `|` (pipe) into the next command, which is an SSH into root@example.com, where you will run an echo and concatenation of what you piped in the first command. It sounds a bit complicated, so there are a few alternative ways to handle this. Essentially, you are going to want no line breaks and your public key on its own line in a file, called authorized_keys on your server in the ~/.ssh/ directory. So, if this is the first or only key you want on your server, you could run this command to copy it directly to that location.

scp ~/.ssh/id_rsa.pub root@example.com:.ssh/authorized_keys

This line is essentially saying, “copy this first file through SSH to the server at this location relative to my current home directory.”

Once your authorized_keys contains your public key, you can attempt to login to the server with ssh username@example.com. If you put your public key in the root user directory’s SSH configuration files, you will be able to login directly to root. You will be asked about a rsa fingerprint; go ahead and allow this action. It adds the server you are connecting to to a known_hosts file. This file can be used for a lot of different things, but particularly to secure yourself against what is called a “man-in-the-middle” attack. If you’d like to read a little more about this, check out this explanation.

If you can successfully log into your server, as if you had entered a password, your keys are working properly. The next step is to add a couple of lines for a shortcut to a configuration file on your machine . Open ~/.ssh/config in your favorite text editor (create it if it doesn’t exist) and add the following:

Host shortname
HostName somehost.com
User username

Where “shortname” is a nickname for the server you want to log into. For instance, “Host myserver” would allow me to do ssh myserver. The HostName is your server location, and of course the User is your username. You may have User root at this spot. Once this file is saved, you should be able to run a simple command to log into your server, like this:

ssh shortname

Git Without a Hub
Please Note: this section requires a bit of familiarity with Git.

You can use SSH to set up your own Git repos on your server! This is useful for companies who don’t want to expose their code on GitHub for whatever reason, and it’s great to be able to push directly from a local machine to a Git repo on your own server.

To set this up, make sure Git is installed on both the host and your local machine. You may have to go through your web server company to have Git installed. Next, run git init on your server in the location that you want your Git repo to be. Of course, you can do this a hundred different ways, but if you prefer to not have a bare repository, you can use branches to push to from your local machine. Here is a common workflow.

ssh user@example.com
cd /path/to/repo
git init
git checkout -b staging
git checkout master
# disconnect from shell session using ctrl-d
cd /local/repo
git init
git add .
git commit -am "some message"
git remote add origin user@example.com:/path/to/repo
git checkout -b staging
git push origin staging
ssh user@example.com
cd /path/to/repo
git merge staging

Essentially what is happening here is you are logging into the server, changing to the desired repo path, creating a repository and adding a “staging” branch which you can push to from your local machine. Then, you are creating your local repo and a corresponding “… [more]
Tools_&_Tips  ssh  terminal  from google
may 2012
Die Wiederentdeckung der Langsamkeit: Warum Podcasts funktioneren
Wie sicherlich den meisten bekannt sein dürfte, habe ich auf der re:publica 2012 vor zwei Wochen einen Vortrag gehalten. Dieser ist jetzt auch als Aufzeichnung verfügbar. Enjoy.

Direkter Download: MP4 (720p)
Podcast  The_Lunatic_Fringe  from google
may 2012
Stealing ideas
Tonight I saw these two tweets from Jason Snell and smacked my forehead. Of course!

The “Smart Playlists” feature in Instacast 2 isn’t smart. I’d like only @5by5 After Darks from certain podcasts, but it can’t filter that.  — Jason Snell (@jsnell) Mon May 14 2012

(Solution: I made a Yahoo Pipe that takes in the After Dark feed, filters by show title, and then outputs a new RSS feed.)  — Jason Snell (@jsnell) Mon May 14 2012

The After Dark feed includes After Darks from all the 5by5 shows. This is probably a good way for Dan Benjamin to introduce all his shows to those who currently listen to just a couple (and it’s certainly easier to manage one After Dark feed than a dozen), but I’ve had to declare podcast bankruptcy1 more than once and don’t need any more suggestions.

Hence the value of Jason’s tweets. Yahoo! Pipes, which was big news four or five years ago, is still there and still working, but I never would’ve thought of it, even though it’s absolutely perfect for this sort of situation. It’s hard to imagine how Yahoo! makes any money off of Pipes, but as long as it’s there, we should take advantage.

I’m not privy to what Jason’s After Dark pipe looks like, but here’s mine:

This is about as simple as a Pipe can get. The original feed is

http://feeds.feedburner.com/5by5-afterdark

and I allow only those items whose titles contain the key title words of the podcasts I listen to. I should probably add Mac Power Users to the list, even though it’s never had an After Dark—there’s always a first time.

Sometimes you don’t need chapter and verse; just a word or two is sufficient. My thanks to Jason for providing the words.

You know, like email bankruptcy, but with podcasts. ↩
Uncategorized  podcasts  rss  yahoo_pipes  from google
may 2012
Bagels
Neulich bat ich per Twitter Frau coolcat um ihr Bagelrezept, weil ich die Dinger dauernd sehe, wenn ich mich mal wieder in ihrem Flickr-Stream hungrig sabbere. Freundlicherweise bekam ich es, und jetzt reiche ich es weiter. Drüben steht das Rezept für zehn bis 14 Kringel mit Frischhefe und sogar, wenn man möchte, als vegane Variante. Hier steht die faule unvegane für sechs Bagel.

1 Ei trennen, gut die Hälfte vom Eigelb zum Eiweiß geben und verquirlen. Das restliche Eigelb beiseite stellen.

250 g Mehl, Type 550, mit
1/2 Tütchen Trockenhefe,
2 TL Zucker und
1 TL Salz mischen.

In einem kleinen Topf
25 g Butter in
125 ml Milch schmelzen.

Das verquirlte Ei zur Buttermilch geben und mit den trockenen Zutaten zu einem Teig mischen. Den Teig circa zehn Minuten kneten, notfalls noch Mehl dazugeben. Sagt schon der gesunde Menschenverstand, aber ich schreib’s trotzdem noch mal auf: Wenn nix mehr an den Fingern klebt beim Kneten, ist die Mehlmenge richtig. Den Teig in eine Schüssel geben und abgedeckt eine Stunde an einem warmen Ort gehen lassen.

Danach noch mal kurz durchkneten und aus dem Teig sechs Bagel herstellen. Ich habe dazu sechs Kugeln geformt, sie ein bisschen plattgekuschelt und sehr unfeierlich mit dem Zeigefinger ein Loch in die Mitte gebohrt. Die Bagel abgedeckt für weitere 15 Minuten gehen lassen.

In der Zeit in einem Topf
3 l Wasser,
2 TL Zucker und
1 TL Salz zum Kochen bringen. Die Temperatur verringern, bis das Wasser nur noch simmert. Die Bagels nun mit einer Schaumkelle für eine knappe Minute ins Wasser geben. Ebenso wieder rausfischen, abtropfen lassen, auf ein Backblech umsiedeln, mit dem übriggebliebenen Eigelb bestreichen – wer mag, streut noch Zeug seiner Wahl oben drauf, zum Beispiel Sesam oder Mohn – und im auf 200° C vorgeheizten Ofen für 20 bis 25 Minuten knusprig-gold backen.

Ich bin gerade wieder auf dem Pastrami-mit-Kaffeemayonnaise-Trip, die mir gestern allerdings etwas zu dünnflüssig geraten ist.
Weblog  from google
may 2012
Primer available in full-length on YouTube
Primer is one of my favorite films of the past ten years and is available on YouTube in its entirety.

Tags: movies   Primer   video
from google
april 2012
The visual style of The Wire
In this video, Erlend Lavik compares the relatively spare visual style of The Wire with that of other TV programs.

(via @uxprinciples)
Tags: Erlend Lavik   The Wire   TV   video
from google
april 2012
CSS Refreshers: Borders
Sure, we’re all familiar with borders. Is there anything new that could possibly be introduced? Well, I bet there’s quite a few things in this article that you never knew about!

Not only can CSS3 be used to create rounded corners, but plain-ole’ CSS can also be wrestled into displaying custom shapes. That’s right; in the past, before these techniques were discovered, we might have resorted to using absolutely positioned background images to display circles or arrows. Thankfully – as we gleefully take one more step away from Photoshop – this is no longer the case.

The Basics
You’re likely familiar with the most basic use of borders.

border: 1px solid black;

The above code will apply a 1px border to an element. Plain and simple; but we can also modify the syntax a bit.

border-width: thick;
border-style: solid;
border-color: black;

In addition to passing a specific value to border-width, three keywords may alternatively be used: thin, medium, and thick.

While it might initially seem unnecessary to ever make use of the long-hand form, there are a handful of cases when it’s advantageous, such as when you need to update some aspect of a border when a designated event occurs.

Perhaps you need to change the color of a border when the user hovers over a specific element. Using the shorthand form would require that you repeat the pixel values.

.box {
border: 1px solid red;
}

.box:hover {
border: 1px solid green;
}

A more elegant and DRY approach would be to specifically update the border-color property.

.box {
border: 1px solid red;
}

.box:hover {
border-color: green;
}

Additionally, as you’ll find shortly, this long-hand technique is helpful when creating custom shapes with CSS.

Border-Radius
border-radius is the golden child of CSS3 – the first new property to gain widespread use in the community. What this translates to is that, excluding Internet Explorer 8 and below, all browsers can display rounded corners.

Previously, it was necessary to use vendor prefixes for both Webkit and Mozilla, in order for the styling to be correctly applied.

-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;

These days, however, we can slice off the vendor versions without worry, and simply stick with the official form: border-radius.

As one might expect, we can also specify custom values for each side of a box.

border-top-left-radius: 20px;
border-top-right-radius: 0;
border-bottom-right-radius: 30px;
border-bottom-left-radius: 0;

In the code above, setting border-top-right-radius and border-bottom-left-radius to zero would be superfluous, unless the element is inheriting values which need to be reset.

Much like margin or padding, these settings can be condensed into a single property, if necessary.

/* top left, top right, bottom right, bottom left */
border-radius: 20px 0 30px 0;

As an example (and as web designers do so often), the shape of a lemon can be reproduced with CSS and the border-radius property, like so:

.lemon {
width: 200px; height: 200px;

background: #F5F240;
border: 1px solid #F0D900;
border-radius: 10px 150px 30px 150px;
}

Beyond the Basics
Many designers happily stick with the knowledge outlined thus far in this chapter; however, there’s a few ways we can push it further!

Multiple Borders
There’s a variety of techniques that we can refer to, when tasked with applying multiple borders to an element.

Border-Style
While solid, dashed, and dotted are the most frequent values for the border-style property, there’s also a few others that we can make use of, including groove and ridge.

border: 20px groove #e3e3e3;

Or, with the long-hand form:

border-color: #e3e3e3;
border-width: 20px;
border-style: groove;

While this is certainly helpful, a ridge or groove effect isn’t really multiple borders.

Outline
The most popular technique for creating two borders is to take advantage of the outline property.

.box {
border: 5px solid #292929;
outline: 5px solid #e3e3e3;
}

This method works wonderfully, however, it’s limited to two borders. Should you need to create a layered, gradient-esque, effect, a different approach will be necessary.

Pseudo Elements
When the outline technique doesn’t suffice, an alternate approach is to take advantage of the :before and :after pseudo elements, and apply any necessary additional borders to the generated content.

.box {
width: 200px; height: 200px;
background: #e3e3e3;
position: relative;

border: 10px solid green;
}

/* Create two boxes with the same width of the container */
.box:after, .box:before {
content: '';
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
}

.box:after {
border: 5px solid red;
outline: 5px solid yellow;
}

.box:before {
border: 10px solid blue;
}

This perhaps isn’t the most elegant approach, but it certainly gets the job. One caveat is that it’s easy to confuse the order in which the border colors will be applied. A certain level of “guess and check” is often required to apply the correct sequence.

Box-Shadow
The cool kids way to create an infinite number of borders is to take advantage of the spread parameter in the box-shadow CSS3 property.

.box {
border: 5px solid red;
box-shadow:
0 0 0 5px green,
0 0 0 10px yellow,
0 0 0 15px orange;
}

In this case, we’re being clever and are using box-shadow in a way that might not necessarily have been intended when the specification was originally written.

By setting the x, y, and blur components to 0, we can instead use the spread value to create solid borders at the desired locations. Because box-shadows can be stacked, through the use of a comma, the number of possible levels is infinite.

This technique gracefully degrades quite nicely. In older browsers, which do not recognize the box-shadow property, this will simply render the single red 5px border.

Remember: designs needn’t be identical in all browsers. Write your CSS for the most modern of browsers, and then provide suitable fallbacks, accordingly.

Modifying Angles
In addition to passing a single value to border-radius, we can alternatively provide two – separated by a / – to specify unique values for both the horizontal and vertical radii.

For example…

border-radius: 50px / 100px; /* horizontal radius, vertical radius */

…is equivalent to:

border-top-left-radius: 50px 100px;
border-top-right-radius: 50px 100px;
border-bottom-right-radius: 50px 100px;
border-bottom-left-radius: 50px 100px;

This technique is particularly helpful when you need to mimic a subtle, lengthy curve, rather than a generic rounded corner. For instance, the following code allows us to slightly break away from a square shape, resulting in more of a curled, paper-like effect.

.box {
width: 200px; height: 200px;
background: #666;

border-top-left-radius: 15em 1em;
border-bottom-right-radius: 15em 1em;

}

CSS Shapes
Perhaps the neatest use of borders is when they’re cleverly applied to elements, which have a zero width and height. Confusing, huh? Let’s see a demonstration.

For the next several examples, assume the following markup…

<div class="box"></div>

…and the following base styling:

.box {
width: 200px;
height: 200px;
background: black;
}

The most frequently referenced example, when demonstrating how CSS shapes might be used in a project, is to create the obligatory arrow.

The key to understanding how an arrow might be formed with CSS is to set a unique border-color to each side, and then reduce both the width and height values for the container to 0.

Assuming a div with a class of arrow as the container:

.arrow {
width: 0; height: 0;

border-top: 100px solid red;
border-right: 100px solid green;
border-bottom: 100px solid blue;
border-left: 100px solid yellow;
}

As demonstrated at the beginning of this chapter, a cleaner syntax would be to not use the all-encompassing short-hand version:

.arrow {
width: 0; height: 0;

border: 100px solid;
border-top-color: red;
border-right-color: green;
border-bottom-color: blue;
border-left-color: yellow;
}

We can even reduce this further, by grouping the color values.

.arrow {
width: 0; height: 0;

border: 100px solid;
border-color: red green blue yellow;
}

Interesting, right? It makes perfect sense, though, when we take a step back. That’s the only possible way that the colors could align, assuming a width and height of zero for the container. Now, what if we set all of the border-colors to transparent, except for the blue side?

.arrow {
width: 0; height: 0;

border: 100px solid;
border-bottom-color: blue;
}

Excellent! But it doesn’t seem too semantic to create an .arrow div, all for the purpose of adding an arrow to the page. Instead, pseudo elements can be used to apply the arrow after or before the associated element.

Creating a Speech Bubble
To create a 100% CSS speech bubble, we begin with the markup.

<div class="speech-bubble">Hi there!</div>

Next, some base styling should be applied.

.speech-bubble {
position: relative;
background-color: #292929;

width: 200px;
height: 150px;
line-height: 150px; /* vertically center */

color: white;
text-align: center;
}

The arrow will be applied using the after psuedo-element.

.speech-bubble:after {
content: '';
}

The :before and :after psuedo elements can be used to insert generated content either before or after an element’s content.

At this point, it’s simply a matter of reproducing the arrow, and positioning it in the proper location. We start by absolutely positioning the content, resetting the width and height, and applying the border colors.

.speech-bubble:after {
content: '';
position: absolute;

width: 0;
height: 0;

border: 10px solid;
border-color: red green blue yellow;
}

Because we know that we want the arrow to point downward, the image above demonstrates that all but the red (or top) border should either be omitted, or … [more]
HTML_&_CSS  basix  borders  css3  from google
april 2012
Experiment: CSV to MMD tables with color coding
This is a quick experiment with Google Docs, CSVs, MultiMarkdown tables and CSS3 selectors. It’s really hackish, but it’s a start. I wanted to take Google Docs spreadsheet output and turn it into a clean table with color coding and my own styling. Here’s what I’ve done so far (example output here):

Downloaded the iOS text editor spreadsheet as a CSV
Opened in Numbers for minor edits

Added a row of :-----: alignment syntax under first (header) row
Removed long text (HTML tables are a pain with wrapping and overflow)

Exported a new CSV with changes
Regex magic to convert CSV to MMD table (almost automatically, still 5 minutes of hand editing)
Applied basic CSS3 using inline <style> tags in the Markdown

turn empty cells dark grey
highlight any cell with content (minus first column) in green
cells with a full-width colspan (tailored to this table, 11 columns) turn lighter grey

Load it up in Marked and output the results with embedded style

Pretty pictures

The cleaned up spreadsheet in Numbers

The converted table in MultiMarkdown

(after using Fletcher’s table cleanup script)

The CSS:

table th {
white-space:nowrap
}
table td:nth-child(n+2) {
background: rgb(156, 230, 144);
font-weight:bold;
color:rgb(95, 191, 68);
vertical-align:middle;
}
table td:empty {
background: #777;
}
table td[colspan="11"] {
background: #aaa!important
}

The hack Ruby CSV→MMD code:

#!/usr/bin/ruby
 
input = STDIN.read
 
# find quoted cells and replace commas inside quotes with placeholder
input.gsub!(/"([^,].*?)"/m) { |quoted|
quoted.gsub(/[\n\r]*/,'').gsub(/,/,'zXzX')
}
# replace remaining commas with table divider (pipe)
input.gsub!(/,/,"| ")
# remove quotes from quoted cells
input.gsub!(/(\| |^)"(.*?)"/,"\\1\\2")
# replace placeholders with commas
input.gsub!(/zXzX/,",")
 
input.each { |l|
puts "| #{l.strip} |"
}

The script takes input on STDIN, so to use it you pipe the contents of the CSV to it with cat:

cat myfile.csv | ~/scripts/csv2mmd.rb > outputfile.md

The result:

You can view a truncated version of the output here. Please note that this comparison chart is not complete and does not include even half the apps in the spreadsheet. It’s just for testing!

You can also see the raw MMD code here. It’s straight from the conversion script but has been run through Fletcher Penney’s table cleanup script to make it readable.

Related posts:
An average morning
A Service for writing MultiMarkdown footnotes inline
Quick Tip: clean up your MultiMarkdown tables

Originally posted on BrettTerpstra.com at Experiment: CSV to MMD tables with color coding
Blog  Code  googledocs  multimarkdown  ruby  from google
march 2012
This is real. And, it’s still my favorite email I...
This is real.

And, it’s still my favorite email I received last year.
John_Siracusa  compression  from google
march 2012
[Review] Dammit · Der praktische Schnellstarter
Dass es nicht nur schlechte Nachrichten aus Berlin zu vermelden gibt, beweist die MOApp Software Manufactory.
Vor einigen Tagen flatterte mir per Twitter die Meldung über den Schirm, dass der von mir überaus geschätzte MoApp sein neues Kind Dammit in die  Welt entlassen hat.
Bei Dammit handelt es sich um einen äußerst praktischen und nützlichen Schnellstarter für Ordner und Dateien.
Die Oberfläche präsentiert sich wie von MoApp gewohnt minimalistisch. Alle wichtigen Funktionen und Einstellungen wirken durchdacht, aufgeräumt und lassen sich mit einem Klick erreichen.

Hauptmerkmale des Programms
Unlimitierte Anzahl an Stacks (Stapel)Wechsel zwischen Stacks per WischgesteSchnellzugriff auf Ordner/Datei via Taste 1-9Schutz vor versehentlichem Überschreiben von StapeleinträgenFarbliche Kennzeichnung von StapeleinträgenStart des Programms via globalem TastaturkürzelAusblenden des Dock-IconDie Darstellung der Ordner oder Dateien erfolgt wahlweise per Standardsymbol oder Vorschausymbol:
(Abbildung: links: Standardsymbol, rechts: Vorschausymbol)
Wichtige Einträge lassen sich farblich hervorheben und vor einem versehentlichen Ersetzen schützen.

Positiv ist mir aufgefallen, dass das Programm explizit nachfragt, ob es sich in die Login-Items eintragen darf. Einige Mitbewerber schlampen hier gewaltig und tragen sich ungefragt in die Starteinstellungen ein. (Eine Fakt, der mich als Anwender schier in den Wahnsinn treibt.)
Tipp Ich habe mittels BetterTouchTool eine Geste definiert, womit ich völlig tastaturfrei das Programm bedienen kann.

Kleiner Wermutstropfen
Das Programm ist derzeit nur in englischer Sprache verfügbar und einmal positionierte Ordner oder Dateien lassen sich nachträglich nicht innerhalb des Stacks (Stapel) verschieben.
Fazit
Nach einigen Tagen Testbetrieb hat sich „Dammit“ fest in meinen Workflow integriert und ich möchte den kleinen Hochstapler aus Berlin nicht mehr missen.
Für einen Preis von 2,39 Euro bekommt man ein solides und durchdachtes Programm mit gewohnt ausgezeichnetem Support. Von meiner Seite gibt es einen Kaufbefehl!
aptgetupdateDE Wertung: (8,5/10) Nur den Namen und das Programmsymbol sollte der Michael noch einmal erklären …
Dammit - The speed dial buttons to your files and folders. Hersteller: Michael GobelFreigabe: 4+ Preis: 2.39 € DownloadLINKShttp://myownapp.com/index.htmlhttp://cutedammitapp.com/https://twitter.com/#!/moapphttp://blog.boastr.net/?p=2761
© für aptgetupdateDE, 2012. | Permalink | 2 comments |
Die Autoren bei Twitter: Oliver, Björn, Stefan D, Stefan & aptgetupdateDE
Empfehlungen  Mac  Software  64Bit  App  Lion  Mac_App_Store  Mac_OS_X  MAS  OSX  Review  Schnellstarter  from google
march 2012
Missing Manual Collection
Missing Manual Collection
Ebooks | PDF | English | 168.mb | FSC & FS
Dreamweaver CS5.5: The Missing Manual
Publisher: O'Reilly Media 2011 | 1210 Pages | ISBN: 1449397972 | PDF
Creating a Website: The Missing Manual, 3rd Edition
O’R.illy Media | 2011 | ISBN: 144930172X | 582 pages | PDF
Photoshop CS5 - The Missing Manual
Publisher: O'REILLY | ISBN:978-1-4493-8168-4| edition 2010 | PDF | 816 pages
Dreamweaver CS5: The Missing Manual
Publisher: O'REILLY | ISBN: 978-1-4493-8181-3 | edition 2010 | PDF | 1104 pages
Netbooks: The Missing Manual
Publisher: O'REILLY | ISBN: 0596802234 | edition 2009 | PDF | 332 pages
Windows 7 The Missing Manual
Publisher: O'REILLY | ISBN:978-0-596-80639-2 | edition 2010 | PDF | 904 pages
CSS The Missing Manual Second Edition
Publisher: O'REILLY | ISBN:978-0-596-80244-8 | edition 2009 | PDF | 560 pages
Flash CS5: The Missing Manual
Publisher: O'REILLY | ISBN:978-1-4493-8025-0| edition 2010 | PDF | 784 pages
eBooks_&_eLearning_Lang:_English_Software_related_Beginners_Newbies_Windows_Software  from google
october 2011
Differential Analysis on Complex Manifolds By Jr., Raymond O. Wells (Repost)
Differential Analysis on Complex Manifolds By Jr., Raymond O. Wells (Repost)
Publisher: Springer | 2007-10-31 | ISBN: 0387738916 | Pages: 304 | PDF | 1.21 MB
In developing the tools necessary for the study of complex manifolds, this comprehensive, well-organized treatment presents in its opening chapters a detailed survey of recent progress in four areas: geometry (manifolds with vector bundles), algebraic topology, differential geometry, and partial differential equations.
eBooks_&_eLearning_Lang:_English_Skillful_/_Professionals_Academic_Science_Mathematics  from google
october 2011
Lectures on Riemann Surfaces [Repost]
Otto Forster - Lectures on Riemann Surfaces
Publisher: Sрringer | 1981-11-02 | ISBN: 3540906177, 0387906177 | PDF | 276 pages | 7.01 MB
eBooks_&_eLearning_Lang:_English_Science_Mathematics  from google
october 2011
Teach Yourself Visually WordPress (repost)
Teach Yourself Visually WordPress
304 pages | Visual; 1 edition (March 22, 2010) | ISBN-10: 047057092X | PDF | 82 Mb
Get your blog up and running with WordPress

Are you itching to share your thoughts with the world through blogging but aren't sure how? Teach Yourself VISUALLY WordPress introduces you to one of the most popular, easy-to-use blogging platforms: WordPress. This book's clear directions and visual approach helps you to quickly get started in WordPress and then take full advantage of all its features. Janet Majure, an experienced and popular WordPress user, demonstrates key points with examples from her blogs.
eBooks_&_eLearning_Development_/_Programming  from google
october 2011
Maß- und Wahrscheinlichkeitstheorie: Eine Einführung
Norbert Kusolitsch, "Maß- und Wahrscheinlichkeitstheorie: Eine Einführung "
Sp,.,.er | 2011 | ISBN: 3709106842 | 320 pages | PDF | 2,5 MB
eBooks_&_eLearning_Lang:_German_Science_Mathematics  from google
october 2011
Geometry V: Minimal Surfaces (Repost)
Geometry V: Minimal Surfaces
Publisher: Springer | pages: 281 | 1997 | ISBN: 3540605231 | PDF | 11,4 mb
eBooks_&_eLearning_Lang:_English_Science_Mathematics  from google
october 2011
Küchenmusik (6): Spaghetti „Tu vuò fà l’americano“
Im Biowein-Blog von Delinat ruft Weinblogger Matthias Metze zum Pasta mit Rotwein-Kochwettbewerb. Ich darf mal wieder nicht mitkochen, weil Matthias mich in die Versuchsküche verpflichtet hat, also verrate ich Ihnen mein Lieblingspastarezept eben einfach so:

Die Spaghetti Tu vuò fà l’americano aß ich zum ersten Mal in einem sehr einfachen italienischen Deli in New York. Der Name des Gerichts ist dem Titel eines alten Evergreens des italienischen Sängers Renato Carosone entliehen: in dem 1956 veröffentlichten Song machten sich Carosone und Liedtexter Nicola Salerno über den Lebensstil junger, italienischer Einwanderer lustig, die verzweifelt versuchten sich dem american way of live anzupassen- und doch immer Italiener blieben.



Ähnlich verhält es sich mit dieser Pasta, die mit den Beigaben “Sausage, Beans and Eggs” die Cowboy-Küche zitiert, ihre italienischen Wurzeln aber gottlob nicht verleugnen kann. Herzstück des mächtigen italo-amerikanischen Freundschaftsessens ist die schnelle Tomatensauce. Mit seinem herausforderndem Kalorienreichtum passt das Gericht sehr schön in die Herbst- und Winterküche, dementsprechend habe ich auf frische Tomaten verzichtet, neben Dosentomaten sorgen reichlich getrocknete Tomaten, Tomatensaft, Knoblauch und Kräuter für geschmackliche Tiefe.

Bei den Nudeln habe ich mich für die “Spaghettini Vesuvio” von Freund Toni entschieden, ihre rauhe Oberfläche wirkt mitreissend auf Saucen! Die Salsicce, kleine, scharfe Schweinswürste aus der Toskana, habe ich im italienischen Großmarkt gekauft. Schöne rohe Bratwürste jeder Art, gerne auch mit Fenchel oder aus Lammfleisch, passen aber ebenfalls sehr gut! Los gehts:

(für 4 Personen)
8 getrocknete Tomaten
1 Zwiebel
2 Knoblauchzehen
8 El Olivenöl
1 Rosmarinzweig
1 El brauner Zucker
1 El Tomatenmark
100 ml Gemüsebrühe
200 ml Tomatensaft
1 Dose Tomaten (425 g EW)
schwarzer Pfeffer aus der Mühle
Salz
1 Dose weiße Riesenbohnen (425 g EW)
400 g Spaghetti oder Spaghettini
8 kleine, grobe Bratwürste
4 Eier (M)
einige Salbeiblätter
frischer Parmesan

1. Getrocknete Tomaten fein würfeln, Zwiebel würfeln, Knoblauch in Scheiben schneiden. Alles in einem Topf in 4 El heißen Olivenöl glasig dünsten. Rosmarinzweig und Zucker zugeben und 2 Minuten schmmoren.

2. Tomatenmark unterrühren und mit Gemüsebrühe und Tomatensaft ablöschen. Dosentomaten zugeben. Mit schwarzem Pfeffer aus der Mühle und Salz würzen. Offen 6-8 Minuten dicklich einkochen.

3. Bohnen abgießen und in einem Sieb unter kaltem Wasser abspülen. Zur Sauce geben und zwei Minuten schmoren. Mit Salz, Pfeffer und Zucker final abschmecken.

4. Spaghetti nach Packunsganweisung garen. Bratwürste in einer Pfanne in 4 El Olivenöl rundum 8-10 Minuten braten, dann an den Pfannenrand schieben oder warm stellen und im Bratfett vier Spiegeleier braten. Einige Salbeiblätter ganz kurz im Bratfett mitbraten. Spiegeleier und Salbei mit Salz würzen.

5. Spaghetti abgießen und heiß mit der Tomatensauce vermengen. Mit Würsten, Spiegeleiern und Salbei auf vorgewärmten Tellern anrichten, großzügig mit frisch gehobeltem Parmesan bestreut sofort servieren.

Zum wärmenden Seelenessen habe ich den sizilianischen Biowein geöffnet, den mir Matthias geschickt hat, um mich zu bestechen für meine Jurytätigkeit zu begeistern, den 2010 Bonarossa Sicilia von Maggio Vini. Der junge Rote konnte es gut mit dem würzigen Essen aufnehmen und schmeckte auch später solo auf dem Sofa. Und dort dann, weils so schön war: Signor Carosone, nochmal auf die Bühne bitte!


Tweet
Alle_Beiträge  Küchenmusik  Paulsen_kocht  Delinat  Lieblingspasta  Tu_vuò_fà_l'americano  from google
september 2011
Scratching My Itch It’s the little things I’d miss...
Scratching My Itch

It’s the little things I’d miss in in TextMate. Like. Really, really little things. Like, say, one key to clean up the annoying cruft of a YouTube link. Boom.

Yes. I know. TMTOWTDI—and there’s certainly far MTO app with which to DI.

But, Lordy, how I’d miss the giant-ass pile of hacks that TextMate lets me apply towards my ongoing quest for sanity.
TextMate  from google
september 2011
Deja vu 4.0
Deja vu 4.0 | Mac os X | 5 MB
Déjà Vu offers an intuitive and reliable way to back up your data. It's a preference pane that lives in your System Preferences, and it allows you to schedule unattended backups of important folders, or even your entire system.
Software_Apple_Mac_OS_Utilities_Backup  from google
august 2011
Evolutionary Algorithms and Chaotic Systems (repost)
Ivan Zelinka, Sergej Celikovský, Hendrik Richter, Guanrong Chen, "Evolutionary Algorithms and Chaotic Systems"
Sp,..er | 2010 | ISBN: 3642107060 | 560 pages | PDF | 39,3 MB
eBooks_&_eLearning_Lang:_English_Development_/_Programming_Algorithms_and_Patterns_Science_Mathematics_General  from google
july 2011
An Introduction to Riemann Surfaces, Algebraic Curves and Moduli Spaces (repost)
Martin Schlichenmaier, "An Introduction to Riemann Surfaces, Algebraic Curves and Moduli Spaces"
Sp,..er | 2007 | ISBN: 3540711740 | 220 pages | PDF | 2 MB
eBooks_&_eLearning_Lang:_English_Science_Mathematics  from google
july 2011
Handbook of Set Theory (repost)
Matthew Foreman, Akihiro Kanamori, "Handbook of Set Theory"
Sp,..ger | 2009 | ISBN: 1402048432 | 2150 pages | PDF | 11,2 MB
eBooks_&_eLearning_Lang:_English_Science_Mathematics  from google
july 2011
Number Theory in Function Fields (repost)
Michael Rosen, "Number Theory in Function Fields"
Sp,..er | 2002 | ISBN: 0387953353 | 376 pages | PDF | 10 MB
eBooks_&_eLearning_Lang:_English_Science_Mathematics  from google
july 2011
Warner Bros - Yngwie Malmsteen
Warner Bros - Yngwie Malmsteen
DVD5 | 2004 (1991) | DVD video | MPEG2 | 720х480 | 29.97 fps | AC3, 256 kbps
Languages: English | Run Time: 45 minutes | 3.21 GB
eBooks_&_eLearning_Lang:_English_eLearning_[VIDEO]_Music_related  from google
july 2011
Take Control of Passwords in Mac OS X By Joe Kissell [repost]
Take Control of Passwords in Mac OS X By Joe Kissell
Publisher: TidBITS Publishing 2010 | 121 Pages | ISBN: 193367167X | PDF | 4 MB
Suffering from password overload or anxiety? Set your mind at ease with friendly assistance from Mac expert Joe Kissell! You’ll learn how to match your personality type and risk factors to a personal plan for choosing and managing your Mac, Web, and iPhone/iPad/iPod touch passwords efficiently and securely.
eBooks_&_eLearning_Lang:_English_Software_related_Mac_Software  from google
july 2011
Mhhhontags-Rezept: Bananen-Karamell-Dessert von Tim Mälzer
Es ist Montag Morgen und ich lächle, ohne aufhören zu können. Trotz der Tatsache, daß gerade Montag Morgen und nicht Freitag Nachmittag ist. Ich schwebe förmlich und das habe ich der ganz bezaubernden Audrey Tautou zu verdanken, die mich mit ihrer Rolle im Film “Die fabelhafte Welt der Amélie” immer wieder glücklich macht, gestern Abend also zum wiederholten Male. Der Film ist eine kleine romantische Schatzkiste voller märchenhafter Kleinigkeiten, die mir das Herz ganz warm machen. Ich muß oft lächeln, manchmal lachen und umso öfter ich den Film sehe, desto mehr Zaubereien scheint das Meisterwerk aus seiner Wundertüte heraus zu ziehen. Der Film ist ein kleiner Glücklichmacher und ich denke, wer es schafft die Welt ein kleines bisschen wie Amèlie zu sehen und sich über kleine Zauberhaftigkeiten des Lebens zu freuen, kommt gut durch den (manchmal ja weniger märchenhaften) Alltag.

Als ich folgendes Rezept in Tim Mälzers Sendung “Tim Mälzer kocht” sah, fühlte ich mich ein bisschen wie sie. Denn wie sie hatte ich sofort das Gefühl, dort eintauchen zu müssen um zu entdecken, wie wundervoll sich dieses Dessert aus Bananen, Joghurt, Keksen und Karamell wohl anfühlt. Amèlie, Mädchen mit dem Wasserglas, dieses Dessert im Wasserglas würde Dir nicht nur aus haptischen Gründen sehr gefallen. Es ist nicht nur kinderleicht zuzubereiten und wunderhübsch, es schmeckt auch traumhaft. Dir, mir und vielleicht auch vielen anderen Ohhh…Mhhh…-Lesern. Hier das Rezept:

Ninas Bananen-Karamell-Dessert von Tim Mälzer aus der Sendung “Tim Mälzer kocht!” 7.5.2011, 15:30 Uhr, ARD

Zutaten (für 4 Portionen):

1 Dose Kondensmilch, gezuckert (und die ist definitiv anders als übliche Kondensmilch, dickflüssiger und etwas dunkler. Also unbedingt diese kaufen, gibt es bspw. von Milchmädchen)*

2 Bananen

300g griechischer Joghurt oder anderer cremiger Naturjoghurt

100g Vollkornkekse (bspw. Hobbits), grob zerbröselt

1.) Kondensmilchdose vom Wickelpapier befreien und in einen (wenn möglich tiefen) Topf stellen. Komplett mit Wasser bedecken und zum Kochen bringen. 2 Stunden köcheln lassen, dabei darauf achten, daß die Dose immer mit ausreichend Wasser überdeckt ist. Dann aus dem Wasser holen (vorsichtig, heiß!), öffnen und die entstandene Karamell-Creme schnell durchrühren.

2.) Bananen in Scheiben schneiden und mit etwas Zitronensaft beträufeln.

3.) 4 schöne Gläser bereitstellen. Zuerst Keksbrösel, dann Bananenscheiben, darauf cremigen Joghurt und letztlich die Karamellcreme einfüllen.

*Wer keine Kondensmilch dieser Art findet oder ein schnelleres Dessert braucht, weil plötzlich die Schwiegereltern vor der Tür stehen: Ihr könnt auch die Karamellcreme von Bonne Maman verwenden, die ich statt Dulce de Leche auch in meinem Dulce de Leche Cheesecake-Rezept benutze.

Habt eine fabelhafte Woche, all the love in the universe,

Jeanny

 

 

 
Nachtisch  from google
june 2011
Todd VanDerWerff's Extraordinary Interview with Dan Harmon
Todd VanDerWerff over at the AV Club has just finished publishing his complete interview with Community creator and showrunner Dan Harmon. This interview is extraordinary for its length and insight. Harmon is an articulate man with big ideas about television, and is probably one of the most compelling and interesting people working in the medium today. He's also exceedingly good at speaking at length about his own show (as well he should be).

There are occasions when I question the value of what we do at slashfilm.com and in the entertainment press in general. Interviews like these reaffirm that we cultural commentators have the ability to produce and disseminate criticism and content that not only illuminates, but also in some way contributes to the conversation in a way that almsot becomes its own artistic work. This interview is the full realization of that potential, and it's certainly made me better understand what is possible in this game (in other words: it is time for me to start demanding 90-minute interviews!)

You can read the interview in four parts:

Part One

Part Two

Part Three

Part Four

It took me probably about an hour or two to read through the entire thing, so make sure you make the time.
entertainment  from google
june 2011
Reading time redux
A confession: I don’t really care that much about estimating the reading time of the stuff I write. I just thought it would be an interesting and easy little TextMate command, and it was. I spent more time looking up average reading speeds than writing the command or the post.

But after a link from Ben Brooks and interest from commenters Shawn Medero and Neil Gupta, I feel a compulsion to do the job right.

First, let’s redo the TextMate command (again). It takes very little effort to turn it into something that provides all the traditional wc information as well as the estimated reading time.

The command pipeline is now

bash:
wc -mwl | awk '{printf "Lines: %d\nWords: %d\nChars: %d\nTime: %d:%02d", $1, $2, $3, int($2/250), int($2%250/250*60)}'

and the output is a tooltip with four lines of info.

The changes to the awk command are pretty obvious. The m in the -mwl option string added to wc causes it to count characters rather than bytes, a more appropriate choice in a multibyte, Unicode world.

Now to extend this idea beyond TextMate. Following Shawn Medero’s suggestion, I created a Service in Automator that runs that same command and shows the output in an alert box.

Here’s the Service:

The shell script is that same pipeline. The AppleScript that displays the output is this:

on run {input, parameters}
activate
set msg to item 1 of input & return & item 2 of input & return & item 3 of input & return & item 4 of input
display alert "Selected text" message msg as informational
end run

The hardest part of writing this script was learning that the input comes in as a list of strings, one for each line of the shell script’s output, rather than a single string. Thus that long set msg line that puts all the lines back together again. A zipped version of the Service can be downloaded from here.

With this Service, which I’ve also bound to the ⌃⌥⌘R keystroke combination,1 I can get the same information in any application. I still think the TextMate command is valuable, though, because it doesn’t force me to select text before calling it.

Finally, here’s Neil Gupta’s Safari extension for GMail. It adds the reading time estimate just above the GMail input field. It updates automatically as you type your message.

Neil did all the work on this. You can see the details at his GitHub repository.

OK, I think I’m done with reading time

Having the same key combo hasn’t caused a problem. In TextMate, the TM command governs; everywhere else, the Service is called. ↩
Uncategorized  automator  mac  programming  services  text_editing  textmate  from google
june 2011
Reading time in TextMate
Several people in the Mac blogging world have mentioned how much they like iA Writer’s reading time estimate. I have no interest in iA Writer, but the reading time estimate sounds like a good idea. I decided to add a quick command to TextMate to put the reading time estimate in a popup tooltip.

There’s not much to this command. The basic idea is to count the words in the document and divide by the average reading speed. The word count is done by the venerable Unix utility wc, and the average reading speed is taken to be 250 words per minute, which is in the range of values I found in Wikipedia and other online sources. I don’t know, but I’d guess that iA Writer is using either that figure or a value close to it.

Here’s the command, as shown in TextMate’s Bundle Editor:

The pipeline in the Command(s) field is this:

wc | awk '{print int($2/250) ":" int($2%250/250*60)}'

wc | awk '{printf "%d:%02d", int($2/250), int($2%250/250*60)}'

The wc command returns the word count as the second item of output, which is why you see $2 in the awk command. The hardest part is the gymnastics in awk that turn decimal minutes into minutes and seconds.

If text is selected, this command shows the reading time for that text; otherwise it shows the reading time for the document as a whole. I have the Key Equivalent set to ⌃⌥⌘R, which is easy to type and easy to remember. I tend to use the Control, Option, and Command modifiers for all my commands because those keys are lined up next to one another and are easy to press simultaneously.

For what it’s worth, this post comes in at 1:16.

Update 6/4/11
Reader Shawn Medero in the comments pointed out an error in my pipeline, and I’ve made the correction in the text above (the screenshot still has the error). My mistake was not to ensure a leading zero after the colon if the number of seconds was less than 10. In the original, a reading time of 3 minutes, 7 seconds would be shown as 3:7 instead of 3:07.

This particular error in formatting minutes and seconds is one I’ve made so many times that I suspect there’s some defect in my brain that’s preventing me from ever learning from the mistake. Since the error manifests itself on the average once every six times the script is run, I usually catch it pretty quickly. This time Shawn caught it for me.

Shawn also describes how to use Automator to turn this into a system-wide service instead of a TextMate-specific command. I’m beginning to think the post would have been much better if he had written it instead of me.

Now it’s 2:05.

Update 6/5/11
See this post for an improved TextMate command, a Service, and a Safari extension.
Uncategorized  mac  programming  text_editing  textmate  from google
june 2011
Sparrow 1.2
Sparrow 1.2 | Mac Os X | Mac App Store | 18.8 MB
Sparrow is a minimalist mail application for Mac. It was designed to keep things simple and efficient. No fancy stuff here… just your mail and nothing else. Threads Quickly flick through threaded conversations on your mac like never before. Not so minimal… See your mails the way you want. Quickly glance at the preview. Read it in a new window or open the right pane to enjoy Sparrow’s full potential.
Software_Apple_Mac_OS_Internet_&_LAN_eMail_/_SMS_Related  from google
may 2011
TextExpander sparkline snippet
After seeing this Daring Fireball entry, this Kottke article, and then Alex Kerin’s original post, I had to write a script for generating Twitter sparklines via Unicode block characters.

Sparklines are an Edward Tufte idea, little inline graphs that let you visualize data within the text you’re reading. Twitter sparklines aren’t exactly true to Tufte’s vision, because they’re chunky and low resolution, but they are clever and fun.

You can see the Unicode block characters by opening the Character Viewer and clicking on the Geometrical Shapes category.

There are eight of them, running from Unicode character 2581 through 2588. Here’s what they look like inline: ▁▂▃▄▅▆▇█.

What I wanted to be able to do was take a space-separated set of numbers, like

15 21 30 23 47 41 49 33 41 41 62

(Chicago Bulls regular season victories since the 2000-2001 season), and quickly turn them into a sparkline: ▁▂▃▂▆▅▆▄▅▅█. My model was the character flipping TextExpander snippet I wrote a couple of years ago: a Python script that generates a sparkline from standard input driven by a TextExpander shell snippet that assumes the data are on the clipboard.

Here’s the Python script, called sparkline:

1: #!/usr/bin/python
2: # -*- coding: UTF-8 -*-
3:
4: from sys import stdin, stdout
5:
6: blocks = u'▁▂▃▄▅▆▇██'
7:
8: def spark(data):
9: line = ''
10: lo = float(min(data))
11: hi = float(max(data))
12: incr = (hi - lo)/8
13: for n in data:
14: line += blocks[int((float(n) - lo)/incr)]
15: return line
16:
17: stdout.write(spark([float(x) for x in stdin.read().split()]).encode('utf8'))

Line 17 splits the input on whitespace and turns it into a list of floating point numbers. It then feeds that list to the spark function, which divides the data range into eight equal divisions and assigns a block character to each data point according to the division it falls in.

The only tricky thing in sparkline is the ninth character in the blocks string defined in Line 6. Why is the tallest block repeated? Normally, the int function in Line 14 will return an integer in the range of 0 to 7, perfect as an index for an eight-character string. But when it’s calculating the value for the maximum data point it will return an 8. The repeated tall block is there to handle that special case.

The TextExpander snippet itself is this shell script,

#!/bin/bash
pbpaste | ~/bin/sparkline

which pipes the contents of the clipboard to sparkline (the ~/bin/ part says that I keep sparkline stored in the bin folder in my home folder). I gave the snippet the abbreviation ;spark.

The procedure for using the snippet is:

Get the data in space-separated form.
Select the data and copy it onto the clipboard.
Type ;spark to create the sparkline.

The sparkline script gives the lowest value the lowest bar and the highest value the highest bar. If you don’t want that, you can put dummy values at the end of the list and delete those bars after the sparkline is generated. For example, with the Bulls data I could have used

15 21 30 23 47 41 49 33 41 41 62 0 82

to provide the full range of possible victories. That would generate a sparkline of ▂▃▃▃▅▅▅▄▅▅▇▁█, for which the last two bars should be deleted to give ▂▃▃▃▅▅▅▄▅▅▇.

I suspect I won’t use this snippet any more often than I use the pǝddılɟ ɹǝʇɔɐɹɐɥɔ snippet, but it was fun to write as I watched the boring OK City Thunder blowout of the Memphis Grizzlies.

Update 5/12/11
Well, that was disappointing. The sparklines look fine in my text editor, fine here in the blog, fine in Dr. Twoot, but like shit on the Twitter website because some of the block characters don’t align vertically in some fonts.

Also, the half-height block character near the middle of the sparkline is narrower than all the others. I wonder if there’s some mixing of fonts going on.

That’s a screenshot, showing what it looks like on the Twitter website. Here’s what it looks like when I grab the tweet info directly and display it with the CSS I use here (which you won’t see if you’re reading the RSS feed):

Bulls regular season victories since 2000:▁▂▃▂▆▅▆▄▅▅█Twitter sparkline via a @TextExpander snippet: http://xrl.us/bkii52
11:07 PM Wed May 11, 2011
@drdrang Dr. Drang

Wish I could get it to look like that everywhere. Oh well. I did say I was unlikely to use this snippet very much.

Update 5/12/11 (again)
Unsurprisingly, others have seen the baseline problem, which may be confined to Macs. The solution is, to my mind, worse than the problem. Zach Seward of the Wall Street Journal, which has been using these sparklines recently, suggests just dropping the two problem blocks and going with six divisions of the data range. Dropping the tallest block doesn’t bother me, but dropping the middle one does; it makes the height distribution between adjacent blocks uneven (▁▂▃▅▆▇), which kind of defeats the purpose.

As for the baseline misalignment problem being exclusive to the Mac, I can only say that I’m seeing it on the Mac and I’m also not seeing it on the Mac—it depends on how I’m viewing the tweet. Based on my experiments with Dr.Twoot’s CSS file, I think it’s related to both the specified font and the fallback fonts. For example:

If I specify Arial or Helvetica, I see the problem. With Arial, both blocks are misaligned; with Helvetica only the tallest block is misaligned.
If I specify Times or Georgia or Lucida Grande, I don’t see the problem.
If I specify Lucida Grande and a fallback font of Sans-Serif, I see the problem, but only with the tallest block.
If I specify Lucida Grande and a fallback font of Serif, I don’t see the problem.

I’m sure there’s a good explanation for this, but I don’t know what it is.

Update 5/12/11 (again again)
John Gruber has now linked to a criticism of sparktweets by Than Tibbetts. Tibbets points out, as both Seward and I did, that sparktweets violate Tufte’s definition of sparklines as high resolution graphics. He also complains about these obvious deficiencies:

The data it purportedly represents is worthless, at best confusing. There’s no baseline, no scale, no way to tell the bounds of the upper or lower limits of the “chart.” The tallest block might as well be 873 percent.

Lighten up, Francis. This is Twitter we’re talking about, not an article for an ASA journal. Sparktweets are just a fun way to show data—data which may well be properly analyzed and presented in a linked article.

As for the problem with block characters that don’t line up properly, here are a few more observations:

All the blocks align properly in the official Twitter client for the Mac.
The tallest block doesn’t align in the official Twitter client for the iPhone.
The tallest block doesn’t align in Tweetbot for the iPhone.
The tallest and half-height blocks don’t align in Mobile Safari on the iPhone. I learned this when reading this post on my iPhone.

There’s always been something goofy with iOS’s fonts. Long ago, I pointed out that Courier on the iPhone wasn’t monospaced.
Uncategorized  mac  programming  python  sparklines  textexpander  from google
may 2011
Afrodubcore
Es ist Sonnabend, die Sonne scheint. Geht raus in den Garten, lacht, liebt, tanzt. Gerne auch hier zu: Arno – Dub VII.


(Direktlink, Direktdownload)
Kopfkinomusik  from google
may 2011
Gâteau victoire
Das Rezept habe ich beim Kuriositätenladen gefunden und sofort nachgebacken. Wie soll man auch einem Kuchen widerstehen, der quasi nur aus Schokolade besteht?

Beim Kuriosiätenladen finden sich schöne Making-of-Fotos, für die ich meist zu faul bin; wenn Sie also nicht wissen, was ich mit „wattig aufschlagen“ meine, dann bitte mal bei der Nachbarin gucken gehen.

Für eine 26-cm-Springform erstmal

340 g Schokolade, 70% in
180 ml Sahne schmelzen.

Jedenfalls hat Steph das so gemacht. Ich habe schon öfter seltsamen Klump produziert, wenn ich Schokolade in Sahne geschmolzen habe, daher habe ich die Schokolade brav im Wasserbad verflüssigt und gleichzeitig die Sahne sanft erhitzt, um dann beides in warmem Zustand zusammenzurühren. In die Schokosahnemasse kommt noch ein bisschen Stoff; das kann Cognac oder Port sein; ich habe es wie Steph gemacht und

50 ml Whisky dazugehauen.

Bei Isa hatte ich mal die äußerst schmackhafte Oban Double Matured Distiller’s Edition genossen, daher habe ich gestern beim Einkaufen zum 14 Jahre gereiften Oban Single Malt gegriffen, der fast genauso köstlich ist. Sehr weich und blumig, fast ein bisschen wie Honig. Also Honig, der einem nach zwei Gläsern die Lichter ausbläst. Aber eben Honig.

Während Schokolade und Sahne vor sich hinschmelzen, kann man prima

6 Eier mit
100 g braunem Zucker und
1 Prise Salz

wattig aufschlagen. Das heißt: Minimum fünf Minuten, gerne mehr, rumquirlen, damit aus der Zucker-Ei-Masse ungefähr die zehnfache Menge an Fluffigkeit entsteht.

Die beiden Massen vorsichtig mit einem Teigschaber vermengen, denn was nützt uns die schöne Fluffigkeit, wenn wir jetzt wieder alles mit dem Mixer entfluffen? Nur so lange vermischen, bis es halbwegs vermischt aussieht, lieber zu früh aufhören als zu spät. Den Teig in eine gebutterte Springform geben und im auf 180° vorgeheizten Backofen für circa 40 Minuten backen, bis der Kuchen gestockt ist. Außen sollte er trocken sein, innen darf er gerne noch ein bisschen rumklietschen.

Zum Servieren noch ne Runde Kakaopulver drüberstäuben und fertig. Wobei: Ein bisschen püriertes Obst dazu kann nicht schaden, denn der Kuchen ist sehr reichhaltig. (Teufelchen auf der Schulter: „Will ich Vitamine oder will ich Schokolade?“)
Weblog  from google
may 2011
Fuck You, Tiny Wings
A game review by Garrett Murray.

 ★ 
from google
april 2011
Text Expander 3.3 Update
There is a nice update out for TextExpander adding several useful features including AppleScript support and keypress macros (tab, return, esc, enter) can now be nested in fill-in snippets (excellent!). Check it out.
from google
april 2011
Schnäppchenjagd mit dem AmazonWatcher
Vor einiger Zeit habe ich hier einen Webdienst zum Tracken der Preise bei Amazon vorgestellt. Das Ganze funktioniert nach wie vor sehr gut. Einziger Nachteil: Man muss sich einen Account erstellen und auf der Webseite einloggen, wenn Veränderungen an der Beobachtungsstrategie gemacht werden sollen…

An dieser Stelle kommt der AmazonWatcher ins Spiel: Diese kleine kostenlose App für Windows und Mac OS X kommt ohne Accounterstellung aus und benötigt maximal eine E-Mail Adresse, um den Preisalarm weiterzuleiten.

Leider existiert keine richtige Suche der Produkte bei Amazon. Man benötigt entweder die ASIN oder die exakte Produkt URL, um Produkte in die Beobachtungsliste aufzunehmen. Darüber hinaus können bisher auch keine gebrauchten Produkte beobachtet werden.

Wer darüber aber hinweg sehen kann, ist mit dem AmazonWatcher bestens bedient. Ausprobieren lohnt sich sicher.

LINKS
http://www.awatcher.net/

Tweet



© joker für aptgetupdateDE, 2011. |
Permalink |
3 comments |
del.icio.us |
Die Autoren bei Twitter: Oliver, Björn, Stefan & aptgetupdateDE
Mac  Software  Windows  from google
march 2011
No-knead bread/Topfbrot
Das müssten ja alle Kochblogger_innen schon mal gemacht haben, daher fasse ich mich sehr kurz: Tolles Ding. Ich habe mich beim Rezept an die angenehme no-fuss-Methode von Isabo gehalten, die noch ein paar weiterführende Links zu weitaus fussigeren Zubereitungsarten parat hat.

In einer Schüssel

400 g Mehl, ich finde für den Anfang Type 550 ganz gut,
320 ml Wasser,
1 1/2 TL Salz,
1/2 TL Trockenhefe und wer mag (ich mag)
50 g Sesam

ganz kurz zusammenrühren. Nicht kneten, wie der Name schon sagt, einfach nur dafür sorgen, dass kein trockenes Mehl mehr zu sehen ist. Bei weniger fein gemahlenem Mehl bei Bedarf etwas mehr Wasser nehmen.

Die Schüssel fest abdecken, z.B. mit Folie oder einem Deckel, und einen knappen Tag irgendwo rumstehen lassen. Den blubberigen Teig nach ungefähr 20 Stunden auf die stark bemehlte Arbeitsfläche kippen oder schaben und zwei- bis viermal falten. Nicht kneten, wie der Name schon sagt, einfach den Teig ein paarmal übereinanderschlagen. Ich habe eine hübsche Kugel daraus geformt und diese in einen ofenfesten Topf mit Deckel umgesiedelt. Im auf 240° vorgeheizten Ofen 30 Minuten mit Deckel und danach 20 Minuten ohne backen.

Das köstlich duftende und lustig knackende Kleinod mindestens eine halbe Stunde auskühlen lassen. Währenddessen die Schüssel auswaschen und gleich das nächste Brot für morgen ansetzen.

Das Brot hat eine feste, aber nicht steinharte Kruste, ist innen leicht feucht, aber nicht klietschig, schmeckt genau richtig nach Sesam und ist überhaupt eins der besten Brote, das ich je gegessen habe. Deswegen futtere ich seit vorgestern auch exklusiv Sesambrot in allen Variationen. Mit Honig, mit Käse, mit Butter und Salz, mit Olivenöl, mit Aprikosenmarmelade. Ich brauche nie wieder was anderes. (Außer Schokolade.)

Edit: Ich backe seit Tagen jeden Abend ein Brot. Bisherige Versuche: Nur mit Mehl, Type 550, wird es fast baguetteartig. Die Mischung aus 550er und 1050er Weizenmehl schmeckt dunkler, fast schon wie Sauerteig (aber nur fast). Roggenmehl hat bei mir überhaupt nicht funktioniert. Und jetzt gerade geht eine Mischung aus Vollkornweizenmehl und 550er vor sich hin. Bisher habe ich Sesam- oder Pinienkerne in den Teig geworfen, und das schmeckt mir immer hervorragend.
Weblog  from google
february 2011
Knusprige Sesam-Tofu-Würfel
Ha! Ich kann mein vorgestriges Genöle über ein Rezept von Home-made Deliciousness wiedergutmachen, denn das zweite Rezept, das ich von Elisabeth nachgekocht habe, hat es geschafft, mein bisheriges Lieblingstofurezept ziemlich alt aussehen zu lassen. Bisher habe ich Tofu entweder angebraten oder in Sojasauce mariniert und dann angebraten. Aber diese Sesamsauce ist der Hammer und gehört ab jetzt ins Repertoire.

300 g festen Tofu in mundgerechte Würfel schneiden. Eine Auflaufform mit
Erdnussöl ausstreichen, den Tofu darin verteilen, ordentlich salzen und pfeffern und auf der mittleren Schiene im auf 240° vorgeheizten Backofen für gut zwölf Minuten backen. Wenden und nochmals für zwölf Minuten backen. (Ich habe noch ein bisschen Erdnussöl nachgekippt.)

Währenddessen eine Sauce herstellen aus

1 EL Tahin,
1 EL Sojasauce,
1 EL Sesamöl (ich habe wieder das dunkle, geschmacksintensive genommen),
1 EL Ahornsirup,
1 EL Apfelessig (bei mir Sherry-Essig),
2 TL geschälter Sesam,
1/2 TL Paprikapulver und
1 kleines Stück Ingwer, gerieben.

Den Tofu mit der Sauce vermischen und für weitere fünf Minuten auf der obersten Schiene backen. Nochmal wenden und fünf Minuten backen. Bei mir hat einmal Backen gereicht; ganz so dunkel wollte ich die kleinen Würfel nicht werden lassen.

Ich habe die knusprigen Racker über Naturreis gekippt, den ich mit einer roten Zwiebel, einer roten Paprika und ein paar Gurkenscheibchen aufgebuntet habe. Und wenn ich nach der Portion nicht schon satt gewesen wäre, hätte ich gleich noch ne Runde in den Ofen geschmissen, so lecker und süßherzhaft und knusprig ist der Tofu. Hallo, Fleischesser – AUSPROBIEREN!

(Die Sauce schmeckt aber garantiert auch mit Bio-Hühnchen.)
Weblog  from google
january 2011
Pastinakenbrot
Mal wieder ein Rezept aus River Cottage Everyday, in das ich viel zu selten gucke, denn es kommt meist mit recht wenigen ausgefallenen Zutaten aus und bietet trotzdem immer etwas für mich Neues. Heute: ein Brot aus Pastinaken. Unter anderem.

1 große Zwiebel, grob gehobelt, in
1 EL Raps- oder Sonnenblumenöl

bei mittlerer Hitze für circa zehn Minuten dünsten; die Zwiebeln sollen nur leicht Farbe annehmen. In einer Schüssel

175 g ggeschälte, geriebene Pastinaken (das waren bei mir zwei dicke) mit
50 g geriebenem Parmesan,
175 g Mehl, Type 405,
3 TL Backpulver,
1 TL Thymian,
1/2 TL Meersalz und
schwarzem Pfeffer vermischen. Die Zwiebeln dazugeben und dann
1 Ei, leicht verquirlt, und
2 EL Milch.

Ich habe das holzige Innere der Pastinaken entfernt, bevor ich sie gerieben habe. Im Buch steht nichts davon, muss also vielleicht nicht sein.

Die Masse in relativ kurzer Zeit zu einem weichen Teig verarbeiten. Nicht zu viel kneten; die Zutaten sollen sich nur gut verbinden. Notfalls noch einen weiteren Esslöffel Milch dazugeben (war bei mir nicht nötig). Zu einem kleinen Laib formen und im auf 180° vorgeheizten Ofen für 40 bis 45 Minuten backen. Die Kruste sollte sich leicht goldbraun gefärbt haben. Kurz abkühlen lassen und am besten ofenwarm servieren.

Das Brot ist recht klein, so dass es zwei sehr hungrige Menschen locker während einer Mahlzeit verspeisen können. Was ziemlich sicher passieren wird, denn gerade warm und mit etwas Butter und Salz ist es unwiderstehlich. Die Pastinaken schmecken ein bisschen süßlich, der Thymian gibt einige würzige Spitzen, und die feste Kruste würde ich heiraten. Gleich nochmal machen.
Weblog  from google
january 2011
Chocolate Peanut Butter Surprise Cookies
Vorweg: Ich habe das untenstehende Rezept gedrittelt, um die Kekse zuzubereiten. Vielleicht sind sie deshalb etwas trocken ausgefallen; ich werde das nochmal überprüfen. Geschmacklich sind sie aber top. Was soll bei Schokolade und Erdnussbutter auch schon schiefgehen.

In einer Schüssel

360 g Mehl, Type 405,
120 g ungesüßten Kakao,
1/2 TL Backpulver und
1/4 TL Salz

mischen. Beiseite stellen. In einer zweiten Schüssel

120 g Kristallzucker mit
120 g Rohrzucker und
120 g weicher Butter

zu einer cremigen Masse verschlagen (soweit das eben geht). Danach noch

60 g cremige Erdnussbutter und
1 Ei

dazugeben und weiterrühren. Wenn alles eine schöne Masse ist, die trockenen Zutaten dazugeben. Eigentlich sollte man jetzt einen halbwegs festen Teig in der Schüssel haben, bei mir waren es aber eher eine Menge brauner Krümel. Mit den Händen habe ich aber recht schnell einen Teig zurechtkneten können. Ein ordentlicher Schwung Vanillesirup hat das ganze noch teigiger und weniger trocken gemacht. Nun in einer letzten Schüssel

180 g Puderzucker mit weiteren
120 g cremiger Erdnussbutter

zu einer weichen Masse verschlagen. Auch hier: Krümel, allerdings in beige. Auch hier: Vanillesirup to the rescue.

Jetzt kommt das Zusammenbauen: einen Klecks vom Schokoteig nehmen, in der Hand flachpatschen und eine kleine Höhle formen. In diese Höhle (laut Rezept) einen Teelöffel der Erdnussbutterteigmasse geben. Bei mir war es eher ein Brocken, aber es hat trotzdem funktioniert. Den Schokoteig jetzt über der Erdnussfüllung zusammenschlagen und alles zu einer Kugel rollen. In Kristallzucker wälzen und auf ein mit Backpapier belegtes Blech legen. Ich habe aus der gedrittelten Teigmenge zwölf Kekse rausbekommen, aber meine ersten zwei, drei Kugeln waren von einer Größe, mit der eine vierköpfige Familie über den Hungerwinter 42/43 gekommen wäre. Zum Schluss war ich bei Kugeln mit circa drei Zentimetern Durchmesser, und davon hätte ich wahrscheinlich um die 16 rausgekriegt.

Die Kugeln mit dem Boden eines Glases leicht plattdrücken, so dass sie ungefähr einen Zentimeter dick sind. Dann im auf 190° vorgeheizten Backofen für sieben bis neun Minuten backen.
Weblog  from google
january 2011
Macarons
Sechs Versuche hat’s gekostet, bis die ersten Schalen heile und halbwegs hübsch vom Blech gekommen sind. Den Weg dahin zierten: hohle Schalen, Schalen, die ich weder vom Backpapier noch von der Silikonmatte gekriegt habe und Schalen ohne Füßchen. Außerdem schlechte Laune und ungefähr eine Million angeschaute YouTube-Lehrvideos und Blogeinträge, wie’s denn nun richtig geht. Der Konsens überall: haargenau abgemessene Zutaten. Das Rezept meiner ersten zwei Bleche gelungener Macarons: scheiß auf haargenau abgemessene Zutaten.

Ich habe mich an Aurélies Rezept gehalten und kann außerdem die Blogeinträge von Kochsamkeit und Letizias Gaumenfreuden empfehlen – danke an Spyri für den Hinweis auf Letizia –, und bei letzterer vor allem die Videos, von denen ich kein Wort verstanden, mir dafür aber die gezeigte Teigkonsistenz anscheinend hervorragend gemerkt habe.

Für zwei Bleche (oder wenn man, wie ich, die Kreise viel zu groß macht, für eins)

150 g Puderzucker mit
90 g gemahlenen Mandeln vermischen.

Das ganze nochmal im Blitzhacker zerkleinern, wobei ich nicht weiß, ob das wirklich was bringt. Dann die einzig nervige Sache beim Macarons-Zubereiten: den ganzen Klump durch ein engmaschiges Sieb streichen, damit ein wirklich feiner Puder entsteht. Das hat mich jedesmal ungefähr 20 Minuten Zeit und eine gefühlte Blase am Daumen gekostet, aber ich glaube inzwischen, dass dieser Vorgang das Geheimnis der kleinen Racker ist. Aber: Es bleibt eben doch ein bisschen gröberes Zeug zurück, weswegen die Mengenangaben ab hier für die Katz sind.

2 Eiweiß (72 g) zu sehr festem Eischnee schlagen und dabei
20 g Zucker und
1 Prise Salz einrieseln lassen.

Zum Eiweiß auch die Speisefarbe geben. Ich habe mir letzte Woche drei kleine Töpfchen mit chemischem Gelb, Rot und Grün gekauft, und die Verkäuferin meinte: „Eine Zahnstocherspitze.“ Habe ich Mittwoch bei den gelben Macarons gemacht (die ich nicht vom Blech bekommen habe, weswegen sie hier nicht zu sehen sind), und die waren auch nicht gelb, sondern mandelbeige. Eine Zahnstocherspitze hatte keine Wirkung. Bei den rosafarbenen habe ich dann eine Messerspitze genommen, und das hat genau gepasst. Bei den grünen hätte ich vielleicht erstmal mit einem Zahnstocher anfangen sollen, denn die sollten eigentlich ein zartes Lindgrün bekommen und nicht so aussehen, als hätte ich sie zum St. Patrick’s Day machen wollen.

Nun kommt angeblich das Zauberwerk: Vorsichtig den Eischnee unter den Mandelpuder heben, bis der Teig die Konsistenz von flüssiger Lava hat. Er soll fließen, aber nicht zu sehr. Da sich das eh keiner vorstellen kann, verweise ich nochmal auf die Videos bei Letizia und bei Aurélie. Auch hier galt für mich: Ich habe nicht das ganze Eiweiß auf einmal untergehoben, sondern nur so viel, bis mir die Konsistenz gefallen hat. Das war beide Male fast alles, aber eben nur fast.

Dann einen Spritzbeutel mit dem Teig befüllen und Tupfen mit circa zwei Zentimeter Durchmesser auf ein mit Backpapier belegtes Blech spritzen. Dabei nicht gleich alles volltupfen, sondern erstmal gucken, wie weit die Teigracker noch auseinanderfließen. Schön Abstand halten und möglichst eine gerade Anzahl produzieren. Das Blech vorsichtig auf der Tischkante abklopfen, damit sich Luftbläschen aus dem Teig lösen (hab ich gemacht, ich weiß aber nicht, ob das ein Erfolgsfaktor war). Dann alles 30 bis 45 Minuten ruhen lassen. Ich behaupte, je länger, desto besser.

Nach der Ruhezeit die Macarons bei Umluft (!) im auf 140° vorgeheizten Backofen für 12 bis 15 Minuten backen. Mein Herd ist lahmarschig, bei mir waren’s knapp 20 Minuten.

Mein einziger Versuch mit einer Silikonbackmatte war ein Desaster. Aber mit Backpapier geht’s: Nach dem Backen das Papier mit den Macarons vorsichtig vom Blech ziehen, dieses großzügig mit Wasser besprühen, die Macarons wieder aufs Blech ziehen, warten, bis die Feuchtigkeit ins Papier gezogen ist, und dann kann man die Schalen prima abziehen.

Die Geduldigen unter uns lassen die Schalen jetzt 48 Stunden lang luftdicht in einer Dose rumliegen und streichen dann erst die Füllung drauf. Die Ankes unter uns lassen die Schalen kurz abkühlen und machen dann den lustigen Schlotz für die Mitte.

Die rosafarbenen Macarons sind mit einer Nougatganache gefüllt. Dafür im Wasserbad

25 ml Sahne,
ca. 50 g Nougatmasse und
ca. 100 g Vollmilchkuvertüre

schmelzen, kurz fester werden lassen und dann auf eine Macaronhälfte spritzen oder streichen (ich streiche).

Die St.-Patrick’s-Day-Macarons hätte ich nach dem Speisefarbenmassaker gerne mit einer Whiskyganache gefüllt, aber dafür hätte ich Whisky im Haus haben müssen. Daher ist es die geplante Pistazienganache geworden, weswegen ich die Schalen ja auch grün haben wollte, total clever, ich weiß. Dazu

25 ml Sahne und
100 g weiße Kuvertüre im Wasserbad schmelzen und mit
fein gehackten Pistazien vermischen.

Ich neige noch dazu, zu große Macarons zu produzieren, aber ich glaube, ich habe den Dreh jetzt raus. Und: Es macht eine Menge Arbeit für eine relativ kleine Ausbeute, aber ich war ein bisschen stolz, als sie endlich funktioniert haben. Ich bin dann mal wieder in der Küche.
Weblog  from google
december 2010
Mixology: Tim Raue und Oliver Ebert im “Kreuzgespräch”
Brauche ich als interessierter Kulinariker ein Magazin für Barkultur? Unbedingt, behaupte ich mal, denn die Arbeit in Küche und Bar verlangt nach den gleichen Tugenden: Neugier, Fachkenntnis, Stil und Geschmack.

Über die Verwandtschaft der Genussdisziplinen Bartending und Kochen spreche ich in einer neuen Reihe für das Barmagazin Mixology mit prominenten Köchen und renommierten Bartendern. In Berlin habe ich mich mit Sternekoch Tim Raue (Restaurant Tim Raue) und Oliver Ebert (Becketts Kopf) getroffen.


Herausgekommen ist ein Gespräch über dreidimensionale Geschmackswelten, schwierige Gäste und anonyme Onlinekritik im Netz, dass jetzt in der aktuellen Ausgabe von Mixology nachzulesen ist. Die schönen Portaitfotos stammen von Birte Filmer.

Nach dem mehr als gelungenen Relaunch, liegt Mixology jetzt großformatig, opulent gestaltet und schwerwiegend in der Hand. Konnte man das Magazin bislang nur im Abo erwerben, gibt es das Heft ab jetzt auch an gut sortierten Kiosken, in Bahnhofsbuchhandlungen und am Flughafen.

In diesem Heft wird u.a. die Wiener Barszene und der Berliner Kreuzberg beleuchtet, Ingwerbier verkostet, die Geschichte des Eggnog erzählt, exotische Whisky getestet, das Likör-Unternehmen Behn portraitiert und „mobile Mixologen“ vorgestellt.

Master-Somelier Hendrik Thoma schreibt über „alte und neue Wein-Welt“-Missverständnisse und Manfred Klimek (alias Captaincork) berät beim Kauf gut gealterter, trinkreifer Weine. Herausgeber Helmut Adam erzählt von neuen und nicht ganz so neuen Kolamarken, Chefredakteur Markus Orschiedt schreibt über die „Roaring Twenties“ und es gibt ein Portrait des Musikers Serge Gainsbourg zu lesen. Dazu eine Menge Cocktailrezepte, Tipps und Tricks. Für interessierte KulinarikerInnen sehr zu empfehlen.

Links:

Mixology Magazin
Restaurant Tim Raue
Becketts Kopf
Alle_Beiträge  Allgemein  Foodmagazine  Getränke  Interviews  Barmagazin  Becketts_Kopf  Mixology  Oliver_Ebert  Restaurant_Tim_Raue  Tim_Raue  from google
december 2010
Lichess – das kostenlose Online Schach
Unter http://lichess.org/ findet man eine sehr gut gemachte Online-Schach Applikation und eine noch sehr junge Community. Man kann entweder vollkommen anonym spielen und sofort loslegen, man kann sich aber auch registrieren. Eine Registrierung hat den Vorteil, das sämtliche Partien aufgezeichnet und so später noch analysiert werden können. Probiert es mal aus, sehr schlich und übersichtlich, aber toll umgesetzt.

Lichess ist OpenSource (github) und mittels PHP 5.3, Symfony2 und jQuery UI geschrieben. Das Spiel lässt sich auch übrigens sehr gut per iPad und Touchbedienung spielen. Ich bin zwar nicht der Schachguru, aber vielleicht findet sich ja mal Zeit für ein kleines Match.

Linkshttp://lichess.org/https://github.com/ornicar/lichess

Tweet



© slith76 für aptgetupdateDE, 2010. |
Permalink |
One comment |
del.icio.us |
Die Autoren bei Twitter: Oliver, Björn, Stefan & aptgetupdateDE
Spiele  Web  from google
november 2010
Sabbererregende Ladengestaltung: J.Crew Upper East Side Mens Shop
Manchmal gibt es diese Läden, die alleine durch ihre Aufmachung, ihre Innenarchitektur und sympathisches Personal dazu führen, dass man alle vorhandenen Objekte einkaufen und verwerten möchte, ohne sich eines davon im Detail angesehen zu haben. Das gilt für den J.Crew Store (s. Video oben) mit vollster Sicherheit. Leider können die abgebildeten Kleidungsstücke nicht in Deutschland gekauft werden, außer man ist bereit ordentlich aufs Porto draufzulegen, aber vielleicht kommt ja mal eines Tages in Berlin. Oder München. Oder Hamburg. Oder wo man eben so einen Laden dann aufmacht in Deutschland. So lange bleibt nur der Onlinestore und die Frage: Welche Läden in Deutschland rufen bei euch einen solchen Sabbereffekt hervor wie J.Crew?
Kleidung  Style  from google
november 2010
Detroit Techno und andere Poster
Auf Edits by Edit kann man wunderbar minimalistische Poster aller möglichen Musikstile von unterschiedlichsten Designern in der Größe DIN A1 erstehen. Mein Favorit wäre, ganz klar, dieses Detroit Techno Poster von Toko. Aber auch Metal und Electro sind nicht ohne.

(via this isn’t happiness)
Visuelles  from google
november 2010
Cocktailian – der neue Barbuch Klassiker ist da
Erst durfte ich nicht, dann hatte ich erstmal kein Geld dafür. Als ich Ende der Achtziger Jahre erstmals hätte eine Bar besuchen können, hatte ich keine Lust mehr. Bars waren damals Grabeskammern für spinnenbewebte Herrenclubs oder farbenfrohe Rummelbuden der Popper-Generation mit Schmalzlocken-Schnitt (im Kino lief Cocktail mit Tom Cruise). Der Weg zur Bar-Kultur sollte ein langer Weg für mich werden.

In den Neunziger Jahren begann, ausgehend von London und New York eine Bar-Renaissance, in Deutschland gab Charles Schumann der Bar ihre Würde wieder. Ich süffelte mich durch die Weinkeller der Welt und sah erst zur Jahrtausendwende das Licht dessen, was man mit Fug und Recht eine Bar-Revolution nennen darf.

Erstmals erfuhr ich, dass Kantenlänge, Beschaffenheit und Kerntemperatur eines Eiswürfels essentiell für das Gelingen eines Cocktails sind. Dass es Bars gibt, die mehrere Eiswürfel-Arten, mehr als eine Gin-Sorte und mehr als ein Dutzend verschiedene Bitters im Programm haben. Und alle Säfte saisonal frisch gepresst. Dafür keine Schirmchen. Und keine Cocktailkirschen. Kein Cuba libre. Dafür Drinks des Fin de siècle in Vollendung. Ich hörte von jungen Bartendern die mit Kräutern und Gewürzen experimentierten, in antiquarischen Bar-Büchern stöberten, Primärliteratur studierten- zum Wohle des Gastes.

Das Stückchen Besessenheit und Wahnsinn das da mitschwingt, kam mir bekannt vor. Aus der Küche. Es war diese offensichtliche Verwandtschaft zwischen den Genussdisziplinen Bartending und Kochen, die mich bis heute begeistert. Ich begriff erstmals, welch hohes kulinarisches Verständnis die Zubereitung eines Drinks erfordert. Begriffe wie Liquid Kitchen und Cuisine Style benennen wichtige Aspekte der modernen Barkultur. Bars sind heute unprätentiöse aber elegante Genussorte, hier legt man Wert auf Stil und Können-ohne eine große Nummer draus zu machen.

Die neue Bartender-Generation ist vernetzt und informiert. In Deutschland haben insbesondere die Macher von Mixology aus Berlin die Bar-Renaissance vorangetrieben und mitgestaltet. Seit acht Jahren gibt es das gleichnamige Bar-Magazin, das mit der aktuellen Ausgabe erstmals an den Kiosk geht. Die Bartender und Herausgeber Helmut Adam, Jens Hasenbein, Bastian Heuser und das Mixology-Redaktionsteam sind zudem Veranstalter des jährlichen Bar Convent Berlin (BCB), dem Symposium der Deutschen Barindustrie. Dort wurde Anfang der Woche erstmals Cocktailian-Das Handbuch der Bar vorgestellt, das jetzt im Tre Torri Verlag erschienen ist.

Das Buch erinnert nicht von ungefähr an eine Bibel, schwer, schwarz, Silberschnitt und schwarzes Buchband. Der Cocktailian hat auch sonst das Zeug zum Klassiker. Adam, Hasenbein, Heuser und die zahlreichen MitautorInnen liefern nicht weniger als DAS Buch zum neuen Bar-(Selbst-)Verständnis.

Die Autoren wissen, dass Verständnis mit Geschichte anfängt, folgerichtig beginnt auch Cocktailian mit einer rasanten Zeitreise durch die Geschichte der Mischgetränke, von den arabischen Alchemisten um 776 v. Ch. bis zu den Mixolologen des 21. Jarhunderts. Es folgen Gläserkunde, Barwerkzeug- und Technikkunde, eine interessante Anleitung zur Verkostung von Spirituosen und ausführliche Warenkunden. Die Idee des Foodpairing in der Bar ist faszinierend und wird erklärt, es gibt viele Rezepte für „Hausgemachtes“ wie Liköre, Espuma oder Sirup.

Herzstück des Buches ist natürlich die Sammlung der 230 Cocktailrezepte. Hier sind die Autoren einen ganz neuen Weg gegangen, haben die DNA der 13 populärsten Getränkekategorien analysiert und jeweils anhand eines Key-Cocktails verdeutlicht. Wer das System einmal verinnerlicht hat, ist in der Lage allein durch Variation von Basisspirituose, Zuckerquelle oder Zitrussaft selbstständig hunderte neuer Cocktails zu kreieren. Gigantisch.

Ganz persönlich haben mir die vielen, locker eingestreuten, klugen Essays zu Themen der Barkultur besonders gefallen, interessante, gut geschriebene Aufsätze über beispielsweise Prohibition, Barkultur der Achtziger, Tiki Ära, Urväter der Bartender. Jörg Meyers Ode an das Eis liest sich da so vergnüglich wie sein Blog, überhaupt sind die Gastautoren vom Feinsten! Der große Franz Brandl beispielsweise, Urgestein der deutschen Barszene und selbst Autor einiger Barbuch-Klassiker oder der Cocktail-Historiker und Literaturpofessor David Wondrich, um stellvertretend nur zwei Namen zu nennen. Sie machen den Cocktailian dann auch zum unterhaltsamen und bereichernden Lesebuch. Ganz ohne Fotos kommt der Cocktailian aus und das ist gut so, es unterstreicht die Zeitlosigkeit, die ein neuer Klassiker braucht, mit elegant unaufdringlicher Graphik und feinen Illustrationen.

Der Cocktailian ist wie die neue Barkultur selbst: elegant, aufgeräumt, selbstbewusst und konservativ nur im besten, im bewahrenden Sinne, dabei immer neugierig und kreativ.
Ein großes Buch.

Online im Buch blättern:

issuu.com/tretorri/docs/cocktailian

Interview mit den Autoren

„Cocktailian – Das Handbuch der Bar“
Tre Torri Verlag, Wiesbaden
ISBN 978-3-941641-41-9
520 Seiten
Preis: 39,90 Euro
Erhältlich ab 4. Oktober 2010 üerall wo es Bücher gibt und im Shop auf www.cocktailian.de

Filed under: Alle Beiträge, Extraklasse Kochbücher, Getränke
Alle_Beiträge  Extraklasse_Kochbücher  Getränke  Cocktailian  Cocktailain_Das_Handbuch_der_Bar  Mixology  Helmut_Adam  Jens_Hasenbein  Bastian_Heuser  BCB  Bar_Convent_Berlin  Tre_Torri  from google
october 2010
100/2010
Es gibt keine Regeln für Musik, die einen durch die ganz besonderen Phasen und Momenten begleitet. Das ist unter anderem verdammt schlechte Musik, aber an die erinnert man sich dann eben zwanzig Jahre später noch. Hoffentlich. Und ich gebe es auf: es wird niemals einen Bob Dylan mehr geben, und ich habe es satt, mir den Sommersoundtrack aus der Vergangenheit auszuleihen. Es geht weiter. Hier sind meine Erinnerungen an das Jahr, und speziell den Sommer 2010, welches sich für mich zumindest musikalisch dem Ende neigt. Auf einer Reise wird man wahrscheinlich keinen großen Fokus auf Neuerscheinungen legen, und ich könnte es nicht ertragen, ohne eine Top 100 aus dem Jahr zu gehen. Also gibts die halt Ende September. So wie Lebkuchenherzen. Müsst ihr mit klar kommen.

100 – 90
100/Booka Shade/Teenager Spaceman/YouTube
99/Darwin Deez/Up In The Clouds/YouTube
98/Elite Gymnastics/If U Love Me/Download
97/Diggy Simmons/Made You Look/Vimeo
96/Gucci Mane/Break Yourself (Diplo Remix)/YouTube
95/Grum/Can’t Shake This Feeling/YouTube
94/Home Video/I Can Make You Feel It/YouTube/Download
93/Intuition/Buzzkill ft. Slug/YouTube
92/Kisses/Bermuda/YouTube
91/Juelz Santana/Back To The Crib (ft. Chris Brown)/Vimeo



And I’m sorry I let you down
Down to the ground
But who cares now?

90/Jonsi/Go Do

89 – 80
89/Big Boi/Fo Yo Sorrows/Vimeo
88/Lady Gaga/Alejandro/YouTube
87/Mecanico/Fanatic/Download
86/M.I.A./XXXO (Jay-Z Remix)/YouTube
85/King Midas/Cy (Punani SS Remix)/YouTube
84/LCD Soundsystem /I Can Change/YouTube
83/Rich Hill/Cookies & Apple Juice/Vimeo
82/Those Chosen/Soundclash/Vimeo
81/PURPL PoP/The Way/YouTube

And what you’re asking me now, disastrous now
Hoping and hoping and hoping
The feeling goes away

80/Wiley/Never Be Your Woman ft. Emeli Sande (Shy FX Remix)

79-70
79/The Golden Filter/Hide Me/YouTube/Download
78/Rebecca & Fiona/Luminary Ones/Vimeo
77/Jason Derulo/Whatcha Say/Vimeo
76/Machine Gun Kelly/Chip Off The Block/YouTube
75/jj/My Life, My Swag/YouTube
74/Miami Horror/Moon Theory/Vimeo
73/E-40/Lightweight Jammin’ ft. Clyde Carson & Husalah/Vimeo
72/A-Trak x Drake x Birdman/Loonies To Blow/YouTube
71/The Tallest Man On Earth/King Of Spain/YouTube

I’ll disappear in some flamenco
Perhaps I’ll reach the other side.
Why are you stamping my illusion?
Just cause I stole some eagle’s wings
Because you named me as your lover
Well, I thought I could be anything.

70/Aloe Blacc/I Need A Dollar/Download

69 – 60
69/Rusko/Hold On
68/Kanye West/Power ft. Jay-Z & Swizz Beatz/Download
67/Big Nuz/Umlilo ft. DJ Tira/YouTube
66/Young Buck/Problems/YouTube
65/Kooley High/Ya Time’s Up/Download/Vimeo
64/Kyle Lucas/Red Button (Simon Illa Remix)/Download
63/Magnet Man/Getting Nowhere ft. John Legend/Soundcloud
62/Alphabeat/Hole In My Heart (Sound Of Arrows Remix)/YouTube/Download
61/Blaqstarr/Oh My Darling/YouTube

I just needed time alone, with my own thoughts
Got treasures in my mind, but couldn’t open up my own vault
My childlike creativity, purity and honesty
Is honestly being prodded by these grown thoughts

60/Delphic/Doubt

59 – 50
59/Lupe Fiasco/I’m Beaming/YouTube
58/Yeasayer/ONE/Vimeo
57/Robyn/None Of Dem ft. Röyksopp/YouTube/Download
56/Jonsi/Hengilas/YouTube
55/Bombay Bicycle Club/Always Like This/YouTube
54/Flight Facilities/Crave You (ft. Giselle)/Vimeo
53/Yelawolf/Pop The Trunk/Vimeo
52/Electric President/Safe and Sound/Download
51/Hermanos Inglesos/Wanderland ft. MeMe/Vimeo

50/Drake/Over

I know way too many people here that I didn’t know last year, who the fuck are y’all?

49/Die Antwoord/Beat Boy

Im stroboskoptakt hämmernde Beats aus der White Trash Südafrika Satirekultur, die uns völlig atemlos und trotzdem lachend (und auch entsetzt zurück lässt).

48/Mala/Dafne Listens To The Love/Download
Sara listens to the love. Kein Stream zu finden, nirgendswo, es tut mir leid. Dubsteppig.

47/k-os/Zambony

Ein Hauch von e p i s c h über einen Beat, der für 2010 eine Ansage macht: Hip Hop ist wieder da. Diesmal richtig, mit Motivation. Ich war auch (endlich) wieder da, aufgestanden aus dem Reich der Toten, und nun eine Choreografie einstudierend…

46/Breakbot/Baby I’m Yours (ft. Irfane)

Ich wollte tanzen, zu Funk und House und Disco Soul und Electro. Auf dem Weg zum Friseur bewegte ich mich plötzlich zum Takt und sah aus, als käme ich frisch aus der Anstalt. Meine Beine machten was sie wollten. Ich konnte trotz Kälte und Regen nur über mich selbst lachen. Definitiv gestört, aber hauptsache gesund.

45/The Naked And The Famous/Young Blood

Generationskultur, vielleicht ist es das schon, dieses MGMT-Electric-Feel Sommer Gefühl, das auch im Jahre 2010 an die German Wasted Youth näher gebracht werden möchte… vielleicht bilde ich mir aber auch nur ein, dass es in irgendeiner Form Freiheit und Konfetti versprüht, dieses Young Blood. Vielleicht ist das nur Projektion auf die letzten wunderschönen Spätsommerwochen, an denen ich mich die nächsten Jährchen noch laben werde.

44/Travis Porter/Sunshine On Me

Lass Sonne krachen.

43/Pacific Division/Shut Up/Download

“I’m usually lounging/puffing on some ganja/bumping some Sinatra/cutting up some pasta/smacking on the table with my elbows eating lobster/knocking over the collar case I’m sloppy with the saucer, man”

42/Two Door Cinema Club/Something Good Can Work

Frisches Gras, Neuanfänge, Abenteuerlust, positive Einstellung, gesundes Sozialverhalten.

41/Mike Posner/Smoke & Drive ft. Big Sean, Donnis & Jackie Chain

Mauwi Wauwi.

40/Gayngs/Faded High/Download

Chillwave-Indie-Hybrid. Resteverwertung aus dem Jahre 2009 mit dem coolsten Namen – GAYNGS, das war mein Name, meine fiktive Band, zu spät. Klingt genauso verwaschen, wie es klingen soll, so verwaschen wie die Momente die irgendwie im ganzen Hin und Her untergehen, wie die Erinnerung an Menschen, die man unbewusst vernachlässigt…

39/Jamie Woon/Wayfaring Stranger (Burial Remix)

Eine Drogenspritze zum Einschlafen, jede Nacht der Schlaflosigkeit, “mach Burial an”, und Burial hat es wieder gut gemacht.

38/Jimmy Edgar/Hot Raw Sex (ft. Theophilius London)/Download

Die Besonderheit liegt in den Zeitspannen, die einem Song zugeordnet werden. Ich muss bei diesem an Moskitos denken, an Bootsfahrten, ans Runterkommen, an den Fashion High Mile Club, an das Tanzen, aber an nichts besonderes sonst mehr, keine Phase, nur ein ganz bestimmter und nichtiger Augenblick, für immer an eine Melodie gekettet, die jeder andere vielleicht maximal bescheiden fände.

37/PRGz/Stop ‘n Go

Diplos Erbe ist mein Vergnügen, auf Lebzeiten eine Diplo-Garantie abgeschlossen, das ist mein Mann, er weiß was ich brauche; er brachte mir PRGz, eine Hymne meines neuen Gangster-Daseins war geboren, S nur noch available mit dicker Kappe und Hoodie und Baseballschläger.

36/Ninjasonik/Bars

“I love artwork/especially/when it’s on me” – Ich will mehr Bass.

35/Angus and Julia Stone/Big Jet Plane

Eingängig, Amsterdam. Flugzeuge, Nostalgie, Melancholie, Schnee der Schmilzt, es ist kein besonders schwerwiegender Zeitraum, eher sogar leer und verlassen und einsam, aber einer, in der die Karten neu gemischt werden. Anfang des Jahres, mit einer heimlichen Liebe und öffentlichen Konsequenzen und neuem Mut und verrückter Entscheidungen.

34/Dirty Doering/I Would

Kein Meisterwerk, sicherlich nicht. Aber er ist Knotenpunkt für das letzte Jahr. Auf unserer Nervenautobahn wurden wir über diesen Song verbunden, kleine, elektrische Blitze schlagen auf, unsere Beine bewegen sich automatisch zum Tanzen, wir wissen Bescheid, das ist Berlin, alles in diesem Song versteckt, ganz hinten in der Ecke. Ein Augenblick voller Fernsehtürme, Brandeburger Tore, Kotti D’Azur, Party, Chillen, Malen, Markieren.

33/Mount Kimbie/Carbonated

Ich weiß nicht, was es ist.

32/Foster The People/Pumped Up Kicks

“all the other kids with the pumped up kicks better run, better run/outrun my gun, all the other kids with the pumped up kicks better run, better run/faster than my bullet” Ein Amoklauf in der Hülle eines freudigen Sommerliedes, ich bin völlig entsetzt und doch begeistert gewesen, ja, ja, so ist es, ein Amoklauf, der sich versteckt.

31/Restless People/Days Of Our Lives

Konfetti.

30/Marteria/Verstrahlt

Die vielfältigen Interpretationsmöglichkeiten, die Ambivalenz, und das Gesicht, dass du zeigst, wenn du mir erzählst, woran du glaubst: welche ist deine Wahrheit? Die Liebe, oder die Droge? Was verstrahlt dich mehr?

29/Hurts/Wonderful Life

Das Revival der 90er, verpackt in Eleganz und Sophistication. Keine dicken Statements, ein Hybrid, so wie wir es sind, the best of everything.

28/Grum/Through The Night

Miami Vice, Rubicon 2010, Flamingo-Hawaii Hemden, Neon-Grüne Streifen an den Schuhen, auf dem Fahrrad durch die Nacht, Lichter, kurz anhalten um zu fotografieren, kalter, angenehmer Wind, Einsamkeit, jemand, der dir die Hand bei all dem hält.

27/The Girls Can Hear Us/Wrong For You

Eine Geschichte von Beziehungen, die schief gehen. So ehrlich und traurig und bedrückend und vor allem auch die Begründung für meine eigene Zurückhaltung, diese Angst, nicht gut zu sein für jemanden, oder diese Angst, sich schlecht zu machen für jemanden.

“Look good long sleeves cover the cuts up/and I’m equially fucked up/I just don’t show it the same way”

26/William Fitzsimmons/So This Is Goodbye (Pink Ganter Remix)

“and I miss you like you’re dead/but I never got to grieve you”. zwischen heimweh, fernweh, tränen der einsamkeit und der verzweiflung, klingt irgendwo aus dem remix auch soetwas wie Zuversicht, es ist keine Resignation, es ist Feststellung. Es geht runter und wieder hoch, ganz bestimmt.

25/The National/Lemonworld

Zweite Jugend. Aufgestaute Wut, Weltschmerz, irgendwo verbarrikadiert zusammen mit der Unvernunft der Pubertät ganz hinten rechts im Eck meines Gedankenbreis, und Lemonworld wühlt es auf. Eines Tages wird es das nicht mehr können, davor habe ich … [more]
Ruhestörung  2010  charts  musik  from google
september 2010
Pastinakenrisotto mit Thymianpesto
Das erste Rezept aus einem neuen Kochbuch: Die neue vegetarische Küche von Maria Elia. Ganz kurz: sehr, sehr lecker. Leider weniger kurz: die Abwaschdauer. Ich glaube, ich habe die Hälfte unseres Küchenschrankinhalts zu irgendeiner Zeit auf dem Herd, neben dem Herd oder in der Spüle gehabt. Egal: sehr, sehr lecker.

Das Pastinakenrisotto besteht aus vier Komponenten: einer Pastinakenbrühe, einem Pastinakenpüree, angebratenen Pastinakenstückchen und eben den üblichen Risottozutaten wie Reis und Parmesan. Und noch mehr Zeug. Erstmal die Brühe machen.

Für vier Personen.

5 mittel- bis große Pastinaken schälen, vierteln und vom holzigen Inneren befreien. Beiseite legen.

1 Zwiebel, in feine Ringe geschnitten, in
1 EL Olivenöl anbraten. Dazu
die Schale und das Innere der Pastinaken geben, kurz anbraten und mit
2 l Wasser auffüllen. Die Brühe aufkochen und danach 30 Minuten bei geschlossenem Deckel köcheln lassen. Durch ein Sieb seihen, die Gemüsereste entsorgen, die Brühe warmhalten.

2 der vorhin geschälten Pastinaken in kleine Stücke schneiden. In
50 g Butter anbraten und
1 Knoblauchzehe, in feine Scheiben geschnitten, bei mittlerer Hitze mitbraten lassen. Mit
300 ml Milch auffüllen und mit
Meersalz und
schwarzem Pfeffer würzen. Alles 12 Minuten köcheln lassen. Dann durch ein Sieb geben, den Milchsud dabei auffangen und die Pastinaken- und Knoblauchstücke pürieren. Notfalls etwas Milchsud dazugeben, um ein cremiges Püree herzustellen. (Mein Zauberstab hat vor der winzigen Menge Püree kapituliert, da ich das Rezept nur für zwei Personen zubereitet habe. Ich habe die Stückchen per Kartoffelstampfer zu Püree verarbeitet.)

Die restlichen 3 Pastinaken in kleine Stücke schneiden und in
25 g Butter bei mittlerer Hitze bräunen und mit Meersalz und Pfeffer würzen. Vom Herd nehmen.

Jetzt endlich zum Risotto:

4 Schalotten, fein gewürfelt, in
2 EL Olivenöl anbraten.
350 g Risottoreis kurz mitbraten, dann nach und nach mit der Pastinakenbrühe auffüllen. Ihr kennt ja den Risottospaß: eine Kelle Brühe, bis die Flüssigkeit vom Reis aufgesorgen wurde, dann die nächste Kelle usw. Das ganze dauert ungefähr 15 bis 20 Minuten. Zum Risotto

den Saft einer Zitrone und
4 EL Mascarpone (bei mir war’s saure Sahne)

geben, den Topf vom Herd ziehen und zusätzlich
50 g frisch geriebenen Parmesan einrühren. Dazu das Pastinakenpüree und die angebratenen Pastinakenstücke. Theoretisch fertig – aber das beste kommt noch: das Thymianpesto, das man prima zubereiten kann, während Brühe und Püree vor sich hinköcheln.

1 kleines Bund Thymian, abgezupft,
1/2 kleines Bund Basilikum,
50 g frisch geriebenen Parmesan,
50 g angeröstete Pinienkerne,
2 Knoblauchzehen, fein gehackt,
1 TL Meersalz und
den Saft von 1/2 Zitrone

in einem Mixer mischen. Nach und nach
75 ml Olivenöl dazugeben, bis eine geschmeidige Paste entsteht.

Das Risotto alleine schmeckt sehr fein, milchig und buttrig, und bekommt durch die angebratenen Stücke einen schönen Biss. Aber das Pesto verleiht dem Gericht einen kleinen Extrakick: die nussigen Pinienkerne, das frische Basilikum mit der Zitrone und natürlich über allem der Hauch von Parmesan – großartig. Wenn das Zeug nicht so viele Arbeitsschritte hätte, würde ich das dauernd kochen wollen. So eher am Wochenende, wenn ich danach noch Zeit habe, die Küche wieder aufzuräumen.
Weblog  from google
august 2010
Schwiegermutteralarm: Bulgursalat mit grünen Oliven und Piquanté-Früchten
Grillparty bei Schwiegermuttern! Da kann ich natürlich nicht mit einem Nudelsalat vor der Tür stehen, die denkt ja ich bin ein Heiratsschwindler, von wegen Koch gelernt und so. Also habe ich zum Nudelsalat noch eine Bulgursalat mit Piquanté-Früchten und grünen Oliven gemacht.

Diese Piquanté-Früchte sind sowieso der Knaller, die kleinen Kirschpaprika aus Südafrika haben eine angenehme, nicht vordergründige Schärfe, sind süßlich eingelegt und schmecken sehr fruchtig. Meist im Glas und von der Firma PEPPADEW™ zu haben.

Für den Salat eine Handvoll Pinienkerne goldbraun rösten. Den guten 7-Minuten Bulgur (gibts beim türkischen gemüsehändler oder im guten Supermarkt im Spezialitätenregal) nach Packungsanweisung zubereiten, meist steht da: eine Tasse Blugur auf zwei Tassen Wasser. In dieses Kochwasser gebe ich eine Prise Salz, Paprikapulver edelsüß und rosenscharf nach Gusto, dazu einen Teelöffel Tomatenmark und 1 fein gewürfelte Knoblauchzehe. Aufkochen, Bulgur unterrühren, vom Herd ziehen und zugedeckt mindestens sieben Minuten ziehen lassen. Danach offen ausdampfen lassen und mit einer Gabel lockern. Bisschen Olivenöl dazu.

Ich habe ca. 100 g abgetropfte Piquanté-Früchte aus dem Glas grob gehackt und 400 g kleine Kirschtomaten teils halbiert, teils ganz gelassen. Dazu einen Riesenbund Petersilie hacken und alles miteinander vermengen, der Blugur darf zu diesem Zeitpunkt noch warm sein. 1 kleines Glas abgetropfte grüne Oliven dazu. Mit Weißweinessig, Olivenöl und Salz abschmecken.

Der nussige Blugur harmoniert sehr schön mit den knackig gerösteten Pinienkernen, dazu die frischen Tomaten und die salzigen Oliven – das schmeckt. Die süßscharfen Piquanté-Früchte machen den Salat einzigartig. Reicht für 4-6 Esser und so klappts auch mit der Schwiegermutter.

Filed under: Alle Beiträge, Paulsen kocht
Alle_Beiträge  Paulsen_kocht  Bulgur  Bulgursalat  Peppadew  Piquanté_Früchte  from google
august 2010
My Top 10 Movies of 2010 (So Far)
A few notes:The primary purpose of this list is just to help organize my thoughts. It's not intended to be taken seriously.The ordering IS currently accurate, with #1 being my favorite film of the year thus far, and so forth.I reserve the right to completely alter the list (including relative orderings) by the time we get to our end-of-year top 10s.1. Animal Kingdom2. How To Train Your Dragon3. Mother4. Fish Tank (Technically 2009, but i didn't see it until this year)5. Inception6. The Kids Are All Right7. Shutter Island8. Kick-Ass9. Toy Story 310. Splice
from google
august 2010
Pinocchio-Tattoo – Penis-Lüge
Wir alle kennen sie – Tattoos, die uns den Kopf schütteln lassen. Die abgrundtief hässlich sind. Wo das Poloch einer Katze der Nabel von einem Menschen ist. Wo Michael Jackson kleine Kinder zum Schreien bringt. Oder wo Frau sich Homer auf die Vagina tätowieren lässt. Entweder so. Oder so. Oder auch so. Aber diesmal auf den Allerwertesten. Aber kommen wir zum Wesentlichen. Zu Pinocchio. Bei dem wird bekanntlich die Nase länger wenn er lügt. An welcher Körperstelle könnte man solch ein Tattoo demnach am Besten stechen lassen? Richtig, oberhalb des Gliedes. Viel Spaß mit unserem neuen Lieblings-Tattoo.

Via
Dekoratives  Sehenswertes  Skurriles  Spielbares  Zum_Knuddeln  Penis  Sexualität  Tattoo  from google
august 2010
« earlier      
10.7 10.8 1973 1password 2009 2010 30_rock 64bit a_couple_of_dicks a_new_day_in_the_old_town aaron_cv abigail_spencer acoustic adicolor adidas advertising aeropress air_koryo airliner airplay aktuell alan_sepinwall alden alexis_denisof algorithm alias alison_brie all-time-favorite-album alle_beiträge allgemein amc america's_favourite_dancer american_graffiti amuse analysis animal anna_torv answers anti-americanism api app apple apple-tv apple_macs_&_os_x archer arrested_development art_&_design art_school article audio automator background backtracking badlands bag ballard bar_convent_berlin barfails barmagazin bash basix bastian_heuser batesy&r battlestar_galactica bcb becketts_kopf bennett_gulverson berlin berliner bert_cooper best best_of_2009 better_off_ted betty_draper bewerbung big_love bill_henrickson bill_paxton birkhäuser_verlag birthday black_tie blog blogging blogit blogs blood bobby book bookbook bookmark boomerang borders boyd brain bread brooklyn brot browser_extension bruce_lee bruce_willis buddy_garrity bulgur bulgursalat bumerang burger bus byichc cake cantonese caroline cbs charlie_francis charts chat chelcie_ross chloe_sevigny christmas chrome chuck clairefontaine clear_eyes_full_hearts_can't_lose clip clojure clothing club-mate cocktail cocktail_science cocktailain_das_handbuch_der_bar cocktailian cocktails code coding coffee cola collaborative collection collector color come_ye_saints comedy comic_con community compression connie conrad_hilton console control cookie cooking copenhagenzoo copy copyright course cow crate_digger crate_digging cre critics crossplatform crypto css css3 cultural_learnings custard cv cw daiquiri das_salzprojekt data database decade decade_in_review dekoratives del.icio.us delinat deliverusfromevil denim denmark der_rest desert design dick_whitman digging dillon dinge dinner directv dirk_holtwick dirty dislocated_shoulder divorce djsteveporter documenta documentary doll dollhouse don't_look_now don_draper downbeat downloads dr._horrible's_sing-along_blog drafts drama dramedy drawing drbunsen drdrang dribbble drink driving dropbox duplicate dust_and_grooves dvd east_dillon_high east_dillon_lions east_of_dillon ebooks_&_elearning_development_/_programming ebooks_&_elearning_lang:_english_development_/_programming_algorithms_and_patterns_science_mathematics_general ebooks_&_elearning_lang:_english_elearning_[video]_music_related ebooks_&_elearning_lang:_english_science_mathematics ebooks_&_elearning_lang:_english_skillful_/_professionals_academic_science_mathematics ebooks_&_elearning_lang:_english_software_related_beginners_newbies_windows_software ebooks_&_elearning_lang:_english_software_related_mac_software ebooks_&_elearning_lang:_german_science_mathematics echo ed editor elisabeth_moss eliza_dushku ellenore emotional empfehlungen end_of_year_list ending_song engine enter_the_dragon entertainment entourage enver_gjokaj episode_1 episode_13 episode_5 episode_6 episode_8 episodes eric_taylor essen etherpad evernote evil_francie exkurs extraklasse_kochbücher facebook fat favs favstar fernsehen film film/tv/radio filme filmemeineslebens finale flashback flashgame flattr fleur_de_sel fleur_de_sel_de_guérande flight_of_the_conchords flimmerkiste florsheim foldingtext folk follow_favorites font food foodmagazine football formalwear fox free freebies freebsd friday_night_lights friday_night_lights_(season_4) fringe fringe_division fromtcf fud funeral funk furniture fünf_fragen games geek-kram german germans germany get-lyte_3 get-lyte_iii getränke getränketest ggplot gif gimlet ginnifer_goodwin github glee globalization googledocs greg_winter grid grosgrain gt-2 gt-ii guardian hack hackerbrause hardware haskell hazel hbo hbo_canada heissgetränke helmut_adam henry_francis high high_school himym homescreen hospital hosting house how_i_met_your_mother howard html html_&_css hulu hung hörbares i_can_hear_music iflicks ifttt image imperialism in_my_life incest indie ink inland insert instagram intern internet interview interviews ios iphone irony itunes j.d._mccoy j.j._abrams jack_kerouac jailbreak jakob james_dean jane_lynch jared_harris java javascript jazz jeanne_tripplehorn jeans jekyll jens_hasenbein jeremy_davies jericho jim_parsons joan_harris john_siracusa john_slattery jon_hamm joss_whedon journal journey julie_taylor juniper_creek kaeli_mt_cv kaltgetränke kanne katalog katey_sagal kathryn kaweco keith_carradine kevin_smith keyboard keyboard_maestro kim_dickens kleidung kochbuch kochen koffein kokain kopfkinomusik kostenlos küchenmusik landry landry_clark lane_pryce larsnilsson latex launcher leather lebenslauf lebenswertes leder leinwand leonard leonid_meteor_shower leserfragen levis lieblingspasta lion list liste listen littlelionman livingston lolsquirrels lost lost_&_found lounge love_for_granted luke_cafferty lyla mac mac_app_store mac_os_x macbreak macro_programs macworld_sf_08 mad_men mad_men_season_3 magazine mail manipulation manly_skills margene marijuana mark_burnett markdown markdownservices mas mate matt_lauria matt_saracen matthew_weiner mccann_erickson mean_streets mediacenter mediathek melancholic melodic merritt_wever middleman midori miike miracle_laurie mistress mix_tape mixology mixtape mode_&_outfits mongodb morning_dress motion mountain_lion movie movies mp3 multimarkdown mumfordandsons music musicvideo musik möbel nachtisch nancy_botwin nanowrimo nasty nbc neil_patrick_harris netflix network netz netzpolitik new_jersey nfl nicki noise notebook notes nsa nu nur_mal_so nurse_jackie nvalt octopress oliver_ebert omnifocus online osx package paloma_cocktail paloma_longdrink pamelafrantz panthers pants paper paper_moon papier paradox parks_and_recreation parovstelar parser party_down paug paulsen_kocht pederschack peggy_olsen pelican pen penis penny peppadew perrin personal_productivity personality_test personen pete_campbell philip_broyles photography photoshop pi piquanté_früchte pirateparty playlist plex plex_media_server plot plugins podcast podcasts politically_incorrect politik polygamy pontypool pop porno portal portrait pot_cookies ppl premiere premiere_date presentations productivity produkte programming project_runway proxy putnam_powell_and_lowell python pythonista q_and_answer quinoa quiz quotes r radiohead raj rankings raspberry ratings ray_wise read_it_later reality_tv recipe recipes record records recursion red_bull red_bull_cola regex reis release remix restaurant_tim_raue review reviews rhodia ribbon rico_rodriguez rock roger_sterling roman roswell roy_orbison rss ruby ruhestörung russell s1e1 sally salt sample sarah sauerteig scala schallplatte schlafen schnellstarter science scipy script scrubs sdcc09 searchlink season_2 season_3 season_4 season_6 season_finale season_premiere secret_diary_of_a_call_girl sehenswertes senator_daniel_perrin serie service services setup sex sexualität shahdaroba shaker shanghai sheldon sheldon_and_penny shell shell_cordovan shoes shop shortcut shower shows_of_the_year showtime sichuan sideblog sierra_milenario_tequila_reposado sirbag sit_down._shut_the_door sitcom skurriles slanted snake sneakers snow snowden so_you_think_you_can_dance soft_kitty software software_apple_mac_os_internet_&_lan_email_/_sms_related software_apple_mac_os_utilities_backup sommercocktail sonos sons_of_anarchy sorting source sparklines spielbares spiele spirit_of_the_beehive spotify sql ssh stackoverflow stadtplanung sterling_cooper sterling_cooper_draper_pryce storage stream streaming strollers student style sublime sudoku summer_glau survivor suzanne_farrell syllabus system system_10.6 tag takashi tal tami_taylor taschen tastenkombination tattoo taylor_kitsch techno tee television television_the_aughts_&_i template terminal terpstra terrence_malick test texas text_editing textexpander textmate the_adhesive_duck_deficiency the_airborne_toxic_event the_amazing_race the_bible the_big_bang_theory the_eco-challenge the_exorcist the_left_hand the_lunatic_fringe the_office the_public_eyes the_son the_sound_of_fonts the_sting the_wicker_man the_wire the_x-files theme themes theorie tim_pritlove tim_raue tim_riggins time_&_attention tipp tipps tips_and_tricks tmux tokyo tools_&_tips top_10 top_chef topgun topher_brink torrents towerdefence tracey_ullman tracy_morgan traffic trakt.tv tre_torri treme ttscoff tu_vuò_fà_l'americano tut tutorials tv tv_+_serien twist twitter typography typolyrics tyra ueb uncategorized und_so. united_states_of_tara unix unpassend unternehmen us_itunes-account usb-stick vampire_diaries verbraucherempfehlung version verybad video videos vim vince_howard vincent_kartheiser vintage vinyl visuelles voiceover vpn wade_aikman wall wall-e wallmount wallpaper walter_bishop want washington watch_bands watches wb weather web web/tech webdesign weblog weddings weeds werbung white_tees white_tie wildbeasts william_bell windows windshield wired wissenswertes wohnen wolfman wordpress work writing wrong x-files xbmc xmlrpc yahoo_pipes year_end_list year_in_review yumcha zack_gilford zfs zombie zoo zootool zubehör zum_knuddeln

Copy this bookmark:



description:


tags: