Fred's Blog

Fred and Loathing on The Internet

Welcome to the public web log of Fred Lambuth



I am writing this from the flask shell that is provided by one of the underlying parts to the flask package. I got a little bit of familiarity with it as a seperate entity from flask when it got confused by an init file I forgot I left for the spotipy work. I hope to come up with a better way to...



Since the blog isn't exactly the point of this website, I think I will write a very sparse script on the PROD server that pulls up the flask shell, imports the blog_post model, and accepts a tuple of strings for the post title and contents. Anyways, deployment was rough and yet to finish. The...



I hope the tone of this post comes as more calm then the previous two. What makes this one different than prior blog reports about this very web site is the confidence in knowing they will be easily displayed at my domain name without any worry about something breaking. This website is...



I suppose this does not have to be about the absolute minutia of what tech problems I had since the last time I wrote a blog post. There were very few development troubles getting my next feature installed here. Well I suppose there is, but I'll save it for the LinkedIn post that talks about the...



I have been reading another space opera novel concurrently with Consider Phlebas. The other is a paperback copy of The Weapon Smiths by A. E. Van Vogt. I am only fifty of the two-hundred fifty pages of the entire book. So far it is a leaner narration of the 'space' action, along with packing in...



Latest update brings a color coding system to the artist catalog section. I had that going on in the previous Django iteration of my website, but this time it is not limited to the default colors of the Bootstrap system. Now I know how to properly lay down some CSS style. Somewhat. I still can...



Yeah, there’s an update. I fixed the dashboard landing page so that the third Plotly Dash app is shown. The CSS is ugly everywhere and definitely not consistent. I suppose I should work on that. Today’s book talk is a boring tech one. I had been reading a very old (80s I think) dry software...



Version numbering is not something I have considered at all. At least, not for marking any updates smaller than the big huge changes. This would be the fourth or so update since I moved the framework over to Flask. Let us call this one version 3.1.3. The Artist Listening History dashboard now...



The idea of using an actual database server to handle my app, rather than the database-in-a-file approach that comes with SQLite, came to me when I realized a lot of the changes I want to make to my website would be done on the data side. Lots of SQL. ALTER TABLE is not robust at all with...



I had not gotten to making a new database to allow the blog table to have a BLOB type column. The idea of making a complete overhaul to the data architecture breezed into my thoughts when I thought about how the fixes I want to make will not be usable if I were to do that. And I do. I have read...



The latest update is cursory progress. Once I rebuild the database structure my app should be using, these fixes I put in will be erased. They are there to get the HTML to display what I want, but there are several cases where this functionality will be broken. I thought about making some more...



The blog index will now be contained into pages with five posts per page. Those Digital Ocean tutorials are just wonderful. Most of the progress I make on this Flask site is built on the code blocks I copy from there, grafted together from disparate tutorials. The last one was about pagination....



This might be the most minor update to report in this blog post series. I had made several back and forth changes with the CSS/HTML. Often I am guilty of thinking ‘more is more’ with visual design. My Django site was clear evidence of that urge. Since I had made the switch to Flask, along with a...



I told myself I would not publish a blog post unless I have an update to push to the website’s codebase. That rule has proved onerous when all my planned changes require hours of coding to take effect. The shortcut I have found to meet this change rule is to tweak something with the CSS. I’ve...



There are no published links on my site, but appending /stats to the homepage’s URL will show the barest of HTML I cobbled together to start a feature I want to show me my recent data, other than the top track and artist I show on the homepage. The steps are not that time consuming, but they do...



I have yet to make some HTML that points to the /stats section of my page. Nevertheless, it has been updated. I think I have hit my over-the-hump point with using Bootstrap to layout the HTML/CSS in my site. The grid system it uses to manage rows and columns sounds remarkable like the dashboard...



That stats page with no link is now linked in that green Spotify button in the top right (for PC) or below the blog post (phone/tablets). Maybe I’ll add my official Spotify account profile page to the contact section.

I have not read that much since the last blog post, so there is not...



That rule I conjured up about limiting blog posts to occasions when I have updates on the website to report will likely lapse. I’ve been reading books, watching shows at the Paper Tiger, and playing video games (oh yeah, video games are now grist for the review mill) that have yet to be...



You will have to take my word for it, but there were a few changes made to the codebase of this website. It’s all back-end work that has yet to have any HTML views, but they are there in the repo. I think I might never make that big data overhaul down to the SQL/database level. The flaws there...



There is definitely no noticeable update to report on the website. In the time since my last blog post my primary disk drive on my PC had failed. It had the Linux VM I keep as my development environment. Getting all things back to working order was remarkably easy. The only thing I have yet to...



