free tafe image

Unit review – Make decisions in a legal context

Another course that I completed in Cert IV: Accounting and Bookkeeping is Make decisions in a legal context.

Tl; dr;

The unit concerns about legality of a business. It teaches me about business structures, different kind of laws that apply to business such as employment law, property law, consumer law, etc.

It helps me for structuring my side business, as well as heading to the right direction in terms of keeping the business safe.

The Australian Legal system

legal system

Source: thecommonwealth.org

Split into 2 types, Legislation and Common Law, there are 2 sets of laws that define the Legal system.

  • Legislation: bills passed from the Parliament, and are enforced throughout Australia.
  • Common Law: made by Court when there is no relevant law for the case being heard.

Categories of Law:

  • Criminal Law: protects the society from wrong actions.
  • Civil Law: govern private dealings between individuals, e.g. Contract Law, Tort Law and Property Law.

I learned about Negligence a bit deeper than other areas of the law. Basically it is a neglect of the duty of care when it results in recorded damage of another individual.

Also there is mentions about Victorian Civil and Administrative Tribunal (VCAT), which I’m sure I’ll be touching base with them at some point. They are where we go when there are problems with tenants.

Australian Business structures

business structure

Source: pathwaylending.org

There are quite a few business structures that one can consider when deciding to go on a business venture

  • Sole trader:
    • probably the most common type of business out there. It allows an individual to conduct small business transactions and/or collect/pay GST.
    • Can have employees, and operate as a proper business.
    • The bad thing is that all personal assets are exposed to the public. If something bad happens to the business, e.g. bankruptcy, the owner may need to fork out his/her own assets to remedy the damage.
  • Partnership: similar to Sole trader, however the structure involves multiple people in the business.
  • Company:
    • Can be either public or private company. This is the most common structure for companies out there.
    • Can officially raise funds from investors.
    • Proper structure around taxes, and the tax rate is fixed at 30%.
  • Joint ventures
    • Similar to partnership, however, this business structure has a limited time.
    • 2 or more individuals/businesses join together to complete a project, and when the terms are satisfied, the joint venture is over.
  • Franchises
    • A franchisee is an individual that creates a business that operates under an existing system that a franchisor setup.
    • May be easier than creating an individual business, since the system and branding is already done by franchisor.
    • Limitation on how to operate, develop new products
  • Trusts
    • Good tool to protect family/individual assets.
    • Good tool to reduce income taxes paying to the government.
    • Multiple types of trusts that need to be thoroughly researched before creating one.
  • Associations
    • Operating not-for-profit, whose members have decided to give their organisation a formal legal structure.
    • Must have “Incorporated” or “Inc.” after its name.
    • Is a legal entity so an Association is exposed to all laws.
  • Co-operatives

Employment Contract

employment law

Source: allbusiness.com

There are 2 types of contracts

  • Contract of service:
    • signed between employer and an employee, contains all benefits, terms, wage amount, service description.
    • employer may be vicariously liable for employee’s actions.
    • employer must provide benefits to employees, such as super contribution, annual leave, sick leave, etc.
  • Contract for service:
    • signed between employer and a private contractor, which contains all terms and conditions regarding a particular piece of work.
    • employer is not liable to contractor’s work.
    • employer does not need to provide benefits for contractor, unless specified in the contract.

Property law

property law

Source: wolterskluwercentral.com.au

This is not limited to real estate assets. “Property” is the right of ownership.

Real property

  • Land, not just the soil, but anything growing on the land; and fixtures on the land, e.g. house, building, etc.
  • Title to land is a person’s right of ownership of the land (it is the title that we transfer when we buy/sell properties)
  • Adverse possession: this is very interesting, if someone occupies a piece of land for over 15 years without any dispute, they may be able to claim possession of the land.

Personal property

  • Choses(things) in possession: something that is tangible, e.g. clothes, equipment, car, etc.
  • Choses(things) in action: something that is intangible, e.g. company shares, intellectual property, etc.

Summary

This area was totally new to me. So it was interesting to learn about. There are lots of things to consider when creating a company, as well as knowing about things like adverse possession really opens my eye on property law.

By Tuan Nguyen

Open sign

Technology review – Open Source Licenses

Open-source licenses are licenses that allow software to be freely used, modified, and shared under defined terms and conditions.

These licenses allow users or organizations to adjust the program’s functionality to perform for their specific needs.

Though this term originated in the context of software development to designate a specific approach in creating computer programs, its meaning however evolved into something moralistic, ethical and sustainable.

Today, when we say “open source” we are following the open source way.

Open source projects, products, or initiatives embrace and celebrate principles of:

  • Open exchange;
  • Collaborative participation;
  • Rapid prototyping;
  • Transparency;
  • Meritocracy; and
  • Community-oriented development.

Tl; dr;

Open-source licenses are legal and binding contracts between the author and the user of a software component. It declares that the software can be used in commercial applications under specified conditions.

Open Source Licenses

The Open Source Compatibility Chart

Source: Duke Computer Science

