Tech trends
The latest news on emerging technology — AI, Blockchain, VR, Big Data and more.

Understand Ethereum by crea...

In this tutorial, we are going to demystify blockchain technologies and the concept of cryptocurrency by letting you create your own token. Firs off, it's important to distinguish “coins” from “tokens”—a coin is the native currency of a particular blockchain (e.g. Ether is Ethereum’s coin) while tokens are tradable assets living on a host blockchain. Here is a list of tokens by market capitalisation. Tokens don’t have their own blockchain, instead they are emitted and managed by a smart contract on a host blockchain. We will unpack that point later. You don't need any particular skills or knowledge to follow this tutorial, it’s equally useful for novice users, but before we start, we need to define three things: Decentralised: anything that doesn’t rely on a single entity, but rather on a distributed network (see the image below). In the cryptocurrency world, entities are connected to nodes, and nodes are connected between them. Ethereum: You can imagine it as a single “decentralised computer connected and running on the Internet”. Remember the old days when you had to pay to use a computer in a cyber café? Well, it’s kind of the same thing, you can pay (with the Ether cryptocurrency) to use this global computer, which is composed of all the interconnected nodes. Smart contract: The Ethereum global computer is a bit different from the one you’re using to read this article. Meaning that standard programs and apps you run on your computers and smartphones cannot run on the Ethereum computer. Smart contracts are a kind of program or entities written in a specific language that can be executed on the Ethereum network. 1. Set up an Ethereum wallet First, you are going to need an ethereum wallet. In the cryptosphere, a wallet refers to a blockchain client. It allows you to interact with the blockchain and to store coins and tokens. The easy path to get your wallet is to install the browser extension Metamask. Go ahead and install the chrome extension. Once Metamask is installed, you'll be prompted to input an 8+ character password. At some point you'll be prompted with a 12-word pass phrase which lets you create your wallet and automatically add it to your Metamask account. Store it somewhere safe and offline. For a main network wallet, it’s common to write it down on a piece of paper and lock it somewhere safe. For the sake of simplicity and because we will be working with test coins, a simple .txt file works. To make certain you have written down the 12-word pass phrase you will be prompted to input it again. At this point your wallet is fully set up. You might be prompted to buy coin, but just click on ‘get access to my ether wallet’. 2. Get some coins In order to start deploying smart contracts, you will need some coins. Indeed, in order to process transactions on the Ethereum network, you have to pay a small transaction fee. This fee is paid in what is called "Gas", you can think of it as the computational power your transaction will cost on the decentralised Ethereum computer, and therefore the fee you will have to pay to use the network. We will be using the Rinkeby testnet. This network implements the exact same protocol as Ethereum but testcoins are free (thus worthless), it is used to test contracts before uploading them to the main network. You can imagine it as a free "sandbox" for developers. First you will need your Ethereum Rinkeby testnet address: Open Metamask, select Rinkeby testnet. Click on "Account 1" to copy your address to the clipboard, you'll need to paste it on the faucet to get testnet Ethereum Go here and follow the procedure, you’ll have to post your Ethereum address to a social network (Twitter, Facebook, Google+). Get back to Metamask and check that your coins have been sent (make sure the Rinkeby network is selected). This process shouldn’t take long. When completed, you'll see your fresh new Ether in Metamask. 3. Create and deploy your ERC20 token In order to start developing smart contracts, you will need a Solidity development environment. Solidity is the native Ethereum smart contract development language. If you are familiar with Javascript, Solidity will seem very familiar. There are plenty of ways to write, compile and deploy Solidity contracts, but the easy way (and the method recommended by the Ethereum community) is remix IDE. Quick tip: Don’t be intimidated by the last paragraph. You can continue this step without having any programming skills. You just need to know that an IDE (integrated development environment) is a tool that lets you write and execute code. Remix is a web based IDE, so you can access it through your browser or download the app. For the sake of simplicity, we will use the web app. Go ahead and access remix IDE. On the left side select ballot.sol and delete the code (if you prefer, like me, a darker interface you can choose the "Dark Theme" in the "Settings" tab). Now add the following code instead (You can read the code if you want to, but it’s not compulsory to understand it to continue): pragma solidity >=0.4.0 <0.6.0; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract BasicToken is ERC20Basic { mapping(address => uint256) balances; uint256 totalSupply_; /** * @dev total number of tokens in existence * @return totalSupply_ An uint256 representing the total amount of Tokens ever issued. */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender] - _value; balances[_to] = balances[_to] + _value; emit Transfer(msg.sender, _to, _value); return true; } } /** * @title Jug Token * */ contract PaloToken is BasicToken { string public constant name = "PaloToken"; string public constant symbol = "PITT"; uint8 public constant decimals = 8; uint256 public ethRaised_ = 0; function buyToken() public payable { uint tokens = msg.value * 1000000; balances[msg.sender] = balances[msg.sender] + tokens; ethRaised_ = ethRaised_ + msg.value; totalSupply_ = totalSupply_ + tokens; } constructor() public{ totalSupply_ = 500000000000; balances[msg.sender] = totalSupply_; emit Transfer(address(0), msg.sender, totalSupply_); } } ERC20 is a smart contract standard to implement tokens on Ethereum. If you want more details, check the official wiki page about ERC20 tokens. At line 56, inside the "contract PaloToken is BasicToken", you can change the token name from "PaloToken" and symbol "PITT" to whatever you want. The symbol is your token symbol—a "shorter" name, like a ticker symbol as used on the stock market (e.g. BTC for Bitcoin, FB for Facebook). Now we need to run the code so we can create a smart contract, then we have to deploy it to the test network: Step 1: Select the right compiler. The compiler will “translate” the code into a language computers can understand (only composed of “0” and “1”). On the upper right side of your ‘Remix’ window, click on "Select new compiler version", then choose the "0.5.2+commit1df8f40c" as shown in red in the following screenshot: Step 2: Select the ‘Run’ tab on the upper right side (shown in green). Step 3: Select ‘PaloToken’ on the right side panel instead of ‘BasicToken’ (see the orange arrow in the next screenshot). If you only choose ‘BasicToken’, you will have a non-standard ERC20 token, and you'll have very few functionalities: Step 4 : Click on ‘Deploy’ You should now have a Metamask popup window open. If not you should see a notification on the Metamask icon in your browser (see the red circle). Confirm your transaction by clicking on the ‘confirm’ button: You are now able to see your deployed contract: Expand your contract, and click on the ‘copy’ button shown in green to copy your contract address. Now go to https://rinkeby.etherscan.io/ and paste your contract address in the search form in the upper right: If everything worked fine you'll see something like this: You can now click on your token name next to "Token Tracker". You'll get information like the total supply, the number of token holders, the full transactions record, etc... Open Metamask again. click on the menu on the upper left, then scroll down and choose ‘Add Token’: Then choose ‘Custom Token’ and paste your contract address—the same one that you had to copy in Etherscan to check your token creation process—in the ‘Token Contract Address’ field. It will automatically fill the other fields: Symbol Decimal represents the maximum number of decimals you can divide each coin by (like 0.0001 PTT) Now click ‘Next’ and ‘Add Token’. Wait a moment... Congratulations! You just created a brand new cryptocurrency! You now own 5,000 coins of your own token. 4. Give me some tokens! I deserve it as I helped you creating your first cryptocurrency 😁! Open Metamask again, and select your coin on the menu that appears by clicking the top-left button. Now hit the ‘Send’ button. Insert my address on the ‘Recipient address’ field: 0xE9E197Fc393FbBF56A403D2037eB5b9F5c38782e Pay attention to the ‘advanced option’ link on the bottom, we may use it if the transaction fails. Remember we are on a testnet, it is much less stable than the Ethereum Mainnet (the real production network). If everything worked, Metamask will prompt you, saying that your attempt was a success. First, let me thank you for your coins. Now, have a look at the public ledger: https://rinkeby.etherscan.io/address/0xe9e197fc393fbbf56a403d2037eb5b9f5c38782e#tokentxns If it failed, try again, but this time you'll have to hit the ‘Advanced options’ and increase the gas limit (let's say to 10,000,000). This is my ERC20 token wallet. It may be deleted in the near future as tests network often get wiped clean due to stability issues or other reasons. If this happens, follow this link and pick an address randomly from the ‘From’ field, and click on it: Then copy this address (click the button on the right): 5. Bonus: The first step in launching your ICO Go back to Remix and have a look at the right panel. In ‘Value’ input 100,000 wei (that's 0.0000000000001 Ether). Step 1 in red. Hit the ‘buyToken’ button (don't forget to expand your deployed contract interface by clicking on it if it hasn't been done before). Step 2 is shown in green. Accept your transaction (abbreviated as "Tx") in Metamask. Congratulations! You’ve now received some newly generated tokens in exchange them for Ether! This is exactly how things are playing out with ICOs. You send them Bitcoin, Ethereum, or another cryptocurrency and they give you back their own token. Right now you can only do it via Remix or some other simple solution. Your next step would be creating a website with a nice front-end interface so you can easily interact with your contract, and spread it on the Internet. After reading this tutorial, hopefully you’ve realised that creating a personalised cryptocurrency isn't so difficult. Someone with little programming skill can add many functionalities and even start to raise funds.

