<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Christian Wilkie</title>
    <description></description>
    <link>https://www.christianwilkie.com/</link>
    <atom:link href="https://www.christianwilkie.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 31 May 2026 19:12:39 +0000</pubDate>
    <lastBuildDate>Sun, 31 May 2026 19:12:39 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Setting up Remote Webstorm in Ubuntu 20.10</title>
        <description>&lt;h2 id=&quot;why-should-i-care-about-this&quot;&gt;Why should I care about this?&lt;/h2&gt;
&lt;p&gt;This lets you run a GUI program on a server but view it on your client PC. My situation is: I have an older/terrible laptop, but I have a higher powered Linux server that I have access to. I can use X11 forwarding to run computationally intensive stuff on my server so it runs faster and frees up resources on my laptop. But I still get the benefit of being able to interact with the GUI on my laptop. Mostly I’ve been using it to run &lt;a href=&quot;https://www.jetbrains.com/webstorm/&quot;&gt;Jetbrains Webstorm&lt;/a&gt; on my server for Angular/React development.&lt;/p&gt;

&lt;h2 id=&quot;pre-reqs&quot;&gt;Pre-reqs&lt;/h2&gt;
&lt;p&gt;First install Webstorm on your server (apt/whatever). I went with the snap:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo snap install webstorm --classic&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Make sure you have a jdk installed, ex:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo apt install openjdk-15-jdk&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;(note: you can search for the latest with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apt search openjdk.*-jdk&lt;/code&gt;)&lt;/p&gt;

&lt;h2 id=&quot;connecting&quot;&gt;Connecting&lt;/h2&gt;

&lt;p&gt;Connect to your remote Ubuntu server using the “-X” ssh flag:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh -X hp.lan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Success (hopefully)!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/2021/04/17/webstorm.png&quot; alt=&quot;Webstorm Over SSH&quot; title=&quot;Webstorm over SSH&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;/h2&gt;

&lt;h3 id=&quot;server-side&quot;&gt;Server Side:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;You can try running “xeyes” to narrow down the problem to your X11Forwarding or the app itself&lt;/li&gt;
  &lt;li&gt;Make sure /etc/ssh/sshd_config has “X11Forwarding yes”&lt;/li&gt;
  &lt;li&gt;Make sure you see something when you do “echo $DISPLAY” from your active ssh session&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;client-side&quot;&gt;Client Side:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Make sure you connect with the -X flag (or set X11 forwarding as default w/ “ForwardX11 yes” in ~/.ssh/config)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;references&quot;&gt;References:&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely&quot;&gt;https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://snapcraft.io/webstorm&quot;&gt;https://snapcraft.io/webstorm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Sat, 17 Apr 2021 22:55:00 +0000</pubDate>
        <link>https://www.christianwilkie.com/posts/2021/04/17/setting-up-remote-webstorm-in-ubuntu-20-10.html</link>
        <guid isPermaLink="true">https://www.christianwilkie.com/posts/2021/04/17/setting-up-remote-webstorm-in-ubuntu-20-10.html</guid>
        
        
        <category>posts</category>
        
      </item>
    
      <item>
        <title>Raspberry Pi - Test SD Card Speed</title>
        <description>&lt;p&gt;Recently I was messing around with my Raspberry Pi 4 again, and I was looking to test the read/write speed of the USB stick I have it booting off of now. It’s a generic, unbranded 16gb USB stick that I have plugged into one of the USB 3.0 ports, running Raspbian.&lt;/p&gt;

&lt;p&gt;Here’s an easy way to do it if you’re in a similar position (works for SD card, SSD, etc too):&lt;/p&gt;

&lt;p&gt;First we test the write speed by writing 500MiB:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dd if=/dev/zero of=~/test.tmp bs=500K count=1024 oflag=dsync&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You should see something like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1024+0 records in
1024+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 121.854 s, 4.3 MB/s
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To test the read speed, we’re going to read the file that we just wrote - but first we need to discard the disk caches (requires sudo):&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Don’t skip this! Otherwise you might get inaccurate results like 500mb/s&lt;/p&gt;

&lt;p&gt;Next test the read speed:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dd if=~/test.tmp of=/dev/null bs=500K count=1024&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You should see something like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1024+0 records in
1024+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 19.2854 s, 27.2 MB/s
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you want a simple script to run, here’s a version of the above that can be ran to sudo, writes out the file to /tmp, and cleans up after itself: &lt;a href=&quot;https://gist.github.com/ChristianWilkie/b450783afea4e666fb2e1c16e34e7e1d&quot;&gt;https://gist.github.com/ChristianWilkie/b450783afea4e666fb2e1c16e34e7e1d&lt;/a&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;chmod +x ./speed.sh
sudo ./speed.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;speed.sh:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;#!/bin/bash
# Tests Raspberry Pi disk read/write speed

