DDOS (Aug 1, 2025)

Not much progress this week, because we suffered from a DDOS (distributed denial-of-service). It’s a website problem caused by a botnet: many thousands of user machines that downloaded something malicious (probably years ago). Now they connect to the Internet and do whatever a bad actor tells them to do.

For unknown reasons, someone decided to take us down. 30,000 different desktops and phones kept sending complex database requests to the shopping cart at SmartKnives.com. The server that runs both of our sites could not keep up with the load. Everything became painfully slow, or stopped working entirely. The worst part was total loss of email for a week.

CloudFlare has an easy way to block DDOS attacks, but it didn’t work. This attack used direct database requests, rather than regular page views, so they got past the safety checks. I guess it’s a vulnerability in the Prestashop cart system that we use. Prestashop has many other flaws, and we’d love to replace it some day with something more sturdy. If and when that exists.

Because the attack continued, diagnosing and fixing the problem took forever. Each step required a five minute wait. Sometimes it would time out, and needed to start from the beginning. We finally had to shut the cart down for a few days while we looked for a solution.

The answer was a WAF (website application firewall). It examines incoming requests, and routs the bad ones to an error page. The text-matching is not perfect, but it catches about 95% and that’s good enough for now.

This is only the third time we’ve had serious website troubles. The first happened about 20 years ago, when Turkish hackers found their way into the local ISP hosting TurtleSoft. They replaced our home page with their banner, but otherwise did no harm. The second was when a different hacker totally wiped all files at the same local ISP. We were almost done with the transfer to a different hosting company, so that wasn’t too bad either.

Back in the Aughties I spent a lot of time looking at raw website traffic. Part of it was SEO (search engine optimization): tracking what users typed in to find us. Part of it was because we spent a couple thousand monthly on pay-per-click advertising, and wanted to see whether it actually worked. Nope. Almost all the traffic was from old machines in 3rd world countries, click-farming for a living.

It appears we will need to be more vigilant, and watch raw traffic more closely from here on out. Whomever doesn’t like us (or Prestashop) may find other ways to be a nuisance.

Dennis Kolva
Programming Director
TurtleSoft.com

 

 

Construction Drawings (May 8, 2025)

When TurtleSoft moved into its current location, we built a temporary ramp to move heavy stuff via hand cart. Much easier than lugging up stairs.

A permanent ramp would make a great replacement for the rear steps, which are getting old. However, the drop from rear porch to driveway is 44 inches. A 16 foot ramp is too steep for daily use, and there isn’t room to go much longer than that. Definitely no room for the 44 feet of ramp to be ADA compliant.

As a compromise, I designed a combination of ramp, deck and sidewalk that comes fairly close to ADA specs. It should be good enough for the next move, or if I age out here, or if the next owner needs it.  Also an improvement for daily use. Pleasant deck, and better access to everything outdoors.

I tried several apps for the design drawing, then settled on LibreOffice. It was yet another reminder that I really miss MacDraw. Between the existing files for past deck projects and the better interface, MacDraw Pro would have been twice as good and taken 1/4 as long. LibreOffice did the job, but it’s nothing like software built by Apple gurus in their prime.

The first decade of Macintosh was a golden age of 2D graphics. We started with MacDraft 1.0, then switched to MacDraw II then Pro, with trials of MiniCAD and a few other CAD apps in between. The drawings were good enough for building permits, and useful for planning and client presentations.

Then it all died. MacDraw never survived past OS 9, and nothing replaced it. MiniCAD and other CAD software added 3D and client fly-throughs, and got expensive. They were useful for high-end architects, but far from the needs of folks just trying to make a quick blueprint.

I’ve probably tried a dozen simple CAD programs since then, paid and free. None are great. There may still be a machine or two kicking around here that runs OS 9 and MacDraw, but it’s too much work to get them booting again.

LibreOffice is free. It has layers you can hide and show, which is a firm requirement for useful 2D design software. But it’s too easy to put things on the wrong layer. There are many other annoying quirks and flaws. As open-source software it’s designed by committee, so it will never be great.

Our new accounting software has potential to be a runaway success, similar to how MacNail was back in 1987. That’s especially possible if it runs on phones and tablets. If TurtleSoft starts to have excess income, bringing back a clone of MacDraw Pro is a worthy project. It had a smooth interface, and did the job well. There would be at least one happy customer, guaranteed.

Dennis Kolva
Programming Director
TurtleSoft.com

 

 

Construction Price Updating (Feb 22, 2025)

TurtleSoft started in 1987 with construction estimating software written in Microsoft Excel. Our new accounting/estimating software will be the 4th generation since then.