Open source licenses are vital for setting out terms and conditions on which software may be used, modified, or distributed and by whom. They are also used to facilitate access to software as well as restrict it.

A license agreement is implemented so that potential users know which limitations owners may want to enforce, at the same time, owners will have strong background with their legal claims and having great control as to how their work will be used.

Originally, the open source movement started in 1983 when Richard Stallman, a programmer at the MIT Artificial Intelligence Laboratory at the time, said he would create a free alternative to the Unix operating system, then owned by AT&T; Stallman dubbed his alternative GNU, a recursive acronym for “GNU’s Not Unix.”

With Stallman’s vision, the idea of “free” software:

  • Ensures that users were free to use software as they saw fit;
  • Free to study its source code;
  • Free to modify it for their own purposes; and
  • Free to share it with others.

Then on, other programmers followed Stallman’s example. One of the most important was Linus Torvalds, the Finnish programmer who created the Linux operating system in 1991.

Open-source license Major Types

Open-source licenses come in two (2) major types:

Copyleft License.

A free software license that requires copyright authors to permit some of their work to be reproduced.

With copyright law, authors have complete control over their materials.

But with the power of copyleft license, users are permitted to copy and distribute copyrighted materials.

However, authors still have the verdict in who uses the materials based on their intended use.

This license does not require any source code distribution. That’s why users have rights similar to those normally only granted to the copyright authors, including activities such as distribution and copying.

Popular examples include GNU General Public License (GNU GPL), Common Development and Distribution License (CDDL), Mozilla Public License (MPL), Affero General Public License(AGPL) and Eclipse Public License (EPL).

*Note: Not all copyleft licenses are compatible.

To comply with this type of license, simply place your code in the public domain, uncopyrighted.

As a result, GPL-licensed code is not typically suitable for inclusion in proprietary software, although there are some like LGPL (Lesser GPL) licensed code which may be applicable.

Permissive License.

A free software license for a copyrighted code that can be freely (the freedom we think it is) used, modified and redistributed. Permissive-licensed code can be included in proprietary, derivative software.

Popular examples include MIT License, BSD Licenses, Apple Public Source License, Apache License and Microsoft Public License (Ms-PL).

*Note: Though permissive license is not as restrictive as copyleft license, it still requires compliance with a number of obligations (i.e. inclusion of the original license or copyright) before it can be redistributed.

Open-source license Minor Types

While, open source license has two (2) minor types:

Public Domain.

Code that can be used by the public without restriction or copyright. This type of license is intended to be truly free of costs and commonly has very few (if any) obligations with which you need to comply.

Popular examples include Creative Commons (CC-0).

*Note: Though public domain code should be the simplest license to deal with, PLEASE be aware that not all jurisdictions have a common definition of what public domain means. You should ALWAYS check local regulations.

Source Available.

An emerging type of license applied to code that cannot be deployed “as a service,” source available license is being defined in response to cloud providers.

Popular examples include Redis’ Source Available License (RSAL), MongoDB’s Server Side Public License (SSPL), the Cockroach Community License (CCL), or licenses that have had the Commons Clause added.

Summary

There are numerous open source licensing agreements a program or file may follow. So, better refer to the appropriate documentation to see what the original developer allows and prohibits.

By Tuan Nguyen

free tafe image

Unit Review – Budgeting

Budgeting is one of the units that I took when going through the course of Certificate IV: Accounting and Bookkeeping in RMIT University. I decided to note down what I learned and how I feel about each units.

I took this course for free. If you are interested, you can read about how I registered here.

Tl; dr;

Quite a basic unit that teaches you how to use formula and how to follow style guide using Excel. It also discusses about how to budget for different types of business.

After going through the course, I have a bit more knowledge in budgeting for my personal finance.

Introduction

The unit name is Budgeting, and RMIT programmed it to be a cluster of 2 smaller units. Which means that by completing the unit, students complete 2 units in the program. (note that the unit code may change since the time of writing).

The course description, copying as-is, is as follow:

“In this course, you will learn the skills and knowledge required to prepare and document operational budgets for a variety of organisations. You will also acquire the skills and knowledge required to develop spreadsheets through the use of both cloud-based and non-cloud based spreadsheet applications.”

I think it is quite accurate of what I get after finishing the course.

The teacher

Mr Paul Lim was the lecturer in RMIT. He seems to be helpful with answering questions from other students that to me were silly. However, some of his explanation may not be clear to the students, hence led to confusion when doing assignments. As a result, he was not ranked highly when it came to course evaluation.

He seems to have knowledge in accounting and bookkeeping business. He has been an accountant for quite a while and also a property investor. I talked to him a bit during our break and managed to get some good tradies number off of him. However they only service South-eastern part of Melbourne.

The students

Most students seemed to be taking the same government program as I did. They are quite relaxed with the unit and most of them already have jobs somewhere.

However there were also some students who were young, less than 20. I don’t know why they are taking Cert IV program. But surely they have their own situations.

The experience

Excel logo

Source: computerhope.com

