Our Blog, FileMaker only, Xojo only, Archive (older)     Follow us on Twitter, Xing, LinkedIn or Facebook.

MBS FileMaker Plugin Presentation


For the upcoming virtual dotfmp conference, we prepared a presentation video to show you what MBS FileMaker Plugin can do:

All movies   Watch on Youtube.

Please do not hesitate to contact us if you have questions.


Dynamic Declare for Xojo


For MBS Xojo Plugins in version 20.3 we include a new set of classes to do load C libraries and call functions there. Similar to the declare commands in Xojo, but much more dynamic and with additional features:

Libraries

Our new DeclareLibraryMBS class allows you to load a library file. On MacOS you load a dylib file, on Windows a DLL file and on Linux a shared object file with so file extension.

Just pass the file path (can be relative) or the folder item for the library file to the constructor for DeclareLibraryMBS. Then you can check with SymbolNames function the array of exported functions defined in the library. Once you picked a function name, you can use Symbol function to query the function pointer for an exported function.

(more)

Sponsoring DotFMP 2020


This week the dotfmp.berlin conference starts and Monkeybread Software sponsors the event. This year the event will be virtual with many more attendees and as you may know, servers to host such an event still cost money. Here the overview of the supporters:



We wish everyone a great conference this week!
For MBS Session, we'll provide a video of the presentation soon and then do a Q&A session to show some examples and answer questions.

MBS Xojo Plugins, version 20.3pr1


New in this prerelease of the 20.3 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 10.3pr1


New in this prerelease of version 10.3 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

SQLite turned 20


SQLite just turned 20 years old.

The first check-in of SQLite code occurred 20 years ago.
see sqlite.org/src/timeline?c=2000-05-29

Version 1 just had a few commands. Open database, close database, execute a statement. Code for recordsets didn't exist at that time and came later.

Congratulations to Richard Hipp and his team!

see SQLite Forum

JWT RS256 authentication in FileMaker


Recently a client asked about JWT signatures. Here is an example calculation for JWT with HS256 in FileMaker with MBS FileMaker Plugin. We prepare a header and payload string with some sample data. Inside the header we declare the algorithm to be HS256, which means we use HMAC with SHA256 as hashing algorithm. The payload is some JSON and depends on the web service you use, but for the example we specify it here directly. Next we encode both using Base64URL and do the HMAC and finally assemble everything:

Let ( [

secret = "secretkey";
header = "{\"alg\":\"HS256\",\"typ\":\"JWT\"}";
payload = "{\"loggedInAs\":\"admin\",\"iat\":1422779618}";

// calculate hash
encodedString = MBS( "Text.EncodeToBase64URL"; header; "UTF-8" ) & "." & MBS( "Text.EncodeToBase64URL"; payload; "UTF-8" );
hash = MBS( "Hash.SHA256.HMAC"; secret; encodedString; 1+8 );

// and built final result:
result = encodedString & "." & hash
]; result )

(more)

Write audio file with samples using AVFoundation


Today we have a tip for everyone using AVFoundation classes in MBS Xojo Plugins. If you work with AVAudioPCMBufferMBS objects from either an audio file or with samples from microphone, it may be useful to write them to a file. So here is a little function, which takes a memory block of samples and writes them to a file on the desktop.

To make it work, we have to add a few new methods to AVAudioPCMBufferMBS class to pass in sample data. While you could do it yourself with Ptr already, it's convenient to let the plugin handle the stride and double pointer dereferencing for you to copy values and return true on success:

  • setFloatChannelData(ChannelIndex as Integer, Data as Memoryblock) as boolean
  • setInt32ChannelData(ChannelIndex as Integer, Data as Memoryblock) as boolean
  • setInt16ChannelData(ChannelIndex as Integer, Data as Memoryblock) as boolean

As you see in the code we build two settings dictionary as we pass data in in 32-bit floating point numbers, but want to write it as 16bit integer to the file to save a bit of space:

