<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Brandon Kalinowski]]></title><description><![CDATA[The digital portfolio and personal blog for Brandon Kalinowski]]></description><link>https://brandonkalinowski.com</link><image><url>https://brandonkalinowski.com/logos/bk-logo-512.png</url><title>Brandon Kalinowski</title><link>https://brandonkalinowski.com</link></image><generator>GatsbyJS Brandon Kalinowski</generator><lastBuildDate>Fri, 10 May 2024 23:14:20 GMT</lastBuildDate><atom:link href="https://brandonkalinowski.com/rss.xml" rel="self" type="application/rss+xml"/><author><![CDATA[Brandon Kalinowski]]></author><copyright><![CDATA[Copyright © 2024 Brandon Kalinowski]]></copyright><item><title><![CDATA[Finding the "Ideal" Productivity App]]></title><description><![CDATA[TLDR: While there is no perfect app, I have settled on using Twos for managing…]]></description><link>https://brandonkalinowski.com/finding-the-ideal-productivity-app</link><guid isPermaLink="false">https://brandonkalinowski.com/finding-the-ideal-productivity-app</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 25 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;TLDR: While there is no perfect app, I have settled on using &lt;a href=&quot;https://www.TwosApp.com?code=3781335&quot;&gt;Twos&lt;/a&gt; for managing my tasks. Give it a try and use referral code &lt;code class=&quot;language-text&quot;&gt;3781335&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;my-timeline-of-task-management-apps&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#my-timeline-of-task-management-apps&quot; aria-label=&quot;my timeline of task management apps permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;My Timeline of Task Management Apps&lt;/h2&gt;
&lt;p&gt;This is a crowded space, and it seems a new app is released daily. A quick search on YouTube will yield hundreds of apps promising to help improve productivity. And the rabbit hole is &lt;em&gt;deep&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&quot;1-the-hit-list&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-the-hit-list&quot; aria-label=&quot;1 the hit list permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. The Hit List&lt;/h3&gt;
&lt;p&gt;In the past, the best app I ever used for managing tasks is called &lt;strong&gt;The Hit List&lt;/strong&gt;. It is a $50 Mac app that excels because of its simplicity. It is close to using pen and paper and the innovation it brought was being able to infinitely nest tasks and subtasks like an outliner. To add a subtask, you would just hit enter to create a new line and then Tab to indent. You could set start and end dates (many todo list apps can only set end or &quot;due dates&quot;). Unfortunately, the application wasn&apos;t maintained and I had to move on to a new application.&lt;/p&gt;
&lt;h3 id=&quot;2-todoist&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-todoist&quot; aria-label=&quot;2 todoist permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Todoist&lt;/h3&gt;
&lt;p&gt;I then switched to Todoist which again was attractive because of its simplicity. I used it extensively for certain projects in college and then for development of my software product. After a few years where it really helped me keep track of things, I found myself not wanting to open the app. The app that once brought calm and sanity now brought overwhelm.&lt;/p&gt;
&lt;p&gt;The issue with Todoist and really most task-oriented apps is that it is much easier to add items to the list than to remove items. Unlike paper planners which can only fit so many tasks per day, Todoist can be an infinite list. Adding items to the today view is so much easier than putting it into a seperate space, which compounds on this problem. Each day, the list of tasks that are due grows. When I quit using Todoist, I had some 200+ tasks that were &quot;due&quot;.&lt;/p&gt;
&lt;p&gt;Todoist is used at my place of work so I do use it still. Since abandoning it for myself, I have used it on occasion to quickly capture a thought on mobile. But I have now replaced it with Twos for that use case.&lt;/p&gt;
&lt;h3 id=&quot;3-skedpal&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-skedpal&quot; aria-label=&quot;3 skedpal permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. SkedPal&lt;/h3&gt;
&lt;p&gt;SkedPal is an algorithmic time-blocking planner. You tell it what areas you want to work on when (ie family stuff in the evening, creative work in the morning, exercise 3 times a week, I want to read this book that will take me 8 hours to read, etc) and it looks at your calendar and schedules tasks in a way that makes sense. Adding the time component is really helpful because only so many things can fit in one day. I used it for some time but stopped using it because my work schedule didn&apos;t fit well with the product. I also didn&apos;t feel like I was getting enough use out of it to warrant the $15/mo cost.&lt;/p&gt;
&lt;p&gt;The other issue I had was that it was hard to show my boss what I had worked on. It had an integration with Asana, but tasks I created in SkedPal did not exist anywhere except for my account. I did like how SkedPal was outline-based. But I felt I was constantly fiddling with the app as I didn&apos;t like how it was scheduling my day.&lt;/p&gt;
&lt;h3 id=&quot;4-focuster&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#4-focuster&quot; aria-label=&quot;4 focuster permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Focuster&lt;/h3&gt;
&lt;p&gt;This app was a lifesaver during and leading up to my finals week before graduating. You put tasks and their duration into it and it immediately schedules it for you. It answers the question &quot;what should I be working on &lt;em&gt;right now&lt;/em&gt;?&quot;&lt;/p&gt;
&lt;h3 id=&quot;5-logseq&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#5-logseq&quot; aria-label=&quot;5 logseq permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Logseq&lt;/h3&gt;
&lt;p&gt;Logseq is where I think and take notes. But it isn&apos;t great for task management in my case because it is not designed to be collaborative.&lt;/p&gt;
&lt;h3 id=&quot;6-checkvist-and-dynalist&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#6-checkvist-and-dynalist&quot; aria-label=&quot;6 checkvist and dynalist permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Checkvist and Dynalist&lt;/h3&gt;
&lt;p&gt;These are outliner apps. I prefer Checkvist because everything can be done with the keyboard. I used it when discerning marriage with my now wife. I had a list of discussion topics in Logseq that I pasted into Checkvist to share with my then girlfriend.&lt;/p&gt;
&lt;p&gt;Checkvist has a few things I don&apos;t like. First, the experience on mobile isn&apos;t great. I found myself using Google Keep and Apple Notes in its place for ephemeral lists.&lt;/p&gt;
&lt;h3 id=&quot;7-tana&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#7-tana&quot; aria-label=&quot;7 tana permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. Tana&lt;/h3&gt;
&lt;p&gt;I was invited to the Tana alpha. I like how it is similar to Logseq and Workflowly with the addition of Supertags (which are really like classes for those familiar with programming). I built my &quot;ideal simplified task management system&quot; in Tana. But in using it, I found it too complex. I don&apos;t want to have to think about how to use an app. The app should help me not corner me into a complex system. I found a lot of YouTubers were spending a lot of time tweaking and demonstrating their &quot;system&quot; on Tana rather than actually doing work.&lt;/p&gt;
&lt;h3 id=&quot;8-kanban-tools&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#8-kanban-tools&quot; aria-label=&quot;8 kanban tools permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;8. Kanban Tools&lt;/h3&gt;
&lt;p&gt;I looked at different software packages to manage tasks with kanban. One nice-looking option is &lt;a href=&quot;https://getstacksapp.com&quot;&gt;Stacks&lt;/a&gt;. Ultimately though, I settled on a different app.&lt;/p&gt;
&lt;h3 id=&quot;9-twos&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#9-twos&quot; aria-label=&quot;9 twos permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;9. Twos&lt;/h3&gt;
&lt;p&gt;I had discovered Twos a while ago. My initial thought was&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Thinking in Logseq&lt;/li&gt;
&lt;li&gt;Deep task management in Tana&lt;/li&gt;
&lt;li&gt;Lightweight list making in Twos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Twos was something I could share with my wife. It brings the day-centered view from Logseq to a web-based application that has a clean and simple UI. Anything you want to remember you write in Twos, and it is saved into that day. Notes, memories, tasks, all in one place.&lt;/p&gt;
&lt;p&gt;From there, you can move items into dedicated lists.&lt;/p&gt;
&lt;p&gt;It also supports basic nesting of tasks -- not as powerful as a dedicated outliner like Logseq -- but good enough for my usecase.&lt;/p&gt;
&lt;p&gt;Ultimately I decided I didn&apos;t need Tana.&lt;/p&gt;
&lt;p&gt;Twos is sort of like Todoist but better. Because each new day is a blank slate. I can work, and when I have an idea for a new feature or thing to do, I can write it down in the today view. Then if I can work through that list. Personal and work tasks can coexist in the day view. When I complete a work task, I can move it into the shared &quot;Work Done&quot; list, where my boss can track the project status. I can file ideas into a &quot;Someday list&quot; so that my actual task list is managable and not overwhelming.&lt;/p&gt;
&lt;p&gt;Give &lt;a href=&quot;https://www.TwosApp.com?code=3781335&quot;&gt;Twos&lt;/a&gt; a try for managing your tasks. It doesn&apos;t cost a thing! Be sure to use my referral code &lt;code class=&quot;language-text&quot;&gt;3781335&lt;/code&gt; when registering because I have found that the referral link doesn&apos;t always include the referral code.&lt;/p&gt;
&lt;h2 id=&quot;additional-tools&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#additional-tools&quot; aria-label=&quot;additional tools permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Additional Tools&lt;/h2&gt;
&lt;p&gt;Looking for a singular app to manage everything in your life is a fool&apos;s errand. It is better to use each tool for its strengths, and supplement with other tools where it makes sense. While I could keep all of my notes in Twos, I like having them locally in my Logseq graph. To link these two together I use &lt;a href=&quot;https://hookproductivity.com&quot;&gt;Hookmark&lt;/a&gt;. Note that you could generate the Logseq links without Hookmark, but having a keyboard shortcut is invaliable. Hookmark also allows you to create links for local files and emails. I then insert these links into my Twos Reference list, and the links resolve on Mac only. This further allows me to refer to private notes while sharing the Twos list publicly.
This is a crowded space, and it seems a new app is released daily. A quick search on YouTube will yield hundreds of apps promising to help improve productivity. And the rabbit hole is &lt;em&gt;deep&lt;/em&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Encryption Update]]></title><description><![CDATA[It has been some time since my last article on encryption and using PGP. For…]]></description><link>https://brandonkalinowski.com/encryption-update</link><guid isPermaLink="false">https://brandonkalinowski.com/encryption-update</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 05 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It has been some time since my last article on encryption and using PGP. For some time now I have been wanting to stop using the Yubikey for OpenPGP. Why? Well it simply boils down to inconvenience and time. I now spend less time using my Mac desktop (I rarely boot it up) and spend most of my computing time on my late 2013 MacBook. This is the very last Apple computer made that includes an NVIDIA card (important for my live-streaming usage) and is still supported. The computer has been extremely reliable, though it did die on me unexpectedly at times. The battery had more than 1,100 cycles (it is rated for 1,000). I ordered a replacement battery and picked up an 11 inch iPad Pro as screenplay reading device and backup for the MacBook. It&apos;s possible to make git commits from the iPad but Yubikey support with USB-C is limited and less portable. So I&apos;ve been meaning to locate the offline master key to replace the subkey stubs so I could use them on my mobile devices.&lt;/p&gt;
&lt;p&gt;To put it into a list, here is why I am moving away from hardware OpenPGP&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It&apos;s inconvenient. My laptop has two USB-A ports and one of those is taken by my logitech mouse. The way the Yubikey sits doesn&apos;t give me great confidence that it won&apos;t break or bend in the port. I would recommend using the Nano if your primary computer device ends up being a laptop.&lt;/li&gt;
&lt;li&gt;It is slow. It takes about a second to sign a git commit and you have to mess with PINS. This doesn&apos;t sound like much but as someone who commits frequently the hassle slows down the flow. Changes to my bash profile remain uncommitted as I don&apos;t have my Yubikey always plugged in now. Big rebases are painful.&lt;/li&gt;
&lt;li&gt;I&apos;d like to start using PGP more widely. That means decrypting emails on the iPad, remote servers, and more.&lt;/li&gt;
&lt;li&gt;I&apos;m not &lt;em&gt;currently&lt;/em&gt; writing missle software. My threat model just doesn&apos;t justify a hardware PGP key. Even then there are better tools for encryption such as age which mostly exist outside of the Yubikey.&lt;/li&gt;
&lt;li&gt;I trust my own macOS. The disk is now encrypted. I keep it free from malware and have an inbound firewall. I will still use the Yubikey for OpenPGP operations on less-trusted hosts (i.e. my Windows partitiion if needed).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I probably will eventually pick up a Yubikey Nano for convenience. It is useful for PIV sudo access where a short pin is easier than a long password. Since the hardware locks itself permanently after three incorrect tries, it&apos;s sufficiently secure to authorize the admin account (the entire disk is still protected by FileVault so knowledge of the password is still required)&lt;/p&gt;
&lt;h2 id=&quot;benchmarks&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#benchmarks&quot; aria-label=&quot;benchmarks permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Benchmarks&lt;/h2&gt;
&lt;p&gt;I wanted to quantify just how slow git signing is. Here are the results of a simple benchmark.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;RSA 4096 git sign CPU 100x
real	0m15.852s
user	0m0.920s
sys	0m1.497s

RSA 4096 git sign card 100x
real	1m29.188s
user	0m0.947s
sys	0m1.550s

RSA 2048 git sign CPU 100x
real	0m14.233s
user	0m0.880s
sys	0m1.387s

RSA 4096 git sign card 1x
real	0m0.888s
user	0m0.014s
sys	0m0.023s

Unsigned commit single 1x
real	0m0.028s
user	0m0.010s
sys	0m0.015s&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Not the significant difference between the real time for RSA4096 on a card and RSA2048 on the laptop CPU.  Even RSA4096 has similar speeds on the CPU but there&apos;s little reason to bother with RSA4096 for the next ten years. After all, GitHub uses RSA2048 keys so a verified commit is only as strong as the weakest signature. Even then a SHA-1 collision could happen before a commit signature is forged. Any motivated attacker would have better luck harming the integrity of a repo by compromising a git push key than finding the right primes.&lt;/p&gt;
&lt;p&gt;I&apos;ll be honest, I like seeing those green &quot;Verified&quot; badges. That&apos;s reason enough for me to sign a commit. Others have pointed out that if you sign tags signing git commits is of dubious value. I haven&apos;t seen any real solution to what to do after mandating GPG signatures. How do you bootstrap all those GPG keys, mark them as trusted, and then verify on a new machine? The more committers you have the trickier that gets. Sure it can be done, but it isn&apos;t pretty. For these reasons, a shorter signing key that is still sufficiently secure until 2030 is good enough for me.&lt;/p&gt;
&lt;h3 id=&quot;references&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#references&quot; aria-label=&quot;references permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;References&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://anarc.at/blog/2020-03-17-git-gpg-verification/&quot;&gt;https://anarc.at/blog/2020-03-17-git-gpg-verification/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.cryptologie.net/article/487/a-history-of-end-to-end-encryption-and-the-death-of-pgp/&quot;&gt;https://www.cryptologie.net/article/487/a-history-of-end-to-end-encryption-and-the-death-of-pgp/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.cryptologie.net/article/502/alternatives-to-pgp/&quot;&gt;https://www.cryptologie.net/article/502/alternatives-to-pgp/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;on-keybase&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#on-keybase&quot; aria-label=&quot;on keybase permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;On Keybase&lt;/h2&gt;
&lt;p&gt;Keybase was purchased by Zoom. Zoom was well-known for many privacy issues and poor-practices. Others noted cooperation with the CCP.&lt;/p&gt;
&lt;p&gt;The aquisition was covered by many in the tech world as &quot;the end of Keybase&quot;. I find this unfortunate because the Keybase aquisition was a clear move by Zoom to hire good cryptographers and improve the security stance of the company. Further, the whole point of end-to-end cryptography is that you don&apos;t need to trust the server. It&apos;s possible that Keybase could maliciously change their client to no longer use the encryption Keybase built, but that appears even less likely now that doing so would harm the image of a large company intent on gaining more user trust and a better security posture.&lt;/p&gt;
&lt;p&gt;What Keybase built was very innovative and made something that only appealed to the tech crowd (PGP and asymetric encryption) usable by the masses. The key-per-device model is a saner approach than a long-lived PGP key shared across devices. The saltpack library adds forward secrecy and other useful properties (i.e. signcryption) that you can&apos;t get with PGP in practice.&lt;/p&gt;
&lt;p&gt;All of that said, the larger developer community has chosen to move on from Keybase since the aquisition. I am not without my critique:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The future of the Keybase product is unclear. Keybase was still a niche product relative to Zoom and putting new security developer resources on the main product was the obvious business choice.&lt;/li&gt;
&lt;li&gt;Keybase was very innovative but the product felt like a grand experiment. Indeed the product was impressive for a young company. But the product felt heavy on macOS. I noticed that Keybase File System is very chatty with the internet in the background.&lt;/li&gt;
&lt;li&gt;The chat UI felt sluggish. It&apos;s something I wanted to recommend to those outside the tech space, but I just couldn&apos;t. Signal is a much more user-friendly alternative despite Keybase having more technical innovation. There&apos;s wisdom in the old unix philosophy &quot;do one thing and do it well&quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;backups&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#backups&quot; aria-label=&quot;backups permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Backups&lt;/h2&gt;
&lt;p&gt;Backups are important. I noticed this when switching phones. Many of my 2FA codes only exist on my new phone. Losing said phone would lock me out of many accounts. Securing those is a planned project once my PGP key is secured. It also took me some time to find my PGP master key flash drive. If I keep the master key offline, what happens when the flash drive stops working? I&apos;d have to retire my entire key. Same thing if the subkeys were lost, I&apos;d lose access to any encrypted files. Another reason I am switching away from the Yubikey is that losing it would be disasterous.&lt;/p&gt;
&lt;h2 id=&quot;lets-get-started&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#lets-get-started&quot; aria-label=&quot;lets get started permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Let&apos;s get started&lt;/h2&gt;
&lt;p&gt;With all that said, it is time to update my PGP situation. I&apos;ll outline the steps I took here, but this isn&apos;t intended as a complete tutorial. Feel free to follow along, and if you are just getting started, I&apos;m going to recommend following the &lt;a href=&quot;https://github.com/lfit/itpol/blob/master/protecting-code-integrity.md&quot;&gt;ITPol Guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PGP is far from user friendly. I spent a lot of time on research to decide my best course of action. There are so many differing opinions on how best to generate keys and back them up. I spent some time generating bogus PGP keyrings to test different actions such as revoking and expiring subkeys.&lt;/p&gt;
&lt;p&gt;After locating my flash drive named GPG, I backed up my existing public and secret key (the secret subkeys were stubs) via GPG keychain and then imported my master key and eventually discovered my password.&lt;/p&gt;
&lt;p&gt;In that process, I locking up my Yubikey OpenPGP applet. I even ended up disabling the PUK key unfortunately (a pin that I do not have written down). The Yubikey app situation has since changed and the 8+ Yubikey GUI and CLI utilities have been replaced by &quot;Yubikey Manager&quot;. I used &lt;code class=&quot;language-text&quot;&gt;brew uninstall&lt;/code&gt; to remove all these apps and then &lt;code class=&quot;language-text&quot;&gt;brew install --cask yubico-yubikey-manager&lt;/code&gt; . This includes the ykman CLI in the app bundle, but you need to set up an alias to use it as simply &lt;code class=&quot;language-text&quot;&gt;ykman&lt;/code&gt;. I then used &lt;code class=&quot;language-text&quot;&gt;ykman&lt;/code&gt; to reset all the Yubikey applets. Resetting PIV produced errors on macOS, likely because macOS was using it for account authentication. For this reason, I used a fresh ubuntu server with ykman to perform the reset. Also note from the &lt;a href=&quot;https://github.com/github/smimesign/blob/main/README.md#smart-cards-pivcacyubikey&quot;&gt;smimesign README&lt;/a&gt; the OpenSC formula is missing an important component, therefore:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;brew uninstall opensc
brew install --cask opensc&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On macOS, I wanted to start fresh.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;brew uninstall gpg-suite
rm -rf ~/.gnupg*
brew install gpg-suite-no-mail # I don&apos;t use Apple Mail&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I recommend the &lt;code class=&quot;language-text&quot;&gt;gpg-suite-no-mail&lt;/code&gt; cask. It&apos;s bundled with pinentry and useful macOS service menus.&lt;/p&gt;
&lt;p&gt;At this point I have disabled internet. This is just an abundance of caution while my master PGP key exists on the machine.&lt;/p&gt;
&lt;p&gt;I just double clicked the secret gpg key, typed in the password and then edited the key to ultimately trust it. Finally I ejected the USB drive.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --edit-key youremail@here.com
# Now I want to ensure my master key only has Certify capability
# gpg is weird. The command isn&apos;t listed in help or tab but:
gpg&gt; change-usage
s
q
# I&apos;m going to set my master key to expire. You can always extend it later.
gpg&gt; expire
2040-01-01
y&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;At this point I&apos;m going to expire and later replace my subkeys. The reason I am doing this instead of revoking them is that git will complain regardless of the reasoning you give. I just set the expiration.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg&gt; key 1
gpg&gt; key 2
gpg&gt; key 3
gpg&gt; expire
y
# You can use ISO date format
Key is valid for? (0) 20210330T070000
Is this correct? (y/N) y
gpg&gt; save&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now let&apos;s generate new subkeys where KEYID extracts your key fingerprint (also found via &lt;code class=&quot;language-text&quot;&gt;gpg -K&lt;/code&gt;)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;KEYID=$(gpg -k your@email.com | sed -n &apos;2 p&apos; | xargs echo -n)
gpg --quick-add-key $KEYID rsa2048 encr 2y
gpg --quick-add-key $KEYID rsa2048 sign 2y&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now let&apos;s move the GPG key to an external drive. We will also remove the master key from the Mac. The master key is only used to certify (i.e. sign other keys, add notations, update expiration of subkeys, generate revokation certificates). To keep this free from unsecured backups and malware, we keep our master key on an offline device. In my case I am using an encrypted SD card.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;cp -rp ~/.gnupg /Volumes/Key/gnupg-backup&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now we can remove the master key&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --with-keygrip --list-key $KEYID&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The output will look something like this:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;pub   rsa4096 2017-12-06 [C] [expires: 2019-12-06]
      111122223333444455556666AAAABBBBCCCCDDDD
      Keygrip = AAAA999988887777666655554444333322221111
uid           [ultimate] Alice Engineer &amp;lt;alice@example.org&gt;
uid           [ultimate] Alice Engineer &amp;lt;allie@example.net&gt;
sub   rsa2048 2017-12-06 [E]
      Keygrip = BBBB999988887777666655554444333322221111
sub   rsa2048 2017-12-06 [S]
      Keygrip = CCCC999988887777666655554444333322221111&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The keygrip we want is the one below the pub line.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;rm ~/.gnupg/private-keys-v1.d/AAAA999988887777666655554444333322221111.key&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now you can verify the master secret key has been removed:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --list-secret-keys&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If the output for the desired key has &lt;code class=&quot;language-text&quot;&gt;sec#&lt;/code&gt; you are good to go. The &lt;code class=&quot;language-text&quot;&gt;#&lt;/code&gt; indicates that the secret key is not available.&lt;/p&gt;
