LandlordMax Newsletter - LandlordMax Network Version Update

Published: Wed, 03/06/13

LandlordMax Newsletter - LandlordMax Network Version Update

As has been the case for the last few newsletters, today's main focus will again be about the status of the networked (multi-user) version of LandlordMax because that's what most of you are interested in and contacting us about. Specifically today I'll be addressing the recent items we've working on to give you a better appreciation of what we're doing and how far we have gotten.

For those of you who are to the newsletter, you can find our latest status updates on the Networked Version at: http://landlordmax.com/v605estatus The first chart shows the number of total tasks remaining and the second chart compares Tasks to do versus Tasks completed. As you'll quickly see, our rate of completing tasks has been pretty consistent, we're completing tasks at a pretty good pace!

Also has some of you have commented, the chart can look a bit like a stock market graph. The reason it's not in a constant decline is that we are adding tasks as we proceed through the development. Software development is never static, and sometimes we may add more than we complete in a given day.

For example just today we added a task where we want the system to check how much available memory you have available on the computer hosting the server system, and if it's appropriate, possibly offer you a suggestion to use more memory, how much more, and how to use more. This might seem like a little detail, but it can have a significant impact for people with larger databases that aren't too technical, that just go with the default settings, and/or don't read the documentation on how to improve the performance of their system. I know I don't read everything I should, so this would probably be helpful for me. And the cost is very small, probably no more than a couple of hours of total effort. So this is an example of a new task we added as we were doing some testing and observing how some people used and installed the server software on their systems.

Before I give you the classic construction analogy, I just want you to be aware that software is very complex. A software solution like LandlordMax is actually more complex than building a skyscraper in terms of the amount of unique moving parts and problems to solve. Not to take anything away from building a skyscraper, that's a huge endeavor, but in terms of design work, software development of the scale of LandlordMax is generally considered more involved.

That being said, as we're also learning and breaking new ground, as we move ahead we discover that in some cases we have to make adjustments, and some of them can be pretty big. A big one which I'll be describing in some detail shortly, for example can be similar to finding out that your heating system is no longer adequate for your property because of the new 3 floors you just added, so you now have to move up to a bigger heating system. But to do that, you discover that it brings you up to another class of heating systems with completely different requirements, connections, and so on. So now instead of a simple heating system replacement, you've just jumped up to a whole new league of effort. Luckily escalations of that scale don't happen often, but they do happen.

And just like any major renovation or construction project, as you proceed with the effort you learn a lot along the way and discover all kinds of "unknown unknowns", and so almost always the schedule is lengthened, very rarely is it shortened. The same is true here. Fortunately in most cases it's simple adjustments. An extra power outlet here, an extra coat of paint, a wall that has to be replaced because a junction needs a new line, and so on.

You can read a really good analogy, more of someone's personal experience/story on how they built a fort and how it compared to estimating software at: http://blogs.construx.com/blogs/stevemcc/archive/2007/09/23/building-a-fort-lessons-in-software-estimation.aspx It's a really good read and it gives you a better appreciation of what's involved on a smaller scale when trying to estimate software projects.

On the positive side, we're very very close now. It was our hope to release this week but right now based on the latest status it's (unofficially of course) most likely to be next week.

So today I'll go into more details about the latest speed bumps we encountered to give you a better idea of the effort it's taking us to release the networked version. And as an added bonus, in some cases the end result is that you get new and additional features that were not planned for this release! So there is definitely some good that is coming out of this. One major improvement is that the startup time for the application has been significantly sped up!!

With that in mind, today's newsletter is quite a bit longer than usual, but again it's because I wanted to share with you our efforts in developing the networked version.

LandlordMax News and Updates

Desktop Version and Overall:

I'll just mention it again for those who skipped the previous section, a huge improvement coming to the desktop version of the software in version 6.05e is that the software will startup a LOT faster!! Not just a little bit, but up to 90% faster on some computers. Basically what we've done is take advantage of today's multi-processor computers and split up the different tasks across the different processors. And not only that, but today's processors are also better able to handle more processes per processor, so we've further split up the startup process. And the more cores you have, the quicker the software will startup! Most people today have at least two cores in their processors, which means at least a 50% increase. And from there the speed can be further improved on the type of processor and the number of cores you have. On the computer I use the startup time is now about 10% of what it use to be!

