Storing Data on the Blockchain (p1)

Everyone knows of Cryptocurrencies like Bitcoin, Ethereum, Ripple as the new forms of money and currency as it stores the transactions as digital packs of data within blocks. However, there is no reason this data cannot be extended beyond just financial data. In theory, any form of data can be stored on a blockchain. So, why don’t we store our important data on the blockchain network so that nobody can change it while everybody can access it?

There are many reasons you might want to store data (documents) or hashes of data on a blockchain, and multiple ways to do this. People will not store big sized data on the well-known network like Bitcoin and Ethererum because they’re super expensive. But there’re various projects are currently innovating around this idea, each proposing different methods with different trade-offs.

In this series, we’ll go through:

  1. The need for storing data (documents) on Blockchain, why should we use Blockchain anyway
  2. The different ways to store data on a Blockchain. It’s either be storing the whole data or just a Hash of it.
  3. And the promising projects (networks) that specialize for storing data on Blockchain

Why Should We Store Data on Blockchain?

Throughout 2017 and 2018, there was a huge amount of hype around the applications of blockchain technology and cryptocurrencies. Data storage is a much drier and less exciting application. However, it is deliverable, with multiple improvements over existing data storage systems.

Tamper Resistance

Immutability is perhaps the most important benefit a blockchain provides. Cryptographically linked blocks provide a record immune from tampering.
This tamper resistance is highly effective in preventing the counterfeiting of documents and document fraud. If you cannot store the actual document on the blockchain due to file size limitations, then even storing a hash of the document makes a lot of sense.

Documents often take up a lot of space, compared to financial transactions, which blockchains like Bitcoin are designed for. It is often not feasible to store a whole document on a blockchain. Hashes take up just a small fraction of this space, therefore, are a much more efficient option.

Storing just the hash still offers you tamper resistance. Whenever you change the input of a file, its corresponding hash value will always change. This is a vital benefit secure hash algorithms provide. Regardless of where you store your document, whether in a centralized system like MySQL or in a distributed database like Azure, you can still verify the document has not been tampered with by rehashing it and comparing it to the blockchain-stored hash.

Visibility

Using a public blockchain is a great way to make your document accessible to the public. Of course, you need to be absolutely confident that you want to make it fully visible. Once you store the document or its hash on the blockchain, it will be there permanently. There is no way to change data once you include it in a block.

A blockchain is certainly not the only way to do this. However, given its level of security and tamper-resistance, you can be confident of permanent visibility.
Of course, you could also use a federated or private blockchain if you wanted to limit access to your documents. Such blockchains can provide you with the ability to offer permanent visibility to a preselected group. These alternatives will, however, undermine decentralization and possibly tamper-resistance.

Need for Decentralization

The final reason to use a blockchain is if you require decentralization. Perhaps the nature of your document means that you cannot reliably trust a third-party storage provider to not tamper with or delete the document.

One such instance would be politically sensitive files, which malicious parties could target if published. By uploading the document or its hash to a public blockchain you would have peace of mind that it is safe from state or corporate censorship. Of course, choosing the correct blockchain is very important here. Blockchains are not all made alike. If the consensus protocol is not properly decentralized or allows full nodes to reverse or censor transactions, then you will have the same problems as using traditional systems.

In the next post of this series, we’ll cover Different ways to store data on a Blockchain. Stay tuned!

Hung Le

Full stack with Laravel & Vue.js (p2) – Vue concepts

 

In the last post, I’d introduced what Vue is. We can get started with coding right now, but why I write this post, it’s also just theory?

Ok, ok, calm down. In this series, I want to discuss Laravel and Vue.js (we will use Nuxt – a Vue framework). So, before we start, we will research important concepts that we need to know.

Let’s get started!

  1. Template

By default, Vue will use an HTML file for its template. An included script will declare an instance of Vue and use the el property in the configuration object to tell Vue where in the template the app will be mounted. And we can bind data to our template by creating it as a data property and using the mustache syntax to print it in the page:

 

  1. Directives

