A Brief History Of LaSalle Software

A Brief History Of LaSalle Software

category: main

The history of LaSalle Software comes down to the fact that I needed a turn-key web application with which to start my projects.

I decided to specialize in the superb Laravel Framework. This very popular framework provides the building blocks for writing custom web applications. It is the foundation for bespoke app development.

The problem is that it is the foundation for custom web app development! When it came time to do a project, I had to get my custom app to a point where I could start my "real" development -- the stuff I actually wanted to do. My "foundation" did not provide the features I needed, just the ability to write these features!

I never cook a recipe the same way twice, and I never put together my base project the same way twice. When I had to go back to update my projects, I had to hand craft each update. It did not take many updates to see that this was not the way to go.

I also made a huge mistake in those early days when I started with Laravel: I created one big app. I downloaded the Laravel app from GitHub and then edited it directly. Ooooh, very bad! I learned that it is better to leave the actual app alone as much as possible. Instead, do all the custom programming in separate packages. Getting big chunks of related code into a package really helps with organization. There was a point where I started to worry about making changes to the "one big app", lest I crash the app. I confess, there was a point where I began to fear refactoring my own code because I knew I would affect something else. I was starting to reverse engineer my own handiwork just to fix problems I caused with my own refactoring. Then, when Laravel itself came out with a new version, I would fear that update as much as I feared my own refactoring. Terrible, eh!

There was also the problem of Laravel not coming with an admin back-end. There was no built-in blog either. Essentially, I needed a base web app for my projects. With a blog. With an admin login. Among other things. And after searching and looking, I'd have to build my own base web app myself.

I very much hoped that the third party admin packages that are out there would be easy to use. Well, these third party packages became an adventure unto themselves. Ultimately, what I did was take an HTML/CSS admin theme, adapt it to Laravel's blade templating, and then create an entire admin package. What grew from there was what I originally called "LaSalle CMS" (content management system), but what I now lovingly call "LaSalle Software Version One". The GitHub repo is still up at https://github.com/lasallecms.

It shocked me how involved the whole thing really was to put together. I built a lot of stuff into the admin. Such as lots of custom field handling. But, it all really worked! And all that extra stuff that I had built in made the back-end admin so nice to use.

Now, one thing that bothered me is -- another confession -- is that I did not have automated tests for version one. I wanted tests. My code was also rough around the edges. Who doesn't look back on their code and want to change things? Long story short, I thought I would be able to take existing code, massage it, and create a nice version two.

Well, what ended up happening is that I started from scratch. Most of my version one code never made it to version two. And the scope of version two exploded.

Something new that I wanted was the ability to have multiple front-end domains, administered by a single common back-end administrative domain. Boy, did this end up being a project unto itself. It did not help that I had no idea how to go about doing this. There were many times it felt like I was back at school studying away. The answer: json web tokens (JWT) in conjunction with the OAuth specification.

The automated software testing was a journey too. I went from never-doing-it to writing my own Dusk helpers and phpunit helpers.

Laravel's Dusk is a classic case of combining the power of creation with an intense need. The existing end-to-end browser testing facilities were proving inadequate, so the Laravel project wrote their own browser test facility. It is incredibly clever, and geared specficially for the Laravel Framework. So you can imagine my excitement when it came out. And released as FOSS!

With Dusk, I go through my admin pages just as someone would in their browser, automatically, and make sure that the end result is what it should be. It's fabulous to do a change, then run Dusk, and see what happens. Dusk does have its own personality, and I spent a great deal of time with Dusk as a result, but I absolutely sleep better at night because of the effort.

Laravel's Nova came out after I started version two. I dropped all my other ideas for an admin, and dived into Nova. Despite it being a commercial package. Meaning that anyone using my software would be forced to buy it. The payoff is that it is a creation of the Laravel Project, so it works well with the Laravel Framework, and it will be around for a while. One day I will do a review of Nova!

Nova was another project-in-a-project. It was a major investment of time. I am especially happy with its coupling with the Framework's "policies" for authorization. The Dusk tests play well.

Well, it took rather forever to get LaSalle Software Version Two done. And once I had achieved its first release as "two point oh", I then went through an exercise just to smooth out the installation, culminating in the creation of rather involved (Artisan) command line scripts. Once this was done, I created my back-end domain and my two front-end domains for myself. And here I am!

One of the most exciting things that have come up is the new Laravel Vapor. Vapor is, in my opinion, a breakthrough technology for Laravel based web apps. Having achieved front-end and back-end apps with LaSalle Software, there is a potential that my Software will work especially well with Vapor, opening up opportunities never before available. I will be turning my attention to Vapor very shortly.