What is Blockchain
June 10, 2018, in Blockchain
The news is filled with stories about blockchain, Bitcoin, Ethereum and cryptocurrency. We’re told they’re here to stay. We’re told they’re going to change everything. That this is the New Internet. All of this sounds great, but: what is blockchain? Why is it such a revolutionary thing? What should we do about it? And most of all: how will it impact us?
The first answer we get is: if you know what Bitcoin (the first cryptocurrency) is, then you already know what blockchain is or at least you how it can be used, since Bitcoin was the first successful implementation of blockchain.
In fact, blockchain isn’t at all new, it was created in 1996, brought to us by the world of cryptography. It was only in 2008 that bitcoin was created by Satoshi Nakamoto. But in the last two or three years, bitcoin became hugely popular, its value grew and it became a currency for services and goods, which in return made blockchain so much more relevant.
Cryptocurrencies are an integral part of blockchain, since they are used for sustaining and rewarding components of the block. But blockchain is so much more than that and the opportunities abound. Let’s explore them.
Blockchain should be seen as an amazingly spread out database. Every component (nodes) has access to the same information as well as to the totality of transactions carried out. For instance, the ethereum network currently has more than 30 thousand nodes. Information is so spread out, it’s impossible that any of it will ever get lost.
Everyone is allowed to access all information with a public key, but you can’t generate a transaction on blockchain without a private key, since it’s completely encrypted. Besides the person who generated the transaction, and who also owns the private key, no one else can participate in the transaction. We can find out how many bitcoins a “user” has, we can see their public key, but we don’t know who they are. We can even trace the money, without knowing the identity of those involved. In Ethereum we can see each and every transaction.
Registries in blockchain can’t be modified. We can only add a transaction but we can never modify an already existent transaction. Each transaction block generates a unique coding called hash (kind of like a verification code) which is calculated according to the block. Say we have block 0 (zero) or genesis block.
Now let’s say a successive transaction block is generated: it’s composed of transactions that are added to the block 0 hash. Therefore, the transaction 1 hash block depends entirely on block 0, meaning its linked. This happens with every block. Each and every n block depends on the n-1 block in order to be validated, and so on, all the way to block 0. This is how the blockchain is created.
Imagine a pile of heavy blocks. Each time a block is added on top, those underneath are less likely or even impossible to modify or move. The result is a robust and unalterable chain.
Every time a transaction is made, it must be verified in order to make sure it’s valid and legal. Each block of transactions is generated by a miner, a kind of problem solving machine (we’ll cover this aspect more extensively in another article). Since there are many miners, there’s a set of pre-established consensus rules which make sure that the new block is valid and that it’s taken as a base for the following blocks. As a result, each confirmed block will further confirm the previous blocks.
Since a transaction can’t be modified and every transaction is registered in every node of the block, we can trace any transaction from the beginning until today. This means we can know the entire history of a good or record.
What can we use it for?
The most attractive thing about Bitcoin is that it cuts the middleman. There’s no need for a central authority giving confidence to the process of transactions between one or more protagonists. The design of the blockchain is enough to provide this confidence. Besides monetary transactions, we can also generate contracts o small programs regulated by the rules we just described. This brings forth new possibilities for exchanges and agreements.
Let’s talk more about transactions. Smart Contracts generate a monetary transaction or goods exchange. Contracts establish rules or agreements (just like paper contracts) between participants concerning an asset. The transaction is complete when the contract is fulfilled, which registers on the block. Fulfillment is made according to rules which are programmed inside the blockchain. Once they’re executed, they can’t be modified. Besides, the contract can’t be changed either once it exists inside the blockchain. Even if the contract needs to be changed, the results given by the previous contract are never erased.
Let’s say we have two participants, Peter and Anne. Anne has a car with license plate number A54–3697. The car is in her name and she’s the sole owner of the car, so the record on the block will indicate that the car belongs to Anne. A new smart contract is created, establishing that, if Peter has enough funds (condition), he can buy Anne’s car. When the contract is executed, and if the condition is verified, the car can be owned by Pedro, since a new record is generated, representing the transaction. Since no one can modify a block or its history, we’re guaranteed that the car is indeed Anne’s car, and we can even know the entire history of that car, since it first appeared on the block until today.
Now, if we wanted to generate a change in the contract, for instance, having a third party (a salesperson) receive a commission on the sale of the car, this wouldn’t modify the previous transactions. Either we assume the salesperson will only charge for posterior sales, or we create a special contract that generates said commission on current payments, with the risk that they could remain incomplete, since Peter or Anne could possibly not have enough funds.
This means that, nowadays, we can exchange virtual money but we can also execute contracts that may or may not involve payments. We can generate decisions which cannot be disposed of once they’re taken, which brings us a level of transparency unheard of before.
Governments, banks or insurance firms could greatly benefit from this technology. And this is just the tip of the iceberg. Cutting the middleman also translates as a cost reduction for the final user.
If we allow for a utopian vision, we can imagine a not so distant future where concepts such as blockchain and IOT (Internet of Things) are linked by smart contracts, bringing an endless amount of services to the community. This new era is barely starting and evolving steadily. We must be ready for it and for the work and business opportunities it will bring. But let’s not get carried away, blockchain won’t replace current systems, it will just help us strengthen and improve some parts of them.
At inmind we’re working hard to create and develop solutions in order to offer the best consulting regarding blockchain technologies and how to use them.
I need a mobile app for…
October 18, 2017, in Mobile
Everyday our company gets more requests of this kind, either by phone, email or the web.
I need an app for…
The first thing we do is make sure our client actually needs a mobile app in order to interact with its clients. Is it necessary to be able to use the app offline? What data should be available offline? These might be simple questions, but they let us build a secure base for our budget. In any case, our job is far from being done, and we haven’t made the sale yet!
Next, we assess our client’s technical knowledge. When our counterpart is technical, it’s easier to explain and to agree on certain aspects of the software development. But if they lack that expertise, we must double our efforts in order to bring the best service to our clients.
Every software development follows a life cycle. The product is BORN, it LIVES and it DIES. Just like with life itself, a software will spend more time living than in any other stage. Therefore, we must make sure our clients understand that they’re going to invest more money in maintaining their products than they will to actually make them or to discontinue them.
This is particularly the case in the Mobile world. Companies like Apple and Google are constantly modifying the hardware and software of our products. Every year Apple comes up with a new iPhone or iPad, along with new iOS (Apple’s operating system for these devices) versions. And we’re not even contemplating the many partial updates. The same thing happens with Google, launching a new Android version each year. And how about those devices? When we actually buy one… it’s already become obsolete!
This means that, when our mobile app is ready, we must implement updates at least once or twice a year, within the platforms we use. Otherwise, we must make sure to not make any type of changes. Adjustments, modifications and additions need to be made in order to contemplate new functions and user’s suggestions. If we consider all of this, it’s quite obvious we need to consider a maintenance budget.
Let’s go back to the explanations given to our clients. Having a development budget is crucial. In general, we won’t know it until the moment we actually send the estimate to the client. In today’s competitive world, this is acceptable and even unavoidable. However, we do understand how this aspect could have a negative impact on the product’s future. Once we have a global budget as well as a development budget we can advise on the other stages of the production, which also require funding. For instance: an amazing app, but without any marketing budget, is doomed to fail.
Next, we’ll detail the technical options for the development of mobile apps. There are 3 main types of techniques/technologies to create a mobile app.
Native, hybrid and generated code apps
We won’t deal with whether one technique is better than the other one. Each one has a specific purpose and they all have pros and cons. However, we do want to provide all the data so that our clients have the necessary tools to make an informed decision and so they can benefit from it.
With tools like Xamarin we can develop mobile apps which implement a native code, developing on C# through Visual Studio. In theory, just one development allows us to generate an app for both IOS and Android. These apps will probably have the same performance as a native one.
Pros. The biggest benefit is the initial development cost: one development, two apps.
Pros. If we already have experience with C# language, we don’t need to learn XCode or Java.
Pros. We can develop it with just one person.
Cons. Just like with any tool, we must consider the fine print of the contract. There could be licensing costs, like with ReactNative.
Cons. If the client wishes to further maintain (with his own team) the app, they will have to find capable resources with experience in this specific platform. This will increase the maintaining costs. This aspect is the most sensible and least considered by our clients.
Cons. These tools have no official support by makers of mobile devices such as Google or Apple. This means that, at any given moment, they could be bought by another company, they could close or disappear. If this should happen, our client’s product will need to be developed again from scratch.
Hybrid apps are kind of like an application or website within a masked browser, which we call the shell. Just like with other apps, they let us, with just one development, change the shell in order to keep our app working on both platforms.
Pros. One development, two platforms supported. This has a very positive impact on budget.
Pros. One developer should be enough to do all the work.
Cons. This technique creates more layers than the other ones, which means we’ll never be able to achieve the same performance or speed that we can have with a native code app. An app featuring a lot of multimedia, or a game, is unfeasible.
This type of app has a more pure construction. They’re developed by using the mechanisms, languages and tools provided by or officially supported by the maker of the operating system. In the case of Android (Java and now Kotlin or C++) with Android Studio, and in the case of iOS (Objective-C or Swift 1, 2, 3) with XCode. It’s clear we have to make two developments, possibly with two people.
Pros. We have almost complete guarantee that our product will work on most devices. We have the support of the technology’s makers. There’s no need for middlemen or generated code, which has a positive impact on the resources management.
Pros. We can make any kind of app that we get asked for. The only limits come with operative systems.
Cons. The main negative aspect is budgetary, since we need a double effort in order to achieve both platforms (if that should be the case).
Pros. Support within time. Many know the story of Parse (backend platform, bought by Facebook some time ago). It was the base of many apps until Facebook decided to shut it down, forcing many people (with just one year notice) to migrate their apps. This is one of the many things that can happen when using a tool from a third party. With native apps, as long as the operative system is still functioning, we won’t encounter this problem.
Beyond pros and cons, it’s important to make sure we have a clear idea of what the budget for an app will be, since we have to consider the entire life cycle of said app. There’s no use in selling an app that won’t be able to survive.
At inmind we focalize on the development of native apps. We have enough experience to know that, in some scenarios, other mechanisms can be the best option. Still, we focus our effort, knowledge and experience on native apps.
This Online Tool By Microsoft Can Predict Your Password With Great Accuracy
December 05, 2014, in
The recent wave of data breaches on a number of popular sites and Web service providers should definitely be a cause for concern to most users. Malicious attacks on the likes of Yahoo!, Facebook and Adobe should act as a catalyst for us to review our current account setup and make changes accordingly to improve the strength of passwords, even if your data wasn’t amongst the batch that was compromised in any of the attacks. Microsoft Research is well aware that password strength is one of the most vital components in combating such breaches, and as such has created the Telephathwords tool to try and guess the next character of a password based on a large database and complex query patterns.
The Web-based tool is part of a program that involved Microsoft’s research team and was led by a PhD student from Carnegie Mellon University. The service is intended to bring the issue of password security and vulnerability to the forefront of people’s minds and has the mission of “preventing weak passwords by reading your mind”. If you take the service literally then it can all start to get a little creepy. As much as we love Microsoft, we certainly don’t want the Redmond based company reading our thoughts. The non-literal explanation is thatTelepathwords attempts to make predictions of the password being entered by using programmed knowledge.
The database behind the service contains a large list of passwords that have been shown to be commonly used by the public. Ironically, that list has actually been bolstered by including common passwords that have been found in the lists made public by security breaches. The underlying brain of the MSR tool also queries against common phrases that are regularly found on websites and search queries as well as looking for common password selection behavior such as using keys next to one another on the keyboard. When the user begins typing in a password, Telepathwords uses all of this power to predict the next character with alarming success.
The fun little tool is definitely worth checking out, even if just to see how easy your main password is to predict. All entries into the website are encrypted in the browser before they are logged and sent to the Microsoft Research team servers to be queried.
Head over to this website to get started: telepathwords.research.microsoft.com
You can follow us on Twitter, add us to your circle on Google+ or like our Facebook page to keep yourself updated on all the latest from Microsoft, Google, Apple and the web.
Extraído de: http://www.redmondpie.com/this-online-tool-by-microsoft-can-predict-your-password-with-great-accuracy/