My first impression when taking the first class: “Excel, really?!”. Like, is there anyone who does not know Excel???

I’ve never been so wrong. To my surprise, most students don’t know how to use Excel formula, let alone utilizing Excel calculation power.

The unit only taught us how to use SUM() formula, as well as how to do basic calculations on a cell based on other cells.

budgeting

Source: moneyunder30.com

Budgeting, now that’s something I don’t have a good system for. The unit went into explaining how to budget in different industries. How to forecast budget based on certain estimated weights and values. How to do a rollover (or continuous) budgets. Also I learned about fixed cost and variable cost. It is basic to an accountant, but it was something new to me.

njord style guide

Source: hubspot.com

Style guide was another aspect that I went through. I came to understand that a company will always need to have a style guide to be used in marketing, advertisement, logos, websites, etc. This is the main component in Brand recognition.

Style guide can contain a combination of colours, font type, font size, logos, layouts, etc. that, together, create a unique brand for a company. If you are managing a company, it is advisable that you think about having a style guide. If you need some help, my company, Digital Envision Pty. Ltd. will always be there for you.

Summary

Budgeting is just one of many units that I went through. Even though it was a simple unit, it did teach me something that I don’t know. So far, RMIT’s course has not disappointed me.

“Improve yourself everyday and you will be surprised of the person you become a year from now.” – Tuan Nguyen

By Tuan Nguyen

Technology review – Web 3.0

The product of the same visionaries who have helped drive cryptocurrencies and blockchain technology, Web 3.0 is considered to be an evolution of user interaction with web technologies.

From Web 1.0’s “read-only web” (simply walls and walls of text information) to Web 2.0’s “read-write web” (allowing user interaction with dynamic websites),” Web 3.0, sometimes called the “semantic web,” will be a complete reinvention of the web.

Web 3.0 is most likely compared to an artificial intelligence assistant, by being able to get context from the user, and then in turn provide the very same user with most valuable information about a certain information. In other words, it simply understands its user and personalizes everything.

What greatly defines this 3rd generation web is that it has the concept of a distributed ledger (just like Bitcoin), providing more privacy and security and against the control of big organizations.

As what Gian Gonzaga, Ph.D., senior director of research and development at the dating site eHarmony, says, “The Web can give something back that was not previously known. Web 3.0 learns and understands who you are and gives you something back.”

Tl; dr;

Web 3.0 combines the best aspects of Web 1.0 and Web 2.0, allowing online applications and websites to receive information that’s on the Web and give new information/data to the users.

The term Web 3.0 was coined by the reporter John Markoff of The New York Times in 2006, referring to a new evolution of the web, its third generation, with specific innovations and practices.

Decentralized blockchain platforms including Ethereum, EOS, and NEO will make Web 3.0 more useful and dynamic than its predecessor, the Web 2.0.

Web 3.0: Artificially Intelligent Web

web 3.0 explained

Source: 101 Blockchains

An extension of Web 2.0, Web 3.0 creates a more personalized web experience with intelligent search and behavioural advertisements where content is generated by machines instead of by humans.

For instance, based on your opinion about a movie you’ve just watched or a restaurant you visited recently, you get a list of those whose interests coincide with yours as close as possible. Web 3.0 specifically target individuals based on their web history and user data using machines and algorithms.

web 3.0 structure

Source: 1stWebDesigner.com

Properties

Web 3.0 has 4 main properties:

Semantic Web.

The incoming generation of the Web involves the Semantic Web. It improves web technologies to generate, share and connect content through search and analysis, helping to evolve artificial intelligence that can utilize that information.

The term “Semantic Web” was first coined by Tim Berners-Lee, describing a web of data that can be processed by machines:

“I have a dream for the Web [in which computers] become capable of analyzing all the data on the Web – the content, links, and transactions between people and computers. A “Semantic Web”, which makes this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy, and our daily lives will be handled by machines talking to machines. The “intelligent agents” people have touted for ages will finally materialize.”

Artificial Intelligence.

Web 3.0 allows computers to understand information like humans to provide faster and more relevant results. Thus, they are becoming more intelligent to satisfy the needs of users, allowing websites to filter and present users the best data possible.

According to the University of Maastricht, “Machine learning algorithms are widely employed and are encountered daily. Examples are automatic recommendations when buying a product or voice recognition software that adapts to your voice.”

Websites such as Rotten Tomatoes lets its users vote on a list of movies. With that, movies with higher ratings are generally considered as good movies, allowing visitors to see upfront good data rather than going through bad data.

3D Graphics.

The next wave evolution of the Web will extensively use three dimensional design in websites and services such as e-commerce, real estate, online games, museum guides, etc. allowing for a more realistic cyber world.

Ubiquity.

Web 3.0 will be ubiquitous (the idea of being everywhere at the same time i.e. omnipresent), meaning content is accessible by multiple applications, every device is connected to the web, and the services can be used everywhere. This web generation will may as well be called as the web of everything and everywhere as most of the things around us are connected online.

The Pros and Cons of Web 3.0

