Bouncing Between Languages at a Fast Pace
The past two weeks I've been forced to bounce between a bunch of different languages and environments. When I sit here and quantify it, it gives me pause. In the last two weeks alone—python, jekyll, php 5 & 7, mySQL, Liquid, JS, HTML,XML, IMSCC, SCSS, all on systems. Canvas LMS, Blackboard LMS, mySQL Db, wordpress...You name it. Jeez.
So at my day job, we are transitioning between LMS systems, and it has been a challenge getting the courses migrated. We also have to are going through a redesign process to meet the needs of the new system. We also manage an external library of reusable learning objects using the Jekyll headless CMS on a static web server. Those need to all be re-rendered as well.
Ideally we would have a Jekyll page call multiple layouts. One layout for normal web based mobile and desktop use. The other for inclusion in the canvas LMS. WE use Canvas Pages with embedded iFrames to access our learning objects. Understandably those embeds have different user interface needs than our normal web browsing experience.
The Easy Way Out…
The low bar method of getting what want, would be to generate two "post" html files. One would call the default template and render a normal index.ntml file. The other would call an "learning object" (LO) template that is purpose built to fit inside the pages we share to Canvas Commons.
I like to challenge myself, especially when it means saving time. So I would like one single data file that feeds both templates. If you read the Jekyll documentation you will find that this is possible. I could use a liquid tag called relative_include. This allows you to include an external file at render time. Simple right. I should be able to rename our existing slide set to data.html. Make two posts that each call separate layout templates, and then just insert the include with the path to the data file.
It should work, but it doesn't.
It's an actual bug on the pull request list.
Just my luck.
There is a Point We All Reach…
When I'm working on a project, and it's steaming along, and I feel great about how things look, and feel, and act, but then I reach this point where I start hating on, then deleting, large chunks of what now looks like crap to my eyes. All crap. I feel that somewhere along the line things slowly creep away from the path that you set yourself in the beginning, and it then gets out of hand, and sometimes you are forced to step back and just start hacking off large parts of cancerous growths that have somehow crept their way into your project.
I am going through that process now. Currently hating everything, and hacking.
I like the design, not the content structure. Not the content. I need to focus what I want to DO.
Python & Beautiful Soup Life Knowledge
I'll keep this short because those of you who understand what I am saying won't need much more explanation. Those who don't care for an explanation will be happy, because this might "just work."
Either way...you should know.
When you're trying to access that sweet sweet innerHTML, and .string doesn't work...just try .get_text().
There are many reasons I can tell you WHY this might work, but I honestly don't have the time to write it up.
Just try it, or look it up in the BS4 DOCS
I'll Start with the Dog
Last Saturday I was working a server that I maintain, but that's not the point, the point is that I wasn't with my family last Saturday. Last Saturday my family went to the Riverside Arts Market, affectionately known as RAM, here in Jacksonville. This happens quite often. Especially when the weather is nice. At RAM they have a animal rescue clinic that allows you to walk the dogs around while you hang out.
So when I started to receive pictures of them holding a cute little dog it did not surprise me. This particular dog is a rat terrier named Sadie. Sadie was abandoned by her initial parents because a new baby came into the picture, and they couldn't handle the extra burden. She is just over a year old. When I got that one picture of my wife, Melissa, holding Sadie. This dog is giving her that deep deep eye to eye stare that only dogs can give you. It's like they reach right into your SOUL.
So we fostered a dog. The idea was we could foster Sadie for two weeks to see if she fit in our household. We did have challenges to overcome. Namely Romeo Our 11 year old male black Main Coon that we also a adopted from a rescue clinic. We love Romeo, and if Sadie could get along with him then cool. We could deal with the normal 1 year old puppy stuff like potty training, and the barking when people walked by. What would be the deal breaker is if Sadie couldn't win over Romeo.
A Long Story Made Short
Sadie lasted from Saturday to Tuesday.
We kept Romeo, and Sadie apart completely. Sadie was confined to a separate room while Romeo had the run of the house. We rubbed a cloth on Romeo, and did the same with Sadie. We then put the Sadie cloth in with Romeo, and put the Romeo cloth in with Sadie. Eventually Romeo got curious about what was going on behind the door, and started sitting right next to the door. Almost immediately Sadie went NUTS on the other side of the door. Not just barking, but scratching, and trying to rabidly get through the door. Romeo ended up just running away the first time, and ended up doing that low throated cat growl every other time. Over the next couple of days that situation never improved.
To top this all off, when I picked Sadie up, my arms started itching like crazy. That means I'm allergic. As a Type 1, I don't need any more physiologic stressors in my life. That was the last straw, and why we chose to bring Sadie back to the rescue clinic.
Many Times, Knowing the Language Isn't the Issue.
I am on a team that works on a learning object repository as one of it's duties. We currently have 2076 individual learning objects. We manage all that on a vanilla web server as static pages rendered using Jekyll. We are currently moving all our LU's over to another LMS. So now is my chance to do some much needed house keeping as well as pull current stats and data from the body of content itself. I am using python to do things like pull the title, one graphic, and the representative paragraph from the content. These are the items I need to build the objects within Canvas. The plan is to construct pages within Canvas that contain an iFrame window to our learning units which live on a separate server. That page can then be meta-tagged and distributed, via Canvas Commons, by our library staff.
I wrote the python in a couple hours, but then discovered the extent of my issues with the content. Much of it contained ansi characters mixed with html glyphs and special characters. This is normal for web content that has been built by a team of people. No matter what vetting process you put into place, sometimes things slip through editing.
My point is it doesn't matter what language you use to do such processes. I could have written that in C, PHP, or Python. That doesn't matter. Often the hard part is the environment, the content itself, or the delivery method. Each have their own set of problems that, by there very nature, are complex. You have to know each layer, not just a programming language. That's just syntax, and is considered the easy part.
Things are blinking around here, because I am changing things around. So yeah.
Last night in the mail…I received the ceramic hand crank coffee grinder that I ordered. Why mess with a hand grinder you ask? Well because I am more of an amateur coffee enthusiast rather than a small coffee shop. I just don't need something that big. I chose the Hario brand ceramic burr hand grinder. Mostly because a third party sells an add on part that stabilizes the burr within the grind bowl. This is supposed to give it a more consistent grind, and is supposed to elevate the grinder. All in—it cost me under $50 so I am happy with the purchase.
The jar holds up to 100g of coffee, which is the perfect size for my cold brew need of 110g of course grind.
I chose to use it's maiden voyage to course grind some fresh beans from Sumatra for my cold brew pot. That is brewing as we speak. I told my daughter to pull the cold brew around 1pm today. That would make it a 20 hour brew at a course grind size. If everything goes as planned I should have a nice pot of cold brew waiting for me to taste when I get home from work today.