There was a bit of back and forth effort on updating this website. I did make a new database table to hold the blog entries, with a BLOB type column to hold a photo to go with each post. However, getting Flask to display this photo without actually writing the image to disk was way more effort...



The index view of my blog posts now has a thumbnail of the photo that got randomly attached to its index number attached to each blog entry. I thought my css style sheet would make sure they do not overlap, but when I see how it looks on a vertically aligned phone, I see that is wrong. I’m...



In my estimation, the hallmark of a genuine intellectual breakthrough is the temporary self directed anger. “Why didn’t I grasp this before? This is actually so simple!” I had one of those today.

My update process is somewhat impulsive. Yesterday I failed at getting sqlalchemy-flask...



Update for this post is a CSS paint job change. What makes it juicier than being a mere superficial retouching update is that all the CSS changes were made at the base.html sheet that all my website pages inherit their templating from. That means I no longer change any individual pages. Instead...



Today’s update was brought forth from the sticky situation my software architecture decisions have left me. In theory my data models, python views, and HTML templates should be made to follow one another. I developed each of those with considerations somewhat independent of each other, so...



Today’s update is brought to you by the very, very, declarative rhetoric of SQLAlchemy. I went along with Flask bringing in SQLAlchemy because I heard good things about it. I wanted to sink my teeth deeper into ORM, especially on the model creation side. It would be lying if I said I have no...



The big weekend update was the product of impulsive coding. I did not have any clear objective. What I did have was forty ounces of hot coffee brewed, a few hours with my battlestation, and enough zen leftover from work to put in some possibly difficult work. What came out was some ugly...



There has been rapid development over the past few days. Fortune favored me with some coding situations that were rather straightforward in their approach. So straightforward that I hammered through any problem rather than taking a step out of my coding brain tunnels to think through the changes...



That big data overhaul I allude to here and there- mostly in reports of my inaction - has got to happen. It will happen. I’m starting right now. I’m tired of trying to hunt down all the sloppy fixes I made that pop up whenever I try to improve something somewhat unrelated. My logic and data...



You know what? No updates. Not one. I’ve been busy. The day job has been heavy on the coding each day, so there is not much gas left in the tank when I sign off for the day. I suppose I could clean up some of the CSS by getting rid of all the per-element styling and put them into a base...


Database.xlsx

2023-Jun-08

There has been work done on the complete codebase rewrite. Down to the data model, mind you! I’m saving that stuff to a different git repository. So far what I have are some very, very sparse SQL create table statements. My aim is for each table to only have as few columns as possible with the...



The fidgeting I've done with the data model over in SQL felt dreary. There were not any big blasts of inspiration to improve when I poked around my prior work. There could be some minor gains in efficiency to be made by making sure I do not have any redundant information between my tables. I do...



Lightweight changes on today’s update. Fixed the legend order in the 24 hr view chart so that the colors match their order. There is a bunch of code cleanup that has nothing tangible to show on a HTML page I serve, so you’ll just have to take my word for it. Especially on my module where I make...



Every now and then while I’m on the clock and feel the specter of Imposter Syndrome haunting over my workflow, I like to check in at my own website. Seeing my QA tested website put out some new interesting information every day (or even few minutes) served over the whole world fucking wide web...



Viernes Gigante! A great big sack of updates to gush about. It’s a deep list, not a wide one. Everything new, except for some CSS touch ups, is in the /stats section of my URL mapping. That mapping has been there for a while but I did not feel I had the web dev chops to harness that interface...



Blimey! This is a quick wraparound! I am delaying my git operations by a few hours so this blog would publish one calendar day after the last one- which as of the time of this writing- was three or so hours ago. I could have lumped together the updates that come with this blog_post+git pull into...



In regards to the calendar stuff I reported in my previous blog post(s), don’t look too hard at the days of the week labels. I did not even consider ordering those things together. I have some ideas that could handle it without breaking the calendar template and URL year/month/day schema mapping...



A very meager update. I’m not even gonna mention them. You can just check the damn git history if you’re frothing at the mouth to hear just what little bit changed.

I listen to my podcasts through Spotify, which do not have a rating system. I don’t exactly listen to the podcast Our Fake...



To be completely upfront dear readers, the updates I bring forth today are negative ones. This is the first official reduction in scale to the great big experiment that is fredlambuth.com. I tried to figure out how to get the calendar templating on the stats page to have the day numbers match...



That day of the week:calendar day problem within my template was not difficult to comprehend after a good night’s sleep. I found several avenues to connect the day of the week to the calendar day. Several because each gawd damn time I implemented them I would get a HTML problem. Every trick I...



Updates for today are a little ugly. Instead of keeping what I got, I just push every change that actually displays the HTML I want to see. If there is extra, well that is a tolerable mitigating fact to the standards here at fredlambuth.com. I learned how to make a Jinja template that can be...