&lt;p&gt;You will also want to ensure the revocation certificate only exists on the offline drive and not on the laptop. If it is compromised, your identity can be destroyed. We do want it to exist though as if we forget the master key password, we will be able to revoke the key by publishing the pre-generated revokation cert.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;cd ~/.gnupg/openpgp-revocs.d&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If that directory exists, then run &lt;code class=&quot;language-text&quot;&gt;rm $KEYID.rev&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If it doesn&apos;t (as in my case, generate the revocation cert and place it on the offline drive)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --homedir=/Volumes/Key/gnup-backup/ --gen-revoke your@email.com &gt; /Volumes/Key/$KEYID.rev&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;From now on, when we need to work with the master secret key, we mount the drive and ensure commands have the &lt;code class=&quot;language-text&quot;&gt;--homedir&lt;/code&gt; overridden as above.&lt;/p&gt;
&lt;p&gt;I then uploaded the updated public key to the keyserver. I just used GPG Keychain. You can also follow &lt;a href=&quot;https://keyoxide.org/getting-started#uploading-your-key&quot;&gt;this process&lt;/a&gt; You can then use Keyoxide to verify it exists.&lt;/p&gt;
&lt;p&gt;After that, I added keyoxide notations.&lt;/p&gt;
&lt;p&gt;After making changes to the master key, you can easily import the public key back into the main database:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --homedir=/Volumes/Key/gnup-backup/ --export your@email.com | gpg --import&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Finally, upload to the keyserver and update your published key on GitHub, GitLab, and Keybase.&lt;/p&gt;
&lt;p&gt;You can update your Keybase public key with&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;keybase pgp update&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Building EventsMadeLive.com]]></title><description><![CDATA[After building out this personal website, I went on to build something much…]]></description><link>https://brandonkalinowski.com/building-eventsmadelive-com</link><guid isPermaLink="false">https://brandonkalinowski.com/building-eventsmadelive-com</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 07 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After building out this personal website, I went on to build something much larger. I&apos;ve always been passionate about enabling creatives. EventsMadeLive.com is a new platform that provides an easy way for creatives to monetize their content and build a stable income. EventsMadeLive is a platform for video platforms if you will. We provide all the tools you need to build out a video website and monetize your live content.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EventsMadeLive is different&lt;/strong&gt;. It is a product designed for video creators and video library owners to build out their own branded platform. Sell tickets to your live events or charge a subscription fee for access to your training videos. Or sell your own ads your videos. The bottom line is you have more control.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://eventsmadelive.com&quot;&gt;EventsMadeLive&lt;/a&gt; aims to be an all-in-one solution for monetizing your video business. We handle the complicated bit so you can focus on growing your business. We host and maintain your video library and website on reliable infrastructure and Content Delivery Network to ensure your customers can have the best viewing experience.&lt;/p&gt;
&lt;p&gt;We are passionate about democratizing video broadcasting and enabling you to charge for access to live content in addition to your on demand video library. Whether you are a video Pro or just getting started (we&apos;ll show you the ropes), owning your own branded platform is the best way to cultivate your unique audience.&lt;/p&gt;
&lt;p&gt;This is a product with a very real need. With other platforms demonetizing creators at a moment&apos;s notice, we&apos;d like to help you build a stable income.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you believe EventsMadeLive can help you achieve, please reach out via the contact form.&lt;/p&gt;
&lt;p&gt;The EventsMadeLive release is coming soon. It has been in the works for over a year. Along the way, I&apos;ve built many ancillary software solutions that have been downloaded hundreds of thousands of times. These pieces together make something great.&lt;/p&gt;
&lt;p&gt;You can expect more content on this blog as these products are rolled out.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Small Box Short Film]]></title><description><![CDATA[A fun video to fulfill a film school assignment "open the box" This video was…]]></description><link>https://brandonkalinowski.com/small-box-short-film</link><guid isPermaLink="false">https://brandonkalinowski.com/small-box-short-film</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 18 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/RP8gYY_nHR0?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A fun video to fulfill a film school assignment &quot;open the box&quot; This video was originally posted on my &quot;Skyclops Pictures&quot; channel on May 5, 2015.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Launching This Site With Gatsby]]></title><description><![CDATA[I discussed the benefits of building static websites in my last post. In this…]]></description><link>https://brandonkalinowski.com/launching-this-site-with-gatsby</link><guid isPermaLink="false">https://brandonkalinowski.com/launching-this-site-with-gatsby</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 14 Jun 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I discussed the benefits of building static websites in &lt;a href=&quot;/the-static-web-and-the-launch-of-skyclops-pictures/&quot;&gt;my last post&lt;/a&gt;. In this post, I want to expand on that discussion and explain how I built this amazing website. It was quite an involved process and the results should speak for themselves.&lt;/p&gt;
&lt;p&gt;The design for this personal blog was last updated in 2015. It existed on a different domain and used a custom theme that I created for Blogger, Google&apos;s blogging platform. A lot has changed since then and it was time to refresh this website. I wanted a completely static website and I wanted more control than blogger or WordPress would allow me. This new website will hold blog posts and portfolio pieces. I had also owned my personal domain name for some time, and this website redesign was a perfect opportunity to utilize it. I had recently completed launching the &lt;a href=&quot;https://www.skyclops.pictures&quot;&gt;Skyclops Pictures&lt;/a&gt; website and was initially planning to use Hugo for the site as well. Luckily, I discovered Gatsby before I began work on this redesign.&lt;/p&gt;
&lt;h2 id=&quot;what-is-gatsbyjs&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#what-is-gatsbyjs&quot; aria-label=&quot;what is gatsbyjs permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;What is GatsbyJS?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Gatsby is a blazing-fast static site generator for React.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Okay great. So what is React?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;React is a Javascript library for building user interfaces.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;React allows developers to create large web applications that use data which can change over time, without reloading the page. It&apos;s super modern and very advanced. Its main goal is to be fast and scalable. It was created by Facebook to solve some modern problems such as third-world internet where Progressive Web Apps are very popular. It was deployed on Facebook&apos;s newsfeed in 2011 and open-sourced by Facebook in May of 2013. The industry quickly adapted React and now it is used by the notable players such as Netflix, Coursera, Khan Academy, Dropbox, and the NFL.&lt;/p&gt;
&lt;p&gt;React is a future-proof way to build websites. The future of the web is Javascript, APIs, Markup, and Mobile aka the &lt;a href=&quot;https://jamstack.org/&quot;&gt;JAMstack&lt;/a&gt;. &lt;strong&gt;Every website is a web app and every web app is a website&lt;/strong&gt;. Web apps were actually Steve Jobs&apos; original vision for the iPhone ecosystem — applications would exist entirely as web apps with shortcuts on the home screen. There was no need for an App Store as you could install a web app by visiting its website. Of course, this was before Apple discovered that the App Store could be a &lt;strong&gt;very profitable money-maker&lt;/strong&gt;. Apple gets to keep a 30% commission on all App Store sales. Ultimately this means that mobile Safari is now deliberately crippled in order to make it difficult to create native iOS applications that exist on the web.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Gatsby is a static PWA generator. Gatsby only loads critical HTML, CSS, data, and Javascript so the site loads as &lt;strong&gt;fast as possible&lt;/strong&gt;. Once loaded, &lt;strong&gt;Gatsby prefetches other pages&lt;/strong&gt; so clicking around to other pages is &lt;strong&gt;lightning fast&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And because Gatsby.js is a static website generator, all the benefits of static sites exist as well. No need to wait to generate pages when requested, pages are prebuilt and the website can exist entirely on the CDN (Content Delivery Network) &lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-gatsby-works&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#how-gatsby-works&quot; aria-label=&quot;how gatsby works permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;How Gatsby Works&lt;/h2&gt;
&lt;p&gt;When it comes to data, GatsbyJS is a lot more flexible than tools such as Hugo. While Hugo requires content to exist as markdown files, Gatsby can pull data wherever it is. Like WordPress, Gatsby has a plug-in system. Use node package manager to install additional plug-ins depending on the source of your data. Do you still manage content with a legacy CMS such as WordPress? Install the WordPress Gatsby plug-in. Now your web clients can continue to use the content management system they&apos;re familiar with but you can now more easily scale the website and the websites can handle much higher traffic load. &lt;strong&gt;Your content management system is now decoupled from the website build!&lt;/strong&gt; Gatsby takes your data from resources using GraphQL, which is a database query language not unlike SQL. Gatsby then builds the website to static HTML CSS and React which you can then deploy to Amazon S3, GitHub Pages, Netlify, or your own server.&lt;/p&gt;
&lt;h2 id=&quot;the-trifecta&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-trifecta&quot; aria-label=&quot;the trifecta permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Trifecta&lt;/h2&gt;
&lt;p&gt;This website uses a combination of three different services: &lt;em&gt;Gatsby, Contentful, and Netlify&lt;/em&gt;. &lt;a href=&quot;https://www.gatsbyjs.org&quot;&gt;&lt;strong&gt;Gatsby&lt;/strong&gt;&lt;/a&gt; is the tool that generates the website. &lt;a href=&quot;https://www.contentful.com&quot;&gt;&lt;strong&gt;Contentful&lt;/strong&gt;&lt;/a&gt;, is a Content as a Service (CaaS) solution which manages all the website content.&lt;/p&gt;
&lt;h3 id=&quot;contentful-solves-the-very-modern-problem-of-future-proofing-your-content&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#contentful-solves-the-very-modern-problem-of-future-proofing-your-content&quot; aria-label=&quot;contentful solves the very modern problem of future proofing your content permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Contentful solves the very modern problem of future-proofing your content&lt;/h3&gt;
&lt;p&gt;With Contentful, your content is available via API for any digital product, whether that is a website, app, or device.&lt;/p&gt;
&lt;p&gt;The Contentful UI is very intuitive and should feel right at home for any WordPress user. With Contentful, it is possible to have the &lt;strong&gt;best of both worlds&lt;/strong&gt;: a blazing-fast static website and an intuitive Content Management System. So why is this so great?&lt;/p&gt;
&lt;p&gt;With Hugo, content is limited to markdown files in the git repo. The simplicity of this is great. You get the benefit of &quot;owning&quot; the content. Each blog post exists as a separate physical text file in your git repository and you can back that up any way you want. However, this also creates a lot of noise in the git repo as every content update creates its own commit and actual code and design changes get lost in the shuffle. &lt;strong&gt;There is no separation of concerns&lt;/strong&gt;. Further, while git is very easy to use for those familiar with the tool, i.e., web developers, it gets messy when you start asking content writers or web clients to make git commits to manage content. To solve this problem, Netlify has a nice CMS which you can add to your Hugo website. This CMS is basically just a frontend for Git that offers a nice login screen to add or change content. I would certainly recommend it for any client projects built with Hugo. There is one last reason why Contentful is a great addition to the static web development stack:&lt;/p&gt;
&lt;h3 id=&quot;automation&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#automation&quot; aria-label=&quot;automation permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Automation&lt;/h3&gt;
&lt;p&gt;Automation is where Contentful has a chance to shine and it pushes the boundaries of what one can do with a static website. Contentful integrates well with &lt;a href=&quot;https://zapier.com/&quot;&gt;Zapier&lt;/a&gt;, which can be considered the glue of the Internet. It is essentially an IFTTT alternative aimed at more professional and business applications. My legacy blog website was automated and I wanted to ensure that this one is as well. For instance, whenever I post a new YouTube video, Zapier will get to work and automatically add a Contentful entry with the video embed code and description. Right now I have it set to create a draft so I can make some tweaks and batch publish new videos, but I could just as easily have Zapier publish that new blog entry. From there, Netlify rebuilds the website and pushes the new post live.&lt;/p&gt;
&lt;p&gt;Another example is in my photography portfolio. I plan to set it up so that when I upload a new folder of pictures to Dropbox, Contentful will &lt;strong&gt;automatically generate and publish a new gallery post&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I also am considering maintaining a Google Sheet of link posts (useful bookmarks to share with my short summary) to be pushed to Contentful, though I may end up having Gatsby query the Google Sheet directly.&lt;/p&gt;
&lt;h3 id=&quot;netlify&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#netlify&quot; aria-label=&quot;netlify permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Netlify&lt;/h3&gt;
&lt;p&gt;Lastly, &lt;a href=&quot;https://www.netlify.com/&quot;&gt;&lt;strong&gt;Netlify&lt;/strong&gt;&lt;/a&gt; handles the actual web hosting and deployment to a global content delivery network &lt;sup id=&quot;fnref-1&quot;&gt;&lt;a href=&quot;#fn-1&quot; class=&quot;footnote-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. When I push design changes as a commit to GitLab or update content in Contentful, a webhook tells Netlify to run the &lt;code class=&quot;language-text&quot;&gt;gatsby build&lt;/code&gt; command which automatically deploys the changes to the content delivery network. Netlify also handles the contact form with some nice spambot filtering. Dynamic features on a static website!&lt;/p&gt;
&lt;p&gt;Netlify also handles DNS so I could use the naked domain (without the www at the front) and it automatically manages HTTPS certificates issued by Let&apos;s Encrypt. Very Slick! This is an entirely serverless solution &lt;sup id=&quot;fnref-2&quot;&gt;&lt;a href=&quot;#fn-2&quot; class=&quot;footnote-ref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;These three tools I consider the trifecta of modern static site creation. If you are interested in going this route, have a look at the &lt;a href=&quot;https://github.com/ryanwiemer/gatsby-starter-gcn&quot;&gt;GCN Starter&lt;/a&gt;. I recently made a lot of contributions to this open source project and worked with the developer to add a lot of essential features such as SEO optimizations, JSON-LD Schema, RSS, Google Analytics, offline support, and my own &lt;a href=&quot;https://www.npmjs.com/package/eslint-config-gatsby-standard&quot;&gt;Gatsby Standard module&lt;/a&gt; (v1.0.3 - v1.2.1+). This starter template is minimal and is made to be customized or torn apart. It will even set up the contentful space with sample content so you can get started right away.&lt;/p&gt;
&lt;h2 id=&quot;building-this-website&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#building-this-website&quot; aria-label=&quot;building this website permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Building this Website&lt;/h2&gt;
&lt;p&gt;I built this website over the course of six weeks. It required more than 3,500 lines of source code. The learning curve for using Gatsby, React, Netlify, and Contentful is quite high compared to Hugo. However, the result is nothing short of amazing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I didn&apos;t just build a website. Instead, I built the world&apos;s best blogging platform, and this platform just happens to power my own personal website. -- This I can say with confidence.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;the-design-process&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-design-process&quot; aria-label=&quot;the design process permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Design Process&lt;/h3&gt;
&lt;p&gt;I wanted something that was simple and sleek. The design was inspired by the Ghost Casper Theme. I also found inspiration in the HPSTR Hugo theme. You can tell I&apos;m a fan of box-shadows. This is evident in my senior portfolio as well. I believe it is important to have content boundaries clearly defined rather than having a sea of whitespace, and I really like the paper-like look that the box-shadow provides.&lt;/p&gt;
&lt;p&gt;Typography uses native system fonts (no need to download web fonts!) and is a design departure from the GCN Starter. This itself took considerable time: getting the rhythm, relative font sizes, weights, and margins to look elegant and uniform.&lt;/p&gt;
&lt;p&gt;I wanted big, bold headlines on the header of each post with the hero image behind. To accomplish this, I used fluid typography and its own React component that calculates the maximum font size for each post&apos;s main headline based on the length of the text and viewport size. This was import as some of my headlines are a lot longer than others. Longer headlines have a smaller font size on mobile screens to fit nicely, while shorter headlines can be fluid at a larger scale to really pop!&lt;/p&gt;
&lt;p&gt;I also knew from the start of the project that I wanted a vCard that called attention to my bio and resume. This exists as its own component and involved some algebra calculations for CSS functions to get it to display nicely on both mobile screens and widescreens. The FitText headline component came in handy here as well!&lt;/p&gt;
&lt;h3 id=&quot;gatsby-starter-gcn&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gatsby-starter-gcn&quot; aria-label=&quot;gatsby starter gcn permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Gatsby Starter GCN&lt;/h3&gt;
&lt;p&gt;I started the process by adding all the generic features I wanted to Ryan&apos;s repository. It is true that there is an existing Casper-themed Gatsby starter. Unfortunately, its codebase is quite a mess. It looks great visually, but there are several unwelcome complexities such as a mess of subfolders, unnecessary layout components, and CSS imports of empty files. Ryan&apos;s GCN project was a much better fit. The design is simple and the Contentful integration was already completed. I helped him find and fix bugs such as a Firefox flexbox issue and a double download of images. After that, I was back up to speed with git, Gatsby, React, Javascript, and CSS in JS, and I ended up adding a lot of exciting features such as a custom SEO component, SEO JSON-LD Schema, OpenGraph sharing support, sitemap generation, Google Analytics, Progressive Web App manifest, logos, Offline Support, RSS feed creation and support, Gatsby Standard module for linting Javascript with StandardJS, and Stylelint support for Styled Components to lint the CSS in JS for errors. I also fixed a layout jump issue and cleaned up the codebase, removing unused react imports.&lt;/p&gt;
&lt;h3 id=&quot;gatsby-standard&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#gatsby-standard&quot; aria-label=&quot;gatsby standard permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Gatsby Standard&lt;/h3&gt;
&lt;p&gt;While working on Gatsby Starter GCN, I created &lt;a href=&quot;https://www.npmjs.com/package/eslint-config-gatsby-standard&quot;&gt;Gatsby Standard&lt;/a&gt;, an ESLint rule configuration module for Gatsby Sites. This rule set is designed to closely match the Gatsby Starters while still following StandardJS style. Simply install and extend to clean up your GatsbyJS code! The plugins and parser used are dependencies of the project. There is no need to specify them separately.&lt;/p&gt;
&lt;p&gt;This config is designed to be used in conjunction with prettier for automatic code formatting. Conflicting rules have been disabled through &lt;code class=&quot;language-text&quot;&gt;eslint-config-prettier&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This open source tool has been downloaded by 400 web developers since I published it as of this writing. I find this awesome considering I have not marketed the tool at all. It is a simple and easy way to clean up Javascript code style and lint it for errors. I am glad others have found it to be useful.&lt;/p&gt;
&lt;h3 id=&quot;brandonkalinowskicom&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#brandonkalinowskicom&quot; aria-label=&quot;brandonkalinowskicom permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;BrandonKalinowski.com&lt;/h3&gt;
&lt;p&gt;Once the Gatsby Starter got to the point where it had all the generic features that I wanted, I branched off from there. I moved the git hosting to GitLab for the free private repository feature and began work tearing the Starter Design apart. See the &quot;Design Process&quot; section above for more details.&lt;/p&gt;
&lt;p&gt;Porting my legacy blog posts from Blogger to Contentful proved to be a chore. Blogger only provides XML export rather than the JSON needed for Contentful. A transformer tool for Blogger to Contentful is not available and building it myself seemed more trouble than it was worth given the relatively low amount of content I needed to port over (90 blog posts - 60 of which I actually deemed worthy enough of port over [technology changes rapidly]).&lt;/p&gt;
&lt;p&gt;What I did do was transform the Blogger XML output to markdown for Hugo. From there it was mostly a ritual of copy and paste into Contentful. Then I had to update the YouTube embed codes manually and fill in the title, post date, and tags. I went through my Lightroom catalog and brought in about 100 photos for hero images. All photos were taken by me except where otherwise noted in the image credit.&lt;/p&gt;
&lt;h2 id=&quot;the-end-result&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-end-result&quot; aria-label=&quot;the end result permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The End Result&lt;/h2&gt;
&lt;p&gt;I truly believe that this is the world&apos;s best blogging platform and I am still excited about it. I&apos;ll back that up by asking you to find a website or blog that loads faster. Clicking between pages is instantaneous, thanks to prefetching and React router. There is one case where that claim may not be the case, as it may appear that I have left out a comment system. This is certainly possible with this platform and static sites in general, and I have plans to implement a comment system on another blog using this platform. However, I do not currently have plans to add it to this blog. I still very much value your feedback and opinions and for those cases, I encourage you that you contact me via the &lt;a href=&quot;/contact/&quot;&gt;contact form&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also hope to teach others how to build awesome websites using these ultra-modern tools. Now that this platform is complete, starting a similar blog will a simple process. I will add features in time such as &lt;em&gt;adding portfolio pages&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Finally, I would like to conclude with a short list highlighting some of the cool capabilities of this blog:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;You can read my blog in the subway&lt;/strong&gt; thanks to offline support. You can finish reading this post and even click around to other posts and continue reading. You may notice that some hero images are not fetched while offline but the site will otherwise continue to function even in cases where you have no internet connection&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You can install this website as a native app on your phone&lt;/strong&gt;. If you use Chrome, you should see a prompt to add this website to your home screen. If you dismissed the notification you can still install it by clicking on the menu. On Android, a native APK will be installed so the blog actually is visible in the app drawer and not just on the home screen. Once installed, links to my blog posts will open in the app. This also works on iOS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Images are dynamically queried and scaled&lt;/strong&gt;. If you snoop through your browser&apos;s network requests, you will see that the website downloads images based on the viewport size. On mobile, smaller images are downloaded than when viewing the same page on a desktop. This keeps things blazing fast.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full RSS support&lt;/strong&gt;. Simply add &lt;a href=&quot;https://brandonkalinowski.com/rss.xml&quot;&gt;https://brandonkalinowski.com/rss.xml&lt;/a&gt; to your news feed reader of choice. You can read my blog posts in full.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Social Share Support&lt;/strong&gt;. Social Sharing buttons are available at footer of each post for easy sharing. No Facebook or Twitter tracking pixels are installed on this website. The buttons are there for your convenience and make sharing interesting posts easy.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;what-is-next&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#what-is-next&quot; aria-label=&quot;what is next permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;What is Next&lt;/h2&gt;
&lt;p&gt;Now I am working on a live streaming platform that allows for creators to host a Subscription Video Service. I am really excited about this opportunity. JAMStack will certainly come into play with the development of this new platform.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&quot;fn-1&quot;&gt;A website that exists on a Content Delivery Network is hosted on many edge servers. Rather than requesting a webpage from a single central server, the user makes the request to the nearest server to their location. This means visitors in Japan will fetch your website from a server in Japan while your California visitors will fetch the website from a server in San Jose.&lt;a href=&quot;#fnref-1&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;
&lt;li id=&quot;fn-2&quot;&gt;By &quot;serverless&quot; I do not mean that no server exists. Instead, the term refers to the fact that server management is no longer a concern of the web development process. As a web developer, I do not need to be concerned or bogged down by the management and maintenance of server as was the case in years past. Instead, code is managed by git, a version control system. In the same way, &quot;wireless&quot; internet does not imply that no wires exist between the laptop and the website requested, instead, it simply means that wires are not a concern for mobile devices.&lt;a href=&quot;#fnref-2&quot; class=&quot;footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[The Static Web and the Launch of Skyclops Pictures]]></title><description><![CDATA[There's been a new trend in web development and the static websites. Yet most of…]]></description><link>https://brandonkalinowski.com/the-static-web-and-the-launch-of-skyclops-pictures</link><guid isPermaLink="false">https://brandonkalinowski.com/the-static-web-and-the-launch-of-skyclops-pictures</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 07 Jun 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There&apos;s been a new trend in web development and the static websites. Yet most of the websites online today are still using some sort of CMS such as WordPress. WordPress makes content management simple. For this reason, it has been the development tool of choice for the past few decades. It is important that web developers think about the tools they are using and how it fits with the design problem. For many websites, such as brochure type websites, using WordPress is not the right tool for the job. Yet if you have a look at YouTube you will find many so-called web developers that swear by WordPress for all development. For many cases, building a static site is a better solution.&lt;/p&gt;
&lt;h2 id=&quot;dynamic-vs-static-websites&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#dynamic-vs-static-websites&quot; aria-label=&quot;dynamic vs static websites permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Dynamic vs Static Websites&lt;/h2&gt;
&lt;p&gt;For those not familiar with web designs, it is important to distinguish the difference between a dynamic website and a static website. With a &lt;strong&gt;static website&lt;/strong&gt;, as the name suggests, content exists on the server as static HTML files. If the website needs to be updated, a web developer will update the code to reflect the new content. Because content exists precomposed, &lt;strong&gt;static websites are extremely fast&lt;/strong&gt;. However, there are cases where static content is not enough. In this case, a &lt;strong&gt;dynamic website&lt;/strong&gt; is used.&lt;/p&gt;
&lt;p&gt;Fetching web pages from a dynamic website is a more complicated process: When a customer or blog reader requests your website, the server will query the database and build the HTML files on-demand. This is an inherently slower than simply returning an HTML file. Dynamic websites also increase the cost of hosting the website. A dynamic website requires a database, a content management system, and a web server. There is also the &lt;strong&gt;risk of the database being hacked&lt;/strong&gt;. Additionally, &lt;strong&gt;dynamic websites are hard to scale&lt;/strong&gt;. If your product or blog post goes viral, the server may not be able to keep up with all the required database queries created by a massive influx of users. It is possible to use cashing plug-ins to alleviate some of these issues and improve the performance of a WordPress website. However, optimizations only further increase the complexity of the website and still cannot perform at the same level as a completely static website.&lt;/p&gt;
&lt;h2 id=&quot;an-example&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#an-example&quot; aria-label=&quot;an example permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;An Example&lt;/h2&gt;
&lt;p&gt;Let&apos;s take an example which building a static solution would be a much better tool for the job. Say for instance a client requests a basic brochure website for their restaurant. They want to display contact information, dishes, prices, and select testimonials. In this case, it seems quite silly to use a WordPress or another database-driven solution. The content does not change often so there is little need to query the database every single time someone visits the restaurant website. In the past, however, web developers would use WordPress simply because it provided a nice user interface for managing the content. Owners could update prices and add new dishes without having to dive into HTML code or consult their web developer for every little change. Fortunately, it is still possible to have a static website that is driven by a content management system.&lt;/p&gt;
&lt;h2 id=&quot;enter-the-static-site-generator&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#enter-the-static-site-generator&quot; aria-label=&quot;enter the static site generator permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Enter the static site generator&lt;/h2&gt;
&lt;p&gt;Static site generators have existed for some time. They have often been dismissed as too simplistic for advanced web design. This could not be further from the truth. I recently updated two of my websites - &lt;a href=&quot;https://www.skyclops.pictures&quot;&gt;www.skyclops.pictures&lt;/a&gt; and &lt;a href=&quot;/&quot;&gt;brandonkalinowski.com&lt;/a&gt; using Hugo and Gatsby.&lt;/p&gt;
&lt;p&gt;Hugo is one of the most popular open-source static site generators. The tool claims to be the world&apos;s fastest framework for building websites. I would agree that this tool is very fast for development. However, the resulting website user experience is not as fast as if the website was created with another static site generator such as Gatsby. However, both tools result in static websites and thus a site built with Hugo will still perform quite well, especially when compared to a database-driven website. From my perspective, Hugo is the tool of choice for simple brochure-type websites. You can use something like Netlify CMS, a git based content management system, to allow the client to easily update content such as adding that new seasonal dish to the restaurant menu or raising all the prices for a local event such as Sundance Film Festival!&lt;/p&gt;
&lt;h2 id=&quot;using-hugo&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#using-hugo&quot; aria-label=&quot;using hugo permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Using Hugo&lt;/h2&gt;
&lt;p&gt;Starting a new Hugo website is as simple as:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;hugo new site restaurant
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; restaurant/themes
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; clone https://github.com/digitalcraftsman/hugo-strata-theme.git&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;From there you can edit the &lt;code class=&quot;language-text&quot;&gt;config.toml&lt;/code&gt; file and then add content in the form of markdown files. You can run &lt;code class=&quot;language-text&quot;&gt;hugo server&lt;/code&gt; to see the website as you develop it. Once you are ready to deploy, run &lt;code class=&quot;language-text&quot;&gt;hugo build&lt;/code&gt; to have Hugo quickly generate the HTML and CSS files which can be pushed to your web server or CDN.&lt;/p&gt;
&lt;p&gt;Hugo has a great theme system which you can browse at &lt;a href=&quot;https://themes.gohugo.io&quot;&gt;themes.gohugo.io&lt;/a&gt;. This is a great way to start out and there are a lot of well-designed modern themes you can try out. I ended up using a custom HTML layout that I adapted for Hugo for my Skyclops Pictures website, but this theming system is one reason I would recommend using Hugo for quick web projects such as landing pages and brochure websites.&lt;/p&gt;
&lt;p&gt;I am quite proficient with HTML5 and CSS3 languages which is certainly very helpful when developing a website. Coming from a strictly pure HTML and CSS background, it did take some mental energy to adapt to the Hugo system where content is broken out into separate files. In my case, I had an HTML design that I converted to a Hugo template. If you are familiar with HTML and CSS you shouldn&apos;t have any trouble converting an existing design to a Hugo template. You will end up with more lines of code than pure HTML, but your website will be much easier to maintain.&lt;/p&gt;
&lt;h2 id=&quot;with-static-websites-the-backend-becomes-very-simple&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#with-static-websites-the-backend-becomes-very-simple&quot; aria-label=&quot;with static websites the backend becomes very simple permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;With static websites the &quot;backend&quot; becomes very simple&lt;/h2&gt;
&lt;p&gt;You don&apos;t have a database to maintain or a hodgepodge of plugins to update and maintain. Instead, you have mostly vanilla HTML and CSS files that exist in your git repository. Simply commit to make changes to your website and GitHub, GitLab, or Netlify will automatically run the build command and deploy the updated site.&lt;/p&gt;
&lt;p&gt;The source code to my &lt;a href=&quot;http://www.skyclops.pictures&quot;&gt;www.skyclops.pictures&lt;/a&gt; website is hosted on a private GitLab repo and is built with Hugo. It took me about a day to get the website up and running and that included finding suitable content for the portfolio. While the code is not open source, feel free to &lt;a href=&quot;https://brandonkalinowski.com/contact/&quot;&gt;contact me&lt;/a&gt; if you have any questions on how it was built.&lt;/p&gt;
&lt;h2 id=&quot;the-next-level&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-next-level&quot; aria-label=&quot;the next level permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Next Level&lt;/h2&gt;
&lt;p&gt;I built this website, &lt;a href=&quot;/&quot;&gt;brandonkalinowski.com&lt;/a&gt;, using a much more advanced tool over the course of a six-week development process. This website has a lot of super exciting features that brings the static website possibilities to the next level. I will explain this in detail in the &lt;a href=&quot;/launching-this-site-with-gatsby/&quot;&gt;next post&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Working for Legion M]]></title><description><![CDATA[Working for a startup is exciting. Working for an entertainment and film startup…]]></description><link>https://brandonkalinowski.com/working-for-legion-m</link><guid isPermaLink="false">https://brandonkalinowski.com/working-for-legion-m</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 18 May 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Working for a startup is exciting. Working for an entertainment and film startup is double the awesome. Legion M is the world&apos;s first fan-owned entertainment company. They work with top Hollywood creators to produce a slate of content. What is different is that they are owned by the fans. It is essentially an equity crowdfunded production investment company and they allow people to own a piece of the entertainment company for as little as $100.   Their long-term goal is to find 1 million shareholders. They are banking on entertainment buffs who want more than a T-shirt or BluRay in return for their investment. It is about creating a community of passionate fans that stand behind any project they release.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/hIRTpo_L5Lw?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Because Legion M is an early startup, I wear many hats. Some of the things I&apos;ve recently done for the company include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Database Design and Analysis&lt;/strong&gt; - With 7,000 current investors and a very active Facebook marketing campaign, there are a lot of valuable insights that can be discovered from the data Legion M has.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Website Proofreading and Feedback&lt;/strong&gt; - Legion M has done a lot in the last 2 years and there is a lot of content that must be presented to give potential investors a glimpse of what the Legion M community has achieved.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Facebook Advertising&lt;/strong&gt; - Marketing is important to get the word out and connect with fans. Ads have to be constantly improved for changing tastes and those that do not perform well have to be shut down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live Streaming&lt;/strong&gt; - Legion M aims to be very transparent and gives fans the opportunity to view the inner workings of their entertainment company. That means regular live streams with the executives&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sundance Film Festival&lt;/strong&gt; - I went to 2018 Sundance Film Festival where Legion M hosted an awesome lounge with regular and constant celebrity interviews that we streamed live. This event supported Legion M&apos;s Mandy project which received excellent reviews.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is pretty exciting stuff. I am currently designing an analytics platform for the company. I can&apos;t wait to see what the future holds.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Encryption Part 4 - Sign Git Commits and SSH with PIV]]></title><description><![CDATA[In part three I detailed how to create a secure environment and then how to…]]></description><link>https://brandonkalinowski.com/encryption-part-4</link><guid isPermaLink="false">https://brandonkalinowski.com/encryption-part-4</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 23 Feb 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In &lt;a href=&quot;/encryption-part-3&quot;&gt;part three&lt;/a&gt; I detailed how to create a secure environment and then how to create a master GPG key and then create signing, encrypting, and authentication subkeys that exist only on the smart card. I then detailed how to install Keybase and then import this externally generated PGP public key.&lt;/p&gt;
&lt;p&gt;In the fourth and final installment of this encryption series, I will explain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How you can now use this new PGP key to sign git commits&lt;/li&gt;
&lt;li&gt;How to import public keys and smart card stubs onto another computer&lt;/li&gt;
&lt;li&gt;How to use the smart card for SSH authentication using PIV&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;using-gpg-to-sign-git-commits&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#using-gpg-to-sign-git-commits&quot; aria-label=&quot;using gpg to sign git commits permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Using GPG to Sign Git Commits&lt;/h2&gt;
&lt;p&gt;It is very easy to spoof who made a commit with git, by simply changing the email. If you were to then push this commit to GitHub, GitHub would then associate that commit with the other account as users are only identified by an email address in Git. Consider what would happen if a bad actor pushed a security hole into the source code of your team&apos;s software project and made it look like you added that code. That wouldn&apos;t be very good.&lt;/p&gt;
&lt;p&gt;So how is this rectified? Well, you can make it a practice to always sign your git commits. If your private key exists only on your smart card, making a push to the git server would require (a) inserting the smart card, and (b) unlocking it with the PIN. The smart card locks after three unsuccessful PIN attempts so even if the smart card were stolen, &lt;em&gt;and&lt;/em&gt; your git login details were stolen &lt;em&gt;and&lt;/em&gt; the stolen key was not yet revoked it would be impossible to brute force the PIN to unlock the card. That is a solid amount of security!&lt;/p&gt;
&lt;p&gt;To use our newly installed GPG key to sign all git commits it is quite simple:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;$ gpg --list-secret-keys --keyid-format LONG
/Users/brandon/.gnupg/pubring.kbx
---------------------------------
sec#  rsa4096/E870EE00 2018-05-01 [SC]
      Key fingerprint = &amp;lt;FINGERPRINT&gt;
uid                 [ultimate] Jim Smith &amp;lt;your@email.com&gt;
ssb&gt;  rsa4096/F9E3E72E 2018-05-01 [E]
ssb&gt;  rsa4096/F9E3E725 2018-05-01 [S]
ssb&gt;  rsa4096/F858E768 2018-05-01 [A]

