12/13/13

Daily Scrum (2013-12-13)

What did I do last time?

While visiting Rochester, NY for the Thanksgiving holiday, I did manage to log in remotely and work on Moneylender for about eight hours.  And it was an exciting eight hours.  I finished up the rough in of the first new loan calculator.  It is drastically simpler than Moneylender 2's loan calculator.  It also natively supports the Control report, meaning no special settings in the custom values.  It's output is fully auditable and immediately reveals how Moneylender is arriving at amounts and balances.

On the other side of that coin, much of the dialogs in the program will need rewriting.  In many cases, the dialogs will be simplified substantially - payment records only need one date, for example.

I was able to fix all the errors that prevented the program from starting, and then I did some preliminary debugging on the calculator and other interfaces in the program.

By the end of the day, Moneylender correctly calculated its first balance using the new algorithm.  Definitely a major step toward the release of Moneylender 3.

What do I hope to do today?

I'll be reestablishing a server / workstation architecture on our local network today, which will take a few minutes here and there to install and configure things.  I also have a few things to take care of for various customers - which might take a couple hours.

For Moneylender, I hope to revise the payment dialog, loan wizard, and several other dialogs to work properly with the new design.

Roadblocks?

I was away in Rochester, NY for two weeks and by this time next week I'll be leaving town again to visit family for the holidays.  There's a little bit of a backlog with bills and paperwork to do.

12/3/13

Daily Scrum (2013-12-03)

What did I do last time?

I wrote much of the code that allows the calculator to apply payments and compute interest.

What do I hope to do today?

I hope to continue developing the code for calculating interest.  When I left off I was about halfway through the code that determines the average daily balance (a new method of calculating interest for MLP3) for the amortized loan calculator.

Any roadblocks?

I'm working remotely from Rochester, NY right now.  My tiny netbook has a 1024 x 600 screen so the development environment is going to be pretty cramped.  I've done lots of coding from this little laptop, though, so it should be ok.

11/22/13

Daily Scrum (2013-11-22)

What did I do last time?

Last time I finally got enough of the foundational functionality of the loan calculator written that I got right up to the point where it's adjusting the amount due for each due date on a loan.  Currently, MLP's amortized loan calculator can account for: original principal; principal, interest and fee adjustments; late fees; and escrow fees.

What do I hope to do today?

I'm going to continue developing the calculator so it can calculate amount due, interest and apply payments to the loan.  Much of the groundwork has already been laid for this.  With any luck, I might begin debugging the rough calculator.

Any roadblocks?

My family and I are driving to Rochester, NY for Thanksgiving.  I'll be bringing my little netbook so I can remote back to my computer and check email.  I may also do some work on Moneylender while I'm away.  So preparing for the trip might take some of my attention today.

11/15/13

Daily Scrum (2013-11-15)

What did I do last time?

I almost coded Moneylender Professional up to the point where the initial loan amount is added to the new "balance accounts". I wrote a lot of the code that maintains the balance accounts and a little bit of code that works with those accounts. Another difference in the design of MLP3's calculator is that different routines are coded as completely separate calculators. The interest-up-front loans no longer have to share interest routines with the amortized loans. Everyone wins!

What do I plan to do today?

Today I hope to have my test loan calculating with the amortized calculator.

Roadblocks?

Not today. I'm just going to put on the music and crank out the code. I have a couple other things but they can wait.

11/9/13

Daily Scrum (2013-11-09)

What did I do last time?

Last week I worked on some of MLP's user interface in the main window; mostly the list of loans, and wizards.  I started putting the structure for the new calculation system into the code.

What do I hope to do today?

Saturdays are always a little tougher to set goals since I have housework and family to tend to as well.  I've already been working on Moneylender Professional's new loan calculator system.  My goal is to get the program to be able to calculate a simple loan as quickly as possible.  With the new structure, all the other functions like discount earned and reporting can use the Transaction records generated by the calculator for everything, instead of having hooks into the calculator itself to extract the information during calculation.  It should simplify the calculator and other features substantially.

Roadblocks that might prevent me from reaching my goal?

