Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/brycematheson/allegiant.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'public/post/index.xml')
-rw-r--r--public/post/index.xml929
1 files changed, 929 insertions, 0 deletions
diff --git a/public/post/index.xml b/public/post/index.xml
new file mode 100644
index 0000000..4648466
--- /dev/null
+++ b/public/post/index.xml
@@ -0,0 +1,929 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>Posts on Allegiant</title>
+ <link>http://localhost:1313/brycematheson.io/post/</link>
+ <description>Recent content in Posts on Allegiant</description>
+ <generator>Hugo -- gohugo.io</generator>
+ <language>en-us</language>
+ <copyright>&amp;copy; Allegiant. All Rights Reserved.</copyright>
+ <lastBuildDate>Sun, 15 Nov 2015 18:50:20 -0700</lastBuildDate>
+ <atom:link href="http://localhost:1313/brycematheson.io/post/index.xml" rel="self" type="application/rss+xml" />
+
+ <item>
+ <title>MathesonDigital Wordpress Theme</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-11-09-mathesondigital-wordpress-theme/</link>
+ <pubDate>Sun, 15 Nov 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-11-09-mathesondigital-wordpress-theme/</guid>
+ <description>&lt;p&gt;So I made a WordPress Theme.&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/mathesondigital-wordpress.png&#34; alt=&#34;MathesonDigital Wordpress Theme&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;Why? Because I&amp;rsquo;m sick of everything else on the internet. And that&amp;rsquo;s not to say that there aren&amp;rsquo;t some great themes out there. There are some truly incredible themes. And they do everything. The problem is, however, that I don&amp;rsquo;t need everything. All I need is a simple page that is aesthetically pleasing, and quick. And that&amp;rsquo;s about it. No frills, no fuss, no crazy configuration options, nothing.&lt;/p&gt;
+
+&lt;p&gt;So many of you might be asking then, &amp;#8220;Bryce, why not just use a static site generator for your blog?&amp;#8221; Good question. Been there, done that. And it was fine. I&amp;rsquo;m definitely a fan of Jekyll. The speed of a static site is great. For the first little while, I missed the features that came with a back-end language (PHP is my backend language of choice, which means WordPress works great for me), and some of the database features too. But of course, those are the benefits of a static site. I quickly was able to cope with some of the losses through the use of third-party commenting systems, like &lt;a href=&#34;https://disqus.com/&#34; target=&#34;_blank&#34;&gt;Disqus&lt;/a&gt;, but then I quickly found that I didn&amp;rsquo;t even care about that. You&amp;rsquo;ll notice that on this site, I&amp;rsquo;ve completely omitted the comment system.&lt;/p&gt;
+
+&lt;p&gt;But the main reason I ditched the static site generator were the painfully slow load times. My blog used to showcase a lot of my photography, and so I probably had around 50 posts total overall, most of which were photos. Everytime I made a little, itty-bitty change, it would have to regenerate, and take about 3-5 minutes per generation. That might not sound like a lot, but it would have to regenerate each and every time, regardless of how small of a change I made. And I&amp;rsquo;m one of those &amp;#8220;code-and-check-and-code-and-check-some-more&amp;#8221; type people. I don&amp;rsquo;t have enough confidence in myself to code lines and lines and lines of code before checking my work.&lt;/p&gt;
+
+&lt;p&gt;Another thing that I really missed also, was the ability to update the blog from anywhere I wanted. All of my static files were on my laptop at home, making it extremely difficult to access. Yeah, people mention options like Dropbox or whatever, but that&amp;rsquo;s just a hassle. WordPress works great for what I need, and because I don&amp;rsquo;t jam-pack my sites full of crappy third-party plugins, it works reasonably well.&lt;/p&gt;
+
+&lt;p&gt;If you like what you see, you&amp;rsquo;re free to use it. You can &lt;a href=&#34;https://github.com/brycematheson/mathesondigital-wordpress&#34; target=&#34;_blank&#34;&gt;head over to my GitHub and grab it off of there&lt;/a&gt;. As I mention in the Readme, I didn&amp;rsquo;t really design the theme to be &amp;#8220;user-friendly&amp;#8221;, however. There&amp;rsquo;s no admin panel, there&amp;rsquo;s no fancy color changing options, blech. No, none of that. If I were designing this theme for mass use, or planning on selling it, of course I would have incorporated those features. But I just made it for my purposes, therefore any changes that you&amp;rsquo;ll want to make (aside from small menu adjustments, adding things to the footer, and adding banner images) will have to be done via code. But that should be the ultimate goal anyway, shouldn&amp;rsquo;t it?&lt;/p&gt;
+
+&lt;p&gt;It&amp;rsquo;s decently fast. And it&amp;rsquo;s responsive, too. Google Page Insights only ranks me a &lt;sup&gt;65&lt;/sup&gt;&amp;frasl;&lt;sub&gt;100&lt;/sub&gt;, which I think is a bit of bull, but maybe I&amp;rsquo;ll take the time to go back and fix it at some point. I&amp;rsquo;ve been working on this project all weekend, and to be honest, I&amp;rsquo;m pretty sick of it and just ready to be done.&lt;/p&gt;
+
+&lt;p&gt;So anyway, enough rambling. Here&amp;rsquo;s a cool theme if you want to use it.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Moral Sensitivity</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-09-15-moral-sensitivity/</link>
+ <pubDate>Tue, 15 Sep 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-09-15-moral-sensitivity/</guid>
+ <description>&lt;p&gt;This has absolutely nothing to do with technology, but it&amp;rsquo;s my blog, so I can do what I want.&lt;/p&gt;
+
+&lt;p&gt;This past Memorial Day weekend, I had the most incredible chance to visit Yellowstone National Park. I’m embarrassed to say that I’ve lived less than two hours away from one of the largest National Parks in the United States for more than three years, and I’ve never made the trip. Once the weather warmed up, and we had a chance to get away for a full day, we gassed up the car, filled the coolers, and headed north.&lt;/p&gt;
+
+&lt;p&gt;As we entered into the park, the beauty was simply overwhelming. Lakes surrounded you as you drove, and the valleys appeared to roll on forever. Wildlife walked right up to your car, so close you could pet them. Waterfalls, thermal pools with rich colors, caves, geysers; every little detail was remarkable to look at, down to the very last tree or blade of grass.&lt;/p&gt;
+
+&lt;p&gt;However, as the day came to a close, I noticed something that I had not anticipated. I felt as if I was becoming more and more desensitized to the beauty that was around me. As we would arrive at a new location, we would get out, walk around, and in essence say, “Oh, look. Another waterfall. Okay! Everyone back in the car. Let’s go!” Driving down the road, we would pass a pasture with hundreds of bison, and barely bother to turn our heads. How could I have become so numb to God’s beautiful creations in only 8 short hours?&lt;/p&gt;
+
+&lt;p&gt;Each and every generation faces new challenges and new problems. I believe the biggest difference between my generation, and previous generations is our moral sensitivity. Or should I say, the lack thereof?&lt;/p&gt;
+
+&lt;p&gt;Talk to any elderly person, and they will have a myriad of stories to tell you about the “good ol’ days.” Cars weren’t made from plastic, the streets were safe after dark, gas was fifty cents a gallon, and people still had manners. Fast-forward fifty years in the future, and it’s not hard to see that our society has declined to moral numbness.&lt;/p&gt;
+
+&lt;p&gt;Miley Cyrus is seen half-naked “twerking” on television, children having children, music artists ‘singing’ violent lyrics, and the media distorting everyone’s definition of “beauty.” Can we go back? Can we rewind to a time when people were responsible, integrious, and had a work ethic?&lt;/p&gt;
+
+&lt;p&gt;When did it all begin? When did our culture as a whole say, “That’s it. We don’t care anymore,” and throw their hands in the air in disgust? It’s fairly easy to see that all of this didn’t happen overnight, but similar to my experience in Yellowstone, where did I begin to lose sight of what was around me? How do we train ourselves to view an oncoming social train wreck, and do something about it?&lt;/p&gt;
+
+&lt;p&gt;The answer is to simply take a break. If we become so engrossed in something for long, those things soon lose their importance. “You never know what you have until you lose it,” a common idiom. I think we should change that to say, “You always know what you have, you just never think you’d lose it.” Here’s to taking a stand for what’s right, and clinging onto what little we still have of that moral compass. And it all starts with one.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Windows 10: First Impressions</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-07-31-windows-10-first-impressions/</link>
+ <pubDate>Fri, 31 Jul 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-07-31-windows-10-first-impressions/</guid>
+ <description>&lt;p&gt;Windows 10 launched yesterday, and so being my naturally-curious self on all the latest and greatest in the tech world, I gave it a go. I got an ISO and started it up in VM Fusion on my Mac. This won&amp;rsquo;t be an in-depth review on all the latest features and all that jazz. There are plenty of Tech Blogs out there that can perform a &lt;a href=&#34;http://www.cnet.com/products/microsoft-windows-10/&#34; target=&#34;_blank&#34;&gt;better review&lt;/a&gt; than I ever could. Besides, I&amp;rsquo;m lazy and don&amp;rsquo;t feel all that interested in doing so, anyway.&lt;/p&gt;
+
+&lt;p&gt;On first boot-up, the very first thing that I said to myself was, &amp;#8220;Wow, this feels dark.&amp;#8221; It doesn&amp;rsquo;t really feel like a warm, inviting welcome like Windows 7 or Windows 8.1 felt. The default background is a dark, deep blue (which can be changed, obviously), and the taskbar is straight black, without any nifty aero effects or transparency. It just seems very cold to me, something that you might see on a Batman movie. It might be something small and subtle that only I care about, but I feel like having brighter colors make things less intimidating. It almost has a Unix feel. I know that everything these days is turning towards a more flat UI, but what happened to Aero glass? I personally miss that transparent touch on the taskbar and open windows.&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/windows-10-first-impressions-1.png&#34; alt=&#34;Windows 10 First Impressions&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;Also, I feel that the default icon set is absolutely disgusting. &amp;#8220;This PC&amp;#8221; and &amp;#8220;Recycle Bin&amp;#8221; look like something from Windows 95. Not a fan.&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/windows-10-first-impressions-2.png&#34; alt=&#34;Windows 10 First Impressions&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;The next thing I couldn&amp;rsquo;t help but notice was that there were many features that seemed very &amp;#8220;Mac&amp;#8221;-esque. Virtual desktops, a notification panel that slides in from the right side of the screen, and a dedicated button to display all open applications as small panels (similar to how Expose/Mission Control does things). It seems like a poorly done copy cat of some of the features that I love most about OS X. Also, smaller pop-up messages slide in from the right side of the screen whenever new updates have been installed, or when Windows deems itself worthy to let you know that something has changed. Rather than informing you in the top-right corner like on a Mac, Microsoft has discretely moved these notifications to the bottom-right hand corner of the screen, as not to look too much like OS X.&lt;/p&gt;
+
+&lt;p&gt;Generally, after installing a brand new Windows OS, the first thing I tend to do is head over to Windows Update to install drivers. It&amp;rsquo;s kind of ironic, because everything listed under &amp;#8220;Important Updates&amp;#8221;, I uncheck, and everything listed under &amp;#8220;Recommended Updates&amp;#8221; are usually checked. I only select the specific hardware drivers that I&amp;rsquo;m looking for, and those are most often listed under &amp;#8220;Recommended.&amp;#8221; Shoot me for saying this (especially because my daily job is as a Windows Systems Administrator), but I&amp;rsquo;ve never really felt that Windows Updates have helped the security/stability/functionality of a Windows environment, and if anything, have had detrimental effects as far as performance goes. Most often, I decide to change the update settings to &amp;#8220;Never install&amp;#8221;. When I feel I need a specific update, I have enough technical know-how to manually select what I want. In Windows 10, only two options are listed now: &amp;#8220;Automatic&amp;#8221; and &amp;#8220;Notify to schedule restart.&amp;#8221; Sorry, Microsoft, but I like to have a little more control over update settings than that. For novice users, this might be a welcome feature, but I dislike it.&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/windows-10-first-impressions-3.png&#34; alt=&#34;Windows 10 First Impressions&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;Another simple thing that I like to do on any new Windows installation is throw &amp;#8220;Computer&amp;#8221; on the desktop for easy access to the file system. &amp;#8220;Computer&amp;#8221; has been renamed to &amp;#8220;This PC&amp;#8221; in Windows 10 (I&amp;rsquo;m coming from Windows 7, so I don&amp;rsquo;t remember if this was changed previously in 8.1 or not). Normally, I can simply write-click on &amp;#8220;Computer&amp;#8221; and choose &amp;#8220;Show on Desktop&amp;#8221; to have it placed conveniently for me. All mentions of this have been removed. It&amp;rsquo;s small and stupid, but I really appreciated having that in a context menu. Now, you have to go into &amp;#8220;Personalize&amp;#8221; and then &amp;#8220;Themes&amp;#8221; and then &amp;#8220;Desktop Icon Settings&amp;#8221; &amp;#8212; an unnecessary number of steps, in my opinion. I know that the &amp;#8220;Windows + E&amp;#8221; shortcut is available to open the file explorer, but still.&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/windows-10-first-impressions-4.png&#34; alt=&#34;Windows 10 First Impressions&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;I&amp;rsquo;m sure (and hoping) that it&amp;rsquo;s only because I&amp;rsquo;m running the OS as a Virtual Machine, and the drivers just aren&amp;rsquo;t quite there yet for Mac, but I just couldn&amp;rsquo;t help but feel that everything that I did had a bit of latency. Clicks weren&amp;rsquo;t as snappy as I would have liked. There seemed to be a delay on just about everything I tried to do. Everything from clicking on the Start menu, to loading basic applications like Notepad. Mind you, that this is all running on a laptop with an SSD also. Windows 7 never seemed to have any sort of lag. It&amp;rsquo;s also very possible that because Windows 10 is 6 years newer than Windows 7, it requires more System Resources than any of its older siblings. It seemed the same to me, though. On a blank desktop, with no active applications, RAM usage was 0.7GB, although CPU utilization seemed a bit high for doing absolutely nothing.&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/windows-10-first-impressions-5.png&#34; alt=&#34;Windows 10 First Impressions&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;Everything thus-far has been negative &amp;#8212; So is there anything about Windows 10 that I &lt;em&gt;do&lt;/em&gt; like? The new start menu. It&amp;rsquo;s wonderful. It&amp;rsquo;s as if Windows 7 and Windows 8 got together and had a baby. This is how the start menu in Windows 8 &lt;em&gt;should&lt;/em&gt; have been. I welcome the live tiles that automatically update. It gives me quick access to weather and sports at a glance, rather than having to open a full-blown web page.&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/windows-10-first-impressions-6.png&#34; alt=&#34;Windows 10 First Impressions&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;And speaking of Web pages, I&amp;rsquo;ve really enjoyed using Edge so far, the new browser to replace Internet Explorer. It&amp;rsquo;s not as different as I had expected, and still has subtle UI designs from IE 11, but it appears that it will do a much better job at rendering some of the latest HTML5/CSS3 properties that were almost completely missing previously.&lt;/p&gt;
+
+&lt;p&gt;Overall, I&amp;rsquo;m not super impressed. I&amp;rsquo;m sure it will get better as I use it more and discover where things have been moved to. Most new released from Microsoft are a bit buggy anyway, right out the door. As service packages are released and more user data is sent to Microsoft, thats bound to improve. It is much less intimidating than Windows 8.1 was, that&amp;rsquo;s for sure. I still can&amp;rsquo;t help but notice that everything is geared more and more towards tablet use, though. Microsoft has done a great job at making the OS fairly fluid for use on a standard desktop computer or a device with touch capability. I&amp;rsquo;m not ready to jump on that bandwagon yet, though. I haven&amp;rsquo;t been very impressed with many of the Windows tablets.&lt;/p&gt;
+
+&lt;p&gt;I&amp;rsquo;m a hater. Sue me.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Hindsight</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-07-25-hindsight/</link>
+ <pubDate>Wed, 15 Jul 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-07-25-hindsight/</guid>
+ <description>&lt;p&gt;David Walsh, a popular Web Development blogger I follow, &lt;a href=&#34;http://davidwalsh.name/impostor-syndrome&#34; target=&#34;_blank&#34;&gt;wrote a post a few months ago about the &amp;#8220;Imposter Syndrome,&amp;#8221;&lt;/a&gt; a common feeling that many developers have going into a new job, or even in their current position; a feeling of inadequacy or fear that someone is going to discover them as a &amp;#8220;fake,&amp;#8221; simply pretending to be competent in their field. As I was reading through his comments, I couldn&amp;rsquo;t help but relate.&lt;/p&gt;
+
+&lt;p&gt;Although I&amp;rsquo;ve felt that all-too-often (especially now &amp;#8212; I start a new job in a week), I couldn&amp;rsquo;t help but look back with hindsight and feel fairly accomplished as to how far I&amp;rsquo;ve come in the past few years.&lt;/p&gt;
+
+&lt;p&gt;As some of you may know, &lt;a href=&#34;http://mormon.org&#34; target=&#34;_blank&#34;&gt;I&amp;rsquo;m a Mormon&lt;/a&gt; (Latter-day Saint). When men of our congregation hit the ripe old age of 18-19, we&amp;rsquo;re expected to head out on a 2-year Missionary trip, teaching others and sharing our faith. During that time, we&amp;rsquo;re expected to set aside all personal endeavors to fully focus on sharing the Gospel and help others. Technology has always been a love of mine. It&amp;rsquo;s been more than just a hobby. Putting all of my technical interests on hold proved really difficult for me.&lt;/p&gt;
+
+&lt;p&gt;Upon returning home after those two years, I jumped head first into my technical degree. I felt *so* inadequate about all of things that I didn&amp;rsquo;t know, and especially outdated by all the latest technologies that had emerged in a rapidly-changing field.&lt;/p&gt;
+
+&lt;p&gt;Where I stand currently, I understand that there&amp;rsquo;s a plethora of information in front of me to learn. But it&amp;rsquo;s fun to look back and actually see how I&amp;rsquo;ve progressed.&lt;/p&gt;
+
+&lt;p&gt;It makes me laugh (and slightly embarrassed) to think that I used to build websites, and I never used a single &lt;code&gt;class=&lt;/code&gt; statement, because my HTML documents consisted entirely of &lt;code&gt;id=&lt;/code&gt; tags.&lt;/p&gt;
+
+&lt;p&gt;I can&amp;rsquo;t believe that I used to have absolutely no comprehension of what a &amp;#8220;backend&amp;#8221; was, and how server-side scripting and databases interacted to create full-fledged web applications. I was a sophomore in High School when I first heard the acronym &amp;#8220;SQL,&amp;#8221; but it wouldn&amp;rsquo;t be years until I even built my first query or understood what SQL was.&lt;/p&gt;
+
+&lt;p&gt;I remember the first time I learned how to insert PHP into my HTML code. My teacher wrote the following code on the board, and it just looked like greek to me. Not only did I not understand what it did, I couldn&amp;rsquo;t even begin to wrap my head around how it worked.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-php&#34;&gt;&amp;lt;?php include $_SERVER[&#39;DOCUMENT_ROOT&#39;].&amp;quot;/views/somefile.php&amp;quot;;?&amp;gt;
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;I could go on forever. Anyway, the point to all of this, is simply to tell myself that I have progressed, and I have learned. Keep it up. Five years from now, you&amp;rsquo;ll look back at yourself again and think about how much farther you&amp;rsquo;ve come.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>VMware Disk Extend Powershell Script</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-06-03-powershell-extend-script/</link>
+ <pubDate>Wed, 03 Jun 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-06-03-powershell-extend-script/</guid>
+ <description>&lt;p&gt;About a month ago, I began working at Intermountain Healthcare, here in Utah, as a Systems Administrator. We have a bunch of monitoring software, one of which is called &amp;#8220;Spectrum&amp;#8221;. It searches for hardware errors or any other faults and then reports them to us. One of the most common reports that we find is that &amp;#8220;C: 90% usage&amp;#8221;, or something similar. Because the majority of the servers that we run are virtual, with a thin disk setup, they have relatively small drives (some starting as small as 25GB). As applications are installed or the demands of the business unit increase, we find that these drives fill up rather quickly. Currently, the process to extend these drives is to log into vConsole (vSphere Client), find the drive, edit the settings, provision additional disk space, remote into the virtual machine, open diskpart.exe, rescan the drive, and then extend it.&lt;/p&gt;
+
+&lt;p&gt;Now, that&amp;rsquo;s fine if you only have a couple of drives to extend each day. But with nearly 3500 servers that we&amp;rsquo;re in charge of, we get quite a few, and it becomes rather monotonous. Hence, I began playing with powershell and wrote a simple script that both provisions additional disk space for you, as well as extends the drive in the Guest Operating System.&lt;/p&gt;
+
+&lt;p&gt;The following script requires the VMWare PowerCLI. I prefer to use the PowerCLI, but you can also use the Snap-in and run it from Powershell directly. This has been tested to work on Windows Server 2003, 2008, and 2012. Because Windows 2003 doesn&amp;rsquo;t have the capability to extend a virtual disk from the OS natively, we use Dell&amp;rsquo;s 3rd party software &amp;#8220;extpart.exe&amp;#8221; (extend partition).&lt;/p&gt;
+
+&lt;p&gt;You&amp;rsquo;ll have to modify the script below to your needs by adding the VM host servers you want to connect to (indicated by &amp;#8220;server1&amp;#8221;, etc), as well as change the locations below for where to check for extpart.exe, as well as where to copy the program should it be found missing.&lt;/p&gt;
+
+&lt;p&gt;Cheers!&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-powershell&#34;&gt;#Import the PowerCLI module
+#Add-PSSnapin VMware.VimAutomation.Core
+Set-PowerCLIConfiguration -DisplayDeprecationWarnings $false -InvalidCertificateAction Ignore -Confirm:$false
+
+function getDisk {
+ $disk = Read-Host &amp;quot;Which disk would you like to extend (i.e., &#39;1&#39;)?&amp;quot;
+ Return $disk
+}
+
+function getDiskSize {
+ $diskSize = Read-Host &amp;quot;Enter new (total) drive size (in GB)?&amp;quot;
+ Return $diskSize
+}
+
+function setVMSize($vm, $disk, $diskSize) {
+ Get-HardDisk -vm $vm | where {$_.Name -eq &amp;quot;$disk&amp;quot;} | Set-HardDisk -CapacityGB $diskSize -ResizeGuestPartition -confirm:$false -ErrorAction:SilentlyContinue
+}
+
+# Connect to vConsole servers
+$authenticated = $false;
+while (-not $authenticated) {
+ Try {
+ Connect-VIServer -Server server1,server2,server3 -ErrorAction Stop | Select-Object -Property Name,IsConnected
+ $authenticated = $true
+ }
+ Catch {
+ Write-Host &amp;quot;Invalid username or password.&amp;quot; -foreground &amp;quot;red&amp;quot;
+ }
+}
+
+# Check to make sure that the user inputs a valid VM
+$validVM = $false
+while (-not $validVM) {
+ $vm = Read-Host &amp;quot;Enter VM name&amp;quot;
+ Try {
+ Get-VM -Name $vm | Select-Object -Property Name
+ $validVM = $true
+ }
+ Catch {
+ Write-Host &amp;quot;Invalid VM name. Try again.&amp;quot; -foreground &amp;quot;red&amp;quot;
+ }
+}
+
+# Get drive letter mappings and store them in the $diskArray array. Data from this
+# array can be accessed like so: $diskArray[0].DiskName, or .DriveLetter, or .DiskSize
+$diskArray = @()
+
+if ($vm) {
+ $VmView = Get-View -ViewType VirtualMachine -Filter @{&amp;quot;Name&amp;quot; = $vm}
+ foreach ($VirtualSCSIController in ($VMView.Config.Hardware.Device | where {$_.DeviceInfo.Label -match &amp;quot;SCSI Controller&amp;quot;})) {
+ foreach ($VirtualDiskDevice in ($VMView.Config.Hardware.Device | where {$_.ControllerKey -eq $VirtualSCSIController.Key})) {
+ $VirtualDisk = &amp;quot;&amp;quot; | Select DiskName, DiskSize, DriveLetter
+ $VirtualDisk.DiskName = $VirtualDiskDevice.DeviceInfo.Label
+ $VirtualDisk.DiskSize = $VirtualDiskDevice.CapacityInKB * 1KB / 1GB
+
+ $LogicalDisks = @()
+ # Look up path for this disk using WMI.
+ $thisVirtualDisk = get-wmiobject -class &amp;quot;Win32_DiskDrive&amp;quot; -namespace &amp;quot;root\CIMV2&amp;quot; -computername $vm | where {$_.SCSIBus -eq $VirtualSCSIController.BusNumber -and $_.SCSITargetID -eq $VirtualDiskDevice.UnitNumber}
+ # Look up partition using WMI.
+ $Disk2Part = Get-WmiObject Win32_DiskDriveToDiskPartition -computername $vm | Where {$_.Antecedent -eq $thisVirtualDisk.__Path}
+ foreach ($thisPartition in $Disk2Part) {
+ #Look up logical drives for that partition using WMI.
+ $Part2Log = Get-WmiObject -Class Win32_LogicalDiskToPartition -computername $vm | Where {$_.Antecedent -eq $thisPartition.Dependent}
+ foreach ($thisLogical in $Part2Log) {
+ if ($thisLogical.Dependent -match &amp;quot;[A-Z]:&amp;quot;) {
+ $LogicalDisks += $matches[0]
+ }
+ }
+ }
+ $VirtualDisk.DriveLetter = $LogicalDisks
+ $diskArray += $VirtualDisk
+ Write-Output $VirtualDisk
+ }
+ }
+}
+
+# Check which OS version -- If Server 2003, run extpart. Run diskpart for all others.
+If ((Get-VMGuest $vm | Select-Object -Property OSFullName) -like &#39;*2003*&#39;) {
+ $disk = getDisk
+ $diskSize = getDiskSize
+ setVMSize $vm $diskArray[$disk - 1].DiskName $diskSize
+ # If extpart exists, do nothing. Otherwise, copy to C:\UTILS folder on VM.
+ if (Test-Path &amp;quot;\\$vm\c$\UTILS\extpart.exe&amp;quot;){
+ # do nothing
+ } else {
+ Copy-Item -Path &amp;quot;S:\SA\PostInstallDoNotModify\Installs\UTILS\extpart.exe&amp;quot; -Destination &amp;quot;\\$vm\c$\UTILS&amp;quot;
+ Write-Host &amp;quot;Successfully copied &#39;extpart.exe&#39; to UTILS folder.&amp;quot; -foreground &amp;quot;green&amp;quot;
+ }
+ $driveLetter = $diskArray[$disk - 1].DriveLetter
+ $sizeInMB = ((($diskSize)-($diskArray[$disk - 1].DiskSize))*1024)
+ $script = &amp;quot;C:\UTILS\extpart.exe $driveLetter $sizeInMB&amp;quot;
+ Invoke-VMScript -vm $vm -ScriptText $script -ScriptType BAT
+} else {
+ $disk = getDisk
+ $diskSize = getDiskSize
+ $driveLetter = $diskArray[$disk - 1].DriveLetter
+ setVMSize $vm $diskArray[$disk - 1].DiskName $diskSize
+ $script = &amp;quot;echo select volume = $driveLetter &amp;gt; c:\diskpart.txt &amp;amp;&amp;amp; echo rescan &amp;gt;&amp;gt; c:\diskpart.txt &amp;amp;&amp;amp; echo extend &amp;gt;&amp;gt; c:\diskpart.txt &amp;amp;&amp;amp; diskpart.exe /s c:\diskpart.txt&amp;quot;
+ Invoke-VMScript -vm $vm -ScriptText $script -ScriptType BAT
+}
+&lt;/code&gt;&lt;/pre&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Command Line Essentials</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-02-20-command-line-essentials/</link>
+ <pubDate>Fri, 20 Feb 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-02-20-command-line-essentials/</guid>
+ <description>
+
+&lt;p&gt;It wasn&amp;rsquo;t too long ago that I was terrified of the terminal. It&amp;rsquo;s pretty daunting to be staring at a blank screen with a blinking cursor taunting you. Want to know something? It&amp;rsquo;s not as scary as you might think. It would take years to master the command line, so don&amp;rsquo;t expect to know everything all at once. Everyday, try and find little ways to slowly blend the terminal with basic tasks. Slowly, you&amp;rsquo;ll find that it makes a lot of things easier.&lt;/p&gt;
+
+&lt;h2 id=&#34;terminology:9b1b4563a184a5dc550b880f1d4829c3&#34;&gt;Terminology&lt;/h2&gt;
+
+&lt;p&gt;You may have heard words such as &amp;#8220;terminal&amp;#8221;, &amp;#8220;command line&amp;#8221;, &amp;#8220;shell&amp;#8221;, &amp;#8220;bash&amp;#8221;, etc. There are slight differences, but generally, they all refer to the same thing.&lt;/p&gt;
+
+&lt;h2 id=&#34;terminal-vs-iterm:9b1b4563a184a5dc550b880f1d4829c3&#34;&gt;Terminal vs iTerm&lt;/h2&gt;
+
+&lt;p&gt;&amp;#8216;iTerm&amp;rsquo; is a terminal replacement. It&amp;rsquo;s simply a program that adds some features for developers and advanced users such as split panes, paste history, and a plethora of others. If you don&amp;rsquo;t need any of these, you can use the basic terminal just as well. If you&amp;rsquo;re looking for additional functionality, this might be worth looking into.&lt;/p&gt;
+
+&lt;p&gt;Honestly, I tried iTerm and didn&amp;rsquo;t care too much for it. I prefer &lt;a href=&#34;http://totalterminal.binaryage.com/&#34; target=&#34;_blank&#34;&gt;TotalTerminal&lt;/a&gt;. I don&amp;rsquo;t have a bunch of needs for extra fancy features, but one thing I do love is the &amp;#8220;visor&amp;#8221; functionality. From anywhere on my computer, I can have a terminal window slide down from the top of my screen, simply by pressing a keyboard shortcut. This is much easier than navigating to Finder, then Applications, then Utilities, then Terminal. Or even faster than searching for it through Spotlight. Many people use the standard &lt;span class=&#34;smallcode&#34;&gt;Command/Ctrl + ~&lt;/span&gt; shortcut, but I&amp;rsquo;ve customized mine to &lt;span class=&#34;smallcode&#34;&gt;Control + Control&lt;/span&gt;.&lt;/p&gt;
+
+&lt;p&gt;Another nifty feature is being able to have multiple terminal windows running different processes. I generally have a Jekyll or Grunt server running in one window, and then I use the other window for navigating through folders or committing changes on Git. It works similar to using tabs in Chrome or any other browser.&lt;/p&gt;
+
+&lt;h2 id=&#34;basic-commands:9b1b4563a184a5dc550b880f1d4829c3&#34;&gt;Basic Commands&lt;/h2&gt;
+
+&lt;p&gt;Let&amp;rsquo;s get started. Go ahead and open up a terminal window and play with the following commands. Each command should be entered on a single line, and then followed by the &lt;span class=&#34;smallcode&#34;&gt;[return/enter]&lt;/span&gt; key.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;pwd&lt;/span&gt; &amp;#8211; stands for &amp;#8220;print working directory&amp;#8221;. It lists the folder that you&amp;rsquo;re currently in (i.e. /Users/yourusername/Documents)&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;cd&lt;/span&gt; &amp;#8211; stands for &amp;#8220;change directory&amp;#8221;. This lets you move in and out of folders. For example, if you&amp;rsquo;re in the &amp;#8220;Documents&amp;#8221; directory and want to move to another directory underneath named &amp;#8220;School&amp;#8221;, you would type &lt;span class=&#34;smallcode&#34;&gt;cd School&lt;/span&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;cd ..&lt;/span&gt; &amp;#8211; Move &amp;#8220;back&amp;#8221; or &amp;#8220;up&amp;#8221; a folder. In our previous example, this would move you out of the &amp;#8220;School&amp;#8221; directory and back into the &amp;#8220;Documents&amp;#8221; folder.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;cd ~&lt;/span&gt; &amp;#8211; Takes you back to your home directory. Let&amp;rsquo;s say you&amp;rsquo;re deep in a folder structure (i.e. /Users/yourusername/Documents/School/Senior/Thesis). Rather than having to type &lt;span class=&#34;smallcode&#34;&gt;cd ..&lt;/span&gt; a billion times, you could type &lt;span class=&#34;smallcode&#34;&gt;cd ~&lt;/span&gt; to take you back to &amp;#8220;/Users/yourusername&amp;#8221;.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;open .&lt;/span&gt; &amp;#8211; Opens the current working directory in finder. I use this one ALL the time and love it.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;clear&lt;/span&gt; &amp;#8211; Clears the screen of all text. Sometimes the output of all previous commands can make me claustrophobic. This gives me a fresh, blank screen.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;rm [filename]&lt;/span&gt; &amp;#8211; Deletes a file.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;mkdir [directoryname]&lt;/span&gt; &amp;#8211; Stands for &amp;#8220;make directory&amp;#8221;. Creates a new folder.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;ls&lt;/span&gt; &amp;#8211; Stands for &amp;#8220;list&amp;#8221;. Shows a listing of all the files/folders in a directory. Often, I find myself adding an &lt;span class=&#34;smallcode&#34;&gt;-al&lt;/span&gt; flag. &lt;span class=&#34;smallcode&#34;&gt;-a&lt;/span&gt; shows &amp;#8220;all files&amp;#8221; (hidden files included), and &lt;span class=&#34;smallcode&#34;&gt;-l&lt;/span&gt; shows a long listing of files, rather than in a three-column short listing. This to me, is easier to read. You can combine the two flags together with the ls command by typing &lt;span class=&#34;smallcode&#34;&gt;ls -al&lt;/span&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;sudo [command]&lt;/span&gt; &amp;#8211; Stands for &amp;#8220;super user do&amp;#8221;. Sometimes you need elevated privileges to run a certain command. Typing &lt;span class=&#34;smallcode&#34;&gt;sudo&lt;/span&gt; before the command will prompt for your password, and will then run the command. Be careful when using this command. If you don&amp;rsquo;t know what you&amp;rsquo;re doing, you can make some unwanted changes. If at all possible, run the command first &lt;em&gt;without&lt;/em&gt; sudo, and only add it in if needed.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;control + c&lt;/span&gt; &amp;#8211; Cancels a current process. For example, if you&amp;rsquo;re running a script, you can kill (cancel) it.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;[Up arrow]&lt;/span&gt; &amp;#8211; You can see a list of all the previous commands you&amp;rsquo;ve entered by pressing the up arrow key. This saves time rather than having to type in a command over and over again.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;[tab]&lt;/span&gt; &amp;#8211; Autocomplete. Let&amp;rsquo;s say I have a long folder name such &amp;#8220;Discertation&amp;#8221;. Start typing the first few letters of the file/folder to distinguish it from other files, and then press the &amp;#8220;tab&amp;#8221; key. It will autocomplete the filename for you.&lt;/p&gt;
+
+&lt;h2 id=&#34;give-it-a-try:9b1b4563a184a5dc550b880f1d4829c3&#34;&gt;Give it a try!&lt;/h2&gt;
+
+&lt;p&gt;Well, there are a few commands to get you started and make you just dangerous enough. Practice makes perfect! I use most all of these commands on a daily basis, but there are thousands of additional commands that you can learn. Baby steps.&lt;/p&gt;
+
+&lt;h2 id=&#34;comments:9b1b4563a184a5dc550b880f1d4829c3&#34;&gt;Comments&lt;/h2&gt;
+
+&lt;p&gt;Did I miss any of your favorites? Let me know, and I&amp;rsquo;ll list them here.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>I love to Grunt and Gulp</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-02-14-i-love-to-grunt-and-gulp/</link>
+ <pubDate>Sat, 14 Feb 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-02-14-i-love-to-grunt-and-gulp/</guid>
+ <description>&lt;p&gt;(Happy Valentine&amp;rsquo;s Day, ya&amp;rsquo;ll. Get off the computer and go buy something nice for your woman.)&lt;/p&gt;
+
+&lt;p&gt;Sometimes I like to pretend that I know stuff, when I really don&amp;rsquo;t. Gulp is one of those things. :)&lt;/p&gt;
+
+&lt;p&gt;I need to get better at finding solutions to a lot of the repetitive tasks that I do on a daily basis. Up until now, let&amp;rsquo;s say I was about to push some production code to the web. Of course I needed to minify the CSS first. So I would copy the code, hit up &lt;a href=&#34;http://cssminifier.com/&#34; target=&#34;_blank&#34;&gt;CSS Minifier&lt;/a&gt;, paste the code back into my CSS file, and then rename the file, &lt;code&gt;styles.min.css&lt;/code&gt;. This wouldn&amp;rsquo;t be that big of an issue if I only did it once upon completion of a site. But it never really worked out that way. I&amp;rsquo;d forget to change a specific style last minute, and then I&amp;rsquo;d have to copy all of my code into CSS Minifier and do it all again.&lt;/p&gt;
+
+&lt;p&gt;Wouldn&amp;rsquo;t it be great if there were a service that did all of this for you, automatically? You&amp;rsquo;re in luck! They&amp;rsquo;re called &amp;#8220;Task Runners&amp;#8221;. I&amp;rsquo;m going to be focusing on &amp;#8220;Gulp&amp;#8221;, which is a JavaScript task runner, built off of Node.js.&lt;/p&gt;
+
+&lt;p&gt;Now, to many of you, you&amp;rsquo;ve probably been using a task runner of some sort for years. For a long time, Grunt has been the big name in the game. Not too long ago, Gulp emerged and has been hogging the spotlight. It&amp;rsquo;s not only faster at rendering, but it also has an easier-to-read syntax.&lt;/p&gt;
+
+&lt;p&gt;Now, I&amp;rsquo;m too lazy to reinvent the wheel and write a tutorial on how to install and run gulp. &lt;a href=&#34;http://travismaynard.com/writing/getting-started-with-gulp&#34; target=&#34;_blank&#34;&gt;This guy&lt;/a&gt; does a much better job than I could do, anyway.&lt;/p&gt;
+
+&lt;p&gt;But I did at least want to post my gulpfile and say how freaking awesome it is. By simply running the &lt;code&gt;gulp&lt;/code&gt; command, in less than second, I can minify my CSS, JS, and HTML, concatenate multiple files into one, rename them automatically, add in browser prefixes, and then reload the browser window. In less than a second. Boom. Pretty nifty, huh? Additionally, my gulpfile will watch for any changes to those files, and rerun all of those tanks without me doing anything. Dope.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-js&#34;&gt;var gulp = require(&#39;gulp&#39;);
+
+/**********************************************
+****************** Modules ********************
+***********************************************/
+var sass = require(&#39;gulp-ruby-sass&#39;); //Compiles SASS
+var autoprefix = require(&#39;gulp-autoprefixer&#39;); //Automatically throws in browser prefixes
+var minifycss = require(&#39;gulp-minify-css&#39;); //Minifies CSS
+var rename = require(&amp;quot;gulp-rename&amp;quot;); //Renames files to .min after minifying
+var minifyhtml = require(&#39;gulp-minify-html&#39;); //Minifies the HTML
+var concat = require(&#39;gulp-concat&#39;); //Concatenates all source files into one file
+var uglify = require(&#39;gulp-uglify&#39;); //Removes whitespaces from JavaScript
+var imagemin = require(&#39;gulp-imagemin&#39;); //Compresses images
+var livereload = require(&#39;gulp-livereload&#39;); //Live reload
+var plumber = require(&#39;gulp-plumber&#39;); //Error handling
+
+/**********************************************
+****************** Functions ********************
+***********************************************/
+
+// css auto-prefix, minify, and rename
+gulp.task(&#39;styles&#39;, function() {
+ return sass(&#39;src/styles/&#39;, {style:&#39;expanded&#39;}).on(&#39;error&#39;, function(handleError){ console.log(&#39;Error: There\&#39;s a problem with your SASS, stupid. Fix that shiz.&#39;); })
+ .pipe(autoprefix(&#39;last 2 versions&#39;))
+ .pipe(minifycss())
+ .pipe(rename({suffix:&#39;.min&#39;}))
+ .pipe(gulp.dest(&#39;build/styles/&#39;))
+ .pipe(livereload());
+});
+
+// minify new images
+gulp.task(&#39;imagemin&#39;, function() {
+ gulp.src(&#39;src/images/*.jpg&#39;).on(&#39;error&#39;, function(handleError){ console.log(&#39;Error: There\&#39;s a problem with your images, stupid. Fix that shiz.&#39;); })
+ .pipe(imagemin())
+ .pipe(gulp.dest(&#39;build/images/&#39;));
+});
+
+// minify new or changed HTML pages
+gulp.task(&#39;html&#39;, function() {
+ gulp.src(&#39;src/*.html&#39;)
+ .pipe(minifyhtml())
+ .pipe(gulp.dest(&#39;build/&#39;))
+ .pipe(livereload());
+});
+
+// JS concat, strip debugging and minify
+gulp.task(&#39;scripts&#39;, function() {
+ gulp.src(&#39;src/scripts/*.js&#39;)
+ .pipe(concat(&#39;script.js&#39;))
+ .pipe(uglify())
+ .pipe(rename({suffix:&#39;.min&#39;}))
+ .pipe(gulp.dest(&#39;build/scripts/&#39;))
+ .pipe(livereload());
+});
+
+/**********************************************
+************ Watch &amp;amp; Build Tasks **************
+***********************************************/
+gulp.task(&#39;default&#39;, [&#39;styles&#39;, &#39;html&#39;, &#39;scripts&#39;, &#39;imagemin&#39;], function() {
+ // watch for CSS changes &amp;amp; minify
+ gulp.watch(&#39;./src/styles/*.scss&#39;, function() {
+ livereload.listen();
+ gulp.run(&#39;styles&#39;);
+ });
+
+ // watch for html &amp;amp;amp; minify
+ gulp.watch(&#39;./src/*.html&#39;, function() {
+ livereload.listen();
+ gulp.run(&#39;html&#39;);
+ });
+
+ // watch for JS changes
+ gulp.watch(&#39;./src/scripts/*.js&#39;, function() {
+ livereload.listen();
+ gulp.run(&#39;scripts&#39;);
+ });
+
+ // watch for new images
+ gulp.watch(&#39;./src/images/*.jpg&#39;, function() {
+ gulp.run(&#39;imagemin&#39;);
+ });
+});
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;This isn&amp;rsquo;t even the tip of the iceberg. There are hundreds of gulp plugins, and I have yet to play with the majority of them. But these seem to be the most basic/common plugins, and so far, they&amp;rsquo;ve proved invaluable.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Remove .DS_Store from ZIP Files</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-01-24-remove-ds_store-from-zip-file/</link>
+ <pubDate>Sat, 24 Jan 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-01-24-remove-ds_store-from-zip-file/</guid>
+ <description>&lt;p&gt;At work this week, I had to download a bunch of compressed XML files, delete some duplicate files contained therein, recompress the files, and then reupload them to a server. The problem, however, is that whenever I tried to upload the files, I got a strange server error. After some trial and error, and some deep examination, I found that the hidden file &amp;#8220;.DS_Store&amp;#8221; was causing the server error issue. When I removed the hidden &amp;#8220;.DS_Store&amp;#8221; file, I had no more issues.&lt;/p&gt;
+
+&lt;p&gt;If you&amp;rsquo;re a Mac user, you&amp;rsquo;ve undoubtedly noticed these strange files that seem to creep into every directory. They&amp;rsquo;ve plagued the operating system for years, and there&amp;rsquo;s still not a super great solution for removing them. And the files don&amp;rsquo;t just stay on your machine. Ever plugged in a USB flash drive to take over to a Windows machine? These obnoxious files have most certainly hopped on for a ride. They&amp;rsquo;re nothing more than metadata (data about data), but they&amp;rsquo;ve never been an issue for me until now.&lt;/p&gt;
+
+&lt;p&gt;So I navigated through the compressed folders again, deleted the hidden files, and then thought I was set. Upon recompressing the files once more and trying to upload them, I was still presented with the same error. Guess what happened when the folders were compressed again? Yep. The infamous .DS_Store file had once again shown up.&lt;/p&gt;
+
+&lt;p&gt;So how do you remove these files in a compressed directory? Unzipping the files to remove them doesn&amp;rsquo;t work, as they&amp;rsquo;ll just show up again as soon as you re-zip the file. Well, I&amp;rsquo;ve had to resort to the command line. Using the following command in the terminal, I was successfully able to remove the annoyance quickly.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;zip -r mynewzipfile.zip wherethefilesarecomingfrom -x &amp;ldquo;*.DS_Store&amp;rdquo;&lt;/span&gt;&lt;/p&gt;
+
+&lt;p&gt;Just to break down the above command:&lt;br /&gt;
+&lt;span class=&#34;smallcode&#34;&gt;zip&lt;/span&gt; &amp;#8211; The terminal command&lt;br /&gt;
+&lt;span class=&#34;smallcode&#34;&gt;-r&lt;/span&gt; &amp;#8211; &amp;#8220;Recursive.&amp;#8221; This means to select all files and subfolders under the directory&lt;br /&gt;
+&lt;span class=&#34;smallcode&#34;&gt;mynewzipfile.zip&lt;/span&gt; &amp;#8211; Name this whatever you&amp;rsquo;d like the new ZIP file to be called&lt;br /&gt;
+&lt;span class=&#34;smallcode&#34;&gt;wherethefilesarecomingfrom&lt;/span&gt; &amp;#8211; The directory that contains the files to be zipped&lt;br /&gt;
+&lt;span class=&#34;smallcode&#34;&gt;-x&lt;/span&gt; &amp;#8211; &amp;#8220;Exclude&amp;#8221; flag.&lt;br /&gt;
+&lt;span class=&#34;smallcode&#34;&gt;&amp;ldquo;*.DS_Store&amp;rdquo;&lt;/span&gt; &amp;#8211; Selects all files that are named &amp;#8220;.DS_Store&amp;#8221;&lt;/p&gt;
+
+&lt;p&gt;Your new zip file will be created WITHOUT the .DS_Store file. Tah-dah!&lt;/p&gt;
+
+&lt;p&gt;Upon doing a quick search on the internet, I found the following program called &lt;a href=&#34;http://asepsis.binaryage.com&#34; target=&#34;_blank&#34;&gt;Asepsis&lt;/a&gt;. I haven&amp;rsquo;t given it a try, but apparently it prevents the creation of any .DS_Store files. Might be worth giving it a try.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Static Site (Database Free) Contact Form</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-01-19-static-site-contact-form/</link>
+ <pubDate>Mon, 19 Jan 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-01-19-static-site-contact-form/</guid>
+ <description>&lt;p&gt;Although my site is always a work in progress, (I&amp;rsquo;ve still got plenty of things I need to do on it), I feel like it&amp;rsquo;s in the final stages. Recently, I was trying to add the finishing touches by implementing a contact form. Mostly, to combat spam. I didn&amp;rsquo;t want to throw my direct e-mail address out there, because that&amp;rsquo;s just asking for an inbox full of viagra ads.&lt;/p&gt;
+
+&lt;p&gt;The thing that I wanted to completely avoid was having any server-side (PHP) scripting, or databases. With most contact forms, that&amp;rsquo;s a inevitable. But my main concern with just about everything on my site is performance. I wasn&amp;rsquo;t willing to add a database just for that. So I went searching.&lt;/p&gt;
+
+&lt;p&gt;Introducing &lt;a href=&#34;http://formspree.io/&#34; target=&#34;_blank&#34;&gt;Formspree.io.&lt;/a&gt; It&amp;rsquo;s crazy easy. It involves using code, so if that scares you, you might want to stay away. But really, it&amp;rsquo;s just simply copying and pasting that anyone can do it. Besides, if you&amp;rsquo;re not into code, what&amp;rsquo;re you doing reading my blog?&lt;/p&gt;
+
+&lt;p&gt;Basically, you place their code on your site, and when someone submits anything in the form, all of the processing is done on their servers and forwarded to an email address that you provide. And what I love is that their logo isn&amp;rsquo;t plastered all over the place. It&amp;rsquo;s super minimal, and you don&amp;rsquo;t even have to register an account with them.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-html&#34;&gt;&amp;lt;form action=&amp;quot;http://formspree.io/youremail@pasteithere.com&amp;quot; method=&amp;quot;POST&amp;quot;&amp;gt;
+ &amp;lt;p&amp;gt;Email:&amp;lt;/p&amp;gt;&amp;lt;input type=&amp;quot;email&amp;quot; size=&amp;quot;40&amp;quot; name=&amp;quot;_replyto&amp;quot;&amp;gt;
+ &amp;lt;p&amp;gt;Message:&amp;lt;/p&amp;gt;&amp;lt;textarea style=&amp;quot;border: 1px lightgray solid; width: 100%; height: 300px;&amp;quot; name=&amp;quot;body&amp;quot;&amp;gt;
+ &amp;lt;/textarea&amp;gt;&amp;lt;br/&amp;gt;
+ &amp;lt;input style=&amp;quot;display: block; width: 125px; text-size: 20px;&amp;quot; type=&amp;quot;submit&amp;quot; value=&amp;quot;Send&amp;quot;&amp;gt;
+&amp;lt;/form&amp;gt;
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;All you have to do is replace the &lt;code&gt;youremail@pasteithere.com&lt;/code&gt; with the address you want your submissions to be forwarded to. Throw that on your site. The first thing you have to do is submit a test form, and a confirmation email will be sent to the address you specified. Once it&amp;rsquo;s confirmed, you&amp;rsquo;re set to go!&lt;/p&gt;
+
+&lt;p&gt;I left all the styling that I used in my form for you to use. You can strip it out or do whatever you want with it, obviously.&lt;/p&gt;
+
+&lt;p&gt;You might be wondering about costs or privacy. Right now, there&amp;rsquo;s a 1000/month cap on emails. Anything above that and you&amp;rsquo;ll have to pay, but I&amp;rsquo;d be surprised to get even 20 submissions a month from legitimate sources on my own site. As far as privacy, they say that don&amp;rsquo;t store any of the contents of the submissions, because they&amp;rsquo;re using the Mailgun API. And even if they did, I&amp;rsquo;m not too worried about it. You shouldn&amp;rsquo;t be submitting sensitive data to an unsecure form on the web anyway.&lt;/p&gt;
+
+&lt;p&gt;One of my favorite features is the ability to add a &amp;#8220;honeypot&amp;#8221; for those who are just scraping the web, looking for forms to easily submit. You can add a textfield to the form, give it a name value of &lt;code&gt;_gotcha&lt;/code&gt;, and then hide it using CSS. If any value is entered in this field, the message will be silently ignored. At the same time, this field is hidden from humans so that they won&amp;rsquo;t accidentally enter anything.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-html&#34;&gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;_gotcha&amp;quot; style=&amp;quot;display:none&amp;quot; /&amp;gt;
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;What about adding additional fields or features? Head on over to &lt;a href=&#34;http://formspree.io/&#34; target=&#34;_blank&#34;&gt;their website&lt;/a&gt; to see everything they&amp;rsquo;ve got to offer. This probably sounds like I&amp;rsquo;m being paid to write this post, but I&amp;rsquo;m not. I&amp;rsquo;m just grateful that I found a simple, easy solution to fill my needs. Enjoy!&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>5 Things to Stop Doing in 2015</title>
+ <link>http://localhost:1313/brycematheson.io/post/2015-01-02-5-things-to-stop-doing-in-2015/</link>
+ <pubDate>Fri, 02 Jan 2015 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2015-01-02-5-things-to-stop-doing-in-2015/</guid>
+ <description>
+
+&lt;p&gt;It seems that a year has ended, and new year resolutions are all on the rage again. Yeah, there&amp;rsquo;s those typical ones such as joining a gym and getting in shape (although, I really think I might do it this year), etc. Here are five things I&amp;rsquo;d like to quit doing this year.&lt;/p&gt;
+
+&lt;h3 id=&#34;1-quit-checking-my-instagram-likes:6478d31356be52c166d4d2d1b32313ca&#34;&gt;1. Quit checking my Instagram likes&lt;/h3&gt;
+
+&lt;p&gt;Yeah, it&amp;rsquo;s stupid, but really. I mean it. We all do it. We open up Instagram and are excited when we see 30+ likes, 4 comments, and 2 new followers. I won&amp;rsquo;t say that I base my self-worth on it, but I do get a bit of a thrill when I post a great photograph, or come up with some whitty remark. I&amp;rsquo;m going to try my best to quit doing that. I love photography, and I&amp;rsquo;d call it more than a hobby, but I can get better at finding self-gratification from other peoples&amp;rsquo; acceptance.&lt;/p&gt;
+
+&lt;h3 id=&#34;2-stop-thinking-that-the-grass-will-be-greener:6478d31356be52c166d4d2d1b32313ca&#34;&gt;2. Stop thinking that the grass will be greener&lt;/h3&gt;
+
+&lt;p&gt;&amp;#8220;I&amp;rsquo;ll be happy when I&amp;rsquo;m married&amp;#8230;&amp;#8221;, &amp;#8220;If only I made more money&amp;#8230;&amp;#8221;. Stop. Please. Stop it. Happiness truly comes from gratitude. I need to work on being content with where I&amp;rsquo;m at, and simply finding joy in the journey. It&amp;rsquo;s not a destination. I don&amp;rsquo;t want to wish life away thinking, &amp;#8220;If only, if only.&amp;#8221;&lt;/p&gt;
+
+&lt;h3 id=&#34;3-stop-comparing:6478d31356be52c166d4d2d1b32313ca&#34;&gt;3. Stop comparing&lt;/h3&gt;
+
+&lt;p&gt;&amp;#8220;Comparison is the theif of joy.&amp;#8221; Are you ever happy with your love life, until you see another girl at the other table? Are you content and grateful with your talents, and ever-eager to hone them, until you see the successes of others? Are you happy with your job and your work, until you see a potentially better offer? There is always going to be someone or something better, and should you actually ever obtain that, you&amp;rsquo;d find something else to complain about.&lt;/p&gt;
+
+&lt;h3 id=&#34;4-quit-feeling-guilty:6478d31356be52c166d4d2d1b32313ca&#34;&gt;4. Quit feeling guilty&lt;/h3&gt;
+
+&lt;p&gt;People make mistakes. People change. And so do you. You live, you learn, you grow. The end. What happened in the past doesn&amp;rsquo;t have to define you, unless you let it. Put on your big boy underwear, man up, and move on.&lt;/p&gt;
+
+&lt;h3 id=&#34;5-stop-feeling-obligated:6478d31356be52c166d4d2d1b32313ca&#34;&gt;5. Stop feeling obligated&lt;/h3&gt;
+
+&lt;p&gt;It&amp;rsquo;s okay to say, &amp;#8220;No.&amp;#8221; Don&amp;rsquo;t (always) make decisions based on what you think you &lt;em&gt;should&lt;/em&gt; do. Make decisions based on what you WANT to do. It&amp;rsquo;s your life, and you&amp;rsquo;re going to have to live with the actions that you make. You have value, and your ruining your brand by undercharging.&lt;/p&gt;
+
+&lt;p&gt;That&amp;rsquo;s my list. What does yours look like?&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Take that, Mr. Barney</title>
+ <link>http://localhost:1313/brycematheson.io/post/2014-12-20-take-that-mr-barney/</link>
+ <pubDate>Sat, 20 Dec 2014 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2014-12-20-take-that-mr-barney/</guid>
+ <description>&lt;p&gt;We&amp;rsquo;ve all had those professors/teachers that we just don&amp;rsquo;t seem to mesh with. Recently, I had a professor with whom I could &lt;em&gt;not&lt;/em&gt; set aside my differences. The class was about Mobile Application Development. I went into it thinking, &amp;#8220;Wow, I&amp;rsquo;m excited! Finally, I&amp;rsquo;ll be able to create an iOS/Android application!&amp;#8221; On the first day of the class, Mr. Barney walked in and said, &amp;#8220;This is not a programming class. This is not an iOS development class. This is not an Android development class. This class has no tests. This class has no assignments. This class has no texts, no books.&amp;#8221;&lt;/p&gt;
+
+&lt;p&gt;As the class progressed, I got more and more frustrated with the structure and Mr. Barney&amp;rsquo;s teaching style. It seemed that the class was more about learning Mr. Barney than it was about the material. He came off as a close-to-retirement professor with a God-complex, who was tired of his job, and was just coasting on his measly salary for a few more years until he could finally escape.&lt;/p&gt;
+
+&lt;p&gt;The class consisted of a few technologies that we were forced to learn on our own, namely HTML 5, CSS Animations and Transitions, AJAX, DOM Manipulation, JavaScript Basics, etc. Because there were no class materials, we resorted to YouTube tutorials and blog articles to learn. On a bi-monthly basis, we would meet one-on-one in his office and present some sandbox code that we had been playing with that demonstrated one or more of these technologies. Based on his mood that day, he would open a little spreadsheet and rate you anywhere from &amp;#8220;Strongly Disagree&amp;#8221; to &amp;#8220;Strongly Agree,&amp;#8221; which ultimately equated to your class grade.&lt;/p&gt;
+
+&lt;p&gt;At one point, I decided to bring in a simple sandbox weather application, using an AJAX call to link to an API and populate data into the DOM based on the user&amp;rsquo;s location. The application used JQuery. While looking at my code, the second he saw a reference to JQuery, he tore it to &lt;em&gt;pieces.&lt;/em&gt; &amp;#8220;JQuery is of the devil.&amp;#8221; or &amp;#8220;JQuery is only for lazy programmers.&amp;#8221; and &amp;#8220;What happens if the JQuery library breaks, what happens to your application?&amp;#8221;&lt;/p&gt;
+
+&lt;p&gt;Okay, so, maybe he didn&amp;rsquo;t say, &amp;#8220;JQuery was of the devil.&amp;#8221;&lt;/p&gt;
+
+&lt;p&gt;Basically, his point all boiled down to this: You can use JQuery, but it&amp;rsquo;s a bloated library and it contains so many additional pieces that you don&amp;rsquo;t need, and ultimately, you can do exactly what you need with plain ol&amp;rsquo; vanilla JavaScript. It&amp;rsquo;s slow, and it would take a long time to download the entire library, when you don&amp;rsquo;t need it.&lt;/p&gt;
+
+&lt;p&gt;For the rest of the class, I hated him for it. 9 times out of 10 as I left his office, I was fuming. And I really do understand his point, and I believe that it has &lt;em&gt;some&lt;/em&gt; validity, but mostly, it&amp;rsquo;s just him being old and outdated, and stuck in his ways.&lt;/p&gt;
+
+&lt;p&gt;Even after finishing the class, I hated him for it. Have you tried looking for web tutorials online for advanced AJAX calls that don&amp;rsquo;t use JQuery? It&amp;rsquo;s &lt;em&gt;impossible&lt;/em&gt;!&lt;/p&gt;
+
+&lt;p&gt;In case you hadn&amp;rsquo;t noticed (as in, you aren&amp;rsquo;t using this website on a mobile device), the top navigation bar uses JQuery to convert to a small menu icon on smaller screens. I wanted to prove to myself that JQuery really isn&amp;rsquo;t &lt;em&gt;that&lt;/em&gt; bloated, and that it is in fact a useful tool, and better than writing vanilla JavaScript.&lt;/p&gt;
+
+&lt;p&gt;After playing with a few things, I finally got the results I was looking for. Check out the results that I got while using &lt;a href=&#34;http://tools.pingdom.com/fpt/&#34; target=&#34;_blank&#34;&gt;Pingdom Page Speed&lt;/a&gt;. More specifically, look at the red box. My &amp;#8216;styles.css&amp;rsquo; file (that isn&amp;rsquo;t minified, btw) weighs a whopping 6.2kB. JQuery, which is more than 6x larger, loads more than twice as fast. How did I do it?&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/pingdom-speed-results.jpg&#34; alt=&#34;Pingdom PageSpeed Results&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;If you&amp;rsquo;re familiar with Bootstrap, and the way that you can customize it just to your liking, JQuery is the same. Usually, whenever I use Bootstrap, I don&amp;rsquo;t need all the font icons or navigation bars, or any of that. I only use the responsive pieces. With JQuery, they have similar options on their website to where you can customize it to your liking. I knew that the only piece I&amp;rsquo;d be using on my website is the navigation library. So I stripped everything else out.&lt;/p&gt;
+
+&lt;p&gt;Also, up until this point, I wasn&amp;rsquo;t familiar with CDNs, or the power that they potentially had. Pulling JQuery from their hosted CDN, rather than from my on my own shared web server undoubtedly speeds up the page load. My website is pretty barebones, and that&amp;rsquo;s done on purpose to increase page speed. Loading times have come into consideration for everything I do on this site, but I don&amp;rsquo;t feel that JQuery has in anyway been detrimental to that.&lt;/p&gt;
+
+&lt;p&gt;I feel justified. Take that, Mr. Barney! &lt;/rant&gt;&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Pseudo-Responsive Images</title>
+ <link>http://localhost:1313/brycematheson.io/post/2014-12-15-pseudo-responsive-images/</link>
+ <pubDate>Mon, 15 Dec 2014 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2014-12-15-pseudo-responsive-images/</guid>
+ <description>&lt;p&gt;Honestly, I&amp;rsquo;m a bit embarrassed to say that I didn&amp;rsquo;t know how to do this before. I&amp;rsquo;ll be creating a blog post here fairly soon on my conversion from WordPress to Jekyll for this blog, but in doing so, I&amp;rsquo;ve learned a lot of cool new things.&lt;/p&gt;
+
+&lt;p&gt;Due to the vast number of mobile devices in circulation right now, I make it a habit to try and develop for mobile first, and then expand for the desktop user. Developing for mobile almost instantly implies responsive design. There are dozens of CSS frameworks to do this (Bootstrap, Foundation, Skeleton, etc.) intended to make your job a little bit easier.&lt;/p&gt;
+
+&lt;p&gt;I ran into an issue while coding this site. My content would all scale down properly and fit into the viewport perfectly, except for images, which would overflow the bounds of the viewport. I couldn&amp;rsquo;t for the life of me figure out what I was doing wrong. When copying content over from WordPress, I guess that I had added &amp;#8216;width&amp;rsquo; and &amp;#8216;height&amp;rsquo; attributes, which forced the images to display at those dimensions. After going through all of the images and removing both of those attributes, I simply went to my stylesheet and added the following. Lucky for me, I didn&amp;rsquo;t have too many images to go through:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-css&#34;&gt;img {
+ width: 100%;
+ box-shadow: 10px 10px 5px #888888;
+}
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Obviously the box-shadow isn&amp;rsquo;t required, but I just like add it for aesthetics.&lt;/p&gt;
+
+&lt;p&gt;That selects all images across my entire website, and tells them to stretch to 100% of the viewport (which, in the case of this site, is 700px). As the page resizes, or is viewed on a different viewport size (such as a phone or tablet), that image is scaled down accordingly.&lt;/p&gt;
+
+&lt;p&gt;One thing to mention, too, is that if you remove just the &amp;#8216;width&amp;rsquo; attribute, but leave the &amp;#8216;height&amp;rsquo; attribute, your images will come out all stretched and skewed as the image is scaled according to the viewport size.&lt;/p&gt;
+
+&lt;p&gt;It&amp;rsquo;s also important to note that this isn&amp;rsquo;t the &amp;#8216;real&amp;rsquo; way to present responsive images on your site, I&amp;rsquo;m just too lazy to do it the &lt;a href=&#34;http://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-srcset/&#34; target=&#34;_blank&#34;&gt;real way&lt;/a&gt;. This way works perfectly for me, until it becomes simpler.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Build a GUI Investment Calculator in Java</title>
+ <link>http://localhost:1313/brycematheson.io/post/2014-12-08-investment-calculator-java/</link>
+ <pubDate>Mon, 08 Dec 2014 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2014-12-08-investment-calculator-java/</guid>
+ <description>&lt;p&gt;I’m not a programmer. Some people just have that natural itch to want to go out and code all day long, but that isn’t me. I enjoy scripting and web development, but deep, low-level programming just simply isn’t my thing. So the fact that even &lt;em&gt;I&lt;/em&gt; was able to create a simple GUI application should tell you how easy it is. The code below might look daunting at first, but we’ll walk through it piece by piece to hopefully clear things up. I’ll try to make it as easy as possible to understand, but you should have at least a &lt;em&gt;basic&lt;/em&gt; understanding of programming to go through this.&lt;/p&gt;
+
+&lt;p&gt;Java makes creating applications really simple. I’ve dabbled with C++, but never stuck with it long enough to get into the Object Oriented pieces of it. Whenever learning a new programming language, it seems the first program you write is “Hello World.” The next program after that is a basic investment calculator, and so we’re going to continue that pattern.&lt;/p&gt;
+
+&lt;p&gt;When we’re finished, we’ll have a program that looks something like this:&lt;/p&gt;
+
+&lt;p&gt;&lt;img src=&#34;http://localhost:1313/brycematheson.io/img/post_images/guicalculator.png&#34; alt=&#34;GUI Investment Calculator&#34; /&gt;&lt;/p&gt;
+
+&lt;p&gt;At the end of this post, I’ll show the complete code. If you have the Java JDK (a free download, &lt;a href=&#34;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;), you can easily import this code into a text editor, save it with a .java extension, and then compile it using the command line. Something this would work:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;javac SimpleGUIProgram.java
+java SimpleGUIProgram
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Personally, I use Eclipse. It’s a &lt;a href=&#34;https://eclipse.org/downloads/packages/eclipse-ide-java-developers/keplersr1&#34; target=&#34;_blank&#34;&gt;free IDE that you can download&lt;/a&gt;, if you’re not interested in using a text editor.&lt;/p&gt;
+
+&lt;p&gt;Let’s get started.&lt;/p&gt;
+
+&lt;p&gt;First, let’s import some libraries. Libraries are basically a repository of reusable code. Rather than having to rewrite code over and over, why don’t we write it once, store it in the Java API, and then import it into our program whenever we need it? Luckily, someone has already done that for us! The specifics of each of these libraries isn’t super important, but just know that these include the graphical components that we’ll need to build our program.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Next, we’ll create the text fields and buttons that will be used in our program. Notice in the image above that we have four input fields (Investment Amount, Years, Annual Interest Rate, and Future Value) and two buttons (Compute and Reset). They’re pretty easy to define in Java.&lt;/p&gt;
+
+&lt;p&gt;You might wonder what &lt;span class=&#34;smallcode&#34;&gt;private&lt;/span&gt; means. Whenever you create an object and set it to private, that means that it can only be accessed within that same class. We could change it to &lt;span class=&#34;smallcode&#34;&gt;public&lt;/span&gt; or even &lt;span class=&#34;smallcode&#34;&gt;protected&lt;/span&gt;, but for this example, we’ll leave it how it is. There are some benefits to leaving things private, such as avoiding data corruption and a few other things, but that’s outside the scope of this tutorial.&lt;/p&gt;
+
+&lt;p&gt;Then we need to tell Java what kind of object we’ll be creating. We’ll be using &lt;span class=&#34;smallcode&#34;&gt;JTextField&lt;/span&gt;, which is just an input box, and &lt;span class=&#34;smallcode&#34;&gt;JButton&lt;/span&gt;, which, obviously, is a button. And after that, we just need to name our object. For the sake of being descriptive, I usually like to prefix my object names with &lt;span class=&#34;smallcode&#34;&gt;jtf&lt;/span&gt; or &lt;span class=&#34;smallcode&#34;&gt;jb&lt;/span&gt; or similar, so I know what it is quickly by looking at it.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;private JTextField jtfInvestmentAmount;
+private JTextField jtfAnnualInterestRate;
+private JTextField jtfNumberOfYears;
+private JTextField jtfFutureValue;
+private JButton jbtCompute;
+private JButton jbtReset;
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Next, we’re going to define the properties for the frame (the program window). The &lt;span class=&#34;smallcode&#34;&gt;setTitle&lt;/span&gt; property allows us to name the frame. You can see in the image above that the title of the window is “Loan Calculator” as we’ve defined here. You can name it whatever you’d like.&lt;/p&gt;
+
+&lt;p&gt;Next, we define the default close operation. This tells the computer what to do whenever the program is closed. We have the option to let the program to continue running, even when the box is closed. In this example, when the user hits the “x” in the corner of the window, we want our program to terminate, so we’ll use &lt;span class=&#34;smallcode&#34;&gt;setDefaultCloseOperation(Frame.EXIT_ON_CLOSE)&lt;/span&gt;.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;setSize&lt;/span&gt; defines the window width and height in pixels. Pretty self-explanatory.&lt;/p&gt;
+
+&lt;p&gt;&lt;span class=&#34;smallcode&#34;&gt;setLocationRelativeTo(null)&lt;/span&gt; allows us to center the window right in the middle of the screen. In my opinion, that’s the easiest and most user friendly. You have the option to set that location in pixels, using x and y coordinates, but generally, I’ve found that the user expects the window to open in the center of the screen.&lt;/p&gt;
+
+&lt;p&gt;Last, we want to set the layout. Java uses things called “Layout Managers”, which basically defines how elements are laid out inside of the program window. There are three layout managers that are most commonly used: Border, Flow, and Grid. You can read up on those other two, as I’m not going to explain them, but in this program, we’re going to be using the grid layout manager. It allows us to define how many rows, and how many columns we want for our program. &lt;span class=&#34;smallcode&#34;&gt;GridLayout(5,2,5,5)&lt;/span&gt; tells our program that we want to use the Grid Layout Manager, with five rows, two columns and then 5 pixels for spacing.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;setTitle(&amp;quot;Loan Calculator&amp;quot;);
+setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+setSize(500,300);
+setLocationRelativeTo(null);
+setLayout(new GridLayout(5,2,5,5));
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Now that we’ve defined our window, we need to create some text labels next to our input fields. Because it’s just text, we don’t use &lt;span class=&#34;smallcode&#34;&gt;private&lt;/span&gt; or &lt;span class=&#34;smallcode&#34;&gt;public&lt;/span&gt; on these objects. We use the following code to create a new label (JLabel) object. Again, when we name the object, it’s good practice to use a prefix so you can easily tell what type of object it is. I use &lt;span class=&#34;smallcode&#34;&gt;jl&lt;/span&gt; as my prefix. Then, we create the string of text for what the JLabel will output.&lt;/p&gt;
+
+&lt;p&gt;If you notice, I’ve placed a preceding space in front of the text. I find that Java likes to push things right up against the frame, and it’s not very aesthetically pleasing. By adding a space, it allows us to push the text away from the left edge ever-so-slightly. You can add more spacing if you prefer.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;JLabel jlInvestmentAmount = new JLabel(&amp;quot; Investment Amount&amp;quot;);
+JLabel jlNumberOfYears = new JLabel(&amp;quot; Number of Years&amp;quot;);
+JLabel jlAnnualInterestRate = new JLabel(&amp;quot; Annual Interest Rate&amp;quot;);
+JLabel jlFutureValue = new JLabel(&amp;quot; Future Value&amp;quot;);
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Earlier, we defined our textfields and buttons, but we didn’t actually create them. We basically told the program, “Hey, I’m going to be making these soon. Just wanted to give you a heads up.” But now we create them.&lt;/p&gt;
+
+&lt;p&gt;In the last line of code, we write &lt;span class=&#34;smallcode&#34;&gt;jtfFutureValue.setEditable(false)&lt;/span&gt;. I wanted the first three fields to be able to accept input from the user. But the last field (the Future Value field) is going to simply output our final answer. Rather than making the user confused by thinking they need to input something, I set the editing to &lt;span class=&#34;smallcode&#34;&gt;false&lt;/span&gt;.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;jtfInvestmentAmount = new JTextField();
+jtfNumberOfYears = new JTextField();
+jtfAnnualInterestRate = new JTextField();
+jtfFutureValue = new JTextField();
+jbtCompute = new JButton(&amp;quot;Compute&amp;quot;);
+jbtReset = new JButton(&amp;quot;Reset&amp;quot;);
+jtfFutureValue.setEditable(false);
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Now that we’ve defined and created everything, we should be good right? Not quite. If were to run the program right now, our program wouldn’t do anything. What happened to all the things we created, you might ask? We’ve created all the objects, but we haven’t told the program to add them to our frame (window). We can do this simply by typing &lt;span class=&#34;smallcode&#34;&gt;add&lt;/span&gt; and then the name of the object.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;add (jlInvestmentAmount);
+add (jtfInvestmentAmount);
+add (jlNumberOfYears);
+add (jtfNumberOfYears);
+add (jlAnnualInterestRate);
+add (jtfAnnualInterestRate);
+add (jlFutureValue);
+add (jtfFutureValue);
+add (jbtCompute);
+add (jbtReset);
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Next, we need to tell the computer that we want it to do something once we click on a button. This code doesn’t do much else, besides call other methods (functions) that we’ll define in a bit.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;ListenerClass listener = new ListenerClass();
+jbtCompute.addActionListener(listener);
+jbtReset.addActionListener(listener);
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Another very important piece: We need to set the window visibility to &lt;span class=&#34;smallcode&#34;&gt;true&lt;/span&gt;. Otherwise, nothing will appear when we run the program.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;setVisible(true);
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;Every program in Java requires a &lt;span class=&#34;smallcode&#34;&gt;main&lt;/span&gt; method. All this code does is calls the class that we’ve already created. It doesn’t look like much, but our program won’t run at all if we don’t have this.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;public static void main(String[] args) {
+new SimpleGUIProgram();
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;The following code does two important things: catches exceptions, and does all the math calculations for our program.&lt;/p&gt;
+
+&lt;p&gt;First, we need to assume that people are stupid. You would think that most people would be smart enough to input numbers into the fields of our program, but what happens if they entered a word instead of a number? Without a “try…catch”, the program would just crash, without any warning to our user. Instead, we can make things a little bit more user friendly and say, “Please enter numeric values” if they enter anything except numbers.&lt;/p&gt;
+
+&lt;p&gt;And second, the rest of this code takes the data entered by the user in the fields, does all of the calculations, and then formats it to look pretty. We pull the data from the fields, parse it into a number (either an Integer or a Double), and then convert the annual interest rate into a monthly interest rate. We could do that by dividing by 12, but I also combined the percentage into that calculation as well (1200 instead of 12) so that I don’t have to write another line of code to divide the percent by 100 as well.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;private void computeValue() {
+try {
+double annualInterestRate = Double.parseDouble(jtfAnnualInterestRate.getText());
+double monthlyInterestRate = annualInterestRate / 1200.0;
+int NumberOfYears = Integer.parseInt(jtfNumberOfYears.getText());
+double investmentAmount = Double.parseDouble(jtfInvestmentAmount.getText());
+double futureValue = investmentAmount * Math.pow(1.0 + monthlyInterestRate, NumberOfYears * 12);
+jtfFutureValue.setText(String.format(&amp;quot;%.2f&amp;quot;, futureValue));
+} catch (Exception e) {
+JOptionPane.showMessageDialog(null, &amp;quot; Please enter numeric values.&amp;quot;);
+}
+}
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;This code is very simple. Whenever a user clicks on the “Reset” button, it will call this method, and change whatever is input into the boxes into a blank string.&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;private void resetForm() {
+jtfInvestmentAmount.setText(&amp;quot;&amp;quot;);
+jtfAnnualInterestRate.setText(&amp;quot;&amp;quot;);
+jtfNumberOfYears.setText(&amp;quot;&amp;quot;);
+jtfFutureValue.setText(&amp;quot;&amp;quot;);
+}
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;And finally, this code is what links the buttons to the methods we created. We create a ListenerClass, which essentially says, “When I do this, do this.” So, “when I click on a button, call this method.”&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;private class ListenerClass implements ActionListener {
+public void actionPerformed(ActionEvent e) {
+if (e.getSource() == jbtCompute) {
+computeValue();
+}
+if (e.getSource() == jbtReset) {
+resetForm();
+}
+&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;And really, that’s it! Not to shabby for ~100 lines of code, eh? Here’s the entire code:&lt;/p&gt;
+
+&lt;pre&gt;&lt;code class=&#34;language-java&#34;&gt;/*************************
+* Created by: Bryce Matheson
+* Website: blog.mathesondigital.com
+* Date: 12/7/2014
+*
+* Purpose: A simple GUI Investment Calculator
+*
+* Rights: Free to use for Personal Use
+*************************/
+
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+
+public class SimpleGUIProgram extends JFrame {
+
+ private JTextField jtfInvestmentAmount;
+ private JTextField jtfAnnualInterestRate;
+ private JTextField jtfNumberOfYears;
+ private JTextField jtfFutureValue;
+ private JButton jbtCompute;
+ private JButton jbtReset;
+
+ public SimpleGUIProgram() {
+
+ setTitle(&amp;quot;Loan Calculator&amp;quot;);
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setSize(500,300);
+ setLocationRelativeTo(null);
+ setLayout(new GridLayout(5,2,5,5));
+
+ JLabel jlInvestmentAmount = new JLabel(&amp;quot; Investment Amount&amp;quot;);
+ JLabel jlNumberOfYears = new JLabel(&amp;quot; Number of Years&amp;quot;);
+ JLabel jlAnnualInterestRate = new JLabel(&amp;quot; Annual Interest Rate&amp;quot;);
+ JLabel jlFutureValue = new JLabel(&amp;quot; Future Value&amp;quot;);
+
+ jtfInvestmentAmount = new JTextField();
+ jtfNumberOfYears = new JTextField();
+ jtfAnnualInterestRate = new JTextField();
+ jtfFutureValue = new JTextField();
+ jtfFutureValue.setEditable(false);
+
+ jbtCompute = new JButton(&amp;quot;Compute&amp;quot;);
+ jbtReset = new JButton(&amp;quot;Reset&amp;quot;);
+
+ add (jlInvestmentAmount);
+ add (jtfInvestmentAmount);
+ add (jlNumberOfYears);
+ add (jtfNumberOfYears);
+ add (jlAnnualInterestRate);
+ add (jtfAnnualInterestRate);
+ add (jlFutureValue);
+ add (jtfFutureValue);
+ add (jbtCompute);
+ add (jbtReset);
+
+ ListenerClass listener = new ListenerClass();
+ jbtCompute.addActionListener(listener);
+ jbtReset.addActionListener(listener);
+
+ setVisible(true);
+ }
+
+ public static void main(String[] args) {
+ new SimpleGUIProgram();
+ }
+
+ private void computeValue() {
+ try {
+ double annualInterestRate = Double.parseDouble(jtfAnnualInterestRate.getText());
+ double monthlyInterestRate = annualInterestRate / 1200.0;
+ int NumberOfYears = Integer.parseInt(jtfNumberOfYears.getText());
+ double investmentAmount = Double.parseDouble(jtfInvestmentAmount.getText());
+ double futureValue = investmentAmount * Math.pow(1.0 + monthlyInterestRate, NumberOfYears * 12);
+ jtfFutureValue.setText(String.format(&amp;quot;%.2f&amp;quot;, futureValue));
+ } catch (Exception e) {
+ JOptionPane.showMessageDialog(null, &amp;quot; Please enter numeric values.&amp;quot;);
+ }
+ }
+
+ private void resetForm() {
+ jtfInvestmentAmount.setText(&amp;quot;&amp;quot;);
+ jtfAnnualInterestRate.setText(&amp;quot;&amp;quot;);
+ jtfNumberOfYears.setText(&amp;quot;&amp;quot;);
+ jtfFutureValue.setText(&amp;quot;&amp;quot;);
+ }
+
+ private class ListenerClass implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ if (e.getSource() == jbtCompute) {
+ computeValue();
+ }
+ if (e.getSource() == jbtReset) {
+ resetForm();
+ }
+ }
+ }
+}
+&lt;/code&gt;&lt;/pre&gt;
+</description>
+ </item>
+
+ <item>
+ <title>My love-hate relationship with WordPress</title>
+ <link>http://localhost:1313/brycematheson.io/post/2014-12-06-my-love-hate-relationship-with-wordpress/</link>
+ <pubDate>Sat, 06 Dec 2014 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2014-12-06-my-love-hate-relationship-with-wordpress/</guid>
+ <description>
+
+&lt;p&gt;Recently, I’ve really been getting fed up with WordPress. And here’s why.&lt;/p&gt;
+
+&lt;p&gt;WordPress dates all the way back to 2001. It was originally developed as a simple blogging platform based off of MySQL and PHP. Close to fifteen years later, it’s become a web standard and is used as the Framework/CMS for &lt;a href=&#34;http://en.wikipedia.org/wiki/WordPress&#34; target=&#34;_blank&#34;&gt;more than 20% of all the websites on the internet&lt;/a&gt;. And that’s exactly the problem.&lt;/p&gt;
+
+&lt;p&gt;WordPress has exploded into a million different forks and subprojects, and has been expanded to run an equal amount of themes and plugins. My biggest issue with this is that WordPress was never &lt;em&gt;designed&lt;/em&gt; to support this. Years down the road, it’s still sitting on code that dates back a decade. The same issue holds true with Microsoft. Even after launching Windows 8.1, it still has pieces of code that were used in the Windows 3.1 and Windows 95 operating systems. It baffles me that 20 years later, we still can’t seem to ditch MS-DOS or the Registry.&lt;/p&gt;
+
+&lt;p&gt;WordPress was never designed to be used as an e-commerce platform, but with the help from the guys over at &lt;a href=&#34;http://www.woothemes.com/woocommerce/&#34; target=&#34;_blank&#34;&gt;Woocommerce&lt;/a&gt;, it’s never been easier and quicker to do so. WordPress was never designed to be used as a Social Media platform, but of course, there are plugins to do that as well. WordPress is so simple and easy to use, that it’s become overly bloated with features to cater to the needs of everyone. I fear that it’s soon going to crumble in on itself.&lt;/p&gt;
+
+&lt;h2 id=&#34;security-holes:4416bd877d3758ff29e0e8e3c2df4fd1&#34;&gt;Security Holes&lt;/h2&gt;
+
+&lt;p&gt;And here’s something else to think about too. Even if only 1/100th of all websites on the internet were using WordPress as their CMS, imagine what would happen if a large exploit were found. Millions of websites are instantly vulnerable in the hands of skilled hackers. Sadly, the number of potential targets is a lot larger than 1%, should an exploit be found. Many users don’t know that they would be perfectly fine completely ditching the database, and just using static HTML to host their blogs, completely eliminating the security flaws.&lt;/p&gt;
+
+&lt;h2 id=&#34;updates:4416bd877d3758ff29e0e8e3c2df4fd1&#34;&gt;Updates&lt;/h2&gt;
+
+&lt;p&gt;WordPress updates are the absolute worst. Starting somewhere in the time-frame of Wordpress 3, automatic updates were introduced by default (although you can turn these off through the database, I believe). For a lot of the websites I build and manage for clients, I set myself up as an administrator. Whenever an automatic update is pushed, I get an email saying, “Your WordPress installation has been updated to version 4.0.1…” I cringe just thinking about all the hundreds of things that could now be broken on dozens of my websites. Granted, the WordPress team does their absolute best to ensure that nothing breaks, but with hundreds of thousands of different themes and plugins, how can anyone be absolutely certain that they won’t be a compatibility issue somewhere?&lt;/p&gt;
+
+&lt;h2 id=&#34;comments:4416bd877d3758ff29e0e8e3c2df4fd1&#34;&gt;Comments&lt;/h2&gt;
+
+&lt;p&gt;The comment system in WordPress is so flawed, it’s not even funny. Even when using a plugin to block/prevent spam, there are times when I’ll log into my dashboard and find that I have 300+ pending comments to be approved, 90% of them being complete garbage. What’s even more annoying is that all of these comments, whether legitimate or spam, are being stored in the database, ultimately slowing down the over-all speed of your website.&lt;/p&gt;
+
+&lt;h2 id=&#34;speed:4416bd877d3758ff29e0e8e3c2df4fd1&#34;&gt;Speed&lt;/h2&gt;
+
+&lt;p&gt;Touching on this already a little earlier, having a backend attached to any website is most always going to ensure a decrease in speed unless it’s closely managed and optimized. Most of the time, the end-user has little to no knowledge on how to do this. Many users would be perfectly fine serving plain ol’ static HTML or using a static site builder such as &lt;a href=&#34;http://jekyllrb.com&#34; target=&#34;_blank&#34;&gt;Jekyll&lt;/a&gt; or &lt;a href=&#34;http://middlemanapp.com&#34; target=&#34;_blank&#34;&gt;Middleman&lt;/a&gt;. Every query to a database requires more bandwidth, and more server strain.&lt;/p&gt;
+
+&lt;p&gt;I’m a little hesitant to even touch on the topic of themes, because it irritates me so much. The other day I was looking at some of &lt;a href=&#34;http://themeforest.net/search?utf8=✓&amp;term=&amp;view=list&amp;sort=sales&amp;date=&amp;category=wordpress&amp;price_min=&amp;price_max=&amp;sales=&amp;rating_min=&amp;platform=&#34; target=&#34;_blank&#34;&gt;the best-selling WordPress themes on themeforest&lt;/a&gt;. These themes, in my opinion, are so poorly coded, and so irritatingly slow. The builders of these themes attempt to cater to everyone and no one, all at the same time. Do they have any training about UI or UX? Do they understand that they need to minimize their CSS and JavaScript? Do they understand that they need to optimize their images to a suitable web size? Clients come to me and say, “Oooh. I like this look.” They truly have no idea what they’re doing. Having something that looks “pretty” just won’t cut it. There’s a lot more to think about behind the scenes, rather than just how a website looks.&lt;/p&gt;
+
+&lt;p&gt;I’ve seen theme packages that, for the entire install, run in the area of 15 megabytes. 15 MEGABYTES!? Are you kidding me? Even with LTE cell phone speeds and fiber-optic internet connections, 15 megabytes is a lot of data. Good luck having users stick around when your site won’t load on their phones. Some people might say, “Well, users will wait for at least a second for my site to load.” Wrong. &lt;a href=&#34;http://www.fastcompany.com/1825005/how-one-second-could-cost-amazon-16-billion-sales&#34; target=&#34;_blank&#34;&gt;Amazon did a study&lt;/a&gt; on page load speed, and how it affects their sales conversion rates. They found that a one-second difference in page-loading speed could cost them up to $1.6 Billion in sales.&lt;/p&gt;
+
+&lt;h2 id=&#34;the-art-of-web-design:4416bd877d3758ff29e0e8e3c2df4fd1&#34;&gt;The Art of Web Design&lt;/h2&gt;
+
+&lt;p&gt;In my mind, building a website truly is a work of art. I’m proud of the hours that I’ve spent in learning, growing, and honing my skills in order to develop something out of thin air that helps a client’s business or hobby or whatever. However, nowadays, it seems that we’re beginning to lose that art in development. Websites such as &lt;a href=&#34;http://www.wix.com&#34; target=&#34;_blank&#34;&gt;wix&lt;/a&gt; make it seemingly so simple to throw up a website that anyone can do it. WordPress is no different. Now, because of the simplicity of WordPress, people begin calling themselves “Developers” or “Experts” without even touching a single line of code.&lt;/p&gt;
+
+&lt;h2 id=&#34;ease-of-clients:4416bd877d3758ff29e0e8e3c2df4fd1&#34;&gt;Ease of Clients&lt;/h2&gt;
+
+&lt;p&gt;Now, here comes the love. I really don’t hate WordPress, although it may seem that way. One of the number one reasons I use WordPress as a CMS for my entire client base is the ability to entirely hand of a project. We’ve all worked with clients that are annoying, nagging, and constantly changing their mind. When the project is done, I can’t wait to get “rid” of them, because it’s a never-ending project. Nothing ever gets finished. WordPress allows me to (finally!) finish a project and give them the ability to change and manipulate virtually anything they may want with knowing little or no code at all, and best of all, without involving me.&lt;/p&gt;
+
+&lt;h2 id=&#34;quick-and-inexpensive:4416bd877d3758ff29e0e8e3c2df4fd1&#34;&gt;Quick and Inexpensive&lt;/h2&gt;
+
+&lt;p&gt;When you’re constantly beginning new projects, you get in the habit of building your own mini-framework, in hopes to cut off some of the development time or shave off some of the repetitiveness. WordPress is KING of saving time. I can create a new hosting environment, and have a functional WordPress installation in less than five minutes total. Then, I can focus on the needs of the customer and the design, rather than re-inventing the wheel for the 500th time.&lt;/p&gt;
+
+&lt;h2 id=&#34;conclusion:4416bd877d3758ff29e0e8e3c2df4fd1&#34;&gt;Conclusion&lt;/h2&gt;
+
+&lt;p&gt;Ultimately, I think my hatred really comes down to the bloat of WordPress. It reminds me so frequently of those who attempt to build an entire website using Dreamweaver’s visual mode. Yes, it’s possible to do it without knowing any code at all. But if you know anything about code, you can instantly look at the code that Dreamweaver spits out, and you know how much bloat and garbage can be cut out. WordPress is an incredible piece of software, and that’s apparent in it’s widespread usage. But bloat is my number one concern.&lt;/p&gt;
+
+&lt;p&gt;If you’re familiar with &lt;a href=&#34;https://developers.google.com/speed/pagespeed/&#34; target=&#34;_blank&#34;&gt;Google’s Page Speed&lt;/a&gt; analysis, you might be surprised to see that even some of the most popular websites rarely score above 50%. Take a basic WordPress theme, give it a test, and you might be surprised that you only received a score of 27. Developing everything from scratch, you can easily shave off the bloat and improve your page speed, which can equate to improved SEO through Google.&lt;/p&gt;
+
+&lt;p&gt;One last point, and then I’ll shut up. Am I using WordPress to run my blog? Absolutely. Is there a lot of bloat? Maybe a little, but I’ve tried to cut out everything that I could. I’m scoring in the 90’s in most aspects of Google’s Page rankings. I think I fall into the trap that so many other users do, and try too hard to focus on design, colors, and appearance, and not so much on the content. I was recently inspired by &lt;a href=&#34;http://davidbcalhoun.com&#34; target=&#34;_blank&#34;&gt;David Calhoun’s blog&lt;/a&gt;, and have since changed the design of my own blog to a more minimal design. David’s blog is great. It’s plain, clean, crisp, but more important, it’s fast. It provides the required functionality, and then the rest is focused on the content. Does David’s readers care that his blog is plain? Not really. He has a consistent reader-base, because of what he provides. Rarely, if ever, would anyone say, “This is a great looking site. I’m going to come back, even if there’s nothing here for me.” No. Does a good design/functionality help? Of course. But it’s not everything.&lt;/p&gt;
+</description>
+ </item>
+
+ <item>
+ <title>Here&#39;s to actually sticking with something</title>
+ <link>http://localhost:1313/brycematheson.io/post/2014-12-05-heres-to-actually-sticking-with-something/</link>
+ <pubDate>Fri, 05 Dec 2014 18:50:20 -0700</pubDate>
+
+ <guid>http://localhost:1313/brycematheson.io/post/2014-12-05-heres-to-actually-sticking-with-something/</guid>
+ <description>&lt;p&gt;When I was 16 (yes, I&amp;rsquo;m young, okay?), I had the idea for a Tech Blog. Not that it had never been done before or anything, but it&amp;rsquo;s just that ever since the age of 9, technology is the only hobby or thing in my life that I&amp;rsquo;ve consistently held interest in. I&amp;rsquo;m not sure why I wanted to start one, but I just figured it would be a good way of tracking my progress and learning of various technologies, as well as helping others in anyway, if possible. I got about three posts in, got discouraged, thought &amp;#8220;this is stupid&amp;#8221;, and told myself that I would never in any way, shape, or form be able to compete with the larger tech blogs like &lt;a href=&#34;http://www.cnet.com&#34; target=&#34;_blank&#34;&gt;CNet&lt;/a&gt;, &lt;a href=&#34;http://techcrunch.com&#34; target=&#34;_blank&#34;&gt;TechCrunch&lt;/a&gt;, or TUAW (now&lt;a href=&#34;http://www.imore.com&#34; target=&#34;_blank&#34;&gt; iMore&lt;/a&gt;).&lt;/p&gt;
+
+&lt;p&gt;But now, I&amp;rsquo;m kicking myself. In hindsight, I keep thinking to myself, &amp;#8220;Imagine the web presence you could have had, if only you had hung on for all these years.&amp;#8221; Well, recently, I&amp;rsquo;ve had a bit of motivation (or maybe it&amp;rsquo;s procrastination of more important things), and I&amp;rsquo;ve decided to actually stick to this blog. It&amp;rsquo;s been going for about six months now, and I plan on continuing the trend.&lt;/p&gt;
+
+&lt;p&gt;I have &lt;a href=&#34;http://www.laytreasuresinheaven.com&#34; target=&#34;_blank&#34;&gt;another blog&lt;/a&gt; dealing with the religious aspect of my life, and it&amp;rsquo;s actually proven to be successful (at least in my book), getting around 30,000 hits a month. It&amp;rsquo;s not incredible, and I haven&amp;rsquo;t been very great at posting lately, but it&amp;rsquo;s really rewarding to see what I&amp;rsquo;ve been able to achieve by keeping it running for around a year and a half.&lt;/p&gt;
+
+&lt;p&gt;So, here&amp;rsquo;s to actually sticking with something, for once in my life.&lt;/p&gt;
+</description>
+ </item>
+
+ </channel>
+</rss> \ No newline at end of file