published on 25.06.2011 13:50.

Mehr Performance für ältere Intel SSD unter OS X

Wer seine Intel SSD schon eine Weile hat, kann durch das Update auf die aktuelle Firmware und Aktivieren von TRIM deutlich Leistung dazugewinnen. Nach Messung von xBench waren es bei meiner Intel X25-M satte 35%. In meinem Fall war die SSD auf dem Firmware-Stand 2CV102G9 vom 10. August 2009, die aktuell neueste Firmware 2CV102M3 ist vom 18. Januar 2011.

Sowohl die neuere Firmware selbst als auch TRIM sollen die Leistung verbessern; was letztendlich den Ausschlag gab kann ich leider nicht mehr nachvollziehen, da ich keine getrennten Messungen durchgeführt habe.

SSD Firmware aktualisieren

Man beginnt mit dem Firmware-Update, denn ohne hat das Aktivieren von TRIM keinen Effekt.

Um die Firmware zu aktualisieren lädt man sich das Firmware-Update-Tool von Intel herunter. Das ISO-File brennt man mit Hilfe des Festplatten-Dienstprogramms auf eine CD. Dazu via Ablage > Image Öffnen das Image öffnen, und es links in der Liste anwählen. Eine leere CD einlegen und dann den Brennen-Button klicken.

Jetzt mit dieser boot-fähigen CD im Laufwerk das System neu starten und beim Hochfahren die Taste C (C wie “von CD booten”) gedrückt halten. Hat alles geklappt wird man bald von FreeDOS begrüßt. Der folgende Update-Prozess ist selbsterklärend; bleibt als Disclaimer zu erwähnen besser vorher ein Backup anzulegen.

Ob das Update geklappt hat sieht man nach einem weiteren Neustart im System-Profiler. Im Reiter Hardware > Serial-ATA ist die Firmware-Version der SSD dargestellt (siehe Screenshot). Wer neugierig ist kann jetzt schonmal einen xBench Test laufen lassen und mit dem Anfangswert vergleichen.

TRIM aktivieren

Um TRIM zu aktivieren holt man sich den TRIM Enabler, sichert die aktuelle Konfiguration mit der Backup-Funktion und führt den Patch aus. Nach einem erneuten Neustart wieder ein Blick in den System-Profiler. TRIM sollte jetzt als aktiviert angezeigt sein.

Festplatte nullen

Soweit so gut, sind wir fertig? Nein, noch nicht ganz. Um den Effekt von TRIM sofort zu erhalten werden mit dem Festplatten-Dienstprogramm noch die “leeren” Bereiche der SSD genullt. Das erhöht die Leistung beim Schreiben, da sie vor dem erneuten Beschreiben schon leer sind und nicht erst gelöscht werden müssen. Wenn das unlogisch klingt, hier nochmal der Link zur Funktionsweise von TRIM!

weitere Infos
  • zukünftige OS X 10.6 – Updates könnten TRIM wieder deaktivieren, dann einfach den TRIM Enabler nochmal ausführen.
  • ab OS 10.7 soll TRIM aber standardmäßig aktiviert sein.
  • ein guter englischsprachiger Artikel der vieles hiervon beschreibt findet sich auf lifehacker.com.

Posted in  | Tags , , , , , ,  | no comments | no trackbacks

published on 10.01.2010 12:20.

Erste Erfahrungen mit AirPort Extreme 802.11n mit 5GHz

Vor kurzem hab ich mir die AirPort Extreme Basisstation von Apple zugelegt. Einstecken und funktioniert, wie gewohnt. Die Standard-Konfiguration hat allerdings lange nicht die maximal mögliche WLAN-Geschwindigkeit. Nach etwas Googlen und Doku lesen stellt sich heraus:

  1. Die Basisstation kann zwei Drahtloswerke gleichzeitig erstellen. So können unterschiedlich schnelle Endgeräte (Mac, iPhone) in getrennten Netzwerken laufen, die langsamen Geräte bremsen dabei die schnellen nicht aus.
  2. Die Netze können entweder im gängigen 2.4GHz oder im seltener genutzten 5GHz Frequenzbereich (d.h. weniger Störungen und damit schneller) arbeiten
  3. die Kanalbreite kann neben den normalen 20Mhz auch doppelt so groß gewählt werden (wide-band)