(more)

5 Monate bis zur Deutschen FileMaker Konferenz 2020 in Malbun


Noch fünf Monate bis zur FileMaker Konferenz 2020 in Malbun (Liechtenstein).

Vom 28. bis 31. Oktober findet die elfte deutschsprachige FileMaker Konferenz in Malbun, Liechtenstein statt. Ursprünglich geplant für Juni muss die Veranstaltung leider in den Oktober verschoben werden. Wir hoffen dennoch auf tolles Wetter, viele Interessante Teilnehmer und Gespräche. Eventuell könnte das die einzige Konferenz rund um FileMaker in diesem Jahr werden, die vor Ort stattfindet.

Ein MBS Schulungstag ist für den Mittwoch vorher geplant. Bei Interesse kann man sich gerne vormerken lassen. Die Ankündigung kommt später.

Die Veranstalter vom Verein FM Konferenz erwarten auch 2020 rund 120 Entwickler, Anwender, IT-Fachleute und Entscheidungsträger aus Wirtschaft, Bildung und Verwaltung. Rund um über 20 Fachvorträge und Workshops wird es viel Zeit zum Vernetzen in den gemeinsamen Pausen und beim Abendprogramm geben.



Für den Deutschsprachigen Raum ist diese Konferenz das Treffen des Jahres. Hier finden Sie vom Anfänger bis zum Profi Kontakte zu anderen Entwicklern. Lernen Sie was es neues gibt, nehmen Sie Impulse mit für die eigene Arbeit und erfahren Sie mehr zu FileMaker von deutschsprachigen Experten!
Bitte planen Sie wenigstens einen extra Tag ein für ihren Besuch in Liechtenstein, damit Sie die Natur in dem schönen Tal geniessen können. Den Aufstieg auf den Sareis können Sie bequem zu Fuß vom Hotel aus starten und die Turnastraße hinauf spazieren bis zum Restaurant am Gipfel. Oder alternativ die Seilbahn nehmen.

More customization for Claris FileMaker Web Direct


Recently a client asked how to customize the look of Web Direct a bit more than just changing the layouts in FileMaker itself.

Icon

First thing may be to get a 32x32 pixel logo of your company with alpha channel. Save it with e.g. GraphicsConverter as a ico file named "favicon.ico". Now on your FileMaker Server, locate the favicon.ico file from Claris in the following path and replace it there:

Web Publishing/publishing-engine/jwpc-tomcat/fmi/VAADIN/themes/default/favicon.ico

Once you replaced it and restarted browser and reload the pages, you may see your icon there.

Title

Next we can customize the html files in the folder:

Web Publishing/publishing-engine/jwpc-tomcat/fmi/VAADIN/launchcenter/

The home.html file contains the first page loaded. So there we can edit it and write a custom text there:

<title>MBS Web Database</title>

This is the text the tab will use as label in the browser and users bookmarking it will use for the bookmark.

Login Screen

To show a custom logo on the login screen, we can change login.html file to have a line after the
line there to put some picture just over the login fields with html like this:

<p align=right><img src="/fmi/VAADIN/launchcenter/mbs.png" width=300 height=300></p>

The image goes in the same folder as the html file and we reference it directly via that folder.

Screenshot from a test server running FileMaker Server 19 with default certificate in German.

Warning

