Neo4J 2 – Joins in Cypher

Neo4J 2 – Joins in Cypher

The OPTIONAL MATCH clause is a way of fetching related data off a node, without affecting the main query. It allows us to perform some joins similar to the ones we know from SQL, see image below. We will discuss in detail how MATCH and OPTIONAL MATCH clauses can lend themselves towards constructing the joins.

Note: We will not be covering right joins as they are costly to perform in graph database, it is much more efficient to swap the sides and perform a flavour of left join. We also are not going to talk about Self Join.

Continue reading “Neo4J 2 – Joins in Cypher”

Federal Budget vs. Unstable Economy

Federal Budget vs. Unstable Economy
Every country has something to offer to another; and every country depends on another for some resource to either produce or use. To offer something, the country needs people to do the job. So if the demand is low for what the country has to offer, then it will require less people to do the job. If the country doesn’t have the right people to do the job then it can’t supply to meet the demand and therefore potentially lose out on sales. The more people with job, increases the demand for housing, infrastructure and tourism. When there is a right balance of trade and employment, the country will prosper. If there is an imbalance or the growth rate of production and employment is far below sustainable growth, then the economy is in trouble.  It will require a push from the government and the monetary authority of the country i.e. people in charge of printing money (e.g. reserve bank) to get it back on track.

The push is referred to as economic stimulus, i.e. stimulating the economy.

Continue reading “Federal Budget vs. Unstable Economy”

Cars: Who owns what?

Cars: Who owns what?

This is a simplified version of which car companies own what brands, extracted from article written by Thor Benson on November 14, 2013.

BMW (Mini, Rover, Rolls-Royce)
Chrysler (Dodge, Jeep)
Nissan (Infinity)
Fiat (Alfa Romeo, Lancia, Ferrari, Maserati)
Ford (Volvo, Mercury, Lincoln)

 General Motors (Saturn, Chevrolet, Hummer, Cadillac, Saab, Holden, Opel, Vauxhall)
Honda (Accura)
Hyundai (Kia)
 Mercedes-Benz (Mayback and Smart)

Toyota (Lexus, Daihastu, Scion)
Volkswagen (Porsche, Audi, Skoda, SEAT, Bugatti, Bentley, Lamborghini)

Banking & Bankwest Notes

Banking & Bankwest Notes

Some notes on how PayPass and PIN transactions work and what account balance means when you are with Bankwest.

Online Banking

Balance‘ is the balance amount excluding the credit limit of $100. Whenever this amount is in the negative, we have started digging into that credit limit.

Available Balance‘ is the balance amount including the credit limit of $100. You would ideally want to to keep this amount above $100 to ensure you do not accidentally dig into the credit limit. If this amount is in the negative, you are actually going into overdraft and that is when you start to pay the overdraft fee.

Once a transaction is added, the amount displayed under ‘Available Balance’ is accurate with regards to the amount actually available, e.g. to take cash out. The amount displayed under ‘Balance’ takes longer time to include recently added transactions.


Bankwest does not process transactions over the weekend, therefore you will not see a transaction dated on a weekend.

PayPass transactions are always under $100 and do not require PIN. These transactions are automatically authorised after checking for account balance with the bank. Does not register the transaction with the bank. The bank is only informed of this transaction when MasterCard informs them. MasterCard gets notified, once the merchant has processed the transaction, which is usually end of the day or whenever they feel like. For this reason, PayPass transactions are always dated on the day the bank receives them and not when they actually took place. Due to this it could take up to 5 working days for a transaction to appear. Using PayPass, your bank balance is no longer a true representation of what you actually have. PayPass transactions will not be displayed as uncleared funds as banks do not know about them until they are passed through from MasterCard. In case of fraud, Bankwest does not handle the claim directly. It is MasterCard who handles the claim and they have access to these information.

CHIP n PIN transactions are the ones you need to provide your PIN for. These transactions contact the bank directly for authorisation. Due to this, they are also immediately processed and the transactions are dated the same day it took place. Exception to this rule is the weekend transactions. They are dated first working day after the weekend/long weekend.

Are Frequent Flyer programs worth it?

Are Frequent Flyer programs worth it?

