HOME     SITEMAP     RSS     TWITTER     EMAIL    
Search:   

FollowSteph Follow Steph as he posts Blog Blazer Friday
 
 

Archive for the 'LandlordMax' Category

It Takes a Big Person To Admit When They Made a Mistake

Yesterday was the start of one of my biggest mistakes in a long time. The SSL certificate for my company LandlordMax Property Management Software expired yesterday, without my noticing ahead of time. Apparently I was suppose to receive a notification email beforehand, which I assume I received but was missed somehow. In any case, the SSL certificate did expire last night.

Now this might not seem so bad at first glance, it’s just a matter of getting another certificate. Yes it’s still completely safe to purchase LandlordMax from our purchase page, nothing has changed in that respect. What’s happened though is that now we’re not a “trusted” site. We still have the old certificate running (if you look at it, it’s still active, it’s just that it’s expired), all the transactions are still completely encrypted, and so on.

And this is bad news, especially since Internet Explorer 7 has been released. On the older IE 6, and with FireFox, you simply just get a popup message saying the certificate has expired and would you like to continue. Nothing too crazy. But with the latest IE 7, it’s a whole other story. You now get a very negative and scary message rather than a simple popup. Not only that, but the only way to proceed to the purchase page is to click on the option with the red marker that also adds “not recommened” beside it. This is very bad for business, even though we’re still very much just as secure as before!

SSL warning page

So as you can imagine, I quickly pushed the order through last night for a new SSL certificate, but it takes 24 hours to process. Then after that it can take another 24 hours for the certificate to be installed. That means that for up to 2 days our site will be displaying this message to all IE 7 users! This is very bad for business, which will significantly slow down sales. I’ve already noticed a difference today.

So for all of you who are seeing this message on our purchase right now, I sincerely apologize for this inconvenience, it’s entirely our fault, I will admit it. We’re working as fast as we can to get this resolved. In the meantime, please rest assured that all your purchases are as safe as they’ve always been, it’s just that we’re waiting to be put back on the “trusted” list to get rid of this nasty message.






A Large Monitor is Actually Cheaper Than a Small Monitor

No matter where I go, I always see it. Every company that I know of, with the exception of a few companies, are more focused on saving pennies by getting their employees the smallest monitors possible that they can get away with. Why? Because they don’t believe that a larger monitor is worth the investment. But then again I also see many of these same companies skimping out on hardware for the same reasons. The bad news for them, good for me, is that studies have shown that larger monitors do significantly increase productivity as shown here, here, and here.

The reality is that the extra costs to invest in a better monitor, or better hardware, will generally be returned to you in multiples. I personally work on the Dell 24 inch widescreen LCD monitor right now, and I can’t rave enough about it. The only complaint I have is that it’s not the new 30 inch LCD widescreen monitors that Dell now has available!

But really, the reality is that I’m so much more efficient on the larger monitor that the time saved makes incredible sense for me. Comparing the price of a 17 inch, or even 19 inch monitor, yes I’m paying substantially more. But you know what, I’m also a many more times more effective!

But the real question is just how much more effective? Well let’s break down the numbers, there’s no better way to determine the value than looking at the bottom line. At this time of writing, a 24 inch Dell wide screen costs $800. An equivalent quality 17 inch monitor can be had for as little as $150-200, so let’s use the smaller number of $150. Therefore the price difference is $650. All I need to do to justify the extra cost is find $650 of value over the lifetime of the monitor, which we’ll assume is at least 3 years (probably more). Breaking it down even more, all I need to do is increase my value by $650 / 3 years, or approximately $213/year. That shouldn’t be too difficult! In reality, I’ll get a LOT more value than $213/year, not counting the joy of using it!

Ok, so let’s look at the value. Below this paragraph you can find three screenshots of the Jakarta Struts project in Eclipse. The first at 1920×1200 resolution from my 24 inch widescreen monitor. The next one with the same screen settings showing the coding section truncated, and the last one how it would normally be displayed at 1024×768. As you can quickly see there’s a huge difference in screen real estate space! If I was just using Outlook, Word, or even an internet browser, it wouldn’t make that big of a difference, but for programming purposes it’s a very large difference.

24 Inch Widescreen

1024x768 Same Size

1024x768 Fit

For those of you would aren’t as familiar, let me walk you through the screenshots to give you a better idea of the real estate value. On the left we have our project structure (almost like Windows Explorer). When programming, you separate the code out into logical files to make your life a LOT easier. Therefore you’re always referencing this panel all the time. And sometimes it can get quite deep, with many nodes on the trees as you can see in the screenshots), so it can take some space (much like if you have many directories within directories on your computer).

After that you have your console on the bottom panel. This panel is also use a LOT! This is where information from your program is outputted. This can range from debugging (sending out diagnostic information to the panel while the program is running to give an idea of what’s going on), to bigger things like displaying program error message, etc. The more space you have here, the more diagnostic information you can display, otherwise you just end up scrolling the panel a lot.

