Category: Conférence

  • FileMaker lance son Marketplace

    FileMaker lance son Marketplace

    C’est aujourd’hui que Claris lance son FileMaker Marketplace. Et devinez qui a les honneurs de la première page ?

    Nutshell Console bien sûr ! Le produit phare de la saison, cité à de nombreuses reprises lors de la dernière DevCon à Orlando.

    Mais au-delà de cette petite satisfaction, nous sommes très enthousiastes à l’idée de ce FileMaker Marketplace. Pour l’instant, le contenu est encore limité quoiqu’on y trouve déjà de bons contenus (apps, formation…), mais nous sommes surtout convaincus qu’à terme il contribuera à offrir à la plateforme une visibilité incomparable à celle qu’elle connaît aujourd’hui.

    Nous avons même quelques projets qui pourraient intéresser les développeurs. Si cela vous intéresse, n’hésitez pas à prendre contact avec nous ou à nous rencontrer lors des conférences européennes à venir (défilez en bas de la page pour les conférences européennes)

  • FileMaker Inc. devient Claris

    FileMaker Inc. devient Claris

    Un petit mot en direct de la FileMaker DevCon, la conférence annuelle des développeurs FileMaker qui se tient cette année à Orlando, et à laquelle participent pour 1-more-thing Romain Dunand et votre serviteur.

    Brad Freitag, le nouveau CEO -qui avait occupé préalablement pendant six ans le poste de directeur des ventes— a fait quelques annonces fracassantes à l’occasion du keynote inaugural.

    La plus frappante est le changement de nom de la société FileMaker Inc. qui (re)devient Claris (le nom complet est Claris International Inc.). Il est important de noter que le nom du produit demeure FileMaker, ce changement de nom a donc un impact limité sur notre quotidien et celui de nos clients. Toutefois, cela représente une belle opportunité de marketing et de rafraichissement de l’image de notre plateforme, et cela lui donnera plus de visibilité.

    Giuliano Iacobelli
    Giuliano Icacobelli, fondateur de Stamplay & Fabrice Nordmann, 1-more-thing

    Mais la raison pour laquelle ce changement devait avoir lieu est en revanche extrêmement excitante : Claris aura désormais d’autres choses à vendre ! En effet, Brad Freitag a annoncé l’acquisition récente de Stamplay, une startup dont la technologie est parfaitement en ligne avec le positionnement “Workplace Innovation Platform” de FileMaker. Claris Connect, le nom sous lequel seront déclinés les produits de Stamplay permettra d’aller encore plus loin et plus vite dans l’orchestration de toutes les technologies et tous les services utilisés par une entreprise. Nous sommes absolument ravis de cette stratégie sur laquelle nous ne manquerons pas de revenir.

     

     

     

    Devcon Keynote Nutshell Console
    Brad Freitag, CEO de Claris, présente Marketplace et… Nutshell Console

    Enfin, nous avons eu le plaisir de voir notre produit, Nutshell Console, mis à l’honneur par Brad Freitag à l’occasion de l’annonce du Marketplace. Nutshell Console a d’ailleurs été cité plusieurs fois lors des sessions de la première journée, confirmant sa place de produit phare de cette saison de la grande série FileMaker. Pour fêter cela, Nutshell est d’ailleurs en promotion pendant la conférence (30% de réduction sur la première année avec le code fmdevcon19)

  • dotfmp19

    dotfmp19

    [vc_row bg_color=””][vc_column][vc_column_text]Comme à chaque année, la dotfmp unconference a eu lieu à Berlin la semaine dernière et, comme à chaque année, ce fut le meilleur événement FileMaker pour les geeks.

    Merci beaucoup, Egbert, d’avoir fait en sorte que cet événement soit si intéressant et plaisant.

    1-more-thing y était, avec 5 membres de l’équipe (Jean-Frédéric Struyven, Laurent Spielmann, Andries Heylen, Yann Trauchessec et moi-même)

    Nous avons bien sûr vu beaucoup de bonnes séances et assisté à de nombreuses discussions ouvertes, parmi lesquelles je citerais certaines de celles que j’ai considérées comme révélatrices:

    Et bien sûr, nous en avons présenté quelques unes :

    • La chose la plus cool que vous ayez faite cette année: une discussion ouverte au tout début de la conférence. De nombreuses personnes ont partagé une excellente expérience et des idées au cours de cette session. C’était vraiment cool (je pense).
    • Discussion ouverte sur la validation des données. C’était une session complètement improvisée faisant suite à une discussion qui s’était déroulée lors d’une autre “Open Cowboy Session”, organisée la veille par Mads Chirstensen. Et encore une fois, la forme «non préparée» et ouverte de cette session l’a rendue très interactive et intéressante. Ian Jempson m’a envoyé ce précieux feedback ce matin :

    [/vc_column_text][/vc_column][/vc_row][vc_row color=”color15″ text_color=”color4″ bg_color=””][vc_column width=”1/1″][vc_column_text color=”color4″]

    Hi Fabrice
    Was nice to catch up with you at dotFMP.
    Also wanted to say that your session on data validation has proved helpful for me this morning as I get back to work. One of our tables has had the business rules change so many times over the years that the older records won’t validate anymore, so I’ve been doing a bit of refactoring of validations and going back to basics has simplified things nicely. Thanks for hosting so many great talks!
    Cheers
    Ian

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_column_text]

    • Andries a organisé une session sur les implémentations de OAuth. Il a montré comment il avait réussi à tweeter directement à partir de FileMaker en utilisant OAuth.
    • «Bien que Kevin ne soit pas là» : Kevin Frank n’a malheureusement pas pu se rendre à Berlin cette année, mais il avait préparé une session sur les nouvelles fonctions FileMaker 18 «While»et «SetRecursion». Nous avons donc convenu que je prendrais la relève et que je serais sa voix à Berlin. Alors oui, Kevin! vous étiez un berlinois.
      J’ai présenté ces deux fonctions, mais aussi touché à la récursivité en général dans FileMaker. Il y avait beaucoup à dire après tout. Et merci,  Paul Jansen, pour cette idée fantastique!
    • Andries Heylen a ensuite présenté une session superbe et dense sur les Webhooks et les API. Il a réussi à clarifier un grand nombre de concepts différents.
    • Enfin, j’ai organisé une sorte de jam session de clôture. J’imagine que c’est ainsi que vous appelez la dernière session planifiée, alors que tout le monde boit déjà de la bière ;-). C’était l’occasion de présenter Nutshell Console avec son principal développeur, Yann Trauchessec. Si je peux en juger par le ratio participants/ventes, je pense que le produit s’est révélé attrayant! merci à tous les acheteurs, j’espère que vous l’apprécierez autant que moi. Oh! au fait, voici la demande de fonctionnalité sur Community que j’essayais d’expliquer. S’il vous plaît la soutenir si vous l’avez aimé.

    Enfin, je tiens également à dire qu’il est si fantastique de trouver des personnes pouvant être fascinées par de beaux codes tels que les fonctions d’Agnès Barouh ou Tic-Tac-Toe de Shaun Flisakowsky. Quel plaisir de partager cette passion pour la beauté :)[/vc_column_text][/vc_column][/vc_row]

  • FileMaker Devcon Istanbul

    FileMaker Devcon Istanbul

    Nous sommes heureux de sponsoriser la première édition de la conférence FileMaker Devcon Istanbul, qui se tiendra les 22 et 23 juin prochains.

    Nous souhaitons bonne chance aux organisateurs Cabitaş, et que cette édition soit la première d’une longue série.

    Nous profitons également de l’occasion pour faire connaître nos partenaires Winsoft International, éditeur basé à Grenoble et qui édite les versions internationales de FileMaker, notamment pour les langues orientales ou s’écrivant de droite à gauche. Leur technologie permet notamment de concevoir des modèles “en miroir” indispensables pour travailler en Arabe ou en Hébreu.

  • La saison des conférences

    La saison des conférences

    Bien plus que celle des feuilles mortes, octobre, est pour la communauté FileMaker la saison des conférences européennes.

    L’équipe de 1-more-thing était bien évidemment de la partie pour y assister et y contribuer en tant qu’orateur et sponsor.

    Au FM Summit de Gand, Andries nous emmena à la découverte de la nouvelle fonctionnalité de la version 17 permettant d’afficher une notification en local sur iPad et iPhone quand FileMaker Go est en arrière plan.

    De la FM DevCon de Bologne, Fabrice nous ramena les infos sur les tendances de la plateforme FileMaker en Italie. Comme chaque année, une délégation FileMaker (Brad Freitag, Julie Sigfrinius, James Qiu) fait le tour d’Europe pour exposer les grands axes de développement de la “Workplace Innovation Platform”.

    À la FM Conférence de La Rochelle , Sylvain était sur le pont pour présenter un outil qui permet de “repenser” le versionning : le Data Migration Tool. Tanguy nous fit naviguer dans ses tri-bulations autour de la notion de tri en FileMaker, sa session fut également l’occasion d’un petit quiz musical remporté par Frédéric et Bernard. Romain en acrobate du réseau présenta nos nouveaux services autour de la plateforme Tableau pour la réalisation et l’hébergement de vos tableaux de bord.

    Ces conférences sont surtout l’occasion de sentir l’énergie de cette vibrante communauté de développeurs et d’utilisateurs. Merci à tous pour vos partages d’expériences, vos découvertes, vos témoignages… et au plaisir de se revoir bientôt.

     

    [vc_row bg_color=””][vc_column][vc_raw_html][/vc_raw_html][/vc_column][vc_column align=”center” width=”1/1″][vc_images_carousel images=”13715,13713,13712,13718,13725,13717,13709,13710,13708,13716,13714″ img_size=”600×300″ onclick=”link_no” speed=”3000″ autoplay=”yes” hide_pagination_control=”yes” wrap=”yes”][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][/vc_column][/vc_row]

  • Client Side Virtual List

    Client Side Virtual List

    [vc_row bg_color=””][vc_column][vc_column_text]Last June at dotfmp 2018 in Berlin, we had the great honnor to welcome an esteemed Californian member of the FileMaker developer community, Kevin Frank (@FileMakerHacks)

    Besides being a long time friend -I remember the old times when participating in our ‘Friday Night Chat’ at 3AM CET wasn’t an issue for my young, fast-recovering body- he’s always been and still is one of the most talented and clever writers on the topic of FileMaker. I love (I somehow share, I hope) his kind of scientific approach to FileMaker, and his blog FileMaker Hacks is an endless source of information and inspiration.

    At dotfmp, he presented two sessions in a row about virtual lists. I’m not going to repeat everything he said there because some of it is available on FileMaker Hacks already, and I wouldn’t pretend here to be able to fill the gap between what can be read there and what you perceive while listening to someone in person.

    But the magic at dotfmp is that it is an unconference. And the schedule evolves all the time, so a session can be extended in another, or a discussion can be scheduled almost on the spot and everyone notified, thanks to the great web tools Egbert Friedrich (@dotfmp) and Andries Heylen (@AndriesHeylen) have put together.

    Kevin’s virtual list sessions made me think I should show something on the subject, so Laurent Spielmann (@laurent_at_joes) and I pushed a new session to the calendar, and here it goes (thanks to Heidi, room moderator and keeper of the keys 😉 )

    Laurent and I have spent a large part of our time during the two last years working on a big project. The application manages tens of gigabytes, super intensive activity (24/7, 120 users), constant imports from various data sources, 4 servers, 40 files… a beast.

    Why a virtual list?

    InterfaceTo make a long story short, the application is about booking management and all the customer support that goes with it.

    In the main interface used by the greater part of users, there’s a portal showing all the interactions with the customers, providers…

    There is a lot of different things in there: incoming and outgoing e-mail, sms, notes, internal messages… a lot. Each is also displaying data more that 1 table occurrence away (user, department…)

    Because FileMaker portals (and list views) can only represent records, as opposed to a result of a query on various tables (union), we would usually tend to denormalize data and store all these different things in the same table. But with such an amount of data, this would be unimaginable. Not only is the data split accross multiple tables, but also accross multiple files.

    As a result, a virtual list is a good option for the UI.

     

    Previous situation

    In fact, the solution we had designed in the first place was not really a virtual list. It was a somehow-but-not-really-virtual list. For each record in one of the data tables, we would create a record with a minimal amount of data in a UI table. Basically, it contained the booking ID (booking being the main record from which we need to see the related data), and the UID of the related record.

    All the rest (displayed data, tooltips, data used in conditional formatting…) was obtained using unstored calculations. So a record of our interface table could display information coming from an inconming e-mail, an outgoing sms and so on.

    So in a way, this list was virtual because the data it displayed was not stored in its table but using unstored calculations. But on the other side it wasn’t virtual because the records really existed. A booking record had n related records in the view table.

    After a year and a half of production, this almost empty table was about 13 gigabytes (most of which was index). We had to do something.

    previous situation

    Why not a really virtual list?

    At this point, you might wonder why we hadn’t chosen a truly virtual list.

    There are two reasons that combine.

    1. avoid data transfert over the network. An approach of the virtual list is to get all the required data in one or more global fields, and then parse it in different fields or repetitions using unstored calculations. In this application, it is common to load a record of which you see only a few related records, without scrolling to see all related data. Therefore there is no need to download all the data into a global field. With 120 users on the network, downloading so much unnecessary data would have been a problem. So we knew that even if we would go for a virtual list (every user would look at the same records, but each record would display something different, depending on which booking is loaded), the data would have to be unstored and related (i.e. data for an incoming e-mail would still reside in the incoming e-mail table)
    2. given 1, the number of users also has an impact on the unstored calculations. If 120 users are looking at the same records (but viewing different related data), experience tells us an application becomes sluggish. This would not be the case if the data was not related but entirely in the virtual list. But as explained above, it was not possible in our case.

    And suddenly came… FileMaker 16

    Just when we needed to tackle this file size issue, FileMaker 16 was released. And with it the solution to our problem.

    The feature that helped us is the ability to define an External FileMaker Data Source as a variable. To me, it’s the most important change in recent years. It widens the horizon tremendously, with all sorts of uses and contexts.

    In this instance, we used it to eliminate the ‘too many users issue’ by loading the virtual list on each client.

    Here are the steps that we took:

    Change in the data model

    This steps doesn’t apply to most situations. It was necessary in ours, but I could write another blog post just on it.

    In the previous situation we had millions of records with basically foreign keys (one for the booking, one for each source of related data). The rest was all unstored calculated fields.

    We wanted to get rid of them and have only one record per booking with all the required information. We could even have added this to the booking table, but the plan was NOT to make this table heavier (and there are plenty of other reasons why we wouldn’t do that, but they’re off topic).

    So we went for a CLOB-like approach. In our new table, we had of course the booking ID (foreign key), and another text field in which we needed to store everything we need for the virtual list.

    So say that each row of our portal had a id_user, potentially some keys among: id_provider, id_customer, id_incomingEmail, id_outgoingEmail, id_incomingSMS…

    We defined a format, using pipe as separator “|” for fields (which makes it a not-a-CLOB, one could argue), and ¶ for records.

    So for 1 booking we could have


    |user345|||outSMS||
    ||||inEmail2048|||

    and so on. So each row of the future portal would have to look up to 1 line only.

    This is off topic, but once we agreed on the format, we wrote a script to transform our existing data into this new.

    The first time we ran it and measured performance, we concluded that a fast computer would need about 9 months to process all.

    So we tried to optimise. The time fell to 4 months. Better. Not good enough. We were not in an emergency, but I can’t let a computer working for 4 months just to transform some data. No way. No, no, no.

    Then I asked the community. What language would you use to do this? I had the intuition that Python was a good option. Indeed, several people suggested it to me. That was reassuring.

    But two developers that I value immensely, David Wikstrom (@CamelCasedata) and Clément Hoffmann raised their hands and said “R”.

    David wrote a small application in R, and it took exactly 8 minutes to do the job FileMaker was doing in 4 months. So just to say: never let the system beat you. There’s always a way.

    So now instead of having between 1 and 250 records for each booking in the old view table, we have exactly one.

    Of course, this change in the data model had immediate impact: we also needed to modify the processes that used to create/edit/delete records. Now it should only work in this single record (add a line, remove a line, edit a line). But this was quite trivial.

    New situation

    The Local File

    Thank you for reading this all the way, but so far there is really nothing about a ‘Client Side Virtual List’, and this blog entry looks more and more like some link bait.

    Don’t worry, here it comes.

    We created a new file that was to be open (hidden) by the client. It has references to all hosted files it needs to get its data from or resolve unstored calculations. The external references point to the server with an absolute path. (fmnet:/<server>/<filename>)

    As the file will not contain any other data than IDs, we went for a very straight forward security policy with a auto-login defined in the file options.

    The file (Localfile.fmp12), with no data at all was then inserted in a container of the Settings table (a single record table) of the main file.

    Since FileMaker 16, you can define a FileMaker External Data Source using a variable, meaning that each user for instance can have his own source.

    So we defined in the main file (the one with the portal), a variable data source pointing to the client temporary folder, followed by the local file name.

    Note: you need to do this before any call to that datasource is made, even implicitely. Namely, it means that not only should you declare this variable in your startup script, but also you can’t have any reference to the external source in the startup script, because at runtime, FileMaker will resolve all external references when the script begins. Any call to this external source should happen in a subscript.

    Startup script

    1. Startup script begins
    2. A variable is declared: Set Variable [ $$localPath ; Get ( TemporaryPath ) & “Localfile.fmp12”]
    3. Perform script [ Install local file ]
    4. Do other things without any reference to the local file, otherwise the existence of the other file will be resolved in 1. With no chance to declare a variable (2.), and therefore leading to a ‘file missing’ situation.

    Subscript (Install local file)

    1. Go to layout [ Settings ]
    2. Export Field Contents [ containerField ; $$localPath ] // the container field contains the client side file.

    That’s it! Now all we have to do is to load the virtual list. For this we use a simple lookup.

    Then a loop creates as many records as we need to display. And we can delete them on next run (remember it runs locally, there is no impact on other users because they’re working on their own file). The load script is triggered onRecordLoad on the main file.

    An optimisation we made was to split the virtual list into several (1 per ‘column’) before we create the records. This made the system even faster.[/vc_column_text][/vc_column][/vc_row][vc_row color=”color7″ text_color=”color4″ global_atts=”yes” style=”padding-x: 5px; padding-top: 25px; align: center; ” bg_color=””][vc_column width=”1/4″][ish_icon icon=”icon-download” align=”center”][/vc_column][vc_column width=”3/4″][vc_column_text global_atts=”yes” css_class=”btn btn-primary”]Download a sample file here. ClientSideVirtualList.zip

    Please share if you liked this post.[/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_row_inner][vc_column_inner width=”1/1″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row]

  • dotfmp Developer Challenge

    dotfmp Developer Challenge

    At recent dotfmp conference in Berlin (did I already mention this is the best FileMaker conference I know?), a developer challenge was orgnised.

    The challenge was to find the fastest way to download data from a FileMaker hosted database to a FileMaker Pro Client over the network.

    The table had 50K records (10 fields) of which only 10K had to be downloaded.

    But the important thing was that data, once on the client, had to be in any structured, workable, searchable form, not necessarily records/fields.

    @AndriesHeylen and I came up with a solution that I believe was considered interesting by the audience, so I’ll share it here, not to say that this is the best way or that I would necessarily use it in production, but I think it’s valid and it’s a good opportunity to visit some nice tricks.

    I’ll write this post in a kind of story-telling style, because I think the path we followed was as interesting as the solution, if not more.

    To rephrase the challenge, here is what needed to be done:

    1. select 10 000 records among 50 000 (any would do)
    2. transform the data stored in a table into something more appropriate for the next steps
    3. make the data transit over the network from the server to the client
    4. ‘render’ this data as a structured array, if that was not already the case, depending on what we would do during step 2.

    For each of this tasks we had many options in front of us. So because we hadn’t the time to explore them all (oh yes, I forgot to mention that we had approximately 45 minutes to solve this… while eating in a nice Vietnamese restaurant on Kastanienallee)

    So our first approach was to brainstorm about each step independently, so we would only see later how our favorite (supposedly fastest) techniques would combine nicely.

    Before we begin, let’s mention that there was one ‘obvious’ solution that was doing the whole thing: declaring a variable on the client, using ExecuteSQL function.
    ExecuteSQL ( "SELECT * FROM Datset FETCH FIRST 10000 ROWS ONLY" ; "#F#" ; "#R#" )
    Where #F# is a custom field separator and #R# a record separator.
    We didn’t follow that path because… there was no fun, and we still had 44 minutes to go.

    For step 1, selecting the records, we thought about 2 different ways:

    • through the found set
    • through a query

    A SQL query could be used in the context of an ODBC import (Import records from ODBC), but there’s a no go for this: the only output of Import records is… creating/updating records. We knew that this would take too long, so this ‘easy to solve’ first step showed us immediately that our strategy was not perfect.

    Before we could brainstorm on each step independently, we needed to exlude ways that we knew for sure would slow down the process.

    We identified 3 potential bottlenecks that we wanted to avoid

    • A – pre-formatting the data on the server using unstored calculation. Even with a simple calc this would be expensive, and it would make the solution not scalabale.
    • B – parsing data on the client, including creating records: data had to be ready to use or should not need more than a global transformation, not a per record or per field one.
    • C – sending a long text string over the network: we assumed it would take longer than if the string was encapsulated in a file

    Given this, we browsed the 4 steps

    1 – Select the 10K records

    To select the 10K records we could only use the foundset since the SQL Query could happen only in Import Records, and we didn’t want to import records (B)
    So we would run a script like:
    Go to layout [ Data ]
    Show all records
    Go to record [ First ]
    Omit multiple [ 10000 ]
    Show omitted only

    2 – Export records

    To avoid A and C, we thought the best way was to Export records to a text file (CSV)

    This made it clear that the main process (including step 1) should be a server side script because the export would be much faster on the server.

    We chose CSV because we believe this is the fastest, but we knew there was a glitch there: the result would not be very easy to use because the flavor of CSV FileMaker uses for its exports, using comas, double quotes and separator for multiline contents is not easy to parse using FileMaker calculation functions (certainly doable, but not easy)

    So we thought that if we had time (there was still 25 minutes to go), we would use XML/XSLT instead. It wouldn’t make a big difference in terms of performance.

    3 – Make the data transit over the network

    What we know (or think we know, which are two different things) is that sending a long string as a script result would take long. So we wanted to return a text file instead (C). Now that I’m writing this post and that I have much more time, I wonder if we shouldn’t have simply returned the text file as a script result (script results, as script parameters or variables can be of type container). But while on a hurry we went for something different: we created a ‘transfers’ table with a container field and an indexed ID field (serial number)

    So after exporting (2) our process:

    • creates a new record in ‘transfers’
    • inserts the file into the container (using Insert from URL and the file protocol, because Insert File is not server compatible)
    • exits the server side script with the ID of the transfer record as a result (token)
    • the calling (client side) script gets the token using Get ( ScriptResult )
    • goes to the transfers layout
    • finds the transfer record

    I should mention that inserting a file using insert from URL ate a full 5 minute of our time, therefore ruining our hopes to order desert. This was due to a change in FileMaker 16 that we had forgotten: to convert the path to where we export the records to into a URL from which we can insert the file, we have to remove the system drive. But since version 16, Get ( SystemDrive ) returns empty on FileMaker Server on macOS, so we have to extract it from the Temporary Folder path.

    4 – Extract the data into a variable

    OK, so now the client has a text file. It’s stored in a container field of the current record, but it could have been available as a script result.

    What we now have to do is to read this text file and ‘extract’ its content into a string.

    To do this we simply use this not so simple calculation :

    Base64Decode ( Base64Encode ( transfers::file ))

    In fact we could also use simply TextDecode ( transfers::file ; "UTF-8" ), but it only occurred to me later on. And as a matter of fact, we had several questions about the former expression while presenting our solution, so I’ll try to give a bit of explanation.

    Base64 is a encoding algorithm that allows encoding any data. This is very much used to embed binary files in a text, like for example an image in a html e-mail when you don’t want the image visualisation to rely on an internet connection. It is not an encryption method, although a base 64 encoded text is not readable by a human being (that I know, that is to say).

    So basically Base64Encode and Base64Decode are two inverse functions, which means that

    Base64Decode ( Base64Encode ( "abc")) = "abc"

    But it’s not as easy as this and I’ll try to give a clearer explanation that the one I gave when I was asked in Berlin.

    In this process, a text can be in 3 different states:

    • 1⃣ a string (data of type text in FileMaker)
    • 2⃣ Base64 encoded text
    • 3⃣ encapsulated in a text file

    Base64Encode ( data ) converts a string or a file to a Base64 encoded text depending on the parameter it receives (1⃣➡2⃣ or 3⃣➡2⃣)
    Base64Decode ( text {; fileNameWithExtension } ) converts a Base64 encoded text to a string (2⃣➡1⃣) or to a file (2⃣➡3⃣) depending on whether you pass a filename or not.
    So the two functions are inverse, but on two different operations.

    base64 encode Decode diagram
    In our example, Base64Encode translates a file into Base64 (3⃣➡2⃣) and Base64Decode translates the base64 encoded string into a string (2⃣➡1⃣).

    But again, TextDecode (released with FileMaker 16) is the best option.

    That was it, we had 4 minutes left, so just the time to wrap all this in 2 scripts (client side and server side), and add some performance measurement using get ( CurrentTimeUTCMilliseconds ) while paying the restaurant bill, fold the mac and head to the conference room where the solution had to be presented.

    Running on a local machine (with FileMaker Server and Pro Advanced on the same computer), the whole process was taking 0.4 seconds. On a local network (WIFI, quite busy and unstable, it took between 0.6 and 0.8 seconds). Not bad.

    Please do not hesitate to share your ideas or leave a simple comment below.

    client side script

     

    server side script

     

    Download the FileMaker file here: dotFMPcdotFMPchallenge (Admin / 1234)

  • Événement gratuit : Présentation de FileMaker 17

    Événement gratuit : Présentation de FileMaker 17

    [Mise à jour : à cause de 22 personnes dont 11 belges courant après un ballon, la date est reculée de deux jours Pendant un Uruguay-Arabie Saoudite]

    La nouvelle version de FileMaker vient de sortir, avec son lot de nouveautés, son nouveau modèle de licences, et de bonnes pistes pour entrevoir la direction prise par la plateforme.

    Venez découvrir ces nouveautés autour d’un verre le 18 20 juin 2018 à 17:00, avenue de la Couronne 382, 1050 Bruxelles.

    Merci de vous inscrire ci-dessous.

    [contact-form-7 id=”12958″ title=”Inscription à Présentation FM 17″]

     

    Ajoutez l’événement à votre agenda

  • RGPD en fête à Bruxelles !

    RGPD en fête à Bruxelles !

    [vc_row bg_color=””][vc_column][vc_column_text]Jeudi 1/3, c’était la fête dans nos locaux bruxellois, pour célébrer la prochaine entrée en vigueur le 25 mai prochain, du RGPD, le nouveau Règlement Général sur la Protection des Données.

    Fêter de nouvelles contraintes réglementaires imposées par l’Europe, voilà qui est pour le moins singulier, non ?

    RGPD salleSi nous avions choisi de donner un côté festif à l’événement, c’est parce que nous pensons, en tant que citoyens européens, que c’est une bonne chose de disposer d’un cadre juridique pour protéger nos données personnelles de l’appétit de certains  pour qui la quantité de données collectées prévaut souvent sur le droit de chacun au respect de sa vie privée.

    Par ailleurs nous considérons que cette obligation peut être vue comme une belle opportunité.

    Florence RDPDL’opportunité d’une part de se repencher sur la manière dont vous traitez, stockez, et même protégez les données personnelles dans les applications que nous développons pour vous.

    D’autre part, une opportunité de profiter de l’occasion pour réexaminer nos procédures et vérifier si elles sont bien en conformité avec les principes définis par le RGPD.

    À 18 heures donc, nos valeureux clients et invités, défiant le froid, la neige et les embouteillages, sont venus se réchauffer chez nous, et surtout s’informer sur cette nouvelle réglementation européenne. Florence de Villenfagne, consultante ICTLex et formatrice au Data Protection Institute, était notre invitée et a exposé le cadre juridique du RGPD ainsi que les principales implications.

    Sa présentation a été particulièrement appréciée. Elle avait pris le temps de s’enquérir des activités de chacun avant son intervention, et a pu ainsi proposer des exemples précis et très parlant.

    Tanguy Collès, désormais “certifié” DPO par le Data Protection Institute a ensuite pris la parole et a présenté les différents axes selon lesquels 1-more-thing évoluait afin de proposer le meilleur conseil possible à nos clients autour du RGPD.

    Il a abordé les aspects contractuels, juridiques, organisationnels et techniques. Nous avons vu que de grandes parties du RGPD était déjà présentes dans les règlementation antérieures, et que 1-more-thing avait déjà une bonne culture de la protection des données. Mais nous avons aussi vu qu’il fallait prendre un certain nombre de mesures -techniques et non techniques- pour se mettre en conformité.

    Après une session de questions/réponses, nous nous sommes déplacés dans l’open space, avons un peu poussé les bureaux, et donné corps au côté festif de notre soirée. Il serait difficile de décrire en détail cette deuxième partie de soirée, mais en deux mots : c’était très bon et très sympa ! Et pour ceux qui étaient là et qui ont demandé le nom du traiteur, voici ses coordonnées :

    Cerisaie S.A.
    Traiteur Evénementiel
    info@cerisaie.be

    T. +32 10 230 130
    Rue Laid Burniat, 3
    1348 Louvain-la-Neuve

    [/vc_column_text][/vc_column][/vc_row][vc_row bg_color=””][vc_column width=”1/1″][vc_gallery interval=”2″ images=”12509,12508,12507,12506,12505,12504,12503,12502,12501,12500,12499,12498,12497,12496,12495,12494,12493,12492,12491,12490,12489,12488,12487,12486,12485,12484,12483,12243″ img_size=”full”][/vc_column][/vc_row]

  • De retour de la dotfmp 2017 à Berlin

    De retour de la dotfmp 2017 à Berlin

    Comme tous les ans depuis 4 ans, nous nous rendons au mois de juin à Berlin, ou Egbert Friedrich @dotfmp organise “l’anti-conférence” dotfmp

    Une anti-conférence (unconference), c’est comme une conférence, mais au lieu de privilégier une transmission verticale (un orateur à son auditoire), on essaie d’en faire un lieux d’échanges horizontaux. L’orateur est plutôt un animateur d’une discussion à bâton rompu.

    Des discussions peuvent s’organiser à la volée, en réaction à une autre ou pour la prolonger. Bref, c’est plus un forum qu’une conférence.

    Cette année comme tous les ans, la crème de la crème des développeurs européens (et quelques américains habitués comme Steven Dolenski (@oceanwest), Chris Moyer @chrismoyer1 et Heidi Porter) étaient présents. 96 participants, soit un record. Andries Heylen @AndriesHeylen, Jean-Frédéric Struyven, Laurent Spielmann @laurent_at_joes et moi-même @FabriceN étions de la partie pour 1-more-thing.

    dotfmp audience

    Quelques nouveaux concepts marquaient cette édition : un nouveau site web développé par Andries Heylen, justement, qui permettait non seulement de partager l’information mais aussi d’interagir avec le planning, les fichiers à télécharger… bien sûr la base de données et le back office étaient en… FileMaker.

    Les salles étaient modérées par une personne désignée, qui s’assurait de la bonne tenue de la discussion, afin que les échanges soient le plus fructueux possible. Honnêtement, alors que j’avais personnellement accueilli cette idée avec enthousiasme, je n’ai pas beaucoup vu les modérateurs à l’œuvre, et parfois les prises de parole étaient trop longues ou des sessions étaient plus des présentations que des discussions (un peu comme dans une anti-anti-conférence)

    Autre nouveauté :  les inscriptions étaient payantes (mais raisonnables), mais ça n’a apparemment pas empêché l’affluence (il faudra trouver autre chose…)

    D’autres concepts demeuraient au contraire inébranlables, notamment la machine Espresso apportée par David Wikström @CamelCasedata et qui nous épargnait le café berlinois dont on dira poliment qu’il n’est pas à la hauteur de la bière qu’on peut déguster en fin d’après midi au Bier Garten en face du centre de conférence.

    Peter WagemansSur le contenu, voici mon point de vue très personnel. J’ai assisté comme toujours à des discussions et des présentations intéressantes. Je garde notamment en mémoire celles de Jeroen Aarts @JeroenAarts sur OAuth, de Peter Wagemans sur l’utilisation des robots sur le serveur, de Johan Hedman sur les outils de Business Intelligence, ou de Claus Lavendt @DataManix sur le potentiel des plugins avec le SDK.

     

     

    J’ai moi-même animé plusieurs discussions :

    • Trucs et astuces sur FileMaker 16
    • Potentiel de la nouvelle fonctionnalité des sources de données externes variables
    • Stockage externe des conteneurs : sécurisé vs ouvert

    J’ai été à chaque fois captivé par la faculté d’échange de notre communauté. C’était vraiment des discussions intéressantes.

    De manière générale, je m’attendais toutefois à plus de contenu spécifique à la version 16 de FileMaker, qui est à mon sens une révolution en plusieurs domaines. Peut-être était-ce dû à la proximité de la sortie.

    Néanmoins, c’était une belle édition. On se réjouit déjà de l’année prochaine !

     

  • Événement FileMaker 16 : formation pour développeurs

    Événement FileMaker 16 : formation pour développeurs

    FileMaker 16 pour les développeurs – un réel besoin de se former

    27 juin 2017 – Paris

    Réserver

    La sortie de FileMaker 16 en mai est très particulière. Alors que de version en version il suffit en général au développeur de parcourir la liste des nouveautés pour les comprendre, et quelques billets de blog pour en percevoir toute le potentiel, la plateforme FileMaker 16 ouvre de nouvelles portes au développeur FileMaker… à condition d’y consacrer un vrai temps de formation.formation FileMaker 16
    Afin de gagner du temps et de mettre toutes les chances de son côté pour entrer dans cette nouvelle ère sans dommage, 1-more-thing et son équipe d’experts vous proposent une journée complète de formation le 27 juin, au centre de Paris.
    Les places sont extrêmement limitées car il est important à nos yeux de pouvoir personnaliser cette formation et de répondre aux questions particulières.
    En sortant de cette formation, vous aurez acquis l’ensemble des compétences qui vous permettront d’utiliser les API tierces ainsi que l’API data de FileMaker.

    Aperçu du programme

    • Nouvelles méthodes d’authentification OAuth :
      • principes de l’authentification externe
      • avantages et inconvénient des systèmes de Microsoft, Amazon et Google.
      • exemple d’implémentation avec les services d’Amazon
    • Encryption. Nouvelles et anciennes méthodes : un point sur la sécurité
    • cURL et fonctions JSON : théorie et pratique
      • le http et les différentes méthodes (GET, POST, PUT, DELETE)
      • comprendre et manipuler les objets JSONRomain Dunand
      • cURL en détail : (presque) tout sur cURL et sur son implémentation dans FileMaker
      • qu’est-ce qu’un service REST ?
      • exercices autour d’exemples variés d’implémentation * :
        • analyse de la documentation d’une API REST
        • géolocaliser une adresse grâce à l’open DATA
    • Data API
      • Data API : un service RESTful ?
      • avantages et inconvénients par rapport à XML/PHP
      • travaux pratiques
      • node : pourquoi cela change tout

    * Les exemples d’implémentation peuvent être adapté en fonction des demandes

     

    Réserver

  • Sorry America but…

    Sorry America but…

    It is with great sadness that we have decided today to cancel our participation to the annual FileMaker Devcon next July.

    We had planned to go there with our families, but we really feel, as foreigners, muslims, blacks, jews, latinos, gays and women, that we’re not welcome anymore to the United States, and certainly don’t feel like pretending we agree with the decision the American people made yesterday.

    We’re not forgetting our friends and colleagues there. We know they’re as astonished and sad as we are: we’re so sorry for you and for your great country. May the force be with you!

    The 1-more-thing team

  • La FM Conférence 2015 en vidéo

    La FM Conférence 2015 en vidéo

    Comme chaque année, la FM Conférence était l’occasion pour nous de retrouver nos chers confrères et clients, ainsi que d’autres membres de la communauté de développeurs et d’utilisateurs de FileMaker.
    Cette année, la conférence était organisée à Lyon par nos amis de Lesterius, qui vous ont réservé la surprise de mettre à disposition l’intégralité des sessions en vidéo.

    Vous pouvez donc en prendre connaissance ici

    Notamment, voici les sessions et topos présentés par les membres de notre équipe.

    https://youtu.be/lDP-7b1CsSE

    https://youtu.be/lDP-7b1CsSE

    https://youtu.be/yk3lhlomt8s

  • Rapport récapitulatifs rapides

    Rapport récapitulatifs rapides

    Retrouvez le topo d’Andries Heylen lors de la FMConf de Lyon le 22 octobre 2015.

    On y apprend comment booster les rapports et l’évaluation de statistiques… entre autre grâce à l’utilisation de la fonction GetSummary / Récapitulatif.

    https://www.youtube.com/watch?v=s2ka4iSXZGM

     

     

  • Conférence .fmp[x]Berlin : compte rendu

    Conférence .fmp[x]Berlin : compte rendu

    Déjà une semaine qu’Andries Heylen et moi-même sommes revenus de la conférence dotfmp (.fmp) de Berlin… il est temps pour un petit compte rendu.

    Comme vous le savez peut-être, la conférence .fmp (anciennement PauseOnError) rassemble des développeurs FileMaker de niveau expert en provenance de toute l’Europe (plus Stephen Dolenski – @oceanwest qui vient tous les ans de Californie).

    L’organisation repose sur un seul homme, Egbert Friedrich (@pixi), qui s’arrange pour que cette conférence soit un vrai espace de collaboration et d’échange. En dehors de modestes sponsoring -dont le nôtre- et de dons de la part des participants, la conférence est gratuite et ne fait la promotion d’aucune marque ou entreprise. C’est vraiment, très simplement, la mise à disposition d’un cadre permettant des échanges ouverts.

    Dès lors, ces échanges sont improvisés pendant 3 jours. Parfois techniques, parfois stratégiques, ou même “poétiques”, on apprend autant dans les discussions de couloir que dans les “sessions”.

    Cette année, Egbert avait proposé une journée de “Show and tell”, durant laquelle chacun pouvait s’exprimer quelques minutes devant l’ensemble des participants à la conférence, pour proposer un sujet qui serait éventuellement approfondi dans les jours suivant.
    Bien que le concept ait peu ou prou fonctionné, ces “teasing” se sont vite transformé en mini-sessions, un peu à la manière des topos qu’on voit à la FM Conférence (France) ou à la CQDF de Montréal, mais au final, j’ai trouvé cela très intéressant, comme une sorte de présentation d’abstracts à la manière d’un congrès scientifique.

    La première matinée a été trustée par nos amis anglais, qui n’ont plus de conférence nationale (et qui donc viennent à Berlin aussi pour se retrouver).
    En particulier, Nick Lightbody (@nicklightbody) a présenté un travail remarquable sur ses mesures de performances de FileMaker Server, ainsi qu’un outil qu’il nous a donné. C’était vraiment très intéressant pour qui s’intéresse aux performances.
    Voici deux vidéos où il nous explique son travail.


    Autre session remarquable, toujours dans le type “Benchmarking”, celle de Philipp Puls (LinkedIn) au sujet de la fonction ExecuterSQL.

    Deux présentations, l’une de Russel Watson et l’autre de Crispin Hodges (@crispinhodges) nous ont permis de constater avec plaisir l’avancée des idées que nous avions lancées avec FMSDIFM lors de la CQDF 2012 et ensuite.

    En fin de journée, nous avons présenté à deux, Andries Heylen (@andriesheylen) et moi-même (@fabricen), une “session détente” sur FileMaker 2.1, la version de FileMaker avec laquelle j’ai commencé. L’audience avait du mal à croire à quel point certaines choses n’ont pas changé en 20 ans !

    dotfmp

    Le lendemain (car si vous le permettez, je vous épargne les commentaires sur les bières allemandes et autres schnitzels), des sessions plus longues étaient présentées.
    Entre autres, une très intéressante -la plus importante selon moi de la conférence- présentée par Adam Augustin (@agametis) sur l’architecture “Connector/Selector”, développée entre autres par Todd Geist (@geistinteractiv) et explicitée ici

    Cette présentation a déclenché chez nous un cycle de nuits blanches 🙂

    Volker Krambrich (@VolkerKrambich) qui devait parler juste après a préféré me céder son temps de parole, dans un esprit parfaitement “unconference”, le hasard faisant que ce que je proposais s’enchaînait bien avec la session d’Adam.
    J’ai alors animé une discussion totalement improvisée autour d’une ébauche de travail en commun consistant à écrire de vraies spécifications sur une fonctionnalité qu’on souhaiterait voir dans FileMaker. Le but était de prendre conscience que tout n’est pas simple, et que “yaka faut qu’on” ne s’applique certainement pas à un logiciel multiplateforme souhaitant maintenir une compatibilité ascendante. Débat animé mais je crois -j’espère- intéressant.

    Pendant ce temps, Andries Heylen introduisait lui la notion de “tables étroites” (comment réduire le nombre de champs dans une table pour optimiser les performances réseau). C’est un sujet sur lequel nous investissons actuellement beaucoup de temps de recherche chez 1-more-thing, et il est probable que vous entendiez parler de cela sous une forme plus aboutie dans les mois qui viennent.

    Andreas Lauwaert (@andreasLauwaert), notre ami et voisin, a présenté une session tout à fait remarquable sur l’interface, ses sources d’inspirations, ses méthodes. Pas de lien malheureusement pour télécharger son talent sous forme de fichier zippé.

    Le dernier jour, David Wikström (@camelCaseData) et Russel Watson présentaient leurs outils d’automatisation de développement, confirmant que la paresse est avant tout la mère de beaucoup d’idées géniales 😉

    Nick Lightbody (@nicklightbody) a également animé une discussion à bâton rompu et fort intéressante sur le futur de FileMaker.

    Il y a eu bien d’autres sessions dont nous avons entendu grand bien mais que nous n’avons pas pu suivre : Yann Liqueur-Salzédo, Peter Wagemans, Clause Lavendt… et bien sûr la présentation toujours aussi étonnante de Christian Schmitz de son plugin à tout faire : MBS.

    Parmi les petits trucs et astuces appris en dehors de sessions, Tim Anderson (@t1manderson) m’a expliqué qu’on pouvait utiliser les fonctions de fomatageformatage de texte de modèle de texte (fonctions TextFormat, TextSize…) pour les texte “placeholder” de FileMaker 14.
    J’ai pu tester que cela fonctionnait, et également sur les autres textes calculés au niveau du modèle comme les libellés d’onglets ou les barres de boutons.

    Je voudrais terminer sur des remerciements renouvelés à toute cette merveilleuse communauté d’une part, qui rend tellement enrichissants ce type d’événements, et en particulier à Egbert Friedrich qui n’a pas ménagé ses efforts (c’est un euphémisme) pour la réussite de cette édition.

  • Ouverture de la conférence .fmp[x] de Berlin

    Ouverture de la conférence .fmp[x] de Berlin

    C’est aujourd’hui que commence la conférence .fmp[x] de Berlin 2015, dont 1-more-thing est “Premium Partner”
    Cette conférence est un peu particulière dans l’univers des conférence FileMaker, au point qu’on l’appelle “unconference” : ici, pas de sessions avec un orateur et une audience : des discussions et des débats à bâton rompu.

    L’événement est fréquenté presque exclusivement par des développeurs de haut niveau, et constitue une occasion fantastique d’échanger des idées en relativement petit comité.

    dotfmp

  • 1-more-thing au Canada

    1-more-thing au Canada

    le 28 avril, Apple et FileMaker Canada avaient invité Yann Liqueur-Salzédo (Infografix) et Fabrice Nordmann (votre serviteur, 1-more-thing) à donner une Master Class à Toronto, dans les locaux d’Apple. Devant un public de consultants et d’experts FileMaker de haut niveau, c’était l’occasion de partager notre savoir faire et d’échanger avec des confrères canadiens.

    Yann Liqueur-Salzédo a présenté ses méthodes et techniques liées à la conception d’interface avec FileMaker 13. La mobilité -avec des exemples d’application pour iPhone et iPad- a constitué une grande partie de sa présentation.

    Puis j’ai divulgué le résultat d’années de recherche et d’expérience avec FileMaker. Technique, méthodologique, cette conférence était sous le signe du partage, et avait pour ambition d’être la session la plus rentable pour l’auditoire jamais donnée. D’ailleurs, seulement 10 jours après de nombreux auditeurs nous ont confirmé avoir définitivement adopté certaines de ces techniques et nous ont dit regretter de ne pas les avoir connues avant.

    Deux jours plus tard, dans un cadre très différent, j’inaugurai à Montréal la CQDF, la Conférence Québécoise des Développeurs FileMaker. C’était notre deuxième participation à cette conférence annuelle (après 2012). Cet événement a la particularité d’être au printemps, alors que la plupart des autres conférences FileMaker sont soit l’été (DevCon américaine), soit à l’automne (conférences européennes). Pour la deuxième fois, c’est donc à Montréal que se tenait la toute première conférence mondiale après la sortie de la dernière version de FileMaker.

    Cette année le groupement FMQC qui organise la conférence, avait choisi comme cadre une vieille auberge splendide du Vieux Montréal, l’Auberge St Gabriel.

    Pendant 3 jours se sont échangé les meilleures idées et les plus intéressants débats. De nombreux conférenciers et participants avaient franchi l’Atlantique ou les Grands Lacs, ce qui donnait à cette édition une véritable dimension internationale (Canada, Etats-Unis, Belgique, France, Danemark, Suède, Royaume-Uni…). Les sessions étaient données soit en Français, soit en Anglais, sans que cela semble poser de problème à qui que ce soit. FileMaker nous a également gratifiés de la présence de 3 personnes (Julie, Mike et Nick).

    Il faut dire que c’est pendant cette conférence que nos amis de Fin Finaud Consultant se sont vu décerner le rang de membre Platinum du programme FBA, ce qui ajoutait encore à la joie de voir ces membre du staff FileMaker.

    Durant la conférence, j’ai présenté la session d’ouverture qui ressemblait à la Master Class de Toronto en un peu plus accessible, ainsi qu’un topo de 15 minutes sur un cas concret de conception d’interface avec FileMaker 13. (celle que nous avions conçue pour l’Association Européenne d’Anesthésiologie – ESA)

    Enfin, le lundi 5, nous avons profité de notre présence à Montréal pour organiser une rencontre/formation avec l’équipe de Fin Finaud. Cette journée fut profitable à chacun, et nous donna l’occasion de visiter leurs merveilleux nouveaux locaux, ainsi que leur réputée et enviée machine à café !

    Mais il est impossible de mentionner cette journée sans remercier chaleureusement David St-Onge, qui m’a permis d’essayer pour la première fois FileMaker 1.0 sur un Mac Classic !

  • Cinq !

    Cinq !

    Cette semaine a été annoncé le programme de la FM Conf 2014, qui se tiendra à Toulouse du 23 au 25 octobre.

    Cinq -oui, cinq !- intervenants sur les 15 (hors FileMaker) font partie de l’équipe de 1-more-thing.

    C’est un grand honneur que nous font les organisateurs de la conférence, FileMaker Inc. et La Source Multimédia, qui consacre la notre marche continue vers le niveau le plus avancé de l’expertise.

    Les intervenants

    • Tanguy Colles présentera les nouveautés de la plateforme FileMaker 13
    • Jean-Frédéric Struyven présentera une session sur les outils développeurs de FileMaker Pro Advanced, et un topo de 15 minutes sur les structures “mono-contexte”
    • Martial Le Boulch approfondira la thématique des thèmes et la stylistique des styles.
    • Fabrice Nordmann partagera notre expérience des 3 ans sur la délégation de process au serveur via FMSDIFM et Exécuter Script sur Serveur.
    • Romain Dunand présentera une session comparant l’interface ODBC de FileMaker et l’API php.

    Notre équipe

  • Vidéo de la CQDF… 2012 !

    Vidéo de la CQDF… 2012 !

    Cela nous avait échappé, mais la session de Fabrice Nordmann lors de la Conférence Québécoise des Développeurs FileMaker est disponible en vidéo !

    Il est amusant de voir que toutes les techniques très “tendance” en 2014 étaient déjà détaillées dans cette session (exécution de scripts sur serveur, interactions avec le webviewer…)

  • FMDevCon 2014 à Bologne

    FMDevCon 2014 à Bologne

    Fabrice Nordmann de 1-more-thing présentera une session sur la délégation des tâches à FileMaker Server lors de la FMDevCon 2014, qui se tiendra à Bologne du 14 au 16 octobre.