$ git config --global user.signingkey E870EE00
$ git config --global commit.gpgsign true&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now you can import the key into GitHub:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;open https://github.com/settings/keys
# Click &quot;New GPG key&quot;
keybase pgp export | pbcopy&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can now paste the key and save.&lt;/p&gt;
&lt;p&gt;You should now be able to &lt;a href=&quot;https://help.github.com/articles/signing-commits-using-gpg/&quot;&gt;sign commits from the command line&lt;/a&gt;. You will be asked to insert the smart card key and enter the PIN. The PIN will be cached until the key is removed so you don&apos;t have to continually enter it.&lt;/p&gt;
&lt;h2 id=&quot;sign-commits-from-tower&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#sign-commits-from-tower&quot; aria-label=&quot;sign commits from tower permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Sign Commits from Tower&lt;/h2&gt;
&lt;p&gt;If you use Tower for git operations there are a few extra steps required:&lt;/p&gt;
&lt;p&gt;Add &lt;code class=&quot;language-text&quot;&gt;no-tty&lt;/code&gt; to your GPG configuration, to allow Tower to use it:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;echo no-tty &gt;&gt; ~/.gnupg/gpg.conf&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And then configure Tower to use the correct gpg executable:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;git config --global gpg.program $(which gpg)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;using-gpg&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#using-gpg&quot; aria-label=&quot;using gpg permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Using GPG&lt;/h3&gt;
&lt;p&gt;Enabling &lt;code class=&quot;language-text&quot;&gt;no-tty&lt;/code&gt; is necessary for Tower to work with gpg signing. Unfortunately, this breaks gpg commands in the command line. If you have an issue with &quot;no terminal at all requested,&quot; comment out the line &lt;code class=&quot;language-text&quot;&gt;no-tty&lt;/code&gt; from &lt;code class=&quot;language-text&quot;&gt;~/.gnupg/gpg.conf&lt;/code&gt;. Once you are done performing gpg operations in the command line you will have to uncomment the line again for it to function in Tower as usual.&lt;/p&gt;
&lt;h2 id=&quot;use-another-computer&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#use-another-computer&quot; aria-label=&quot;use another computer permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Use Another Computer&lt;/h2&gt;
&lt;p&gt;Keybase makes it really easy to manage your public key. To use gpg on a second computer, ensure GPGTools and Keybase is installed and then run these commands:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;keybase pgp export | gpg --import&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now your public key is in your gpg keychain. Now you need to import the stubs from the smart card. Simply insert it and run:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --card-status&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will generate the stubs required on the computer. You can now repeat the steps above to configure git commits on this second machine.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;ssh-with-piv&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#ssh-with-piv&quot; aria-label=&quot;ssh with piv permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;SSH with PIV&lt;/h2&gt;
&lt;p&gt;While technically it&apos;s certainly possible to authenticate SSH sessions using GPG, &lt;code class=&quot;language-text&quot;&gt;gpg-agent&lt;/code&gt; does not always play well with &lt;code class=&quot;language-text&quot;&gt;ssh-agent&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Using PIV for authenticating SSH remains the recommended solution. Only RSA keys are supported so we can&apos;t use ECC for authentication. The 4096 key size is not supported by PIV so we must use RSA2048. This should be sufficient for most cases.&lt;/p&gt;
&lt;p&gt;Install yubico-piv-tool:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;brew install yubico-piv-tool&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note that Homebrew must be installed first for this to work.&lt;/p&gt;
&lt;p&gt;Generate a private key using the &lt;em&gt;management&lt;/em&gt; key:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;yubico-piv-tool -s 9a -a generate -k --pin-policy=once --touch-policy=never --algorithm=RSA2048 -o public.pem&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Create a self-signed certificate. I could have made a certificate signing request to be signed by an internal CA but this should be sufficient. The only use for this self-signed certificate is to make the PIV/PKCS#11 lib happy:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;yubico-piv-tool -a verify-pin -a selfsign-certificate -s 9a -S &apos;/CN=ssh/&apos; --valid-days=1000 -i public.pem -o cert.pem&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Enter your normal Yubikey PIN.&lt;/p&gt;
&lt;p&gt;Import the self-signed certificate:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;yubico-piv-tool -k -a import-certificate -s 9a -i cert.pem&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Enter the Management key&lt;/p&gt;
&lt;p&gt;Install Opensc and save its location to a variable:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;brew install opensc
export OPENSC_PK=$(brew --prefix opensc)/lib/opensc-pkcs11.so&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now export the file, and add a comment to better identify it:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ssh-keygen -D $OPENSC_PK -e &gt; yubikey-ssh.pub
vi yubikey-ssh.pub&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; the above command will export all keys stored on the Yubikey device. So if you have multiple keys you will need to edit the file to include only the public key that is associated with the private key we just generated.&lt;/p&gt;
&lt;p&gt;Once in the editor, you can type &lt;code class=&quot;language-text&quot;&gt;A&lt;/code&gt;, followed by the comment, followed by &lt;code class=&quot;language-text&quot;&gt;Esc ZZ&lt;/code&gt; to exit and save.&lt;/p&gt;
&lt;p&gt;View the random art for fun:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ssh-keygen -lv -f yubikey-ssh.pub&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To check the slot status (optional):&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;yubico-piv-tool -a status&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;move-the-public-key-to-the-authorized_keys-file-on-the-server&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#move-the-public-key-to-the-authorized_keys-file-on-the-server&quot; aria-label=&quot;move the public key to the authorized_keys file on the server permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Move the public key to the authorized_keys file on the server&lt;/h2&gt;
&lt;p&gt;You could copy the file public key id to your clipboard in the terminal quite easily:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;cat yubikey-ssh.pub | pbcopy&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you are moving it to an unRAID server do the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Append the public key file to /boot/config/ssh/root.pubkeys&lt;/li&gt;
&lt;li&gt;Copy /etc/ssh/sshd_config to /boot/config/ssh&lt;/li&gt;
&lt;li&gt;Modify /boot/config/sshd_config to set the following line:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;AuthorizedKeysFile      /etc/ssh/%u.pubkeys&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you are using a more traditional Linux server, the file to append should be &lt;code class=&quot;language-text&quot;&gt;~/.ssh/authorized_keys&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;authenticate-to-the-server-with-the-new-key&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#authenticate-to-the-server-with-the-new-key&quot; aria-label=&quot;authenticate to the server with the new key permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Authenticate to the server with the new key&lt;/h2&gt;
&lt;p&gt;You can verify that you can log in to the server with the new key that exists on the smart card&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ssh -I $OPENSC_PK user@remote.example.com&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is pretty awesome. Now let&apos;s setup ssh-agent so we don&apos;t need to keep typing the PIN every time we connect to a new server. The PIN will be cached by ssh-agent after the first PIN entry as long as the smart card remains connected to your system.&lt;/p&gt;
&lt;h3 id=&quot;make-ssh-agent-work-in-macos-1012&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#make-ssh-agent-work-in-macos-1012&quot; aria-label=&quot;make ssh agent work in macos 1012 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Make ssh-agent work in MacOS 10.12&lt;/h3&gt;
&lt;p&gt;I found the solution to &lt;a href=&quot;https://github.com/matthewjweaver/mjw-toolbox/issues/75&quot;&gt;this issue here&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;rm&lt;/span&gt; /usr/local/lib/opensc-pkcs11.so
&lt;span class=&quot;token function&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$OPENSC_PK&lt;/span&gt; /usr/local/lib/opensc-pkcs11.so
ssh-add &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; /usr/local/lib/opensc-pkcs11.so&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I would recommend setting that last command as an alias. This way, it is as simple as typing &lt;code class=&quot;language-text&quot;&gt;loadkey&lt;/code&gt; after restart or inserting the key. In my bash profile I have:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;loadkey&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ssh-add -s /usr/local/lib/opensc-pkcs11.so&apos;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;unloadkey&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;ssh-add -e /usr/local/lib/opensc-pkcs11.so&apos;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can now confirm that the correct public key has been added:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ssh-add -L&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now to log in to the server you simply type an ssh command as usual:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ssh user@remote.example.com&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Encryption Part 3 - Secure GPG and Keybase Install]]></title><description><![CDATA[Keybase Set Up - Option 2 In the second post of my encryption series, I…]]></description><link>https://brandonkalinowski.com/encryption-part-3</link><guid isPermaLink="false">https://brandonkalinowski.com/encryption-part-3</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 16 Feb 2018 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;keybase-set-up---option-2&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#keybase-set-up---option-2&quot; aria-label=&quot;keybase set up   option 2 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Keybase Set Up - Option 2&lt;/h2&gt;
&lt;p&gt;In the &lt;a href=&quot;/encryption-part-2&quot;&gt;second post of my encryption series&lt;/a&gt;, I introduced you to Keybase. It is encryption for the masses. With a little bit of extra effort, we can extend Keybase to work in tandem with GPG. After following this guide, you will have a GPG key, secured on a smart card, that can be used to sign git commits and for SSH authentication. Your GPG signatures will be independently verifiable and cryptographically linked to our online identities and devices. Finally, Keybase will make managing PGP keys simple and help you keep all your public PGP keys in sync and up to date.&lt;/p&gt;
&lt;h2 id=&quot;how-to-create-a-secure-environment&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#how-to-create-a-secure-environment&quot; aria-label=&quot;how to create a secure environment permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;How to Create a secure environment&lt;/h2&gt;
&lt;p&gt;Online identity is important. When using PGP encryption, your master private key should be a closely guarded secret. Losing control of this can be catastrophic. A nice way to protect oneself is to keep the master key air-gapped and disconnected. Sign main encryption and signing subkeys with this master key and store those on your encryption device for daily use.&lt;/p&gt;
&lt;p&gt;Keybase solves a lot of problems with the PGP &quot;web of trust&quot; model that is messy and never scaled well. Instead of relying on signing other people&apos;s keys, Keybase lets users create signed statements connecting their public PGP key with their social media accounts. This social proof makes encryption possible for the average web user. With the recent Facebook security scandal, people may find this method user-friendly and less overwhelming.&lt;/p&gt;
&lt;p&gt;I do not claim to be a security researcher or cryptographic expert. However, this guide will walk you through a sane approach to handling online privacy and encryption and should prove to be a good starting point for discussion. Don&apos;t hesitate to do your own research and send me comments on what you find.&lt;/p&gt;
&lt;h2 id=&quot;keybase-and-gpg-documentation&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#keybase-and-gpg-documentation&quot; aria-label=&quot;keybase and gpg documentation permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Keybase and GPG Documentation&lt;/h2&gt;
&lt;p&gt;The basic overview of this approach is as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install GPGTools for Mac. If you are using Windows, you are on your own.&lt;/li&gt;
&lt;li&gt;Install Tails on a live USB. Disconnect from the internet and use this machine to create your master PGP key.&lt;/li&gt;
&lt;li&gt;Create and store a master GPG key on the live Tails USB. If you need to make changes to this key, you will have a secure system to do so. Once you are done you can place this master key in a bank safe deposit box or perhaps bury it somewhere in your yard ;)&lt;/li&gt;
&lt;li&gt;Add the signing subkeys and remove the starting one. This will effectively create a new key pair for daily use that has some limitations: You will be unable to add user IDs, generate subkeys, or sign other keys. If you need to do this, use your master key. This enhances your security as if your encryption device is lost or stolen you can simply revoke this subkey and generate a new one.&lt;/li&gt;
&lt;li&gt;Install this onto your encryption device. In this case I am using a Yubikey 4.&lt;/li&gt;
&lt;li&gt;Finally, create a Keybase account. Do not create a key on the website. You will be using the PGP key created in GPG. Install the Keybase app. This will also install the Keybase command line tools.&lt;/li&gt;
&lt;li&gt;Import the PGP key into Keybase.&lt;/li&gt;
&lt;li&gt;Finally add some social proofs in Keybase. Without the private key, you will need to use the Keybase CLI. Simply type &lt;code class=&quot;language-text&quot;&gt;Keybase prove twitter username&lt;/code&gt; and then tweet out the output for verification.&lt;/li&gt;
&lt;li&gt;If you use Git, set up git commits to be signed and upload your public key to GitHub or GitLab so the service can verify your commits against your PGP key.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;documentation-in-detail&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#documentation-in-detail&quot; aria-label=&quot;documentation in detail permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Documentation in Detail&lt;/h2&gt;
&lt;h3 id=&quot;1-install-gpgtools&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-install-gpgtools&quot; aria-label=&quot;1 install gpgtools permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Install GPGTools&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Download GPGTools &lt;a href=&quot;https://gpgtools.org/&quot;&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install GPGTools. Under Custom, disable GPGMail as we don&apos;t need it. I prefer Unibox for email but if you do use Apple Mail you can choose to install it but using OpenPGP for email is outside of the scope of this article.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We will use this to manage our GPG keychains. We will not create the key pair on the Mac though.&lt;/p&gt;
&lt;h3 id=&quot;2-install-tails-live-usb&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-install-tails-live-usb&quot; aria-label=&quot;2 install tails live usb permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Install Tails Live USB&lt;/h3&gt;
&lt;p&gt;Tails is a Linux distribution specifically for those that are concerned about security. We will use it to generate our master PGP keys.&lt;/p&gt;
&lt;p&gt;Follow &lt;a href=&quot;https://tails.boum.org/install/mac/usb-overview/index.en.html&quot;&gt;these instructions&lt;/a&gt;. Installation is a bit convoluted as you must install an intermediate Tails before the final install. Since you already installed GPGTools you can use it to verify the download. I did this in addition to the BitTorrent download verification.&lt;/p&gt;
&lt;p&gt;At this point, you should unplug the network cable while booted into Tails.&lt;/p&gt;
&lt;p&gt;Enable the encrypted persistent storage on the tails USB drive. This is where we will store the master GPG key. Use a strong password and write it down. Forget this password and you lose control of your master key and you will have to start over with your online identity. Whenever we need to make changes to the master key or issue or revoke subkeys you will need to boot into the Tails live USB, decrypt this volume and then work with GPG on this secure system.&lt;/p&gt;
&lt;h3 id=&quot;3-create-the-master-key&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-create-the-master-key&quot; aria-label=&quot;3 create the master key permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Create the Master Key&lt;/h3&gt;
&lt;p&gt;Open terminal and type these commands. You will be prompted for answers. Here I am just showing the text that I entered. Key size is 4096, the master key never expires because it will be locked away somewhere physically secure (consider your threat model) when setting this. You could set an expiration and extend it later but if you forget to do this you will need to start over. In most cases, an expiring master key is more trouble than it is worth.&lt;/p&gt;
&lt;p&gt;Here&apos;s an overview of the first few commands:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; ~/Persistent
gpg --full-generate-key
&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;4096&lt;/span&gt;
&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
y&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;When asked for your full name and email address enter them.&lt;/p&gt;
&lt;p&gt;Use an email address you are willing to make public. The email will not be available as plain text publicly but will instead be encoded in your public key. This means anyone who downloads your PGP key from the keyserver will have your email once they add it to their GPG keyring. This is more trouble than it is worth for any spammer looking to harvest addresses so I wouldn&apos;t worry at all about that. In my case, I used an email address specifically for this purpose. Don&apos;t just pick any email address though because this is how contacts will recognize your key. Leave the comment empty.&lt;/p&gt;
&lt;p&gt;Finally, type &lt;code class=&quot;language-text&quot;&gt;O&lt;/code&gt; to Okay and enter a secure password to encrypt your private key. I would recommend either using a password manager to generate this password or to use a secure password that you will not forget.&lt;/p&gt;
&lt;p&gt;After confirming your password, move your mouse and type gibberish frantically on the keyboard. This will ensure there is plenty of entropy when the key is created.&lt;/p&gt;
&lt;p&gt;You can now verify your gpg key. Use the &lt;code class=&quot;language-text&quot;&gt;-K&lt;/code&gt; flag to verify secret keys:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg -K&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;4-generate-subkeys&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#4-generate-subkeys&quot; aria-label=&quot;4 generate subkeys permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Generate Subkeys&lt;/h2&gt;
&lt;p&gt;First edit your master key:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --expert --edit-key your@email.com&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then, follow &lt;a href=&quot;https://blog.tinned-software.net/create-gnupg-key-with-sub-keys-to-sign-encrypt-authenticate/&quot;&gt;this guide&lt;/a&gt; starting the &quot;Generate the Subkeys&quot; section to finish creating the daily subkey. Ignore the &quot;Configure GnuPG&quot; step as Tails already has an excellent and secure default configuration. Unless you plan to use this for all email communications or several git identities, you can skip the &quot;Add Identities&quot; section.&lt;/p&gt;
&lt;p&gt;Follow the guide to the &quot;Verify the created GnuPG key&quot; as that can be skipped.&lt;/p&gt;
&lt;p&gt;Once you are done, you should have your master keys and daily keys exported and stored on your persistent encrypted partition. I would recommend rebooting Tails and verifying that everything has been saved and is working order. Since we didn&apos;t choose to make GPG persistent, you will need to re-import the exported keys. You can do this to test both the master key and the signing key. You should try adding a key to the daily key. If it fails, your daily key has been set up correctly.&lt;/p&gt;
&lt;p&gt;At this point, you can copy the daily use keys over to a separate flash drive to insert into your main machine. While you could transfer the keys to the Yubikey on your Tails machine, I found this to not work consistently. For that reason, I recommend performing that operation on your daily computer. You should scan your Mac for malware beforehand and you can disable WiFi during the operation to be extra cautious. If the daily use key is ever compromised, you can still revoke it on the secure Tails machine and then generate a new key while still keeping your public key.&lt;/p&gt;
&lt;h2 id=&quot;5-install-signing-keys-on-encryption-device&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#5-install-signing-keys-on-encryption-device&quot; aria-label=&quot;5 install signing keys on encryption device permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Install Signing Keys on Encryption Device&lt;/h2&gt;
&lt;p&gt;On your main machine, disconnect from the network and insert the flash drive that contains only the daily use subkeys (not the Tails USB with the master key).&lt;/p&gt;
&lt;p&gt;Open GPG Keychain and import the keys. Set trust to ultimate. You also use the command line for this, but the GUI is fast and simple.&lt;/p&gt;
&lt;p&gt;Double click the imported key and set trust to ultimate. You could click on the subkeys tab and verify that you have the three subkeys (encryption, signing, and authentication).&lt;/p&gt;
&lt;p&gt;Right now these keys are not yet stubs, and thus you could use them as is to perform GPG operations. However, for some extra physical security, we will move these private subkeys to the smart card.&lt;/p&gt;
&lt;p&gt;Before moving the PGP keys to the smart card, you should change the &lt;a href=&quot;https://developers.yubico.com/PGP/Card_edit.html&quot;&gt;PIN and Admin PIN&lt;/a&gt; from their defaults. Enter your cardholder name while you are editing the card. The URL should be a direct link to your PGP public key set it to &lt;code class=&quot;language-text&quot;&gt;https://Keybase.io/&amp;lt;username&gt;/pgp_keys.asc&lt;/code&gt;. You may find it easier to set this after performing steps 6 and 7.&lt;/p&gt;
&lt;p&gt;Stubs will remain on the machine and you will need to insert the smart card to perform GPG operations such as signing a git commit.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;$ gpg --edit-key your@email.com
gpg&gt; toggle
gpg&gt; key 1
gpg&gt; keytocard
Please select where to store the key:
  (1) Signature key
  (3) Authentication key
Your selection? 1
gpg&gt; key 1
gpg&gt; key 2
gpg&gt; keytocard
Please select where to store the key:
  (2) Encryption key
Your selection? 2
gpg&gt; key 2
gpg&gt; key 3
gpg&gt; keytocard
Please select where to store the key:
  (3) Authentication key