Next we have the optional Outline display on the right. On smaller screens this is often omitted because there just isn’t enough space, even though it’s very handy and helpful. What it does is give you a succinct list of all the methods, properties, etc. of the class (or classes) within the file you’re currently editing. This might not seem like much, but imagine if you have several hundred lines of code (best of luck if it’s thousands) and you’re looking for a particular method? Instead of always having to scroll through the code or doing a search for the text, you can quickly see the list and just double-click on it to move your cursor there in a second.

Lastly, and by far most importantly, is the main panel in the center. This is your programming code! This is where you will spend most of your time and where you want to see as much as you can. Often an algorithm will be spread across a decent amount of lines, possibly over several pages (multiple methods, etc.). The bigger this space is the better! I can’t stress this enough. Think of it as a working piece of paper when drawing plans for a house. The more you can see at once, the better off you are!

As you can quickly see from the screenshots above, with a smaller screen you have to start sacrificing space right away to be able to see everything at once. And don’t think that you mainly use one panel at a time, you generally move around between the different panels very frequently as I’ve just described. It’s much like driving, you look out your windshield, then your rear view mirror, your speedometer, and so on. Always moving your eyes around as you need to get more information. The same is true when developing.

That being said, if you look at the amount of real estate space on the smaller monitor, you have to make a lot of sacrifices. Going back to the car analogy, you don’t have the dashboard space to see everything at once, so you have to cut into some of the information. So for example, you can only see half of your speedometer (showing only the most common speeds in that window). You can only 1/4 of your rear view mirror, so pick the most advantageous spot. You can only see out 1/4 of your windshield, so definitely pick the area directly in front of the driver’s side, near the center preferably.

So right away, you’re limited in information, you can’t drive or program at nearly the same speed. The good thing though is that you can resize any of these windows as need be, but each time it costs you time and you have to sacrifice another panel. So for example, if you want to see out of your complete windshield, you can’t see any of the other windows (rear mirrors, speedometer, etc.). You can also just partially increase the size of any one window but you must also relatively decrease the size of the other(s) to compensate. As well, each time you adjust the size of a window, it costs you time. For programming, this means you have to move your hand to the mouse, adjust the size, etc. It might only be 2-3 seconds, but do this hundreds to thousands of times a day and it quickly ads up; 400 seconds to 4000 seconds – 6 minutes to a full hour!

Each time you make an adjustment, you lose other information, so if you need to move back and forth a lot, you’ll probably lose a little bit of the context. If you spend 1/2 your time adjusting the sizes of the windows, it’s easy to quickly forget simple details such as the speed you’re driving at, which means another adjustment, lookup, etc. This ads up.

Assuming your programming pretty consistently (ignoring things like attending meetings, being tired on Monday, etc.), I’ll use the one hour metric for our calculations, and then I’ll follow up with the 6 minutes to show that even that’s worth the return on investment!

Ok, so getting back to our calculations, assuming about 200 workdays, and assuming 1 hour is lost each day, that represents 200 lost hours of labor. But before I go on, I’ll just take a minute to talk about the cost figure I’m going to use for a developer hour. In a previous article I used $1000/day per developer, which caused some people to comment that this was too high. The reality is that this isn’t too high from the businesses perspective, this is the cost of a developer. The developer won’t receive $1000 in salary, they’ll just receive a portion of that. What you have to remember is that the business also has to pay for the employees benefits, real estate (for example IBM saved $700 million in real estate costs by having workers work from home), hardware, software, etc. All these things quickly add up!

Anyways, assuming a $1000/day cost for a developer (or $125/hour) , giving that they lose 200 hours a year because of the size of their monitors, that’s a $25,000 difference in cost. So you just lost $25,000 in productivity to save $800! If you like those kind of deals give me a holler, I’m sure I can provide you with other similar great deal!

Now what if I grossely overestimated my numbers, which I didn’t but what if, then that’s 200 days * (6 minutes/day at $125/day) = $2,500. So even at 6 minutes a day, we spend $2,500 to save $800! Wow!

To add on top of this, in the above calculations we assumed our monitor would last just one year (200 working days). So multiply the above numbers by 2-3 times since most monitors will easily last longer than that! You can quickly see how valuable a larger monitor becomes!

To add to this, getting a larger monitor will also make programming much more pleasant to your developers, which means they’ll be more efficient. No you can’t really measure the benefits here directly, but rest assured that they do exist. If you go with high quality monitor, your employees will be less tired (it’s less hard on the eyes), and so on. With LCD’s I also found that it significantly reduced the number of headaches I personally got, so that’s another measurable benefit in terms of productivity.