As I mentioned before, the desktop version is getting all kinds of new features, especially in the last while, because of requirements the networked version needs. For example, the biggest new feature is the ability to store a "Property Manager" or "Property Management Company" to which you can assign invoices and receipts rather than just the landlord (you have the option). Also the software will auto-fill a lot more of the invoice/receipt after you select the tenant. However I don't want to get too much into this as we're still working the details here.

Another big enhancements is that we've completely revamped the Workorder filters. As well the Todo's workarea is now called Tasks and now has filters. We had to change it because in the networked version the tasks are assigned to specific users, as well specific workorders can only be seen by some users (for example a Maintenance user can only see their own workorders and not anyone elses). So filters and data management are now critical and will therefore be available in both the desktop and networked versions.

The images have also been completely re-done so that they are processed a LOT faster. A separate engine has been created specifically to manage them as we found the database no longer adequate for people who store larger numbers of images. So those of you who store larger number of pictures will notice and difference.

There's definitely more, but that should already give you a good feel as to what kind of new features will be included in the update for everyone already using the desktop. And remember this update is free for anyone already licensed to use version 6.05!

Network Version Update:


If you've skipped the Desktop Version section, I recommend going back and reading it because everything also applies to the Networked Version. Especially the first paragraph.

That being said, and as I alluded to in the beginning of the newsletter, let me get into the details of some of the stuff we've discovered recently that has slightly delayed the release of the Networked Version. Based on the charts at: http://landlordmax.com/v605estatus , you'll see a recent blip from mid to late February. It's directly because of the following issue I'm going to discuss.

But before I get into that, let me explain how we discovered it. Late one night we were doing some testing on the networked version, where the test server was hosted on Amazon's EC2 Cloud services (yes you will be able to host your server on Amazon's cloud services, as well as some other cloud services). This little detail, hosting it on Amazon's EC2 cloud services, is critical because the server was hosted on a computer in another timezone then the ones we were using to connect to the server.

So here we are saving some test data. Everything is saving fine and overall the software has been working great all day. However someone noticed that the dates entered and the dates saved were not matching for new or edited dates on some occasions, they were off by a day. But only if you edited the date of the entry, and only afterwards. Which made no sense at all. Why a day earlier? Why now out of the blue? What could possibly be doing that? Then suddenly an hour later, poof the problem disappeared and we couldn't replicate it anymore! Everything was back to normal and working perfectly.

Not one to leave a temporary problems and assume it was just a one time glitch, we continued to dig further. Then some days later we realized it could be due to timezone issues. In our previous testing the dates always worked because the date on our testing computers where the server was located was the same as the date of the computers connected to the server. Sure the computers could be in different timezones, but generally the testing was done during the day and not around midnight, so the day was always the same. It just happened that we were testing late that night, and we were testing certain types of data. And because we were working on that specific issue at just the right time, we encountered the issue.

Have you fully caught on to what the issue is yet? If not, here's a really big hint. On one computer in the EST timezone it could March 4, 2013 at 1:04am and on another computer in another timezone, it could March 3, 2013 at 11:04pm. Notice the computers are on different dates? Same exact instance in time, but different dates!

Normally this isn't an issue in software, and it's never been an issue with desktop version before. To get a little bit technical, the way the programming language that we use to program LandlordMax calculates the time as the number of milliseconds from Jan 1, 1970 00:00:00 GMT (a specific timezone). This works great in 99.9999....% of cases. If you want to record when a transaction occurred, it works across any timezone (you can just do the math). If you purchased it at 1:04am and 11:04pm in another timezone, it's the same number of milliseconds since Jan 1, 1970 00:00:00 GMT. A very simple solution that works without the need to store timezones to calculate an instance in time.

So for the vast majority of applications, if you want to record a transaction that occurred at a specific instance this works great. And most software records a specific instance in time. Bank transactions are a specific instance (date AND time). Purchases are a specific instance. A Facebook post is a specific instance. An email is sent at a specific instance in time (date AND time).

With LandlordMax, we don't track specific instances in time, we only track dates to greatly simplify the data entry for you. That is, we want to know a rent was paid on Jan 1, 2013, regardless of the exact time. It's irrelevant if it was paid at 6am or 5pm, we just cared that it was paid on Jan 1, 2013. Which means that in our case, the time in milliseconds from Jan 1, 1970 00:00:00 GMT will NOT work. We want to record the transaction on March 4th in ALL timezones! A simple but very important distinction. We therefore cannot use the date system of the programming language. We need to separately include the timezone somehow and do all kinds of calculations to adjust for it.