Even though the incoming generation of the web will give better convenience with our day to day, let us also put into consideration the downsides as well.

Pros

  • More specific information data
  • More valuable search results
  • With the Internet being more personalized, accomplishing tasks will be much easier
  • Easier knowledge sharing
  • Scamming incidence due to fake identity will be much lesser because Web 3.0 is more secure (blockchain technology).

Cons

  • Privacy policy should be addressed than ever
  • Reputation management will be much needed than ever
  • Your user search results and user data will be used by companies for marketing
  • Personal/private information will be easier to find
  • With exciting features and better convenience, people will now spend more time on the Internet than ever
  • Less anonymity
  • People that aren’t active on the Web 3.0 “don’t exist”

Summary

In Web 3.0, data will come from the user and the web will then essentially adjust to meet the needs of the user. The new generation of the Web will be more connected, more open, and more intelligent, having to be equipped with distributed databases, semantic web technologies, natural language processing, machine learning and reasoning, and autonomous agents.

By Tuan Nguyen

man in the matrix

Technology review – Automatic programming

“Write code that writes code…”

This is the one of the most interesting arguments found in the book, The Pragmatic Programmer.”

Programmers too have wondered if there are ways of simplifying the coding process.

Imagine having predefined lines of code like headers, libraries, and constructors written already.

Is it achievable?

It is believed that there’s already an automation of programming way back then but it is not meant with today’s generation of programs.

Tl; dr;

Automatic Computer Programming or simply automatic programming is a type of computer programming wherein a program code is automatically generated by another program based on certain specifications.Meaning, a program that writes more code is written, which then goes on and creates more programs.

It is a combination of Artificial Intelligence and Compilers techniques.

The Automatic Programming

automatic programming principle

Source: cs.utexas.edu

The argument about whether or not “a code that writes a code” is actually true and it is called, Automatic Programming.

Way back 1940s, there’s already a code automation, BUT it is not what you think it is.

Automatic programming then was about automating the manual process of paper-tape punching which were the programs of punched card machines.

Later on, it meant the translation of high-level programming languages such as Fortran and ALGOL into low-level machine code.

The concrete definition of today’s automatic programming is like an automated approach to programming where the end-user specifies certain high-level specifications(easily understood by humans) and the program converts it into machine executable code.

Techniques

AI techniques and Compilers help for the completion of this type of programming:

Artificial Intelligence.

Whether by humans or by machine, writing programs is based on knowledge of algorithms, data structures, design patterns.

  • Needed to represent, find, and instantiate design patterns.
  • Search may be needed in finding a combination of components to accomplish the desired task.

Compilers.

Representing the code in the form of Abstract syntax trees, compiler techniques are used in generating and manipulating programs. Techniques such as code optimization are used so the generated code is efficient in all aspects.

  • It is better to know what optimizations a compiler can perform, so the program generator does not need to duplicate those.
  • As used by compilers, the central representation of a program is the Abstract Syntax Tree (AST).
  • Lisp code can be viewed as a kind of AST.

Categories

Automatic programming can be divided into two (2) categories:

  •  Generative Programming. It is where standard libraries are used to improve the efficiency and speed of programming. The programmer does not need to re-implement it or even need to know how it works. For instance glut.h a graphics library for C++ for easily implementing OpenGL programs.
  • Source Code Generation. A real interest to AI researchers, source code is generated based on a model or template which is made through a programming tool or an integrated development environment (IDE). One good example is the Google/MIT App Inventor where users simply need to drag and drop functions that they want and then visually connect them to each other to define how the app works without ever typing any lines of code.

Popular Uses of Automatic Programming

Microsoft’s T4 (Text Template Transformation Toolkit), consists of template code which users see at design time and then this code is converted to output code at run-time saving them the overhead of writing all the code manually.

Accelo a code generator for eclipse is used in generating text-representation in languages like (PHP, Python, Java, etc.) from Eclipse Framework models defined in UML. Actifsource is a plugin for Eclipse that allows graphical modelling using templates.

Summary

In the future, programmers won’t need to write code anymore and this task would be fully automated.

There’s no reason to panic about this.

The trade would still continue but it would just develop from specific problem solving to general problem solving.

Additionally, domain knowledge varies in complexity and so far only humans are capable of devising solutions to specific problems.

By Tuan Nguyen

monopoly logo

Game review – How to gain advantages in Monopoly

Recently I have been sucked into the world of Monopoly. It is certainly a great game that teaches you about cash buffer and strategic thinking.

By playing for a while, I gain experiences and notice certain things that may help a player increases his or her chances to win. Crossing references with some articles on the internet, I decided to write down what I learned after spending quite a bit of time playing and “researching”.

If you want to buy the game, you can buy it here.

Tl; dr;

There are multiple tricks that you can utilize to make you the winner easier than other players who don’t know how to play systematically. Some of them includes:

  • Prioritize to monopolize orange and red streets, but if you can’t get them, brown and blue streets are not a bad investment.
  • In late game, stay in jail as long as possible; especially if your opponents have monopoly.
  • Stations are cash cows
  • Avoid paying full price for Utilities.
  • Keep a cash reserve for unexpected payments, e.g. taxes.
  • Make auctions work in your favour.