Blockchain for Enter...

Blockchain for Enterprise is a controversial topic. On one hand, you have the Blockchain “purists” who insist that Blockchain is a tool for decentralization and was meant to take power back from the “greedy corporates” and put it back into the hands of the masses. On the other hand, you have people who are strong believers that Blockchain can fix every problem that plagues the enterprise world. My opinion on the matter rests somewhere in the middle. While I do agree with the former group when we talk about ventures like Bitcoin, I think most of these people seem to forget that Blockchain is so much more than cryptocurrencies. While decentralization is a fundamental pillar in the cryptocurrency world, it is not applicable to several interesting use cases in the Enterprise world. On the other end of the spectrum, there are people who tout Blockchain as a silver bullet for pretty much everything in an Enterprise context. While I think Blockchain can be used in a large variety of situations, I think a general rule of thumb for most companies should be: if your problem statement does not include interactions between a large consortium of companies, don’t use blockchain. This is where the benefits of Blockchain are truly realized. First and foremost, you reduce cost by getting rid of third parties that might be in the middle of you and other companies you deal with. It also makes for greater transparency, as all transactions are recorded and visible. Security is one of the major benefits too, as data is shared across multiple parties, making it significantly harder for hackers to change anything. At PALO IT, we have received multiple requests from big enterprises who want to do POCs on Blockchain. While some of these do fall into the lets-use-blockchain-because-why-not category, there are others who actually could benefit a lot from Blockchain. I think some of the emerging themes that we see are centered around Education (for instance, a network of decentralized education providers, who could track certifications of people on the Blockchain), Settlement Systems (between collaborating Banks, or global Telco partners etc), Health (for instance, unified patient medical history across different clinics or hospitals). These use cases are just the tip of the iceberg and the benefits that you could get in these industries, by cheaper and easier sharing of information, are huge. A lot of the clients who approach us are mainly just trying to explore Blockchain technology, and trying to discover if/how it could help them with certain problems within the company. Unfortunately, exploration is not always very easy for a person who is just jumping into the technology. There is a whole host of things that a person would need to know before they even reach a place where they could work on their original use case. This is why we decided at PALO IT to create a simple, open-source tool (called Hash-It) which could help someone looking around to play with Blockchain easily. The vision is that from a UI aspect — someone can deploy a new private Blockchain network with the click-of-a-button. Once the network is created, the tool will provide the user with ready-made application templates (smart contracts), which would tackle some of the common themes I mentioned above. Users will be able to easily customize or “code” the smart contracts through the UI, and tweak them according to their own requirements. Once done, they can deploy the smart contracts onto the private network, and then interact with the smart contracts through the UI as well. All of this makes it very easy to visualize how a decentralized Blockchain application works. Once we had set the vision, we worked on the “How” of this project. The first step was to choose a Blockchain platform, which would allow us to build smart contracts. After going through some options, we decided that we would leverage on Ethereum, as it met our basic requirements. Ethereum provides out-of-the-box support for Proof-of-Authority private networks, which we think are perfect for an Enterprise context. On the infrastructure layer, we worked closely with our friends at Microsoft and decided to use the Azure Blockchain Workbench. Workbench makes it ridiculously easy to create and manage an Ethereum network, and scaling up/down is very easy. The Hash-It tool itself would be an AngularJS UI, served by a set of Java microservices running on a Kubernetes cluster. To build the actual tool, we conducted an internal hackathon across all our offices globally over the course of one weekend. The event itself was fun and challenging! A large number of interested Palowans came down over the weekend to help build the tool and to work on their areas of interest. Some engineers from our partner, Microsoft, were also present at the hackathon. At the end of the hackathon, while we weren’t completely finished, we did complete a significant part of the work. In the coming weeks, we are going to look to wrap this up, and share the product with the community! Overall, we believe this tool would be really valuable to a lot of enterprises keen on exploring the Blockchain world, as it can drastically reduce the time spent understanding Blockchain and developing MVPs. If you’re looking to create a Blockchain application, this tool can help you deploy your own private Ethereum network, and then help you write, deploy and interact with your own smart contract in a matter of minutes! It makes experimentation a lot more fun, as you don’t have to worry about the detail of the underlying infrastructure setup, or the deployment details, and can focus solely on achieving your business function. Do get in touch with us if this is something you’re interested in, and we can arrange a demo for you!

