Today’s article will be a backstage pass to one of the new upcoming features being added to LandlordMax Property Management Software. In particular, today we’ll talk about what’s involved in adding column sorting on all the tables in the upcoming release. We’ve been working hard to get this new release of our property management software up and running and I figured it would be a nice change to give you our readers a chance to see exactly what’s involved in adding a new feature.
We’ve had a lot of requests for many features. One of the most common has been the ability to sort any column in any table in LandlordMax Property Management Software. This article will talk about how we’re adding this feature. I’ve tried my absolute best to keep it as least technical as I possibly could. So now that you’re interested, let’s start reading how it’s being done!
The very first thing we needed to do before we even started to implement this feature was to learn how to sort tables in Java. You see this is not a built in function of the Java programming language, it’s something that needs to be implemented. There are hooks into the language to make it possible; however we needed to learn how it works. The good news is that there are lots of books and websites out there to help us out.
After doing some research, we came to the conclusion that we would be ahead by buying a component library from another company called JIDE Software. What this means is that we would buy the programming code from another company that would sort the table for us. You see there are many companies that exist only to provide components for other programs like LandlordMax Property Management Software to use. These can include web browsers, email clients, table sorting, etc., all components that you can directly integrate into your software.
We could have done it ourselves, but we quickly realized it would have cost more than the cost of purchasing it, and not only that but the component library has a lot more features that we could use in the future. For example, we can later add the concept of hierarchical tables. That is, tables where we can expand and collapse whole groups of rows, something that would really benefit some of our reports, such as “Accounting entries grouped by categories” as illustrated in the image above. With this feature, we could collapse/expand all the accounting entries for a particular category in the report, to help us better isolate only the information we want. Another great looking feature is that it gives you the ability to choose which columns to display, so that you can remove columns you’re not really interested in. There are other great features, however unfortunately because of tight the timelines for this release, a lot of these niceties will have to be postponed to the next major release. The good news is that these are furthers features you can expect in our future releases.
In any case, all these features are not free. With this particular component library that we purchased, for every 1000 customers we acquire we have to pay one additional license fee to them which is definitely something we need to be conscious of. We currently believe this is worth the cost.
Although it might look like there’s not much work left from this point because we purchased a library to sort the tables, there surprisingly is! This is only a very small part of the puzzle. The next thing we needed to do was to define each column, and how they were to be sorted. In Java, there is something called a Comparator. This allows two Objects to be compared to each other, so that you can determine their order. Therefore, for each and every table, and for each and every column, we need to define which type of Comparator to use. Is it a Date Object Comparator, is it a Currency Comparator, is it a Number Comparator, is it a String Comparator, etc. Considering the number of tables we have, not to mention reports, you can quickly see that this adds up to about 200 tables times the number of columns. This is a lot of definitions!
Now unfortunately for us today, in the previous versions, because we didn’t have the notion of sorting on the columns, we took some shortcuts in the code to save time (a normal programming design decision to not implement everything and rather only implement what you need today). Actually we did it then for two reasons. But before I go into how it affects us, let’s quickly look into the concepts of Java tables. First and foremost, each entry in a table is an Object. That is if it’s “hello”, “hello” is a String Object. If it’s a date, then the representation of the date is a Date Object. The problem is that when you use a Date object, how does the table know how to display it? Is it 2005/10/10, Sept 15, 2004, 05/23/2005, etc.? This is where the Java language built in something called a Renderer. It takes an Object and renders it into something that we can use, hence the name Renderer. So for example, it will take a Date Object and render it as “Sept 15, 2004” in our table.
This is a great feature of the language because it allows us to store the Objects rather than just their string representations. Imagine if we could only store in the string representation for dates. If I sorted “Sept 15, 2004” and “December 23, 2004” alphabetically then “December 23, 2004” would come first. However if I sort them by their Date Objects, then I can use the Data Comparator above to compare them one to another and correctly sort them by date.
As I mentioned this is a great feature. However in the previous versions of LandlordMax Property Management Software, because we didn’t have any sorting, we didn’t need to store the actual Objects, we could just store the string representation. This would save us all the trouble of writing Comparators as well as Renderers. In essence, this saved us a great deal of time! However today, because we want to add sorting, we need to revisit where all our tables are created to convert the string representations back into Objects and add Renderers to all appropriate fields.
The good news is that we can re-use a lot of the code, we only need to write one Comparator and one Renderer for each type of Object, say our Date Object for example. The bad news is that we need to go through each and every table and convert the string representations to their respective Objects, associate the appropriate Renderers and Comparators. We need to do this for about 200 tables times I don’t know how many columns. This is a very large task!
Although this might seem like it’s the end, it’s not yet the end! Because we knew the Object representing the list of data and table itself we’re identical, they didn’t change order and so on, we could use another shortcut and just reference the Object list at the appropriate position in the list to access the selected Object. So for example, in our list of tenants, if we double clicked on the 10th tenant, then we could either choose to select the 10 item in the table or the 10th tenant from the list of Tenant Objects, either worked. We chose the later because we could greatly automate the process in our code. Today this is no longer true, the 10th tenant from the list of Tenant Objects might not be the 10th tenant in the table (depending on how it was sorted). We therefore needed to change all the code that referenced these Tenant Objects from the list to get them from the table directly and not from the data Object lists. That’s at least another 200 code changes.
It doesn’t end there. Because we don’t display every attribute of an Object in the table, we need to store that Object hidden in a column in the table. So for example, our Tenant Object can contain additional information that we cannot display in the table, such as all the accounting entries associated with that tenant. Therefore, we cannot reconstruct our Tenant Object from only the values in the table, it’s just not possible. Therefore, we’ve had to append our Objects (in this case our Tenant Object) as the last column in each of our tables. Another 200 code changes!
By default all columns are displayed. Therefore we now need to go through every table and hide the column containing the Object itself in the table. We don’t want to display this column, it wouldn’t make sense. Another 200 code changes!
We’re getting there, but there’s still more code changes required. What about printing? Will the printed table match the sorted table? I don’t know yet, we haven’t gotten to that part of the code yet, but in essence we need to verify that all 200 tables correctly transfer their table data to the printer, and not the list of data Objects (because these would no longer be correctly sorted).
Are we there yet? Not quite! Because all our tables are completely refreshed every time you change screens and/or workareas, we currently lose track of which columns were sorted. We’re now looking at how we can manage to keep track of which columns where indeed sorted and in which order so that when you return back to your table, you don’t need to resort it again. Will this require another 200 changes? I don’t know yet because this isn’t completed either, but I suspect that it can be greatly automated and not require 200 code changes.
What other changes are there above this to handle sorted tables, I’m not sure… However, by the time the software is released, you can be assured that this will be completely done as well as all the other features we add. This is why if someone ever asks me if a feature will be available in the next release, I will only say it’s anticipated until it’s 100% completed and tested. You can never be 100% sure it will make it into the product until its 100 completed!
I hope that you found this article informative, that you now have a better understanding and appreciation of what goes into building each and every version of LandlordMax Property Management Software. Although software may seem simple to build on the surface, there’s often a lot of hard work involved. There’s a reason why there’s not a lot of good software, and that’s because it’s hard to do!
Although it’s a discussion I’ve had a number of times before in the past, this weekend it re-occurred again. Although not directly in the context of investing in real estate, the concepts are the same. Basically, I’ve seen this happen over and over again, people who invest wisely in other assets (business, real estate, etc.), don’t always use the same principles when investing in stocks. I don’t know how the last people I had this last discussion with invest (we didn’t discuss those details), but the discussion did come up which prompted today’s article.
Often I see many wise real estate investors, wise business owners, and so on, look at the whole of their related investment, do their due diligent, and then only invest in income generating ventures. However these same people will then often completely ignore the same investing principles when dealing with other assets such as stocks! How? Why? I don’t know. If you look at a buying an investment real estate property, you will look at its total cost, at its cash flow, etc. When looking at a stock, you should do the exact same thing. Same concepts, same principles, same research. However the reality is that most people don’t.
In this article we’ll go over how and why you should look at stocks the same way as buying other assets such as investment real estate, businesses, etc.
Let’s start by looking at a basic deal. When you purchase an investment real estate property, you’ll want to look at the total price of ownership to decide if the property is expensive. That is, you want to know what the property is selling at. If you buy a business, say a Subway franchise down the street, you also want to know how much it’s going to cost you to invest in it.
When people buy stocks, more often than not, they want to know the stock price. Then based on this stock price they’ll determine if the stock is expensive or cheap. That doesn’t work! Think about it this way, stocks are only partial ownership of the company you buy stocks in. If you buy a share of Microsoft at $10/share or $40/share, you don’t own the price of the whole company, so how do you know if that’s expensive? If I sold you part of a real estate property for $10 or $40, how do you know which is worth more? You DON’T! You can’t with just that information. Why? Because how do you how big a piece of the pie that share is worth? What if for the $10 a share of the real estate property I sold you there are 1,000,000 shares? That makes the property cost $10,000,000. Now what if I told you the $40 a share real estate property only had 10,000 shares, making that property cost a total of 400,000! That’s a drastic difference! That’s the reality of stocks. That’s why many people fail at investing in stocks. If someone doesn’t even know the total cost of ownership, then how can they be investing? That’s gambling. If I bought an investment real estate property without knowing how much it truly costs, then how could I be expected to make a profit? I couldn’t! Whether or not I did would just be luck.
It’s very easy to get the total price of any publicly listed company, that’s what called the market cap. The formula is as simple as I stated above, the total number of shares multiplied by the cost of each share. This number of course changes daily, because stock prices change, but in any given instance you can quickly determine the total price of a company. Because it changes, don’t expect to be 100% accurate, just use it as a ballpark figure. Like in our example above, we can quickly have an idea of what’s what without needing to know it’s precisely $40,192 versus $40,000 compared to precisely $10,234,725 versus $10,000,000.
Now that we know how to calculate the total cost of ownership, then the next thing that should come to your mind is what is its true value? One theory, the efficient market theory, states that the market always accurately reflects the true value in the stock price. That is to say, the stock is worth what its selling for because everyone has all the information now and can correctly evaluate it. The reality is that it’s not efficient! Stocks are bought by many people, many who know what they’re doing, and many who don’t. Stocks are bought on gambles, stocks are bought on information, stocks are bought on name recognition, stocks are bought on tips, stocks are bought on emotions, stocks are bought for almost every reason.
What this means is that the actual value of a stock is not necessarily what it’s selling for, just like real estate, just like businesses. However the good news with stocks is that the discrepancies can be much larger than they will ever be for real estate properties. For example, if you look at the dot com boom and bust, the discrepancies were incredible! At other times, in a down market, prices can also be much below their true value. It’s possible to buy stocks for much less than they are worth, just as it’s possible to buy real estate much below its true value. The difference is that with stocks, because they are so easy to buy and sell as well as having a low barrier to entry, these fluctuations can be much bigger and faster.
Now that we know that the real value of a publicly traded company and its stocks are not always the same, how do we determine its true value? This is where it gets a little more complicated. There is a lot of debate here. You can talk about trends, you can talk about potential, deals coming up, patents, etc. That’s all fine, but for the scope of this article, we’ll only focus on hard nosed financial facts and figures. How much equity does the company really have? The first place to look is the balance sheet (which is available through SEC fillings and many online sites such as Yahoo Finance).
For our example, we’ll use a really well established company like Microsoft through the Yahoo Finance website. Generally balance sheets are divided into two sections, assets and liabilities. This is just like any investment real estate property or business. In assets section you want to know the hard values of the items you’re purchasing. For a publicly traded company, the easiest hard asset is cash. What’s the cash balance? For Microsoft in June 2005 it is $37.75 billion. That is, if the company went bankrupt tomorrow, assuming no debt, they could give out $37.75 billion to all the shareholders ($3.52/share).
What other hard assets can a company have? Many. It can own factories, inventory, etc. The only issue I have with this is that if the company went bankrupt tomorrow, you might not be able to sell these assets at full value. Therefore you should recalculate the balance sheet to reduce the assets at a discounted value. How much? That depends on the industry and how much security you wish to pad your price with. I like to be conservative myself, so I really low ball these assets.
One word of warning when calculating other assets, there are two rows you need to be extremely careful of, they are intangibles and goodwill. Without going into too many details, these are items that have no real hard assets behind them, that is if the company disappeared tomorrow, that value wouldn’t be paid out in cash to you. Examples can include the value of a brand name. How much is the name brand “Coke” worth? “Microsoft”? That is how much people buy their products because they know the name. The answer is that it depends. It’s worth something, but how much can’t really be determined.
Another item that’s often added here is the premium paid when a company acquires another. For example, if a company acquires another that was going for $1,000,000 but they paid $1,250,000, then you would add $250,000 as goodwill. This is the premium paid to acquire a company (which is very common). Therefore to be safe I completely discount these two rows because to me they have no really definable value that I can easily equate. This is just like how much is it worth to have beach front property? It’s definitely worth something but how much exactly I don’t know, there are just too many variables to be anywhere near accurate. Therefore to be safe I don’t assign any values to it and therefore I’m excited when I find a beach front property that has a balance sheet exactly as one that isn’t beach front!
The second section is debt. Debt can be your friend, but in business it’s a liability. These are payments you need to make every month. You need to verify that the company you are buying is not overloaded with debt. This is the same as verifying that you yourself are not overloaded with debt when purchasing a real estate investment property or a small business. You need to verify that the company can service its debt otherwise it will go bankrupt. What’s too much, well that depends again. Each industry is different and each business is different. I personally like to play it safe and avoid companies that have more than 25% of their cash reserves in debt. I understand this is stringent, but I don’t like to lose! No debt is even better when it comes to acquiring a business. Imagine if you could buy two real estate investment properties for the same amount of money, but one would require you to be in debt while another wouldn’t. Which is better?
Another thing to avoid is companies that grow through solely through debt. You can grow through debt, but eventually a company will cap out. Think of it this way, if the only way you could grow your real estate portfolio is 100% through financing (not from re-investing profits from your current properties), then eventually you will get crushed by a downturn in the market or by a lack of acquire future funding. You want some margin for safety. If I went out and bought every rental property I could with 100% financing, at some point I would get crushed. I might last a while, but if interest rates climb by even a small rate, or if one of my properties has some problems for even a short time, I’m at risk of collapsing my entire portfolio. The same is true for companies.
Now that we quickly looked at the balance sheet, what about the cash flow statement? When you buy an investment real estate rental property, you should definitely look at cash flow. Is the company consistently generating positive cash flow? Would you buy a real estate rental property that’s generating negative cash flow (assuming you couldn’t do anything to fix it yourself because you can’t personally manage a publicly traded company either)? I wouldn’t. So why is this important aspect so often ignored? I wish I knew… However, the reality is that it is often completely overlooked.
Looking at a publicly traded company’s cash flow statement is almost the same as looking at real estate property’s cash flow statement. For example, if we look at Microsoft’s, we can quickly see their yearly cash flow is positive with the exception of this year (2005), which was highly negative in comparison. In this particular case, rather than completely dismiss the company without looking further, we can quickly see on the cash flow statement that the reason it had such a negative amount is that it paid a one time dividend of $36 billion dollars! There’s no way the cash flow cannot be affected by such a large dividend. However, on a normal basis, what we’re looking for is a consistent positive cash flow, just like a real estate rental property. Sometimes you’ll get the odd inconsistency, however overall you want positive consistency.
There are many other aspects of publicly traded companies that are almost identical to real estate rental properties (and commercial properties). However for the scope of this article we’ll stop here today. The idea is that if you take the same amount of time and pay the same amount of attention to your real estate rental properties as you do to purchasing stocks, you’ll probably come out ahead. If you don’t, then you probably should look at buy index funds because they basically mimic the market average. You will never beat it, but you will also never lose to it. For the astute investor who has the time and is willing to put in the effort, the rewards can be very positive, I can assure you from personal experience.
Before I end this article, just a couple of other quick tips for you when purchasing stocks. Firstly, pay careful attention to ROE (Return On Equity), it’s one of the metrics I use myself very religiously. This metric is basically supposed to measure the return on the value of the equity. So if you have an ROE of 15%, then the true business value (the value of the assets of the company) as suppose to increase by 15% for the year. Please note that you should calculate this value yourself, after you’ve made the adjustments we talked about above. For example, a company can say that its brand value is increasing by 50% a year while its real hard assets are actually decreasing by 35% in value each year, giving it an ROE of 15%. This could give you a nice looking positive ROE where in reality it’s very negative. I’ve seen this very legal trick played much too often.
The other tip is to avoid company’s that inconsistently take huge financial hits in down markets. Without naming names here, there are several companies over the last 2-3 years that have taken large losses, larger than they acquired in any one year. You can do this for many reasons, for adjustments, right-offs, etc. However some companies use this to absorb all their losses during a down market, when their stock price is already depressed. This way they can absorb losses for many years at one time while the stock is already low, after all it can only go so low. Then when the market picks back up, their profits are back, because the losses they should have claimed for that year are all used in that one bad year. This way they can have one extremely bad year and maybe 5 or so good years. However, if you average the company over say 7 years, then the rosy picture of the 5 good years no longer look so good. This is the same as someone who inflates their real estate rental income just before they sell. For example, they can pay all the regular expenses a year or two beforehand by buying all their supplies and stock piling them in anticipation, making the property look cheaper. The can also keep their entire inventory loss (renovations, etc.) and write it all off as one massive loss in one single year. There are many tricks that can be used to inflate the real price that can be used for any investment asset, including real estate and business. Real investors can generally see these, or at least have lots of red flags firing off left and right when they encounter them. I personally don’t believe in these tactics, but I do need to be aware of them to properly and correctly valuation all of my investment assets.
Lastly, if you are interested in buying stocks, then there are definitely some books I think you should at least read. If you’re only going to read one book, then I would suggest the The Intelligent Investor: The Definitive Book On Value Investing, Revised Edition by Benjamin Graham. It’s not a complete book on stock investing, there are more enhanced ways of valuating companies, but it’s a great start at understanding the fundamentals. After all, he’s the one who thought Warren Buffett how to invest in stocks. In any case, please find below a quick list I compiled of some of the books I found very informative (in no particular order):
- The Intelligent Investor: The Definitive Book On Value Investing, Revised Edition
- The Warren Buffett Way, Second Edition
- The Essays of Warren Buffett : Lessons for Corporate America
- Security Analysis: The Classic 1940 Edition
- Reminiscences of a Stock Operator (A Marketplace Book)
- When Genius Failed : The Rise and Fall of Long-Term Capital Management
- Take On the Street: What Wall Street and Corporate America Don’t Want You to Know
- Buffett : The Making of an American Capitalist
- How to Lie With Statistics
Just like at the height of the dot com boom, being at the height of this real estate boom is causing real estate related fraud to become more and more prevalent. The number of FBI mortgage fraud cases has already climbed from 534 for all of 2004 to 642 cases for just the first half of this year alone (2005)! The FBI report also specified that 26 states have more serious mortgage fraud problems than others.
The biggest scam today is people artificially inflating the prices of houses. A recent article in Business Week (the September 05, 2005 issue) has an article entitled “The Accidental Mortgage Detective” which gives a fairly good explanation of how they do this. The general idea is to buy and sell the property many times over within a certain time period to people within the same group. Each sale is priced slightly higher, to give the impression that the property is quickly increasing in value. And this can be done with multiple properties in the same area, even within the same street to give the appearance of an even bigger local real estate market boom. Eventually the prices gets inflated enough that it is sold to the general public for a sizeable profit. As soon as the properties are sold, they quickly lose value because the value really wasn’t there in the first place.
There are many other fraudulent methods, such as using fake identities, fraudulent documents, etc., but I believe this one is the most important and least likely to be noticed, especially in a high market. Just another thing to pay attention to when purchasing your properties, especially considering that 80 percent of the cases involve industry insiders (people who know what they’re doing).
Alan Greenspan (the Fed Chief) suggested this week that “signs of froth have clearly emerged in some local markets where home prices seem to have risen to unsustainable levels”. Based on the fact that Greenspan always weighs his words very precisely because of the effects it has on the economy, this is not a statement to take lightly. Remember that back in the dot com craze, he also used similar carefully worded sentences to describe the stock market bubble just before it burst.
He’s also suggested that “the vast majority of homeowners have a sizable equity cushion with which to absorb a potential decline in house prices”. Again based on the carefulness of his wording, Greenspan is clearly implying that price adjustments are coming in the housing market, that prices will very likely drop! Also, in this same statement, he believes that most homeowners have sizable equity cushions to absorb the fall in prices which I don’t believe is correct. If you read further in this article from CNN Money, he also has some other statements that might suggest otherwise, which we’ll go over in this article.
Going back to Greenspan’s first comment suggesting that housing prices are in a bubble stage, this is very scary! First and most importantly because he acknowledges it. For Greenspan to suggest this is very significant, because he’s the one that sets the interest rates, because his very words can alter the economy. This man is very influencial because of his position and his knowledge and therefore careful attention must be paid to everything he says. Although he may be wrong at times, the effects of his decisions are felt worldwide.
He also states “The dramatic increase in the prevalence of interest-only loans, as well as the introduction of other, more-exotic forms of adjustable-rate mortgages, are developments that bear close scrutiny“. Reading between the lines as one must when listening to his statements, he’s basically saying that there are too many lending vehicles that have exceptionally high risk, as well as their increased prevalence. This is not new news to the people who come to this website, we’ve already talked about the large increase in interest only loans and their potential problems.
Christopher Low, the chief economist at FTN Financial also agrees with this interpretation with his statement: “It’s nice to know that the Fed is taking (exotic home loans) seriously. It looks like (Greenspan’s) trying … to squeeze out the speculative element in housing; they don’t want a repeat of the stock bubble”.
The only statement this week that I don’t agree with is that homeowners have a sizeable cushions to absorb the price downfalls. Firstly, we already know that a substantial amount of new homeowners are using interest only mortgages to purchase houses, which means that they have little to no equity down. We also know that many houses today are bought with 5% down. And we also know that “4/5 of the rise in mortgage debt resulted from people extracting their home equity“. What do they do with this equity? We can’t know for sure, but unless they invested it, it often used for consumer spending. For example paying off credit cards is considered consumer spending if the debt acquired on the credit card was through consumer spending in the first place. Therefore, we have just shown that a large percentage of the population has minimal cushionning.
One last thing to notice about Greenspan latest statement, he is quoted as saying “shocks should be largely absorbed by changes in prices, interest rates and exchange rates, rather than by wrenching declines in output and employment.” Again, based on his careful wording, if he is using the word “shocks” as a potential outcome, then I would seriously take head of that statement…