Monopolize orange and red streets

Monopoly heat map

Source: Inverse.com

The image above is the heat map of a monopoly board. We can easily see that there is a significant landing rate around Free Parking area. And guess what streets are around that place? Orange and red streets!

There are 2 reasons why this happens.

  • The most common roll of 2 die are 7 and 8, meaning if a player moves from Jail, they are most likely to land on the 2 red squares.
  • The Jail square is special, since there are quite a big chance that you will end up in jail, including visiting, landing on “Go to Jail” square, getting the chance card.

As a conclusion, if you can, try to buy all the orange ones.

Stay in jail for as long as possible in late game

monopoly jail tile

Source: thesprucecrafts.com

When players start building buildings and/or hotels, it’s not a bad idea to stay in jail for as long as you can, which are 3 turns. Unless you are unlucky enough to roll a double. This brings you 2 benefits:

  • You don’t need to pay your opponents rents, or pay taxes when you’re stuck in jail.
  • If you’re lucky, other players land on your tiles, and you can get income without doing anything.

Note that this only benefits you in middle-late game. In the early game, if you’re unlucky and land on jail tile, just pay $100 to get out of it. Your goal is to accumulate as many properties as you can at the beginning of the game. This gets you leverage to negotiate with other players later on.

Stations are cash cows

monopoly stations

Source: lifedeathprizes.com

Looking at the heat map above, Station tiles have a higher visiting chance than its adjacent tiles. And owning multiple station tiles increases the fee that someone needs to pay you if they land on the station. As a result, it’s a good investment if you can buy the stations early on.

But Utilities are not!!!

monopoly utilities

Source: boardgames.stackexchange.com

According to the heatmap, Electricity and Water tiles are not as attractive as it might seem. There are only 3% chance that a player lands on the tiles in a full game of 6 players. And what does it return? Considering you own both utilities, your income ranges from $20 to $120, which is a very wide range of unstable income.

At least, don’t buy utilities at the full price. Let’s just throw an auction to drain other people’s cash reserves.

Keep a healthy cash reserves

In Monopoly, there are multiple “incidents” where you need to spend your money on. From paying taxes to a random tax assessment, from paying for other player’s birthday, to paying fees to doctors. It is in your best interest to keep a good money in reserves for these situations. Somewhere around $100 should be enough.

Make auctions, not war

Monopoly auction

Source: wikihow.com

In the early game, auctions can really help you deplete other player’s bank account. If you land on a tile that you don’t want to own at that point, consider putting it up for auction. This will help you spy on other player’s strategy, as well as make them spend on something that they haven’t accounted for.

E.g. Pall Mall street has the tag price of $140. If you don’t want to buy it at the price as is, you can put it up for auction. There are only a few outcomes:

  • You buy it for less than $140, considering noone else paying more than what you’re willing to pay.
  • Someone else is paying for it, which means they will have less cash to pay for their own properties later.

If you have the highest amount of cash in the game, ALWAYS putting an empty property for auction, since it’s much easier to get it under tag price in that situation.

Summary

Monopoly is a great game that simplify the Real Estate business down to simple rules. You can play this game virtually anywhere with the game on the App Store, or playing with friends. This game can potentially eat up a lot of time, so consider playing it with housemates, or have a room to preserve the state of the game so you can continue on the game later on.

I believe that if you are a property investor, monopoly is a game that you should have in your house. With that being said, I found an affordable version of the game on Amazon.

By Tuan Nguyen

React logo

Technology review – React 16.9

React 16.9 landed in August 08 2019. Bringing with it numerous bug fixes, as well as some new features, including  <React.Profiler> , and a testing utility act()

Tl; dr;

React 16.9 does NOT contain any breaking changes, so we can upgrade from 16.8 safely. It contains a programmatic profiler so developers can measure the performance of the components in specific, and the whole application in general. Introducing a new-ish testing function act(), helping to simulate exactly how React works in a real browser.

Deprecations

Unsafe lifecycles

Major deprecation warnings are introduced in this update. Firstly, deprecated lifecycle methods are now renamed to UNSAFE_…

class MyComponent extends React.Component {
  // previously componentWillMount()
  UNSAFE_componentWillMount() { ... }

  // previously componentWillReceiveProps
  UNSAFE_componentWillReceiveProps() { ... }

  // previously componentWillUpdate()
  UNSAFE_componentWillUpdate() { ... }
}

The old lifecycle methods will be removed in the future updates. For 16.9, they only throw warnings if the code contains these lifecycle methods.

To help with migration, Facebook also introduces a library called react-codemod to help changing these names across your codebase. More details in the official announcement from React team.

Javascript: URLs

Another deprecation is the usage of javascript: URLs

We have been always able to copy and paste the following code into the url bar and see your current browser name. Or you can change it for it to do all sort of things, including exploiting cyber-security vulnerabilities.