Selling software in a “vertical market” like construction is tough. There are plenty of special problems to deal with, and a small pool who want to buy it. We don’t even get the full construction market: most of our users are a certain size of remodeler. Not too big, not too small, not too specialized.

In future years, we plan to focus more on general-purpose small business software, and not spend as much time on features that are specific to construction. However, there is one task where we can make a huge improvement for our builder and remodeler users: keeping material prices up to date.

The obvious place for us to fetch material prices is from the Home Depot or Lowes websites. Each Cost Item record would need to store a page URL. Then we could add code to get on the web, and find the price inside the HTML on that page.

Alas, Home Depot and Lowes really do not want anyone to scrape prices from their site. Item prices are not visible at all in their HTML code. Instead, it is “obfuscated”. Some Javascript must fill in the price while the page loads, probably by doing math on numbers that are scattered in the source text.

In theory, we probably could find a way to hack their systems. But then it’s an arms race: every time they make a minor change, we must spend many hours to figure it out again.

Smaller chains have more potential. We checked Menards in the Midwest, and their website pages do have pricing that we could access and import. If there are enough other sources to cover most of the US and Canada, it will be worth our time to develop a price-grabber system.

84 Lumber is about the only small chain that has survived around here, and their website does not even list prices. But there may be others that can work.

To check if your own local supplier can be used for automatic updates, follow these steps:

      1. Open a page for any specific material. Check the listed price.
      2. View the HTML source code for the page (View–Developer–Page Source in Chrome, Tools–Browser Tools–Page Source in Firefox).
      3. Search for the price text. It may be listed in several places.
      4. Check a few other products.
      5. Are all the prices near to some marker text that is the same on all pages? If so, please let us know.

Dennis Kolva
Programming Director
TurtleSoft.com

2025 Payroll Update (Jan 1 2025)

Our staff just finished US payroll files for 2025.

Similar to last year, we only updated federal tables, plus tax tables for a few larger states. If your state wasn’t updated, please contact us and we will provide them. We did update SUTA cutoff amounts for every state (the actual % rate you pay varies for each company).

Starting this year, US Federal tax tables are in a separate file. Importing payroll withholding tables is now a two-step process: once for the state, once for Federal.

The change saves us a few hours of tedious copy/pasting. No need to put the latest Federal tables into 51 state files. More importantly, it also makes the setup process more reliable. A few times in past years, we pasted into the wrong cell. That totally zaps all the data, and results in extremely wacky withholding amounts (or zero withholding, depending).

Each annual update requires us to type in several hundred numbers. Most years we also need to redo table setup for one or two states. Some tax departments find extremely weird ways to calculate withholding. So, anything we can do to simplify the process is worthwhile.

We probably will be able to go back to a full 50-state-plus-DC update starting in January 2026. However, right now our staff is very busy finishing the new 64-bit accounting software. We don’t want to spend an extra couple days typing in numbers that won’t be used.

Dennis Kolva
Programming Director
TurtleSoft.com

 

Subcontractors (Dec 2)

The multi-user version of our new accounting software is moving right along. Clients can sign on to the home computer over a LAN or Internet now. Their window is starting to look like the single-user version. There’s still more to do, but the end is in sight. Work has also started on mobile apps for iOS and Android, for phone or tablet.

The multi-user code is a joint effort between our staff and a programmer in Turkey. He handles the Qt and network portions of the project, while we build the GUI and business parts. Often there is overlap in between.

Much of the work on our end is fixing bad design from a previous subcontractor. In 2000, we hired a large software firm in India to create Windows and multi-user versions for Goldenseal. They started with an experienced programmer, but soon shifted everything to a newbie. He wrote plenty of terrible code, and took shortcuts that still affect Goldenseal’s quality.

The project was promised to finish in 6 months, but it actually dragged on for more than 2 years. It would have gone even longer, but our staff chipped in and did some things just so we’d have an app to ship.

The poor-quality Windows code is long gone, but the networking still needed an overhaul. That task has taken a few weeks already, and probably will need a couple more.

Over the years, TurtleSoft has hired about 20 different subcontractors, and negotiated with more than 100. Most were for C++ work, with a few for website and shopping cart setup. Individual programmers have usually worked out the best.

It was the same way with Turtle Creek Carpentry. In two different decades, we shared projects with excellent plumbers who worked solo. Then they hired a small crew, and still were pretty good. Then they expanded too much, filled up with bozos, and became disasters. One electrician took a similar path.

Talent at hands-on work does not always translate to management skill.

Dennis Kolva
Programming Director
TurtleSoft.com

Income Taxes & Complexities (Apr 18)