Similar to Angular, we can add functionality to our templates by using directives. These are special properties we add to HTML tags starting with the v- prefix.

Example: We have an array of data. We can render this data to the page as sequential HTML elements by using the v-for directive:

  1. Components

Components extend basic HTML elements and allow you to create your own reusable custom elements. But probably the main reason to use components is that it makes it easier to architect a larger application. Functionality can be broken into reuseable, self-contained components.

Example: Here I’ve created a custom element, grocery-item, which renders as a li. The text child of that node is sourced from a custom HTML property, title, which is accessible from within the component code:

  1. Reactivity

A key feature of Vue’s design is its reactivity system. When you modify data, the view automatically updates to reflect that change.

Example: If we create a function that pushes another item to our array of grocery items after the page has already been rendered, the page will automatically re-render to reflect that change:

  1. Single-file component

A drawback of using components is that you need to write your template in a JavaScript string outside of your main HTML file. There are ways to write template definitions in your HTML file, but then you have an awkward separation between markup and logic. A convenient solution to this is single-file components. These files have the .vue extension and encapsulate the component template, JavaScript configuration, and style all in a single file. Web browser can’t read these files, so they need to be first processed by a build tool such as Webpack.

Example: I create a file named example.vue

  1. Vue Router

Vue Router allows you to map different states of your SPA to different URLs, giving you virtual pages. For example, twentyci.asia/ might be the front page of a blog and have a component hierarchy like this:

Whereas twentyci.asia/post/1 might be an individual post from the blog and look like this:

 

Changing from one page to the other doesn’t require a reload of the page, just swapping the middle component to reflect the state of the URL, which is exactly what Vue Router does.

 

  1. Vuex

Vuex provides a powerful way to manage the data of an application as the complexity of the UI increases, by centralizing the application’s data into a single store. We will talk more about Vuex during coding.

 

There are more concepts but we will talk about them while coding each part. In the next post, we will setup our base project and make some configurations. Thanks for reading. See you!

Huy Hoang

What’s it like to be a Front-End Developer?

Having learned HTML, CSS, and JS, Front-End Developers (FED) are forced to take functionality into account when creating user experiences or making sure that the two disciplines work as one from a development perspective. They become all-rounded, having to understand what is actually happening between the AJAX data and the PHP file that’s sending off a mail or returning errors.

If you’re already sure about front-end development, go ahead and read on.

Front-end development skills needed

When starting out in front-end, you might not be sure where to start. There are so many options available not only programming language-wise, but regarding tools, frameworks, and technologies as well. So make sure you are prepared of the open sea. Or as Ivan (Ivan Kutil – Google Developers) would state it: “Front-end development is like an ocean. You happen to have a ship, but no map. First learn the shallow waters, then go deep.”

  1. Learn HTML & CSS. And become good at it.

I guess there’s no way around it. Learn HTML & CSS. Why? Because of the basics matter. There are all kinds of different online courses available on how to get started with HTML and CSS. First things first. Sign up at Online courses like Coursera or Team Treehouse. After finishing some initial courses, go ahead and create some static web pages and iterate over and over again. I also recommend developing some small UI elements for practicing your newly learned HTML & CSS skills. Codepen.io is a great playground for that. Browse other people’s projects and participate in the community there.

  1. Build things.

Playing around with (small) UI elements is one thing. Creating an actual landing page or website is something different. At some point, you will eventually start using JavaScript snippets. Don’t forget to challenge yourself by building first responsive elements. So there’s only one way to become better at what you’re doing: Keep learning, keep building. Putting these two together, build to learn! There’s no better way to learn than to get your hands dirty. You’ve probably heard this a hundred times by now, but it is for a good reason why this is the advice most often dished out.

  1. Read, read, read