As you can imagine, a property management software application is loaded with date information. It's everywhere! And this is why you see the spike in mid-February. we created a bunch of tasks that resolved the solution. Sure we could've entered it as one major task, but we broke it down, and as we did some testing on our implementation and resolve what are called edge cases, we added a few more tasks. In any case, this date issue accounts for pretty much that whole blip in the chart.

For anyone who is interested in the technical details, we ended up transitioning our date logic to a 3rd party system that was specifically designed to handle the shortcomings of the programming language's date facilities. So in this example, much like the analogy I used in the initial newsletter introduction, we discovered the heating system would no longer work, but only after testing for an expanded need (multiple timezones with different dates). As a result, this small issue ended up adding about 2 weeks more effort than planned. And there was really no way to know before we tried and tested it as this IS the standard method for managing dates in the programming language and it had been working for us for almost a decade in the desktop version.

Another example of something we dealt with earlier that I'm also going to describe here now because I want people to truly appreciate why you can't just have many people connect to the same database and assume everything will just work. In case you're wondering, yes we do get asked that a lot, and it's not possible because it will cause you all kinds of errors and issues with your data. And unfortunately most people don't understand or appreciate why, nor can we expect them, so I'm going to take a few moments now to explain it.

It has to do with editing the same data items when you have multiple users. A classic example would be:

- User 1 reads Tenant John Smith
- User 2 reads Tenant John Smith
- User 2 updates Tenant John Smith
- User 1 updates Tenant John Smith.

The problem here is that User 1 is trying to update an older version of the Tenant John Smith that User 2 has already updated AND saved, and if the update was allowed by the system, User 1 could overwrite what User 2 entered. And worse of all, no one would know. User 2 would assume that their updates were still good and saved in the database when in fact they would've been wiped out. This is very bad!!

Also, if you're thinking why doesn't the software just synchronize the data, it's not that easy. What if User 1 deleted an accounting entry that User 2 updated? Or vice versa? What if they both edited the same fields, then who takes precedence? What if they both added the same rental payment, so now the tenant has two rent payments? How can the software know you didn't mean to put two different entries? There's no way for the software to know this, it's something intuitive to humans. Basically the number of possible issues that can arise when synchronizing data are huge! And this is why most software solutions will not even begin to try to merge this kind of shared data unless it's extremely basic or simple. And even then you hear about all kinds of issues. Just Google any file synching software for wrongly updated/deleted files, it's quite common. There is no perfect solution. And when it comes to critical accounting data, good enough is NOT good enough!

So if we just pointed the software to the same database as many people have asked us for the desktop version, this is exactly the issue you would encounter. The more users you have the more chances you have that it happens. And I guarantee you it will happen a lot more than you think.

To deal with this problem there are a few strategies, with the most common being called Pessimistic Concurrency Control and Optimistic Concurrency Control. Although I won't get into both of them here, you can find an explanation of one versus the other here: http://blogs.msdn.com/b/marcelolr/archive/2010/07/16/optimistic-and-pessimistic-concurrency-a-simple-explanation.aspx We are using Optimistic Concurrency Control because it's much more user friendly, especially as the number of users increase. If you're interested in a really good explanation of what this means and how it works for you, you can find it here: http://msdn.microsoft.com/en-us/library/aa0416cz%28v=vs.71%29.aspx

Like I said, we went ahead and implemented this strategy throughout our system some time ago. If a data item is not the latest and you try to save it, the software won't let you. It will let you know it's been updated and proceed in the most appropriate manner. That being said, the effect is felt throughout the system. This effort has definitely been larger than we expected due to the sheer amount of data and richness of the user interface (screens) within the software. Also we want to implement it in a smart way, so that it only affects data you edited versus all the data. So for example if you only edit a tenant's data and not the tabbed panels, it will ignore any changes in the tabbed panels by other users, only checking your edits, and automatically update all changes after you save your tenant edits. In other words the software does what we internally call smart saving.

As you can imagine, this is everywhere! Every single screen, data element, you name it. Not only is it a big task to implement, but we've also invested a lot of time to test the system thoroughly. We've spent more testing time on this feature than any other feature of the software. That's how big and important it is.

Again, almost every single action is affected by this effort. The obvious is when data items are saved, but that's just a small part of it. Let's assume you're in the accounting list and decide to view a specific accounting entry. What happens if that entry was deleted between the time you generated your list of accounting entries and the time you clicked on the view/edit button? Well that means the view button now also has to have some checks that the data is still valid, not just the save functionality. And you probably want to go and update to the latest version as well just to be safe.