Quelle relation entr...

Comme tout responsable de développement business, je m’interroge constamment sur les clefs de la croissance dans notre monde en perpétuel changement. J’ai découvert que le Cloud est un puissant contributeur à la croissance. Pour nous en convaincre, je m’appuie sur l’étude menée par Salim Ismail dans son livre “Exponential Organizations”. L’ouvrage présente 10 pratiques amenant à une croissance ultra-rapide. Ces pratiques, utilisées par les grands du monde Internet (Google, BlaBlaCar, Netflix, Airbnb…), s’appuient sur le Cloud. La bonne nouvelle est qu’elles sont également applicables à toute entreprise. Le livre propose de répartir les 10 pratiques de croissance en deux groupes : celles orientées vers l’audience extérieure (clients, partenaires…), et celles orientées vers l’interne (employés, ressources internes). Pratiques orientées vers l’externe Savoir profiter de l’effet de masse engendré par l’accès à Internet amène la croissance rapide. Les entreprises dans ce cas ont une capacité de scalabilité et d’élasticité très importante du SI en contact avec Internet. Par exemple, en sachant créer et animer des communautés ouvertes autour de sa marque, l’entreprise doit accueillir un trafic croissant et rapidement variable. D’autres pratiques telles que l’usage de la data science (Algorithmes) demande de créer des environnements de travail de manière dynamique et de profiter des dernières technologies du domaine sans passer des mois de R&D à les acquérir (usage du PaaS). Le fait d’utiliser les actifs des tiers est sûrement la pratique la plus “nativement cloud” : Le cloud lui-même porte cette idée de bâtir sur les actifs des opérateurs cloud et de variabiliser les coûts d’infrastructure. Pour finir sur cette partie, les fonctions d’engagement des clients et partenaires font appel à des mécanismes transactionnels plus complexes (par exemple des décisions liées au marquage des données de navigation web) et on doit sans arrêt renouveler les services offerts aux clients pour maintenir leur engagement. Le cloud permet le déploiement rapide d’applications variées et évolutives augmentant l’engagement des clients envers la marque. Pratiques orientées vers l’interne Il se pose la question de comment les interactions massives avec l’extérieur sont digérées par l’intérieur de l’entreprise. Pour cela, un système interface sait condenser ou router en temps réel les informations venant de l’extérieur. Le cloud et les middlewares de nouvelle génération (par exemple les apporte bases de données non structurées) apportent toute l’élasticité nécessaire à ce type de fonction. Les décisions de l’entreprises à forte croissance peuvent avoir un impact majeur sur leurs résultats. Avoir un retour rapide et fiable sur les actions est apporté par le développement des tableaux de bord et leur adaptation continuelle. Le cloud, grâce aux offres de data visualisation et la capacité à déployer des applications adaptées en continu, offre cette souplesse. Les trois dernières pratiques sont présentes dans le concept « d’entreprise apprenante ». D’une part, la capacité d’expérimenter des offres et des nouvelles manières de faire à coût variable, sans investissement, est largement supportée par le cloud. D’autre part, le partage des informations à travers les réseaux et outils collaboratifs sont également massivement utilisés. Les offres SaaS dans ce domaine offrent toutes possibilités. Conclusion Ainsi, les entreprises en forte croissance s’appuient sur le Cloud, car il offre 5 propriétés supportant les pratiques de croissance des entreprises : Elasticité: monter et descendre la capacité du SI à la demande Scalabilité : pouvoir augmenter sans limite la capacité Coût à la consommation : utiliser les actifs en coût variable Déploiements et environnements à la demande : rénover les applications rapidement Dernières technologies disponibles sans R&D : s’appuyer sur la R&D des opérateurs cloud

L’IA qui répond inte...

