The Niello Company
Back in 1996 my business partner and I had joined the Metro Chamber of Commerce for the purpose of promoting websites for members. Roger Niello was the President of the Chamber, so I created the first dealership group website for the Niello Company. Over the next twenty-five years, that simple website grew into a total web presence for their entire operation. Sometimes I might write this in the past-tense because, due to the pandemic, Niello has scaled back considerably on their website spending and went with a solution from dealer.com. Having said that, at the height of the project, I had built for them:
- Fifteen dealership websites to support thirteen different brands
- The administration backend site inside.niello.com
- Content delivery sites for PDF, CSS, JS, accessory catalog photos and more
- Vehicle Inventory and Team Member API
All the Niello websites were managed via the inside.niello.com backend website. Each dealership site was built using HTML template files and a custom content management system (which I also wrote). By using the content manager, the staff at Niello could do their own updates, which saved time and money.
The backend administration features the following services:
- User Access Control
Each user has a profile with authorization privileges. That prevents users from accessing menu options for services that they are not authorized to use. Each user profile also has the capability for a team photo, email and job description. That information is used to create “team” pages for each dealership website. The menu options and modules to handle the features of the website is itself completely configurable via the web interface as well.
- The Content Manager
- Vehicle Inventory Imports
When the first dealership websites were launched, inventory was entered manually. As the company grew, vAuto was hired to manage their inventory and export it to an FTP directory on the Niello server. I wrote a process that ran each hour during business hours. It picked up the data files and updated the inventory accordingly, providing a report to management of the changes. All the options for imports are configurable via the web interface.
- Vehicle Inventory Management
To support management of vehicle inventory, I wrote a tool that let authorized users update vehicle details as needed, or to move vehicles between dealerships. Due to the nature of the car business, vehicles that were sold are retained for a year and can be restored to live inventory as needed.
- Vehicle Photo Management
At first, Niello had employees that took vehicles photos and uploaded them either through the Vehicle Inventory Management tool or via an FTP site that I set up. For the FTP option, I wrote a process that can be triggered by someone to walk the inventory and match vehicle photos to inventory based on the stock number and sequence embedded in the filename. Eventually Niello hired an outside company to take all the photos. But they still used the FTP upload option extensively. By the way, to manage storage requirements, all vehicle photos were stored using Amazon Web Services S3 service.
- Vehicle Inventory Exports
Niello contracts with many advertising partners like cars.com. To get inventory to those ad, there is an inventory export tool with hourly controls. Exports are completely configurable via the web interface.
- Accessory Catalog Management
Catalog items have their own management module. It supports merchandise with color, size, options and extras. For dealerships, there is also an area to pick up and process customer orders.
- Audit Trail Reports
Everything that gets added, updated or deleted is logged. Vehicle inventory exports are also logged. The backend includes a reporting system that allows administrators to go back and review anything that happened.
- IT Requests/Trouble Tickets
To help the IT department, a trouble ticket system was built on top of the backend admin system.
- Events and Slideshow MaintenanceThe Niello Company does a lot of community events. Frequently, publicity photos are taken. A tool was created to organize those photos and make them available for display on the dealership websites. Additionally, the same tool is used to manage the slides for the dealership homepage slideshows.
- Parts and Service Payments
For the convenience of customers, a feature was added to the dealership websites to permit customers to pay for their parts or service orders in advance of arriving at the dealership. A tool was built to facilitate and manage those payments.
Website availability is an issue that no one talks about until the website goes down. High availability was an issue that I addressed quite successfully with the Niello websites. The server architecture that I designed looks like this: First off, I use a DNS service called DNSmadeeasy.com. It’s a highly distributed service that’s enterprise-class. Their service features DNS fail-over. How that works is that you set a timer by which a website is polled. If that website stops responding, the DNS for the domain is changed to another IP address, which is another server.
So I leveraged this feature in the following way. I lease servers from Digital Ocean. The primary Niello server is on the west coast in their Bay Area data center. The backup server is on the east coast in their New York data center. Instead of using a local database server, I have a database cluster also in the Bay Area data center which replicates to a read-only copy of the Niello database in the New York data center. The website software can sense whether it is being sourced from either location. If it’s the west coast, then read/write operations proceed as normal. If it’s the east coast, then it’s read-only. So if there’s ever any downtime on the west coast, the east coast picks up the traffic and keeps the websites online. It has worked very well and has only ever been needed once or twice when it did it’s job as built.
Late in 1993 I was working as a consultant for the California State Senate assigned to the demographics unit of the Senate Office of Research. The job itself was database management. Not exciting but it paid the bills. We were using VAX/VMS workstations at the time for our work. As part of a software upgrade, we received copies of Mosaic, the original web browser. While crude, I found it thrilling. I felt that the World Wide Web had tremendous potential. I wanted in on it.
It just happened that I owned a VAX workstation that was currently at my house. I purchased an ISDN network connection for it. With help from a friend, we set up website hosting software. And with that, I was on the Internet!
The next step was more difficult. As I said before, websites were still in a very crude stage. Hardly anybody had an Internet connection. So, in a world where people didn’t know what a modem did, it was a tough sell. My plan was to target tourism locations. Visitors from places far away would benefit from information posted by local attractions. I zeroed in on Old Sacramento. Walking around there I found the president of the merchants association, who was also the owner of a rare and collectable bookstore. He himself was already on the web via AOL. My pitch hit accepting ears. We joined together in a partnership and put many of the businesses in Old Sacramento (the State Railroad Museum, the Delta King Hotel, the Firehouse Restaurant and many others) online for the first time. I also built a website for Old Sacramento and built backend administrative tools for the marketing staff to post news and announcements.
As time we on, we eventually experienced a lot of growth as people began to realize the utility of the Internet. At first I beefed up my network connection to my house. However, as I began to reach maximum bandwidth as well as run out of disk space, I knew I had to expand. Still hosting using OpenVMS, I started buying workstations built by Digital Equipment Corporation with the Alpha processor. Older models could be had for cheap on eBay and fitted with inexpensive IDE hard drives. I found a co-location provider that had an ancillary datacenter in the second story over a dentist’s office(!). Soon I had a dozen servers hosting websites.
Funny story: at one point we moved our office to a location where we had a permanent network connection. I placed a couple of workstation servers in a rack at the office. Then one day, one of the servers started to fail. I figured out that the issue was the inexpensive Maxtor drive that the server was using. If I shut the server down and allowed it to cool, it would boot up and all was well. But after a while, the hard drive would get hot and the server would freeze. My solution? I took a replacement drive (I always had spares) and put it in external enclosure. I shut the server down and allowed it to cool. Then I booted the machine with the cover off. I started a drive-to-drive copy of the bad drive to the new one. To keep the drive cool, I had a six-pack of cold beers with me. I put a beer on top of the Maxtor drive until it started to get warm. When it did, I swapped it out for another cold one. I got the copy done before I ran out of beers. I shut everything down, replaced the drive with the new one, and we were back in business.
As time went by, though, I reached the limits of software development for the web using OpenVMS. I was also getting pressure to move our equipment to a more traditional datacenter from the provider. So we purchased our first Linux server and I started programming in PHP. Eventually we upgraded to a group of Dell 1U servers in a professional datacenter with backup power and fire suppression. That lasted for a new years but eventually we converted to renting all our equipment from providers like Digital Ocean.
Video Products Distributors
In the early 1980’s, I worked for a company in Huntington Beach called California Systems Associates. It was a computer consulting company with half a dozen guys. However, it was not well run. We got our paychecks every two weeks and the guys would often dash downstairs (our office was on the second story over the bank) and cash them immediately. There was actual days were CSA ran out of money in the account!
One of CSA’s big clients was a video tape wholesaler in Sacramento called Video Products Distributors. Eventually CSA folded. And when it did, they hired myself and two other programmers and paid to relocate us to Sacramento. I went along because living in Sacramento was cheaper than Orange County and, why not? I had no real ties to L.A. and could always come back if it didn’t work out.
About six months after I moved, there was a power struggle within the company. The people running the company wanted to purchase the business from the man who owned it. Except he didn’t want to sell. So management staged a walkout. And the owner stepped in and started running the day-to-day operations. It was very weird and uncomfortable because the owner brought in a lawyer to interrogate all the employees to determine what they knew, who they were in contact with and where their loyalties were.
So while this whole business went down, not much work was getting done. Which was unfortunate because the company had just bought a shiny new VAX/VMS computing cluster. At the time, all the operations were running on a pair of PDP-11/70s running RSTS/E. (I had written a handy program in assembly language that allowed a connection between the two systems via a terminal line – a sort of crude networking capability.) The VMS system was installed in the computer room next to the PDPs. There was a wall of orange binders that held all the VAX/VMS manuals that filled an entire wall of bookshelves. Since I was very interested in knowing what VMS did, I did what anybody in the situation might do. I read the entire docset. It took me several weeks but I did it.
Eventually the management from VPD set up their own video tape wholesaling business called Independent Video. I left VPD and worked there for a couple of years. My VAX/VMS knowledge was very useful. We struggled because the owner of VPD poisoned relationships with the video producers. In the end, though, it was all moot. The video makers dropped their video tape prices from $80 a tape to $20 and went direct to consumer, putting all of us out of business.
When I lived in Santa Monica I worked as an employee at the Paper Mate division of Gillette Corporation. It was an amazing place. The workplace consisted of two large buildings, each a city block in length with a parking lot down the center. On the southern side was all worldwide manufacturing of all Paper Mate pens. On the north side was warehouse storage of parts and finished product. In the manufacturing building, there was countless specialized machines that performed a single operation in the overall process of making pens.
One of the tasks I was asked to perform was to work with manager in charge of ball point assembly. There were dozens of machines that took jars of ball points and pressed them into the triangular tips for pens. The floor the shop was a noisy, furiously paced place. Each shift produced a million completed pen tip assemblies. Using production data, I was able to write a spreadsheet program (before there was spreadsheets) that was used to predict when a machine was close to failure so it could taken offline and refurbished.
Another one of the things that I did late in my tenure at Paper Mate was to write a complete payroll system. That was one of the most difficult things that I had ever done in my life.
Lastly, another of my accomplishments was what I did with TECO. When I first arrived at Paper Mate, they had a PDP-11/70 computer running RSTS/E. There was two programmers per office and they shared a single terminal! It didn’t take long to prove that I many times faster a programmer than any of the other codes there. I would up with my own terminal. However, the operations manager hated that I used the TECO text editor because it consumed so many resources. Fortunately, a friend of mine pointed out that the KED editor from RT-11 ran perfectly in the host run-time environment of RSTS/E. But I didn’t know the keypad by heart and it slowed by productivity considerably. So my solution was to write a new keypad editor based on TECO that emulated KED. It turned out to be a lot more efficient that the normal TECO visual editor so I used it for quite a while until I moved to VAX/VMS and EDT.
San Bernardino Valley College
Valley College was the place where I got into programming in the first place. When I first started there, I had just graduated from high school as a math major. I realized that, while I was good at math, that into itself was not a career path. But I wasn’t sure what I wanted to do. So I allowed a counselor to give me a basket of introductory classes. One of those classes was Fortran programming.
The computer science department had a big lab area with an IBM 1620 in the center of the room. It was a machine from the 1960’s. There was card punches, a couple of hard drives, a printer, an IBM selectic typewriter as the console and, of course, a big system box with the CPU and memory in it. It was large and imposing. I started writing programs using the punched cards. It was slow going, difficult and I wasn’t good at it. What I did notice was a lot of computer terminals all around the perimeter of the room. There were lots of people using them and, unlike me, they were having a lot of fun.
It wasn’t long before I had talked with a lab assistant and learned how to get online with one of the terminals. It turned out to be connected to a timeshare computer system at Loma Linda University. After a few weeks of experimenting with Basic, the light bulb came on and I got it. I finished my classes for that semester and from there forward, took nothing but computer science classes. I really liked programming, a lot.
Eventually I completed the entire catalog of classes offered by the CS department. I did a little checking and realized that, if I took some additional core classes, I would have enough credits to qualify for my two-year degree. Of course, this would have taken me three years; but who’s counting? Anyway, one afternoon I was at the computer science lab (where I always was) when the head of the department came in with another guy. Turns out the other guy was the business manager of the local newspaper, the Sand Bernardino Sun-Telegram. By then, Valley College had replaced the IBM 1620 with a PHP-11/45. The Sun had a PHP-11/45 that they were going to convert from DOS-11 to RSTS/E. He came to the college looking for their best student. That student was me. We went into another classroom where this all was explained to me. I was offered a job on the spot, which I accepted. I have lead a blessed life.