Um eine bessere Geschwindigkeit für 802.11n-fähige Geräte zu erreichen und weiter das iPhone nutzen zu können hab ich die Station also wie folgt konfiguriert. AirPort Dienstprogramm gestartet und:

  • “Manuelle Konfiguration” wählen
  • im Reiter “Drahtlos” das Feld “Sendermodus” bei gedrückter Alt-Taste anklicken. Dann erscheinen erweiterte Optionen. Dort einstellen: “802.11n – Nur 5GHz – 802.11b/g/n:

  • unter “Weitere Optionen” kann man dem 5GHz Netzwerk einen eigenen Namen geben. So kann man schnell sehen, mit welchem Netz der Rechner verbunden ist. An manchen Stellen heisst es man solle ein anderes Land als Deutschland auswählen um eine höhere Kanalbreite zu erreichen, das hatte bei mir allerdings keinen Effekt. Testweise kann man ein anderes Land einstellen und vergleichen.

  • Die Station neu starten. Dann das WLAN-Statusicon (rechts oben am Desktop) bei gedrückter Alt-Taste anklicken. Jetzt sollte in erkennbar sein, dass 802.11n aktiv ist und das 5GHz Band genutzt wird:

Ein Paar Warnungen am Ende:

  • die Geschwindigkeit der 5GHz-Verbindung ist sehr unterschiedlich. Gestern habe ich ca. 80 Mbit/s erreicht, gerade eben ist die Geschwindigkeit unterirdisch schlecht (< 1 Mbit/s). Im 2.4GHz Netz sind es gerade 16 Mbit/s. Nach Aus/Einstecken der Station erreicht sie wieder die volle Geschwindigkeit. Woran das liegt, konnte ich nicht herausfinden.
  • wenn sowohl 5GHz als auch 2.4GHz Netzwerk vorhanden ist, verbindet sich der Mac standardmäßig mit dem 2.4GHz Netz. Das kann man ihm austreiben, indem man in den Netzwerkeinstellungen die Liste der bevorzugten Netze anpasst. Das 2.4GHz Netz hab ich ganz entfernen müssen, damit er sich zuverlässig mit dem 5GHz Netz verbindet
  • die Entfernung und Position von Endgerät und Router zueinander hat – wie bei WLAN üblich – starke Auswirkungen auf die Verbindungsqualität. Bei 5GHz soll dieser Effekt noch stärker ausgeprägt sein. Glücklicherweise hat das Airport Dienstprogramm unter “Erweitert > Drahtlose Clients” eine grafische Anzeige für den zeitlichen Verlauf der Signalqualität. So kann man mit Notebook ausgerüstet den Wünschelrutengänger durch die Wohnung machen ;-)

Fazit: 5GHz mit 802.11n kann wesentlich schneller sein, es zuverlässig konfiguriert zu bekommen grenzt allerdings noch an Voodoo. Die Firmware des neuesten Airport Extreme Base Station scheint auch noch fehlerhaft zu sein. YMMV. Vielleicht schafft eine längere Beschäftigung mit den Support-Seiten für AirPort Klarheit! Im Zweifel bei den Default-Einstellungen bleiben und ein Firmware-Update für die Base Station abwarten.

Hier noch zwei Tipps zur Verwendung einer Festplatte an der Base Station:

  1. eine an die Station angeschlossene Festplatte kann inzwischen problemlos für TimeMachine Backups verwendet werden.
  2. die Festplatte kann man beim Start des Rechners automatisch mounten.

Posted in  | Tags , , , , , ,  | no comments | no trackbacks

published on 31.10.2009 20:39.

NoSQL Berlin Meetup Notes

“The world is diverse. Act accordingly.”
—Prof. Dr. Stefan Edlich, in his talk on object databases.

Where do you store your data? In a relational database, of course. It’s so convenient to use the persistence store we are used to, which has been there for us since the day we started programming. But in the spirit of using the right tool for the job – and making our lives easier – it pays off to know other persistent storages—those which aren’t based on the RDBMS/SQL paradigma. They promise to be better suited for some of the problems we face day to day; mapping the real world to a persistent storage, scaling, and reliability being among them.

