LandlordMax v2.12a is Now Available!
We’ve just posted up the latest version of LandlordMax v2.12a. This is the first update of version 2.12. As you can see from the release notes, not only did we fix some bugs, we also went ahead and added a few new features at the same time.
To all our existing customers, we postponed sending out the first email of version 2.12’s release until this update was completed. You should expect to see a notification email sometime later this week. If you’ve already upgraded to version 2.12, the software will now tell you that version 2.12a is available. This will be the last update email notification you receive from us as the software will now let you know when new versions become available.
Permalink to this article Discussions (0)
LandlordMax v2.12 New Features
As most you already know, I’ve been extremely busy recently with the release of the latest version (2.12) of LandlordMax Property Management Software. We just posted up today the list of new features, which you can goto by clicking here. As you can see from the list, we’ve been quite busy adding a lot of new features to this release!
Permalink to this article Discussions (0)
LandlordMax v2.12 is Now Available!
We’ve just posted up the new version of LandlordMax v2.12. It’s been quite a grueling week, especially today! Seeing as it’s now 3am, normal for a release day, it’s been very busy. It’s great however to finally be able to release the new version with all it’s great new features and benefits!
The website has been updated with the latest version 2.12 download. As well the purchase page has been updated to now also accept upgrade licenses.
On another note, for those of you looking for it, the release notes (the list of the latest and greatest changes) and the new screenshots will be posted in the next few days. Unfortunately the user manual has been delayed and won’t be available for at least another week, possibly longer. We apologize for this inconvenience.
To all our existing customers, you should expect a reminder email shortly letting you know about the latest release. This will be the last such reminder you’ll get from us because now the software will notify you when new versions become avaible.
And please don’t be shy to send me emails or post comments here about the new version 2.12 of LandlordMax Property Management Software.
Permalink to this article Discussions (0)
LandlordMax v2.12 Release is Postponed One Week
Although we were very excited about releasing the latest version of LandlordMax (version 2.12) today, we have to postpone it until next week (March 27, 2006) because of reasons out of our control. We’ve been working very hard at getting this release out as fast as we can and we’re as anxious as you to show what we’ve been working on!
Permalink to this article Discussions (0)
LandlordMax Property Management Software v2.12 Status Update
Great news!!! We’re almost ready to release LandlordMax v2.12. The official release date is going to be March 20, 2006 (only a little later than expected). We’re currently in testing mode ironing out the last details and preparing for the release.
As a reminder, everyone who purchased LandlordMax between Jan 2005 and now is eligible for the free upgrade (if you remember from a previous entry, we’re releasing this version as though it’s December 2005 rather than March 2006). And everyone who already owns LandlordMax but has purchased it over a year ago is also eligible for to a significant upgrade discount of 50% from the purchase price! If you’re unsure if want to upgrade, don’t worry, you try the new LandlordMax v2.12 for free for 30 days before deciding to purchase the upgrade. And for those of you who are hesitant to wait for the new release you don’t need to be, remember that you get 1 year of free upgrades with your purchase so you’ll also get the new release.
LandlordMax v2.12 has a lot of new exciting features! As a teaser, here’s a short list of just some of the new features you can expect:
- You can store an unlimited number of images for any building, unit, and tenant.
- Almost all tables can be sorted by any column.
- The database engine has been upgraded to Derby to be ACID compliant.
- The table sorted orders (and column lengths) are remembered when coming back to the table (even when restarting).
- You can enter in a logo/letterhead and customize the titles of all the reports.
- LandlordMax will automatically checks for updates when started and notify you if one is available.
- You can find an “All” reports section to view the complete list if all the reports in one big list.
- There are many new reports. Here’s a partial list:
-
- Four new vacancy reports.
- List tenants grouped by building for one landlord.
- List all buildings for one landlord.
- Rent roll.
- Etc.
And many smaller enhancements such as:
- The building combo box is alphabetically sorted.
- Unit lists are first sorted numerically and then alphabetically.
- The splashscreen give a better indication of what’s happening as the software is starting up.
- You can optionally and anonymously report back to LandlordMax when an unexpected error occured (to help us increase the quality of the software).
- The reports are generated quicker (and now consume about half the RAM).
- And so on…
I hope you’re just as excited as we are to release for this new version to be released!
Permalink to this article Discussions (0)
LandlordMax v2.12 Update
As you can imagine, we’re very busy here at LandlordMax Property Management Software with the new major release of version 2.12 coming out very soon! Because of this I’ve had to take a short hiatus on this blog and focus all my energies on this release. I’ll try and post a more updated entry of our progress in the next few days, but if not, please bear with me until LandlordMax v2.12 is released.
Permalink to this article Discussions (0)
Looking at the Possibility of adding LandlordMax PDA Support
My company LandlordMax Property Management Software, has had many requests over the last several years to offer PDA support. That is, people have requested that they can get certain key pieces of information on they’re PDA while they’re on-site, such as their tenant contact information.
These requests have not fallen to deaf ears. We’re currently in discussions with another company that might be able to provide us with PDA access to key LandlordMax features, such as the tenant contact information, etc.. For the first version, it would require synchronizing with LandlordMax to get and update the latest information on your PDA.
Rather than try to guess the details, I’m placing a call out to all of you who own, or are interested in owning LandlordMax Property Management Software. This is your chance to provide feedback that I guarantee will be very thoroughly reviewed. To help us decide if we will go ahead with this partnership, we need to determine three things.
1. Would you be interested in this add-on?
2. What are you looking to be able to do with the PDA version? Obviously retrieving tenant contact information is one task, and we also have several other ideas based on the suggestions we’ve received. However we’d like to know, what would you like to have the PDA version do?
3. Because of the complexity of developing this piece of software, it would be considered an add-on module. Therefore, at what price range would you consider purchasing a PDA add-on?
I’ve create a new thread in the discussion forum. Please feel free to post any comments and/or suggestions you might have, we’d love to hear your comments. If you’d like to send them directly by email rather than post them publicly, you can also email me.
The feedback we get over the next week or so we’ll determine whether or not we pursue this partnership and create an add-on today, or if we postpone it until there’s more demand. I look forward to hearing from you all.
Permalink to this article Discussions (0)
LandlordMax Property Management Software Status Update
There’s good news and some not so good news regarding the next major release. First some of the good news. We’re almost done with major architectural changes which include a complete change of the database engine. It also included a major change in the way every table is displayed so that they can be sorted by any column, etc. These changes have been substantial structurally speaking, it’s as though we changed the engine and some of the internals in a car. The not so good news is that these changes have been harder than we expected, and therefore are taking longer to complete.
Sorted Table Columns
What does this mean for you? It means that the latest major release of LandlordMax Property Management Software (version 2.12) will be postponed until February of 2006. In my personal opinion and experience, it’s unwise to force a premature release with major changes this complex out before it has been completely tested, especially considering that next month is X-mas when most people go on holidays (not to mention the X-mas plans of our beta test members). What we’ll do instead is release it in February of 2006, but the good news is that we’ll mark the version as though it was released in December of 2005, giving you all an extra 2 months of free upgrades! I would rather absorb this cost than release a sub-standard version of LandlordMax.
If you’re interested in finding out more details about this release, please read on here…
Before I get into details, let me just say that this has been our most extensive release by far to date. There will be many new features in LandlordMax Property Management Software, not to mention reports, however the biggest changes and costs have been structurally.
Indeed, our biggest cost was changing database engines. Although it might appear simple, where we can just swap database engines as the theory suggests, reality does not work this way. Our prior database engine (hsqldb) had some shortcomings that we worked around that no longer apply to the new database engine (derby). On top of this, we could do some things with the old database engine that are no longer possible with the new one. If you want to read about why exactly we changed database engines, you can find my prior article here.
The hardest task for us in changing database engines wasn’t just the hook ups, it was to make the process of upgrading from one database engine to another seamless, that is to make it happen without the user being aware of it. I know that if I personally bought a product defined as the easiest in its category, I wouldn’t want to know the details of how it worked internally. As an analogy, if I swapped a car’s engine, I would want it to start by turning the key just like it before, I don’t want to manually change the engine myself, or have a bunch of new toggles to manipulate. I just want to turn the key, that’s all. And as you all know, changing a car engine is not a simple task!
The next biggest cost for us was re-structuring each table to give it the ability to sort by any column. I won’t go into the details, but suffice it to say, I wrote a whole article here a while ago about the complexities of it, so if you’re interested please read it. I didn’t realize until after writing about how much effort we had put into it. In any case, after having gone through the process, we decided that to release this version in a timely manner, we would forgo the concept of hierarchical tables (tables that can be collapsed and expanded), which would be nice for reports such as “All accounting entries grouped by categories”. Therefore this has been postponed to a future release.
Another major feature that we’ve added is the ability to store pictures in tabbed panels for the building, unit, and tenant workareas. The pictures will be listed in a thumbnail view and can be clicked on to be displayed in a larger popup window. This is a feature that was greatly requested and we’ve been doing our best to implement it. We’re currently in the final stages of developing this new feature.
Although we anticipated having graphs in our reports, due to time it took us to sort the tables (reports), we have come to the conclusion that this feature will have to be postponed to a future release. Graphs would be a great feature, however due to the sheer number of reports, it will take a considerable amount of time to fully implement. It has therefore been postponed also.
The reports section is still anticipated to have several new reports. We’ve already added several and we expect to have a few more before we release it. I won’t go into the details of listing the reports, but suffice it to say that we’ve added many of the reports that have been suggested to us (also every report that is not grouped by something can now be sorted by any column, as well as printed in that sorted order).
There are several other significant changes that I won’t go into details here, but they include the ability to add your logo to the printed reports, auto-update reminder when new releases become available, new fields, etc.
As I mentioned before, I would prefer to take an additional two months to properly prepare the software for release rather than going live with an incompletely tested version next month. Because of this delay, we will honor the release as if it was in December of this year (I doubt many other software companies would do that), and we will do our best to get it out to you as soon as possible. I will keep you updated of our progress because I’m sure that you appreciate it as I would.
Permalink to this article Discussions (0)
LandlordMax Property Management Software Backstage Pass
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!
Permalink to this article Discussions (0)
LandlordMax Property Management Software Status Update
Many of you on this site and on my company’s web site (LandlordMax Property Management Software) have been asking for more details about the next major release. When is it going to come out? What features will it have? And so on. Yes, the next major release is coming soon. Today’s entry is going to be all about it.
Working on this new version I suspect there will be some pleasant surprises for many of you. What we’ve done is take all the feedback and suggestions we’ve received through the Idea Initiative Program and used these to help drive what features made it into this upcoming version of LandlordMax. The feedback has been great! Thank you. And don’t think it’s ever too late to suggestion more improvements, we’re always excited to get feedback.
Before I go into details of what’s anticipated, here’s some quick previews and teasers: many new reports, report enhancements, table enhancements throughout, a new different database engine that is far superior, and so on. We’ve been working to bring this new release out as fast as possible, and it has posed some significant challenges. I’ll go into some of these today to give you a better idea of what’s going on and why were not likely to release it until at least the winter of this year (2005). Quickly, our most significant challenge and important change has indeed been the database engine. We believe we had to do this for several reasons which I’ll go into without hopefully getting too technical in this article.
Without further ado, let’s start looking at the status of the next LandlordMax Property Management Software release now!
LandlordMax Property Management Software Status Update
Firstly, and probably the most significant is the database engine change. We’re moving from an open source database called HSQLDB which is now being used to power the open source alternative of MS Word called Open Office to a database called Derby that was recently released to the open source community by IBM. This database was valued by IBM at $85 million! It has been sold and used by many highly valued commercial products and has been around for a long time. We’re very excited and proud to be able to provide Derby for you as your database engine!
From your perspective, there should be no visible changes at all with the new database engine change. If I hadn’t told you, you should technically never have known. If you did, then we didn’t do our job correctly of providing you with the easiest property management software in the market.
Why did we change database engine if you shouldn’t notice it? For several technical reasons which I will go into later. For now though, the quick benefits are that the database no longer has data limitations and is ACID compliant (don’t worry if you don’t know what that means, I’ll explain why it’s important to us later). The current database engine supposedly didn’t have data limitations, but we’ve recently found out that this isn’t necessarily true. Because of the way it’s been designed and built, the database is limited in data size to the size of memory it has allocated to it, more or less. Let’s take a quick somewhat technical look at that.
The current database offers something called Cached tables, which means that the tables can be written out of memory to the file system, allowing for large databases to be used. However, if you look carefully in the documentation it specifically states that the Result Set has to fit within the live memory. Without getting too technical, this basically means that if the data you are looking for is larger than your allocated memory space, then the database will return an error message saying it couldn’t complete the query. The good news is that virtually no one has encountered this yet, but I suspect it will happen in the future. To give you a scale of the limits, you would need to enter in about 50,000-100,000 entries on a normal installation to encounter this issue. Although this is more relevant to our larger customers, over several years this will eventually affect more and more people. Because of this alone, we’ve decided that it was better to act pre-emptively than wait until it became an issue, we don’t want anyone experiencing this. How horrible would it be to enter in many years of data for hundreds of properties only to have it eventually fail. No thank you!
The other major benefit is that it is a 100% ACID compliant database. ACID means: Atomicity, Consistency, Isolation, and Durability. The current database is not a fully compliant ACID database because they traded some of these requirements for speed. Because of this they were able to attain remarkable speeds in querying, however we’re now at the point where we believe it becomes more important to have a fully 100% ACID compliant database. The performance difference is almost negligible, 99.99% of you won’t notice, and if you do notice you have to be really quick!
The differences between the two databases in terms of ACID are:
Atomic: This means that you can do multiple database calls as if they were only one call, otherwise known as a transaction. This is important because if any single one of those calls fails, everything is rolled back to its original state. So for example, if you were a bank you could withdraw from one account and credit another as if it was one single database call instead of two (debit and credit). The benefit is that if you weren’t able to credit the second account (successfully complete all the calls), the whole thing would be cancelled and the money from the first account would be returned. The new database engine Derby is Atomic compliant. HSQLDB is not fully compliant, it’s possible to have “partially committed” transactions. Because the current version of LandlordMax doesn’t need to use transactions (each database call is currently atomic), this hasn’t been an issue. However, as we’re planning to offer a networked version next year, this will probably become more important soon enough.
Consistency: This means that the database will only write valid data to the database, otherwise it will rollback the transaction. As expected both databases support this.
Isolation: This means that multiple transactions occurring at the same time will not impact each other’s execution. So for example, if I start a transaction at the same time as you start another different transaction, both transactions should operate on the database in an isolated manner. That is, the database should either perform my entire transaction before executing yours or vice-versa. This prevents our transactions from potentially affecting each other in negative ways. The isolation property of a database however does not guarantee which transaction will be executed first, only that they will not interfere with each other. For the current version of LandlordMax this is not an issue since it is single user only. That is, there can only be one person using it at a time so it’s impossible to have two have conflicting calls.
Durability: This means that any transaction committed to the database will not be lost no matter what, it’s ensured through the use of database backups and transaction logs. The database will be able to restore itself in spite of any software or any hardware failures, no matter what! For us this is very important! With the first version of LandlordMax 1.00 we had some issues with HSQLDB sometimes not correctly shutting down because it’s not 100% compliant. Don’t be afraid, it’s very very rarely happens, and if it does happen it’s only the very last data you entered in the last milliseconds. Although this very rarely happens, it did happen. It was possible if you happened to be one of the really unfortunate people and shut down your computer at the exact wrong millisecond. Each new version of HSQLDB that we upgraded with each new version of LandlordMax helped reduce this, as well as some of the steps we took ourselves in the code. We were able to bring the number of failures down to 2-3 out of all our customers over the whole of last year, showing just how extremely rare it happened. That’s good, but not good enough for us! We’re expecting this to completely go away with Derby since it’s 100% ACID compliant.
The next biggest enhancement we anticipate seeing is the way the tables are displayed. One of the most requested feature enhancements we’ve received was to have some of the tables sorted slightly different, or to add new columns such as the priorities for the workorders. Well we decided to go one better than this and allow each and every table to be sorted by any column, including the reports just like in MS Excel. We also didn’t want to stop there, we’re currently investigating the possibility of letting you also choose which columns you want displayed rather than selecting them for you. We’ll of course offer a default, but you can manually change which columns will be displayed yourself.
While we were modifying the tables, we also wanted to go one step further, we want to add the concept of hierarchical tables, where you can collapse and expand sections of the tables. This way, if you have a report of accounting entries categorized by building, you can collapse all the buildings that don’t interest you so you only see their summary. We haven’t yet finished this feature, but we’re anticipating it will be available for the next version.
On top of that, we’re also hoping to offer searching functionality within each table. We haven’t decided if this is feasible because of screen real estate issues (there’s very little room left on the tabbed panels for lower resolution computer monitors which account for about 30% of our current customers). We’re working with our Graphic Designer Michael McGrath (which I highly recommend) to see if there is a way we can do in a very user friendly manner.
Unsurprisingly these table enhancements have been a technical challenge for us. Not just the implementation, but updating the sheer amount of tables we have in the software. Remember, we have hundreds of tables in the software. There’s over 100 reports alone!
Another significant change we anticipate is the ability to add your logo to the reports in an automatic way. Many property managers and companies have requested this and we’ve therefore added this ability. We’re also investigating the possibility of changing the titles of the reports, however we haven’t yet determine if this will make it into the upcoming version because of the complexity in presenting this in an easy to use way. I’ll explain in a little more details in the timeline section of this article why I say some features are anticipated and might or might not make it into the release, and exactly how we determine when and what will be released.
We’re also adding many more reports. Actually every release since the beginning has added more reports. This version will include more reports such as vacancy lists, rent rolls, etc.
Going on, we anticipate that all appropriate reports will now include graphs for quicker and easier understanding. For example, it’s much easier to quickly look at a graph to see how your cash flow has been doing than looking at a list of numbers in a table (or at least for some people). Although you need both, it’s amazing how much information simple graphs and pie charts can convey.
There’s also been other changes in the software. New fields have been added on some screens, the ability to print the amortization table, print multiple selected items from the list without needed to view them, performance enhancements, update notifications, etc.
When will the next major release of LandlordMax Property Management software be available?
Although I would like nothing more than to give an accurate and concrete date for when the next version will be released, I can’t. Unfortunately with software, it’s hard to determine when things will be done. I’d rather not be locked into a specific date forcing us to launch a version that has not been properly tested and is therefore not of the quality you expect from us. I’d rather postpone a release by a week or two, or whatever it takes, and get a better product out than one that is inferior, on time, and full of bugs. I think the most eloquent description of this philosophy was written by Joel Spolsky of JoelOnSoftware.com
That being said, we also don’t want to take our merry time getting a release out. Therefore we’ve adopted a semi-Agile development process. For those of you who aren’t familiar with the Agile software development process, I’ll try and describe it somewhat in a few sentences. Although it won’t give it justice, you’ll hopefully get the main concept.
Basically software development can be broken down into a list of requirements/features, that is a list of what needs to be done for the next version. Each requirement can be broken down further into a list of tasks, which is then distributed across a development team. The idea is that once all the tasks are completed for a version then you’re done your version.
Now there are many ways to deal with when the version will be released. One way is to determine which tasks need to be done, and adjust the date according to when the tasks are completed. Another way is to set a date and adjust the number of tasks to meet that date. Normally we prefer the second approach, but for this release we realized we would have to go with the first approach, adjust our date to complete certain key tasks. Then with the time remaining as we test and finalize the key changes, we will put in as many features as we can. Basically, this key task has become our critical path, the path that no matter what we need to take and we can’t finish before its completed. In our case, the critical path has become the database engine conversion. We cannot release until at least this task is fully completed and tested, no matter what. This is our most dependent task and it’s the one we need to watch the closest.
It wasn’t until very recently, just a month or so ago that we came up against the issue of database size. After investigating it, we needed to look at alternative database engines which took some time. In any case, no matter what database engine we decided to go with, we realized we would need to make changes to our code base. For example, without getting too technical, we took advantage of some of the database specific features of the current HSQLDB database engine, and worked around some of it’s difficulties. All these customizations need to be revisited. This also meant that our update and backup features would no longer work because they were specific to that database engine, more items to revise. We’re in the process of making these changes and more right now.
Actually, another key task is that we need to convert the database from one engine to another. That is, we cannot just simply copy and paste the content of one file to another, we need to provide a transition path that is invisible to our customers. Warning, if you’re not interested in the technicals, skip the text until you see the end of this warning. For example, we need to make a call to one database, say a select statement to get a list of all the accounting entries. We then need to call the other database to populate it with these same entries. That’s fine, but how does the software know this is the first time you’re running the new version and therefore needs to make the conversion (as well as which database engine to use). First, we check to see what files are in the database directory, this gives us a good indication of which database engine is in use. If it’s the HSQLDB database engine, then we run the conversion process, if not, we assume it’s already been converted. Now for the conversion process, we can’t just dump all the data into that database directory because once we’re done and we’ve confirmed that everything is ok, we then need to delete the old database files. There are multiple options on how to attack this task. Anyways, once the conversion is completed, we delete the old database files and move over the temporary new database files to it’s permanent position in the database directory.
You’ll notice that at this point, we haven’t talked at all the fact that we need to run LandlordMax with multiple database engines simultaneously and keep track of which is which, nor have we talked about the database specific calls. I won’t go into the database specific calls, but here’s a quick idea of at least one issue in the database conversion process. From which version of LandlordMax do we assume the conversion is coming from? Is it from version 1.00, 1.02, or 1.08, 1.08b, etc.? Each progressive update has different modifications to the database. In our programming code, we separated each database upgrade into another class, say DatabaseUpdate102, DatabaseUpdate108, etc. In the current version of LandlordMax, we have code that looks like:
Database100.createInitialDatabase();
if(database.isVersion100)
DatabaseUpdate102.process();
if(database(isVersion102)
DatabaseUpdate108.process();
This works very well because you can start from any version and you will see that the upgrade works. As a shortcut, as you can see in the code above, you can also create a new version by simply calling the same code. Now what happens if we change database engines? Does that mean that we leave the updates up to 1.08 to be created with the old version and always make the conversion after that, meaning that we will always have to ship with the old format? Probably not a good idea. Therefore we need to revised all this code to properly handle the database engine conversion.
Although these changes might look like trivial changes, they’re not. Again remember that we have some database specific calls in each of these that have to be modified. It’s definitely not impossible, it’s just that it takes time to be done right, and we want to do it right the first time!
End of technical warning
So now you have an idea of what’s involved in just converting the database. Once these changes have been implemented, we need to test them, and test them thoroughly. We need to test that the conversions work from new installations, from upgrades from each version (1.00, 1.02, and 1.08, 1.08b, etc.). We want to test every possible case to make sure that it works without any hitches and is unoticeable to our customers. To test this we therefore need to install and create entries for each version, the more complex and complete the entries the better the test results. For me to be personally satisfied that the new database will work 100% correctly, I suspect it will be sometime in the winter of this year (2005). Depending on how this goes, this will probably determine our release date. I’m currently anticipating it will be in December.
While I’m discussing some of the issues we’re facing, I figured I might as well also give you a better idea of what we’re facing when dealing with tables. As we’ve been implementing these we’ve found it’s a larger task than we originally anticipated. We quickly realized it would be advantegeous to us and you to purchase a component library from a vendor that does this, as well as a lot more. We calculated that everyone would be ahead. At this point in time I believe we’ve settled on which component library unless we encounter some unexpected issue.
Today, we have two main challenges remaining with the table requirements. The first one is dealing with the licensing of the component library. Although we believe we have chosen the component library and our test implementations look good, we still need to make sure the licensing fee to use the library is reasonable. We’re dealing with this right now. The second challenge is a technical challenge. In the first version of the software, we built a framework to assist us in developing tables that really accelerated the development of the software and allowed us to take some shortcuts because of this framework. Using a component library, we now have to do some conversion to our framework and test it for every case (and we have a lot of tables, over 100 just for the reports workarea) to verify that we’ve indeed properly converted each table.
Another challenge we’re still facing is the ability to print any column. This is not a technical issue, it’s a user interface issue. Currently each report (including table lists) are associated with a file in the reports folder which dictates how the table will be printed. In this file each column in each report is assigned a specific size (be it in millimeters or percentage of the page) to guarantee that all the printout looks good. The issue now is that these templates are no longer going to work because we don’t know ahead of time which columns will be printed, now how many. Then the question is; how much spacing should each column have? There are many options, of which we’re down to two right now. The first is that we manually ask you before printing. The second is that we use the percentages displayed in the table itself. We’re leaning towards the second option because option one makes the software more complicated to use and it doesn’t really give us much benefit (you probably want the columns on paper to look as close as possible to those on the screen). The second option of course is not without it’s own problems. Firsrlt, the print margins don’t match the printout. For example if you work on an 800×600 screen then you probably have more room on the paper than the screen. If you work on a 1600×1200 than you probably have more room on the screen than the paper. These are some of the issues we’re facing right now. These will be resolved before we release the new version, however at this time it’s still something we need to work through.
We’ve also been investigating the ability to add images to different workareas. Here the issue isn’t a technical one, it’s a user interface design one, that is how do we provide this feature in an easy and functional way. There are many options here, and unfortunately this is where the difficulties lie. For example, if we put a list of thumbnails in the tabbed panel for a building, then when you double click on it, does it fill in the tabbed panel? This probably won’t work so well for people who have smaller screens (800×600, which is about 30% of you). In these cases the image won’t be much larger than the thumbnail which is almost useless. Another option we came up with is to have a popup window for the images. In this model every time you double click on an image, you get a popup window with the image full sized. In terms of navigation, we could have this window close and popup again when you double click different images. This would work, but it’s kinda clumsy and it doesn’t fit with our philosophy of being the easiest. What about a forward and back button on the popup window? That might work. Another different option is to not use the tabbed panels and have a button in the top section of the screen bring up a thumbnail view of the images. Then from there you could navigate through the images. Right now we’re leaning towards either the last or before last option, and this is where having actually users test it will dictate to us which is better. Of course, there are other issues we faced with images but the major ones are not technical here yet.
We also looked into creating mailing lists. We looked for a component library that would assist us in this manner but unfortunately we couldn’t find one. If you know of a Java library that we could use for this, please email me. We started to implement this and that’s were we realized the sheer number of mailing label packages available in the stationary market. Therefore at this time it looks like we might offer a few standard pre-defined mailing label printouts. We’re not sure if we’ll offer the ability to generate custom labels for this version because of the complexity involved in designing such an interface and the time remaining until we release the upcoming version.
Other features that I can quickly talk about that we’ve already implemented include an auto-update reminder. In the past, when a new version of LandlordMax was ready, we would send out an email to everyone annoucing it so that they could benefit from their free upgrades. We found this method to be only semi-effective at best. Also, we don’t want our customers to be annoyed by emails from us, where we’re perceived as always sending out emails. Rather now what will happen is that if a new upgrade is released, the software will be smart enough to know and notify you when you next start it. If you don’t want to upgrade and not have it remind you, then that’s the end of the story. This way, we can guarantee that 100% of our customers know about the upgrade and we send don’t need to send any emails.
Another feature we added was the ability for the software, if you allow it to, to send us information in the rare cases that you do get an error. We’ve done this to allow us to continue to offer you the best, easiest, and most stable property management software on the market. This makes it much easier for you to pass on to us any errors you may encounter. The specific information that is going to be sent to us will be displayed on the screen, so that you can verify for yourself that no sensitive information is sent to us.
Conclusion
All in all, assuming we encounter no other major show stoppers like our database issue which substantially delayed our release date, as I mentionned before, we should be ready with the next major release sometime in December of this year (2005). As we get closer to the deadline, I’m sure you’ll start to notice more posts about LandlordMax Property Management Software on this blog. The good news is that if you buy it today (or after today), you get a year of free upgrades, which means you will definitely will get the next major release as part of your license. I’m going to go as far as to guarantee it right here that the next major release will 100% be within your license if you buy today or after today!
For those of you wondering when the next version after that will be released, rest assured we’ve already looking into this. Here’s a quick peak into what’s coming next year. Possibly a Mac OS version of LandlordMax. We’re also looking at offering a networked multi-user version of LandlordMax Property Management Software in 2006. Some other major features we’d like to offer are check printing, Quickbooks importing/exporting, and so on. The list is quite large and I’m sure we’ll get more precise with it as it gets closer to becoming a reality
Permalink to this article Discussions (0)
« PREVIOUS PAGE | NEXT PAGE » |