L’intelligence artificielle semble créer un mouvement d’idées important dans le monde entier. Les états comme la Chine, la Franceet d’autres en font une priorité économique. Les entreprises en font une méthode de communication vis-à-vis de leurs actionnaires sans d’ailleurs avoir une idée juste de leur promesse (sauf cas exceptionnel). Chez PALO IT, nous ne prétendons pas tout connaitre dans le domaine de l’intelligence artificielle car le sujet est très vaste et très varié. Mais depuis 2 ans, nous travaillons dans le domaine de la compréhension du langage humain écrit. Dans ce domaine,  nous voulons vous persuader que la technologie est devenue industrialisable donc utilisable. Comme il y a 3-5 ans, les réseaux de neurones dit de convolution ont permis d’immenses progrès dans la reconnaissance d’images, les réseaux de neurones de type Long short-term memory(LSTM) nous ouvrent aujourd’hui une bonne perspective dans la compréhension du langage. OBJECTIFS DE CE POST Replacer le buzz sur l’IA à sa place de “bla-bla buzz”. En quelques mots, vous décrire ce qu’est réellement l’IA actuelle. Le travail et les difficultés rencontrées depuis 30 ans sur la compréhension du langage humain. La révolution qui se prépare, en comprendre les contours économiques et surtout en expliquer les capacités et les limites pour l’instant. L’Intelligence artificielle une croyance ou une réalité : La terminologie – malheureuse ! – d’Intelligence Artificielle est apparue en 1956 : L’Intelligence Artificielle (IA) est la science dont le but est de faire faire par une machine des tâches que l’homme accomplit en utilisant son intelligence. C’est FAUX On peut lui préférer celle de Calcul Informatique capable de simuler des tâches humaines sans présager de ce qu’est l’intelligence. "Depuis 30 ans, les chercheurs cherchent à comprendre le langage humain mais les chercheurs qui cherchent, on en trouve mais des chercheurs qui trouvent, on en cherche !" Après la dernière Guerre Mondiale, les états riches comme les Etats-Unisont investi beaucoup d’argent sur la promesse suivante : Il suffit d’avoir un ordinateur puissant et un logiciel qui connaît tous les mots et leurs règles de liaison pour comprendre la grammaire d’un langage humain comme un programme(compilateur) interprète un programme écrit en Cobol,Java ou autres. Raté : Le langage humain n’entre pas dans la catégorie des grammaires formelles aussi complexes soient-elles, contrairement à ce que des générations de professeurs ont voulu nous persuader. Vous connaissez les messages véhiculés par Twitter donc vous savez que le langage humain change en fonction de la culture et du contexte quitte à inventer de nouveaux concepts à chaque échange. Mais à l’époque, il n’y avait pas Twitter donc nous dirons que l’erreur est humaine. La révolution du Word Embedding et des réseaux de neurones profonds (Deep Learning) est une histoire d’hommes qui n’ont pas lâchés leur conviction. Le résultat de leur travaux est maintenant disponible et mesurable : La révolution est venue de l’idée que la sémantique d’un mot ne s’explique que par la connaissance de la présence possible des mots voisins dans toutes les phrases imaginables. Cette connaissance est connue par vous et par vos interlocuteurs donc vous vous comprenez. Un langage humain transporte ainsi votre culture qui est partagée par votre interlocuteur sinon vous devriez faire comme les italiens parler avec vos mains, pas simple ! Prenons un exemple : un chaperon : vous comprenez que l’on parle d’une profession qui a disparu (et heureusement). un chaperon rouge : vous comprenez que je parle d’une héroïne d’un conte de Charles Perrault Un mot peut changer de sens en fonction des mots qui l’entourent. Et pourtant, il a toujours un sens quand il est seul. Mais ce sens pour vous vient des mots qui peuvent l’entourer dans votre culture. Nous sommes passés du mot parmi d’autres à une représentation du mot par rapport aux autres mots. Un mot n’est plus un point dans la liste des mots mais un vecteur dans l’espace de représentation des mots. Collobert & Weston, chercheurs américains, ont trouvé une méthode pour calculer ces vecteurs en 2008 en utilisant des réseaux de neurones alors que tout le monde avait abandonné ce type de sujet. Ensuite la communauté scientifique a largement amélioré et utilisé cette vision en utilisant les réseaux de neurones car le deep learning à base de réseaux de neurones, avait révolutionné le domaine du traitement de l’image. Le véhicule autonome est le premier résultat industriel de ce progrès technique. Plus spécifiquement, la communauté scientifique a utilisé cette vision sur les problèmes difficiles comme la réponse à des questions ouvertes sur des textes fournis. L’université de Stanforda organisé une compétition dans ce domaine.N’hésitez pas à consulter ce site :SQUAD Ce site donne accès à un QCM avec 100 000 questions réponses sur des textes. Chaque compétiteur est mesuré avec un jeu de données que personne ne connaît. Ci-dessous, les qualités de prédictions sur 19 mois en arrière sachant cette mesure a été faite en mars 2018. La ligne rouge est le meilleur résultat des étudiants de Stanford qui ont fait le test. En bleu, la progression des algorithmes depuis 19 mois. On peut voir que les calculs semblent pouvoir faire mieux que l’homme sachant lire. À partir des écrits des chercheurs, nous avons refait un modèle et fait tourner sur ce jeu de données en apprentissage et en test. Nous avons atteint la qualité de 79,6. Ouf… cela fonctionne comme dans les papiers des chercheurs. Mais comment la machine répond sur des textes particuliers et ciblés ? Pour le tester, nous avons choisi un texte en anglais difficile à comprendre. Il s’agit du texte juridique qui régule l’utilisation des données personnelles, dit la RGPD. Et voilà, un résultat sur ce texte de lois : Question: “Who should infringe the regulation?” Réponses du calcul : Public authorities Member States The supervisory authorities Mais surtout les réponses sont intéressantes quand on a l’article qui contient la réponse. Vous pouvez venir tester le bot RGPD –> Ici <–  en cliquant sur “Sign Up” pour obtenir un droit d’accès. Nous pensons vous avoir prouvé qu’il est maintenant possible de répondre à des questions ouvertes sur un texte fourni par l’homme. L’humain est le professeur et le créateur des contenus. La machine apprend et répète intelligemment en répondant à des questions ouvertes.

Comment tirer profit...