The NoSQL meetup in Berlin gave a great overview of this active and growing scene, and shed some light on the characteristics of the main tools. Here are some rough notes from the meetup. For the full monty, all video and slides of the talks are available at the NoSQL Berlin website. Thanks guys for the perfect organization!

Consistency in Key-Value Stores (Monika Moser)

The only talk which wasn’t about a specific database. It gave an introduction into the problems and solutions that we face when working with many database servers (nodes). Since the written data has to be distributed across many physical machines, there will be a noticable delay until every node has received the updated data—the replication lag. Only after the replication lag, all nodes will contain the same (=consistent) data.

Two types of consistency were distinguished: Strong consistency (updated data is immediately available to all processes in the system) and eventual consistency (at some point in time all processes will get the update).

Strong consistency is usually expensive to implement on larger systems and isn’t always necessary, so eventual consistency is often acceptable. Depending on the use case, one can go for one of these subtypes of eventual consistency:

  • “read your writes” consistency

The process that wrote the data will always get the latest data. Other processes may still get old data for some time.

  • session consistency

A special case of the above: only the session that wrote the data is guaranteed to get the latest data immediately.

  • monotonic read consistency

after one process has read the new data, all following reads get it. So once the new data is in the system, the old data doesn’t appear again.

Monika went on to describe the CAP theorem (choose 2 of 3 for your storage setup: partition tolerance, availability, consistency), the reasons strong consistency is expensive, and the Paxos algorithm (good trade off between fault tolerance and consistency). See the slides and video for details!

My personal summary of the talk: good overview with lots of pointers to further info. And I’ll care about the details I didn’t grasp when I first need them.

Redis, Fast and Furious (Mathias Meyer)

Redis is awesome, I heard someone say.

Oh … Redis is also like memcached, but with extra features: persistence, additional commands (increment values, sets, push/pop, sorting, a text-based simple protocol). It is also slower than memcache, but not so much you would care.

It is also like K.I.T.T., if you believe Mathias.

According to Mathias, Redis is put to good use when storing statistical data (as long as it fits in memory!) and implementing worker queues.

Peer-to-peer Applications with CouchDB (Jan Lehnardt)
  • Jan contradicted himself on the first slide. It read: “Relax.”. Then he started a 10_000 WPM (words per minute) presentation, that still managed to raise my interest in CouchDB again. The presentation was about the “what can it do” instead of “how to do it”. Good choice to go this way.
  • a nice explanation “CouchDB is built “of the Web””—REST, JSON and HTTP are core technologies of the database.
  • Learning curve: store full documents, not relations (JSON). No data normalization into tables => make developers happy, not computers.
  • meant to be robust: append-only design for the database file. on crash, old data is not damaged.
  • scales out (horizontally). Does Master-Master replication. No scaling built in, but prepared (use couchdb-lounge). Then a scaled CouchDB cluster looks like a single DB from the outside.
  • scales down (runs on small devices). Own your own data, take it with you on your device.
  • incremental map-reduce: after updates, only the affected documents get reindexed
  • as with any document-oriented database, store full documents as JSON, not relations. Good tip in the Q&A: a document is something that will be updated and used as a whole. “put stuff into seperate documents when it is updated seperately”. There’s no clear guideline however, it depends on the use case.
  • RESTful HTTP: “text-based protocol is not slower than binary” / “all HTTP infrastructure and tools can be used”
  • BBC uses CouchDB in production, after a survey/comparison of storage solutions.
Riak (Martin Scholl)
  • document-oriented DB like CouchDB. “Riak combines a decentralized key-value store, a flexible map/reduce engine, and a friendly HTTP/JSON query interface to provide a database ideally suited for Web applications.”
  • 100% awesome. Though disputable, even more awesome than CouchDB.
  • the Riak “Data-Sphere” consists of: Bucket x Key x Document
  • GET/POST/PUT /jiak/<bucket>/<key>
  • travel the graph/links between documents with map/reduce
  • but: travelling links is expensive (no caching of map/reduce result, although possible to implement it yourself)
  • Bucket: can have as many keys as you want
  • chainable map/reduce stages—unique feature of RIAK
  • “It is extensible and configurable in many ways. Riak is a perfect fit for buiding reliable and scalable custom data storage systems.”
  • unfortunately my brain went offline through the second half of the talk … See the video