I doubt I'll get the calculator working today, but I hope to lay down some important groundwork.  I've already written code that clears the transactions from a specified date and enhanced the code that loads the data from file.

11/1/13

Daily Scrum (2013-11-01)

What did I do last time?

I started working on MLP's file system, getting the new portfolios to store and retrieve records properly.  I rewrote the way MLP stores its program and license settings.  I started debugging the loan, borrower and lender wizards.

What do I hope to do today?

It's been a tough day (writing this at 4PM), with a lot of bills and paperwork getting dealt with.  I hope to continue working a little more this evening and make some more progress on the program.  The loan calculation system is going to need a total rewrite, which will be a lot of work.

Any roadblocks?

Time, sleep.  I can't concentrate when I'm exhausted, and there's no time to get enough sleep to be well rested.  Without employees to help with the workload there's not much I can do to speed things along.  I'll keep working on it, though.

10/25/13

Daily Scrum (2013-10-25)

This morning I dug right into the software and started working through compiler errors at 6:40AM.  After several hours and about 500 compiler errors, I started checking to see if the error count would drop below 102 (it stops at 102, so there's an unknown number of errors beyond that).  And finally, after weeks of non-stop error fixing, the number dropped to 70.  I quickly fixed the remaining errors and started the program.  The main window popped up, in rough shape but at least it was running!


So what did I do last time?

I fixed a couple thousand more compiler errors.  The program finally compiles as of 11AM today!

What do I hope to do with what's left of the day?

I'm going to start debugging the foundation of the software - opening and closing the new portfolio files, and maybe even try to create a new loan.  There's going to be thousands of bugs in the program, but at least now I can start testing and refining the user interface, etc.

Any roadblocks in my way?

I have some paperwork to do and a few phone calls to make, but I'm so excited the program runs I'll probably forget to do that stuff.

10/18/13

Daily Scrum (2013-10-18)

What did I do last time?

On Monday, I worked at TrailsWeb because the State was closed and made another good push toward getting the program to compile.  As far as I can tell, the main window compiles and the loan calculator code compiles.  Many of the reports, the template designers and print-time template drawing code, along with several other forms compile, too.

What I hope to do today…

I'm going to keep plugging away at those compiler errors until the program can start.  It'll undoubtedly crash like crazy until I rewrite and debug all the new pieces and fix where they splice with the existing MLP system.  I've been working out a new structure for how MLP will store the loan data which will make viewing the loan data and recalculating the loan much faster - it'll also simplify the loan calculator system.  I doubt I'll start implementing that today, but I am refining that design as I review the code while fixing compiler errors.

Roadblocks:

Time, patience, and focus.  I've been making great headway the last two weeks, and I want to keep it up.  I have a quick edit to make on a website, and a moderate one on another site which will take a bite out of the hours in the day, but there should still be plenty of time for fixing compiler errors.

10/14/13

Daily Scrum (2013-10-14)

What did I do last time?

Friday was awesome.  I worked on Moneylender Professional 3 all day, only taking a brief pause at 4:00 to do a couple small things for another client then back on Moneylender until 5:00.  I made what I estimate to be about 3000 fixes to compiler errors!  As far as I can tell, the main window should compile – which is a major feat.  Also, several forms such as "Manage Payments", "Manage Regular Payment", "Manage Late Fee" were upgraded to the new file system.  I believe about 2/3 of the loan calculator is also done.  It's hard to tell exactly what remains because Visual Studio only shows the first 100 compiler errors it encounters, so there might be another 2,000 errors or there may be another 20,000.  If I had to guess, I'd say more than half the program has been revised so it will compile.

What do I plan to do today?

It's a bonus day to work at TrailsWeb, with the State of South Dakota being closed for Columbus Day.  I'd be super excited if I can get the rest of the compiler errors fixed and start debugging the program under the new file system.  So today I'm just going to go through as many compiler errors as I can and if I get them all I'm going to start debugging the program and adding in missing pieces of functionality.

Roadblocks that might stand in my way?

Today is a freebie on the TrailsWeb schedule.  Also, there's not much else I need to be working on right now.  If I get tired of compiler errors, I might hop over to a small HTML5 / Audio conversion job for a couple hours.

10/11/13

Daily Scrum (2013-10-11)

What did I do last week?

Well, obviously, I bit off more than I could chew.  I did make a lot of great progress on the system that installs licenses automatically, and the system that allows manual license assignment on the web.  I forgot how many things I had to change from MLP2 to get it to work in .NET 4, so that was an unreasonable goal to set for a single day.

What will I do today?

Today I’ll be working in MLP3 to get the code to compile so I can get it running again.  There’s a lot of code still that needs to be rewritten, but hopefully I can make another big dent in it.  When it can compile and run, it’s going to be a fast and fun ride to the release of the program.

Roadblocks?

I have a couple phone calls to make, a couple tax forms to fill out, and some small jobs for other customers.  Since I do my best work in the morning, I’m going to give myself until 3PM to work on Moneylender and then button those other things up in the afternoon.

10/4/13

Daily Scrum (2013-10-04)

What I've done since last time…

I was sick all last week, and I still have a cough I’m trying to get rid of. I haven’t made much progress on MLP for about four weeks because of the mail server issues that needed to be dealt with. Now that that has all stabilized, I have time today to make some good progress on MLP.

What I hope to do today…

MLP's sales have always been somewhat irregular, but 2013 has seen more consistent sales than ever before. At the present, we're in a bit of a dry spell that we haven't seen for nearly a year. My goal today is to upgrade MLP 2 to .NET 4 and change the activation system to use the new system that MLP 3 will be sold under. I hope to have MLP available for purchase on TrailsWeb's online store by the end of the day today.

Any roadblocks?

I have to make two small edits on other websites which shouldn't take very long. Moving all the existing licenses into the new activation system might be a chore. Getting the online store production ready by the end of the day is a pretty major undertaking. I have to watch my son for an hour at 1 PM. Other than that, it should be smooth sailing.

9/20/13

Daily Scrum (2013-09-20)

What did I do last time?

It’s hard to tell…  I’ve been working nights for the last three weeks upgrading, securing, and monitoring a lot of different systems.  Gmail still has a block on my mail server, which has meant an increased number of customer inquiries.  There has been some software development, but it hasn’t been significant.

What I hope to do today…

I have a few changes to post to customer websites and then I’d like to get back into MLP3 development.  It feels like it’s been forever since I’ve been able to work on Moneylender.  So, maybe today I’ll work through a few more of the program’s dialogs, upgrading to the new file system and put another dent in the cone on the main window.  Rewriting the loan calculators is a looming task that promises to be both interesting and challenging – but I won’t be touching that today.  I’ve been drinking twice the normal amount of coffee for the last few weeks to power through the 13 hour work days and my brain is in sub-par condition. 

Roadblocks?

Nope.  Not going to worry about anything.  Some HTML, a little VB/C#, a handful of server configuration, and a few emails.  No big deals, nothing too difficult today.


I learned how to write Java/Android apps over the last two weeks.  It wasn’t too tough since I’m pretty competent in C# and Javascript.  My very first app: a flashlight that turns the screen white.  My second app: an app that downloads State of South Dakota well locations to a native SQLite database, then displays them on a dynamic map with a cached imagery layer and allows agents in the field to collect well quality survey data and render those surveys in a format that feeds directly into the Department of Environment and Natural Resources’ existing infrastructure.

After learning something new at my State job, I was looking forward to going back to C# and ArcObjects in ASP.NET (technologies I’m very comfortable in) to give my brain a break from all the new material.  I was putting in two or three extra hours each night dealing with the mail server problems, and I was already feeling pretty burned out at the beginning of this week.  Instead, I’ve spent this last week learning about the changes ESRI made to how ArcServer works from version 10.0 to 10.2.  I have to rewrite many of the systems I’ve built over the last two years.  So I spent this week learning another new trick, and now I’m exhausted.

Having been in software for over 20 years, I know the thing I learn today will be obsolete in five years.  I consider myself a bit of a renaissance programmer because I like to know as much as I can about all the technologies out there and how it works.  I can program complex apps for Windows, the Web, iOS, Android, Windows Mobile, Arduino, even Minecraft’s ComputerCraft mod.  I know many programming languages and the technologies they enable.  Trying to list the protocols, platforms and technologies I know and love would become a voluminous list in a hurry.  But it isn’t easy to stay abreast of the trends in technology, and the last three weeks have been taxing.

So, the moral of the story here is that our civilization is advancing awesomely and it’s a thrill to ride the wave.  No roadblocks today.

9/13/13

Daily Scrum (2013-09-13)

What have I done since last time?

It's been one very challenging week for me. After those email accounts were compromised two weeks ago, I’ve been working hard to really lock down the mail server. Gmail still has us banned but hopefully that will have lifted by this time next week. Spam is at an all-time low for many of TrailsWeb’s users thanks to the rewrites I did on the spam filter.

No progress on Moneylender Professional since the last daily scrum, and it looks like the email snafu has also gotten MLP (hosted on the same IP as the mail server) booted from Google’s search results. Getting to Google’s front page was the result of years of hard work and persistent content creation – dashed out in an instant by a handful of spammers. We haven’t sold a copy of the software since the mail server was compromised.

What do I plan to do today?

Today I’ll be filing more paperwork, paying bills, registering with various government entities and creating bank accounts for TrailsWeb, myself, and the brand-new Whitman Technological Corporation.

I’ll also be writing a windows service that scans a variety of server logs and reconfigures the firewall to block IP addresses if malicious traffic is detected. It appears I can’t afford to be without something like this to keep everything running properly, and neither can the other businesses that rely on my hosting services.

I’ll also be “turning the screws” on my spam filter. Right now, it’s doing a fantastic job and it’s set to only block mail if the combined subject and message body spam probabilities are 98% or higher. I have some good history built up in the last week that I can use to determine a lower setting, blocking more spam without blocking good mail.

I doubt I’ll get more than that done today. If I can, I’ll go back to making revisions to the code for Moneylender’s main window.

Any roadblocks that stand in my way?

The huge downgrade for Moneylender’s placement on Google is disheartening. From a technical standpoint, there aren’t many hurdles. All the code for firewall management has been tested experimentally. Now it’s just a question of putting it into a practical application.

9/6/13

Daily Scrum (2013-09-06)

What I did last time…

I ended up taking Labor Day off from the State of South Dakota and worked on Moneylender Professional 3, instead.  I made some pretty good headway toward getting the program to compile under the new file system.  Specifically: finished revising the Borrower Wizard, Lender Wizard, Multilender Association dialog, Loan Wizard, Import Payments Wizard, Third Party Wizard and Loan from Template Wizard; rewrote the code that reads and writes images for the borrower and lender, and made several edits to the program’s main window.  A lot of code was updated.

What I hope to do today…

My mail server has been plagued with problems lately.  Hackers hijacked two accounts and flooded my server with spam for about 16 hours.  Then the spam filter died because it couldn’t keep up with all the new examples of spam to train on anymore.  Without a spam filter, regular amounts of spam were flowing through the server.  Some of my customers have their email forwarded to gmail, yahoo and hotmail accounts.  With regular levels of spam being redirected to these other mail servers, my server was blocked by those service providers.  I managed to cobble a rewrite together in the hours before and after my 10 hour shifts at the State, but I’m still on the no-fly list for at least gmail.

So, what I’m doing today is beefing up my spam filter, including a revision to the networking components.  Since those networking components are the same ones that will drive MLP3’s new encrypted network protocol, it’s actually a good thing for MLP3.  All those videos and whitepapers on machine learning algorithms and probability statistics has finally paid off – I finally understand how to get a numerically accurate percent likelihood that a message is spam, based on previous exposure to spam and ham.  My new Bayesian classifier should be significantly better than the old one.

Actually, I already spent most of the day tweaking the spam filter by the time I’m actually posting this.  At this point I just need to wrap the server in a windows service and install it on the server again.

Any roadblocks?

Yeah, all the spammers bombarding my server 24/7 and all the hackers trolling every Barnes and Noble WiFi scraping credentials.  Grrr…


9/2/13

Daily Scrum (2013-09-02)

It's a national holiday, so it's a bonus day to work at TrailsWeb.

What I did on Friday?

Formed a new corporation, obtained an EIN, and registered multiple domain names.  I wrote a few pages into a client's site that allow advertising information to be submitted.

What do I plan to do today?

I'm going to spend today working on Moneylender Professional 3.0.  I'd like to finish up the image code for borrowers and then finish the borrower wizard.  Because the lender wizard is almost the same, I'd like to rewrite that, copying the image code onto the lender.  If there's time, I'd like to start the loan wizard.

Roadblocks?

None that I can tell.  Happy Labor Day!

8/30/13

Daily Scrum (2013-08-30)

Last week:

Last Friday I made moderate progress on Moneylender 3.  I “finished” revising the code that draws the loans into the List of Loans.  I rewrote the routine that fixes Multilender (when a lender owns all or part of a loan at a discount) records where the associated lender record was deleted.  I rewrote half of the dialogs in the Borrower wizard.  I started to work on the replacement code for storing the Borrower images.  MLP3 has a huge overhaul to how it stores images.  It’ll shrink the portfolio files significantly, while allowing larger, clearer pictures and images.

This morning I published three articles; one on the Moneylender blog that I wrote, and two on TrailsWeb’s “newest website” blog written by the talented Angela Sears.

This week:

I committed to spending today doing development for a client’s website so I won’t be working on Moneylender today.  I hope to add pages to the administrative section of their website to allow them to set advertising preferences, location information, and similar for new and existing advertisements.

I am also forming a new corporation as I begin the process of relocating to a community rife with brilliant people ready to work.  That transition should allow me to hire talented programmers and support personnel to take our products and services to the next level.  But, for now, it’s one small step at a time.  Today I hope to complete some of that paperwork.

Roadblocks to accomplishing those goals?


None really.  I’ll probably need to make a few phone calls here and there to get answers to questions, but that’s about it.

8/23/13

Daily Scrum (2013-08-23)

Back on Moneylender today!

What I did last week…

Last week I worked on a website for a customer, fixing a bug and furthering progress on an advertising system.  Little progress was made on MLP, save a few replies to customer service emails.  I added a couple new items to the Moneylender Product Backlog (a list of features the program doesn’t have yet but would be awesome if it did) thanks to the inquiries of a customer and a prospective customer.

What I hope to do this week…

I’d like to continue work on how the list of loans is drawn.  Specifically, I’d like to have the selected columns from the options dialog appear in the main window and I’d like to have the code that loads each item in the main window be rewritten to match the new data structure.  I also have to post six articles (already written by the stellar Angela Sears) to various other blogs for some of our other clients.

Any roadblocks in the way?


I have to do some research about corporations and filings for a few states in preparation for a change that will happen in about eight months.  I need to make a return phone call to a customer that called earlier this week, and a final call to a non-paying client before turning off their website.  Other than that, it should be smooth sailing.  I’ll use time-boxing to make sure none of these things erodes the amount of effort I give to Moneylender’s code.

8/16/13

Daily Scrum (2013-08-16)

What did I do last week?

  • I got a Wiki set up for the MLP 3.0 help documents.  I added one page about the List of Loans to verify the system works properly.  It’s still the default colors, which will need to be changed at some point, but at least the technical challenge is over.  
  • I rewrote the code in the Moneylender Settings dialog that displays the available columns that appear on the List of Loans with checkboxes to enable the fields you want.  You can display any field from Loan, Borrower, Lender or Extended Loan Notes on the main window.  
  • I wrote an article about funding sources for lenders for the Moneylender blog.

What do I want to do today?

I have to make several edits and additions to a client’s website today.  It’ll likely take up the whole day.  I have nearly completed an ad rotation system that balances ad rotation between global and regional advertisers to a geolocated audience.  There are also bugs in the code that have been popping up and need to be fixed.

Any roadblocks in my way?

This other website will be taking my full attention so I won’t be able to commit to doing edits to Moneylender today.  If, by some miracle, I finish the ad rotation system and can complete that project, I’ll switch gears and begin designing a new list of loans.  The the list will get a visual and functional overhaul to provide greater flexibility with what's on the main window and provide more intuitive feedback to the user.


On a side note, the wheels are slowly turning to relocate to upstate NY.  It’ll probably happen in about eight months.  It’ll mean some very important changes at TrailsWeb.  We can go back to providing phone support Monday through Friday, and there will be an abundance of talented people looking for work to help with development and documentation of the software.

8/9/13

Daily Scrum (2013-08-09)

Ok, let's get this day started!

What I did last week:

I wrote an article with a couple bits of info for potential lenders to help them get started.  I helped a couple customers with their various needs.  I finished up the new portfolio, open portfolio, and close portfolio code in Moneylender's main window and started revising the refresh routines that draw the loans in the portfolio onto the main window.

What I hope to accomplish today:

I'd like to update the Moneylender Settings dialog to allow for all the fields in a loan and associated records (Borrowers, Lenders, Additional Comments) to be added to the main window.  The new file structure has a convenient mechanism to automate the list of what can be displayed.  While some of it might not be pretty, most of it should show up nicely without additional coding.

I'd like to also continue work on the code that refreshed the main List of Loans.  My hope is that I get to a place where the code that displays the loans is more or less complete today, but that's being a little ambitious.

I'd also like to set up a wiki on the Moneylender Professional site for the MLP 3.0 User's Guide.  Since I'll be referring to specific section of the program in these daily scrum posts, it'd be helpful to link directly to the content which describes the features under development.

Roadblocks that might prevent me from completing my work:

Setting up the Wiki might take too long or I may have to try multiple products before I find one that suits my needs.  I have to make a few billing related calls to clients, and (hopefully) set up a project with a freelance writer.  I would like to write another article for the Moneylender Professional blog, too.

Thanks for checking in, see you next week. :)