De quoi parlons nous ? Nous appelons“logiciel cognitif”un logiciel qui mime les capacités cognitives d’un homme, c’est à dire qui résout un problème comme un homme le ferait. Des technologies variées (machine learning, deep learning, auto-apprentissage…) évoluent très rapidement et savoir en tirer parti rapidement est un réel accélérateur d’innovation et de compétitivité pour l’entreprise. Ce billet de blog propose une approche pour concevoir et exploiter au mieux des logiciels cognitifs. Le modèle SAMR aide à y voir plus clair Le modèle SAMR aide à concevoir le niveau d’impact d’une technologie (en l’occurrence,  l’intelligence artificielle) dans l’entreprise. Il définit quatre niveaux d’adoption d’une technologie sur un Produit ou Service (appelé “PoS” dans la suite de ce document) : Substitution: La technologie est appliquée comme substitut dans le PoS mais il ne change pas son fonctionnellement, Augmentation: La technologie est appliquée dans le PoS et il est amélioré fonctionnellement, Modification: La technologie permet de repenser la destination et les fonctions du PoS, Redéfinition: La technologie fait naître des nouveaux usages, manières de faire et impose une redéfinition totale du PoS et de son usage. Les néophytes s’engouffrent dans SAMR ! Il est souvent difficile pour une entreprise non entraînée d’utiliser l’IA pour concevoir ses usages métier. Le champ des applications est tellement vaste que l’entreprise a du mal à trouver par où commencer. La méthode des néophytes “pas trop pressés” est de se baser sur le cadre SAMR et de progresser sur des cas d’usage de l’IA, en partant de Substitutions pour aller progressivement vers la Redéfinition. Mais ce processus est peu efficace car les substitutions ne génèrent que peu ou pas de valeur : elles lassent donc rapidement le management qui s’intéresse au retour sur investissement. Cette approche est donc lente, coûteuse et finalement peu convaincante. Les “exigeants” font de l’IA Design Il est donc nécessaire de trouver les espaces d’opportunité apportant rapidement beaucoup de valeur quelque soit le niveau SAMR du cas d’usage métier (existant ou imaginé). Chez PALO IT, nous avons conçu une méthode de design qui permet : De naviguer dans le labyrinthe des possibles, De trouver ces opportunités Et de positionner la solution IA dans les processus, le système d’information et l’organisation.   Notre cadre de travail est représenté ci-dessous : En entrée de notre méthode de design : Expertise IA La connaissance approfondie des offres et technologies de l’IA, de leurs capacités et limitations permet d’être créatif. Expertise Métier Les experts métiers sont embarqués dans le processus de design où ils décrivent, imaginent et dévoilent des espaces d’usage et d’opportunité (fonctions, valeurs). Système d’information existant Les architectes du SI décrivent le système et ses capacités d’évolution pour incorporer du logiciel cognitif. En sortie de notre méthode de design, sont produits : Cas d’usage / Fonctions cognitives / SI Le cas d’usage proposé et les fonctions cognitives utilisées et leur positionnement dans le SI. Processus Organisation Transformation L’IA a un impact majeur sur l’organisation et les processus. Cela demande un programme de transformation associé. Cet impact est d’autant plus important que le cas d’usage est proche de la Redéfinition, au sens SAMR. La méthode “IA Design” Elle utilise les outils méthodologiques de recherche, cadrage de problèmes, priorisation, ateliers collaboratifs, proto/POC… Toutefois, les capacités fonctionnelles et interactives des technologies de l’IA sont systématiquement injectées dans les réflexions à des points bien stratégiques qui maximisent la valeur et l’identification des possibles. Cette méthode est enrichie au fur et à mesure des projets, ce qui en fait un outil particulièrement pertinent. En conclusion L’adoption de l’IA dans l’entreprise est une affaire de méthode de design avant tout. La vision holistique de l’impact de l’IA est indispensable pour trouver les cas d’usage à forte valeur et les clefs de transformation associées. PALO IT a pensé et éprouvé sa méthode de design IA pour ne pas tomber dans le piège d’une progression linéaire SAMR lente et peu convaincante.

Adopt a cloud soluti...

On November 3rd 2016 took place the very first Devfest conference in Toulouse. The event was a tremendous success and brought together a large community of technology addicts. In this event, you could choose from numerous breakout sessions covering a broad range of technical topics focused on web, mobile and cloud development. I was particularly interested in the sessions presented by Aurélie Vache (Atchik), Didier Girard (Sfeir) and Alain Regnier (Alto Labs) dealing with Big Data implementation using the Google Cloud Platform (GCP), and especially how to facilitate the implementation of Big Data projects using the services of the google cloud stack. " The Google Cloud Platform offers an integrated end to end Big Data solution." It lets you capture, process, store and analyse your data within a single platform. These services are serverless which frees you from the need to build, manage and operate complex and costly infrastructures. This is obviously a major benefit in terms of implementation cost for your Big Data projects. " We can particularly thank Didier Girard for his excellent session where he described the challenges that developers face when dealing with Big Data and how to solve them using the GCP." According to him, the volume of data being generated by today’s applications is increasing at dizzying rates. The real challenge is not to store a big amount of data to analyse them at a future date, but to be able to consume a large volume of events and extract meaningful informations in real time. He then presented the typical GCP architecture used to build such a solution and did a live demo of an application consuming roughly 100000 events per second. Cloud Pub/sub Is a real-time messaging service that allows you to send and receive data between independent applications. A messaging queue supports many to many communications, meaning that a Pub/Sub can be configured to support multiple publishers and subscribers. It is highly scalable, as the service can handle 10000 messages per second by default and up to several millions on demand. That makes it a major asset to capture big amount of real time events originating from various sources, such as Web analytics or IOT devices. It is also secure as all data on the wire is encrypted. Cloud Storage Is an object storage solution in the cloud similar to the very well known Amazon S3. It can be used for live data serving, data analytics or data archiving. Objects stored within Cloud Storage are organized in buckets that can be controlled and secured independently. The service also provides a Restful API that allows developers to programmatically access the storage and dynamically upload data to be processed, such as batch files. Cloud DataFlow Is a data processing service for both batch and real-time data streaming. It allows to set up processing pipelines for integrating, preparing and analyzing large data sets. Partly based on Google frameworks MillWheel and FlumeJava, it is designed for large scale data ingestion and low latency processing. Cloud Dataflow can consume data in publish-and-subscribe mode from Google Cloud Pub/Sub or, in batch mode from any database or file system (such as Cloud Storage). It fully supports SQL queries via Google BigQuery which makes it the natural solution to interface Google Pub/Sub and BigQuery. BigQuery is a fully managed data warehouse for large-scale data analytics. It offers users the ability to manage data using SQL-like queries against very large data sets and get results with an excellent response time. BigQuery uses columnar storage and Tree architecture to dispatch queries and aggregate results across multiple machines. As a result, BigQuery is able to run queries on datasets containing terabytes of data within a few seconds. BigQuery also provides a REST API that lets you control and query your data using your favorite client language and libraries. Alternatively, you can access it through command-line tools or google online console. "In conclusion, I would say that the Google Cloud Platform is definitely a solution to consider when implementing your Big Data projects." Its serverless and scalable approach represent a major asset to meet today's requirements of applications generating an unprecedented amount of data from diverse sources. The GCP services are also very well documented, and an infrastructure can be put in place fairly quickly. Lastly, the major benefit is probably the pricing, as the cost associated to the use of these services is very minimal and can be finely controlled through the google online console (e.g. BigQuery Pricing).