All in all, as you can quickly see, a large monitor is actually much cheaper than a small monitor when you consider the total value of your purchase. If you only use it to surf the internet, send emails, etc. then you’re absolutely right, there’s no real benefit in terms of dollars. But if you program on it, the return on investment is incredible!






LandlordMax Customer Testimonial

In the last while we’ve been getting a lot of great testimonials for LandlordMax Property Management Software. Here’s another great one from Chris Venter all the way from Africa!

“Thanks for all the great work you do in improving the program. It is really appreciated and makes my work easier as well. Keep up the good work.”

Chris Venter

Thanks Chris!






Lines of Code Revisited

Yes, I know lines of code (LOC) is not a very good metric for measuring complexity of software, growth, etc., however it’s still the only real metric I have easily available right now. That being said, since I last posted about this in June comparing the differences in lines of code between the four major releases then, I figured it was only appropriate that I do the same again for this release, our 5th major release of LandlordMax (version 3.11a).

Lines of Code

As you can quickly see from the graph above, we climbed from 105,757 lines of code to 137,868 lines of code for this release (version 3.11a), for a whopping increase of 32,111 new lines of code! Compared to our other major releases (excluding the initial release version 1.00), this is our biggest major release in terms of scale so far! It’s at least 50% bigger than than any of our prior releases as measured by lines of code! As well, the code base is now 2.68 times larger than when we first started with version 1.00!

For those of you who are interested, since I did show in a prior article how many lines of code changed between each minor update for version 2.12 (ie patches), the difference between version 3.11 and 3.11a is only a few lines of code in the build script, nothing changed in the actual program.

I’m not trying to prove anything specific here today, I just personally found these metrics very interesting and I thought I’d share them.






LandlordMax Customer Testimonial

I recently received the most interesting testimonial I’ve seen in a long time. What’s interesting about it is that although it comes from Kent, it really comes from his accountant!

“My new accountant appreciates LandlordMax. He felt it was really helpful when he completed my tax returns for last year.”

Kent Petschow

Thank you Kent for the great testimonial!






Why It's Important to Test in Production

Every real software developer I know knows the importance of testing their software in a production environment because there’s always that slight chance that something may be different from your development environment. This is why in enterprise software you have a development environment, a staging environment, and a production environment. The development environment is as you might expect, is where things are tried out. However staging is where things get different, this is where your environment should replicate as closely as possible your production environment. Although it’s not always entirely possible to completely reproduce it, the closer the better. And production is your live environment.

Normally for LandlordMax, when we’re developing we run it directly from our IDE (Integrated Development Environment), which is our development environment. If everything works here, it should work in the production environment. You always want to test it in staging though, just in case, which we do. Also, to remove the chances of errors, what you also want to do is automate the process of taking your development application and “productizing it”. That is to say, you want to create something called a build script which will automatically create everything for you, removing any chances of human errors in creating the final product.

Once that’s done, at least for us here at LandlordMax, you have an installer created. You then try the installer. You then run the software to make sure everything is still working the same (hopefully someone else will do this to avoid any biases while testing). It’s a pretty simple process.

However with version 3.11 of LandlordMax we re-learned the valuable lesson of just important it is to test and re-test the software after it’s been productized. Yes we normally run it through it’s gamut of tests, but for some reason we missed one simple test case with version 3.11 that where we just a few minutes ago released version 3.11a tonight to correct. The bug, which worked in our development environment, didn’t work in staging, or production. Unfortunately it wasn’t caught until just recently by two of our customers, which I personally thank you for letting us know so quickly. The good news is that because they contacted us right away, within 1 day we have a new version with this fix available!

So what happened between the two environments, shouldn’t they be the same? Yes they should be the same, there should absolutely be no difference. However this was not the case with version 3.11. But before I get into the details, let me step back a minute and explain what happens in our automated script (which by the way was not at fault for those of you thinking ahead).

Our build script consists of several steps. First it gets the latest code from our version control, compiles it, and creates the appropriate objects. Once this is done, it grabs all the appropriate resources (for example images, etc.) and puts them into their appropriate objects. After that, it takes these objects and “Obfuscates” them (if you’re interested there is a famous contest held each year to see who can create the most obfuscated code called IOCCC). This is important for us as a company because it takes the compiled objects (intellectual property) and makes it extremely hard to reverse engineer. Nothing is impossible, but I can tell you from looking at the code after the obfuscater has run through it that I can barely understand it myself! Anyways, once this is done, it takes all the objects, and runs another script which then creates the installer (LLMaxSetup.exe) which you download and install. That’s our build script. Not too complicated, but not too easy either (I’m glossing over some of the details).

What happened with version 3.11 is that we updated the software that obfuscates LandlordMax. We’ve done this many times over the last 4 years, but this time for some reason it changed the way it reads the configuration file. Not significantly, but enough that it caused this issue. Without being too technical, in our code we overwrite a few libraries we use (for example we changed how the report printout calculates the report totals by adding a clause for “NSF” checks, and so on). Now when LandlordMax tries to call this library, our code is intercepted beforehand and is used rather than just going directly to the library’s code. Nothing major, this is called “overwriting” in programming. However, one key feature in overwriting code is that you need to use the exact same names!