Yowza! A flurry of updates to report! I’ve been away from my keyboard for a spell. My tolerance for doing two steps forward/one step back development was at its maximum capacity. Corrections were made and novel content was pioneered. What’s corrected is the alpha headings in between the artist...



One of the updates today is an unsatisfying fix. The pagination links at the bottom of the /blog section sometimes had a None printed out in the 3 or 6 spot. It would link to /blog with no /number appended. That problem has been circumvented by setting my pagination size to 8 posts per page. I...



This blog post comes with no updates to the codebase. At least not to this one. I’ve more or less decided to throw everything I’ve got into mastering Apache Spark. This blog post was spurred by my breakthrough in setting up a Spark cluster on a linux VM in local mode. I then downloaded a jar...



Updates involved some fixes to my hacky hard-coded URL paths to the Spotify web player. Some of the links that go to /tracks/ fail because Spotify sometimes appends another code after the track ID; to distinguish different recordings of the same song name. My links fail because I do not use that...



Allegations about involving Spark in any way to this project have been greatly exaggerated. Even though I sorta worry that using Pandas right before I take a Spark exam is going to cloud my thoughts about code syntax. I sorta think the big thing to remember is explicitly having to select from a...



The modules I use to make the Plotly charts that get displayed with Plotly-Dash are far too bloated. They have been that way for a while yet I keep piling on new stuff, loaded with redundancies. My update development time is at least fifteen percent scrolling through superfluous code. I remember...



Aluh akbar! My nerves have calmed. I passed my Spark Developer Associate Certification exam from Databricks. I was well prepared for it yet I was incensed with apprehension. Nothing some careful breathing couldn’t handle, yet my nerves were definitely in need of assuaging. It felt like the...



Hey dear blog readers! Remember way back when this domain name pointed to a Django app with no blog section? I thought I ported everything over to Flask in the big frontend migration at the beginning of the year. A full HTML page Plotly dashboard about the name drops throughout the seasons of...



Huzzah! A minor one. I have not rolled out a big new flashy dashboard exploring all the text mining data I have procured by scraping fan typed transcripts of the TV shows Succession and Mad Men. What I did was take out the good parts of the Mad Men work I did about a year ago for my site in its...



Nothing new in this codebase. I was hoping to explore the Succession data a little more and flesh out a first draft of a combined HTML/Plotly-Dash page with some interactivity. I chose a more modest goal today because I am only working at half-strength. American Airlines stranded me in Charlotte...



As promised, I beefed up that static line plot I had been serving at /dash/succession into a hi-falootin’ interactive dashboard, with a seasoning of KPIs above the line plot indicating how heavy the swear word usage was per season. I cleaned the three actual manuscripts with parts assigned into...



Tech debt can affect you even if your app is developed, tested, and deployed by just one guy! I hope stating that precaution will soften the blow I’m about to give you dear fredlambuth.com blog readers. There’s an update, but it broke some functionality. I know you’ll be able to handle this, and...



Those very recently posted notices about large sweeping changes to the CSS are happening right away. I grabbed a sample CSS package for a personal website, plopped it into my jinja templating, and then filled in the fields with my Flask app’s variables. Voila, un nouvel homepage! Sure looks...



Today’s update brings back the sidebar that used to be on the homepage. If you wanna see what I’ve been listening to recently, I’ve repositioned that sidebar to a header on the /about_me section. The about me has also been beefed up with a whole lot of copy about the app itself and a very brief...



We have quite a bit of templating changes for the folks at home checking up on the website. It’s all in the /about_me section if you care to look. I repurposed the styling of the unused sections of that CSS/JS package I’ve been cannibalizing into some dynamic graphic stuff. I’ve yet to get the...



The updates are fast and furious these past few days. They’ve all been mostly templating work, which is the easiest section to test. Well, except for testing to see how they will look on a vertically aligned display, like a phone. When my site’s pages do look good on a phone it is an accident....



The only update this time is a fix to the links generated for each artist at the bottom of /dash/art_cat/. Matching the variables between my regular Flask work with the Plotly-Dash section has been my Gordian Knot in my codebase. Well… one of many. I have an idea to make a shell outer Flask app...



A number of updates to talk about today. The big one involves my first successful stab at using the variables in my Flask views in the plotly-dash apps. So at the moment you can get a dashboard view of any artist found in my app’s artist catalog if you go over to /dash/art_search/ and then add...



After fiddling with CSS for a while, I’ve come to the suspicion that it is not as screwy as I had thought it to be. Well, not the styling that doesn’t involve spatial relationship of one div to another. I can use the reliable 1,2, or 3 columns in each row grid system provided by Bootstrap. Every...