Blockchain : où en s...

Introduction La technologie phare de ces dernières années est bien la blockchain. Certains la décrivent comme une avancée aussi importante que l’était Internet à la fin du XXe siècle. Si vous n’en avez jamais entendu parler, vous avez probablement dû entendre parler de cryptomonnaie comme par exemple leBitcoin. L’objectif de cet article est de comprendre l’avancée technologique que procure la Blockchain, puis de s’intéresser aux nouvelles générations de cryptomonnaies. Dix années après l’apparition de la première blockchain mondialement connue, le Bitcoin, nous allons voir quelles sont les avancées dans ce domaine. Historie de la blockchain Afin d’introduire le concept de la blockchain nous avons besoin de nous situer dans le contexte de la crise bancaire et financière de l’automne 2008. Cette crise a provoqué un problème de confiance vis-à-vis des intermédiaires et plus précisément des institutions bancaires. Ces intermédiaires dictent leurs lois, abusent parfois de leurs autorités et, plus important, concentrent les risques. C’est dans ce climat de méfiance que sont nées les cryptomonnaies. La première et de loin la plus célèbre est le Bitcoin. Elle a été créée en 2008 par Satoshi Nakamoto et repose sur plusieurs principes. L’idée de base était de créer une monnaie d’échange entre utilisateurs en se passant des institutions bancaires afin de transférer des biens et des services de façon plus libre et indépendante. Néanmoins ce principe introduit plusieurs problématiques : L’échange d’argent se fait d’utilisateurs à utilisateurs ll faut assurer l’unicité de l’attribution d’un même bitcoin Et il faut garantir que la monnaie se gère sans autorité supérieure ou centrale Pour répondre à ces problématiques, le Bitcoin utilise la technologie de la blockchain et plus précisément la combinaison innovante de trois mécanismes : les réseaux Peer-to-peer, la cryptographie asymétrique et la preuve de travail. Les réseaux Peer-to-peer Le réseau pair à pair est un protocole de transfert de données proche du modèle client-serveur où chaque client est lui-même un serveur. De cette manière un utilisateur du réseau, appelé un noeud, met à la disposition des autres noeuds, un fichier. Ce fichier est copié par tous les noeuds de proche en proche jusqu’à ce que l’ensemble du réseau en possède une copie. Dans le cas du Bitcoin, les utilisateurs échangent un registre et à chaque fois qu’un noeud apporte un changement à ce registre tous les noeuds du réseau mettent à jour leur registre local. La cryptographie asymétrique La cryptographie asymétrique est une méthode de chiffrement de message. Elle permet de générer mathématiquement deux nombres. Ces deux nombres sont appelés clé privée et clé publique. La clé publique peut être diffusée à quiconque souhaite chiffrer un message, mais la clé privée est gardée secrète. Ce système peut être utilisé pour : Chiffrer un message à envoyer : imaginons Bob qui utilise la clé publique d’Alice afin de crypter un message. Alice va alors déchiffrer ce message à l’aide de sa clé privée qu’elle est la seule à détenir. Le message est alors totalement confidentiel et seul Alice pourra consulter le contenu de ce message. S’assurer de l’authenticité de l’expéditeur : le rôle des clés est interchangeable. Une clé privée peut aussi servir à chiffrer un message pour qu’une clé publique le déchiffre. Alice qui souhaite authentifier un message va utiliser sa clé privée pour crypter celui-ci et tous les détenteurs de la clé publique d’Alice peuvent valider qu’elle est bien l’auteur du message. Dans notre cas, afin d’éviter la possibilité qu’un même bitcoin soit attribué deux fois, la technologie Bitcoin va utiliser l’authenticité de l’expéditeur grâce à la cryptographie asymétrique. Si Alice veut devenir membre du réseau Bitcoin, elle va alors générer une clé privée et une clé publique. La clé privée va rester en sa possession et elle va diffuser la clé publique à tous les utilisateurs du réseau. Afin d’effectuer une transaction, elle va signer celle-ci avec sa clé privée. De cette manière, tous les utilisateurs du réseau sont sûrs que c’est Alice qui a créé cette transaction. Tant que Alice ne dévoile pas sa clé privée, elle sera la seule personne à pouvoir effectuer une transaction avec ses bitcoins. Maintenant que les transactions sont sécurisées, comment peut-on savoir que l’émetteur possède réellement le bitcoin à transférer ? La preuve de travail Afin de s’assurer qu’un utilisateur possède réellement le bitcoin à transférer et que la monnaie se gère sans autorité supérieure et/ou centrale, il va falloir trouver une astuce et mettre tous les noeuds du réseau d’accord sur l’ordre des transactions. Si l’ordre des transactions est la même pour tous les noeuds du réseau, on peut remonter dans les blocs et savoir si un émetteur possède réellement un bitcoin. C’est le concept de la preuve de travail (Proof-of-Work en anglais). Toutes les transactions sont groupées dans des blocs et chaque bloc référence le bloc précédent. De cette manière il n’y a qu’une seule chaîne de blocs qui est répliquée sur tous les noeuds du réseau. Nous pouvons alors affirmer qu’une transaction qui se trouve dans un bloc sera obligatoirement postérieure aux transactions présentes sur tous les blocs précédents. Les transactions sont donc ordonnées selon une suite chronologique. La question maintenant est de savoir comment créer de nouveaux blocs contenant les nouvelles transactions. Avant d’être incluses dans un bloc, les transactions sont dites en attente et doivent être confirmées. Pour créer un nouveau bloc tous les noeuds du réseau font appel au minage. Le minage Le concept du minage est simple. Chaque bloc est identifié par uneclé de hachage, et l’objectif des noeuds du réseau qui minent est de créer un identifiant (une clé de hachage) valide pour le nouveau bloc. Toutes les transactions en attente seront alors regroupées dans le nouveau bloc alors disponible dans la blockchain. Afin de trouver un identifiant valide, les noeuds du réseau font appel à une fonction de hachage. Grâce à cette fonction, les noeuds hachent l’identifiant du bloc précédent, les identifiants des transactions du bloc que l’on essaie de former et une chaîne de caractères aléatoires. Un noeud pourra créer le nouveau bloc si le hash qu’il vient de créer est valide; c’est-à-dire s’il comporte un grand nombre de zéro dans ses premiers chiffres. Le noeud met alors à jour la blockchain et propage cette dernière de proche en proche dans le réseau Peer-to-peer. Sachant que le hash est généré aléatoirement, un noeud a besoin de beaucoup de tentatives pour en trouver un qui soit valide. Ces tentatives génèrent beaucoup de travail d’où le nom preuve de travail. Dans l’exemple du bitcoin, la probabilité de trouver un noeud valide est de 9,18×10^-22 et un bloc est créé toutes les 10 minutes. Cette énorme quantité de travail est assurée par la puissance de calcul du matériel des mineurs (serveur, GPU, etc..). Pour les récompenser, une somme de 12,5 bitcoins leur est reversée lorsqu’une clé de hachage valide est trouvée. De cette manière les transactions sont vérifiées et stockées dans des blocs et si quelqu’un de mal intentionné veut changer une transaction dans un bloc; il doit changer l’identifiant de ce bloc (sa clé de hachage). Sachant que chaque bloc référence le bloc précédent, il doit aussi changer cette référence et donc l’identifiant des blocs suivants et ainsi de suite. Sachant que trouver un seul identifiant de bloc est extrêmement coûteux, frauder le système est presque improbable. Les réseaux peer-to-peer, la cryptographie asymétrique et la preuve de travail (PoW) qui permet de trouver un consensus distribué sont les trois mécanismes qui constituent la blockchain. Prise de recul Aujourd’hui les cryptomonnaies pèsent des centaines de milliards de dollars et prouvent au quotidien la fiabilité de la blockchain. Cette technologie est en application dans le domaine de la finance, il est temps de voir si elle est assez mature pour s’étendre à d’autres types d’informations. La blockchain s’appuie sur trois idées fondamentales décrites dans le chapitre précédent : La « désintermédiation » : nous pouvons nous passer des intermédiaires de confiance grâce au réseau peer-to-peer ce qui entraîne une diminution des coûts. La traçabilité : l’utilisation d’un registre permet de rendre traçable chaque transaction car elles sont publiques. Cette traçabilité nous apporte une preuve numérique d’existence non effaçable. Néanmoins, malgré le fait que les transactions soient publiques, elles sont signées avec les clés de hachage privées des utilisateurs. Un Consensus distribué : permet la conservation du registre par tous les utilisateurs et la vérification permanente des transactions, qui a pour effet de faciliter le travail ensemble et d’augmenter la sécurité. C’est dans ce contexte que certaines personnes se sont posées une question simple mais cruciale : Est-il possible d’exécuter un code ? Le bitcoin est une excellente innovation, mais est-il possible d’effectuer un virement à une certaine date par exemple. C’est de cette idée qu’est né le contrat intelligent (smart contract en anglais). C’est ce que je considère comme étant la deuxième génération de blockchain et de cryptomonnaie. Cette deuxième génération a été introduite par la technologie Ethereum. Un smart contract est la distribution sur le réseau de petits programmes avec une mini-base de données sur la blockchain. De cette manière il ne peut pas y avoir de litige, l’exécution du programme est garantie par la blockchain. Actuellement il existe plusieurs applications qui se basent sur un smart contract. Ces applications sont appelées les dApps pour « decentralized application ». Une application dApp s’exécute sur la blockchain au lieu de s’exécuter localement sur un appareil. Néanmoins les dApps regroupent un grand nombre de contraintes. La première et la plus dangereuse selon moi c’est qu’un code déployé sur une blockchain est immutable. C’est-à-dire qu’il n’est pas modifiable. Lorsqu’il est déployé sur la blockchain il y sera présent pour toujours. Au vue de la maturité de la technologie, il est quasiment sûr que du code déployé sur une blockchain contient du bug. Pour corriger ces bugs il faut déployer un nouveau contrat sur la blockchain et récupérer les informations du contrat précédent. Il existe plusieurs scandales, où des hackers ont détourné des montants énormes (plusieurs millions de dollars) sur des dApps en exploitant du code bugé. Une autre contrainte, les réponses sont très lentes. Lorsque l’on appelle une méthode d’un contrat via une transaction, il faut attendre que cette dernière soit vérifiée, donc qu’un bloc soit miné afin de pouvoir la stocker. Dans l’exemple de Ethereum, un bloc est miné chaque minutes. Troisième génération Les limites des blockchains de première et deuxième génération ont introduit l’arrivée de blockchain de troisième génération. Elles ont pour objectif de répondre aux problèmes rencontrés dans les versions précédentes tout en introduisant des innovations. C’est le cas par exemple de la technologie Cardano qui, selon moi, propose un tournant majeur dans le monde des cryptomonnaies. Cardano a été lancée en septembre 2017 et se présente comme la blockchain de troisième génération. Cette technologie reprend les idées de base du Bitcoin et de l’Ethereum, et répond partiellement aux problèmes soulignés précédemment. Selon ses créateurs, elle offrirait une solution scalable, interopérable et durable. Scalabilité La scalabilité recouvre trois problématiques : Le nombre de transactions par seconde, Sachant que ces transactions manipulent des données, nous rencontrons un questionnement sur la fiabilité du réseau, Etant donné que chaque transaction est stockée sur la blockchain, celle-ci grossit de jour en jour. Actuellement la blockchain du bitcoin pèse plus de 150 Go. Nous allons donc rencontrer un problème de stockage de data car chaque noeud du réseau doit stocker le registre en intégralité afin de vérifier les transactions. Nous avons vu précédemment que la première génération de blockchain (Bitcoin) permettait de trouver un consensus distribué grâce à la preuve de travail (PoW). Pour répondre au problème du nombre de transactions par seconde, Cardano utilise lui un algorithme de Proof-of-Stake (PoS) afin de parvenir à un consensus. La preuve de travail, pour le minage, consiste à effectuer des calculs mathématiques afin de créer des nouveaux blocs dans la chaîne ou de valider des transactions. Le problème identifié précédemment, est que la création de bloc était très lente (par exemple 10min pour le bitcoin), et donc la vérification de transaction de même. Sans rentrer dans les détails, le protocole utilisé par Cardano permet de générer des blocs et vérifier les transactions de manière beaucoup plus rapide. Ensuite, afin de réussir à effectuer des milliers de transactions par seconde, il est impossible de maintenir une topologie de réseau homogène. Tous les noeuds du réseau ne peuvent pas non plus étudier chaque transaction car ils n’auront pas une fiabilité du réseau suffisante. Cardano utilise l’architecture réseau RINA (Recursive InternetWork Architecture) http://irati.eu/the-recursive-internetwork-architecture/ afin de pallier à ce problème de support réseau. Pour finir, tous les utilisateurs n’ont pas nécessairement besoin de toutes les données pour vérifier leurs transactions tout en ayant un niveau de sécurité élevé. Cardano n’a pas encore implémenté de solution pour réduire la taille de la blockchain, mais une réponse à ce problème est en cours de développement et devrait être disponible courant 2018. Cette réponse consiste en l’union de plusieurs méthodes : l’élagage, l’abonnement, la compression et la partition de données. Un noeud du réseau pourra alors manipuler une version « light » de la blockchain afin de valider une transaction ou de créer un bloc. Voici comment Cardano répond au problème de scalabilité de la blockchain que rencontraient les deux premières générations. Interopérabilité L’idée d’interopérabilité est la même que dans le monde actuel de la finance. Le constat est qu’une seule monnaie ne peut pas gouverner le monde. Il existe une multitude de cryptomonnaies différentes, et l’idée ici est de pouvoir utiliser n’importe quelle autre monnaie avec Cardano. Chaque technologie comme le Bitcoin, l’Ethereum ou le système bancaire actuel possède son propre réseau mais il n’existe pas de standard permettant de communiquer entre eux. Il existe des plateformes d’échange, ce sont celles qui sont utilisées au quotidien pour échanger des devises en cryptomonnaie mais elles concentrent les risques. Il faut aussi avouer que c’est contradictoire de promouvoir une technologie de décentralisation totale sur des plateformes aussi centralisées. L’objectif est de pouvoir utiliser n’importe quelle monnaie avec Cardano, c’est-à-dire une manière de pouvoir « lier » les blockchains de réseaux différents. Pour respecter l’idée générale de la blockchain, ces échanges devraient se faire sans l’utilisation d’un tiers de confiance (plateformes d’échanges). Pour répondre à ce problème, Cardano introduit les chaînes latérales. Le concept de base est que lorsqu’une transaction est faite d’une blockchain à une seconde blockchain différente, les chaînes latérales doivent regrouper un ensemble d’informations compressées qui nous donnent l’aptitude de savoir si la transaction est légitime. La transaction doit respecter les mêmes règles de base que les transactions des blockchains de première génération. À ce stade les blockchains pourraient communiquer entre elles mais il est pertinent de constater qu’il reste une barrière entre le réseau bancaire et le réseau Blockchain. Cette barrière existe seulement car il y a un besoin, côté réseau bancaire, de traçabilité des transactions. Qui envoie à qui et pourquoi? Pour y répondre, Cardano ajoute un système de métadonnées dans les transactions que l’utilisateur aura le choix d’inclure ou non. La finance pourra alors exiger qu’une transaction soit transparente. Cardano fournit donc un alliage astucieux entre l’anonymat de la cryptomonnaie et la nécessité de traçabilité du monde de la finance. Durabilité Pour que cette technologie soit durable dans le temps il est important de répondre à une question : Comment payer les choses? En effet, il est nécessaire de développer un modèle économique permettant de  créer une trésorerie afin de rémunérer les personnes contribuant à l’évolution de cette technologie. De cette manière elle pourra perdurer dans le temps. Pour anticiper cela, Cardano a pour objectif de mettre en place un système de trésorerie de la manière suivante. Auparavant, les mineurs des cryptomonnaies recevaient une récompense lorsqu’un bloc était miné. Avec Cardano les mineurs reçoivent également une récompense, mais une partie de celle-ci est redirigée vers une trésorerie, vers un compte bancaire décentralisé. Lorsqu’un utilisateur à un projet qui pourrait faire avancer la technologie il le soumet à la trésorerie, ensuite tous les détenteurs de jeton pourront alors voter. Si l’utilisateur reçoit un montant élevé de vote, la trésorerie lui débloque une rémunération afin de développer son projet. Ce modèle économique permet alors de faire évoluer la technologie de manière sûre et durable dans le temps par la communauté elle-même. Conclusion Le monde de la blockchain évolue de manière efficace mais pour l’instant les résultats sont encore trop immatures. Créée en 2008, la technologie a déjà bien avancé par rapport au stade initial mais elle est encore beaucoup trop marquée par des scandales et des exploitations de bugs par des hackers. Les blockchains de troisième génération proposent des solutions permettant de démocratiser cette technologie. Je pense que Cardano est à suivre car selon moi, elle respecte entièrement la philosophie de la blockchain tout en répondant partiellement aux problèmes de scalabilité, d’interopérabilité et de durabilité liés aux générations précédentes. Néanmoins, il reste encore du chemin à parcourir car la technologie est encore très jeune. Quelque soit l’issue de cette innovation, révolution totale ou flop, il est passionnant pour un jeune développeur comme moi de voir l’évolution en direct de cette technologie et ses impacts sur la société actuelle.