I think the end goal that I have in mind for this website — aside from the obviousness of blogging — is to be able to update from wherever I am. As I’ve switched to Jekyll, this isn’t as easy a task to accomplish, as say, something built on Wordpress, or even Grav. Both of those CMS’s have Admin areas that you load up in a browser to compose your pages in. As far as I know there’s no admin plugin available for Jekyll. Not that I’ve looked that hard.
I’m intending to write most my posts on my iPad. I know there are various Markdown editors available, but currently I’m using the iOS version of Scrivener. I’ve setup a project where I’ll write my posts, that is currently synced to Dropbox. Currently I’m using iA Writer, and will hopefully get this to sync with Dropbox, or similar. This isn’t something that’ll be completely fool proof anytime soon. After all, I’m quite the fool and excel and breaking stuff. I’ve also finally uploaded the site to the domain, so I’m not just talking to myself on my local machine. Now I’m talking to myself in the great wide open digital domain.
There are still a few things to button up before I’m completely happy:
Being able to creat a post and seamlessly upload it to i-am.ski
I haven’t tested how images will look yet
Still need to setup RSS Feeds (not that I’m at all popular, but you never know and it’d be nice to have them setup in advance. Besides, once they’re in place, they’re low-maintenance)
Fix the icon in the footer
Get descriptions for each category in place
Code refactoring; I suspect there’s a lot of unused CSS that I could remove
Otherwise, I feel pretty good about the state of the site. Good enough to currently show it to the public at least. The list above can be worked on in my spare time.
I'm not having as much luck as I'd hope getting an iPad-only solution to posting entries here. I can't get my Dropbox to sync after following Tyler Hall's entry. I know it's possible...but maybe not possible with my host, which is currently a VPS on Dreamhost. I'm sure it is... I've just not been smart enough to figure it out as of yet.
Another option which I think I'll explore is utilizing Github Pages, and point the i-am.ski domain there. Assuming I can get it working (Github Pages has built-in support for Jekyll right out of the box), there will be the added benefit of becoming more comfortable with Git. I use Git daily at work, and while I'm not near as gun-shy as I used to be, if anything goes awry and I need to use some other git commands, then I tend to get a bit nervous. Particularly when I end up having merge conflicts, or similar issues.
Otherwise, isolation goes on. Given the time I've been spending in my basement where my home office is, I've been wondering how hard it'd be to add another window. Probably more money than I want to spend on this house.
In one of my previous entries, I mentioned that I have a hard time getting better than proficient at something:
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. So lately I've been trying to focus on just one Digital Audio Workstation (DAW). I've been working with Bitwig, because it's still fairly new (v3.0.3 as of this writing), and somewhere down the road I'd like to be someone other people turn to to learn this software. Then I can brag about how I've been using Bitwig since v1.0. I even have the badge to prove it. A bit childish and maybe narcissistic, sure... but it's the small things.
Like any piece of creative software, whether it be Affinity's Photo or Designer, Scrivener, or Ableton Live (Bitwig's main competitor in the DAW field), they're all easy enough to do something basic up front, but the real power comes from digging deeper, and learning the ins-and-outs of the software. And of course, the more one digs, the more complicated the software can become. Bitwig is no different, so I've been trying to break it down into smaller bits, making the knowledge easier to digest. The smaller bits also help with trying to keep focus, an issue I'm constantly struggling with.
I'm not, however, taking a very practical approach. It would make sense to start at a high level, learning the basic interface to an expert level. I know the basics well enough to feel comfortable working through the project.
So yeah, that looks complicated and crazy, but I feel comfortable enough with it that I don't need to focus on it. Instead, I've chosen to start my deep dive with one of the synths that Bitwig provides. Phase-4 is a four oscillator, phase-manipulation synth. Each oscillator is identical in purpose, and differentiated by color: red, blue, yellow, and magenta (why they just didn't call it purple...). The four oscillators are fed into a global filter area, and there's also a global area to the left of the filters that house the pitch, glide, shape and mod.
Breaking it down to just the one of the oscillators, the primary control for each is the Shape knob, which affects the overall amount of phase distortion applied. Right above the Shape knob is a menu which you can click and drag to change the oscillator setting. These will be familiar settings, with Sine, Saw, Pulse Width, etc. This changes the algorithm for the phase distortion.
As an aside, there's a great video from Dave Linnenbank that talks about Phase Synthesis. In the video he's using Bitwig, but the principles apply to other DAWs and even analog synths. Watch it if you're at all confused about this particular form of synthesis. I certainly was/am/will be.
The Mod knob (heh) next to the Shape knob sets the maximum amount of phase modulation allowed from any source. And the four smaller knobs to the right of the Mod are setting the individual levels of modulation, each associated with their oscillator based on their color.
Now multiply that all by four. Four oscillators each with four ways to modulate the other oscillators and you have a tool for creating some very rich sounds. There's much more to say about the Phase-4 synth, and I've barely scratched the surface. I'm hoping to play with this more in the future, and update this post (or even create a new one) with some examples of the sort of sounds you can create using the Phase-4 Synth.
For a few months there I didn't have much to do. Mostly bug fixes here and there. And then we had a new project start and I was given the Bootstrap/UI duties for that team. And then a second project spun up, and it was decided I could be a "shared resource", and I was given the Bootstrap/UI duties for that project.
And then third project came about.
And a fourth.
Currently, I am on five scrum teams. Yes. Five. Now, I don't always have work or bugs for all teams at any given time, but there are days when I'm heads down for a solid 8-10 hours.
It shouldn't (hopefully) be for long. If it is, I'll burn out. Thankfully I have a good scrum master who's always checking my point totals and making sure I'm not going batshit crazy. Two sprints ago I was given a total of 13 points. A full sprint's effort is typically 8. That was a crazy week.
I get that it's supposed to foster creativity and collaboration. That productivity is supposed to increase. A worker in an open office is more approachable and communication increases.
Perhaps that's all true. Personally, I don't buy into it. I think rather than fostering collaboration it's fomenting animosity towards fellow co-workers. Case in point: my desk is maybe 4' x 2'. I have a side divider that's probably 16" inches tall, and a divider on the back of my desk that's maybe 2, 2 1/2 feet. Before I switched from sitting on the left side of my desk to the right, I was literally about a foot away from my co-worker (thankfully, no one sits to my right). The person who sit across from me is at least 6'2" and likes to stretch his legs out under the desk. I don't blame him at all. We end up kicking each other a lot, as I like to do the same.
Distractions
The noise is another factor. Several times one or more people will be on a conference call, and while most of my co-workers use headphones, some don't. So I get to listen to their calls (and yes, they've been told headphones should be used). I don't even like having to attend my own conference call meetings, now I'm listening to others as well. Double aggravation points when two people are on the same call, one is on headphones, one isn't, and there is a nice echo and occasional feedback. Along those same lines are the habitual knuckle-cracker and the guy who really likes to masticate his food. I'm not sure what he's eating but he does it loudly, wetly, and way too often.
"The Open Office concept fosters communication!" Ok, maybe. But it also inhibits my ability to go heads down and get some work done. As a web developer, I like to "Get in the zone" as it were and have no distractions as I work on building out a new page or component. Not possible if I'm getting stopped every five minutes for questions, or getting distracted by the guy who is, even as I type this (yes, I'm blogging at work), chewing mightily on a bag of chips. They're only chips dude, not old beef jerky.
How about the guy who likes to shoot his trash into the bin about 12 feet away? He's no NBA candidate - he misses probably 75% of his shots. Which means he then gets up, walks over and throws it away like he should. More distractions.
Findings
They have found that open plan offices create unwanted activity in the brains of workers that can get in the way of them doing the task at hand. Studies have shown that there's a 15% decrease in productivity in an open office environment. One subject wore a cap that measured his brain waves while trying to work in an open plan office. The results revealed intense bursts of distraction. Another study found that 76 percent of Americans “hate open offices.” 76%. That's a huge number of your employees to be hating their work environment.
I get that it's cost-prohibitive for everyone to have an office. But if companies are going to stick with the open office concept, there needs to be some changes. Bigger desks, so I don't feel like I'm sitting on top of my neighbor. As a bonus, I could actually fit a picture of the family if I so desired. How about some spaces where there's an abundance of natural light? One of the saving graces for myself is that I'm close to a window. I have lots of natural light. People at the other end of the room, not so much.
And headphones. Perhaps because companies are saving money on offices, they should invest in some headphones for everyone. Honestly, same days having my music playing is my only saving grace.
I don't think the open office concept is going away anytime soon, but it's almost like there needs to be a course on how to be a considerate open office co-worker.
I'm looking at you, Mr. I-eat-my-stinky-eggs-every-day-at-10:30.
There's a plethora of JavaScript books available for those who learn best by reading. Every single book I've picked up over the years (and I'm embarrassed to say how many I have that I've only picked through), has started with "The History of JavaScript", to some degree.
This annoys me.. I really don't care about the history. Does a mechanic open a manual on how to fix an engine and the first chapter is "The history of the internal combustion engine"? While I haven't checked any manuals lately, I would bet not. So why does it seem every JavaScript book needs to delve into the history of the language? The syntax and structure of JavaScript is nothing like it was back in 1995, much like a modern engine only slightly resembles an engine from 100 years ago. Maybe that's a bad analogy, as they're still using combustion to force pistons to turn a crankshaft to power a drivetrain (man, why hasn't the engine developed past that?), but you get the idea. I want to get to the practicality of the language, I don't believe I need to know it was originally called Mocha, then Livescript then blah blah blah.
Another annoyance: I've been going through the freecodecamp Basic JavaScript lessons, and completed the "Use Bracket Notation to Find the First Character in a String" chapter. Not that difficult really, especially if you follow the example:
var firstLetterOfFirstName = "";
var firstName = "Ada";
firstLetterOfFirstName = firstName[0];
In the case, the first letter (identified by the [0]) is A. OK, great, fairly simple.
Now what I want to see is a real-world example. When would I need to use something like that? How can that be a benefit to myself, as a front-end developer? I feel like there are two levels of JavaScript: those front end devs like myself, who just want to use JavaScript to add some basic functionality, and the more experienced programmers who can use it to launch rockets to the moon. Give me some real world examples after each lesson, and I think the lesson would stick better.
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.