I guess there’s no way around this. Believe it or not. Your reading skills greatly influence your path to become a great front-end developer. Especially when starting out, there’s a lot of reading required. Why?

At first, you’ll probably read a lot of articles, guides, and manuals on how to do different things. You’ll also start reading other people’s code. Or as Adam (ADAM Software Development – Google Groups) would state: “Combine that with a good book like Eloquent JavaScript, and you can up your programming game very quickly.”

  1. There’s more to Front-end development than building a website

If you followed my tips from 1 to 3, you have probably already done a course or have read a lot of tutorials and are now able to throw together a website. However, that doesn’t equate to being a “front-end developer”. Knowing how to build a website is a very small part of the front-end puzzle. I apologize if that sounds demotivating. But that’s actually the case. There is a whole load of topics that you still should learn about. If we consider performance, testing, QA and many other areas, then you really need to become a deep diver as a front-end developer.

  1. Version control will save your life.

OK, maybe this sounds a bit too exaggerated. But trust me on that. Version control will save you some sleepless nights. Instead of trying something and having it blow up in your face or hitting ctrl+z a trillion times, you can simply trash your branch and roll back to what was working previously. So make sure to become an expert at Git. It will not only save you countless hours, but it will also give you more confidence to try new things.

  1. Be the middleman

As a FED, you need to be aware that you put yourself in some kind of middleman role. As a middleman, you are in touch with QA people, clients, UX experts as well as other developers. You will need to take different perspectives into consideration. That is why, besides learning the basics of HTML, CSS, and JavaScript, you need to make sure to be able to communicate clearly.

  1. Do not rush

Along the way, you will ask yourself why you do this and you may want to just stop. It may be tempting to just give up. But don’t. If you’re at that point, I have only one advice for you: Do not give up! Set aside one or two hours every other day to learn. Take a lot of breaks and make sure that you really know the basics. And never rush. The basics form the foundation which will help you get to the next level. If you feel stuck, don’t be afraid to ask questions. Everyone goes through this phase and having the patience to stick it out will help you come out in the end as a pro in front-end development.

  1. Dive deep into frameworks

So, you made it until here. Awesome! Now it’s time to get involved with certain frameworks. Start by looking at the more popular ones and work out for yourself why they do things in a certain way. Figure out whether each one is a good thing. Understand how frameworks and industry standards have changed over the last couple of years. Looking at older frameworks, you will probably discover approaches and code which are now obsolete. Do not forget: Sometimes, using a framework isn’t the best option, but most of the time it’s well worth knowing about them.

  1. Get involved with open source projects

Contribute to GitHub. Don’t shy away from big frameworks that seem well established. Even framework authors make mistakes. You may be spending most of your time reading code but don’t see it as a waste of time. You will pick up good habits and practices along the way and will gain some experience working with other developers. When you feel ready to write some code, go through issues on the repository and pick one problem which is manageable for you. Getting involved with various projects, especially open source, will not only make you a better FED, but it will also help you build up your very own online brand as an active, experienced developer.

 

Wrapping it up

The path to becoming a front-end developer will definitely take some time. As presented in this blog post, becoming a front-end developer is not only about learning various front-end frameworks and programming languages. It’s about the interaction, responsibilities, and roles as a FED. Because the web is a rapidly evolving universe, great front-end developers should never stop learning. Even little things like following front-end experts on Twitter will have an impact on your learning curve. You need to have some patience to get there. Rushing doesn’t make sense because it won’t make you happy. Never forget to have fun while learning and experimenting.

Looking for an opportunity to improve yourself in a youthful, professional environment? Why don’t you join us at  TwentyCi AsiaAnd make sure to share & subscribe if you find this post helpful. Good luck and have fun!

Thanh Tran        

Freelancer-Why not?

A freelancer or freelance worker is a term commonly used for a person who is self-employed and is not necessarily committed to a particular employer for a long-term. However, full-time employees also can do freelance jobs out of working hours.