if [ &quot;$EUID&quot; -ne 0 ]
  then echo &quot;Please run as root&quot;
  exit
fi
echo &quot;=== Performing Write Speed Test ===&quot;
dd if=/dev/zero of=/tmp/test.tmp bs=500K count=1024 oflag=dsync
sync; echo 3 | tee /proc/sys/vm/drop_caches
echo &quot;=== Performing Read Speed Test ===&quot;
dd if=/tmp/test.tmp of=/dev/null bs=500K count=1024
rm -rf /tmp/test.tmp
echo &quot;=== Speed Test Complete ===&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Output for my USB drive:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;chris@raspberrypi:~$ sudo ./speed.sh 
=== Performing Write Speed Test ===
1024+0 records in
1024+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 107.547 s, 4.9 MB/s
3
=== Performing Read Speed Test ===
1024+0 records in
1024+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 23.0081 s, 22.8 MB/s
=== Speed Test Complete ===
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Comparing it with the output for my SD Card (SanDisk 128GB Ultra C10 A1):&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;chris@raspberrypi:~$ sudo ./speed.sh 
=== Performing Write Speed Test ===
1024+0 records in
1024+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 32.9342 s, 15.9 MB/s
3
=== Performing Read Speed Test ===
1024+0 records in
1024+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 11.9345 s, 43.9 MB/s
=== Speed Test Complete ===
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Turns out that USB drive probably isn’t too great for running the OS compared to the SD card.&lt;/p&gt;

&lt;p&gt;I also had a very old SSD lying around so I thought I’d test that out. It’s using a generic USB-&amp;gt;SATA cable, it shows up in lsusb as:
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bus 003 Device 038: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge&lt;/code&gt;
and using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo smartctl -a /dev/sde&lt;/code&gt; some of the disk information shows up as:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Model Family:     Crucial/Micron RealSSD m4/C400
Device Model:     M4-CT128M4SSD2
Firmware Version: 000F
User Capacity:    128,035,676,160 bytes [128 GB]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I tried using the gnome-disk-utility built in to my desktop’s Ubuntu to check the drive before trying it in my Raspberry Pi:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/2021/01/23/m4-ssd-disk-util-benchmark.png&quot; alt=&quot;gnome-disk-utility results for Crucial M4 128GB drive&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Crucial M4 128GB speed test results:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;=== Performing Write Speed Test ===
1024+0 records in
1024+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 14.6738 s, 35.7 MB/s
3
=== Performing Read Speed Test ===
1024+0 records in
1024+0 records out
524288000 bytes (524 MB, 500 MiB) copied, 1.61269 s, 325 MB/s
=== Speed Test Complete ===
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So, actually the SSD performs really, really well! Kinda cool I was able to get some new use out of this otherwise unused SSD :)&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.thomas-krenn.com/en/wiki/Linux_I/O_Performance_Tests_using_dd&quot;&gt;https://www.thomas-krenn.com/en/wiki/Linux_I/O_Performance_Tests_using_dd&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://elinux.org/RPi_SD_cards#SD_card_performance&quot;&gt;https://elinux.org/RPi_SD_cards#SD_card_performance&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.raspberrypi.org/forums/viewtopic.php?t=31925&quot;&gt;https://www.raspberrypi.org/forums/viewtopic.php?t=31925&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</description>
        <pubDate>Sat, 23 Jan 2021 18:59:00 +0000</pubDate>
        <link>https://www.christianwilkie.com/posts/2021/01/23/raspberry-pi-test-sd-card-speed.html</link>
        <guid isPermaLink="true">https://www.christianwilkie.com/posts/2021/01/23/raspberry-pi-test-sd-card-speed.html</guid>
        
        
        <category>posts</category>
        
      </item>
    
      <item>
        <title>Downloading Android APKs from your phone</title>
        <description>&lt;p&gt;Some key commands:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;adb shell pm list packages
adb shell pm path &amp;lt;package from above&amp;gt;
adb pull &amp;lt;path from above&amp;gt; &amp;lt;local path to download to&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here’s an example applied to Neko Atsume, the premier internet cat game:&lt;/p&gt;

&lt;div class=&quot;language-console highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;C:\Users\chris&amp;gt;&lt;/span&gt;adb shell pm list packages | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;neko
&lt;span class=&quot;go&quot;&gt;package:jp.co.hit_point.nekoatsume