8/2/13

Daily Scrum (first one!)

Now that TrailsWeb is a one person shop, it's hard to stay committed to specific goals amidst all the distractions of running a works worth of business in a single day.  I work four tens at the State of South Dakota making websites with maps on them.  That leaves me Friday to work at TrailsWeb all day, servicing the rest of its customers in one day each week.  I tried working Saturdays, too, but I burned out so hard I didn’t even want to think about coding after my forty hours at the state.

At the State of South Dakota, I was lucky enough to be the very first programmer to ever implement Scrum development.  Thanks are due, in large part, to my manager Adam Emerson who facilitated as Scrum Master.  The benefits of using Scrum on a large and complex project continue to emerge and I want to bring that same focused progress to my Moneylender Professional software.

A core part of scrum is the fifteen minute “daily scrum” meeting where these questions are answered by each member of the development team:  What did I do yesterday?  What do I hope to do today?  What roadblocks might prevent me from achieving this goal?

When answering an email asking about progress on Moneylender Professional 3, it occurred to me I could kill three birds with one stone.  I could write a “daily scrum” blog post every Friday morning with the details of what happened last week, what I’m working on now, and what might slow me down.  Customers can see the progress being made on the software and keep up to date as changes take place.  And the content I write will help Moneylender’s online visibility!

So, today’s daily scrum:

What did I do last week?
Last week I wrote an article for my Moneylender Blog about profitable outcomes with tailor made loans.  The week before I continued restructuring work on migrating MLP2 to the new file system in MLP3.  The new file system is a huge leap forward but requires system-wide rewrites to the application.

What do I plan to do today?
The main window of MLP is about 4400 lines of code.  Large parts of it must be rewritten to use the new file structure.  I would estimate that about five hundred separate revisions will have to be made application-wide for the program to compile so I can even begin to test it.  In the main window, the first batch of revisions involve create-, open- and close-portfolio code.  Today I would like to complete revisions on that code.

What roadblocks might prevent me from achieving this goal?
I have two phone calls to make to various clients that may lead to an hour or two of unrelated work.  One MLP customer is experience problems and may require ongoing support.  I want to write another article (albeit not as long as last week's) for the Moneylender blog.

That’s it for this week.  I’ll check in with updates and goals on the 9th.  Feel free to contact me with suggestions for features for Moneylender.  I maintain a “Product Backlog” now, which has a long list of desirable additions.  I order them based on the value they add to the whole user-base of the software.  All suggestions are welcome and will be recorded on the backlog.