Right now, I am a full-time developer at TwentyCi Vietnam with good monthly salary and benefits package. I’m still working for other companies as a freelancer out of office hours to get extra income. It’s really a good choice if you apply CV to TwentyCI Asia where you can develop your career and skills quickly as well as having an attractive salary package.

It’s not easy to start becoming a freelancer

In the IT field, most developers who are good at English and independent can work as freelancers. They may be fond of freedom, be a little adventurous and unconstraint. Actually, it was for money that I became a freelancer. Two years ago, I had planned to move to HCM City for living and working. As I didn’t want to make any negative impact to a big project of the company I worked at that time, I resigned and applied for a remote job at a foreign company which has a subsidiary in Vietnam.

Starting to become a freelancer is probably a challenge to anyone who is a developer. Why? One of the biggest misconceptions about freelancing is that you sit at home and work comes to you. When the reality is that you have to fight for it, and fight hard.

When you bid on a project at website freelancer.com, beside than having a nice profile and a proposal letter, an employer will look at three important criteria to evaluate a candidate:

  • Rating and Review/Feedback
  • Earnings
  • Completion Rate

Both of the above criteria are important. At my first thought, Rating and Review/Feedback is the most important criteria as long as you got 5 stars. But after doing a fake project (created and hired by yourself) then I found that Earnings and Completion are the most important ones. Even you got 3 stars or 5 star but low earnings then you can’t be on the top of the candidate list for a project. And if no project is taken mean that you have no earnings.

The patient one is the winner

At first, during a long time, I constantly bid, constantly checked and looked for suitable projects, but it seems like I wasn’t so lucky. Until after 5 days of searching, bidding, again and again, I finally got a small project: edit HTML / CSS for a forum running on VBB platform. My first feeling is happy, cheery. But then I began to feel like “I’m selling my labor cheaply”. And after all, I finished the project in 6 hours. Even when the project closed, I also offered after-sales service for the customer to support new banner during the next one month. But on the following days, I did not get any other project, so I had changed the strategy:

  • Bid on the odd jobs
  • Bid on projects with a small budget
  • Go through carefully the job description, and mention it in the proposal letter
  • Undersell the service: offer a lower price
  • Response to the customer quickly
  • Do after sales support
  • Do extra work which is excluded in the job description and agreement free of charge

Applying the above strategy, I had gained 3 more projects and supported customers with my best. All of them were satisfied.

What is it like to be a freelancer?

Being a freelancer means you can say ‘no’ to jobs you don’t want. You might also get to work at home for specific projects. As long as your work is delivered on time, most clients won’t mind how and when you do it. Therefore, freelancing is a good option for people who don’t want to work in office hours. And to be a freelancer, you need sales skills, because you are going to sell the service. Communication skills are required since you have to communicate directly with the customer. Also, customer service skill is a must-have because if the client’s not happy, they will not pay. You need time management skills as well, because the more money you want to earn, the more work you have to do. Do not be afraid of work, because if afraid of any work, there will be nothing to do.

And as a freelancer, you will need to face up to and pass through some problem such as: getting your first few jobs can be hard as there are a lot of freelancers out there. Just being good at what you do isn’t enough – you need to have a network, marketing yourself and make contacts because no one will hire you if they don’t know you’re there! The workload can be unpredictable – sometimes you might be working all night to meet three deadlines in one week, while even the most successful freelancers have months where they get no work at all.

Should I try to work as a freelancer?

My answer is Yes. As a freelancer, you can get flexible working hours, excellent opportunity for improvement, learning through work and get higher income. Perhaps one of the biggest advantages of freelance jobs is that you can take a vacation whenever you want and of course if you want you can work on holidays while this is not the case with the office work.

Do you know even if you’re not a freelancer, you still can get all the benefits mentioned above if you work at TwentyCi Asia? Let’s take it as your first option for a new job application.

     Quan Phan