&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;C:\Users\chris&amp;gt;&lt;/span&gt;adb shell pm path jp.co.hit_point.nekoatsume
&lt;span class=&quot;go&quot;&gt;package:/data/app/jp.co.hit_point.nekoatsume-n4XAV9PPJIzObbfURWHm2A==/base.apk

&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;C:\Users\chris&amp;gt;&lt;/span&gt;adb pull /data/app/jp.co.hit_point.nekoatsume-n4XAV9PPJIzObbfURWHm2A&lt;span class=&quot;o&quot;&gt;==&lt;/span&gt;/base.apk nekoatsume.apk
&lt;span class=&quot;go&quot;&gt;/data/app/jp.co.hit_point.nekoatsume-n4XAV9PPJIzObbfURWHm2...e.apk: 1 file pulled. 14.1 MB/s (19756023 bytes in 1.341s)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Happy Hacking 😺&lt;/p&gt;
</description>
        <pubDate>Sat, 02 Mar 2019 04:52:00 +0000</pubDate>
        <link>https://www.christianwilkie.com/posts/2019/03/02/downloading-android-apks-from-your-phone.html</link>
        <guid isPermaLink="true">https://www.christianwilkie.com/posts/2019/03/02/downloading-android-apks-from-your-phone.html</guid>
        
        
        <category>posts</category>
        
      </item>
    
      <item>
        <title>Unlocking Nexus 7 2012 Bootloader</title>
        <description>&lt;ol&gt;
  &lt;li&gt;Install the latest android sdk from &lt;a href=&quot;https://developer.android.com/studio/index.html#downloads&quot;&gt;https://developer.android.com/studio/index.html#downloads&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Install the google usb driver from &lt;a href=&quot;https://developer.android.com/studio/run/win-usb.html&quot;&gt;https://developer.android.com/studio/run/win-usb.html&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;On your Nexus 7: enable developer settings by going to “Settings”, “About phone”, scrolling down to the “Build number” and tapping it 7 times. Next go to “Settings”, “Developer Options”, “USB debugging” and enable it.&lt;/li&gt;
  &lt;li&gt;Connect your Nexus 7 to your PC and click “Ok” on the “Allow USB debugging?” prompt that pops up on your Nexus 7.&lt;/li&gt;
  &lt;li&gt;Open a command prompt in the platform-tools directory of your android sdk. Type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;adb devices&lt;/code&gt; and you should see your Nexus 7 listed.&lt;/li&gt;
  &lt;li&gt;Enter &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;adb reboot bootloader&lt;/code&gt; to boot into the bootloader.&lt;/li&gt;
  &lt;li&gt;Type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fastboot oem unlock&lt;/code&gt; and press enter.&lt;/li&gt;
  &lt;li&gt;A menu will popup on the Nexus 7 - select “yes” with the volume up/down and power buttons. On the bottom of the screen you should see lock state: unlocked!&lt;/li&gt;
&lt;/ol&gt;
</description>
        <pubDate>Sun, 29 Oct 2017 03:38:35 +0000</pubDate>
        <link>https://www.christianwilkie.com/posts/2017/10/29/unlocking-nexus-7-2012-bootloader.html</link>
        <guid isPermaLink="true">https://www.christianwilkie.com/posts/2017/10/29/unlocking-nexus-7-2012-bootloader.html</guid>
        
        
        <category>posts</category>
        
      </item>
    
      <item>
        <title>SD Card Formatting Troubles</title>
        <description>&lt;p&gt;Recently I was playing with my Raspberry Pi that was collecting dust in my closet and encountered a problem when trying to format the SD card. I downloaded the official SD formatter tool from https://www.sdcard.org/downloads/formatter_4/eula_windows/ but kept getting this error when trying to format my SD card: “The Memory Card is write-protected. Please release the write protect switch.”. I tried toggling the write protect switch, ejecting the drive, etc but none of that seemed to help. After some searching I came across some instructions on using diskpart in Windows that finally fixed the issue. Here’s what I did:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Open run and type diskpart&lt;/li&gt;
  &lt;li&gt;type LIST DISK&lt;/li&gt;
  &lt;li&gt;identify the drive number of your SD card (for instance, if you have a 16GB card look for the disk that is ~14GB)&lt;/li&gt;
  &lt;li&gt;type SELECT DISK X (where X is the disk number from the previous step)&lt;/li&gt;
  &lt;li&gt;type ATTRIBUTES DISK CLEAR READONLY&lt;/li&gt;
  &lt;li&gt;now type exit and then eject your sd card and re-insert it into your PC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/2016/05/03/diskpart.png&quot; alt=&quot;Diskpart utility window&quot; title=&quot;Diskpart utility window&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After doing the above with diskpart I was finally able to format my SD card! Hope this is helpful to someone else with the same problem :)&lt;/p&gt;
