In a previous post , I mentioned that I had installed Ghost "just because". Which essentially means I can't leave well enough alone. In this case it turned out to be a good decision.
While I did like the flat-file structure of Grav, I was getting annoyed by several minor things, which added up to me deciding to just say "Screw it!", and install Ghost as my CMS of choice. The install of Ghost was a bit trickier, due to my host, but I found a good guide to get me through and within the hour, I had it setup and running. I only had six entries from my Grav install, and I had copied those to a text file previously. So it was a fairly painless process to post them in Ghost and get them tagged as I saw fit. Then I zipped up the theme I was using on my localhost (mnml, with some changes specific to me. Again, I found another how-to to accomplish that), uploaded it, and I'm happy with the result.
So far.
Hopefully, I will leave well enough alone. I'm sure I'll have some small changes here and there I want to fix, but overall, I should be good to go for the most part. Now it's time to get back to learning. Javascript will be my main focus. Or at least, should be. I did just upgrade to Bitwig 3. That's been a lot of fun to play with.
In the quest to learn (insert subject here), it's important to practice a bit every day. At least for me. Some days, however, are quite the challenge for me. I want to get better at Javascript, but I find myself bouncing around topics. Three days ago I was going back through the freecodecamp.org Basic Javascript curriculum and making my way (again) through their tutorials. Yesterday, for some reason, I started watching a React tutorial on Youtube. I keep telling myself I need to learn to walk before running, but my scatterbrained self gets distracted easily. And then some days I don't want to practice coding at all and instead want to play within Logic Pro, or Ableton, or Reason.
Maybe I need to practice focusing on one particular project. Perhaps there's a YouTube video about that... oh, look, "The Office" bloopers!
I've been poking at the site recently, updating the templates and sprucing them up a bit, as it were. Which I find both amusing and annoying; I just can't seem to stop picking at the site, and adding bits and pieces (see the new footer?), when what I want to do is write more content for the blog. I don't want to keep messing with things; for the most part I'm enjoying how the site looks and the layout and ease of navigating. But I just can't leave well enough alone.
I even went so far as to install Ghost on my local machine to start playing with that particular CMS to see if I wanted to install it on my site. Why? Mostly because... why not? I like to tinker and get a feel for something, but one of my bigger shortcomings -- at least in my eyes ( and if you think there are other, bigger ones, please keep it to yourself, thank you very much) -- is my lack of digging deeper and really getting to know how to work with, and learn what it is I'm tinkering with.
I have four different DAWs. FOUR! Who needs four? I just like to poke around and see what's different about each one and dick around with them all. I do that for not only a lot of software, but kind of my life in general. I have several guitars, but can only play passing well. Why several guitars? Because I can! I figure out what I need to do to get what I want accomplished, and then either get bored or am not that excited about learning more about (insert whatever here).
I want to write more, and get better at it. I enjoy writing short stories and want to take a stab at something bigger. What tools does one need to write? Paper and pen at the very basic level. I have horrible handwriting so I would rather type something out. All computers nowadays come with some sort of basic editor preinstalled (TextEdit on Mac for example), and if you need something fancier, Google Docs is free. But I want to write literature. So I need some fancy piece of software designed specifically for someone to write novels with.
At least, that's how I tend to normally think.
Some years back, my wife gave me Scrivener for Christmas, and I was all set to sit down and write The Novel with it. While that hasn't even come close to happening, I have written several smaller pieces, from short stories and poems to journal entries. And recently I purchased an iPad (that's a whole other journal entry waiting to happen), and because I have the iPad, I just needed the iOS version of Scrivener.
Or did I?
I started looking around at other writing apps for iOS. The one that seemed like the one to get was Ulysses, and to be quite frank, the reason I zeroed in on that particular piece of software was because one of the bloggers I follow, a fellow by the name of Matt Gemmell, uses it on his iPad. He had been a Scrivener user and then switched to Ulysses. And I figured if Matt went that route, maybe I should too.
Before I plunked down the cash though, I managed to take a step back and reconsider. I'm not a writer. I'm a dabbler. Or a wannabe, as I stated in my About page. I have perfectly good software in Scrivener. Better than good, in fact. It's consistently rated as one of the best apps specifically aimed at writers. And while I might not know all the ins and outs of it, I am fairly comfortable with it. The end goal, which is writing a story, is still the same. I'm just wanting to use different tools. In this particular case, it's like using Indeed or LinkedIn to find a job - both have plenty of jobs listings, but it's the end goal of find the job one should be concerned with.
And if I'm completely honest here (and after all, isn't that what part of journaling is all about?), there's also an aspect of avoidance. I tell myself I need to get better with the software to write/compose/create, or that I need to checkout all the options because I might miss the best software available, but that's an excuse. Because writing, playing music, photography, whatever it is I'm into currently is hard. It takes discipline, which I lack in droves. It takes commitment, which I'm lacking in as well. As an example, just in writing this entry, I've stopped once already to go play on slither.io. At times, I wonder if it's a medical issue - maybe like a sort of ADD. I do tend to get distracted easily, so it's possible I suppose. I doubt I'll ever go to a doctor to find out for sure though. So I'll try to focus on recognizing when I'm procrastinating and avoiding.
Ulysses is also subscription based. I want to pay for my software once and own it. I hate feeling like the program I'm using will suddenly stop working if I don't want to pay year-after-year. So another positive for Scrivener.
In short, it's time to be appreciative of what I have, and focus on the what I want to accomplish. I'm going to make myself a promise to write something tonight, something aimed at getting my story (be it a novella, novel, short story, or hell, maybe an epic poem, who knows) started.
Now that it appears the website issues are back under control, I can move on with more Javascript practice. Before the snafu with updating the Grav theme I was using, I was working on some pretty basic stuff in Javascript, mainly reversing a string. In the post about it, I detailed using Javascript's built-in functions to accomplish the task. I mentioned that there was a way to also do the same thing using Loops, and that was what I was going to practice with next.
While looking over some of the examples to try and understand things better, I found that in latest version of Javascript -- ES6 -- there's now a for...of statement that loops over "iterable objects". Quite frankly, I wasn't sure what "iterable" meant (I figured it had to do with counting objects), so I looked that up.
Boy, I wish I hadn't.
I did a simple right-click -> lookup on the word "iterable" to see what Apple says the definition is. Their definition came from Wikipedia which says:
In mathematics, an iterable cardinal is a type of large cardinal introduced by Gitman, and Sharpe and Welch, and further studiedby Gitman and Welch. Sharpe and Welch defined a cardinal κ to be iterable if every subset of κ is contained in a weak κ-model M for which there exists an M-ultrafilter on κ which allows for wellfounded iterations by ultrapowers of arbitrary length.
ಠ_ಠ
I'm not a mathematician, and now I know why. That's a bunch of gobbly-gook right there.
But onto trying to figure out what the for...of loop accomplishes and how it works.
At first, the syntax seems fairly straight forward: for (variable of iterable) { statement} But once I combined that with the reverse string example:
function reverse(str) {
let reversed = "";
for (let char of str) {
reversed = char + reversed;
}
return reversed;
}
I started getting confused. At first glance upon looking at the syntax, it seems simple enough: for a variable of the iterable, do something. But looking at the reverse string example, it first sets reversed to an empty string, and in the for...of loop, it does a let char of str. OK, so, let the character of the str parameter we pass as an argument to the reverse function be reversed by adding the char to the reversed variable.
And then return that variable.
I am so confused. I try talking (or, in this case, writing) the logic out-loud in hopes that it'll stick to some part of my brain, but this time, not so much. How is it deciding the reverse the string? This is a big part of why Javascript (and really, programming in general) doesn't make sense to me. There seems to be something going on that a lot of more practiced developers take for granted that I'm just not getting.
I'll keep plugging away and report back later if I have anything of value or makes sense.
Meanwhile maybe I should write about butterflies or something. They're pretty.
Here I was, all excited about getting a new blog underway, with a new CMS to practice with, and of course, I blow it up within a day.
Which was stupid. I'm familiar enough with child-themes, having built a few with Wordpress. But my brain apparently checked out, and I went and heavily modifed the bootstrap-blog theme I was using. And then the next day, Grav notified me of updates that needed to be done. Being a good little web developer (ha), I always try to get updates in as soon as possible. Gotta keep those files up-to-date so the site stays secure, right?
So I updated Grav, as well as the theme, and everything just went to shit, to put it bluntly. It took me the better part of the day to figure what I'd done, and quite frankly, I'm still not sure I'm 100% certain what happened. On top of that, I don't even know why the new page I added -- once I had everything back to looking 90% of how it was -- won't show. It was a simple About page, but if I try to visit it, it just leads to the default home page (which is just my blog listings).
So back to the drawing board. Part of the reason I stopped debugging to write this out is sort of as a test. I want to make sure at least the blog posts show up. I can work on the individual pages seperately, just as long as the blog posts continue.
I'm between projects at work, and there's only so much reddit I can peruse. One of the skills essential for a front end developer nowadays is Javascript and my skills have always been rusty at best. Rather than play on social media or my phone, I'm going to work on becoming more comfortable with Javascript. It's certainly a better use of my time.
There are dozens and dozens of resources out there, both free and paid. I think I'll start with some basics on YouTube and work my way over to freecodecamp. Or maybe vice-versa. Who knows. I'm also going to show what I'm learning here, and present it as if I were teaching you to code. I think that will help my overall learning process.
I'm going to start by trying to solve a question I was asked in an interview some months back, and see if I can work through that: Reverse a string. Let's go!
One of the best sources on finding how to do, well, anything in this world is Google. Doing a search for "Reverse a string in Javascript" returns over 22 million hits. I definitely should be able to find something to answer this question then!
The first site returned talks about using Javascript's built-in functions. Namely, split(), reverse(), and join(). If you read those functions by themselves, they make sense: Split, we're going to split the string, then we'll Reverse their order, and then we'll Join them back together.
The actual function looks like this
function reverseString(string) {
return string.split("").reverse().join("");
}
reverseString("I can learn this!");
Utilizing Chrome's Developer Tools, I used the console, copied that in, and "!siht nrael nac I" was returned. Here's a breakdown of what's happening:
First, we use split() to take the string "I can learn this!" and turn it into an array: i.e., ["I", " ", "c","a","n"," ","l","e",...] Notice that the spaces are included in that split. Next, reverse() takes that new array created by split() and reverses it. ["!", "s", "i", "h", "t", " ", "n", "r", "a", "e", "l", ...] Finally, join() is used to join the letters in the new array back together.
Fairly simple once you break it down. Really, my biggest issue with this apparent mental block about learning Javascript (aside from the fact that I just don't seem to use it enough in everyday work), is the syntax. Parenthesis () vs. Curly braces {}. When to use them, and when to add a closing semi-colon. This really just comes down to practice for me, and hopefully doing something like this blog post on a daily, even weekly basis, will help with that.
There are other ways to reverse strings. That's something that's true a great deal of the time in programming (and in life really); there's always another way to do something. One of those ways is using a For Loop. Because loops are an important part of programming in general, I'm going to tackle that in my next post.
I'm not sure I could tell you how many blogs I've started over the years. I used to blog before it was called blogging, and was manually adding entries to HTML pages. While I might have been doing this for well over 20 years, I've certainly not been doing this consistently. Hopefully this time will be a bit different.
I like to write, when the mood strikes, and having a place to write about whatever I feel like writing about will be nice. As stated on the homepage, there's not really going to be any sort of focus; whatever strikes my fancy I suppose. There'll be talk of tech/geeky stuff, and music as well. Might be some photography plus the occasional photograph. Babbling mostly.
As this is the inaugural post, let me introduce myself. I'm Shad (my initials are SKI, hence the i-am.ski domain), an Arizona native currently living in Northern Virginia. I've lived here with my family for over twenty years now, and man does time fly. I work as a front end developer, but mostly I fix what the back end developers don't want to bother with. Which is mostly OK. I'm your typical suburbanite, with two kids (both grown), a house in the 'burbs, a truck, a motorcycle, and a wife who wishes I was was handier at fixing things. I'm one of those guys who can turn a two hour job into something that lasts all day with two or three trips to Home Depot or the auto parts store.
This website itself is pretty bare bones, and I plan on keeping it that way for the foreseeable future. Hopefully this helps me focus on the content rather than the presentation of said content. But I will give some of the geeky details: As of June of 2019, I'm using Grav to run it, as I a) like playing around with new CMS's and b) didn't feel like I need a database for anything. I'm running it with the Admin plugin to just make things a bit easier. It's running the Bootstrap Blog theme by Ayoze Hernández Díaz.
And that's about it. Like I said, trying to keep it bare bones.
I’ve talked before about lack of motivation and how actually trying to finish a project seems to defeat me every time. I’m in that zone again where I’m feeling like I want to start a new… something…. and I’ve noticed that when I’m getting this way, I start looking at how other people have accomplished things, or the tools they’ve used, and use that “research” as an excuse to not get started. Eventually that feeling of wanting to start something new, or finish something that’s perpetually in progress passes.
In sort, I find ways to defeat myself. I recognize that about myself, I know the key to fixing it is to do like Nike says and “Just Do It”.
Updating here has come pretty much to a standstill, but I’m hoping to remedy that soon. I’ve decided that rather than bemoan the fact that I have too many interests (writing, music, photography, web design, etc…), and then get overwhelmed and not do anything towards being creative, I’m going to instead set aside time for each pursuit. Rather than focus on one, I’m going to dabble in all.
What’ll make this fun/frustrating is that I’m horrible with time management, and I can be seriously lazy. So we’ll see where this gets me. I’ve been thinking about this for the better part of two weeks, so I’m hoping when my 40th birthday rolls around (23rd of December for those keeping track at home and want to buy me something), that I’ll have a basic list of the things I want to accomplish, and a basic schedule of how I’m going to accomplish it.
I think my desire to post here waxes and wanes... but more waning lately than waxing.
Pretty much, life is the same. Work is work, but at least I have a job. I’ve been wrestling off and on (again, more off than actually on) with Drupal in trying to get it to work the way I want it to work with a new site I’m attempting to create. Kids are back in school and seem to be adapting well. The oldest is keeping on top of things, which is good, and the youngest is enjoying middle school and all that entails.
I bought a truck back in August. She’s a 2006 Tacoma Double Cab 4WD Long Bed. I named her Rosie.
I have plans for her, new equipment, new wheels and tires, etc. Naturally those all cost money, which I don’t have enough of at the moment ’cause I just bought a new truck. Vicious circle.
Gail’s off to Ireland this Friday. Assuming she can kick this cough-bug-flu-bronchitis thing she has. Whatever it is. She doesn’t know, doctors don’t know. Hopefully she’ll be OK to travel, ’cause she’ll kick herself if she doesn’t get to go with her ghost hunting group to Ireland to visit the castles and such.
Soccer’s back in season, but I’m not coaching this year. Had originally planned on going back to school, but can’t afford that so now I’m looking at getting a part-time job to get on top of these bills so I can go back. We shall see.
And that’s how my world is turning, in a nutshell. Exciting, no?