javascript: alert(`Hello champion. Your browser is ${window.navigator.platform}`);

In React 16.9, the usage of this syntax will throw a warning and React team plan to have it throwing an error in the future. More details here.

“Factory” components

Previously, we can create a factory component function to create dynamic components based on our needs. This is before having Babel to compile React classes.

const factoryComponent = (type) => {
  return {
    render() {
      return <div>{type}</div>;
    }
  };
};

Now, with such usage, React will throw a warning to notify developers to avoid this pattern. We can alter the code to properly return a function/component class instead.

// factory for functional components
const factoryComponent = (type) => {
  return () => <div>{type}</div>;
};

// factory for component class
const factoryComponent = (type) => {
  return class extends React.Component {
    render() {
      return <div>{type}</div>;
    }
  }
};

New features

Async act()

Finally we can use act() with asynchronous function. Prior to 16.9, it only accepts a normal function.

const asyncFunc = async () => { ... };

// before
it('should do something', (done) => {
  act(() => {
    asyncFunc()
      .then(() => done())
      .catch(err => done(err));
  });
});

// after
it('should do something', () => {
  act(() => asyncFunc());
});

React.Profiler()

Basically it’s a wrapper component to allow a callback function to be executed everytime the underlay components are called.

class App extends React.PureComponent {

  constructor(props) {
    super(props);

    this.state = {
      counter: 1,
    };

    setInterval(() => this.setState({ counter: this.state.counter + 1 }), 1000);
  }

  render() {
    const onRender = () => {
      console.log(arguments);
    };
    
    return (
      <React.Profiler id="application" onRender={onRender}>
        <div className="App">
          {this.state.counter}
        </div>
      </React.Profiler>
    );
  }
}

And we have this in our console.

For more information on Profiler, React team provide a deep down documents here.

Summary

Every React version brings us joy to test and tinker with the new features. React 16.9 is no different. I had fun working with the #bleedingedge. Hopefully I can integrate some of these new features into my work soon.

By Tuan Nguyen

computer with money

Discussion – Programmers salary in Australia

Everyone wants to have a great career and most of all, a better-paying job.

In the future someday, you just get to laugh at what you had gone through on those days when you are broke and had nothing to eat or buy something fancy.

Before you get to that, you need to have a clear mindset with a lot of hard work and perseverance to achieve the five or six-digit salary you want.

With today’s skill-intensive job market, having a practical working knowledge of computers is simply essential–most specifically with computer programming.

This job has experienced a skyrocketing demand, pay and general awareness over the years since the digital boom of the 1990s.

As sourced in PayScale, Australia along with Switzerland, Sweden, and the United States have higher software engineer salaries than other countries.

[Note: For this, values for Australia have been expressed in US dollars.]

australian developer salary

Source: HackerEarth

Another is a survey from a worldwide employment-related search engine for job listings, Indeed, revealed that popular jobs in Australia are Junior Software Engineer, Software Engineer, .NET Developer, Junior Java Developer, and Full Stack Developer. [Updated last August 12, 2019]:

australian developer salary rates 2019

Source: Indeed

Here, you’ll see that the highest paid job is the Full Stack Developer having an average salary of $109,234 per year, followed by .NET Developer with $97,808, Software Engineer for $92,132, Junior Java Developer having $82,151 and lastly, Junior Software Engineer at $69,250.

Tl; dr;

Programmers design, develop, test, maintain and document program code for various user requirements, and system and technical specifications.

Programming is one of the tech jobs having a wider opportunity to those aspirants who want to get a much higher salary.

Having a bigger salary equates to a higher standard of living – enticing right?

Australia is one of the pretty popular countries among developers who love a laid-back lifestyle.

Average salary programmers get in Australia

programmer at work

Source: SEEK

Having a practical and in depth computer knowledge is a great tool for you to be in for an exciting career with programming.

According to Glassdoor, Inc. the national average salary for a programmer is $73,913 in Australia per year based on 53 salaries submitted anonymously to Glassdoor site by programmer employees.

When talking about programming languages, range of salaries offered to programmers depend on the economic well-being of a country.

For Australia, one of the most sought computer languages are cited below:

[Note: Much of the information are cited from Qubit Labs]

Python. Still remaining an in-demand, go-to language when you want to get into Science, Math, and statistics, Python is often used as an alternative to the R programming language in statistics and data science for ease of use and productivity.

python salary

Java. With its continued growing popularity, this language has been used by almost 40% of developers in 2018. It is considered the language of computers and devices. Java is a compiled language, specifically designed to work on any machine or at least any machine with a JVM (Java Virtual Machine) installed.

java salary

JavaScript. Used by over 60% of programmers worldwide, JavaScript is an interpreted language used to create interactive websites such as Facebook and YouTube.

As a primary front-end language, it is enhanced by the power of various frameworks and libraries, including Angular, Ember, Vue, and React.

javascript salary

Ruby. Comes with a huge variety of additional libraries, this computer language can be used for web applications development small scripting work and automation, and API development. Also, perfect for beginner programmers.