Income taxes finished with a few days to spare. It was more difficult this year because of capital gains on a house sale. I waited almost 30 years to sell, and that was a bad idea. It would have been better to move before price minus basis went over the $250K home sale exclusion.

Back when TurtleSoft made Excel-based estimating and accounting software, a company called Heizer Software sold Excel templates. They had a cheap construction estimator that was our main competitor. Also, worksheets to calculate and print IRS income tax forms. Those were a real time saver: just enter expenses and income, and everything filled in from there. Heizer had annual updates, but they faded away in the late 1990s.

Remarkably, I still use their 25-year-old Excel templates to calculate and print Schedules C and SE, plus the 4562 depreciation form. The spreadsheets just need minor tweaks each year. Heizer’s 1040 form also worked for years, up until ex-President Trump “simplified” it with an extra page and two new forms. Now it needs typing or copy/paste into pdf or e-file.

One extra complexity this year: capital gains were enough to make Social Security taxable. Calculating the amount is an 18-step process. That seemed way more complex than it deserved. At least the math is in a spreadsheet now, so next time will be easier.

Meanwhile, Apple just approved TurtleSoft LLC to get certificates for code signing. It lets us deploy an accounting app that runs on newer Mac OS versions and M-series chips. Our staff is wading into the instructions for that now. Also futzing with the deploy process for Windows.

The limiting factor for progress these days is just plain old complexity. There’s only so much information that one can absorb in a day. Arcane bullshit seeps in even slower.

Getting new processes to work is kinda like mastering a foreign language. It’s all just gibberish at first. The line 6a/6b IRS worksheet equals learning a phrase or two. App deployment is vocabulary to ask directions and order a meal. Writing an entire accounting app needs PhD level fluency a few times over. ¿Hablas español?

Dennis Kolva
Programming Director
TurtleSoft.com

 

 

DNA (Mar 28)

The source code for Goldenseal estimating/accounting software has a clone. The same database and interface also builds an app for DNA sequences and protein structures. It imports data from different science websites, and links them.

I wrote it while attending Cornell as an older undergrad, 2008 to 2013. The goal was a late career in science, and/or new software to sell. Neither panned out, but the app still found interesting things lurking in the human genome.

It all started after a long canoe trip in the late 90s. Around the campfire, the biologists complained about all the repeating “junk” DNA turned up by the Human Genome Project. It’s 98% of your DNA. A few million chunks of it. Far more than the 20,000 regular genes that create proteins. As a computer person, it sure sounded like data. Maybe something I had the skills to help solve.

Cornell was one of many distractions that have slowed down TurtleSoft. On the other hand, genomes are a another good reason to keep slogging on the 64-bit update.

Humans have 3.3 billion base pairs of DNA (3.3 gigabytes as text, or 780 megs compressed to binary). A 32-bit app can only store a few genomes before it runs out of space, thanks to the 8-gig address limit. Because of that, the DNA app desperately needs 64-bit. Unlike Goldenseal, which will never hit that memory cap. Our current accounting software could go forever if Apple still supported 32-bit apps, or made it easier to update.

Will a DNA/protein database help make sense of the human genome? Maybe. Problem is, there’s too much data. Most likely there are many thousands of traits controlled by repeat lengths. Matching them up would require millions of full-genome sequences, millions of measurements, and way too much computer time.

A better approach may be to find the proteins that read that data. There are candidates: e.g. HEXIM1, pictured above. Cool machinery runs life at nano-scale, propelled by ATP. When the new accounting app is polished, I’d like to explore how it works.

Dennis Kolva
Programming Director
TurtleSoft.com

 

 

 

User Interface (Feb 15)

It has been an excellent winter for working outdoors. Many warm spells. Not much snow, mud, or frozen ground. Zero sweat, sunburn or biting flies. Most days, the routine here has been daytime physical labor, then programming our new accounting software during the long evenings.

The big project right now is 300 feet of French drains to handle runoff from the neighbors. Step one is trench digging, with the soil going into raised beds for gardening. Then add a 4″ corrugated drain, plus a water line for irrigation. Finally, fill with many tons of crushed rock (slag?) that a previous owner piled onto everything not lawn. Removing it lets us use those spaces for planting. The project kills three birds with two stones.

Last week was warm enough to assemble a greenhouse kit from Amazon. Sadly, the build process was a nightmare, with instructions even worse than Ikea’s. It took 27 hours, mostly puzzling over what goes where, and redoing whatever went to the wrong where.

Good human interface design takes time and skill, but it’s worth the effort. This build would have gone twice as fast if it were set up better. It lacked 1/2/3 instruction steps, simple part labeling with up/inside/outside markers, photos for difficult areas, and maybe tricks like matching color dots where pieces connect. Instead, the project was such a brain-drain that it left no energy for programming afterwards. It cost us quality time, not just time.