Well to our dismay, the configuration in our obfuscater no longer accepted the wild card we used in the past. It overwrote the names of these classes, and therefore because the names weren’t the same, our code didn’t intercept the library’s code. And because of this, the software didn’t know how to handle “NSF” or other little tweaks we added! Hence all the totals were $0.00 on the printout.

So between our development environment and our staging environment something had changed. Something that wasn’t suppose to change, had never changed in the past, but suddenly now did. This is why it’s important to thoroughly test your final production product. We did, but we somehow still missed this issue and for this I apologize to all our customers. We have therefore just released a new version (version 3.11a) that you can download and install to resolve this issue right now.

PS: As an aside, I’d just like to say this was a fairly difficult bug to track down. This is a bug that worked in every development environment but not in our staging or production environment, regardless of the settings and configurations! It also illustrates even more the importance of properly testing in every environment!






LandlordMax Traffic Triples in One Year!

Today I just took a look at the number of unique visitors my company’s (LandlordMax) website got over the past year, and I just noticed that it’s now tripled in traffic in just one year! Well we’ve actually only increased by 2.953x over 1 year, but that’s close enough to 3x. Very exciting! It really shows that interest in LandlordMax is growing, and growing fast!

LandlordMax Property Management Software Unique Visitors





LandlordMax Customer Testimonial

Today I just received the following great testimonial. Thank you very much for the positive feedback Briana!

“Thank you very much for all of your help. Please rest assured that your product will be highly touted by myself, my staff, and the owners of my property. Thank you again.”

Briana Reese






LandlordMax Version 3.11 is Released!!!

It’s official, version 3.11 of LandlordMax has just been released within the last few minutes!!!






LandlordMax V3.11 Sneak Peak

Although we wanted to launch LandlordMax version 3.11 late tonight, I’ve decided to push it back another day. We’re almost there, we just found one last very minor bug that I’d like to clean up before we go live (I’m a perfectionist at heart when it comes to LandlordMax). In the meantime, here’s a sneak peak of the release notes (minus one main feature).

It’s just as well that we delayed it one day because while I was finishing up creating the last of the Release Notes tonight, I couldn’t come up with a good way to represent some of the very major speed improvements we’ve done in this version. The database I was playing with to create this particular animated tutorial consists of:

  • 30,394 Accounting Entries (483 pages worth of entries)
  • 921 Scheduled Accounting Entries
  • 2,293 Tenants
  • 2,414 Units
  • 247 Buildings
  • 75 Vendors
  • 14,282 Invoices
  • 2,182 Scheduled Invoices
  • 13,950 Receipts
  • 2,182 Scheduled Receipts
  • 19,149 Workorders

All this was running on my desktop that’s almost three years old now (it runs on a basic P4, 2.4Gz Intel processor). To view the Accounting Entries Workarea which includes displaying 30,394 entries (I didn’t apply any filtering) and process the 921 Scheduled Accounting Entries (to see if any Suggested Accounting Entries are due), it took about 4 seconds! And that’s while I was running a video and audio recorder capturing everything going on on my screen!!! Without the recorders, the time significantly drops.

So all this to say, we’re extremely close to releasing LandlordMax version 3.11. I suspect it will be tomorrow night in the wee hours of the night. You always want to release your software when it affects the least amount of people, when you have the least amount of traffic to your website, which is generally late at night when everyone’s sleeping.

In any case, as I mentioned above, if you’re interested in getting a sneak peak, you can see a preview of the release notes for LandlordMax version 3.11 here.

Let me know what you think.






 


SOFTWARE BY STEPHANE GRENIER:

LandlordMax Property Management Software

LandlordMax is the EASIEST
Property Management
Software available!
Try it for free!

 

FollowSteph
More resources from Stephane Grenier:
PUBLICATIONS
For people who work on the web
Blog Blazers
How to Generate Traffic to Your Website
 
SOFTWARE
The EASIEST Property Management Software available!
LandlordMax


Copyright @2003-2025
LandlordMax Property Management Software

Disclaimer: This is a personal blog about my thoughts, experiences and ideas. The contents of this blog are for informational purposes only. No content should be construed as financial, business, personal, or any other type of advice. Commenters, advertisers and linked sites are entirely responsible for their own content and do not represent the views of myself. All decisions involve risks and results are not guaranteed. Always do your own research, due diligence, and consult your own professional advisors before making any decision. This blog (including myself) assumes no liability with regard to results based on use of information from this blog. If this blog contains any errors, misrepresentations, or omissions, please contact me or leave a comment to have the content corrected.