ruby salary

C++. Initially released in 1985, C++ remains the sixth popular language of programming. It still has plenty of developer jobs available due to legacy codebases, other times due to the low level of the language.

Today, C++ can be used where a high-performance code is essential including, real-time safety-critical code or financial industry applications.

C++ salary

C#. A Microsoft-produced .NET language,C# has similar capabilities to Java and Python. This programming language is arguably most useful in cross-platform development, game development, and web services.

C# salary

PHP. Having JavaScript a preferred client-side language of the web, PHP is the flip side, for many the preferred server-side language of the web. It is the leading language of web development.

PHP salary

.NET. Though not a language but a framework, .NET provides programming guidelines that can be used to develop a wide range of applications from web to mobile to Windows-based applications.

.NET salary

Points to Ponder

When choosing programming language(s) to pursue in your career, remember these things:

  • Its usage (i.e. GUI, systems, automation);
  • The prevalence of the language and support; and
  • Whether you enjoy programming with it or not.

Of course, a single programming language may not be enough in your career path. Everyone will need to learn different languages while they’re working.

Summary

Regardless of the salary, you should also take into consideration the popularity of the programming language, its usage and support and whether it is your passion/enjoyment to program with it or not.

Though at first your knowledge with it might be a bit little, programming skills and proficiency can improve over time.

By Tuan Nguyen

xml heart tag

Discussion – Why JavaScript is loved by developers?

A flexible and powerful programming language, JavaScript has been consistently implemented by various mobile sites, games, and web applications. Now, it has become a core component of web technology along with HTML and CSS.

According to numerous sources, including the Stack Overflow’s Annual Survey of 2018, JavaScript is the most commonly used programming language.

Stated in this same 2018 developer survey, “For the sixth year in a row, JavaScript is the most commonly used programming language.” Also, having to mention most commonly used libraries, frameworks, and tools, JavaScript-based technologies like Node.js, AngularJS, React top the list.

popular technology list

Source: Stack Overflow

Another survey revealed that JavaScript is used by 88% of all websites.

With all the success, it was never meant to become the cornerstone of modern web development. In fact during the 90s, the language was just created in less than 2 weeks, with a very different purpose in mind – running on both client and server.

Back then, it wasn’t a complete success though.

It took years to be taken seriously as a backend language, but it had rapidly thrived on the frontend, eventually becoming the standard programming language of the web.

Tl; dr;

While HTML is for structure and CSS is for style, JavaScript provides interactivity to web pages in the browser.

The name of JavaScript was derived in an attempt to ride the wave of Java’s popularity and speed up adoption.

You will not find much similarities between both languages today.

With the creation of JavaScript, it is possible to satisfy different audiences.

The first are the component writers and enterprise-level professionals with Java, while the second one are scripters and designers with JavaScript.

This second group, whom we could also call in modern web development terms, frontend developers.

Why do developers love JavaScript?

javascript features

Source: TutorialAndExample

A scripting language that’s inserted directly in the HTML of a page, JavaScript is the only programming language of its kind that can be understood by web browsers. We will have to wait for WebAssembly to be more mature to be on par with Javascript.

With JavaScript, browsers can read, interpret and then run the program. Thus, creating powerful client-side experiences.

Here are few things you see every time you spend at least 2 minutes on a web browser that are the returned result when searching for the programming language:

  • Autocomplete;
  • Loading new content or data unto the page without reloading the page;
  • Rollover effects and dropdown menus;
  • Animating page elements (i.e. fading, resizing or relocating);
  • Playing audio and video; and
  • Validating input from forms.

Knowing that web servers run on different languages such as Python, PHP, Ruby, Java or .NET, JavaScript is compatible with other languages.

The importance of JavaScript

JavaScript has wide-ranging importance, that’s why it is popular among web developers:

  • JavaScript is supported by multiple web browsers including Google Chrome, Internet Explorer, Firefox, Safari, and Opera etc.
  • It has lots of frameworks and libraries, making it easy for web developer to build large JavaScript-based web applications.
  • With just opening a notepad, you can write your JavaScript code – easy to write, without using any specific tool.
  • With Google implementing many optimization techniques to increase the loading speed of the mobile web pages, it requires developers to use JavaScript for optimizing websites for mobile devices for Accelerated Mobile Pages (AMP)
  • An interpreted programming language, JavaScript still simplifies development of complex web applications, allowing developers to simplify the application’s composition.
  • As most developers do responsive web design to make a website accessible and work well across multiple browsers and devices such as smartphones and desktops, it can be used in optimizing web pages for mobile devices.
  • Relatively fast for the end user, visitors don’t need to fill out an entire form and submit it in order to be told they made a typo in the first field or fill the complete form again. JavaScript provides immediate feedback when they made a mistake.
  • JavaScript language is simple for developers to learn, having its syntax similar to English.
  • It has third party add-ons, helping developers write snippets that can be utilized on the necessary web pages.
  • With JavaScript, code is executed on the user’s processor instead of the web server, saving developers bandwidth and reducing extra load of the server.