Huzzah! Big splashy visual updates! If you care to take a gander at the pull down menu for ‘Spotify’ you will find some web pages that use Javascript to handle dynamic design changes. A little bit of web 2.0! Let’s party like it’s 2007! I did give raw javascript in my templates a shot. It kept...



Cascades of updates these days. I’ve gotten a taste for CSS so I’m doing what I can to make my website look like something somebody would pay for. I don’t necessarily like doing web design, but I do not want to pay anybody to do the job. I suppose I got that from my old man. If he could fix it...



What we have here is one helluva update to report in this blog post’s opening paragraph. Wander over to /dash/global and you will witness my marvels! A snazzy looking live dashboard! With filtering done by mouse click! If that isn’t wondrous, then I don’t know what is. That’s the new part for...



There is a third Plotly figure in the /dash/global dashboard. It is somewhat the result of a happy accident. I could not figure out how to strech the choropleth map horizontally to make the default size more clickable. To fill out the dead space I decided upon some sort of third figure. I am...



Our update today is another bittersweet encounter with SQL-Alchemy, the Object Relational Modeling framework that is somehow attached to Flask. It has been ten months since I made any architecture decisions about using Flask. I usually go with the default option; the one used in the tutorials. I...



There were some updates in the past few days. I do not recall all their specifics, but I would wager that almost all changes made since the blog post are all cosmetic. Oh wait! I did add a section that does a crude job of hosting the image files that are some recent comic strips I made. Although...



The git commit that marks this blog post belongs to another repository. The new back-end is done! That part actually has no model changes. It did give me the chance to make some decisions about how the work is going to be divided into modules. I think I’ll have a Spotify API request library of...



There was a bit of waffling back and forth between choosing a whole new module to handle the genre assignment functions. The current version of my app import a module with so many unused functionality. Had they not been there I would have made the decision much quicker to rethink the entire...



The production branch has some updates! Look over at the about_me section and you’ll see a slightly more manicured look. I peppered in a few photos that match up with the highlights in the ‘about_me’ story. Nothing super fancy to report. Some members of the development team have been...



A content only update. New comic in /comics. Huzzah!

Let’s get down to brass tacks. Reviews, and the thinly veiled windows into my tastes they are.

On the spooky season theme, we have the 1970s sci-fi Hollywood production of The Omega Man, very prominently starring a glistening...



A backend only update to report. The multi-genre data model uses all three genres to assign a master_genre derived from polling all the possible genres each artist possesses. Dealing with the nulls was a pain. The pain of dealing with nulls in data bending cannot be understated. They’re the...



There is a pile up of topics worth reviewing on the fredlambuth.com/blog. The reason for the pile-up is a slowdown on the commits toward reconfiguring the backend to this site, at least the Spotify collection functions and data model. After a few days of breakneck speed refactoring the API calls...



The launch of the rebuilt fredlambuth.com is not going to be happening anytime soon. Definitely not in the few weeks left in this calendar year. There is progress being made. The new backend is more or less working, so there will be a little bit of history using the new data model when the...



The reporting on updates will no longer be the impetus for blog posts. The update cycle and the database that holds my blog posts are no longer connected. I suppose once I have a very distinct front and back end defined, I can go back to writing blog posts whenever I make front-end only updates....



Even though there is now an official decoupling between this blog and the rate of updates that I put into the repository it is sourced from, I still find myself not exactly jumping on to the keyboard to start writing down my thoughts about whatever I just saw on TV. While I am watching, or...



The non-metric peculiarities of our time-date system has been a puzzling thorn in my data practitioner career. Several times I think I have come up with work-arounds to the common irregularities of how we keep time. Much like the Imperial system of weights and measures that the USA was foisted...



There is an actual update for the web app currently being served at fredlambuth.com. A very minor one, and that brings up more questions than answers. I’ve doubled up the decorators of a few ‘views’ that I often visit by manually typing in the URL. The extra decorator is the answer I came up...



This blog comes hot off the git commit presses. I had been wrestling with a URL >> template issue for more than I would have liked. The lessons learned tasted somewhat anticlimactic. Turns out flask cannot handle two routes using the same namespace. I had to make an explicit directory prefix so...



The modularization of the new version to Fredlambuth.com is reporting success in reducing functionality to the most replaceable unit. It has made mixing and matching between Flask views and Jinja2 templates a possibility. The old version has a much more fragile linking between those, requiring a...



Although the process of building Flask views of different granularity has been quick in pace because I can attach styled templates to them, there is a lot of holdup when it comes time to figuring out where to place the functionality I develop into my codebase. I am often worried I am making...



A somewhat shocking reminder of the development time spent on this big refactoring project occurred to me recently. Work had moved over to the ‘track_catalog’ table in the Sqlite3 database, putting the focus on the back end. No back-end jobs had been written to handle the update of new tracks to...