User interface is even more important for accounting software. It will be used for hundreds or thousands of hours, so every time-saver (or time-suck) has a big impact. Our staff runs each screen and function many times to test and debug, so we also want it easy for selfish reasons. Plus we manage a couple of businesses with it, and have to suffer any flaws.

Right now the main focus is progress bars. They aren’t that complicated, but moving them from Goldenseal to the new accounting app is tricky. The work is about half done.

Dennis Kolva
Programming Director
TurtleSoft.com

Templates & Software Marketing (Jan 26)

Templates are a nifty feature in our construction estimating software. They are blank estimates already set up with dimensions and specs, so you get a running start on a project bid. In Goldenseal, click a little button to the right of the New button to see them. It shows a popup menu of available templates (some are already included in the starter files).

Sadly, many new users never click the template button, and lose out.

The new accounting/estimating software also has a New button, but it’s different. It shows a popup with New, Duplicate, and a list of templates. More obvious. It’s one extra step to make a new blank record, but worthwhile if it gives users an easier way to start records.

While testing templates in our own company file, Other Costs showed a long list of weird names: Accounting411, Ask Jeeves, BuilderSpace, Business.com, Capterra, ePilot, etc. It was a reminder of our phase 2 software marketing during the early 2000s.

Phase 1 started in 1987, with a $50 classified ad in Fine Homebuilding. It listed MacNail (our first estimating app) for $145. About 25 users bought it that year: a good return on investment. TurtleSoft soon upgraded to larger ads in every magazine aimed at builders, plus trade show booths and many bulk mailings.

When Goldenseal launched in 2000, we repeated phase 1, and got very poor results. Most people already had switched from paper to Internet. Next try was listings in every possible search engine and software directory. Hence the many templates for their monthly charges.

Those did better, but still not great. What worked best was SEO (search engine optimization). Our staff spent many hours tuning text, links and website pages to get on the first page for “construction estimating software” and the like. Also, many hours analyzing web traffic to see how buyers found us. Phase 2 was quite successful for 6 or 7 years.

Getting sales with a minimum of advertising expense was great, but SEO has a built-in problem. It’s best explained by the Red Queen to Alice:

“Now, here, you see, it takes all the running you can do, to keep in the same place.” — Lewis Carroll

If it’s successful, SEO gets your page high in search results. But search engines want to capture users, then have them click on ads. Different goals. SEO can out-smart Google for a while, but they soon adjust pagerank to bypass the tricks. Different SEO approach, different counter-measures. Rinse and repeat.

The result is a constant struggle, with no way to win in the long run. With AI entering the scene, it will only move faster.

Phase 3 marketing for our new accounting software will not be raw SEO. It has gone the way of magazine ads printed on glossy paper. Instead, I think we’ll revert to the advertising that worked best for Turtle Creek Carpentry in the 70s and 80s: word of mouth.

I’ll talk more about the details as the new app gets closer to first release.

Dennis Kolva
Programming Director
TurtleSoft.com

Bank Transactions, Name & Website (Jan 19)

This past week, testing the new accounting software gave all sorts of weird error messages. It turned out to be something stupid: the code for deleting records wasn’t finished. It screwed up the database and caused mystery errors in other places.

Fixing that still didn’t help for deleted bank transactions. That was a whole ‘nother problem. The new app made a big change from Goldenseal, and all details are still not shaken out.

Goldenseal uses 7 different data classes for bank transactions. All checking transactions are lumped together. Ditto for cash, credit cards, escrows, etc. To show records for just one bank account, the code pretty much does a Find. For various reasons, there’s no way to see windows for two different checking accounts at the same time. Sometimes it’s awkward.

The new accounting app lumps all non-escrow bank transactions together. Then each account keeps track of its own transactions. You can view transactions for as many bank accounts as you want, all at the same time. The interface is better, but it makes some things more complex.

One example: tabs and window titles show the bank account name, but the data is bank transactions. Everything else only needs one class ID for both, so a lot of code assumed that. I think we switched back and forth several times, fixing one bug for banking and making a new one. Now everything uses two separate classes, and things work OK.

There are more oddities, but our staff is tracking them down.

Meanwhile, the new accounting software is down to 3 possible names. We will register domains for all three, just in case the trademark registration falls through. We learned to be cautious after the 1990s rewind from BidWorks to BidMagic.

Also, the TurtleSoft website is switching to a different hosting service. There may be brief outages over the next week.

Dennis Kolva
Programming Director
TurtleSoft.com