</description>
        <pubDate>Tue, 03 May 2016 22:53:24 +0000</pubDate>
        <link>https://www.christianwilkie.com/posts/2016/05/03/sd-card-formatting-troubles.html</link>
        <guid isPermaLink="true">https://www.christianwilkie.com/posts/2016/05/03/sd-card-formatting-troubles.html</guid>
        
        
        <category>posts</category>
        
      </item>
    
      <item>
        <title>Setting up a free website using Jekyll and GitHub pages</title>
        <description>&lt;p&gt;Recently I was able to cut down on some of my site hosting costs by moving to &lt;a href=&quot;https://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt;,
a free way to host public websites of static content. It won’t work for something like WordPress where you need to run
something server side, but it works great for plain .HTML pages for instance. Also, by using
&lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt; you can dynamically generate static .HTML pages for your site, allowing you to do some
cool stuff like generate blog posts from &lt;a href=&quot;https://daringfireball.net/projects/markdown/syntax&quot;&gt;easy-to-write markdown&lt;/a&gt;
files.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://help.github.com/articles/using-jekyll-with-pages/&quot;&gt;Here’s how you can get started with your own GitHub site&lt;/a&gt;,
summarized below:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Install &lt;a href=&quot;https://www.ruby-lang.org/en/downloads/&quot;&gt;the latest version of ruby&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Open the command prompt and run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gem install bundler&lt;/code&gt; to install Bundler, a ruby package manager.&lt;/li&gt;
  &lt;li&gt;Save &lt;a href=&quot;https://gist.github.com/ChristianWilkie/5b54228e5a101a3a793b#file-gemfile&quot;&gt;this file&lt;/a&gt; as “Gemfile”
(no file extension) in the folder where you want to build your GitHub site (note: if the gist link doesn’t work, check
&lt;a href=&quot;https://help.github.com/articles/using-jekyll-with-pages/#installing-jekyll&quot;&gt;here&lt;/a&gt; for instructions on making that
 file.&lt;/li&gt;
  &lt;li&gt;Open a command prompt from within the folder for the previous step and type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle install&lt;/code&gt;. This should install
Jekyll and any needed dependencies.&lt;/li&gt;
  &lt;li&gt;Execute &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec jekyll new . --force&lt;/code&gt; into the command prompt inside your site folder. This will create a simple
base template to build your site off of.&lt;/li&gt;
  &lt;li&gt;Lastly, execute &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec jekyll serve&lt;/code&gt; into the same command prompt and your site should be dynamically
generated and available for viewing at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://localhost:4000&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, whenever you want to start working on your site, just start Jekyll by typing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bundle exec jekyll serve&lt;/code&gt; and then
begin editing! By default Jekyll will watch your site folder for changes and automatically recreate site content as you
save your files.&lt;/p&gt;

&lt;p&gt;To upload your site to GitHub, do the following (summarized below):&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/new&quot;&gt;Create a new repository&lt;/a&gt; called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;username.github.io&lt;/code&gt;, where &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;username&lt;/code&gt; is replaced by your
GitHub username.&lt;/li&gt;
  &lt;li&gt;Init a new Git repository by typing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git init .&lt;/code&gt; in a command window in your site’s root directory.&lt;/li&gt;
  &lt;li&gt;Type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git remote add origin git@github.com:username/username.github.io.git&lt;/code&gt;, replacing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;username&lt;/code&gt; with your GitHub
username as needed.&lt;/li&gt;
  &lt;li&gt;Type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git push -u origin master&lt;/code&gt; to push your site to GitHub&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your site should then appear on GitHub at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://username.github.io&lt;/code&gt; after a short time (maybe 10-15 minutes for it
to be generated for the first time).&lt;/p&gt;

&lt;p&gt;To learn more about using Jekyll itself, check out the &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;official Jekyll site&lt;/a&gt;, and especially the
 subpage on &lt;a href=&quot;https://jekyllrb.com/docs/posts/&quot;&gt;writing posts&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sat, 20 Dec 2014 22:18:00 +0000</pubDate>
        <link>https://www.christianwilkie.com/posts/2014/12/20/setting-up-a-free-website-using-jekyll-and-github-pages.html</link>
        <guid isPermaLink="true">https://www.christianwilkie.com/posts/2014/12/20/setting-up-a-free-website-using-jekyll-and-github-pages.html</guid>
        
        
        <category>posts</category>
        
      </item>
    
  </channel>
</rss>