MongoDB (Mathias Stearn)

Quote: “I won’t tell you MongoDB is awesome. But I hope you’ll know it is after my talk.”

  • Mongo as in “HuMONGOus” scaling
  • Schemaless; data organized into Databases and Collections (like tables). But document-oriented (not a K/V store)
  • Good when you don’t know up front what you will be looking for (example: logfile analysis), and want to store everything.
  • extended JSON with data types Date, Int32/64, OID, Binary and called it BSON. B as in binary.
  • Wants to integrate with native language as well as possible. I.e. “db.users.find({$where: “this.a + this.b >= 42”})” instead of “RestClient.get ‘http://example.com/resource’”. And, btw. old-school C++.
  • changing only part of a document is possible. features: $set, $inc, $push, $pull, $remove for subdocuments
  • “you can put all data in one place, MongoDB”. Get rid of RDBMS.
  • works for 1 billion documents.
  • map/reduce + finalizers.
  • uses the eventual consistency model (see first talk)
  • uses MMAP database files (OS kernel) to automatically use available RAM
  • async modifications: no server response, client doesn’t wait. good for bulk inserts.
  • good for: websites, complex objects, high and low volume sites, real-time analysis.
  • bad for: complex transactions, business intelligence
4th Generation Object Databases (Stefan Edlich)
  • these have been around for 15 years
  • “no impedance mismatch”. These DBs are very nice to work with OOP—no disassembling objects into tables required, and back. Just dump full objects, and load them again.
  • but: when refactoring code, DB has to change. No insulation between code and data.
  • looks as if they are alive and well in a specific niche (extremely large datasets)
  • db4o is a simple way to try a OO database.
  • typical applications: transportation networks, tree structures, social graphs, object traversal, capture space (grok this!). He gave an example of one OOD application which stores 3.2 Mio. objects per second, 1TB of data per hour.
  • no convincing answer why OO databases haven’t entered mainstream, while OO programming has—it sounds like such a good idea. My impression was they are a great tool for specific uses (high performance, huge scale), but exotic and commercial solutions with high up-front investment.
  • Somehow I wonder if document-oriented databases will make it, when object-oriented DBs haven’t …
A talk not held: Neo4j – The Benefits of Graph Databases

There was no talk on GraphDBs, which are designed to store nodes and the relationships between them. As in social networks (nodes = people, relationships = connections/friendships). Slideshare to the rescue, it has Neo4j – The Benefits of Graph Databases. There also was a talk on Neo4j at NoSQLEast.

Posted in  | Tags  | no comments | no trackbacks

published on 02.08.2009 11:45.

Top Talks of Rails Underground

According to SpeakerRate. 5 is the maximum rating.

rated > 4.5
rated > 4
rated > 3.5
rated > 3
  • Rails Is a Hammer 3.33
  • Panel Q&A 3.29
  • Working with Legacy Rails Apps – Technical Debt Hell and how to work your way out of it 3.28
  • Git Basics 3.20
  • Behaviour driven monitoring with cucumber-nagios (no ratings)

Posted in  | Tags , , , ,  | no comments | no trackbacks

published on 12.07.2009 15:52.

Updated is-gd for Ubiquity

See this post for a description of Ubiquity.

I adapted the script for the API changes introduced with 0.5, and put the script on github.

Posted in , ,  | Tags  | no comments | no trackbacks

published on 11.07.2009 12:12.

Cross-browser video support with HTML 5

Embedding video is easy in HTML 5, use the native <video> tag. Firefox 3.1+, Safari 4+ and Google Chrome (Windows) already have experimental support for it.

The HTML 5 spec does not specify which video format and codec should be used, so naturally ;-) the browser vendors have picked different formats. Getting videos to play cross-browser still is no problem, since the <video> tag can contain more than one source. So give an ogg and a quicktime version of the video, and all browsers currently supporting the <video> tag will be happy.

Example