What about deleting? Can you delete an item that was deleted between the time you generated the list of accounting entries and the time you clicked on Delete? What if you select to print some invoices and someone has in the meantime delete a few of them, including the one you wanted to print (or edited it)? In other words the checking that the data still exists and updating it in the background on the fly is quite involved.

On a positive note this tasks, and the related tasks, have been completed for some time. We're still continuing to test and work through all kinds of scenarios to confirm that everything is as it should be, but it's been very stable for some time. And it's gone through a LOT of testing!

I just wanted to take the time to mention it now because this task was quite large overall, and it continued to bring forth new tasks to resolve for some time. Those little tasks I mentioned before that aren't big by themselves but can accumulate to a decent amount of work combined. This particular task is guilty of that.

Also I thought it would be a good time to explain why you can't just point software to the same database and assume it will work. This is also part of the reason that networked and multi-user solutions are more expensive, they are a lot more complex and therefore a lot more effort goes into making them.

That all being said, as of right now we're looking at a total of 23 tasks remaining. Since October 1, we've completed 577 tasks, for an average of about 115 tasks a month. Or a little over 25 tasks a week. So we're definitely close. None of the remaining tasks are anywhere near as significant as the above two examples, they are all smaller like and should be resolved fairly quickly. My personal prediction (although unofficial) is that we'll most likely release something sometime next week based on our history and current status.

Other news:

Join me in celebrating with our team for we broke our yearly sales record again for 2012! It's great to see people using the software and our customer base growing year after year! A thank you goes out to all our happy customers!

LandlordMax Tip:

When you have a pro-rated lease/rent, the software will try and create the Scheduled Entries for you (Scheduled Accounting Entries, Invoices, and Receipts) based on the lease information. However in some cases this automation will not work, such as when you pro-rate rents that I've just described. The good news is that the solution is very simple, you can just delete the automatically created Scheduled Entries and create your own starting from the 1st or whichever date you prefer. You don't have to worry about setting flags, adding multiple settings, checking boxes, and so on. You can just delete the ones the software tried to automatically create for you and then re-create them as you wish. There's no need to add more complexity when it's really not needed.

Property Management Tip:

Tax season is once again fast upon us. And this month's tip, although we have customers around the world, is going to be aimed mainly at our customers from the United States because we get this question a lot around this time of the year. Several years ago there was a law passed to require property owners and property management companies to provide 1099 forms to all vendors that invoiced them for work that totaled more than $600. What many people don't realize is that this law was repealed, so this isn't necessary: http://speakingofrealestate.blogs.realtor.org/2011/04/08/600-1099-landlord-reporting-law-repealed/ Of course always confirm the details with your accountant or tax professional.

Industry News, Information, and Recommendations:

Story/Tip of the Month:

If you have an interesting tip, a funny story, or even a horror story, you'd like to share with us which we can publish in this newsletter (with the names changed of course), please send it to [email protected].

LandlordMax Testimonial of the Month:

"A great product and easy to work with giving great assistance automatically making the invoices and receipts once the lease data is entered. Just a great program to work with."
- Marcos Avellan

"I just bought your program about a month ago. I am truly impressed! This program works for you. I wanted to enter past history on rents received. After I entered the lease agreement terms on a specific tenant it mentioned I had missed entries or suggested entries. I entered the info LandLordMax suggested and brought I had updated 4 years of rent to date in about one minute with perfect accuracy."
- Cris Mitson

"You truly lived up to your reputation of giving technical support that was second to none.  I can't believe how quickly you answered my questions.  All the reviews that raved on the technical support are what convinced me to buy your program.  Thank you.  Keep it up. 
[...]
I've been using your program for my small business now for 11 months and except for my old lap top finally dying your program has worked flawlessly.  Of course my laptop died due to old age and not your program.  It was painful watching her go but it was time.  I now have your program on a much newer computer with a larger screen and it's wonderful."
- Gene Groover

"I would like to ensure that you know that I am very happy with Landlord Max as it is the best and easiest property management software available. Top Notch Company!"
- Dallas Powell

"I have purchased landlordmax around this time last year to keep track of my rental property. I love the software!"
- Gordon Proude

Final Words:

If you haven't already done so, I again welcome you to visit our daily progress chart for version 6.05e of LandlordMax at: http://landlordmax.com/v605estatus

Hopefully the next newsletter will be about the announcement of version 6.05e, the networked version!

And as always, please feel free to contact us to let us know what you think.