For all the changes, please know what you do. Be familiar with unix file permissions, how to use a real text editor like BBEdit on MacOS or UltraEdit on Windows (Word won't work) and make backup copies of the files before you modify them. A wrong or broken html tag can make the website to not work properly.

If you have to update or reinstall FileMaker Server, all your changes are lost and should be manually recreated. Don't just copy over your modified files as the structure of the files may have changed.

Xojo's picture cache


The Xojo picture class internally has several platform dependent implementations with slightly different behaviors. Let's check how the implementations have an effect on memory consumption.

On MacOS the picture class implementation for an editable picture uses both a CGBitmapContext for the pixels and a CGImage for drawing it. So the pixels are hold in a CGBitmapContext for the actual picture. If the picture has a mask, there is a second CGBitmapContext for the mask, which doubles the memory usage.

When the picture is drawn or some plugin function requests a CGImage for the picture, Xojo will create one and cache it. The CGImage consumes about the same memory size as the normal picture part. And the cache stays there after the drawing for the case of another draw command. But the cache is invalidated and freed, when the graphics of the picture is used. You can clear the cache for example with the following call:

Dim g as graphics = pic.graphics
g.drawline -100, -100, -10, -10

This frees the memory for the cache and does not draw something as the coordinates are negative.

Usually you may never need to do this, but if you load a lot of images, keep them in array and draw them into smaller ones, you may need a lot of memory, so clearing the cache may be good, especially for a 32-bit application, where memory is tight. But usually it may be better to just clear last reference to picture early when you don't need the big picture any more.

First tests on Windows seem to indicate that on Windows for DirectDraw Xojo also uses a similar system as drawing as memory usage goes up when you draw a picture into another one.

The FileMaker.PerformScript function in FileMaker 19


You may have read the documentation about the new JavaScript integration in FileMaker 19. Let's take a look on this in detail. For every website you load, FileMaker injects automatically a little JavaScript when the page is finished loading. The JavaScript for the PerformScript script in the FileMaker namespace looks like this:

function PerformScript(name, parameter) {
    if (parameter == null) {
        parameter = ""
    }
    var message = '{"command": "PerformScript", "value": { "name": ' + quote(name) + ', "parameter": ' + quote(parameter) + '}}';
    // For mac
    if (window.webkit && window.webkit.messageHandlers.fm != null) {
        webkit.messageHandlers.fm.postMessage(message);
    } else if (window.external != null) {
        // For windows
        window.external.onMessage(message);
    }
}

As you see for MacOS (and iOS), they use the MessageHandler protocol offered by WebKit, which is the same we use for our WebView.AddScriptMessageHandler function in MBS FileMaker Plugin. The message handler is quotes the given parameters, builds a JSON text and passes this to the message handler.

If you need, you can use MBS FileMaker Plugin to add the same functionality for MacOS and iOS (iOS with FileMaker iOS SDK) to your solution for FileMaker 16 to 19. Use WebView.RunJavaScript to install the FileMaker object with the function above. You may need to add a file name parameter as we need that for the plugin to call a script.

For Windows, the use the external messaging, which is available in Internet Explorer control. Sadly we can't access this via plugin interface for our plugin. But a great move by Claris to add this for us!

Now you may notice that the function checks whether window.webkit.messageHandlers.fm is defined, so if the message handler is not yet installed, the calls to PerformScript do nothing. But you may be able to check whether FileMaker is not undefined like this:

if (typeof(FileMaker) != "undefined") { /* okay */ }

In your JavaScript on the website, you may just run setup work on start and set a timer to do any call to FileMaker.PerformScript a few milliseconds later.
You may want to checkout onfmready.js from Stephan Casas, who made a nice utility function to delay the call until FileMaker.PerformScript is available. See also community posting.

See also Check out options for FileMaker JavaScript Integration

HTMLViewer JavaScript communication for Xojo


The MBS Xojo Plugins provide various functions for HTMLViewer to use JavaScript in Xojo applications. Here a few details on the various ways to run JavaScript in the HTMLViewer in Xojo.

So we have WebViewMBS class (WebKit 1.x), WKWebViewControlMBS control (WebKit 2.x), Internet Explorer classes like IEDocumentMBS and IEWebBrowserMBS, ChromiumBrowserMBS class for Chromium Embedded Framework and LinuxWebViewMBS class for WebKit on Linux. (more)

Disable Dark Mode for FileMaker 19 application


If you like to disable Dark Mode for the FileMaker 19 application, but continue to use Dark Mode for all other applications, you can use the following command line in Terminal to run FileMaker always in light mode:

defaults write /Applications/FileMaker\ Pro.app/Contents/Info NSRequiresAquaSystemAppearance -boolean yes

If you have FileMaker Pro installed in a different location, you may need to adjust the path. To reverse you can always call this again with "no" as value on the end.
If a future FileMaker 19 update replaces the application, this setting is reset.


PS: This may break code signing, so you may also use codesign --remove-signature command to remove the broken signature.

Checkout Machine Learning features in FileMaker


Have you seen the machine learning functions in FileMaker 19?

Apple added CoreML framework in 2017 and presented it at WWDC that year. The framework allows to easily load a model for machine learning and call it with your input data. Examples include visual detection of things in pictures like image classification. Other examples include speech detection and sound analysis, text analysis or pattern matching. For example we saw models to take text and tell you the language or the mood of the writer. Also welcome are models to detect porn or violence to filter those.

FileMaker 19 comes built-in with a new script step Configure Machine Learning Model to load a model and let FileMaker know the parameters. Then you can use the new ComputeModel function to run the model. The great thing here is that this is built-in to FileMaker Go, so we expect many more people to use this on the go with FileMaker databases without the need to use iOS SDK and a plugin.

Since 2017 we have CoreML functions in MBS FileMaker Plugin. Compared to the built-in functions in FileMaker, the plugin may have a few more goodies for you. While you can't use it in FileMaker Go, you can do a FileMaker iOS SDK application or in MacOS with FileMaker Pro. Due to the plugin being separate with FileMaker, you can use it in older FileMaker versions if needed. The plugin provides the functionality as functions, so you can use them in custom functions and don't need to use a script. Although we usually use scripts, it can be handy to do something in a Let statement somewhere.

A few extra options you have with our plugin is to provide array parameters to the model. e.g. if you have a model doing math on an one or two dimension array, check the CoreML.AddArrayParameter and CoreML.Add2DArrayParameter functions. Use our CoreML.ResultImage function for models returning you an image. And finally use CoreML.Update to update the model on the go with new data.

See also:

Please don't hesitate to contact us with your questions.


Extends MBS Plugin classes in Xojo


If you miss something in our classes, feel free to extend the classes with your own utility functions. To do so in Xojo, please use a module with methods using extends keyword to add your own convenience functions. For example a client asked about a Lookup function for JSONMBS class:

Module JSONUtilModule
Function LookupValue(extends j as JSONMBS, name as string, defaultValue as string = "") As string Dim c As JSONMBS = j.Child(name) If c <> Nil Then Return c.ValueString Else Return defaultValue end if End Function
End Module

As you see this is a public method in a module and it extends the JSONMBS class with a new LookupValue method. The method can be called on all JSONMBS objects to check if a child there exists and return the string value. If the value is missing, it returns a default value.

Here is some test code checking whether the LookupValue function works:

EventHandler Sub Open() Dim jMBS As JSONMBS = JSONMBS.NewObjectNode jMBS.AddItemToObject("key1", JSONMBS.NewStringNode("aaa")) jMBS.AddItemToObject("key2", JSONMBS.NewStringNode("bbb")) jMBS.AddItemToObject("key3", JSONMBS.NewStringNode("ccc")) Dim n1 As String = jMBS.LookupValue("key1") Dim n5 As String = jMBS.LookupValue("key5", "?") Break End EventHandler

Please do not hesitate to contact us with questions.


Check out options for FileMaker JavaScript Integration


The just released FileMaker version 19 brings some welcome additions to use JavaScript with web viewer. You can now use a script step Perform JavaScript in Web Viewer to run JavaScript within the web viewer on the current layout.

In MBS FileMaker Plugin, we have our own WebView.RunJavaScript function since version 1.3 from July 2007. That function has been upgraded as WebView.Evaluate end of last year for version 10.0 of our plugin to provide results back on MacOS, Windows and iOS.

The built-in functionality has an advantage the plugin can't provide, which is is having it work in FileMaker Go or Web Direct. But you first need to upgrade everything to FileMaker version 19.

As usual we expect that the majority of the FileMaker developers will be happy with the built-in functionality, but if you need more, our plugin can provide additional features. Here is a table to compare features between MBS FileMaker Plugin and FileMaker's built-in functions.

FeaturePlatformFileMaker 19MBS FileMaker Plugin
Required FileMaker versionFileMaker 19 and newerFileMaker 19, 18, 17 and older
Run JavaScript in web viewerFileMaker MacOSYesYes
FileMaker WindowsYesYes
iOS with FileMaker GoYesNo plugin on FileMaker Go
iOS with SDKYesYes
Web DirectYesNo, plugin has no access to browser with Web Direct
Run JavaScript without Web ViewerFileMaker MacOSNoYes, see JavaScript or JavaScriptMac functions
FileMaker WindowsNoYes, see JavaScript Functions
iOS with FileMaker GoNoNo plugin on FileMaker Go
iOS with SDKNoYes, see JavaScript or JavaScriptMac functions
Web DirectNoYes, see JavaScript Functions
Server ScriptingNoYes, see JavaScript Functions
Returns result from JS directlyFileMaker MacOSNoYes, with WebView.Evaluate, JavaScriptMac or JavaScript functions
FileMaker WindowsNoYes, with WebView.Evaluate or JavaScript functions
iOS with FileMaker GoNoNo plugin on FileMaker Go
iOS with SDKNoYes, with WebView.Evaluate, JavaScriptMac or JavaScript functions
Web DirectNoNo, plugin has no access to browser with Web Direct
Server ScriptingNoYes, see JavaScript Functions
Trigger script via FMP URLYesYes
Trigger script from JavaScriptFileMaker MacOSYesYes, via WebView.AddScriptMessageHandler
FileMaker WindowsYesNo, WebView.InstallCallback broke with newer IE versions. ServerSocket functions may work.
iOS with FileMaker GoYesNo plugin on FileMaker Go
iOS with SDKYesYes, via WebView.AddScriptMessageHandler
Web DirectYesNo
Pass file name for script:No, always current file.Yes
Available via Script StepYesYes
Available as FunctionNoYes
Available for Custom FunctionsNoYes
Data Types for parameter or return valueText onlyText, Boolean, Number or JSON.
Set Webviewer to be silentNoYes, for Windows, see WebView.SetSilent
Run JavaScript synchronouslyNoYes
Run JavaScript asynchronouslyYesYes, for MacOS & iOS via option for WebView.RunJavaScript function
Works in runtimesNoYes

Let us know if you have a correction or addition for the table above.
Please don't hesitate to contact us with your questions.


Welcome FileMaker 19


The release of Claris FileMaker 19 marks and a big step for Claris on their move to a new agile development cycle. They said this is the last big yearly update. In future Claris Inc. plan to release smaller updates more regularly and push new features quicker to developers. Instead of developing something and waiting for next May to release it, they will now release things as they get ready over the year. And if we will install many more updates over the years, we hope they soon allow in-place updates for the server without reinstalling.

For MBS Plugin the recent release 10.2 is updated for FileMaker 19. Older versions like 10.1 still had bugs we corrected later, so please avoid older plugins to not run into issues we fixed already. The older version 10.1 mostly works, but we have a few issues including a crash in Script Workspace. Using older versions in FileMaker 19 is not supported.

You may heard that Claris works on a Linux version of the FileMaker Server as mentioned in their roadmap video. MBS Plugin has been supporting Linux since we got the first Cloud server betas in 2016. Over the years we learnt a lot and currently our plugin works fine on a lot of FileMaker Cloud servers on AWS. Once released later this year, you may be able to install Claris FileMaker Server on your own computer running a supported Linux distribution. Our Linux version of MBS Plugin can be used there and we suggest you get the developer preview in the next months.

In the next blog posts, we will take a deeper look to compare the JavaScript and CoreML features in FileMaker 19 to the features in our plugin. While FileMaker now has some things built-in, we expect the plugin to add value for developers with some extra functionality.

If you see problems, please do not hesitate to contact us.

Automatically install MBS FileMaker Plugin


You can automate the installation of MBS FileMaker Plugin via the Install Plugin script step. This is great when you have hundreds of FileMaker Pro installations and you need to use the plugin locally in your scripts. But same techniques apply for server installations for people with a lot of FileMaker servers. Especially if you manage a vertical solution with hundreds of customers running each servers and clients, you like to automate this.

Things to consider

When you plan to add automatic plugin install, you may need to think about the processes and how to define the table and the scripts. For example you can have a table which contains the plugin and metadata. You may want to have the following fields:

  • The plugin name, as this can be used for multiple plugins.
  • The plugin version
  • The platform for the given file: MacOS, Windows, Linux and 32/64bit if needed.
  • An active switch, so you can enable/disable this plugin
  • Minimum and maximum FileMaker version, so you can have an older plugin for an older FileMaker version and a newer version for a newer FileMaker version.
  • The target groups like development, testers, users. Define whether this version should install for a given group of people.
  • A force downgrade switch. This may force a downgrade to an older version if needed and you discovered a problem with a newer version of a plugin.
(more)

New in the MBS Xojo Plugins Version 20.2


In this article I want to introduce you the new functionalities from the MBS Xojo Plugins in version 20.2.

DynaPDF
The component DynaPDF has some new features for you.
With the new DynapdfGraphicsPathMBS class you can define paths. A path can be composed of different parts. So we can use the "MoveToPoint" method to navigate to our starting point and draw it from there. For example, we can draw curves and lines one after the other with methods. The path can then be drawn with the method "g.DrawPath". G stands for a graphics environment.

To enhance your tables in DynaPDF you can now specify a user defined cell picture with the method "DynaPDFTableMBS.SetCellPicture". The row and column as well as the positioning. The output size and the picture can also be specified in the parameters of the function. This is a convenience functions which takes a picture. You can of course continue to use older functions to point to picture file or picture in string/Memoryblock.

EXIF
If you have EXIF data as a string or as a memory block can use the ExifTagsMBS class to read various attributes of your data, such as date, time or artist. All attributes are read only. This means that you can’t change EXIF data with this class, but you can take a template EXIF from one picture, change values and store it with another one. (more)

Older blog entries:

2020-05-19 News about the MBS FileMaker Plugin 10.2
2020-05-18 Show Live Photos in your Xojo application
2020-05-17 Custom Functions to Log Script Calls and maintain call stack
2020-05-15 DynaPDF Manual online
2020-05-12 Dash help archives for Xojo and FileMaker
2020-05-12 MBS FileMaker Plugin 10.2 - More than 6200 Functions In One Plugin
2020-05-12 MonkeyBread Software Releases the MBS Xojo Plugins in version 20.2
2020-05-12 Neues MBS FileMaker Plugin 10.2
2020-05-11 70000 functions for Xojo
2020-05-11 ARM Macs thoughts
2020-05-10 Building for future Xojo targets
2020-05-09 MBS FileMaker Plugin, version 10.2pr8
2020-05-08 Xojo Hangouts
2020-05-08 Deutschen FileMaker Konferenz 2020 in Malbun
2020-05-07 MBS Xojo Plugins, version 20.2pr7
2020-05-07 MBS FileMaker Plugin, version 10.2pr7
2020-05-06 Xojo Design Award 2020 arrived
2020-05-06 Installing a new FileMaker version?
2020-05-05 Easter holidays at home
2020-05-04 Example Script for DynaPDF.FindText and DynaPDF.WebLink

Archives

Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008
XML: RSS Feed XML: Atom Feed