The frequent flyer programs were created to lure passengers who travel often to stick with a certain airlines by providing them points and status credits. So airlines get returning passengers, which is good for the business and the passengers get to use the points collected by travelling on in-flight purchases, flight upgrades and free flights. With the introduction of frequent flyer programs in credit cards, stores and supermarkets, those passengers are now able collect more points even quicker. This made, collecting points, even more attractive for the frequent fliers.

This is well and good for them but is it worth for someone who is a non-frequent flier, who in average takes two local flights a year and one long haul for a nice vacation, and earns points on your credit card purchases mostly Visa/MasterCard. The banks and the airlines think so but is it really?.

Continue reading “Are Frequent Flyer programs worth it?”

Software Quotes

Software Quotes

Here are some software quotes I came across and very much agree with and (try to) follow:

  • The trick is to fix the problem you have, rather than the problem you want. — Bram Cohen
  • The purpose of software engineering is to control complexity, not to create it. — Pamela Zave
  • When you feel the need to write a comment, first try to refactor the code so that any comment becomes superfluous. — Martin Fowler
  • Premature optimization is the root of all evil in programming. — C. A. R. Hoare
  • Perfection is reached, not when there is no longer anything to add, but when there is no longer anything to take away. — Antoine de Saint-Exupéry
  • One of my most productive days was throwing away 1000 lines of code. — Ken Thompson
  • There is nothing more unproductive than to build something efficiently that should not have been built at all. — Milt Bryce
  • The ultimate management sin is wasting people’s time.  T. DeMarco and T. Lister
  • The fastest algorithm can frequently be replaced by one that is almost as fast and much easier to understand.  D. Jones
  • Successful software always gets changed.  Frederick P. Brooks
  • You’re bound to be unhappy if you optimize everything. — Donald E. Knuth
  • A clever person solves a problem. A wise person avoids it. — Albert Einstein
  • Everything Should Be Made as Simple as Possible, But Not Simpler. — Albert Einstein
  • Knowing is half the battle (the other half is doing). — G.I. Joe
  • When everything is connected to everything else, for better or worse, everything matters. — Bruce Mau

Future of Presentation Layer

Future of Presentation Layer

In the past, I developed desktop applications in C++, Java, Delphi, C# and Visual Basic. Across all the languages and the frameworks, the development paradigm was quite straight forward. There is a Window (a.k.a. Form) with some controls on it and you wire up the actions for them. Those actions might perform calculations, access a database, a file or all of the above. So to sum up, a single desktop application will contain the logic for user interface, business rules and data access inside it. The down side of such stubby applications (a.k.a. thick clients) is, that the storage (database or file) has to travel with it. So sharing this application with multiple users is cumbersome, generating reports is not fun and puts pressure on the local network. 

Continue reading “Future of Presentation Layer”

Are you a Tech Lead?

Are you a Tech Lead?

An year ago, my next career goal was to become a Tech Lead. I wondered whether it is something I can achieve with dedication and aiming high or is it a simple case of being born with leadership gene, if such thing actually exist. When I consulted with Ben Liquete, my team’s Tech Lead at Barnardos Australia, we brainstormed about the qualities that makes up a Tech Lead and it came down to the following: A Tech Lead is an experienced programmer and a valuable team member. Is that all? No, there is more to it. Let’s dig deeper, shall we?

Continue reading “Are you a Tech Lead?”

Monetary Policy Basics

Monetary Policy Basics
The previous blog post explains that the money supply is determined by the workings of the economy and when left unmanaged it could have an ill effect on the nation’s currency value, which in turn affects the economic prosperity and welfare of a nation. The central bank’s weapon to combat this ill effect is the monetary policy.
Excessive money supply reduces a nation’s currency value. To prevent this, there are different ways to limit or ‘anchor’ the money supply, a.k.a. Monetary Anchor Options. The popular ones are inflation targeting, exchange rate targeting and product-price targeting.

Continue reading “Monetary Policy Basics”

Revision Control Systems

Revision Control Systems
It is also known as version control and source control. The goal of this tool is to record changes made to files such as source code files by applying time-stamp and version number. This provides the user with history of changes for a given file as well as backup in case of file corruption. This tool is mainly used for text files rather than binary files as it is easy to record line by line differences on a text file compared to the previous version rather than copying the entire file over again. Copying an entire file over again, would result in waste of space. Version controlling a binary file cannot give you any detailed history other than when it was changed and not what has changed.

Continue reading “Revision Control Systems”