Your selection? 3
gpg&gt; quit&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can now confirm that the private keys have been moved to the Yubikey:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --list-secret-keys&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you see &lt;code class=&quot;language-text&quot;&gt;ssb&gt;&lt;/code&gt; the computer now only has a stub for the private key (specifically this is denoted by the existance of the angle bracket).&lt;/p&gt;
&lt;p&gt;You can check the card status:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gpg --card-status&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;At this point, you can remove the USB containing your original daily keys and optionally securely erase it. The keys now exist on the Yubikey and thus the intermediate keys no longer serve a purpose. If this were to fall into the wrong hands, you would have to revoke it and generate a new daily key. So for simplicity and peace of mind, securely erasing this USB is the best course of action. You can also reconnect to the network if you took that additional precaution for the key transfer.&lt;/p&gt;
&lt;h2 id=&quot;6-install-keybase&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#6-install-keybase&quot; aria-label=&quot;6 install keybase permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Install Keybase&lt;/h2&gt;
&lt;p&gt;Finally, create a Keybase account. Do not create a key on the website. You will be using the PGP key that exists on the smart card. Install the Keybase app. This will also install the Keybase command line tools.&lt;/p&gt;
&lt;h2 id=&quot;7-import-the-pgp-public-key-into-keybase&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#7-import-the-pgp-public-key-into-keybase&quot; aria-label=&quot;7 import the pgp public key into keybase permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. Import the PGP Public key into Keybase&lt;/h2&gt;
&lt;p&gt;Import the GPG public key into Keybase:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Keybase pgp select&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will import just the public key. When using a smart card it seems that the private key stub cannot be imported to the local Keybase keychain. Therefore, some &lt;code class=&quot;language-text&quot;&gt;Keybase pgp&lt;/code&gt; commands will not be available, but this does not really a problem because &lt;code class=&quot;language-text&quot;&gt;gpg&lt;/code&gt; can be used instead.&lt;/p&gt;
&lt;h2 id=&quot;8-finally--add-some-social-proofs-in-keybase&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#8-finally--add-some-social-proofs-in-keybase&quot; aria-label=&quot;8 finally  add some social proofs in keybase permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;8. Finally,  Add Some Social Proofs in Keybase.&lt;/h2&gt;
&lt;p&gt;Without the private key, you will need to use the Keybase CLI. Simply type &lt;code class=&quot;language-text&quot;&gt;Keybase prove twitter username&lt;/code&gt; and then tweet out the output for verification.&lt;/p&gt;
&lt;h2 id=&quot;final-conclusion&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#final-conclusion&quot; aria-label=&quot;final conclusion permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Final Conclusion&lt;/h2&gt;
&lt;p&gt;A lot has been accomplished here. You should now have a working PGP private key that exists only on your smart card device and a working Keybase install with your public PGP posted on &lt;a href=&quot;https://Keybase.io&quot;&gt;Keybase.io&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the fourth and final installment of this encryption series, I will explain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How you can now use this new PGP key to sign git commits&lt;/li&gt;
&lt;li&gt;How to import public keys and smart card stubs onto another computer&lt;/li&gt;
&lt;li&gt;Use the smart card for SSH authentication using PIV&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;ram-disk-tip&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#ram-disk-tip&quot; aria-label=&quot;ram disk tip permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;RAM Disk Tip&lt;/h2&gt;
&lt;p&gt;If you intend to write the private key to a file on your daily machine, it is best to do so to the RAM. In this way, no traces of the private key will be left on the system hard drive. Doing so is quite simple:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;shell&quot;&gt;&lt;pre class=&quot;language-shell&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;diskutil erasevolume HFS+ &lt;span class=&quot;token string&quot;&gt;&apos;RAMDisk&apos;&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;hdiutil attach &lt;span class=&quot;token parameter variable&quot;&gt;-nomount&lt;/span&gt; ram://2048&lt;span class=&quot;token variable&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can now write private keys to the RAMDisk. Once you are done, you can unmount the RAMDisk and shut down the computer (powering off the RAM) to completely erase any trace of the files stored on the RAMDisk volume.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;useful-references&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#useful-references&quot; aria-label=&quot;useful references permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Useful References&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.tinned-software.net/create-gnupg-key-with-sub-keys-to-sign-encrypt-authenticate/&quot;&gt;https://blog.tinned-software.net/create-gnupg-key-with-sub-keys-to-sign-encrypt-authenticate/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://alexcabal.com/creating-the-perfect-gpg-keypair/&quot;&gt;https://alexcabal.com/creating-the-perfect-gpg-keypair/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[Encryption Part 2 - Cryptography for Everyone]]></title><description><![CDATA[In my last article, I touched on why encryption is important and offered some…]]></description><link>https://brandonkalinowski.com/encryption-part-2</link><guid isPermaLink="false">https://brandonkalinowski.com/encryption-part-2</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 09 Feb 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In &lt;a href=&quot;/encryption-part-1&quot;&gt;my last article&lt;/a&gt;, I touched on why encryption is important and offered some common sense first steps for your security. Let&apos;s expand that discussion by looking at a monumental app called Keybase.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TLDR:&lt;/strong&gt; &lt;a href=&quot;https://keybase.io/brandonkal&quot;&gt;Keybase&lt;/a&gt; is cryptography for everyone. It&apos;s new and fresh and solves PGP&apos;s &quot;web of trust&quot; complexity problem. Encryption keys are signed against something you already trust: social media accounts. It is an online identity profile. It&apos;s also an app where you can send an encrypted message to anyone in a Slack-like interface.&lt;/p&gt;
&lt;p&gt;Before diving in, I will briefly explain PGP.&lt;/p&gt;
&lt;h2 id=&quot;pgp-encryption&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#pgp-encryption&quot; aria-label=&quot;pgp encryption permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PGP Encryption&lt;/h2&gt;
&lt;p&gt;Pretty Good Privacy, or PGP, is an encryption program developed in 1991 by Phil Zimmermann. It can be used for signing, encrypting, and decrypting e-mail, files, and even disks. You give it plain text or binary files and it uses public-key cryptography to output random encrypted ASCII (text) code. Public-key cryptography is widely used and is most commonly seen in website TLS certificates, cryptocurrency transactions such as Bitcoin and SSH authentication.&lt;/p&gt;
&lt;p&gt;This mode of encryption is vastly superior to shared-key encryption which is the easiest to understand. With shared-key cryptography, there is one key to both encrypt and decrypt a message. Say I want to share my latest business earnings report with my accountant. I protect the Excel file with a passphrase &quot;Jason swallows banana tacos.&quot; I then email the protected file and tell my accountant the password over the phone. This is the shared key.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Notice how I used a phrase rather than a word. It is easy to memorize and more secure than a password such as &quot;b4naNa&amp;#x26;67.&quot; We&apos;ve been trained by websites to create difficult to remember passwords that are less secure than a passphrase. &quot;Jason swallows banana tacos&quot; is a &lt;em&gt;lot&lt;/em&gt; harder for a computer to crack with brute force. &lt;strong&gt;It has a lot more entropy&lt;/strong&gt;. It is also nonsense (I&apos;ve never heard of a banana taco), and thus won&apos;t be found in any literature for dictionary attacks.&lt;/p&gt;
&lt;p&gt;Using a shared key is certainly better than not encrypting at all. But there are drawbacks. What if I can&apos;t trust the accountant? If he leaks the password, all our communications can be decrypted by a thief. Even if I trust the accountant, how can I be sure that his computer is not infected by some virus that steals and decrypts the password hash on some GPU farm? Or perhaps some malware is installed on the accountant&apos;s computer that captures the password as he types it to open the Excel file I sent him. Further, a shared key does not provide any form of authentication. When I receive an email response from the accountant with the final income statement, how can I be sure that the modified excel file was not tampered with by a man in the middle, a virus, or an email hacker? I can&apos;t. I could look at the metadata of the Excel file, but this is easy to spoof. These are all problems that public-key encryption solves.&lt;/p&gt;
&lt;p&gt;With public-key encryption, two keys are used: a private key and a public key. The accountant posts his &lt;strong&gt;public key&lt;/strong&gt; in a public place such as a key server. His &lt;strong&gt;private key&lt;/strong&gt; is never shared and is typically stored password-protected on his computer, though it can also be stored on smart card protected by a pin. After the accountant publishes his &lt;strong&gt;public key&lt;/strong&gt;, I can then encrypt the Excel file with his &lt;strong&gt;public key&lt;/strong&gt;. Now only my accountant can decrypt it (I could encrypt the file with my public key as well so I could see what I sent at a later point). When he receives the file, he uses his &lt;strong&gt;private key&lt;/strong&gt; to decrypt the file and start calculating financial things. To handle authentication, I can also sign the Excel file with my digital signature using my &lt;strong&gt;private key&lt;/strong&gt;. When the accountant receives the file, he will be able to verify my digital signature using my &lt;strong&gt;public key&lt;/strong&gt;. He can now be very confident that the financial data actually came from me because I am the only one with access to my &lt;strong&gt;private key&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In addition to PGP, public key cryptography is used for SSH authentication for passwordless server administration. This is more secure than using a password as there are no keystrokes to log and access is only permitted for machines that have the private SSH key installed.&lt;/p&gt;
&lt;h2 id=&quot;web-of-trust&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#web-of-trust&quot; aria-label=&quot;web of trust permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Web Of Trust&lt;/h2&gt;
&lt;p&gt;It is extremely important that the public key I use to send someone a message actually belongs to the recipient. Your public PGP key is essentially your online identity. In the case of the business accountant illustration, we could simply exchange public keys offline and in person. However, what if I want to send a message to someone whom I do not know in person or where physically exchanging keys is practically impossible? In that case, I would need to download the intended recipient&apos;s public key from a public key server. But how can I be sure that that public key I found online actually belongs to the intended recipient? After all, it would be pretty easy for an impostor to create a fake public key and post it online. I would then by unwittingly encrypting the message for the impostor who could then read the messages if intercepted (of course this would require an extremely sophisticated and targeted attack). In order to solve this problem, PGP uses a &quot;web of trust&quot;. The premise is that while you may not know Sarah personally, your friend Bob can vouch that Sarah&apos;s public key actually belongs to Sarah. Bob signs Sarah&apos;s key and since I trust Bob, I can be assured that Sarah&apos;s key can also be trusted.&lt;/p&gt;
&lt;p&gt;This is the web of trust. It is a chain of signatures so that you can be sure that you are using the correct encryption key and not encrypting for an impostor. The problem is, &lt;strong&gt;the web of trust is very messy&lt;/strong&gt;. It takes a lot of effort to manage a keychain with keys for everyone you wish to communicate with. You have to be sure that any new keys you add are linked to your web of trust. You have to check to see if that new public key is signed by one of your other contacts. If it is not signed by anyone you know and trust, then you will need to blindly trust the new key. The &quot;web of trust&quot; idea was formulated decades ago in the early days of the internet. It turns out there is now a better way to authenticate PGP keys and Keybase behind that movement. It is awesome.&lt;/p&gt;
&lt;h2 id=&quot;enter-keybase&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#enter-keybase&quot; aria-label=&quot;enter keybase permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Enter Keybase&lt;/h2&gt;
&lt;p&gt;Rather than relying on the web of trust, Keybase signs keys by verifying social media accounts. &lt;strong&gt;&lt;a href=&quot;https://keybase.io/brandonkal&quot;&gt;Keybase&lt;/a&gt; is cryptography for everyone&lt;/strong&gt;. It&apos;s new and fresh and solves and eliminates the complexity of PGP&apos;s &quot;web of trust&quot;. It can act as a slick online identity profile where your social media accounts are verified and linked together. So if you know me as &lt;a href=&quot;https://twitter.com/brandonkal9/status/1004955249713373185&quot;&gt;@brandonkal9&lt;/a&gt; on Twitter you can send me an encrypted Keybase message instantly. Know me as &lt;a href=&quot;https://gist.github.com/brandonkal/42c8198de9abfd8cb9f45fbb46a7a1ee&quot;&gt;brandonkal&lt;/a&gt; on GitHub? You can send me a message. The app is familiar and has a Slack-like interface. It can also be used to encrypt and sync — essentially a Dropbox alternative, but files are protected by your private key. You can use it for team chat or hosting an encrypted git repository. I still prefer to host code on GitHub and GitLab. Keybase helps with that: I can generate a PGP key with Keybase and use it to GPG sign all my git commits to my GitHub and GitLab repositories. The PGP public key is public on my Keybase profile and can be used to independently verify my git commits against the public key. GitHub also has my public key and uses it to display verification badges in the user interface. Without GPG, it is very easy to spoof who made the commit by changing the git email.&lt;/p&gt;
&lt;h2 id=&quot;keybase-set-up---option-1&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#keybase-set-up---option-1&quot; aria-label=&quot;keybase set up   option 1 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Keybase Set Up - Option 1&lt;/h2&gt;
&lt;p&gt;Simply create a Keybase account. Use a secure password. This password is only for web access and the first device install. Keybase is relatively new so you should be able to get the account name you want. Then download the app. This will install the command line tools. It is best to install Keybase on more than one device. The second device is authenticated by the first. Installing on more than one device ensures your private key is protected in case you ever lose access to one device. Then create a PGP key pair (don&apos;t upload the private key as suggested). Finally, sign your social media accounts in the command line:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;keybase prove twitter your-username
keybase prove github your-username
keybase prove web https://example.com&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Each command will output text that you will need to copy and paste and tweet out, post as a Github gist or publish as a &lt;a href=&quot;https://brandonkalinowski.com/keybase.txt&quot;&gt;keybase.txt&lt;/a&gt; file on your website&lt;/p&gt;
&lt;p&gt;That is essentially all that is required to install and use Keybase. However, if you want to use it to sign git commits or go the more involved and advanced route (consider your threat model) read on. Don&apos;t worry, it is not terribly complicated but I wanted to offer a simple solution for most!&lt;/p&gt;
&lt;h2 id=&quot;keybase-set-up---option-2&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#keybase-set-up---option-2&quot; aria-label=&quot;keybase set up   option 2 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Keybase Set Up - Option 2&lt;/h2&gt;
&lt;p&gt;This is the route I took. It is a bit more complicated but also secure. The end result consists of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A master GPG key stored in a secure environment -- an encrypted live USB locked away.&lt;/li&gt;
&lt;li&gt;A daily use signing key stored on an encryption device.&lt;/li&gt;
&lt;li&gt;Keybase to host the public key and verify your identity with social media.&lt;/li&gt;
&lt;li&gt;SSH private keys also stored on the encryption device&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;ve decided to break this tutorial into a separate post for readability. I would recommend at least looking through it to decide which route you wish to take. This method required a lot of security research, and I hope the following post helps to get your security up and running in a fast manner. While this post serves as an excellent introduction to Keybase, the next post will serve an excellent reference to the steps required to set up a secure environment and install Keybase to be used in tandem with an externally generated PGP key that exists only on your smart card device.&lt;/p&gt;
&lt;p&gt;So without further ado, &lt;a href=&quot;/encryption-part-3&quot;&gt;let&apos;s dive in!&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;final-note-on-recent-events&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#final-note-on-recent-events&quot; aria-label=&quot;final note on recent events permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Final Note on Recent Events&lt;/h2&gt;
&lt;p&gt;While reading this article, the term PGP may have brought to mind the recent EFAIL vulnerability. Some even went so far as to claim that PGP was dead in the news cycle. Security researchers uncovered a vulnerability in which an insecure email client could send the decrypted text to an attacker when HTML email content is rendered. This is more of a failure in how email clients render HTML email content instead of the PGP encryption protocol itself.&lt;/p&gt;
&lt;p&gt;It is my opinion that PGP on top of the email protocol was never a very good fit for secure communications. The subject line is still unencrypted and other email metadata is just as valuable for a snooping party. You should instead use dedicated apps for secure communications such as &lt;a href=&quot;https://signal.org/&quot;&gt;Signal&lt;/a&gt; or &lt;a href=&quot;https://keybase.io/blog/keybase-chat&quot;&gt;Keybase Chat&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From a recent Keybase email:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Keybase&apos;s end-to-end secure chat, our new teams feature, our collaborative encrypted git repositories, and our filesystem &lt;em&gt;all do not use PGP.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To experience EFAIL with Keybase, you must (1) knowingly do this, and then (2) paste a PGP message into an insecure 3rd party app. So don&apos;t do that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PGP as a protocol is still secure. Key sizes have increased as computers have improved but Pretty Good Privacy is still &quot;pretty good.&quot;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Encryption Part 1 - An Introduction]]></title><description><![CDATA[Encryption To some, encryption sounds nefarious. Recent ransomware attacks may…]]></description><link>https://brandonkalinowski.com/encryption-part-1</link><guid isPermaLink="false">https://brandonkalinowski.com/encryption-part-1</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 02 Feb 2018 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;encryption&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#encryption&quot; aria-label=&quot;encryption permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Encryption&lt;/h2&gt;
&lt;p&gt;To some, encryption sounds nefarious. Recent ransomware attacks may have given the word a bad rap. Encryption is the process of converting information into code to prevent unauthorized access. While it can be used by bad actors to keep you from your data (ransomware is an excellent reason to keep frequent backups), encryption can also be used by you to keep bad actors from snooping on your data. It is also useful to verify trust, most commonly seen in TLS certificates. Knowing that you are actually communicating with your home server or online banking server rather than some bad server dressed in sheep&apos;s clothing is certainly very important. The web is now encrypted by default thanks to efforts such as &lt;em&gt;Let&apos;s Encrypt&lt;/em&gt;. HTTPS also provides for faster transmission via HTTP/2, so there is little reason to not encrypt web traffic. HTTPS ensures that you are talking to the website you think you are and that sensitive data you send such as your login password is sent encrypted end-to-end. Today, any digital citizen should have some concern about ensuring their data does not fall into the wrong hands.&lt;/p&gt;
&lt;h2 id=&quot;nothing-to-hide&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#nothing-to-hide&quot; aria-label=&quot;nothing to hide permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Nothing to Hide&lt;/h2&gt;
&lt;p&gt;The argument that one who has &quot;nothing to hide&quot; should not be concerned about encryption is a red herring. As we have seen recently, even companies we previously trusted (I&apos;m looking at you, Facebook) are irresponsible with the data we freely provide to them. Perhaps these recent data scandals will be enough to convince people to be conscious of their digital footprints. We already know data companies such as Facebook can infer &quot;private&quot; information such as annual income from the things we like and the demographic data we freely share. Facebook probably already has your exact street address if you uploaded photos with GPS metadata (i.e. photos taken by a smartphone). Windows collects and shares information to the Microsoft mothership (there&apos;s a keylogger included by the way). Most software applications send &quot;usage data.&quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;People didn&apos;t even bat an eye when Gmail parsed and read through our emails to sell relevant ads. Retailers track you while you shop with your cell phone&apos;s MAC address. Thank you for the free WiFi.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That last one may sound shocking but online retail giants have been doing essentially the same thing for years. Cookies and now digital fingerprints are used to keep track of your every interest across websites.&lt;/p&gt;
&lt;p&gt;I do not mean to sound alarmist. It is true that a lot of this data collection is beyond our control. It is also true that these same tools that track us do actually provide value. Tracking cookies, for instance, allow advertisers to send us advertisements that are targeted to our unique interests. Nevertheless, people should be aware of their threat model and take simple steps to stay safe. For example, switching to a secure messaging platform such as &lt;strong&gt;Signal&lt;/strong&gt; and even face-to-face conversation is a solid first step. Using &lt;strong&gt;iMessage&lt;/strong&gt; is also a good second option because messages are encrypted end-to-end by default. It is completely transparent and convenient. But it also requires that you trust Apple with the encryption key (not a big leap) and there is the fact that your messages are stored unencrypted on iCloud where they are available for search warrants and skilled hackers. Still, this is much better than email, where messages are mostly not encrypted at all (Gmail does provide TLS encryption if you have a business account but Google still has the key).&lt;/p&gt;
&lt;h4 id=&quot;in-the-spirit-of-common-sense-online-security-here-is-a-decent-checklist&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#in-the-spirit-of-common-sense-online-security-here-is-a-decent-checklist&quot; aria-label=&quot;in the spirit of common sense online security here is a decent checklist permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;In the spirit of common sense online security, here is a decent checklist:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Use Signal or another secure messaging (Skip WhatsApp as it is owned by Facebook, which has a bad security reputation).&lt;/li&gt;
&lt;li&gt;Don&apos;t overexpose yourself by posting &quot;I&apos;m off on vacation for the next two weeks!&quot; on social media (translation: &quot;Calling all burglars! My home is available!&quot;).&lt;/li&gt;
&lt;li&gt;Disable Windows 10 telemetry - or at least what you can.&lt;/li&gt;
&lt;li&gt;Keep up with software security updates. Stop using Windows XP.&lt;/li&gt;
&lt;li&gt;Use a VPN (no need to spend money here, you can connect back to your home or office connection) when using public WiFi, Hotel WiFi, Airbnb, etc.&lt;/li&gt;
&lt;li&gt;Switch to Firefox or Safari. Use Firefox Container tabs and HTTPS everywhere extensions.&lt;/li&gt;
&lt;li&gt;Proxy all of your Google searches (see Startpage) except where doing so doesn&apos;t make sense (such as local and Maps results) or use DuckDuckGo if you are extra paranoid.&lt;/li&gt;
&lt;li&gt;Use 2-factor authentication for your important accounts. Avoid SMS as a second factor. Use a U2F key for extra security or Google Authenticator.&lt;/li&gt;
&lt;li&gt;If you want to step it up, you can use the full-disk encryption offered by your operating system. This ensures no one will have access to the data without the password (including you). At the very least, encrypt your phone as this is the device that is most likely to be lost or stolen. Many iPhones and Android phones now do this by default. You could also encrypt your computer as long as you are not the type of person who forgets passwords.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;a-note-regarding-social-media&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#a-note-regarding-social-media&quot; aria-label=&quot;a note regarding social media permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;A Note Regarding Social Media&lt;/h2&gt;
&lt;p&gt;So, Facebook betrayed your trust by sharing your data with third parties. Did we all give up and abandon the social media giant? No. Should we? Probably not. We are social beings. For many people, Facebook is their only online presence and only source of news. Small businesses still depend on the platform for promotion despite their rising ad prices.&lt;/p&gt;
&lt;p&gt;Yes, our friends betrayed us (although unwittingly). They shared our profile information with third parties because they just &lt;em&gt;had&lt;/em&gt; to find out which Hogwarts character they were most like.&lt;/p&gt;
&lt;p&gt;So what should be done? Well first, not everything has to be or should be posted. Second, consider auditing what data you&apos;ve chosen to share with Facebook. Third, delete old posts. We know that Facebook doesn&apos;t actually delete anything. They still keep deleted posts for their algorithms and to package as a consumer profile that can then sold to Facebook advertisers. This is why the first point is important. Removing old posts does ensure that data won&apos;t be seen by web scrapers and people to build profiles of their own. Regularly deleting old posts is a lot less drastic than deleting and disappearing from social media. Is it important that everyone be able to access all your conversations from three years ago? Probably not.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Encryption should become the norm. Even if you still believe you have &quot;nothing to hide&quot;, encrypting your online communications helps make the internet more secure and actually helps those who are in danger of surveillance, such as journalists. If you live in &lt;a href=&quot;https://en.wikipedia.org/wiki/Mass_surveillance_in_the_United_States&quot;&gt;mass surveillance state&lt;/a&gt; such as the United States, you may be shocked to find that &lt;a href=&quot;https://motherboard.vice.com/en_us/article/8q8kwk/trumps-cia-director-pick-thinks-using-encryption-may-itself-be-a-red-flag&quot;&gt;Trump&apos;s CIA director thinks encryption &quot;may itself be a red flag&quot;&lt;/a&gt;. If encryption becomes the norm as it should, your use of encryption will help those at risk by obfuscating that apparent red flag. The more people that employ good security, the safer everyone becomes.&lt;/p&gt;
&lt;p&gt;If this interests you, I found a decent article on the subject &lt;a href=&quot;https://motherboard.vice.com/en_us/article/d3devm/motherboard-guide-to-not-getting-hacked-online-safety-guide&quot;&gt;here&lt;/a&gt;. In &lt;a href=&quot;/encryption-part-2&quot;&gt;part two of my encryption series&lt;/a&gt;, I&apos;ll talk about more advanced encryption such as PGP and a very cool app called Keybase.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Streaming at the Sundance Film Festival]]></title><description><![CDATA[I had a great time working with Legion M to keep their Legion M lounge running…]]></description><link>https://brandonkalinowski.com/streaming-at-the-sundance-film-festival</link><guid isPermaLink="false">https://brandonkalinowski.com/streaming-at-the-sundance-film-festival</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 29 Jan 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a great time working with Legion M to keep their Legion M lounge running smoothly. I also assisted with live streaming the constant stream of celebrity interviews. We even had a nine-hour live stream on Twitch.&lt;/p&gt;
&lt;p&gt;I got to battle cables and cold weather for Legion M&apos;s first successful live broadcast from Sundance Film Festival. My duties also included live switching celebrity interviews with the Tricaster system. The Film Festival also proved to be a great opportunity for networking.&lt;/p&gt;
&lt;p&gt;Below are some highlight clips from the event:&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/_uc3Z9ccHwg?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/viWyVvi1Mpk?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/o7q2SeMYsZ4?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 60.97902097902098%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;iframe src=&quot;https://player.twitch.tv/?autoplay=false&amp;amp;video=v235558494&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot; scrolling=&quot;no&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;</content:encoded></item><item><title><![CDATA[Titan Server - A Build Log]]></title><description><![CDATA[So I built a server... Its name is Titan. My storage situation was becoming…]]></description><link>https://brandonkalinowski.com/titan-server-a-build-log</link><guid isPermaLink="false">https://brandonkalinowski.com/titan-server-a-build-log</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 11 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So I built a server... Its name is Titan. My storage situation was becoming unwieldy. It consisted of seven bare drives and a hot swap bay. Backups were infrequent because the hassle of inserting the right bare drive for each backup kept backups to only an &quot;as needed basis&quot; with regular backups only once a month at best and sometimes even once every three months. Some data was lost. Additionally, my main computer&apos;s internal storage is a 2-drive RAID0 striped 8TB volume. I didn&apos;t even have an 8TB bare drive to back up this volume entirely. In total, I have roughly 12TB of personal data which isn&apos;t too bad for a videographer. However, as that storage requirement continues to grow it is clear that bare hard drives were no longer cutting it for backup. It was for this reason that I decided to finally tackle the problem. The solution would be a server with a large hard drive array to make management of digital storage more convenient.&lt;/p&gt;
&lt;h2 id=&quot;the-solution&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-solution&quot; aria-label=&quot;the solution permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Solution&lt;/h2&gt;
&lt;p&gt;For a primarily family storage solution, a traditional RAID would create unnecessary hassles when expanding the array and would result in less storage security. UnRAID server proved to be a perfect solution during its initial free trial. UnRAID is similar to RAID in that you have parity protection, but unlike traditional RAID, data is not striped. It is sort of like JBOD with parity, except SMB shares are user shares such as &quot;Family Photos&quot; that can span multiple disks instead of simply exporting the disks separately. From the user perspective, you simply write to the &quot;Family Photos&quot; disk and the unRAID server manages which disks from the &quot;Family Photos&quot; pool to write new data to.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/5ZjWxfvfmEoeC0EykqEAsA/365853ef0035b0c8e396bc96e534c870/Titan_Screenshot.png&quot; alt=&quot;Titan Screenshot&quot;&gt;&lt;/p&gt;
&lt;p&gt;The data in the server is a combination of PC backups and primary storage for family photos and video. It also serves as a personal cloud and Plex media server for OTA DVR recordings and the BluRay movies that I own. Directly editing video from the server was not in consideration and thus I/O performance greater than 100MB/s was not a priority. Therefore, the benefits of a striped storage system would not have added value, and would not be the best tool for this use case. It should also be noted that the server would use standard gigabit networking and thus the 100MB/s throughput of gigabit ethernet can easily be saturated with single-drive performance. To really gain benefit from RAID striping, using 10Gbit networking is preferred. Hopefully, it trickles down to the consumer market soon, but as it is now, most consumers are focused on wireless networking.&lt;/p&gt;
&lt;p&gt;Not having to stripe the drives also results in power savings because drives not being accessed can be spun down. Usually, only my 5 TB DVR drive and the parity drive are constantly spinning, but even these drives spin down at times. The other five drives can be spun down to save some power and reduce wear and tear. With parity, any single drive can fail and the data will not be lost. If I am really unlucky and two drives fail at once, only the data contained on those specific drives will be lost.&lt;/p&gt;
&lt;h2 id=&quot;enterprise-gear&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#enterprise-gear&quot; aria-label=&quot;enterprise gear permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Enterprise Gear&lt;/h2&gt;
&lt;p&gt;The best performance-to-cost ratio can be achieved today by buying and repurposing older enterprise gear. This is especially worthwhile today because CPU architecture has not changed significantly since 2012. I really believe this is the sweet spot. My MacBook is a late 2013 model (the last MacBook with NVIDIA discrete graphics), and I built the desktop I use in 2012. The good news is these are far from obsolete! In some cases, the Intel i7-2600K still performs better than later generation CPUs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you are building a desktop computer now, just use the latest generation parts. Consumer PC parts don&apos;t depreciate as nicely as enterprise parts.&lt;/p&gt;
&lt;p&gt;If you look at Intel specs, you will see the improvements over the last few years are mostly concerning power savings. If you run a large server farm, it is worth replacing older servers. If you are a hobbyist or someone looking for one powerful server, buying gear from 2012 is a better route. The market is flooded with older enterprise gear, and as a result, prices are excellent. For instance, a pair of &lt;a href=&quot;https://ark.intel.com/products/64584/Intel-Xeon-Processor-E5-2660-20M-Cache-2_20-GHz-8_00-GTs-Intel-QPI&quot;&gt;E5-2600K 8 core Xeons&lt;/a&gt; can be had for only $135 on eBay. &lt;a href=&quot;https://ark.intel.com/products/64584/Intel-Xeon-Processor-E5-2660-20M-Cache-2_20-GHz-8_00-GTs-Intel-QPI&quot;&gt;This sold for $1,300 new&lt;/a&gt;. That pair easily blows a $300 consumer intel i7 4 core processor out of the water. If you shop around, you could do even better. Sometimes it is more economical to buy a 1U server and remove the motherboard and processors.&lt;/p&gt;
&lt;p&gt;Some builders would even go with earlier generation server parts such as pre-2010, but I would strongly recommend against that. Sandy Bridge is itself a great jump in power and heat efficiency and it has important modern features such as AES v2.&lt;/p&gt;
&lt;p&gt;Lastly, any device sold as a Network Attached Storage is overpriced these days. While simple to manage and sometimes the best solution, $400 only buys you a 2 drive device with a low power CPU. If you want more bang for your buck and you are okay tinkering, eBay is your friend. Enterprise gear will get you the most functionality for your dollar.&lt;/p&gt;
&lt;h2 id=&quot;the-build&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-build&quot; aria-label=&quot;the build permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Build&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Objective:&lt;/strong&gt; Build a multipurpose server to solve my previous storage mess. I set a budget for only $600 for the server. This made things a bit more tricky.&lt;/p&gt;
&lt;p&gt;After a lot of research, I initially settled on a server that is still listed on eBay. The price was $550 for a dual E5-2660 with 6GB of RAM in the Rosewill case with a 600W PSU. I contacted the seller to negotiate an OBO price and the seller refused what I considered a reasonable offer and stated that his minimum (breakeven) price was $600. I then looked at the listing and noticed he raised the listing price to $625. I set out to build essentially the same server as the eBay listing for a better price. I managed to finish the server for only $574 and by building it myself I had more RAM, a much better PSU, and a spare 1U chassis with PSU to boot.&lt;/p&gt;
&lt;p&gt;This build is based mostly on JDM_WAAAT&apos;s $470 dual Xeon build. Changes made are a &lt;strong&gt;better and more efficient power supply, E5-2660 CPUs instead of 2650, a bit more RAM, and a rackmount 15 bay case&lt;/strong&gt;. The cost was a major driving force in parts considered. I was originally looking at a 2 drive consumer NAS that retails for $400. For a bit more, I was able to build a powerful multipurpose 15 bay server. Buying a 1U server to supply the motherboard and 2x E5-2660 Xeon CPUs was the key to making this project extremely economical. There are many ways to source parts if you are looking to save a bit of money.&lt;/p&gt;
&lt;p&gt;Parts Used:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Motherboard and CPU&lt;/td&gt;
&lt;td&gt;Chenbro RM13704 (2x E5-2660 w/ Intel mobo)&lt;/td&gt;
&lt;td&gt;$300 w/ tax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;32GB DDR3 ECC Reg memory&lt;/td&gt;
&lt;td&gt;$60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PSU&lt;/td&gt;
&lt;td&gt;EVGA 750W G2 80+ Gold&lt;/td&gt;
&lt;td&gt;$75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU cooler&lt;/td&gt;
&lt;td&gt;ARTIC Alpine 20 Plus CO x2&lt;/td&gt;
&lt;td&gt;$33&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SATAIII cable&lt;/td&gt;
&lt;td&gt;12 pack&lt;/td&gt;
&lt;td&gt;$9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Case&lt;/td&gt;
&lt;td&gt;Rosewill RSV-L4500&lt;/td&gt;
&lt;td&gt;$97&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total:&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$574&lt;/strong&gt; shipped&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I already had an unused SSD sitting in the box and my existing hard drives populated the array. The SSD drive is used as a cache and for VM and Docker storage. NAS devices are rarely sold with hard drives included, so if you are shopping for a storage solution and do not have hard drives, this would be an additional cost regardless of the route you choose. Because this server has 15 hard drive slots, you can save a lot of money by buying smaller hard drives in a greater quantity such as the 4TB drives where the $/TB is much better than the $/TB of dense 8TB drives. Often you will find it is cheapest to buy external hard drives and take the drive out of the case. You will want to thoroughly test this drive before removing the case so you can return a bad drive before voiding the warranty.&lt;/p&gt;
&lt;h2 id=&quot;the-unraid-os&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-unraid-os&quot; aria-label=&quot;the unraid os permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The unRAID OS&lt;/h2&gt;
&lt;p&gt;The unRAID Plus operating system added an additional $89 to the total cost. It was certainly worth it. I could have achieved an almost similar result with a hodgepodge of open source software but the time saved, clean user interface, and utility of the Operating System quickly pays for itself.&lt;/p&gt;
&lt;p&gt;I now have 7 drives in the array for a total usable space of 17TB with 6.75TB currently free. I can add 4 additional hard drives whenever space becomes tight. If I ever get to that point and need more drives, I can add 4 more drives on top of that (for a total of 15) with the purchase of an unRAID Pro upgrade.&lt;/p&gt;
&lt;h2 id=&quot;virtual-machines&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#virtual-machines&quot; aria-label=&quot;virtual machines permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Virtual Machines&lt;/h2&gt;
&lt;p&gt;With 32GB of RAM, 16 cores, and 32 processing threads, the server has plenty of free compute resources to host virtual machines. The server currently has a pfSense VM acting as a router, a MacOS High Sierra VM (a virtualized Hackintosh!), a Windows 10 VM acting as a DVR, and some miscellaneous  Ubuntu VMs. The pfSense router is quite nice as it segments the network, serves as a secure firewall, and the DNS server actually works. The existing ASUS router, despite being a nice top-of-the-line consumer router, has a weird bug where it does not respond to DNS queries from network clients when it does not have an internet connection. With pfSense, the DNS continues to function and FQDNs that exist on the Titan Server continue to function when the internet drops out, which is unusually common at this location. This means that the cloud instance and other services don&apos;t stop functioning when the internet goes bad.&lt;/p&gt;
&lt;h2 id=&quot;docker-containers&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#docker-containers&quot; aria-label=&quot;docker containers permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Docker Containers&lt;/h2&gt;
&lt;p&gt;Docker is pretty awesome and unRAID provides a nice user interface for it. For readers unfamiliar with the term, a Docker container is a self-contained execution environment. Unlike a Virtual Machine where hardware is virtualized, Docker containers essentially virtualize the operating system. Docker containers have their own isolated CPU, memory, I/O, and network resources but they all share the kernel of the host operating system. They essentially feel like a virtual machine but eliminate the weight and overhead of running a guest operating system in a Virtual Machine. Docker is great for developers because you can essentially contain everything required for the application to operate: OS, python version, dependencies, etc. This feature itself has made building a server worth it. I&apos;ve learned a lot about DevOps and managing servers and services. It is an excellent environment for experimenting with things that may eventually be moved to the public cloud. I plan to use this server to speed up the development of my live streaming platform.&lt;/p&gt;
&lt;p&gt;Here&apos;s a list of containers currently running on the server:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nextcloud, Collabora, and MariaDB&lt;/strong&gt; - these containers together enable our own private cloud. It is essentially a self-hosted Google Docs, Google Drive, and Google Hangouts alternative. This is a very handy way to use and share all that available hard drive space in the server. I also use the app on my phone to automatically upload new photographs to the server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dasher&lt;/strong&gt; - Intercepts signals from Amazon Dash buttons and converts them to MQTT. A hacked Dash button is the cheapest source for WiFi-enabled IOT switches. Instead of ordering product with a Dash button, I use it as a doorbell or light switch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duplicati&lt;/strong&gt; - Encrypted Backup of computers and specific unRAID shares to cloud storage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitLab-CE&lt;/strong&gt; - Self-hosted git for managing the code I write. Right now I am still mostly just using GitHub and GitLab.com.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firefox-sync&lt;/strong&gt; - This is awesome. All my browsing history and bookmarks synced without having to trust that sensitive data with Google.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Home Assistant&lt;/strong&gt; - Home Automation with Python. Most people just install this on a Raspberry Pi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metabase&lt;/strong&gt; - A very slick front end for SQL for database analysis. The premise is &quot;an easy, open source way for everyone in your company to ask questions and learn from data&quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Let&apos;s Encrypt&lt;/strong&gt; - An NGINX reverse proxy and certbot combo for automatic SSL certificate management.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MineOS&lt;/strong&gt; - My young sister likes this one. I haven&apos;t really used this much.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MQTT&lt;/strong&gt; - This is MQTT in a Docker Container.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenVPN AS&lt;/strong&gt; - The OpenVPN access server. This will be decommissioned when I move VPN to the pfSense router.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plex&lt;/strong&gt; - An awesome media server. Think Netflix for the movies you own and also for your home movies and video. Your media is available to stream to any device in the house and even over the internet.&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[LiveCode - Dive into Coding Now!]]></title><description><![CDATA[If you know someone who would like to learn to code, have them take a thorough…]]></description><link>https://brandonkalinowski.com/livecode-dive-into-coding-now</link><guid isPermaLink="false">https://brandonkalinowski.com/livecode-dive-into-coding-now</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 08 Nov 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you know someone who would like to learn to code, have them take a thorough look at &lt;a href=&quot;https://livecode.com/core-benefits-of-livecode/&quot;&gt;LiveCode&lt;/a&gt;. While relatively unknown, LiveCode is a seriously great coding product. If you are old enough to know what HyperCard was, this is very much like a modern version of that product. The language is high level and will cut your development time into less than half.&lt;/p&gt;
&lt;h3 id=&quot;heres-a-quote-from-their-website&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#heres-a-quote-from-their-website&quot; aria-label=&quot;heres a quote from their website permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Here&apos;s a quote from their website:&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Consider the traditional software development cycle. You’re probably familiar with it, it goes something like this: Edit, compile, run,  navigate, debug, repeat. How about just edit your app live?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can edit the user interface while the program is running. This means you can avoid the constant context switching required by the traditional development cycle. A programmer can work more productively this way.&lt;/p&gt;
&lt;h3 id=&quot;heres-why-it-is-awesome&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#heres-why-it-is-awesome&quot; aria-label=&quot;heres why it is awesome permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Here&apos;s why it is awesome:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;As the name suggests, you don&apos;t have to compile your code to run it. You can edit and run your code at the same time in the development environment.&lt;/li&gt;
&lt;li&gt;The language is high-level. Some programmers may be put off by the verbose nature of the code. However, the reality is that much of coding is thinking about how to solve the problem, not the actual typing. Here is an example of LiveCode: &lt;code class=&quot;language-text&quot;&gt;sort the lines of theText descending by last item of each&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It is cross-platform. Develop once and your program will work on Windows, Mac, Android, and iOS. All compiled to a native binary, this is not simply for creating webview apps.&lt;/li&gt;
&lt;li&gt;It is free and Open Source!&lt;/li&gt;
&lt;li&gt;Building user interfaces is fast and intuitive. You can, for instance, drag in a button and then add code to that button.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;recommended-coding-journey&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#recommended-coding-journey&quot; aria-label=&quot;recommended coding journey permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Recommended Coding Journey&lt;/h3&gt;
&lt;p&gt;If you are looking to get started in coding right now, this is the path I would recommend regardless of whether you are young or old:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Basic intro to HTML and CSS&lt;/strong&gt; - Learn markup and how stylesheets work. You should learn just enough to have a basic understanding of how a basic webpage can be constructed. Don&apos;t spend too much time here as you will likely find building things with LiveCode to be more exciting!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LiveCode - Build Some Apps!&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dive into HTML5 and CSS3&lt;/strong&gt;. While you are doing this learn how to use a version control system such as git. You should be able to build your own static website.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn JavaScript&lt;/strong&gt; - this language is universally used for both front-end development and server back-end with NodeJS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn React and GraphQL&lt;/strong&gt; - this is where web design becomes advanced and powerful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Move to advanced web design with Hugo and then Gatsby&lt;/strong&gt; - Static site generators are a great modern way to build websites once you know how the compiled code works.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn database design and SQL&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn Python for home automation&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Learn a flavor of C&lt;/strong&gt; - Seriously. Don&apos;t start with C++ as many suggest.&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title><![CDATA[ATC Privatization - A Bad Idea]]></title><description><![CDATA[On the surface, privatization sounds like a good thing. One thinks of…]]></description><link>https://brandonkalinowski.com/atc-privatization-a-bad-idea</link><guid isPermaLink="false">https://brandonkalinowski.com/atc-privatization-a-bad-idea</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 07 Aug 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/p3DU6kzTK-8?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;On the surface, privatization sounds like a good thing. One thinks of competition and the market driving innovation. However, &quot;ATC privatization&quot; is not that. It would be giving away the monopoly of controlling US airspace to a disinterested corporation created by our government. &lt;strong&gt;This pseudo-private entity, not unlike the &quot;private&quot; Federal Reserve, would be run by the major airlines&lt;/strong&gt;. The transition would cost taxpayers 18 billion dollars and these assets would be given away for free.&lt;/p&gt;
&lt;p&gt;The airline lobbyists claim that our system is broken and even go as far as making outrageous false claims such as not using GPS for airspace control. The truth is the FAA has made GPS available for many years, but the airlines haven&apos;t invested in equipping their planes. They claim privatization would reduce delays, yet we all know 90% of delays are caused by weather, something a corporation cannot control. They claim they could transition to NextGen faster than the FAA. Interesting. These are the corporations that failed to invest in replacing their 1970s flight scheduling computers which led to the inevitable system crashes. &lt;strong&gt;If the airlines are incapable of even maintaining their own infrastructure, it is unlikely the air traffic control monopoly would have incentive to improve our nation&apos;s air traffic system&lt;/strong&gt;. Our system works and we have the safest airspace in the world. This is not a problem that needs fixing.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The SmartWatch]]></title><description><![CDATA[Why? The other day I bought a smartwatch. In 2017. You may ask why. It is a fair…]]></description><link>https://brandonkalinowski.com/the-smartwatch</link><guid isPermaLink="false">https://brandonkalinowski.com/the-smartwatch</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 26 Jun 2017 00:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;why&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#why&quot; aria-label=&quot;why permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Why?&lt;/h2&gt;
&lt;p&gt;The other day I bought a smartwatch. In 2017. You may ask why. It is a fair question considering 50% of Americans consider the smartwatch a passing fad. The Apple Watch, the most popular smartwatch, saw a 71.3% drop in sales last year. Overall, smartwatch sales are down more than 50%. You may ask what happened. Wearables were supposed to revolutionize how we interact with technology, and smartwatches were the first wearable in that great experiment. However, when you get past the initial thrill of a new gadget, one comes to realize that there is one major crux in the usefulness of a smartwatch: they can’t do anything that you can’t already do with your smartphone.
However, when my “dumb” watch battery died, I started looking for a new watch. My requirements were relatively simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I wanted a watch that could display the time in two time zones&lt;/li&gt;
&lt;li&gt;It should continuously display the time&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This first requirement was in order to display Zulu (UTC) time and local time at once. One of my hobbies is flight simulation, and pilots work with Zulu time. It makes scheduling a whole lot easier when the pilot doesn’t have to adjust to local time when flying between time zones. The reality is I haven’t had much time to devote to secondary hobbies such as this, but if I was going to buy a watch, this feature would be important.&lt;/p&gt;
&lt;p&gt;I quickly found that dual time is quite expensive. You need to buy a luxury/designer watch in order to find this feature. There were many so-called “pilot watches” available with many complications which did not come across as very useful for an actual pilot. It turns out that this is a common marketing term.&lt;/p&gt;
&lt;p&gt;I soon came to learn that this “dual time” requirement really narrowed down my options, and I am not at all interested in collecting overpriced watches. It quickly became apparent that a smartwatch would fit the bill nicely, for a lot less money.&lt;/p&gt;
&lt;p&gt;My second requirement, to continuously display the time, is honestly my favorite feature of my smartwatch. It does sound silly, but it is something the Apple Watch is not capable of. Instead, the Apple Watch is a black rectangle on your wrist. In order to check the time, you must make a silly “looking at watch” gesture in order to check the time. It is easy to see how making obvious gestures to check the time could get very old. Further, I found the screen timeout on the Apple Watch to be too short. You better be able to tell the time in a blink because if it takes you more than a second, the screen will go blank.&lt;/p&gt;
&lt;h2 id=&quot;the-apple-watch&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-apple-watch&quot; aria-label=&quot;the apple watch permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Apple Watch&lt;/h2&gt;
&lt;p&gt;I did spend some time wearing the Apple Watch in store. As much as I appreciate Apple computer products, the Apple Watch came across as a prototype rather than a final product. That strategy is rather forward thinking. Apple has launched what is essentially a prototype while they wait for the product they want (a computer on the wrist) to be manufacturable. By releasing something in 2015, they can collect feedback from users and allow developers to begin making apps for the Apple Watch. Apple can also experiment with entering the jewelry/fashion market while they wait for technology to improve to an extent where they can create a smartwatch without compromises. I&apos;m not really interested in wearing a prototype.&lt;/p&gt;
&lt;p&gt;What this all means is that the Apple Watch is a device that I cannot recommend from a utility standpoint, but could be a worthwhile gadget to own for early adopters. However, when it comes to smartwatches, there are much better options (at a more attractive price point) available if you look beyond the Apple ecosystem.&lt;/p&gt;
&lt;h2 id=&quot;the-android-watch&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-android-watch&quot; aria-label=&quot;the android watch permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Android Watch&lt;/h2&gt;
&lt;p&gt;I also experimented with the Samsung Gear Watches, which do not use Android Wear. The user interface was quite intuitive compared to Android Wear, but the lack of apps developed for the platform was not appealing. In the end, I narrowed my search to two options: the original Huawei Watch, and the Asus ZenWatch 2.&lt;/p&gt;
&lt;p&gt;The Huawei Watch with the round watch face looks a bit more elegant to my eye. Originally priced at $300, it now can be found for $150 on eBay and other sites. While the watch is two years old, it has been updated to Android Wear 2.0. There is a Huawei Watch 2, but the design is less attractive.&lt;/p&gt;
&lt;p&gt;The ZenWatch currently runs Android Wear 1.5, which is based on Android Marshmallow. ASUS has promised an update to Wear 2.0 but has yet to keep their word. The watch is square, with a large 1.63&quot; touchscreen. The bezel is also a bit large, but with a black watch face, this bezel does not detract from the design. Because it is a square watch, it is more useful for reading text messages and notifications. Its square design also means I get asked if it is an Apple Watch, so it is more obviously a smartwatch rather than a smartwatch disguised as a traditional watch, which you will find with round Android Wear watches.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Asus ZenWatch 2 can be had for just $70. At that price, owning a smartwatch was a no-brainer. For just $70, less than the price of a decent mechanical watch, I could see if the smartwatch was really all that it was cracked up to be.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After owning a smartwatch for a month, I can say I am pleasantly surprised. I received the watch two days before my trip to Hawaii. The watch battery life is impressive and it can last me nearly two days. I still charge it nightly, which is not really an inconvenience as I don’t like to sleep wearing a watch. If you forget to charge the watch at night, 15 minutes on the charger will bring it to 80% charge which will last more than the rest of the day.&lt;/p&gt;
&lt;p&gt;I do like how I can wear different watch faces depending on the circumstances. The ZenWatch 2 comes with a lot of pre-installed watch face designs. More can be found on the Google Play store. However, because most Android Wear watch face designs are intended for round screens, this task proved to be difficult. You can, of course, install a round watch face on a square smartwatch, but it just doesn’t look very elegant. My regular watch faces are an InstaWeather watch face, a Mickey Mouse watch face, my own custom design Pujie Black watch face with UTC time display, Just a Minute, and a very elegant analog watch face called Skymaster (a $1 purchase).&lt;/p&gt;
&lt;h2 id=&quot;so-why-buy-a-smartwatch-here-are-some-cool-and-useful-things-i-can-do&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#so-why-buy-a-smartwatch-here-are-some-cool-and-useful-things-i-can-do&quot; aria-label=&quot;so why buy a smartwatch here are some cool and useful things i can do permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;So, why buy a smartwatch? Here are some cool and useful things I can do:&lt;/h2&gt;
&lt;p&gt;As I stated in the introduction, there is nothing a smartwatch can do that your smartphone cannot already do. Nevertheless, the convenience of not having to constantly pull out your phone is very nice. Sure, I could pull my phone out of my pocket to check the time as most millennials do, but being able to glance at the time is nice.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Having all of my phone’s notifications pushed to my wrist is also very handy. I can quickly read text messages and reply with my voice without having to pull my phone out to see what messages I missed.&lt;/li&gt;
&lt;li&gt;I used to miss phone calls because I would silence my phone for a class and my phone would not ring. Now I can “feel” a call on my wrist and glance to see who wants my attention. I can even answer directly on my watch. This is all very cool stuff.&lt;/li&gt;
&lt;li&gt;I can leave my phone on the charger and get notified when it is fully charged or quickly glance at my wrist to see what level my phone is at. If my watch is connected to WiFi, I can even receive notifications beyond Bluetooth range.&lt;/li&gt;
&lt;li&gt;I can Shazam to identify a song right from my wrist, no need to pull out my phone.&lt;/li&gt;
&lt;li&gt;Even when I am actively using my phone, the “second screen experience” is quite useful. If I am reading an article on my phone and someone sends me a text message, I don’t have to swipe down on my phone to read the entire message or reply. Instead, I can glance at my watch and dictate a quick reply.&lt;/li&gt;
&lt;li&gt;If I am playing music for a party on the Sonos system, I can see what song is playing, skip the bad ones, or adjust the volume remotely.&lt;/li&gt;
&lt;li&gt;I can see the current weather conditions along with the time without having to look it up on the phone.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these things save me seconds at a time, but it does add up.
I had the watch for the last days of finals and it was quite convenient to see not only the time but also “14 minutes until Accounting Final.” Sure, a bit of mental math could have told me how much time I had left to study, but technology can do that for us! Telling time in the context of calendar events is quite useful.&lt;/p&gt;
&lt;p&gt;Another nice feature is being able to silence my phone with a tap on the wrist without having to take my phone out of my pocket. Useful for just before a test, when entering Church, or just before an important meeting.&lt;/p&gt;
&lt;p&gt;When I flew to Hawaii, I used “App in the Air” to see which gate the flight was at and how much time was left until boarding.&lt;/p&gt;
&lt;p&gt;When I landed in Hawaii, I didn’t need to wind my watch back for the new time zone, because it is automatically synced with the phone. This could be quite handy for the frequent traveler, but the time it takes to wind a watch back is equivalent to the time it takes to take the watch out of “airplane mode.”&lt;/p&gt;
&lt;p&gt;We went hiking to Kaena Point, Oahu and my watch kept track of my steps and miles walked. Pretty cool for a smartwatch that I bought for less than the price of a Fitbit.&lt;/p&gt;
&lt;p&gt;However, my step counts for the week were inaccurate for the simple reason that I didn’t wear my smartwatch all day. Whenever I went swimming (which was always!) I didn’t wear my watch. The ZenWatch 2 is IP67 water resistant, which means I could swim with it for 30 minutes but it is not really recommended. I don’t have to be concerned about rain or getting it wet while washing my hands, but it is not the type of watch you could wear to the pool. That is the one instance where the new Apple Watch beats the ZenWatch.&lt;/p&gt;
&lt;p&gt;When driving the smartwatch also proved useful. I cannot recommend looking at a watch when driving. However, the watch provided additional feedback when using Google Maps, such as vibrating when it is time to turn. I was a bit surprised left and right turn vibration patterns were not unique. It also displayed ETA on the watch, which is quite useful for a time-telling device. Further, because of the watch’s close proximity to your mouth (provided your hands are on the wheel), it served as a useful replacement to the Bluetooth headset for issuing voice commands to the phone such as “navigate home” or “navigate to…”&lt;/p&gt;
&lt;p&gt;Even the flashlight feature of the watch proved useful. The watch can be used as a small glowing screen of a solid color that isn’t very bright. Nevertheless, I found myself using it when I needed to change some camera settings at a dark Luau.&lt;/p&gt;
&lt;p&gt;You can even play music directly on the watch. The ZenWatch 2 has a speaker, and the sound quality isn’t bad. It is certainly better than my $100 tablet. I tried it out while playing tennis. Alternatively, you can pair your Bluetooth headphones directly to your watch and play music that way. The watch has 4GB of storage, which is plenty for a few tunes. Want to go for a run and leave your phone behind? Not a problem.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;apps-i-have-installed&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#apps-i-have-installed&quot; aria-label=&quot;apps i have installed permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Apps I have installed:&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WearMETAR&lt;/strong&gt; (Airport Weather) – this little app will display airport weather information. This is useful if you are curious just how high the clouds are over Honolulu airport.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spotify&lt;/strong&gt; – I can select a recently played song to play on my phone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coffee&lt;/strong&gt; – this is a really cool app. It is actually no longer on the Play Store (but can be found online for free). It displays text messages and provides a very cool way to quickly respond to a text when talking to your wrist is not appropriate. For example, you can click the car icon, click the “I’m leaving soon” predefined text, and even change the word soon to something else such as “at 1”. You can even create and save your own predefined messages. Unfortunately, Coffee does not support group messages, so I receive double notifications on my watch for text messages (which is not really a big deal because once I reply they both disappear).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OneNote and Google Keep&lt;/strong&gt; - I can view notes, which I found useful when I need to refer to a shopping list.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wear Codes&lt;/strong&gt; - This is something that adds utility to smartwatches. I can pull up barcodes for loyalty cards such as Regal Rewards to be scanned before a movie. You can even have it automatically launch if your location matches the store location.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Find My Phone&lt;/strong&gt; – My second most favorite feature. Ring your misplaced phone. Quite handy considering I never misplace my smartwatch (I can always find it on my wrist!).&lt;/p&gt;
&lt;h2 id=&quot;the-zenwatch-cons&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-zenwatch-cons&quot; aria-label=&quot;the zenwatch cons permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The ZenWatch cons:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Not fully waterproof&lt;/li&gt;
&lt;li&gt;The wristband fit isn’t perfect. If only there was a hole between the second and third. As it is, it is slightly loose, but this is minor. Replacement bands can be had for $10.&lt;/li&gt;
&lt;li&gt;Battery life is barely two days. For a smartwatch, this is very good, and if you forget to charge it one night, it should still last you through the next day. However, this doesn’t compare well to your standard “dumb” watch.&lt;/li&gt;
&lt;li&gt;Android Wear user interface. It is not super intuitive and takes some getting used to, with lots of swiping. However, for those that aren’t technically challenged, it doesn’t take long to get used to it.&lt;/li&gt;
&lt;li&gt;WiFi limited to 802.11 b/g&lt;/li&gt;
&lt;li&gt;Not yet updated to Android Wear 2.0&lt;/li&gt;
&lt;li&gt;No ambient light sensor, meaning display brightness must be adjusted manually. I just leave it at maximum brightness (so it can be read outdoors) and forget about it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;conclusion&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#conclusion&quot; aria-label=&quot;conclusion permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;So… Is a smartwatch worth it? I would say yes. For $70, I would suggest any Android user give it a try. If you use an iPhone, I would still recommend an Android Wear watch over an Apple one. However, you will need an Android Wear 2.0 watch and in that case, the $150 Huawei Watch looks to be the best bang for the buck.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Desert Desperation - A Short Film]]></title><description><![CDATA[Two psychologists have been stranded in the desert for days. Despite their…]]></description><link>https://brandonkalinowski.com/desert-desperation-a-short-film</link><guid isPermaLink="false">https://brandonkalinowski.com/desert-desperation-a-short-film</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 09 Dec 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/QyUTG0ji4Jg?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Two psychologists have been stranded in the desert for days. Despite their differences, they discover an improbable connection.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[A Glimpse of JPC News]]></title><description><![CDATA[Here is a nice behind-the-scenes look at our crew producing our weekly JPC News…]]></description><link>https://brandonkalinowski.com/jpc-news</link><guid isPermaLink="false">https://brandonkalinowski.com/jpc-news</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 26 Oct 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/LDBpQaRHJ6k?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Here is a nice behind-the-scenes look at our crew producing our weekly JPC News program live. So much fun!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Natural Law and Conscientous Objection]]></title><description><![CDATA[This blog post is in response to a comment made on Facebook. I certainly see…]]></description><link>https://brandonkalinowski.com/natural-law-and-conscientous-objection</link><guid isPermaLink="false">https://brandonkalinowski.com/natural-law-and-conscientous-objection</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 25 Sep 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This blog post is in response to a comment made on Facebook.&lt;/p&gt;
&lt;p&gt;I certainly see where you are coming from. However in no way can these two things be properly compared. They deal with two entirely different issues. The Afghan case is certainly taking away the basic right of protection. That is not contested. But the other is in no way “taking away the rights of others” except for the rights of those who oppose the gay agenda.&lt;/p&gt;
&lt;p&gt;I’d like to recall the reason the United States was founded in the first place.&lt;/p&gt;
&lt;p&gt;Marriage is a natural institution created before there were any formal religions in existence. It has been created before there were any nations in existence. At its core, and on a natural level, it is really a truth of natural law that binds humanity regardless of religion.&lt;/p&gt;
&lt;p&gt;I believe you know that natural is always above any laws imposed by society. But for the sake of those reading, I will give a brief example of a natural law:&lt;/p&gt;
&lt;p&gt;“Drunkenness is wrong because it injures one’s health, and worse, destroys one’s ability to reason, which is fundamental to man as a rational animal.”&lt;/p&gt;
&lt;p&gt;I think anyone can deduce then that societal law does not define what is good, rather, some laws exist to support the already established natural laws. If a good friend who was clearly drunk and intoxicated, and obviously endangering his health asked you for another drink, I submit that you would not fulfill his wish. He could argue that under federal law, he has every right to a drink. But in fact, you would likely feel a moral duty to deny him that drink and instead help him lose his attachment to what is harming his body. Now suppose you were an appointed public doctor and the US government changed the law and ordered you to give a drink to whoever asked for it, and that to deny that would infringe on his “right to have a drink”. Would that enable you to ignore your moral duty to health?&lt;/p&gt;
&lt;p&gt;We’ve already seen the bad that happens when federal government interferes by trying to enforce natural law to appease the progressives of the time. Needless to say, Prohibition didn’t work so well. We had chaos even when society got what they asked for. We’ve got the same thing going on right now with the recent Supreme Court decision, and it is not going to end well.&lt;/p&gt;
&lt;p&gt;But I digress.&lt;/p&gt;
&lt;p&gt;In this analysis, I see the incredible irony here. A bartender has the right to use his own judgement and deny serving alcohol to someone. He does this out of his concern of the other. However, a baker is called a bigot if he does not decorate a cake for what he knows to be dangerous to the soul– a gay wedding. And a Psychiatrist is not allowed to call a mental disorder for what it is.&lt;/p&gt;
&lt;p&gt;Back to your post. You say the Afghans were receiving full American support and were to follow the rules set in place [the Americans].&lt;/p&gt;
&lt;p&gt;I can understand that if that was the case. But from the report it is the American Marines who were ordered to be in the terrible position of having to overlook acts of unthinkable depravity. That sounds like the opposite of what you inferred. Here the Afghans have no rules and instead rules are imposed on the Marines to allow this evil to happen. Marines who acted as true patriots in defense of innocent life are punished. Dear God.&lt;/p&gt;
&lt;p&gt;I can agree with you on the point that if a person’s religious beliefs don’t mesh with the laws of an agency you work for, it is a good opportunity to seek another job. However, I in no way believe that an elected official gives up his conscience when elected to an office.&lt;/p&gt;
&lt;p&gt;However, inferring that such a person should simply place the laws of an agency above your religious convictions is wrong. Sometimes laws of the land violate actual rights while religious laws uphold them. We&apos;ve seen this in cases such as abortion where the rights of the unborn are violated and not protected. But that is another discussion.&lt;/p&gt;
&lt;p&gt;W&lt;/p&gt;
&lt;p&gt;hen a law is contrary to reason, it is called an unjust law and in this case it ceases to be a law and becomes instead an act of violence.&lt;/p&gt;
&lt;p&gt;There is no obligation in conscience to obey such laws; instead there is a grave and clear obligation to oppose them by conscientious objection. Conscientious objection is the noble thing to do when a &quot;law&quot; is an act of violence.&lt;/p&gt;
&lt;p&gt;Figures such as Gandhi, Martin Luther King Jr., and Rosa Parks come to mind. Will Kim Davis be remembered among them? No, but it just goes to illustrate that even in our American culture we at least acknowledge that these people were right to oppose the secular laws that were contrary to reason.&lt;/p&gt;
&lt;p&gt;There are times when conscientious objection is not allowable. Soldiers in the heat of battle are not at liberty to strike and take up picket signs on the battle field. They cannot do this because they are endangering their brothers and the common good must be considered when it is at stake. However the case with the clerk refusing to issue a marriage license doesn’t even come close.&lt;/p&gt;
&lt;p&gt;In conclusion, both religious and secular laws should bend only at the insistence of higher, natural law. Lesser laws (or cultural customs) which conflict with natural law should be dispensed with. From observation, there is no such thing as a “perfect” or “correct” culture. There are certainly ups and downs and we’ve learned that “spreading democracy” doesn’t work so well everywhere. In Chinese culture security and stability are valued more than freedom. From this, it can be deduced that unjust laws exist and therefore abandoning conscience to adhere to violent laws is harmful.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT October 20th&lt;/strong&gt;&lt;br&gt;
I can&apos;t seem to be able to respond to via the comments section of my own blog. So my response to Erik&apos;s comments here are contained below.&lt;br&gt;
I wrote this response a while ago but forgot to post it, so here are my words as I wrote them on the 28th of September:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Yes, that was my point that the colonies were formed in part to distance themselves from religious persecution. Yet ironically some would point fingers and say that the actions of those with a religious conscience such as Kim Davis are quote un-American. That was my sole reason for bringing our founding up. I am not aware of any religion that has priority over another in American law.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since you brought up the Jewish religion, I think it prudent to explain why they have such restrictions such as not eating pork. This reason explains why they don’t advocate abstinence from pork to those outside their people.&lt;/p&gt;
&lt;p&gt;It is an undisputed fact that the Gentile people (meaning non-Jew) in ancient times were very promiscuous. It was so bad in fact that the Gentile cultures invented religions to try to make their behavior somehow acceptable. You see, in their hearts they could feel that what they were doing was not right. Rather than changing their ways, they created worldly pagan religions where sexual promiscuity was acceptable. If you asked an ancient king in a pagan land why he had so many sexual partners, or why there were group sex rituals on the streets he could reply that it is “required by our religion.”&lt;/p&gt;
&lt;p&gt;From the history books, we know that the Jewish people rebelled against God and fell into sin. As a result, God gave them a laundry list of restrictions. In context, we know that these restrictions were not arbitrary commandments, but were instead given to man as a result of his weakness. They couldn’t eat pork because that is what the Gentiles ate. Eating was much more social in that time, and if you couldn’t dine with the Gentiles, you are basically the nerds and the odd ones out. That was okay, because the Hebrew people were God’s chosen people.&lt;/p&gt;
&lt;p&gt;You see, the reason they couldn’t eat pork was so that they would have to set themselves apart from their pagan neighbors, and thus no longer be in a position where temptation to sin was great. The Jews understand this and are awesome people for it. They don’t believe that it is a sin for a non-Jew to eat pork. There is no reason for them to spread this practice outside because eating pork does not endanger the soul. They don’t “allow” others to eat pork out of fear of interfering with a so-called right. They just don’t think anything of it.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I’m glad you agree that marriage is defined by the natural. I disagree that marriage has not been about love until recently. Again, it is proper to define what love really is, as the times have distorted what people call love. Love is “willing the good of the other.” Our generation has lost this, and unfortunately believes love to be equivalent to sexual intimacy and affection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Marriage has always been about love. The first marriage was for love. This self-giving would mean that one in love would want the best for the other person. An economical protection certainly falls into this realm. Just because economics factored into a decision to marry, doesn’t mean that the action of marriage was reduced to anything less. That would be a fallacy.&lt;/p&gt;
&lt;p&gt;Again, I’d like to clarify that marriage is a natural law, above any government or religion, as we have already agreed in point three. So to say that marriage is something defined by a State (and by State I mean a nation in power) is an injustice, as we have already said that natural law is above government and religious law. Instead, the proper way to look at it is to see that marriage is something that happens outside of any legislating body. The couple marries, and only after does the government recognize that marriage. It is not the government that does the marrying.&lt;/p&gt;
&lt;p&gt;In the Catholic Church, we recognize that the couple is in fact the celebrant of their marriage. It is the man and wife that marries themselves with God, not the priest. The priest is there to preside but it is the couple’s words that join them. It is a very beautiful gift if you think about it.&lt;/p&gt;
&lt;p&gt;Love used to be about generous self-giving for the good of the other. I say used to be, but it really still is, it is just that our generation has forgotten this truth. Now it is just about satisfying one’s personal desires. It is about using someone else’s body not as a living person with a soul, but as an object. A gay relationship cannot be called love because it is ordered only to satisfying one’s personal desires. If it was really love, the couple would be helping each other overcome their unnatural inclination. Instead, it is about mutual consent to get something from the other.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When I speak of Natural Law, I am chiefly talking about the philosophy from the likes of Thomas Aquinas and Aristotle’s Rhetoric. And yes, you are right that John Locke featured natural law philosophy in his work. Unlike Locke, I do not distinguish between natural law and natural right as two separate concepts, as that only serves to reduce clarity for me.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If I had to think about it, I would say that the laws of nature decide our natural rights. The laws of nature can never allow us to sprout bird wings and fly. We do of course have the ability to build a machine to fly. In the same way, natural law and science will never allow two men or two women to procreate as that is also physically impossible.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I am glad. I just don’t see how this conclusion aligns with your conclusion in point nine that an elected official should be forced to give up his conscience if elected. Without a conscience, to understand the difference between a just and an unjust law, rising up, or in this example objecting to providing what is harmful to a patient, is impossible.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start=&quot;9&quot;&gt;
&lt;li&gt;I’m going to address point nine before eight as it is a shorter response.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Like I said earlier, I don’t feel an elected official must give up his conscience. One of the main points I was trying to drive home was that people have a right to conscientious objection. Our conscience is at the very core of who we are as humans and to deny it would be to remove our humanity. Further, I don’t see how Ben Carson “accepting everyone’s beliefs into our culture” is an act of denying his own conscience. I’ll be honest. Your response to this point is the only one I did not anticipate and it concerns me.&lt;/p&gt;
&lt;p&gt;But I do agree that lower courts should bow to higher court decisions. I hope I in now way implied a restructuring of our government.&lt;/p&gt;
&lt;p&gt;8 (the first one). Yes I agree that healthcare providers should not be forced to alter their decisions based on societal biases. Unfortunately, they are restricted from calling a mental disorder for what it is. Psychiatrists can’t call homosexuality as a mental disorder. The sad truth is that a majority of people who struggle with homosexual inclinations do not want to carry that cross. It is just saddening. It really is. The truth is the American public greatly overestimates the gay population. It is actually just 3.8%. Estimates show that only 20% of that population actually want to remain homosexual. It is in fact a very small minority intimidating our culture, and silencing the 80% of the LGBT individuals who would like help overcoming such unnatural temptations. Heterosexuals are not the only ones who did not want gay marriage.&lt;/p&gt;
&lt;p&gt;It is really saddening. Christian opposition is not an act of hatred as the media would like to say. It is instead out of love and concern that we would like to help.&lt;/p&gt;
&lt;p&gt;In fact it gets even sadder. In California, a therapist cannot offer help to those who do not want to be gay. If a 17 year old struggling with homosexual fantasies or desires goes to a therapist for help, he is denied treatment and instead encouraged to embrace homosexuality as his identity. “Oh you have this fantasy. You are gay. It defines you, embrace it.” This is not giving people rights as the media would like the masses to believe. It is the very opposite.&lt;/p&gt;
&lt;p&gt;It doesn’t matter where you stand, this is sad that people are barred from finding or giving help under the guise of “tolerance.”&lt;/p&gt;
&lt;p&gt;Imagine if the tables were turned. Imagine if the gay lifestyle was the norm. It goes without saying that that population isn’t self sustaining and would die off before it could ever be the norm as procreation is simply impossible without both a man and a woman. But let’s just say for the sake of argument that that was society. And you came to a doctor, asking for help to leave said lifestyle and instead the doctor encouraged you to be gay.&lt;/p&gt;
&lt;p&gt;We are confusing our next generation. There is no doubt about it. There is a reason why superhero movies are a trend right now. People want a world with a clear right and wrong, and all we’ve done clarity for the sake of relativism.&lt;/p&gt;
&lt;p&gt;People try to bend science and language to fit within their idea. There’s never been a question about when life starts, conception. No scientist can contest that. If a scientist sees a bacteria on mars, it would be in every newspaper LIFE ON MARS. Yet if a woman wants to KILL her child, let’s just call it a bag of cells? That was a rhetorical question. It is too much for this discussion. The gay activists called for marriage “equality” when clearly they were asking for something by definition very different.&lt;/p&gt;
&lt;p&gt;In response to your opinions&lt;/p&gt;
&lt;p&gt;Obergefell v Hodges was landmark no doubt, but not one of equality. That is just using a word for something it is not. A child can tell that a gay relationship is not the same as a natural relationship between a man and a woman, ordered towards creation. To call that equality is foolish. Clearly the gay community wanted something different from what they already had a right to. Obviously I feel that this particular court decision was the wrong decision. And obviously I object not just to the subject of the decision but the method of decision. A court is not supposed to legislate. Period. They interpret laws. And if you were to read from the dissenting judges, it is clear that they pulled their justification for their decision out of thin air.&lt;/p&gt;
&lt;p&gt;Natural law is not something that changes with the times. Individuals do not have different natural rights. Slavery was never approved under natural law, only tolerated under the lower societal law.&lt;/p&gt;
&lt;p&gt;Regarding the alcohol. If I implied that drinking alcohol was a natural right, that was a mistake.&lt;/p&gt;
&lt;p&gt;The thing is, this generation equates the word “right” to “entitled to.” I don’t think anyone is entitled to the consumption of alcohol, just that the government found itself wrong in interfering with it.&lt;/p&gt;
&lt;p&gt;What I said was that drinking alcohol in excess results in drunkenness, which harm’s our ability to reason. That is a natural law. It is something we can observe and measure with science.&lt;/p&gt;
&lt;p&gt;Natural law is just that, natural. You don’t need a law degree to interpret natural law. Societal AND religious laws must bend to it.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Motion Graphics Mini-Reel]]></title><description><![CDATA[A selection of a few motion graphics projects I have done in Adobe After Effects…]]></description><link>https://brandonkalinowski.com/motion-graphics-mini-reel</link><guid isPermaLink="false">https://brandonkalinowski.com/motion-graphics-mini-reel</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 27 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/jprE2H-eWwI?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A selection of a few motion graphics projects I have done in Adobe After Effects and previously Apple Motion. Some clips had to be resized to HD. I edited this quick video with YouTube&apos;s editor.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[New Webdesign]]></title><description><![CDATA[Two exciting things: First, I have been working hard to completely revamp the…]]></description><link>https://brandonkalinowski.com/new-webdesign</link><guid isPermaLink="false">https://brandonkalinowski.com/new-webdesign</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sat, 07 Mar 2015 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Two exciting things: First, I have been working hard to completely revamp the website layout. The layout is now responsive and will customize depending if you are viewing it from a tablet, phone, or computer.&lt;/p&gt;
&lt;p&gt;The layout is still in its beta stage at the moment (and will be until finals week is over). Unfortunately the default embed code for YouTube is not responsive. I am working on a solution to fix these automated posts.&lt;/p&gt;
&lt;p&gt;Second, I am working on rebranding a production company. The new name will be announced in the next few months. Please leave a comment below if you have any suggestions. Thank you!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Matthews and Mercy]]></title><description><![CDATA[Here's another project I worked on while at JP Catholic. I've posted it here so…]]></description><link>https://brandonkalinowski.com/matthews-and-mercy</link><guid isPermaLink="false">https://brandonkalinowski.com/matthews-and-mercy</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sat, 13 Dec 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/hl5YctRQ6vg?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Here&apos;s another project I worked on while at JP Catholic. I&apos;ve posted it here so that those involved can share it. It&apos;s a great little story. Directed by Ken Ebacher I was the Director of Photography Music Credits &quot;Dead Presidents on Parade&quot; by Bob Halligan Jr and Performed by Ceili Rain &quot;Go Light Your World&quot; by Chris Rice&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Hovershoes Kickstarter Campaign]]></title><description><![CDATA[Spoof Kickstarter campaign video produced for my Fundamentals of Art and Design…]]></description><link>https://brandonkalinowski.com/hovershoes-kickstarter-campaign</link><guid isPermaLink="false">https://brandonkalinowski.com/hovershoes-kickstarter-campaign</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 08 Dec 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/KgwOeGp7uwQ?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Spoof Kickstarter campaign video produced for my Fundamentals of Art and Design final. Last year we invented the hoverboard. Now we answer the question &quot;what&apos;s next?&quot;...&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Behind the Scenes of "Fairytale"]]></title><description><![CDATA[A quick tour through the set of Fairytale, a two and half minute video done in…]]></description><link>https://brandonkalinowski.com/behind-the-scenes-of-fairytale</link><guid isPermaLink="false">https://brandonkalinowski.com/behind-the-scenes-of-fairytale</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sun, 12 Oct 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/qaYvFFqqYeE?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A quick tour through the set of Fairytale, a two and half minute video done in all one shot. Seven hours, four complete takes, and lots of lights. Very professional and everyone did a great job. I got to work as the remote focus puller, controlling camera focus wirelessly as Louis moved the camera throughout the set.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Cruising on Grand - A BMPCC Test]]></title><description><![CDATA[Local car show. This is basically a test of the capabilities of my Blackmagic…]]></description><link>https://brandonkalinowski.com/cruising-on-grand-a-bmpcc-test</link><guid isPermaLink="false">https://brandonkalinowski.com/cruising-on-grand-a-bmpcc-test</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sun, 05 Oct 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/Y7-fzF0Up7M?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Local car show. This is basically a test of the capabilities of my Blackmagic Pocket Cinema Camera. I gotta say it does produce some amazing footage. I was pleasantly surprised by the low light capability. I did however notice the black spot in direct sun and audio is only okay. So record with an external mic. I found the IRIS button doesn&apos;t open the lens enough when using an ISO lower than 800 so that appears to be the native sensitivity of this camera. I recorded 1.5 hours at this event which ended up being a little more than 50GB.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Bucktown Ranch Aerial Property Video]]></title><description><![CDATA[A client project posted with permission. I provide custom aerial photography and…]]></description><link>https://brandonkalinowski.com/bucktown-ranch-aerial-property-video</link><guid isPermaLink="false">https://brandonkalinowski.com/bucktown-ranch-aerial-property-video</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sat, 23 Aug 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/7086Ne2qEu4?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A client project posted with permission. I provide custom aerial photography and video products for your construction progress, commercial and residential projects. Realtors can have a bird&apos;s eye view of everything to show clients. Homeowners can proudly display the result of their hard work and investment. Recorded in 1080p and encoded at 30fps for YouTube. To purchase the property, contact Curtis Stocking of Green Fields Real Estate.&lt;/p&gt;
&lt;p&gt;View my aerial website at &lt;a href=&quot;https://www.skyclops.pictures&quot; title=&quot;Skyclops Pictures&quot;&gt;www.skyclops.pictures&lt;/a&gt; for more information.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[3D Printed Whistle]]></title><description><![CDATA[My latest thing off my printer! Now he has his own.]]></description><link>https://brandonkalinowski.com/3d-printed-whistle</link><guid isPermaLink="false">https://brandonkalinowski.com/3d-printed-whistle</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sat, 23 Aug 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My latest thing off my printer! Now he has his own.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/OlxkESIx9FA?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The Cost to 3D Print a Piece of Paper]]></title><description><![CDATA[My friend Erik asked me how much it would cost to 3D print a piece of paper. So…]]></description><link>https://brandonkalinowski.com/the-cost-to-3d-print-a-piece-of-paper</link><guid isPermaLink="false">https://brandonkalinowski.com/the-cost-to-3d-print-a-piece-of-paper</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 15 Jul 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My friend Erik asked me how much it would cost to 3D print a piece of paper.&lt;br&gt;
So how much would it cost you if you run out of paper but need to write down some great idea you had on something! Let&apos;s find out. This post has a lot of math so I&apos;ve warned you!&lt;/p&gt;
&lt;p&gt;Standard paper is 8.5&quot; x 11&quot; but 3D printers like the rest of the world generally use the metric system, measuring parts in millimeters. So first we need to convert this to millimeters.&lt;br&gt;
8.5&quot; is 215.9mm and 11&quot; is 279.4mm&lt;/p&gt;
&lt;p&gt;Now that we&apos;ve got that out of the way, we need to calculate the volume of our part. Standard paper is 0.1mm thick. My 3D printer can handle layer sizes this small but if yours can only handle a resolution of say 0.2mm then simply double our results. typically the slicer software will choose a thicker layer height for the first layer to help the part better stick to the build plate. Our paper model is only one layer thick. So let&apos;s assume a layer thickness of .2mm.&lt;/p&gt;
&lt;p&gt;So 215.9&lt;em&gt;279.4&lt;/em&gt;.1 = 6032.246mm^3&lt;/p&gt;
&lt;p&gt;Let&apos;s take a detour and find out not only the cost but how much filament we would need to have for our part.&lt;/p&gt;
&lt;p&gt;Modern 3D printers now use filament with a 1.75mm diameter.&lt;/p&gt;
&lt;p&gt;The volume of a cylinder is&lt;br&gt;
V=πr^2*h&lt;br&gt;
So plugging in we get 2194.425mm of filament for our paper or about 7&apos; 3&quot;&lt;/p&gt;
&lt;p&gt;Alright cool, now going back to figuring out the cost:&lt;br&gt;
Filament is sold in 1Kg rolls, not by length. So we need to use the density of PLA with our derived volume of our paper to compute the mass.&lt;/p&gt;
&lt;p&gt;The density of PLA can vary slightly but going by wikipedia it is 1240 kg/m3 or 1240Kg per 1 billion mm^3. So to print a solid cubic meter you would need 1,240 spools of plastic! Since our paper&apos;s volume is measured in cubic millimeters let&apos;s convert. One cubic mm of PLA has a mass of 1.24grams or 0.00124Kg&lt;/p&gt;
&lt;p&gt;So the volume of a spool of filament being 1Kg is (1,000,000,000mm^3)/1240Kg = 806451.612903 mm^3/Kg&lt;/p&gt;
&lt;p&gt;So the final calculation for the cost of our piece of paper is (cost = cost of spool * object volume/volume of a 1Kg spool)&lt;/p&gt;
&lt;p&gt;Plugging in we get cost = $30*6032.246mm^3/806451.612903 mm^3&lt;/p&gt;
&lt;p&gt;So that ends up being $0.22 Indeed, my printing program is showing an estimated part cost of $0.19&lt;/p&gt;</content:encoded></item><item><title><![CDATA[First 3D Print Raw Video]]></title><description><![CDATA[First print on my new 3D printer I built. Some things need to be adjusted in the…]]></description><link>https://brandonkalinowski.com/first-3d-print-raw-video</link><guid isPermaLink="false">https://brandonkalinowski.com/first-3d-print-raw-video</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 09 Jul 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/PF3p8HW-l7s?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;First print on my new 3D printer I built. Some things need to be adjusted in the G-code but I let it run because it is so cool!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Editor Note - May 2018:&lt;/strong&gt;
This video is quite raw. However, I got a kick out of the comments from the younger siblings while reviewing this post. :D&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Brandon's Aerial]]></title><description><![CDATA[A client project posted with permission. For professional aerial video of your…]]></description><link>https://brandonkalinowski.com/brandons-aerial</link><guid isPermaLink="false">https://brandonkalinowski.com/brandons-aerial</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 07 Jul 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/-zN_BUUXoic?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A client project posted with permission. For professional aerial video of your property contact me at via the website linked below. I provide custom aerial photography and video products for your construction progress, commercial and residential projects. Realtors can have a bird&apos;s eye view of everything to show clients. Homeowners can proudly display the result of their hard work and investment. Best price guaranteed. Recorded in 1080p at 60fps and encoded at 30fps for YouTube. At time 4:33 you can see a hawk fly across the frame below.&lt;/p&gt;
&lt;p&gt;View my aerial website at &lt;a href=&quot;https://www.skyclops.pictures&quot; title=&quot;Skyclops Pictures&quot;&gt;www.skyclops.pictures&lt;/a&gt; for more information.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Cinema Camera Test]]></title><description><![CDATA[First footage from my new cinema camera. Very happy with the results so far…]]></description><link>https://brandonkalinowski.com/cinema-camera-test</link><guid isPermaLink="false">https://brandonkalinowski.com/cinema-camera-test</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 06 Jun 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/aiCUqIrnvUE?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;First footage from my new cinema camera. Very happy with the results so far! Extreme quality video codec.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[How I check my batteries]]></title><description><![CDATA[I demonstrate a super simple and easy way to check if a battery is dead or not…]]></description><link>https://brandonkalinowski.com/how-i-check-my-batteries</link><guid isPermaLink="false">https://brandonkalinowski.com/how-i-check-my-batteries</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 13 Mar 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/jlXv2MdWCu0?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I demonstrate a super simple and easy way to check if a battery is dead or not: Drop it!&lt;/p&gt;
&lt;p&gt;If it bounces, it is dead. If not, it has a charge.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Quadcopter Parts]]></title><description><![CDATA[In these two videos I show off the quadcopter I built in 2013.]]></description><link>https://brandonkalinowski.com/quadcopter-parts</link><guid isPermaLink="false">https://brandonkalinowski.com/quadcopter-parts</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 17 Jan 2014 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In these two videos I show off the quadcopter I built in 2013.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/T2nR9BXoCkc?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/GrElo5_dHls?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Flytrex First Mission - QAV500]]></title><description><![CDATA[Here is my first flight with the onboard Data logger recording on the quadcopter…]]></description><link>https://brandonkalinowski.com/flytrex-first-mission-qav500</link><guid isPermaLink="false">https://brandonkalinowski.com/flytrex-first-mission-qav500</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 04 Nov 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/O5uM_eVquzM?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Here is my first flight with the onboard Data logger recording on the quadcopter. The Flytrex data logger records speed, altitude, GPS location, heading, temperature, distance from takeoff and more. The video is straight from my GoPro with Protune turned on and the color profile applied afterwards. I then overlayed the information using Dashware. Using the data I found that my maximum speed was 37.33mph, pretty zippy. The quadcopter used is the QAV500 and the recorded data is direct from the Naza controller.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Perhaps the most astounding display of modern technology]]></title><description><![CDATA[Perhaps the most astonishing display of modern technology I have yet seen, this…]]></description><link>https://brandonkalinowski.com/perhaps-the-most-astounding-display-of-modern-technology</link><guid isPermaLink="false">https://brandonkalinowski.com/perhaps-the-most-astounding-display-of-modern-technology</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 03 Sep 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/w2itwFJCgFQ?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Perhaps the most astonishing display of modern technology I have yet seen, this video is worth watching although it is a little long at 16 minutes.&lt;/p&gt;
&lt;p&gt;In a robot lab at TEDGlobal, Raffaello D&apos;Andrea demos his flying quadcopters: robots that think like athletes, solving physical problems with algorithms that help them learn. In a series of nifty demos, D&apos;Andrea show drones that play catch, balance and make decisions together -- and watch out for an I-want-this-now demo of Kinect-controlled quads.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The Bridge]]></title><description><![CDATA[This is one of my animations. This time I outsourced the directing to a friend…]]></description><link>https://brandonkalinowski.com/the-bridge</link><guid isPermaLink="false">https://brandonkalinowski.com/the-bridge</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 15 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/qHqbU7-AfnY?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This is one of my animations. This time I outsourced the directing to a friend. Just because this project is not live action doesn&apos;t mean it wasn&apos;t a lot of work. We spent 4 hours filming and then about 4 more hours editing. A sandbox game is as good a place as any to practice camera moves and techniques. You have total control of lighting and shading conditions as well as controlled camera movements. A similar circular crane shot in the real world would have cost $100,000. Credits: Directed by Erik Polik Cinematography by Brandon Kalinowski Chief editing by Brandon Kalinowski and Josh Niccum Starring Steve Baggins&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Agent XL: Festival Edition]]></title><description><![CDATA[This is the film that won both "Best Comedy" and "People's Choice" at the…]]></description><link>https://brandonkalinowski.com/agent-xl-festival-edition</link><guid isPermaLink="false">https://brandonkalinowski.com/agent-xl-festival-edition</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 02 May 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/0C6QK1-1t_A?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This is the film that won both &quot;Best Comedy&quot; and &quot;People&apos;s Choice&quot; at the Eyelight Film Festival. It was a great experience screening a film I directed in theaters. For those of you who could not make it to the theater, here is &quot;Agent XL&quot; in its entirety.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Eyelight Film Festival Submission]]></title><description><![CDATA[This is the trailer to an upcoming short movie. Our film titled "Agent XL" will…]]></description><link>https://brandonkalinowski.com/eyelight-film-festival-submission</link><guid isPermaLink="false">https://brandonkalinowski.com/eyelight-film-festival-submission</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 08 Apr 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://player.vimeo.com/video/62845200&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This is the trailer to an upcoming short movie. Our film titled &quot;Agent XL&quot; will be playing at the film festival in April 2013. Despite many setbacks and actors constantly making excuses to not being available, we were able to put together a decent film. It is pretty amazing any film can be made with underpaid and overworked high school seniors. Special thanks to Zach for the superb voice-over. Also thanks to Chandler Holliman for his golden acting ability.&lt;/p&gt;
&lt;p&gt;The trailer is for a short film to be screened in theaters in April.&lt;br&gt;
&lt;a href=&quot;http://vimeo.com/62845200&quot;&gt;Trailer AgentXL&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/popularwebz&quot;&gt;Brandon Kalinowski&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Trebuchet Physics Project]]></title><description><![CDATA[The battle has begun at school and we must launch water balloons as far as…]]></description><link>https://brandonkalinowski.com/trebuchet-physics-project</link><guid isPermaLink="false">https://brandonkalinowski.com/trebuchet-physics-project</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 20 Feb 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/ZaCZCZ_uaoQ?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;The battle has begun at school and we must launch water balloons as far as possible. The larges trebuchet you see in the video is actually from another year. The trebuchet that I built shot our projectile the farthest.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Rube Goldberg]]></title><description><![CDATA[A complicated machine for a simple task.]]></description><link>https://brandonkalinowski.com/rube-goldberg</link><guid isPermaLink="false">https://brandonkalinowski.com/rube-goldberg</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sun, 03 Feb 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/zgwdDFlPCWQ?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A complicated machine for a simple task.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The Next Martin Luther King]]></title><description><![CDATA[This speech is a great oration. "God does his best work when there is a Pharaoh…]]></description><link>https://brandonkalinowski.com/the-next-martin-luther-king</link><guid isPermaLink="false">https://brandonkalinowski.com/the-next-martin-luther-king</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sat, 02 Feb 2013 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This speech is a great oration. &quot;God does his best work when there is a Pharaoh in the land.&quot;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/tC3P333iptk?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Regardless of where you stand on the issue of life, it cannot be denied that this is a great speaker.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The Green Environment]]></title><description><![CDATA[I wonder where this could be. I like the effect. Shot with two GoPros.]]></description><link>https://brandonkalinowski.com/the-green-environment</link><guid isPermaLink="false">https://brandonkalinowski.com/the-green-environment</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 19 Dec 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://player.vimeo.com/video/55956541&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I wonder where this could be. I like the effect. Shot with two GoPros.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Dream of a Lifetime]]></title><description><![CDATA[This is a video I did as a volunteer service. Northbay Hospice gives Christine…]]></description><link>https://brandonkalinowski.com/dream-of-a-lifetime</link><guid isPermaLink="false">https://brandonkalinowski.com/dream-of-a-lifetime</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 30 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://player.vimeo.com/video/54584388&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This is a video I did as a volunteer service.&lt;/p&gt;
&lt;p&gt;Northbay Hospice gives Christine Franklin, diagnosed with cancer, the dream of her lifetime. In San Francisco at the zany venue Teatro Zinzanni.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Behind the Hobbit]]></title><description><![CDATA[It’s always impressive to me just how many different people are working on these…]]></description><link>https://brandonkalinowski.com/behind-the-hobbit</link><guid isPermaLink="false">https://brandonkalinowski.com/behind-the-hobbit</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sun, 25 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/DwYQcKK0Isg?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;It’s always impressive to me just how many different people are working on these films. Most us will probably not get a chance to work on a film of this size (though some films are becoming such massive productions the opposite might actually be true someday), so getting a chance to watch the well-oiled machine go about their duties is quite amazing.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Rock Race]]></title><description><![CDATA[I had a lot of fun filming at the race track. This video consists of…]]></description><link>https://brandonkalinowski.com/rock-race</link><guid isPermaLink="false">https://brandonkalinowski.com/rock-race</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 16 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I had a lot of fun filming at the race track. This video consists of miscellaneous shots that I captured that day.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://player.vimeo.com/video/53669037&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Carlos Racing]]></title><description><![CDATA[This is raw footage of Carlos racing at Thunder Valley racetrack!]]></description><link>https://brandonkalinowski.com/carlos-racing</link><guid isPermaLink="false">https://brandonkalinowski.com/carlos-racing</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 15 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://player.vimeo.com/video/53573917&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This is raw footage of Carlos racing at Thunder Valley racetrack!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Brandon in Caddy]]></title><description><![CDATA[I get to drive a 1959 Cadillac (Series 62) back home from the races. I set up my…]]></description><link>https://brandonkalinowski.com/brandon-in-caddy</link><guid isPermaLink="false">https://brandonkalinowski.com/brandon-in-caddy</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sun, 11 Nov 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/EOEwhv9-TAY?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I get to drive a 1959 Cadillac (Series 62) back home from the races. I set up my GoPro to record for the last stretch. The car belongs to New York Rock Exchange. Its a lot of fun floating casually down the road.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[A Fight Scene]]></title><description><![CDATA[This short video consists of a random fight for a film assignment. This video…]]></description><link>https://brandonkalinowski.com/a-fight-scene</link><guid isPermaLink="false">https://brandonkalinowski.com/a-fight-scene</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 29 Oct 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This short video consists of a random fight for a film assignment. This video created in high school is pretty bad. Enjoy.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://player.vimeo.com/video/52397327&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[iPad Blocking app]]></title><description><![CDATA[I am a bit excited about this brand-new application. Here is some information…]]></description><link>https://brandonkalinowski.com/ipad-blocking-app</link><guid isPermaLink="false">https://brandonkalinowski.com/ipad-blocking-app</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 16 Oct 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/maeTgha3RkA?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I am a bit excited about this brand-new application. Here is some information about it. You can read the rest of the page along with some videos by following the link at the bottom of this post.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Shot Designer&lt;/strong&gt; makes it ridiculously easy to block complex scenes, complete with Camera Diagram, Animation, Shot List, Storyboards and Director&apos;s Viewfinder. Neither Camera Diagrams, Shot Lists, Storyboards, or Animation by themselves give you a satisfying understanding of camera-blocking -- you have to use them together. Shot Designer gives you a superior understanding of your scene, and is the ultimate Director&apos;s creativity tool.&lt;/p&gt;
&lt;h3 id=&quot;a-camera-diagram-that-makes-itself&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#a-camera-diagram-that-makes-itself&quot; aria-label=&quot;a camera diagram that makes itself permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;A Camera Diagram That Makes Itself&lt;/h3&gt;
&lt;p&gt;Shot Designer dramatically speeds up the Director&apos;s process of making camera diagrams.&lt;/p&gt;
&lt;p&gt;Shot Designer is &lt;strong&gt;FAST&lt;/strong&gt;. The app knows how Directing works and does most of the work for you -- like automatically moving cameras when you move characters.&lt;/p&gt;
&lt;p&gt;Shot Designer is fast enough that you can use it with even with actors waiting!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.hollywoodcamerawork.com/shot-designer.html&quot;&gt;Hollywood Camera Work - Shot Designer&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Bump]]></title><description><![CDATA[One of the apps that I have installed is Bump. Bump is an iPhone and Android app…]]></description><link>https://brandonkalinowski.com/bump</link><guid isPermaLink="false">https://brandonkalinowski.com/bump</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sun, 16 Sep 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;One of the apps that I have installed is Bump. Bump is an iPhone and Android app that has been making sharing contact information and pictures easier than ever. There is also a separate PayPal application that uses the Bump API to make transferring money easy. When you meet someone that you want to send something to, just launch the app and literally bump phones together. There is no need to mess with typing long email addresses or trying tricky methods such as enabling Bluetooth. So how does it work? There are two parts to Bump: The app running on your device and a smart matching algorithm running on their servers in the cloud. The app on your phone uses the phone&apos;s sensors to literally &quot;feel&quot; the bump, and it sends that info up to the cloud. The matching algorithm listens to the bumps from phones around the world and pairs up phones that felt the same bump. Then they just route information between the two phones in each pair.&lt;/p&gt;
&lt;h3 id=&quot;now-you-can-use-bump-with-any-computer&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#now-you-can-use-bump-with-any-computer&quot; aria-label=&quot;now you can use bump with any computer permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Now you can use Bump with any computer!&lt;/h3&gt;
&lt;p&gt;Well I had always thought that it was a cool thing but never had any reason to use it partly because not everyone has the free app installed. Well just recently, a new update has gotten me excited about the app again.&lt;br&gt;
Te app got an upgrade that makes it crazy-handy: you can now use Bump to quickly and easily transfer photos to your PC.&lt;br&gt;
How easily? Nothing-to-install-on-your-PC easily. You just fire up the app, choose the photos you want to transfer, open up the Bu.mp Web site in your browser, and then &quot;bump&quot; your phone on the space bar. Presto: done! What an insanely cool and useful time-saver. I tried this out myself on a few computers and I have to say it works quite well and intuitively.&lt;/p&gt;
&lt;p&gt;Now whenever I have something that I want to share with a friend&apos;s computer, I will use this app. Unfortunately bumping to PC only supports photos, not videos, music, or contacts.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Should I switch to Premiere?]]></title><description><![CDATA[Why I want to switch from Final Cut to Premiere: I've had mixed feelings about…]]></description><link>https://brandonkalinowski.com/should-i-switch-to-premiere</link><guid isPermaLink="false">https://brandonkalinowski.com/should-i-switch-to-premiere</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 14 Sep 2012 00:00:00 GMT</pubDate><content:encoded>&lt;h4 id=&quot;why-i-want-to-switch-from-final-cut-to-premiere&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#why-i-want-to-switch-from-final-cut-to-premiere&quot; aria-label=&quot;why i want to switch from final cut to premiere permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Why I want to switch from Final Cut to Premiere:&lt;/h4&gt;
&lt;p&gt;I&apos;ve had mixed feelings about this. On one hand Final Cut is a great program that has been just fine for all the projects I have attempted. On the other hand, Adobe&apos;s Creative Suite is integrated an is truely an end-to-end workflow. Lately Apple released Final Cut Pro X which is radically different than the Final Cut Pro 7 that it replaced. FCPX is more like iMovie than Final Cut Pro. When I fist heard about the new release of Final Cut, I was excited for the new features. But when I tried to make a simple video for a class with the trial, I wasn&apos;t able to do what I wanted. It slowed me down so much that I had to start over in the program that I had grown comfortable with: Final Cut Pro 7. FCPX was obviously released before it was ready. After I built a more powerful computer, I realized that the old Final Cut was not able to take advantage of all the RAM. In other words, I had built a really powerful computer and Final Cut wasn&apos;t ising it. I saw Premiere as an option but couldn&apos;t afford to buy it outright.&lt;/p&gt;
&lt;p&gt;Also I had grown attached to Final Cut and found editing any other way to be a difficult transition. Things just weren&apos;t where they should have been and that slowed my workflow. For this reason, I decided to stick with Final Cut knowing that I would eventually need to switch to Premiere. I had spent enough time learning a NLE and would much rather stick with it so I could actually shoot more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit 2018:&lt;/strong&gt; In case you are wondering, I did end up switching to Adobe Premiere and it is still my tool of choice.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Surfing Lake Almanor]]></title><description><![CDATA[I surf the lake behind the boat with others. It is more exciting than it looks…]]></description><link>https://brandonkalinowski.com/surfing-lake-almanor</link><guid isPermaLink="false">https://brandonkalinowski.com/surfing-lake-almanor</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 10 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/C-hYlx-hi9A?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I surf the lake behind the boat with others. It is more exciting than it looks. My feet were too big for my uncle&apos;s wakeboard so I had to learn wake surfing.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Eagle Production Notes Part 4]]></title><description><![CDATA[I am simply writing a collection of notes on my experience in creating the…]]></description><link>https://brandonkalinowski.com/eagle-production-notes-part-4</link><guid isPermaLink="false">https://brandonkalinowski.com/eagle-production-notes-part-4</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 07 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am simply writing a collection of notes on my experience in creating the videos that the police department needs. A lot has happened since I kickstarted this project and it is about time I put it onto paper. These notes will be posted in four parts this week. This fourth and final (for now at least) installment of my Production notes provides a little information on the tools we have used.&lt;/p&gt;
&lt;p&gt;I will finish off with an incomplete list of the tools used thus far and their functions.&lt;br&gt;
First off is the &lt;strong&gt;megaphone&lt;/strong&gt;. That&apos;s the tool used by me, the director, to call out my commands. When I say &quot;Quiet on the set&quot; in that thing the location really does become quiet.&lt;br&gt;
&lt;strong&gt;The GoPro&lt;/strong&gt; was needed for the underwater shots. The first day we used it the water was so green on camera the video was unusable. We re-shot that footage on a hot day later in the afternoon when the sun was over the pine trees. I also aimed all the lights we had into the pool and that really helped brighten things up. On that first day the video was also shaky which is very pronounced with its very wide angle lens (170 degree FOV). The reason - Erik was shivering in that pool!&lt;/p&gt;
&lt;p&gt;I bought a &lt;strong&gt;handlebar mount&lt;/strong&gt; and attached it to a pool rod and that really helped improve the quality. It also gave the camera operator more control on camera position!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reflector&lt;/strong&gt;: Did exactly that- bounced the bright sunlight available to fill in shadows on-screen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Blue Yeti mic&lt;/strong&gt; The first THX certified microphone, this thing is amazing! You can really tell the difference from the on-camera mic. The sound is richer and there is no operating noise heard such as moving the zoom lever on the camera.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Television&lt;/strong&gt; One thing I noticed from the first day was that I needed to bring a TV on set. It helped with framing and it meant I didn&apos;t have to push EriK aside to see what the camera saw.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tripod Dolly&lt;/strong&gt; I made a dolly before which meant I didn&apos;t have to waste time building it during this project. It helped create a dramataic close-up of Mrs. Polik&apos;s reaction to Elise&apos;s pool death.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Final Cut Pro 7&lt;/strong&gt; Our editing suite of choice, this gives so many creative and organizational options that are not available with iMovie or Windows Movie Maker. Good work Apple!&lt;/p&gt;
&lt;p&gt;**PFHoe Pro **_or _&lt;strong&gt;CameraTracker&lt;/strong&gt; This software is so cool. It is not something I ever wanted or plan to use later down the road but it became evident that something like this was needed for this particular project. What it does in a nutshell is pick a bunch of points in a video and tracks those pixels. From these data paths it is able to calculate the camera move that was performed on set in 3D space. This information is then used in compositing software such as After Effects to place objects (such as the swarm of minature cleaners) into the 3D space. So when that camera zooms in, that greenscreened object placed on the ground grows and stays on that point on the ground.&lt;/p&gt;
&lt;p&gt;The new estimated completion date is somewhere in September. The entire water safety video has been shot and is now entering the editing process. We have already began filming the litterbug video and plan on filming more next week!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Eagle Production Notes Part 3]]></title><description><![CDATA[I am simply writing a collection of notes on my experience in creating the…]]></description><link>https://brandonkalinowski.com/eagle-production-notes-part-3</link><guid isPermaLink="false">https://brandonkalinowski.com/eagle-production-notes-part-3</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 06 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am simply writing a collection of notes on my experience in creating the videos that the police department needs. A lot has happened since I kickstarted this project and it is about time I put it onto paper. These notes will be posted in four parts this week. This third installment offers explanation to changes made and why all donations will be used towards this cause!&lt;/p&gt;
&lt;p&gt;After describing each contribution, I will discuss the budget and other changes that had to be made. I will also give a glimpse of the troubles we faced during the fast-paced action that is the set.&lt;br&gt;
After I sent out my donation request letters I was overwhelmed with the generous support. In my letter I stated that my goal was to raise $800. I finished fundraising with $1100 which was more than I had bargained for. However, of all the planning I had done to that point, I spent the least amount of my time refining my budget so &lt;strong&gt;$800&lt;/strong&gt; was my very rough estimate for something I had never done before. Additionally, there were some important roadblocks that required spending additional money. So my new budget is &lt;strong&gt;$1100&lt;/strong&gt; and here are the expenses that were not in the original budget:&lt;/p&gt;
&lt;p&gt;**GoPro **parts $50. It became obvious that it is near impossible to hold a camera still underwater (it&apos;s hard to do that above water as well).&lt;br&gt;
&lt;strong&gt;Tripod Head&lt;/strong&gt; could be $120. I never expected that my personal tripod would break. The locking pin that is supposed to hold the camera secure is oddly defunct. I do not trust my camera on that broken tripod.&lt;/p&gt;
&lt;p&gt;**FrameForge **$100 more. This program that I thought was $200 was actually $300, even with my education discount.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lighting&lt;/strong&gt; I had planned to rent. It turns out it would have been $200 a day (my entire lighting budget). I knew I would need lights for a lot more days. Also the nearest rental place was not very close so gas and inconvienece would have increased the price to rent. I purchased all lights for around $310 which is actually a really good deal considering the light output of the lights I obtained for this project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lighting stuff&lt;/strong&gt; It turns out that one of the lights didn&apos;t come with a light stand. I had assumed that it would. Also one of the bulbs burned out early and needs to be replaced. $40.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[40 Days for Life 2011]]></title><description><![CDATA[A TV spot about what 40 Days for life is.]]></description><link>https://brandonkalinowski.com/40-days-for-life-2011</link><guid isPermaLink="false">https://brandonkalinowski.com/40-days-for-life-2011</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sat, 04 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/xflO1Iez93Y?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A TV spot about what 40 Days for life is.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Eagle Production Notes Part 2]]></title><description><![CDATA[This is the second part of my Eagle Production notes. This one describes each…]]></description><link>https://brandonkalinowski.com/eagle-production-notes-part-2</link><guid isPermaLink="false">https://brandonkalinowski.com/eagle-production-notes-part-2</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Sat, 04 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is the second part of my Eagle Production notes. This one describes each job position and also how each individual helped contribute and make this vision possible! Hope you enjoy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Producer/Director&lt;/strong&gt; - Brandon Kalinowski&lt;br&gt;
That&apos;s my job and I&apos;m in charge of overseeing this entire project. I also must direct both actors and camera and assign jobs. It&apos;s a very difficult but also rewarding task. A majority of the work was actually scheduling and planning, which surprised me. There are people who think filmmaking all happens in a tiny box that is the computer but to me I would much rather be on set talking about my vision with others. It is very fun having so many people all working towards a single goal, actively discussing their own solutions. You just can&apos;t replicate that on a computer.&lt;br&gt;
&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Assistant Director/Clapper&lt;/strong&gt; - Sean Woolley - Drew Stassen - Owen&lt;br&gt;
Works clapboard. Maintains order on the set. When filming begins Clapper says “Quiet on the Set” when quiet he says “Start Rolling” After Sound and Camera say “Sound Rolling” and “Camera Rolling” the Clapper announces the shot and take # and claps the board.&lt;br&gt;
This is more than a formal tradition. This century old device is the way sound and video are matched. We recorded sound from my Yeti microphone onto my friend&apos;s Macbook. Obviously, the video was recorded using the camera. Every sound cliip begins with the assistant director&apos;s tag (i.e. &quot;Scene 20 Take 2&quot;) followed by the clap of the sticks all before I call &quot;Action!&quot; Looking at the video files that scene and take information is seen written on the clapboard and the moment the two sticks hit is the same moment the clap is heard in the audio file. That is how we synced our sound. Sometimes the assistant director would not change the take information so there sould literally be four &quot;take 1&quot;&apos;s. That made Jack&apos;s (my sound engineer) job incredibly confusing. That goes to show how important this job is. Unoffically, I call it the clapper but the industry term is the ego-boosting &quot;Assistant Director&quot;&lt;/p&gt;
&lt;p&gt;**Assistant Editor **Eric R&lt;br&gt;
Below is my original description of the task but during the course of this project this job title disapperaed. The reason for that is because my editors left early which meant the assistant editor suddenly was named just &quot;editor&quot;. I am very happy with Eric&apos;s commitment and how quickly he learned. He started with no familiarity with Final Cut but quickly became capable. It is true that I had to be behind him while he cut so I could answer his questions but I still preferred that over editing myself. Like most things, editing is so much better when you are not alone. Eric being there editing meant that I was able to make phone calls, schedule, find music, and download After Effects.&lt;br&gt;
Memory cards are sent to him to transfer footage through Final Cut. He names clips with the help of QRSlate Desktop. He double checks there are a backup before allowing the cards to be formatted. If he has more time, he can look at footage and add sync the sound using clapboard. Critiques quality of video and reports whether or not he thinks a scene should be re-shot (reasons to re-shoot include audio interference, inappropriate objects in frame such as bags and visible microphones, and poor focus)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Camera Operator A&lt;/strong&gt; - Erik Polik -&lt;br&gt;
Erik did a great job working the camera. He was patient even when I had him hold the GoPro in the freezing pool. I always appreciate as a director when someone else is behind the camera so that I can step farther back and get the whole picture. This is one of those mandatory jobs where it really helps if the same operator is there whenever there is a filming session.&lt;br&gt;
Understands basics of operating a video camera. One is in charge. Camera op A makes cinematography suggestions and controls camera focus and lens. Camera op A consults with Director to achieve desired vision. Operator A and B work together and check each other&apos;s decisions. When filming begins and after the Microphone Recordist says “Sound Rolling” the Camera Operator A will say “Camera Rolling and begin filming.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Camera Operator B&lt;/strong&gt;&lt;br&gt;
I wish I could give one person this title but frankly it went to whoever was available at the time. Names include Jacob Buntman, Kevin Gerard, and my dad&lt;br&gt;
Camera op B checks to ensure that shot follows storyboard or agreed change. Camera op B manages battery and SD card and communicates when these are low. He calls &quot;camera rolling&quot; when appropriate. Camera op B also moves dolly and supervises other camera movements. Operator A and B work together and check each other&apos;s decisions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Microphone Recordist (aka Sound Engineer)&lt;/strong&gt; - Jack Alexander&lt;br&gt;
Jack was very helpful in this position. He understood his recording program Garageband and brought his microphone stand as well. After recording he helped me make sense of our jumble of audio files. He sorted them out and split them by take. I then took those files and synced them to the video. He could come over whenever I needed some audio work- even in the middle of the night.&lt;br&gt;
Wears headphones and records into laptop. Watches level scopes for clipping. Holds mic on and off boom pole. After the Clapper says “Start Rolling” the Recordist will say “sound rolling” begin sound taping.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Storyboard Supervisor&lt;/strong&gt; -&lt;br&gt;
Frankly, it is hard to give this title to one person. More than anyone else, it would go to my Grandma who could check off what shots were accomplished. I see this position as important. I realized halfway into the project that I needed someone marking off a paper checklist of the shots that were filmed. This would make it easy to see at a glance what else was needed. On the first day of filming which was super disorganized compared to how we shoot now, things such as Donut boxes were realized to be in the shot only after four or so takes! I&apos;ve learned from that.&lt;br&gt;
Works to ensure continuity. The hawk eye for attention to detail. Any issue should be reported. Storyboard supervisor should delegate someone to fix problems (such as repositioning props, resetting car. Should make sure markers (such as tape) are placed.&lt;br&gt;
Also keeps a record of what has been recorded in each take. Works with clapper for this log. Can also use personal phone or small camera to remember how the set was before the scene started.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prop Master and Effects Supervisor&lt;/strong&gt;&lt;br&gt;
I&apos;m really not sure who has this title yet but special effects will be used in the next planned shots.&lt;/p&gt;
&lt;p&gt;Arrives early to set with props. Sets up props for each shot. Helps construct set and lends a hand when needed. Also supervises practical effects (effects that are done in camera)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Set Photographer&lt;/strong&gt; – Roxie Becker, and my mom&lt;br&gt;
I&apos;m excited about this job. It will be fun to edit a short behind-the-scenes video when everything else is accomplished.&lt;br&gt;
Records behind-the-scenes photos and videos. Documents progress of production.&lt;/p&gt;
&lt;p&gt;**Location and Casting **- Mrs. Polik&lt;br&gt;
– Helps recommend locations and actors&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lead Editor and Colorist&lt;/strong&gt;&lt;br&gt;
As I have already mentioned above, the below description is not entirely accurate to this project since my brave assistant director has displaced this emptied position. Shounak and Ruhan were talented at their craft and it still bothers me a bit that they have abandoned this project. I am determined to finish these videos nevertheless.&lt;br&gt;
Edits and colors video. Must be comfortable with Final Cut. Delegates assistant editor to perform non-creative tasks and just to help sort through all the footage. Critiques quality of video and reports whether or not he thinks a scene should be re-shot (reasons to re-shoot include audio interference, inappropriate objects in frame such as bags and visible microphones, and poor focus)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Special Effects Artist&lt;/strong&gt;&lt;br&gt;
I would be so happy to have one of these. Unfortunately my contact for this position is also busy this summer and so at the moment I am learning this job.&lt;br&gt;
Works in postproduction to create special effects such as chroma key and camera tracking… Preferably has After Effects experience. Would really help if present on set during shots that involve heavy after effects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Litterbug&lt;/strong&gt; – Mr. Patch&lt;br&gt;
This man is so happy to help out. He is a good friend of my dad&apos;s. He fits the part well and is kind enough to make time for this project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Litterbug’s Boss&lt;/strong&gt; - Will be Mr. Demyan&lt;br&gt;
This job is so short- only one shot. But I need to give Mr. Demyan a job as he has expressed interest. Unfortnately he was not on my original email list until now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The little cleaners&lt;/strong&gt; - To be determined&lt;br&gt;
They are excited to do this part. Unfortunately I must delay all chroma key filming until much later when the background action with the litterbug is finished.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Chess players&lt;/strong&gt; - Drew and Eric&lt;br&gt;
&lt;strong&gt;Mom #1&lt;/strong&gt; - Mrs. Polik&lt;br&gt;
This job invoved jumping into the freezing pool multiple times. I wonder what she was thinking when I told her I needed a take two!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Small Child&lt;/strong&gt; - Michael&lt;br&gt;
My little brother who will pretend to drown in our bathtub. So far it has been hard but our next idea is to give him a swim mask so he can place his face on the bottom for longer than 1/15th of a second.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mom #2&lt;/strong&gt; – Kelly Alexander&lt;br&gt;
She was very excited to act in this video so I gave her the role of my mom (both the drowning victims are my siblings).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pool Child&lt;/strong&gt; - Elise&lt;br&gt;
Elise was a trooper in that cold pool. My hardest obstacle with her was getting her to sink. Rocks didn&apos;t work. I came up with the solution and I will explain some other time!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expert&lt;/strong&gt; - To be determined&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Eagle Production Notes Part 1]]></title><description><![CDATA[I am simply writing a collection of notes on my experience in creating the…]]></description><link>https://brandonkalinowski.com/eagle-production-notes-part-1</link><guid isPermaLink="false">https://brandonkalinowski.com/eagle-production-notes-part-1</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 03 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am simply writing a collection of notes on my experience in creating the videos that the police department needs. A lot has happened since I kickstarted this project and it is about time I put it onto paper. These notes will be posted in four parts this week. The first post is a short story about why I chose this project. The second post is a lengthy description of each person&apos;s job and how they helped make this possible. So that section will look something like the credits with much more detailed notes on the side. So if you are wondering what an &quot;assistant director&quot; does when that name scrolls past the screen, this post is for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why I chose this project&lt;/strong&gt; I chose this project because I believe an eagle candidate should be passionate about his gift to his community. Also, they should be fairly skilled with whatever it is they are doing. So a scout with lots of experience working with wood could naturally choose a project with elaborate woodwork. My passion has always been making movies and I feel I had a lot to give. Before even beginning my search for a project, I spent my entire savings on my passion: making movies. My toolset was top-notch. What I didn&apos;t buy I was gifted. That includes Final Cut Studio 3 which is the second choice for professional projects (behind Avid). My Grandpa gave me Photoshop and I built a Mac computer specifically designed for creative media work. Whenever I had a chunk of money that would not grow I would spend it all on more tools such as my green screen and stand, fluid tripod, reflector, and others. I even built my own tripod dolly. I had all these tools and then my handycam broke. I then spent my time learning how to edit. When I found this project I had enough money to buy a functional video camera. I had these tools with great potential to benefit the community. So I went around town knowing that creating a video for the public would allow me to use my assets and experience to benefit someone in need. I talked with the fire department, the school district, the police, and finally the city&apos;s Public Information Officer. He was very excited and enthusiastic at the proposed idea. With that I went on to develop some stories. I knew spent $300 on that green screen so I would find a story that would benefit from it. I don&apos;t know how the two stories came to me but when they did I fell in love with them. I was sort of shocked that it hadn&apos;t been done before. With a new storyboarding program that I just downloaded for the project I transferred my idea in my brain to something tangible. I spent one whole night on that storyboard. During that first draft I did not worry about technicalities and practicalities. If it looked best with the camera 20 feet in the air I made it that way. With that first version I presented it to the council, my scoutmaster, and the beneficiary. They wanted more details so I spent more time on creating material lists and beginning the search for locations. I created a database to help organize my thoughts and plans. That time was hard because I was anxious to get outside and start up the camera. During that time I brought the pool storyboard to its third revision and the littering one to its fifth. This time camera&apos;s were moved to practical locations and each shot was labeled and described. Each shot was altered to fit into the limitations of my camera (it can only zoom out so much). I felt really great spending time on that previsualization and it gave me plan to follow.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Mass of the Sacred Heart Slideshow]]></title><description><![CDATA[I finished putting together this slideshow ordered by PES. It offers a glimpse…]]></description><link>https://brandonkalinowski.com/mass-of-the-sacred-heart-slideshow</link><guid isPermaLink="false">https://brandonkalinowski.com/mass-of-the-sacred-heart-slideshow</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 02 Aug 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/scGdrWXihIk?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;I finished putting together this slideshow ordered by PES. It offers a glimpse of their activity in California.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Rubiks Cube Solver]]></title><description><![CDATA[This is a work in progress. Usually the cube doesn't jam like that. The issue is…]]></description><link>https://brandonkalinowski.com/rubiks-cube-solver</link><guid isPermaLink="false">https://brandonkalinowski.com/rubiks-cube-solver</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 11 Jul 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/rKR91at3ZZ4?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;This is a work in progress. Usually the cube doesn&apos;t jam like that. The issue is it has a hard time differentiating the six colors.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Spending time at the airport]]></title><description><![CDATA[Here is a collection of video I gathered while working at the airport. This…]]></description><link>https://brandonkalinowski.com/spending-time-at-the-airport</link><guid isPermaLink="false">https://brandonkalinowski.com/spending-time-at-the-airport</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 25 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/JNT_-FJUtAk?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Here is a collection of video I gathered while working at the airport. This video was shot and edited on my iPod. The shots are mostly random but the video is still pretty fun.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Putting your internet to work]]></title><description><![CDATA[Recently, I had the opportunity to try out a service that I had known of for a…]]></description><link>https://brandonkalinowski.com/putting-your-internet-to-work</link><guid isPermaLink="false">https://brandonkalinowski.com/putting-your-internet-to-work</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 25 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I had the opportunity to try out a service that I had known of for a while. At first I thought why, now I see just how easy it is and the power of an automated internet. What does that mean? My definition of &quot;automated internet&quot; is internet that manages your many accounts. For example: Anytime you post a new video for you, your blog can create a new post about it. Or if you change your Facebook profile picture, the internet will update your Twitter profile picture (for those who have both). Basically, any action on the web can be assigned a reaction in order to automate a web application. It’s the one ring you need to bind all your isolated web apps.&lt;/p&gt;
&lt;h3 id=&quot;how-to-set-up-your-own-automated-internet&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#how-to-set-up-your-own-automated-internet&quot; aria-label=&quot;how to set up your own automated internet permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;How to set up your own automated internet&lt;/h3&gt;
&lt;p&gt;This service is called &quot;if this then that&quot; or simply IFTTT. The service allows you to connect your online accounts using that statement. You choose what the &quot;this&quot; is (called a trigger) and then what the &quot;that&quot; is (called an action). The resulting automation is called a recipe. You can create as many recipes as needed. For example check out this sequence:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/6sjFX3Wj9mkK0Q0Oe4igEe/74778ac65e1e9ecc82ce87d4cb377399/IFTTT1.png&quot; alt=&quot;IFTTT1&quot;&gt;&lt;/p&gt;
&lt;p&gt;This setup automatically tweets any time I write a new post in Blogger. Once I’ve set this up with ifttt I can expect anything I post to automatically be tweeted. That&apos;s the power of automation.&lt;/p&gt;
&lt;h3 id=&quot;my-favorite-recipes&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#my-favorite-recipes&quot; aria-label=&quot;my favorite recipes permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;My favorite recipes:&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/7xxC3v1gc0qYAcq6UsOmYM/c9a31bdf877afcdf12d55518bc421e20/IFTTT2.png&quot; alt=&quot;IFTTT2&quot;&gt;&lt;/p&gt;
&lt;p&gt;Whenever I upload an image to Flickr&apos;s image hosting service IFTTT will sync those to a Facebook album. This greatly simplifies managing where our family&apos;s pictures are, something that was a hassle in the past.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/2sK9f5YWYUKMUOwkOugua8/cf75338540e31c5beac73cf56c109dbf/IFTTT3.png&quot; alt=&quot;IFTTT3&quot;&gt;&lt;/p&gt;
&lt;p&gt;Its pretty cool to get a phone call the day before it rains.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/3GqnzSq3c4e8iymAaU4O2g/b31264d37b005e9c81daf5bd89de7423/IFTTT4.png&quot; alt=&quot;IFTTT4&quot;&gt;&lt;/p&gt;
&lt;p&gt;This one&apos;s really smart. You call the special IFTTT phone number on any phone and leave a message with an event, date, and time. In other words, its an automated appointment assistant. Leave a message and your Google Calendar will be updated immediately.&lt;/p&gt;
&lt;h3 id=&quot;enabling-channels&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#enabling-channels&quot; aria-label=&quot;enabling channels permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Enabling Channels&lt;/h3&gt;
&lt;p&gt;IFTTT calls any web app that it can connect to a channel. There are 47 total channels, so your favorite web apps such as Gmail, Instapaper, and Dropbox are probably already supported.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/7HFfGP16b6uy2U6uSSUYoE/07b086c577b421bb65cc072ea8ef3a99/IFTTT5.png&quot; alt=&quot;IFTTT5&quot;&gt;&lt;/p&gt;
&lt;p&gt;Colored apps are already activated; black and white ones need some attention from you. Click them to activate. You’ll probably need to give ifttt permission to access your various services, which can take a while. Don’t worry, it’s more than worth it.&lt;/p&gt;
&lt;p&gt;Explore this and you’ll find thousands of possibilities. I can get a phone call when a certain person mentions me on Facebook, or when an item I want on Craigslist is on sale. I can automatically send everything I tweet to Facebook, and vice-versa. I can set up a hotel-style wakeup call. I could have all email attachments downloaded to Dropbox. I could think of many more examples, but you really need to play with this tool yourself to appreciate all it can do.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Building a Computer]]></title><description><![CDATA[Now I have built a computer that I can use with Final Cut and Davinchi Resolve…]]></description><link>https://brandonkalinowski.com/building-a-computer</link><guid isPermaLink="false">https://brandonkalinowski.com/building-a-computer</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 20 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Now I have built a computer that I can use with Final Cut and Davinchi Resolve (an excellent free color-grading program that does not have many limitations compared to the $1000 version). I built the computer because I need a suitable computer that is fast enough to edit video from my new HD camera. Also, our family&apos;s 2006 iMac has a full hard drive (160GB doesn&apos;t last long now that we&apos;ve made that our primary media storage location).&lt;/p&gt;
&lt;p&gt;The whole computer cost around $1500. Yes, a little higher than I was expecting but it is better than Apple&apos;s $4200 Mac Pro configuration. The last time I benchmarked it the Geekbench score was 12760. (Geekbench is an all-around score based on the Apple G4 Mac Pro being an even 1000). I expect an OpenCl card (GTX 470) has improved that score a bit.&lt;br&gt;
&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are the parts I put together:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gigabyte Z68X UD3H-B3 motherboard&lt;/li&gt;
&lt;li&gt;120GB SSD, the fastest available&lt;/li&gt;
&lt;li&gt;Intel i7-2600K (3.4-3.8Ghz Quad core. Second generation. Unlocked for overclocking, which I will not do)&lt;/li&gt;
&lt;li&gt;Gigabtye GTX 470&lt;/li&gt;
&lt;li&gt;12x BlueRay writer! (Now there is a great reason to build your own Mac)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Blackmagic Intensity Pro (Video capture card. It has HDMI input and a breakout cable for Xbox. Great way to record a video source such as a gaming console or my HDMI camcorder.)&lt;br&gt;
Corsair RAM 8GB&lt;br&gt;
Corsair 650W power supply&lt;br&gt;
BitFenix Survivor Case (Love those 200mm fans. Very quiet. A retractable handle adds a nice touch.)&lt;br&gt;
Bluetooth adaptor&lt;br&gt;
5.25 trayless Hard drive rack. (Best $15 of whole build in my opinion. It is so easy to install and swap drives.)&lt;br&gt;
2TB Barracuda hard drive for video storage. All apps are installed on the SSD.&lt;/p&gt;
&lt;p&gt;I used the tonymacx86 method. These are the basic steps I took:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Built computer, installing only 4GB of RAM at first (a requirement to install OSX)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Went into BIOS and checked the firmware version.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I then downloaded the DSDT for that motherboard, iBoot, Multibeast, Update helper, and Apple&apos;s Combo Update&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the BIOS, I made sure that the SATA mode was AHCI. 100% required. I also set the boot order.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Stuck iBoot CD in Blue-Ray drive and booted from that.&lt;/p&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;Then I stuck my Snow Leopard DVD in and in the iBoot menu selected it.&lt;/li&gt;
&lt;li&gt;Ran the install process as normal.&lt;/li&gt;
&lt;li&gt;Ran MultiBeast. This is basically a driver installer. It uses the DSDT to tell the system what is available. I then restarted.&lt;/li&gt;
&lt;li&gt;Ran update helper followed by the Combo Update. 9. I got a kernel panic when install was 90% done. I had to restart.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The machine was updated to 10.6.8, but I ran the Combo update again to make sure the last 10% was installed. No kernel panic this time.&lt;br&gt;
I didn&apos;t let it restart after the update, as I had to run MultiBeast again as updates sometimes replace drivers. This tool is really fast.&lt;br&gt;
Restarted and checked the &quot;About this Mac&quot; window. I then used it as any Mac and installed programs. After restart I put the extra RAM module in.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Early Experiences]]></title><description><![CDATA[My first experience making videos was with stop-motion LEGO stories. Stop-motion…]]></description><link>https://brandonkalinowski.com/early-experiences</link><guid isPermaLink="false">https://brandonkalinowski.com/early-experiences</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 19 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My first experience making videos was with stop-motion LEGO stories. Stop-motion means using a regular picture camera to take each frame one by one. With this digital revolution that is going on, anyone can create movies. All you need is a camera and a story.&lt;/p&gt;
&lt;p&gt;Those first two (live action) shoots got me really excited about making videos. Since then I have read thousands of pages on filmmaking and have collected equipment. I even built my own dolly! The greenscreen I have now is much better greenscreen than that sheet that I first used. For a time I had no video camera so I read everything I could find about making videos. I also created some animated videos as well as stop-motion videos. School made it hard to create videos.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Replacing an iMac Hard Drive]]></title><description><![CDATA[I opened up the Apple computer and replaced the hard drive with a 1TB drive. In…]]></description><link>https://brandonkalinowski.com/replacing-an-imac-hard-drive</link><guid isPermaLink="false">https://brandonkalinowski.com/replacing-an-imac-hard-drive</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 18 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I opened up the Apple computer and replaced the hard drive with a 1TB drive. In comparison to building a computer from scratch, replacing an iMac hard drive is pretty tricky. The trouble is, a SATA connector that I disconnected pulled the whole port off the motherboard.&lt;/p&gt;
&lt;p&gt;Apparently it wasn&apos;t soldered on securely. Oh and that SATA port happens to go to the hard drive I replaced, not the DVD drive (which would have been easier to do without).&lt;/p&gt;
&lt;p&gt;I didn&apos;t pay much attention, I thought it was connected to the LCD I had to pull out. Luckily we were able to find someone who could solder the connector back onto the motherboardd. We then put it back together and it works well. We used Carbon Copy Cloner to transfer everything and the OS to that new drive.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Storyboard Animatic]]></title><description><![CDATA[A quick update on my current project. This is a Pre-visualization for a PSA I am…]]></description><link>https://brandonkalinowski.com/storyboard-animatic</link><guid isPermaLink="false">https://brandonkalinowski.com/storyboard-animatic</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 15 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://player.vimeo.com/video/43944528&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;
&lt;p&gt;A quick update on my current project. This is a Pre-visualization for a PSA I am producing for the police department. I am very excited to start work on this project. Principle photography will commence on July 7.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[1Keyboard. Share your Mac Keyboard]]></title><description><![CDATA[I am typing a blog post onto my iPod. The difference is that I am typing from a…]]></description><link>https://brandonkalinowski.com/1keyboard-share-your-mac-keyboard</link><guid isPermaLink="false">https://brandonkalinowski.com/1keyboard-share-your-mac-keyboard</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Fri, 15 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am typing a blog post onto my iPod. The difference is that I am typing from a wireless keyboard that is connected to an iMac. In other words, this keyboard is connected to an Apple computer which is sharing that keyboard to this iPod via bluetooth. This keyboard is a solar keyboard but cannot directly connect to mobile devices. It is nice to be able to use one keyboard for many devices. The app is called 1Keyboard and it is available for free. It replaces the need to buy a $70 bluetooth keyboard from Apple when you already have a nice keyboard available.&lt;/p&gt;
&lt;p&gt;Just something crazy I thought I would share. For some people this could be very useful if for example you need to send a text without picking up your phone. For me, this is useful because I can bring the keyboard away and type without being in front of a screen. If I need feedback, I can just look at my mobile device.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[My First Video]]></title><description><![CDATA[I have switched to Apple computers for the most part when our family bought our…]]></description><link>https://brandonkalinowski.com/my-first-video</link><guid isPermaLink="false">https://brandonkalinowski.com/my-first-video</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 11 Jun 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have switched to Apple computers for the most part when our family bought our first Mac in 2006. Ever since then I have seen computers as a creative tool. I learned to edit video on the Macintosh. When my dad&apos;s friend gave me an old copy of Final Cut Pro, I had so manny options and choices in an edit. Since I had come from a computer background, it was those early editing sessions that got me into video production. It was amazing to me that seperate clips could be put together to tell a story. For my first video, most of the fun in editing it was developing a soundtrack...&lt;/p&gt;
&lt;p&gt;I took a lot of Christian songs and threw them together. I didn&apos;t know what I was doing but it worked very neatly. No tweaking was needed. Yet it looked like the music in the music video was driving the cuts when in fact I had edited the video without sound and then later dragged in music. I didn&apos;t know anything about music copyrights so I was free to experiment with any song we owned on iTunes. That is the reason it is blocked in Germany.&lt;/p&gt;
&lt;p&gt;With the Sony DVD camcorder, I was able to offer help to friends who needed help putting a video together into a finished project.In my own little circle I had become the go to guy for video. It was a lot of fun filming.&lt;/p&gt;
&lt;p&gt;I think filmmaking appealed to me because on the outside it is very simple, yet on the inside it can be very technical. We made a short about praying the rosary. Then later we made video about St. Dominic Savio. I edited the footage to look like an elaborate news studio report. We used a greenish/blue sheet for chroma keying out the background of our talent.&lt;/p&gt;
&lt;p&gt;I acted as director. I wrote a script but let the talent improvise so that the conversation would be real. Surprisingly, they did a nice job considering my innexperienced directing ability. I also worked the camera where I made the mistake of making use of the zoom lever (which makes it very difficult to match the background in a greenscreen shot. I learned a lot from that project both from the actors and the editing. It was a very ambitous project. It was hard for the actors because they had to look into the sun. And it was hard because we had never done greenscreen before so it made it harder in the editing room. Also, rendering took longer than expected but it was a very complicated project with four layers of video an lots of keyframes (to undo those zooms I did on set). Also something happened so that I lost a good portion of work.&lt;/p&gt;
&lt;p&gt;Backups are very important (yet we still don&apos;t have a solution to that). So after redoing what I lost I had an impressive video that we could be proud of. Whenever I direct I think of that first time and how much farther I have come since then.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Give your own 2D Photos Another Dimension]]></title><description><![CDATA[What if you could use the cloud to create 3D models of anything you photographed…]]></description><link>https://brandonkalinowski.com/give-your-own-2d-photos-another-dimension</link><guid isPermaLink="false">https://brandonkalinowski.com/give-your-own-2d-photos-another-dimension</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 31 May 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;What if you could use the cloud to create 3D models of anything you photographed? Well now it is possible. Read on to learn more... I found something very interesting created by a company called Autodesk. Autodesk is one of the big software companies along with Adobe and Microsoft.&lt;/p&gt;
&lt;p&gt;They designed one of the applications that I have installed but hardly ever use: Maya. Maya is a 3D program that is very complicated and powerful. It has the largest learning curve I have experienced in any program. It is used for high-end animated movies and although I have the Mac version, it is optimized for very large production houses that use the Linux operating system. I first learned about this company when I took a semester of 3D animation at my high school. But what is really exciting to me is the newly-released software available that is designed for the consumer.&lt;/p&gt;
&lt;p&gt;They have many 3D modeling programs available that are all named Autodesk 123D. The coolest one is 123D Catch, a package that allows you to stitch multiple photographs together to create a three-dimensional scene on the computer. It works surprisingly well with faces, objects, buildings, and interiors.&lt;/p&gt;
&lt;p&gt;It can be downloaded without cost for Windows or iPad. If you have heard of photofly this is it under a new name. Also available is the Mac-compatible 123D Make which provides a simple way to convert your computer models into printable models.&lt;/p&gt;
&lt;p&gt;So &lt;del&gt;download Catch&lt;/del&gt; and then please leave a comment about how it worked for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Editor Note 2018:&lt;/strong&gt; Autodesk discontinued their 123D line of apps in 2017. This means that 123D Catch is no longer available for download.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Can RAID be used for Backup?]]></title><description><![CDATA[It's 4:30 PM on a Friday and you get a call that a server you administer is down…]]></description><link>https://brandonkalinowski.com/can-raid-be-used-for-backup</link><guid isPermaLink="false">https://brandonkalinowski.com/can-raid-be-used-for-backup</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 04 Apr 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;It&apos;s 4:30 PM on a Friday and you get a call that a server you administer is down. The users are going to be working through the weekend on a project which is due on Monday and are getting frantic because many of the files they need are on the server. This is the time when you&apos;ll see whether the backup of that server is any good. The two criteria which matter to your users are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;How fast can you get the server back online and&lt;/li&gt;
&lt;li&gt;How old are the files you are restoring.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These two items will determine whether the users think you are a miracle worker or just someone who tinkers with computers.&lt;/p&gt;
&lt;p&gt;This article describes how you can use mirror volumes (RAID 1), as part of a backup strategy which can get your users to think of you as a miracle worker.&lt;/p&gt;
&lt;h3 id=&quot;what-is-backup&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#what-is-backup&quot; aria-label=&quot;what is backup permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;What is Backup?&lt;/h3&gt;
&lt;p&gt;Before I get in trouble with the semanticists reading this article, I need to define what I mean by &quot;backup.&quot; For this article, I define backup as the process of protecting files or volumes from any disaster which can destroy data. This includes: a hard disk failing, a user accidentally deleting a file, theft of a laptop, a file system getting corrupted, a virus infection, or your place of business burning to the ground (can you tell I&apos;m a volunteer fire fighter).&lt;/p&gt;
&lt;p&gt;For me, a backup does not include saving multiple copies of a given file or volume for several years or saving copies of all the work you&apos;ve ever done; I call that archiving. If you need to maintain an audit trail for financial or legal reasons or if you want to create an offline library of all the work you have ever created, you need some method of archiving your files. You should use software which allows you to archive to tape, for long term storage or simply copy files to CD-R or DVD-R media. In either case, the media should be stored in a safe deposit box at the bank or offsite in a fireproof vault.&lt;/p&gt;
&lt;h3 id=&quot;traditional-uses-for-mirror-volumes&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#traditional-uses-for-mirror-volumes&quot; aria-label=&quot;traditional uses for mirror volumes permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Traditional uses for Mirror Volumes&lt;/h3&gt;
&lt;p&gt;Most people think of mirror volumes as providing protection only from disk failures. This is the &quot;set it and forget it&quot; attitude to RAID; you set up the mirror volume with two disks and don&apos;t touch it until one of the disks fails. At that point, the other disk provides data protection because your files are redundantly stored on it.&lt;/p&gt;
&lt;p&gt;The problem with the &quot;set it and forget it&quot; approach to mirror volumes is that it only protects you from one of the data disasters listed above: hard disk failure. If you accidentally delete a file, the file is deleted from both disks. If your mirror volume&apos;s file system becomes corrupted, the corruption is written to both disks. Likewise if your building burns down or your Mac is stolen, you have no backup copy of your data to continue your business with. These are the reasons many people think that RAID cannot be part of a good backup solution.&lt;/p&gt;
&lt;h3 id=&quot;backup-strategies-which-use-mirror-volumes&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#backup-strategies-which-use-mirror-volumes&quot; aria-label=&quot;backup strategies which use mirror volumes permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Backup Strategies which use Mirror Volumes&lt;/h3&gt;
&lt;p&gt;Let&apos;s start by reviewing some of the features of a mirror volume. Once the volume is set up, every write goes to all the disks in the volume. Therefore, every disk contains exactly the same data; if the volume is bootable, every disk in the volume is bootable. At a later date, if a disk is added to the volume, a rebuild is started. This involves reading every byte of the volume and writing it to the new disk. Since this occurs at a layer under the file system, the copying is unaffected by whether a file is open, currently being written to or locked by one of the users. At the end of the rebuild, all of the bytes on the newly added disk are identical to the bytes on all the other disks in the volume. This ensures that this new disk contains the intact copy volume, with the correct permissions, modification dates, boot data structures etc. After the rebuild completes, writes to the volume continue to go to the new disk as well as all the other disks in the mirror volume, ensuring that the new disk continues to contain an accurate copy of the volume&apos;s data.&lt;/p&gt;
&lt;p&gt;So how can we use the fact that a RAID 1 volume has identical data on two or more disks as the cornerstone of a disk to disk backup strategy? As soon as you remove one of the disks from the mirror volume, that disk becomes a backup copy of the entire volume. It is an instantaneous snapshot of all the data on that volume taken at the moment the disk is disconnected. If something happens to the original volume, you can always attach the backup disk to another computer and mount the copy of your mirror volume. In SoftRAID, we call the main disk of a mirror volume, the primary disk and all the others are referred to as secondary disks. I will use this terminology for the rest of this article.&lt;/p&gt;
&lt;p&gt;Let&apos;s look at a couple of ways that people are using mirror volumes for backup and, what it protects them from.&lt;/p&gt;
&lt;h4 id=&quot;the-laptop-user&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-laptop-user&quot; aria-label=&quot;the laptop user permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Laptop User:&lt;/h4&gt;
&lt;p&gt;First let&apos;s look at a laptop user who travels a lot. She is out of the office most of the week and returns every couple of days to attend meetings and work with the creative personnel to develop new ideas for clients. She has set up her startup volume as a mirror with the internal disk in her laptop as the primary disk and, an external FireWire disk as a secondary disk. Every time she comes back to the office, she plugs in her secondary disk. The mirror volume starts a rebuild which copies all data from her primary disk to her secondary disk. She can continue to use her laptop as the rebuild is in progress. (The SoftRAID driver minimizes the performance degradation during a rebuild by only copying bytes when the volume is not being accessed.) When the rebuild is done, she can unplug her secondary disk and leave the office on another trip.&lt;/p&gt;
&lt;p&gt;If anything happens to her laptop when she is on the road, it gets stolen or someone spills coffee on it, she is confident that she can get back to work as soon as she returns to the office. All she has to do is attach the secondary disk to a new computer and boot up holding down the option key. She can then select the secondary disk as her startup disk and boot up using a copy of the volume which was on her original laptop. The only data she will have lost are those changes which she made since she last connected her secondary disk.&lt;/p&gt;
&lt;p&gt;There are several advantages to this backup method, compared to backup strategies which don&apos;t involve RAID: the secondary disk is guaranteed to be bootable if the volume is bootable, the backup can take place regardless of which files are open or in use, the backup has very little impact on the performance of the Mac (usually less than 1% of the CPU capacity when a rebuild is in progress), and there is no restore operation required before the backup can be used.&lt;/p&gt;
&lt;h4 id=&quot;the-desktop-mac-user&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-desktop-mac-user&quot; aria-label=&quot;the desktop mac user permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Desktop Mac User:&lt;/h4&gt;
&lt;p&gt;The second user I want to look at is the professional who relies on his desktop Mac for his business. He is a lawyer, developer, architect or other professional whose business relies totally on the contents of his computer. If he loses the files on his computer, his business will really suffer. In addition, the time lost when dealing with a failed hard disk is money down the drain. This user relies on a three disk mirror volume. His Mac has two internal SATA disks which are used as the primary and secondary disks of a mirror volume. If one of the disks fails at any given point, the other one will take over and become the new primary disk, so his files are always protected from a hard disk failure. The third disk is an external FireWire disk which is also a secondary disk. It is stored offsite (either at home in a fireproof safe or at another safe location). Every Friday, he brings this third disk into his office and connects it to his desktop Mac. Once this disk is connected, a mirror rebuild starts automatically. He can perform this rebuild as he continues to use his Mac during the day. At the end of the day, when he shuts his Mac down, he disconnects his external secondary disk and returns it to its offsite location. This offsite secondary disk becomes his insurance against his building getting broken into or his building burning down. Like the laptop user, if his Mac gets destroyed, he can just purchase a replacement Mac and then boot up from his external secondary disk. At most, he will use one week&apos;s worth of work.&lt;/p&gt;
&lt;h4 id=&quot;the-server-administrator&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-server-administrator&quot; aria-label=&quot;the server administrator permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Server administrator:&lt;/h4&gt;
&lt;p&gt;The last user I want to look at is a server administrator, running a mail server on a XServe. She can&apos;t afford to have the server go down due to a disk failure so she is also using a mirror volume with two internal disks. She also can&apos;t afford to lose a week&apos;s worth of mail, so she has chosen a more aggressive backup strategy than the professional user. Her solution is a mirror volume with 4 disks, 2 internal, and 2 external FireWire disks. The two external secondary disks are normally stored offsite in a secure location. Every morning, the FireWire disk which contains the oldest copy of the volume is attached to the server and the mirror rebuild starts. Once the mirror rebuild has completed a few hours later, the external secondary disk is returned to its safe offsite location. This ensures that at least one copy of the data on the mirror volume is always at a secure offsite location.&lt;/p&gt;
&lt;p&gt;There is a SoftRAID user in the military who has 8 external disks and performs his daily server volume backup by using these 8 disks in rotation. This allows him to restore his server volume to any state it was in, during the last 8 days.&lt;/p&gt;
&lt;h3 id=&quot;features-in-softraid-which-facilitate-backups&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#features-in-softraid-which-facilitate-backups&quot; aria-label=&quot;features in softraid which facilitate backups permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Features in SoftRAID which facilitate backups&lt;/h3&gt;
&lt;p&gt;SoftRAID, LLC, had users of its Mac OS 9 product who were using SoftRAID for backing up their servers. We found out how they were doing their backups and listened to their requests for new features. These features were: the ability to make write protected copies of a mirror volume, and a mechanism to regulate the speed of a mirror rebuild. These requested features are designed to facilitate disk-to-disk and disk-to-disk-to-tape backups. They have been incorporated into SoftRAID 3 for Mac OS X.&lt;/p&gt;
&lt;p&gt;SoftRAID 3 allows users to split a secondary disk off of a mirror volume as a read only copy of the volume; called a &quot;Read-Only Secondary&quot; volume. These disks then mount on the desktop as separate volumes which are write protected by the SoftRAID driver. Read-Only Secondary volumes are the most secure form of disk to disk backup as the user cannot modify these volumes once they are split from the original mirror volume. At a later date, the user can choose either: to add these Read-Only Secondary volumes back to the original mirror volume or to convert them to normal read/write volumes.&lt;/p&gt;
&lt;p&gt;SoftRAID 3 also allows the user to determine how a given volume will be used; called the volume optimization setting. This setting determines how much of the disk bandwidth the SoftRAID driver will use during a mirror rebuild. The possible settings are: Server - uses the disks as much as possible, Workstation - uses the disk 50% of the time, and Digital Audio or Digital Video - waits for many seconds of inactivity on the volume before performing any i/o for a mirror rebuild.&lt;/p&gt;
&lt;h3 id=&quot;putting-theory-into-practice&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#putting-theory-into-practice&quot; aria-label=&quot;putting theory into practice permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Putting Theory into Practice&lt;/h3&gt;
&lt;p&gt;Let&apos;s see how to setup a mirror startup volume for each of these users. I will be illustrating this by describing the steps you perform with the SoftRAID application. You can perform some of these steps with AppleRAID, the RAID software build into Mac OS X, but you will have to resort to using terminal to run the diskutil tool.&lt;br&gt;
Since a mirror volume is just a volume with the identical data on more than one disk, it is easy to convert a standard Apple Disk Utility non-RAID volume into a SoftRAID mirror without erasing any of the files on the volume. The only changes which need to take place are: the volume&apos;s partition needs to be changed to a SoftRAID partition, and a small SoftRAID specific partition must be created to contain the volume&apos;s metadata. The SoftRAID application performs these steps with one menu selection.&lt;/p&gt;
&lt;p&gt;For security reasons, Mac OS X will not allow a disk&apos;s partition map to be modified if the disk contains mounted volumes. This means that all the volumes on a disk must be unmounted before the partition map can be changed. If the volume is not your startup volume, this is easy; the SoftRAID application can just unmount the volume, change the partition map, and then remount the volume. If the disk contains your startup volume, you have to start up your Mac using a different startup volume (e.g.: the SoftRAID Startup CD or a volume on an external FireWire disk). Once the partition map has been changed, all the other steps of creating and managing a mirror volume can be performed while your Mac has started up this volume.&lt;/p&gt;
&lt;h3 id=&quot;setting-up-a-mirror-volume-for-the-laptop-user&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#setting-up-a-mirror-volume-for-the-laptop-user&quot; aria-label=&quot;setting up a mirror volume for the laptop user permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Setting up a Mirror Volume for the Laptop User:&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1) Startup your Mac using the SoftRAID Startup CD.&lt;/strong&gt; As I described above, you must use a different startup volume than the one on the disk you will be converting to SoftRAID. You can use either the SoftRAID Startup CD (available for purchase from &lt;a href=&quot;http://www.softraid.com/&quot;&gt;www.softraid.com&lt;/a&gt;), use an external FireWire disk which contains a startup volume or startup your laptop in target disk mode and connect it to a second Mac. If you purchase the electronic version of SoftRAID, you will have to use the second or third method for starting up your laptop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) Launch the SoftRAID application.&lt;/strong&gt; If you did not use the SoftRAID Startup CD, you will have to double click on the SoftRAID application to launch it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3) Convert your startup volume to a SoftRAID volume.&lt;/strong&gt; Click on the tile for the internal disk in your Mac in the Disks column. You will see that it gets connected to a volume tile which represents your startup volume in the Volumes column. Select Convert to SoftRAID 3 in the Disks menu to convert your volumes partition to a SoftRAID volume partition. This process does not change any of the files in your volume, and all your volume&apos;s data will remain intact.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4) Restart your Mac using your normal startup volume.&lt;/strong&gt; Restart your Mac, so it is using the original startup volume. This will now be a SoftRAID volume and will have a SoftRAID non-RAID volume icon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5) Connect the second disk you will be using for the mirror volume.&lt;/strong&gt; Connect a second disk to your Mac. This disk must be the same size or larger than the internal disk in your laptop. If your Mac contains a PowerPC CPU, you will have to use a FireWire disk as USB disks cannot be used for startup volumes. If you Mac contains an Intel CPU, you can use either a FireWire or USB disk. (Our experience has been that USB disks are much less reliable on Mac OS X than FireWire ones on either type of CPU.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6) Initialize the second disk.&lt;/strong&gt; Click on the tile for the external disk you have connected and select Initialize from the Disk menu. This tells the SoftRAID application to create a partition map on the disk you have selected. You can specify the partition map type to use or let the SoftRAID application choose the appropriate one by using the Default button (APM for PowerPC Macs and GPT for Intel Macs). The partition maps for all the disks of a given volume must be the same type.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7) Convert the startup volume to a mirror.&lt;/strong&gt; Click on the tile for your startup volume and select Convert to Mirror in the Volume menu. Then select the external disk you have just initialized. This will convert the volume to a mirror volume which contains two disks: the internal as the mirror primary disk and the external as the secondary one. It will also start a rebuild of the mirror volume. The rebuild process copies all of the data on the internal disk to the external one. Since a mirror volume always sends all writes to all the mirror disks, the two disks will contain identical volume data after the rebuild has completed, even if you have written files to the volume during the rebuild process. Both disks will continue to contain identical volume data as you use the volume, as long as they remain connected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8) Wait for the mirror rebuild to complete.&lt;/strong&gt; The rebuild will continue even if you quit the SoftRAID application. This is because the rebuild process is actually handled by the SoftRAID driver; the application just displays a progress indicator for the rebuild, and allows you to stop a rebuild which is in progress. Once the rebuild has finished, the driver will display a dialog telling you that the mirror volume is in sync, and all the disks contain identical data. The driver also writes an entry to the system.log file when the rebuild completes. You can view the system.log file using the Console application located in the Utilities folder.&lt;/p&gt;
&lt;h4 id=&quot;leaving-the-office-with-your-laptop&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#leaving-the-office-with-your-laptop&quot; aria-label=&quot;leaving the office with your laptop permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Leaving the office with your Laptop:&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;1) Disconnect the external disk from your laptop.&lt;/strong&gt; You can either shutdown your laptop, and then disconnect the external disk or disconnect it while your Mac is still running. The external disk becomes a snapshot of your internal volume taken at the exact time the external disk gets disconnected. Note that if you disconnect the external disk while your laptop is asleep, your Mac may hang when you wake it back up. This is due to a bug in the kernel which fails to keep track of external disks correctly if they are removed while the Mac is asleep.&lt;/p&gt;
&lt;h4 id=&quot;returning-from-your-trip-and-reconnecting-your-second-disk&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#returning-from-your-trip-and-reconnecting-your-second-disk&quot; aria-label=&quot;returning from your trip and reconnecting your second disk permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Returning from your trip and reconnecting your second disk:&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;1) Reconnect the external disk to your laptop.&lt;/strong&gt; When you return to your office and want to rebuild your mirror, you connect the external disk to your Mac. You can do this before you restart your Mac, when it is asleep or while it&apos;s running. When the SoftRAID driver detects this disk, it will recognize it as part of an existing mirror volume, and automatically start a rebuild. It will also display a dialog telling you that it has started the rebuild, and write an entry to the system.log file with the time the rebuild started. Once the rebuild has finished, the driver will display a dialog stating that the mirror volume is in sync, and all the disks contain identical volume data. It will also write another entry to the system.log file. At no point do you have to run the SoftRAID application to complete the rebuild.&lt;/p&gt;
&lt;h3 id=&quot;setting-up-a-desktop-or-server-mac&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#setting-up-a-desktop-or-server-mac&quot; aria-label=&quot;setting up a desktop or server mac permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Setting up a desktop or server Mac:&lt;/h3&gt;
&lt;p&gt;The process of converting the startup volume to a mirror for a desktop or server is identical to that of a laptop. For these applications, the first two disks for a mirror volume are probably going to be internal or in the slide out trays in the case of an XServe. Like with the laptop, once the startup disk has been converted to SoftRAID, all of the remaining steps can be performed while the Mac is in use. You can have a server on line and have users logged in ,while you initialize your second disk and convert your startup volume to a mirror.&lt;/p&gt;
&lt;p&gt;Adding additional disks to your Mirror Volume:&lt;br&gt;
You can add another disk to your mirror volume at any time. This means you can add disks to your mirror volume as your backup strategy becomes more advanced or as your equipment budget grows. SoftRAID allows you to have up to 16 disks associated with a given volume. (SoftRAID also allows up to 60 volumes per disk, and has been tested with over 100 disks connected to a single Mac.)&lt;/p&gt;
&lt;h4 id=&quot;to-add-another-disk-to-a-mirror-volume&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#to-add-another-disk-to-a-mirror-volume&quot; aria-label=&quot;to add another disk to a mirror volume permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;To add another disk to a mirror volume:&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;1) Connect the new disk to your Mac.&lt;/strong&gt; This disk must be the same size or larger than your mirror volume. For startup volumes, this disk must be on a bus which supports booting (i.e. not USB on a PowerPC Mac). It should also offer similar performance to the other disks in the volume. For instance, adding a FireWire 800 disk to a mirror volume, which contained SATA II disks would be okay, but adding a USB disk to the same volume would impair performance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) Launch the SoftRAID application.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3) Initialize this new disk.&lt;/strong&gt; Click on the tile for the external disk you have connected, and select Initialize from the Disk menu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4) Add the disk to your mirror volume.&lt;/strong&gt; Click on the tile in the Volumes column, which represents your mirror volume. Then select Add Secondary Disk from the Volume menu. You can then select the newly initialized disk, and it will be added to your mirror volume. It will also start a rebuild of the mirror volume.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5) Wait for the rebuild to complete.&lt;/strong&gt; The rebuild will continue even if you quit the SoftRAID application. For faster desktop Macs and servers, a mirror rebuild will take less than 60 minutes for every 100 GB of volume size.&lt;/p&gt;
&lt;h3 id=&quot;using-read-only-secondary-volumes-for-offsite-backups&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#using-read-only-secondary-volumes-for-offsite-backups&quot; aria-label=&quot;using read only secondary volumes for offsite backups permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Using Read-Only Secondary Volumes for Offsite Backups&lt;/h3&gt;
&lt;p&gt;While a disk can simply be unplugged from a mirror volume to create a snapshot of that volume, the most reliable way of creating a copy is to split a disk off as a Read-Only Secondary volume. This creates a write protected copy of the original mirror volume on a single disk. When the disk is connected to another Mac for use with a tape backup system or to recover a group of files, the file system is locked, and none of the files on it can be modified. (The SoftRAID driver actually blocks writes to that volume, so even attempts to write to the volumes partition will fail.) At a later time, the Read-Only Secondary volume can be added back to a mirror volume. When this happens, the SoftRAID driver will start a mirror rebuild to copy all the data from the volume back onto the disk, which has just been reconnected.&lt;/p&gt;
&lt;p&gt;The mirror volume on a server could therefore be backed using two or more external disks, both of which were split from the mirror volume to create Read-Only Secondary volumes. Every time a backup was required, the disk with the oldest Read-Only Secondary volume could be reattached and added back to the original mirror volume. This would start a mirror rebuild. Once the rebuild had completed, the disk could be split from the mirror volume as a Read-Only Secondary and stored offsite.&lt;/p&gt;
&lt;h3 id=&quot;to-create-a-read-only-secondary-volume&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#to-create-a-read-only-secondary-volume&quot; aria-label=&quot;to create a read only secondary volume permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;To Create a Read-Only Secondary Volume:&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1) Launch the SoftRAID application.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) Split one of the disks off as a Read-Only Secondary volume.&lt;/strong&gt; Click on the tile in the Volumes column which represents your mirror volume. Then select Split Mirror from the Volume menu. You can then select the secondary disk you want to use as a backup copy of the mirror volume. Select the Read-Only Secondary option, and then click the Split button. In 5 - 10 seconds, your disk will be split off as a Read-Only Secondary volume.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3) Disconnect the disk containing the Read-Only Secondary volume.&lt;/strong&gt; You can unmount the Read-Only Secondary volume and disconnect the disk from the Mac. It is now ready to be stored offsite.&lt;br&gt;
To Add a Read-Only Secondary Volume back to the Original Mirror Volume:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) Attach the disk containing the Read-Only Secondary volume.&lt;/strong&gt; Connect the backup disk with the Read-Only Secondary disk to your Mac. The volume will automatically mount on the desktop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) Launch the SoftRAID application.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3) Add the Read-Only Secondary Volume back to the Original Mirror Volume.&lt;/strong&gt; Click on the tile in the Volumes column which represents the Read-Only Secondary Volume. Then select Convert Read-Only Secondary Volume from the Volume menu. Use the default setting of Add back to original Mirror volume, and click the Convert button. The Read-Only Secondary volume will be added to the original mirror volume in 5 - 10 seconds, and a rebuild will be started.&lt;/p&gt;
&lt;h3 id=&quot;recovering-from-data-disasters&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#recovering-from-data-disasters&quot; aria-label=&quot;recovering from data disasters permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Recovering from Data Disasters:&lt;/h3&gt;
&lt;p&gt;All of the data disasters you can encounter can be divided into two types: those where you need to restore an entire volume intact, and those where you only need to restore a group of files or folders. When you are restoring an entire volume, you do not have access to the original volume or cannot trust its contents. This would happen if your Mac was stolen or if all of the mirror disks inside your Mac were destroyed by a power spike. You would also want to restore an entire volume if you had a corrupted volume or your Mac was kernel panicking each time you started up.&lt;/p&gt;
&lt;p&gt;If you are restoring a group of files or folders from a volume, chances are that the original volume is still fully functional. In this case, you only need to copy a file or group of files which were accidentally erased to your mirror volume or another safe place.&lt;/p&gt;
&lt;h4 id=&quot;recovering-an-entire-volume&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#recovering-an-entire-volume&quot; aria-label=&quot;recovering an entire volume permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Recovering an entire volume:&lt;/h4&gt;
&lt;p&gt;If your backup disk contains a Read-Only Secondary volume, you will have to convert it to a normal volume before you can use it as a startup volume. You can do this using the SoftRAID Startup CD or by connecting it to another Mac, and running the SoftRAID application. To convert a Read-Only Secondary volume to a normal startup volume:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) Launch the SoftRAID application.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) Convert the Read-Only Secondary volume to a non-RAID volume.&lt;/strong&gt; Click on the tile in the Volumes column which represents the Read-Only Secondary Volume. Then select Convert Read-Only Secondary Volume from the Volume menu. Select the Convert to non-RAID Volume, and click the Convert button. The Read-Only Secondary volume will be converted to a non-RAID volume, and will mount on the desktop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3) Startup the Mac using your backup disk.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Attach the backup disk to the replacement Mac you want to use. Then startup the Mac, and select the backup volume as your startup volume.&lt;/p&gt;
&lt;p&gt;If your backup disk was simply disconnected from the Mac, and does not contain a Read-Only Secondary volume, you should connect it to different Mac before using it. If you are using the original Mac, you should disconnect all of the original mirror disks or the SoftRAID driver may try and start a mirror rebuild, possibly overwriting your backup of the volume.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To startup using a backup disk which contains a snapshot of the mirror volume:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) Connect the backup disk to the Mac you want to use.&lt;/strong&gt; Make sure the replacement Mac you are using can be started up using the partition map type, and Mac OS X version on the backup disk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) Disconnect any disks which were part of the mirror volume.&lt;/strong&gt; Make sure all of the disks which were used with the original mirror volume are disconnected from the Mac. These disks contain copies of the corrupted file system, virus infection or other malady which is causing your Mac to kernel panic. If they are connected when you try and startup from the backup disk, the SoftRAID driver may start a mirror rebuild, possibly overwriting the backup disk with data from the corrupted volume.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3) Startup the Mac using your backup disk.&lt;/strong&gt; The startup process will take 15 seconds longer than normal, the first time. This delay will occur when you see the grey apple logo. This delay is normal, and is caused by the SoftRAID driver waiting to see if any of the other disks in the mirror volume will appear. If they don&apos;t appear in 15 seconds, the SoftRAID driver will use the backup disk for the mirror volume, and start the Mac.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Remember that the usual startup disk rules apply:&lt;/strong&gt; You can&apos;t startup an Intel Mac from a disk with an APM partition map, and similarly you can&apos;t start up a PowerPC Mac from a disk with a GPT partition map. In addition, the version of Mac OS on the backup disk must be able to boot the Mac you are trying to startup. So, don&apos;t try and startup your new replacement Intel XServe with the backup disk from your G4 XServe, which was running Panther Server.&lt;/p&gt;
&lt;h4 id=&quot;recovering-a-group-of-files-or-folders&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#recovering-a-group-of-files-or-folders&quot; aria-label=&quot;recovering a group of files or folders permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Recovering a group of files or folders:&lt;/h4&gt;
&lt;p&gt;If your backup disk contains a Read-Only Secondary volume, you can just connect the disk to your Mac, and copy the files and folders you want off of the volume. The volume will have the same name as your mirror volume, but the icon will have a small paddle lock on it.&lt;br&gt;
If your backup disk was simply disconnected from the Mac, and does not contain a Read-Only Secondary volume, you should connect it to different Mac and copy the files off using this second Mac. If you connect this backup disk to a Mac, which contains the original mirror volume, the SoftRAID driver might start a rebuild which would overwrite the files you are trying to recover.&lt;/p&gt;
&lt;h3 id=&quot;the-advantages-and-disadvantages-of-using-mirror-volumes-for-backup&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#the-advantages-and-disadvantages-of-using-mirror-volumes-for-backup&quot; aria-label=&quot;the advantages and disadvantages of using mirror volumes for backup permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;The Advantages and Disadvantages of using Mirror Volumes for Backup&lt;/h3&gt;
&lt;p&gt;There are several advantages to using mirror volumes as part of a backup strategy: 1)The backup preserves all permissions, file system links, and aliases perfectly. 2) Open and locked files can be backed up. 3) There is no restore step. 4) It takes less than 5 minutes to get a server back on line from the backup disk. 5) It is easy to see if your backup worked.&lt;/p&gt;
&lt;p&gt;There are a few disadvantages to using a mirror volume for a backup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The backup disk must be the same size or larger than the size of the volume.&lt;/li&gt;
&lt;li&gt;The backup time is dependent on the size of the volume, not the amount of data on the volume.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;recovering-the-server-on-friday-afternoon&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#recovering-the-server-on-friday-afternoon&quot; aria-label=&quot;recovering the server on friday afternoon permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Recovering the Server on Friday Afternoon:&lt;/h4&gt;
&lt;p&gt;Let&apos;s revisit the scenario I started this article with. If you had backed up this server by creating backup disks containing Read-Only Secondary volumes, you could have the server back up within 10 minutes. The hardest part would be getting a replacement Mac, the backup disk, and the necessary cables together. All you would do is convert the Read-Only Secondary volume to a non-RAID volume, and then set it to be the startup volume on your replacement Mac. You would then have a server which was exactly the same as the original server (at the time you created the backup).&lt;/p&gt;
&lt;p&gt;If you had backed up that server with a more traditional type of backup software, how far into the restore process would you be in 10 minutes?&lt;/p&gt;
&lt;h3 id=&quot;conclusion&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#conclusion&quot; aria-label=&quot;conclusion permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;This article showed you viable ways to make RAID a part of your overall backup strategy. While its original use concerned high-availability, being able to split off an in sync mirror volume opens up a new avenue of data protection.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tim Standing&lt;/strong&gt; is the Vice President of Engineering for SoftRAID. Outside of writing code, he spends time with his family, and as a volunteer fireman&lt;/p&gt;
&lt;p&gt;Credit: &lt;a href=&quot;http://www.mactech.com/articles/mactech/Vol.23/23.01/2301RAID/index.html&quot;&gt;http://www.mactech.com/articles/mactech/Vol.23/23.01/2301RAID/index.html&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[My Minecraft HD Texture Pack]]></title><description><![CDATA[NOTE: This is an old post and links may no longer work Here is an email that I…]]></description><link>https://brandonkalinowski.com/my-minecraft-hd-texture-pack</link><guid isPermaLink="false">https://brandonkalinowski.com/my-minecraft-hd-texture-pack</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Wed, 01 Feb 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;NOTE: This is an old post and links may no longer work&lt;/p&gt;
&lt;p&gt;Here is an email that I sent a while ago, and I thought I&apos;d share it on my blog.&lt;br&gt;
I&apos;ve been thinking about minecraft for the past few days and figured I&apos;d share what I know..&lt;/p&gt;
&lt;p&gt;I&apos;m starting to use HD texture packs and found 64 x 64 pixel packs to work well. I&apos;ve experimented with higher-Res packs but do not notice a big enough visual difference for me to consider it to worth it.&lt;br&gt;
&lt;a href=&quot;&quot;&gt;&lt;/a&gt;64p has a resolution that is 16x that of the default. The problem with most HD textures is that they look fake in the attempt to look life-like. That is why I made my own. It avoids common problems with 64p packs.&lt;br&gt;
WorldEdit is the best mod. It is more useful than TooManyItems. If you don&apos;t use it, install it and the add on lets you see your selection.&lt;/p&gt;
&lt;p&gt;For worldEdit tutorials look up shawnvmartin on YouTube&lt;br&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=Wnib0XChIcM&amp;#x26;sns=em&quot;&gt;www.youtube.com/watch?v=Wnib0XChIcM&amp;#x26;sns=em&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For Single Player Commands Tutorials watch these low-quality videos. Each 30-second video is on a command&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/user/spcmod&quot;&gt;www.youtube.com/user/spcmod&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;TaviRider has some great video resources.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/user/TaviRider&quot;&gt;www.youtube.com/user/TaviRider&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Be sure to download his world of Redstone and his World of Science. Very useful.&lt;br&gt;
Minecraft furniture smart :-)&lt;br&gt;
&lt;a href=&quot;http://minecraftfurniture.net/&quot;&gt;http://minecraftfurniture.net/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Minecraft Architecture videos on Youtube &lt;a href=&quot;http://www.youtube.com/watch?v=7nMGMe4_t5k&amp;#x26;sns=em&quot;&gt;www.youtube.com/watch?v=7nMGMe4_t5k&amp;#x26;sns=em&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Be sure to check out my new awesome HD (64x64) Texture Pack. I&apos;m so proud. I don&apos;t use an HD patcher as Optifine has HD support built in.&lt;/p&gt;
&lt;p&gt;My Pack is available on my domain: &lt;a href=&quot;http://go.popularwebz.com/MyTexture&quot;&gt;go.popularwebz.com/MyTexture&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Be sure to view it in all its glory with Tyken&apos;s Texture Test Map. &lt;a href=&quot;http://www.minecraftforum.net/topic/208006-creation-tykens-texture-testmap-30-173/&quot;&gt;www.minecraftforum.net/topic/208006-creation-tykens-texture-testmap-30-173/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Give me some feedback please!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[German Train Set]]></title><description><![CDATA[This entire post is from an email I received a while ago. It is an amazing…]]></description><link>https://brandonkalinowski.com/german-train-set</link><guid isPermaLink="false">https://brandonkalinowski.com/german-train-set</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Thu, 26 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;This entire post is from an email I received a while ago&lt;/strong&gt;. It is an amazing example of model building, which is used extensively in some films.&lt;/p&gt;
&lt;p&gt;Two German Brothers have put this TRAIN SET together.&lt;/p&gt;
&lt;p&gt;You can watch the german video at the end of this post.&lt;/p&gt;
&lt;p&gt;This is the world&apos;s biggest train set.&lt;/p&gt;
&lt;p&gt;Gerrit said: &quot;Our idea was to build a world that men, women, and children can be equally astonished and amazed in.&quot; Frederik added: &quot;Whether gambling in Las Vegas, hiking in the Alps or paddling in Norwegian fjords - in Wunderland everything is possible.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/4qKMzhxEGk8O2sqYa4AcaW/b04c689d6b101e3698f6dd223fd983ec/Train15.jpg&quot; alt=&quot;Train15&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/3WK6jMSJg4gYkmS802QOOa/db0d48b16f87455c8b73d39205b13ad4/Train18.jpg&quot; alt=&quot;Train18&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/3RxpXedT84a8cWs2kG0UAm/eca770fc03b382eb9c07831fafbf2bf1/Train17.jpg&quot; alt=&quot;Train17&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/3DwEoOeQt288U2aycWSw28/740f1a77c1fd3d3da22ca62e5d0074da/Train16.jpg&quot; alt=&quot;Train16&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/3Eg3UKWOAESkQMaaei2Ksw/48f547d8b0f2015b3ae07e83415e5fe6/Train14.jpg&quot; alt=&quot;Train14&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/34JrNuRaFaS4UEQCKoSKEe/b3c9b827d9e7261221681d48b1554c22/Train11.jpg&quot; alt=&quot;Train11&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/4dNscLlDFeYIEYMo6E0M2y/5687f978395b1138a94b39e8ce7ca98c/Train10.jpg&quot; alt=&quot;Train10&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/70TgTKiGliW4oQag6Iy4CM/6a0b05acc9bace5e2463064b701ee4b2/Train12.jpg&quot; alt=&quot;Train12&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/1Wx5Bs5SJOimA4oKGkqQUK/e92048a4b2be3445a171bc530513a013/Train13.jpg&quot; alt=&quot;Train13&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/2dUT1XYniAkuEWM2qCkqg4/f1f88b27e0e51d6c743d19cf1eb44533/Train08.jpg&quot; alt=&quot;Train08&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/4sajjSceh2GcmC0IyW4666/150de8c0f15476fe43550a67a038976e/Train09.jpg&quot; alt=&quot;Train09&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/iE7n45hprGEk0gQKEG2a8/189e04bc1ab5ccf85e423988c7bd7aa0/Train05.jpg&quot; alt=&quot;Train05&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/6ODchO1t3GsSAMkQA2wQq2/db7b068cab74c2f0a47bdd31e3dc8366/Train07.jpg&quot; alt=&quot;Train07&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/29JSI93a4I4o6YA0eOQW6o/e7acc367261bd1b23a7bee76c303ba73/Train06.jpg&quot; alt=&quot;Train06&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/3O9GC14vWMe4kU82yiCw0u/665bb7b52a041eb2e8474f8829b092c0/Train04.jpg&quot; alt=&quot;Train04&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/QUd6ppJaAosKeE0ccEKKC/924cd25d08975ca354e6bbebd4070a38/Train03.jpg&quot; alt=&quot;Train03&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/4FKhU6wUQ0MCyc2ySI0Kgk/bbbc0735c970b89b4639d70f62b35db5/Train02.jpg&quot; alt=&quot;Train02&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/25bYjWnLAEaY2E2wQAEEGU/259c4f009434cb0bd99b2ce8b2aebf7f/Train01.jpg&quot; alt=&quot;Train01&quot;&gt;&lt;/p&gt;
&lt;p&gt;Some facts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Covers 12,380 square feet and features almost six miles of track and is still not completed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Twin brothers Frederick and Gerrit Braun, 41, began work on the &apos;Miniature Wunderland&apos; in 2000.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The set covers six regions including America, Switzerland, Scandinavia, Germany, and the Austrian Alps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The American section features giant models of the Rocky Mountains, Everglades, and Grand-Canyon And Mount Rushmore.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Swiss section has a mini-Matterhorn.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Scandinavian part has a 4ft long passenger ship floating in a &apos;fjord&apos;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is expected to be finished in 2014, when the train set would cover more than 1,800 square meters / (19,376 sq ft) and feature almost 13 miles of track, by which time detailed models of parts of France, Italy and the UK would have been added.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It comprises 700 trains with more than 10,000 carriages and wagons.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The longest train is 46ft long.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The scenery includes 900 signals, 2,800 buildings, 4,000 cars - many with illuminated headlight and 160,000 individually designed figures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Thousands of kilograms of steel and wood was used to construct the scenery...&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The 250,000 lights are rigged up to a system that mimics night and day by automatically turning them on and off.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The whole system is controlled from a massive high-tech nerve center.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In total the set has taken 500,000 hours and more than 8 million euro to put together, The vast majority of which has come from ticket sales.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.22377622377622%; position: relative; height: 0; overflow: hidden; &quot; &gt; &lt;div class=&quot;embedVideo-container&quot;&gt; &lt;iframe title=&quot;&quot; src=&quot;https://www.youtube.com/embed/2-Y-tBuglfs?rel=0&quot; class=&quot;embedVideo-iframe&quot; style=&quot;border:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot; loading=&quot;eager&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/div&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Get Spotify! Free soundtracks and music!]]></title><description><![CDATA[Check out Spotify! I personally have been waiting for this Swedish service to be…]]></description><link>https://brandonkalinowski.com/get-spotify-free-soundtracks-and-music</link><guid isPermaLink="false">https://brandonkalinowski.com/get-spotify-free-soundtracks-and-music</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 23 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Check out Spotify! I personally have been waiting for this Swedish service to be available in the U.S. for more than a year. Now I can listen to 15 million tracks for free. It integrates well with your iTunes music. Think of it like iTunes except you have already bought all the songs.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[360 Video Kickstarter Product]]></title><description><![CDATA[I found this cool thing for creating 360 video on iPhone. You can swipe around…]]></description><link>https://brandonkalinowski.com/360-video-kickstarter-product</link><guid isPermaLink="false">https://brandonkalinowski.com/360-video-kickstarter-product</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 23 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I found this cool thing for creating 360 video on iPhone. You can swipe around while recording and while viewing a previously recorded video.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.kickstarter.com/projects/1106196796/the-gopano-micro-a-lens-for-capturing-360-video-on&quot;&gt;http://www.kickstarter.com/projects/1106196796/the-gopano-micro-a-lens-for-capturing-360-video-on&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Also, it is now possible to create 3D models just by taking multiple pictures of an object:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=8YNrQA6eofI&quot;&gt;http://www.youtube.com/watch?v=8YNrQA6eofI&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Megapixels and Cameras]]></title><description><![CDATA[Below is some technical details about camera magapixels. This could perhaps help…]]></description><link>https://brandonkalinowski.com/megapixels-and-cameras</link><guid isPermaLink="false">https://brandonkalinowski.com/megapixels-and-cameras</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 23 Jan 2012 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Below is some technical details about camera magapixels. This could perhaps help in choosing a camera.&lt;/p&gt;
&lt;p&gt;I was told by a professional photographer, that the lens is more important than the pixel count. Why? Most people don&apos;t need more than 6 MP. Our DSLR camera is over 10 MP, but if I&apos;m not shooting RAW, I set it to the 6 MP setting (as this photographer recomended).&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Editor Note 2018:&lt;/strong&gt; While this was true in 2012, it is no longer the case. I now shoot at the highest resolution available. Hard drive and memory card storage is now inexpensive. If I absolutely need to squeeze more photos on a card, I do have the option to use a lower resolution but usually this is not a concern. From a web perspective things get interesting. JPEG compression is very lossy but images look better to the eye when they are scaled by the browser at higher compression. Let&apos;s create a hypothetical example to explain that point:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A web design allows a photo that is 400x600px.&lt;/li&gt;
&lt;li&gt;Our 400x600px at 50% compression is 100KB.&lt;/li&gt;
&lt;li&gt;Instead, we can use a 800x1200px image at 25% compression. This also weighs 100KB. When it is displayed at 400x600 the browser scales it. This image looks better to the eye.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here, more pixels comes in handy.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;One reason is because the lens is how the camera &quot;sees&quot; light, while the camera&apos;s sensor is what records that info. If the lens makes the image look like puke, the Megapixels won&apos;t make a difference- you&apos;ll just be able to print larger than 8 by 10. Also, camera manufacturers sometimes cram too many pixels on a small camera sensor, and what you get is a lot of artifacts. MP is just a spec. More doesn&apos;t equal better. Also, in low light where enough light cannot get through the lens, extra pixels are &quot;dead&quot; and add to the noise.&lt;/p&gt;
&lt;h3 id=&quot;regarding-video&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#regarding-video&quot; aria-label=&quot;regarding video permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Regarding video:&lt;/h3&gt;
&lt;p&gt;Todays professional camcorders have 3 MP sensors. Some CCD camcorders have three sensors: one for each primary color of light: RGB.&lt;/p&gt;
&lt;p&gt;HD video (1080 by 1920) is actually less than 3 MP. Some digital video cameras shoot 4K (4 times res of 1080p), such as the $30,000 RED used for Harry Potter. Also HD video is wider than photos. From Geometry, we know the square to have the most area with a set perimeter. Thus, not as many MP as still cameras.&lt;/p&gt;
&lt;p&gt;(Compare a 199&quot; x 1&quot; box to a 100&quot; x100&quot; box. Same perimeter, very different area)&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Flash Design Work for County]]></title><description><![CDATA[This is a sample of a flash web project I created for the County Leadership…]]></description><link>https://brandonkalinowski.com/flash-design-work-for-county</link><guid isPermaLink="false">https://brandonkalinowski.com/flash-design-work-for-county</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 18 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a sample of a flash web project I created for the County Leadership Enrichment Program&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/2ndrlMkWTyQ42c4ok4OkCm/1e18b2359376890063c2780a1847812e/WebProject.png&quot; alt=&quot;Contra Costa County Web Project&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Grandpa Collage]]></title><description><![CDATA[Grandpa-Collage I created this collage when I heard the sad news. Grandpa was…]]></description><link>https://brandonkalinowski.com/grandpa-collage</link><guid isPermaLink="false">https://brandonkalinowski.com/grandpa-collage</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 18 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/5k0i1rkgkEqoukikAu8cA2/738f7430cb2e28285ada800055f8441c/Grandpa-Collage.jpg&quot; alt=&quot;Grandpa-Collage&quot;&gt;&lt;/p&gt;
&lt;p&gt;I created this collage when I heard the sad news. Grandpa was dying in the hospital and we were making cards for him. I wanted to do something special, so I designed a photo shape collage.&lt;/p&gt;
&lt;p&gt;This image you are viewing on your computer screen cannot be compared to the 20 by 30 poster I printed to Costco. It was displayed on the hospital wall and then later at the funeral. This project was very difficult for me not because of the technicality, but because of all the great pictures I had to sort through. I think the idea is rather controversial because everyone is told that &quot;a picture is worth a thousand words&quot;. Here, 390 pictures make up only four very important words. The burning candles in the background is a picture I took in Peru. That is my Grandma&apos;s favorite part of the poster.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Clown of God Script]]></title><description><![CDATA[Introducing the script of our latest and greatest project: "The Clown of God…]]></description><link>https://brandonkalinowski.com/clown-of-god-script</link><guid isPermaLink="false">https://brandonkalinowski.com/clown-of-god-script</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 18 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Introducing the script of our latest and greatest project: &quot;The Clown of God&quot;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/5jUWwqwF2gAU8SO26qGKGC/f156a20dd08e511d96ab5c049b7aa6b0/Blocking-Script.png&quot; alt=&quot;Blocking-Script&quot;&gt;&lt;/p&gt;
&lt;p&gt;The only video on it is a 1950&apos;s stick figure cartoon, so the idea is new and original. This is a wonderful old story about a jester who has great talent in entertaining people but struggles to find his place in the world. He gives his last performance to one spectator: Baby Jesus. This script will be explained in the upcoming keynote previously announced.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Editor Note 2018:&lt;/strong&gt; Script link was dead and has been removed&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Yearbook Submission]]></title><description><![CDATA[This is a logo designed for a high school. Created with Photoshop. Hope you like…]]></description><link>https://brandonkalinowski.com/yearbook-submission</link><guid isPermaLink="false">https://brandonkalinowski.com/yearbook-submission</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Tue, 18 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a logo designed for a high school. Created with Photoshop. Hope you like it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;//images.ctfassets.net/2y6n0yr6o0ty/525wpWHJcICQ4uM4Uce4Wk/9987c6d3125e5ccad965ad45447f2acb/Buckingham1.jpg&quot; alt=&quot;Buckingham Logo&quot;&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Welcome to the Blog]]></title><description><![CDATA[The website www.PopularWebz.com brandonkalinowski.com is now officially online…]]></description><link>https://brandonkalinowski.com/welcome-to-the-blog</link><guid isPermaLink="false">https://brandonkalinowski.com/welcome-to-the-blog</guid><dc:creator><![CDATA[Brandon Kalinowski]]></dc:creator><pubDate>Mon, 17 Jan 2011 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The website &lt;del&gt;&lt;a href=&quot;http://www.PopularWebz.com&quot;&gt;www.PopularWebz.com&lt;/a&gt;&lt;/del&gt; &lt;a href=&quot;https://brandonkalinowski.com&quot;&gt;brandonkalinowski.com&lt;/a&gt; is now officially online today: January 17, 2011.&lt;/p&gt;
&lt;p&gt;This is one place where I will put everything that the world may be interested in (as it relates to this site&apos;s theme). I am a graphic and web designer, photographer, and video producer. This portfolio will be pretty awesome. Check back from time-to-time for exciting updates and new posts. You are free to comment as you wish.&lt;/p&gt;</content:encoded></item></channel></rss>