Summary

JavaScript a mainstream programming language and most loved by various types of developers, helping them build large scale web applications easy and quick.

It also enhances speed, performance, functionality, usability, and features of the application without any hassle, delivering optimal user experience across various devices, browsers, and operating systems.

Additionally, JavaScript has libraries, frameworks, and tools as per the requirements of the projects.

By Tuan Nguyen

tug of war

Discussion – GitHub vs Bitbucket

If you want a large development team to collaborate and work on a certain project, you need to choose the right source platform to upload your code.

You can pick any repository hosting platform but unfortunately not every repository host makes your developers more productive in creating products as you’ve planned.

GitHub and Bitbucket are the two most popular repository hosts that provide its customers both public and private repositories.

These two have grown strong communities and user bases over the years.

Tl; dr;

GitHub and Bitbucket are the two best-known version control systems on the DevOps market.

The two offers features appealing to everyone from individual developers, to small teams and right through enterprise customers.

Their most basic and fundamental difference is that GitHub is more focused around public code having a huge open-source community, while Bitbucket is for private having mostly enterprise and business users.

What is GitHub?

github logo

Source: thenextweb

GitHub is a for-profit company that offers a cloud-based Git repository hosting service, helping developers store and manage their code, as well as track and control changes to their code.

It is the most popular version-control system with some 57 million code repositories on file. Also, it is loved by the open source community as public repositories are free.

It only supports Git (not Mercurial or SVN), written in Ruby and Erlang and is available for Windows, Mac and Android.

Its key features include:

  • Social coding;
  • Collaboration;
  • Integrated issue and bug tracking;
  • Graphical representation of branches;
  • Code review;
  • Code hosting;
  • Team management;
  • Project management;
  • Propose changes;
  • Protect branches;
  • Tracking and assigning tasks;
  • @mentions;
  • Conversations;
  • Milestones;
  • Assignees;
  • Integrations;
  • Documentation;
  • Set community guidelines;
  • Built-in review tools; and
  • Team and user permissions.

Advantages of using GitHub

  • An integrated issue tracker, helping teams to track issues within their project in real-time;
  • Contains milestones and labeling features to assist users in tracking information changes;
  • Offers branch comparison views reviewing the state of the user’s repository across commits, tags, and timescales;
  • Supports more than 200 different programming languages;
  • Allows users to host and publish theirown codes on the GitHub platform across the SSL, SSH or https environment; and
  • Has the ability to highlight syntax (its edge over other platform offers).

What is Bitbucket?

bitbucket logo

Source: stackshare

An Atlassian product (the makers of Trello and other apps), Bitbucket is very well-known for its full integration with other products in the Atlassian family such as Jira, Fisheye and Bamboo. It enables you to have a slick and clean interface the moment you log-in.

The product tool is primarily tailored in helping enterprise developers. It is written in Python and uses the Django web framework. It supports Git and Mercurial VCS (but not SVN) and comes with SOC 2 Type II security compliance.

Bitbucket is available for Mac and Windows and Android via an app.

Its key features include:

  • Workflow control
  • Access control to restrict access to your source code
  • JIRA software integration
  • Snippets
  • Collaborative projects
  • Smart mirroring (beneficial for enterprise level)
  • Code clustering
  • Mercurial repository hosting
  • Latest and Updated APIs
  • Full support for large files
  • Supports external authentication with Github, Facebook, Google and Twitter.

Advantages of using Bitbucket

  • Allows users to construct an internal issue tracker within their repository so that they can track down bugs in real-time;
  • Enables its users to access control features, regulating access permissions for different people involved in the project;
  • Incorporates two deployment models, allowing users to either placing the code in a cloud environment or launching a separate in-house server;
  • Offers both Git VCS and Mercurial;
  • Easy to navigate and search;
  • Helps users to migrate their code from old repositories to new repositories of BitBucket; and
  • Though not offering the highlight feature, Bitbucket still add comments and launch threaded discussions.

GitHub vs Bitbucket: Which one is better?

Summing up, Bitbucket is easy to use and a bit forgiving if you are just new to git, as you learn the workflow.

If you are interested with open-source development, GitHub is the major platform in open-source and public code. While, Bitbucket specializes in business clients.

For teams with only a few number of people Bitbucket can be your friend.

In terms of package, GitHub falls a bit on the pricier end of the spectrum in comparison to BitBucket and also promises a bigger community.

Weighing across other attributes and features, GitHub takes the top shelf and irrefutably the best version control repository in the market.

Whatever development tools you use, may it be Bitbucket or GitHub, anyone can guarantee great service for both of these products.

Summary

GitHub and Bitbucket are development tools that caters different services and demographics. GitHub basically has a huge open-source community while, Bitbucket has enterprise and business users mostly.

It is not that you can’t have a private repository on GitHub (yes you can) or you can’t post codes publicly on Bitbucket (again, you can). It is such that, the majority of the users aren’t doing so.

Outside their differences, the two platforms function very similarly.

By Tuan Nguyen