The code
<video controls width="320" height="240">

  <!-- Firefox 3.1+, Google Chrome -->
  <source src="/files/swiss.ogg" type="video/ogg">

  <!-- Safari 4+, Google Chrome -->
  <source src="/files/swiss.mov" type="video/quicktime">

  <!-- All others (including Internet Explorer and Opera) -->
  Sorry, your browser doesn't seem to support the <code>video</code> element.

</video>
How to create the video formats (OS X)

Easy. Use Quicktime Player’s export feature (File > Export). But first get the xiph Quicktime Components to add .ogg support to Quicktime.

Posted in ,  | Tags , , ,  | no comments | no trackbacks

published on 22.06.2009 11:35.

Altonale 2009 Photos



Posted in  | Tags ,  | no comments | no trackbacks

published on 19.06.2009 23:19.

All tweets must die

I just published my first gem on github, all_tweets_must_die. It will become the core of a web app that regularly deletes your old tweets automatically. If you want to use twitter but value your privacy, this thing is for you.

I build the whole thing for fun and exercise. I’ll try to use as much new stuff as possible – Sinatra for the web app, Cucumber for testing it, CouchDB for storing user auth and preferences, and – if I actually get a couple of users on the site – possibly a small Erlang or Scala program for tweet deletion, connected to Ruby with Thrift. Lot’s of cool new technology, a lot of buzz. I know :-)

Posted in ,  | Tags ,  | no comments | no trackbacks

published on 28.03.2009 19:46.

Ubiquity is the shit!

Ubiquity is a Mozilla Labs add-on for Firefox. It’s a new way of interacting with the browser and web content. Imagine Quicksilver, but for everything that can be reached from the browser. Common examples are controllign the browser, translating text on a web page in-place, looking up an Google maps address in-place, you imagine. It let’s you throw out half of the other add-ons. Oh, and on the Mac, it integrates with Growl.

And it’s super-easy to extend with JavaScript!

Example – using is.gd to shorten URLs

I hacked this together using the pretty good documentation. The code takes the text selection (an URL) and shortens it via is.gd.

CmdUtils.CreateCommand({

  name: "is-gd",

  description: "Replaces the selected URL with a short URL generated with is.gd.",

  author: { name: "Phillip Oertel" },

  takes: {"url to shorten": noun_arb_text},

  execute: function(urlToShorten) {
    var baseUrl = "http://is.gd/api.php";
    var params  = {longurl: urlToShorten.text};
    jQuery.get( baseUrl, params, function( shortUrl ) {
      CmdUtils.setSelection( shortUrl );
    });
  }

});

I embedded the above script into this page—if you installed the Ubiquity add-on, Firefox will notify you. Install the script, then select an URL anywhere on the page or in the location bar, press Alt-Space and type “is-gd”. The selected text will be replaced with a shortended URL. Neat!

They really have easy administration and extension in mind—go to chrome://ubiquity/content/cmdlist.html to get an in-browser interface to Ubiquity. You can directly write the scripts in there. Oh, and did I mention it already ships with jquery ?

Posted in , ,  | no comments | no trackbacks

published on 18.03.2009 06:10.

Mindmap for Software Craftsmanship Talk

I’m currently preparing a talk on Software Craftsmanship for Euruko 2009 in Barcelona. It’s the first time I try out a mind map for structuring everything related to a topic, and I really like it. By looking at the whole at once, you’re able to see new connections, redundancy, overlap, etc. And it’s more fund to draw stuff than putting everything in nested bullet lists.

I’ve also become a fan of Big Visible Charts, so I prefer creating it by hand instead of using a computerized tool, like MindMeister. Don’t get me wrong – MindMeister is very cool – it’s just that I don’t need it’s advantages of collaboration, change tracking etc. since I’m working on my own.

Two learnings already:

  • always start with a really big sheet of paper on a big wall. You never know in which direction you’re gonna need more space! I failed with that, and it’s probably limiting me currently.
  • use stickies to dump ideas that come to your mind when you’re not really working on the preparation. You don’t waste much time drawing and sorting, but you don’t forget and can pick up or discard the ideas later.

By the way, the Euruko conference artwork is the best I have ever seen. It’s a beautiful blend of Barcelona’s omnipresent Gaudi tiles and color tones and the Ruby logo.

Posted in ,  | Tags , , , , , ,  | no comments | no trackbacks

Older posts: 1 2 3 4 ... 8