 Okay. So, I will talk about four per web service I wrote, and I hope you may like them. First, let me introduce myself. So, I'm Luc Dideris. I'm known as from a sky or just sky on the web. I'm a sysadmin, so I'm not, I don't develop for work. But, I am a pearl addict. I love pearl, I dream pearl, I eat pearl. Please excuse my accent. I'm French. And, yeah, I'm French. Since the beginning of my journey as a sysadmin, I developed a lot of software, scrapes, diamonds, some junk to do one thing and forget it. Not all of them are public because some are just for the work. Or not really useful and I'm not really proud of them, so not public. But, there are some I'm quite proud of. So, the four per web services are a new URL shortener, which is called LSTU. Images of hosting software, Lutin. A file hosting software, Luffy. And Doloman, quite complicated to explain just like that what it does. But, it's about statistics, about links. So, I never talk of those software in English. So, as you heard, LSTU, Lutin, Luffy, I just tell the name like French people would do. So, LSTU, I wrote it in 2013. It stands for Let's Shorten Virtual. It's quite simple because what does it do? It shortens URLs. I'm not really good at naming software. You will understand later. But, there is a lot of URL shortening service for why creating another one. Best reason in the world, the boredom. One evening, I was bored. But, I wanted to cut something. You know, do you ever had the stickling in your fingers? I want to cut something. I want to cut. But what? No idea. So, it was an evening. It was, I thought, something with modular issues. Because I love modular issues. Because modular issues was a web framework I used at work on those times. It does a lot of things. It simplifies a lot of things. It contains a lot of features. So, I wanted to use modular issues because it's a great, great, great web framework. I wanted something fast to code because it was one evening. I wanted to have proof of concept. In one evening. So, URL shortener takes URL, gives URL. And when you go to the given URL, it redirects you to the first URL. What is simpler than that? Quite nothing. So, it was perfect just to have fun. The interface is really simple. You have one URL, one field. You give the original URL. You can choose to have a customized shortener text. Because group.gl.emv, capital W, et cetera, is quite helpful to give to people. But sometimes, and sometimes you want to have a very simple URL to give to people. For example, here is a talk about Android Sheet Tof, Sheet To. Is it a U or a V? So, you can want to have a simple URL, lstu.ifr slash Android Sheet Tof. Done. Something simple that you may put on Kakemono and Flyers, et cetera. So, a custom shortener, shorten URL is quite useful. So, it's really simple. You give an URL. You optionally give a custom shortcut, shorten URL. Lstu gives you an URL, obviously, and QR code. Because nowadays, you have QR code on Flyers and other communication stuff. And you simply use a new URL instead of the original one. The visitors are redirected with a permanent redirection to the original URL. And it increments visit culture on Lstu because it was simple to code. And I quite like to know if people go on my links. And that's it. It's really simple, basic, simple. You can obviously, you can see your statistics about your links. But it's only stored. The contours are server-side. But your shorten URL are stored in cookies. Because I wanted to, I didn't want to store who shorten that URL. This URL belongs to who? I don't know. I don't want to know. My software is quite privacy-oriented. So, the less I know, the better it is. Some tech details about Lstu. So, you choose a major issues framework. There is a Cpan file on the git repository. So, you can deploy in that preferred way to deploy Lstu. You can deploy it with carton. You install the dependencies in local. And you have all the things you need with the version I used to develop. So, better. Currently, it supports SQLite, MySQL, PostgreSQL. But any database can be used. You just have to code the connector. It's really simple. Since Lstu doesn't do much things, the operation of the database are simple. So, everyone can write a connector. I didn't write the MySQL connector. I just did the SQLite and the PostgreSQL. There is a theme system. So, the interface you saw previously is not the only one. I have two official themes, and anybody can write his own theme. And it's internationalized, and it supports four languages for now. Let's go to Lutin. I wrote that one one year after. Lutin stands for Let's Upload That Image. When I said I am bad at naming self-prayer, it's not a joke. So, you upload images, and you give the URL to your friends or use it in your website or do whatever you want with a new URL that's point to an image. The main goal was... It was an XMPP conversation with friends. I have a problem on that software. Can you send me a screenshot? XMPP is great, great, but sometimes it's quite hard to send files through XMPP. My server doesn't... My server is not configured for that, so I'm behind a proxy, et cetera, et cetera. So, simple things. You drop the image on Lutin, you have a new URL, you give a URL to your friends. That was the main goal for what I wrote Lutin. Privacy. Images can be encrypted, server-side, because if you encrypt the images on client-side, you can choose the images on your website without some JavaScript. So, I wanted to make things simpler for the user. But still, the service provider can see them, but you just have to look at the access log in Enginix or Apache to see the decryption key. You have to have a trust in your Lutin provider or provide your hosting it yourself. It's fire and forget, so you can have an auto-destruction delay. So, for the screenshot to my friends, I don't want to put too much data on my Lutin server, so I just said in seven days it will be auto-destroyed. Or you can even have destroyed at first view. So, I give one to one friends, even if you give the URL to other people, other people can have the images. But, obviously, my friend can download the image and give the image to other people, but still. You can store the image in one place and use it everywhere, websites, social networks, et cetera. So, in diaspora network, there's some times when you are on multiple social networks, you may want to post the same image on diaspora and mastodon on this one and this one and this one. So, you may just upload it on Lutin and give a URL. There is a social integration for Twitter because I use Twitter on those times. And so, it's embedded in Twitter. VNTFS is less simple than LSTU because it does more things. So, you can see here, delete at first view. You can have a delete by default. You hit delete, exit tags on the images you sent. You can choose the deletion delay. You can even just put an image URL here and Lutin will fetch it for you. So, you choose your option, retention delay, exit tag, deletion, et cetera. You drop the image, you have an URL, you use it. And when somebody sees the image, a visit control. I like visit controls. And that's all. But you can do more. You can delete your own images. This time, the image property ownership is still not stored on the server. It's still on your browser. But that's not cookies this time. It's in local storage. Why local storage instead of cookies? Because cookies are more often deleted than local storage. And I already have JavaScript on Lutin for it to work. So, I can use the local storage and manipulating it with JavaScript. On LSTU, you can visit it without JavaScript. It works. Lutin, it works, but you don't have all the features. And you can create a gallery with your images. So, you upload 10 photos of your vacation and you have an URL with a gallery. So, hey grandma, I'm in Brussels right now and I took some photos. Here's the link. And she doesn't have to go on 10 links. She has her link to show, to see all your photos. Lutin was based on the LSTU code. It's quite similar on some aspects for the randomness of a URL. It grows, it grows, but it's still LSTU children. And I, when I, sometimes I introduce a feature in Lutin and I back part it to LSTU because it may be useful. Take details, quite similar. Modules issues, cartons, SQLite and PostgreSQL DB. Since I didn't wrote the MySQL DB connector on LSTU, I didn't, I don't want, I don't like MySQL so I don't write connector for them. It has the same system and it's just internalized too. Luffy. So, here after. Luffy stands for let's upload that file. You see the scheme in the naming, in the naming software. You upload files and you have an URL. Still a simple interface. Drop file. Delete that first download. Retention delete. What is that? Ah, you can add a password to Fox. This time the file is encrypted on client side with JavaScript and some JavaScript libraries I don't understand but they do some good crypto. Stanford, crypto, SCGL. Don't remember the acronym of the JavaScript library but it's a good encryption library. It's quite the only one you can use nowadays. So you choose the retention delete. You drop a file, file and you encrypted. You have an URL, you give a URL to your friend. The file is decrypted on the client side and a visit counter is incremented. And if the file is an image or a video it can be watched or viewed directly in the browser. So, decryption is done. And you have a video player appearing and you don't have to download to get the file on your disk to watch the video. Luffy used some code of Lutain and it's still a grad, still Lutain's children. And just like for Lutain and LSTU when I do something in Luffy that you can be useful for LSTU or Lutain I bypass the features. Take details. This time the encryption key is never sent to the server. The file hosters can never decrypt the file on the server. Modularized framework, Cartoon, SQLite, PostgreSQL, FIM system and internalized. Doloman. I began to work on Doloman in 2015 but the real first working version is from last year. It stands for download monitor. You see, I'm getting better at naming software. Simple links visit statistics. So, when you think about statistics, about analytics for websites you, whether you use Piwik, no Matomo or you use Google Analytics or some other shitty service you may use AWS state. I don't know how to spell it. But the thing is the softwares make great, great, great, great, great statistics. But sometimes you just want to know how many times somebody, how many people goes on my page. I don't want to know if they use Firefox, Chrome. I don't know if their screen resolution is 2000. I don't care. Sometimes I just want to have simple control. So, I wrote a software. What does that? The interface is quite complicated. So, you don't have just one page like the other softwares. The better thing to do is to test it because I will explain all of that but I can't show you exactly how it works. So, it's quite like an URL shortener. I want to say, you give an URL, it gives you another URL. It's not really shortened. But who said that a URL shortener has to be really shortened? When you go on Twitter, the links are transformed to t.co. The URL is shortened. Well, it's transformed. You can say it's short because it's long. So, you give your URL to the lowman. It gives you another URL. That I called a dolo. Just because I wanted to have a fun name. When people use the dolo URL, they are redirected to the target with a temporary redirect because unlike LSTU, in LSTU, when you create a short-term URL, you can't move it. You can delete it. You can change it. It's permanent. So, I permanently redirect the people that visit the links. In Dolemon, you can change the target link. So, it's a temporary redirection. And then, I increment contours but with a job queue. Why a job queue? Just because to be able to try to increment more contours, it's quite a complicated work to increment all the contours. It takes times. It calls the database multiple times. So, better if it's on a different job queue. If it's not down, just when people visit the link. In fact, I created Dolemon because of a friend that use WordPress. WordPress is quite good. But he use a plugin on WordPress that is called Donut Monitor. And the problem with that plugin, so it does quite the same thing as Dolemon. So, transform an URL in another URL and increment a counter. But that friend had a lot of visits and people used the watch links a lot. And WordPress as a Donut Monitor is synchronous. It took the database, look at the database. Okay. This is the URL. I will redirect the person too. And I increment and I redirect. And when you have a lot of visits, the increment puts the server down. Seriously. So, the seat was unusable. All the seats were frozen because the database access exploded. Just so that. So, first an external service. And then asynchronous, not synchronously, increments the contours. So, when you have time, you increments, if you have a lot of jobs, well, it's a job queue. I treat them back by back, four by four. And if I really want, I create another job queue process and it will work faster. So, this is why it's a job queue. The statistics are available in different granularities. Each visits are stored for three days. So, for three days, you can know at what time people click on the link. Visits per day are stored for 90 days, per default. All the periods of granularities are configurable in the configuration file. So, per default, by default, it's 90 days. Per week, 12 weeks. Per month, 36 months. And per year, they are stored forever. But one of the things I don't like about per week is that you can go really, really, really, really, really long in the past and have statistics. But do you really want to know on each day of the year 2000 what were the statistics in the year 2000 per day? If you're serious, first you store the reports and then you compare from the reports of the last year. You don't have to go to per week each year to compare on per week. So, that's why granularity is bad on the old days and good on the recently. And that's for having a database on the correct size. Per week just grows and grows and grows and grows. The size of the database of per week grows forever. Then you have lovely graph. And you can see for the three last days, last 90 days, last 12 weeks, et cetera. You can download the raw data. So, you can import them in LibreFiscal and do graph like you want. One thing, you can organize your dolo. So, I repeat, one dolo is one URL. So, you can organize your dolo in categories and you can add tags. So, that you can have aggregated statistics for one category for one tag. So, my friend who used the download monitor on WordPress, he now uses dolemon. Sorry. He has a category, hiphub. He's currently writing a novel. And you want to know how many people download the hiphub file of his novel. So, you have one URL per chapter. And with the categories system, you can just click on categories and have all the statistics for his novel. Dolemon, it's like LSTU in the core. It's like an URL shortener. So, he was inspired by LSTU. And my friend asked, can I have a good statistic in the LSTU? No. I will write another software because LSTU is simple and I want to keep it simple. The statistics are fully anonymous. No tracking is done. The only cookie Dolemon sent to the browser is a cookie to say which stays for three minutes by default. And to avoid to kunt people that click and click and click for the same link multiple times. There are people that click, click, click. Or if you want to falsify statistics, you click, click, click. If you have the cookie, you can't. But if there is a do not track header, I don't send the cookie. I developed, so it was for WordPress. So I developed a WordPress plugin to create dollars from WordPress. It's not on the WordPress plugin base, but it's on its way. Take details. What a surprise! Major issues. Carton. Only PostgreSQL, because I didn't want to bother with our database. And since you may have a lot of traffic on the public Dolemon instance you want to have PostgreSQL. Unlike Pwik that works and that uses MySQL and that's such a bad choice. So it has a theme system. It's internationalized. Two languages, English, French, of course. So from one evening of boredom, a family software is born. That's because I wanted to cut something. And people liked it. And well, I like coding. I like writing software. So it's a long and fun journey to write software. Lutin, LSTU, Luffy and Dolemon are used in production, are production-ready. They are used by Fromacev Test Association. It's a non-profit organization. And it's quite like, it's battle test. It's battle tested. On the official instance of Lutin, LUT.em, LUT.em I already have two millions or more images. I don't have two million images now. That's because they are self-destruct. But I already stored two million images. So we have to find the software. So it's always on fromagit.org slash luke slash the name of the software. LSTU, LUTIN, Luffy, Dolemon. LSTU, you can try and use it on LSTU.fr or froma.link. LUTIN, it's on LUT.em or fromapeak.org. For Luffy, there is no official instance. There is a demo instance on demo.luffy.io. Oh, a typo. It's not .org, it's .io. But you can use it for real on fromadop.org. Dolemon, no official instance. But you can use and try on froma.link.org. If you want to help for a translation, you can go on navartipo.trad.fromasaf.org. And you can download those slides on LSTU.fr slash firstdem dash 2018. Do you have any questions? No questions. I don't have modules. It's softwares and not modules. And it's quite complicated for me. I may be able to do it. But it's quite complicated. And I already have a problem on my own for meeting the softwares. And I didn't took the time. And because I use a carton, I don't know how to integrate carton in C-Pen release. So it may be a little bit complicated. But I developed some modules for those softwares, which I released on the C-Pen.