<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    
    <title>Black-Pixel.Net</title>
    <description>Black-Pixel.Net</description>
    <link>https://black-pixel.net/</link>
    
    <language>en</language>
    <copyright>Copyright 2026, Calvin Tran</copyright>
    <lastBuildDate>Sat, 25 Apr 2026 00:00:00 +0000</lastBuildDate>
    <generator>Hugo - gohugo.io</generator>
    <docs>http://cyber.harvard.edu/rss/rss.html</docs>
    <atom:link href="https://black-pixel.net//atom.xml" rel="self" type="application/atom+xml"/>
    
    
    <item>
      <title>Project Home Server Part 2: Initial ZFS setup for Nextcloud and Virtiofs for SMB</title>
      <link>https://black-pixel.net/posts/2026-04-18-project-proxmox-home-server-part-2-initial-zfs-setup-for-nextcloud-and-virtiofs-for-smb/</link>
      <description>&lt;p&gt;In &lt;a href=&#34;https://black-pixel.net/posts/2026-04-18-project-proxmox-home-server-part-1-hardware-and-initial-setup/&#34;&gt;Part 1&lt;/a&gt; of this series, I covered the hardware selection and initial setup of my Proxmox home server, including the choice of a &lt;strong&gt;Ryzen 5 PRO 5650G&lt;/strong&gt; with ECC RAM to ensure data integrity for my Nextcloud instance. Now that the hardware is ready, it&amp;rsquo;s time to focus on the &lt;strong&gt;storage layer&lt;/strong&gt;. I decided to run Nextcloud on a dedicated ZFS mirror pool and share a data disk with backups and media via a Samba VM.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;why-zfs&#34;&gt;Why ZFS?&lt;/h2&gt;
&lt;p&gt;I decided to switch to &lt;strong&gt;ZFS&lt;/strong&gt; mirror for the following reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data Integrity&lt;/strong&gt;: ZFS uses checksums to detect and correct silent data corruption, which is critical for storing irreplaceable files like photos and videos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redundancy&lt;/strong&gt;: A &lt;strong&gt;mirror (RAID 1)&lt;/strong&gt; setup with two 4TB SSDs provides protection against disk failure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Encryption&lt;/strong&gt;: Native encryption ensures that my data is secure at rest.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;step-1-identify-disks-by-wwn&#34;&gt;Step 1: Identify Disks by WWN&lt;/h2&gt;
&lt;p&gt;To ensure persistent device naming, I used the &lt;strong&gt;World Wide Name (WWN)&lt;/strong&gt; of each disk. This avoids issues with device names like &lt;code&gt;/dev/sda&lt;/code&gt; or &lt;code&gt;/dev/sdb&lt;/code&gt; changing after a reboot.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls -l /dev/disk/by-id/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;lrwxrwxrwx 1 root root  9 Apr 20 14:17 wwn-0x500a0751e9a33671 -&amp;gt; ../../sdb
lrwxrwxrwx 1 root root  9 Apr 20 14:17 wwn-0x500a0751e9a337e0 -&amp;gt; ../../sda
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I chose these two &lt;strong&gt;4TB SSDs&lt;/strong&gt; (Crucial BX500) for the mirror. Using &lt;code&gt;/dev/disk/by-id/&lt;/code&gt; ensures that ZFS will always reference the correct physical disks, regardless of their &lt;code&gt;/dev/sdX&lt;/code&gt; assignment.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;step-2-create-an-encrypted-zfs-mirror&#34;&gt;Step 2: Create an Encrypted ZFS Mirror&lt;/h2&gt;
&lt;p&gt;Proxmox&amp;rsquo;s web GUI does not support encrypted ZFS pools, so I created the pool via the &lt;strong&gt;command line&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zpool create -O &lt;span style=&#34;color:#111&#34;&gt;encryption&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;on -O &lt;span style=&#34;color:#111&#34;&gt;keylocation&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;prompt -O &lt;span style=&#34;color:#111&#34;&gt;keyformat&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;passphrase -O &lt;span style=&#34;color:#111&#34;&gt;mountpoint&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/nextcloud_zfs_mirror -O &lt;span style=&#34;color:#111&#34;&gt;compression&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;lz4 nextcloud_zfs_mirror mirror /dev/disk/by-id/wwn-0x500a0751e9a33671 /dev/disk/by-id/wwn-0x500a0751e9a337e0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;explanation-of-options&#34;&gt;Explanation of Options:&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-O encryption=on&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enables native ZFS encryption.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-O keylocation=prompt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prompts for a passphrase on pool import.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-O keyformat=passphrase&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Uses a passphrase (instead of a key file) for encryption.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-O mountpoint=/nextcloud_zfs_mirror&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets the default mount point for the pool.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-O compression=lz4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Enables transparent compression to save space.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mirror&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Configures the pool as a RAID 1 mirror.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you prefer to use a &lt;strong&gt;key file&lt;/strong&gt; instead of a passphrase, replace &lt;code&gt;keylocation=prompt&lt;/code&gt; with &lt;code&gt;keylocation=file:///etc/zfs/keys/nextcloud_zfs_mirror.key&lt;/code&gt; and create the key file securely.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;step-3-verify-the-zfs-pool&#34;&gt;Step 3: Verify the ZFS Pool&lt;/h2&gt;
&lt;p&gt;After creating the pool, I verified its status:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zpool status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  pool: nextcloud_zfs_mirror
 state: ONLINE
config:

        NAME                        STATE     READ WRITE CKSUM
        nextcloud_zfs_mirror        ONLINE       0     0     0
          mirror-0                  ONLINE       0     0     0
            wwn-0x500a0751e9a33671  ONLINE       0     0     0
            wwn-0x500a0751e9a337e0  ONLINE       0     0     0

errors: No known data errors
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The pool is &lt;strong&gt;ONLINE&lt;/strong&gt; and both disks are healthy. No errors detected.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;step-4-integrate-the-zfs-pool-into-proxmox&#34;&gt;Step 4: Integrate the ZFS Pool into Proxmox&lt;/h2&gt;
&lt;p&gt;To make the ZFS pool available as a storage backend in Proxmox:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvesm add zfspool nextcloud_zfs_mirror --pool nextcloud_zfs_mirror
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This allows you to &lt;strong&gt;create VMs or containers&lt;/strong&gt; that use the ZFS pool for storage. In the Proxmox GUI, the pool will appear as an option when adding a new disk to a VM.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;step-5-verify-available-space&#34;&gt;Step 5: Verify Available Space&lt;/h2&gt;
&lt;p&gt;To check the available space in the pool:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zfs list -o name,used,avail,quota,refquota
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Example Output:&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NAME                     USED  AVAIL  QUOTA  REFQUOTA
nextcloud_zfs_mirror     128K  3.62T    -        -
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This confirms that the pool is ready to use, with &lt;strong&gt;~3.6TB of available space&lt;/strong&gt; (after accounting for ZFS overhead and mirroring).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;step-6-schedule-regular-scrubs&#34;&gt;Step 6: Schedule Regular Scrubs&lt;/h2&gt;
&lt;p&gt;To ensure data integrity, I scheduled a &lt;strong&gt;monthly scrub&lt;/strong&gt; using a cron job:&lt;/p&gt;
&lt;p&gt;crontab -e&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; * * /sbin/zpool scrub nextcloud_zfs_mirror
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;step-7-init-script-to-decrypt-to-pool-and-mount-it&#34;&gt;Step 7: Init script to decrypt to pool and mount it&lt;/h2&gt;
&lt;p&gt;Because the ZFS pool for Nextcloud is encrypted, I manually decrypt it after a Proxmox reboot. The following steps are required:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zfs load-key nextcloud_zfs_mirror
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;zfs mount nextcloud_zfs_mirror
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;adding-external-storage-to-a-smb-vm-via-virtiofs&#34;&gt;Adding External Storage to a SMB VM via Virtiofs&lt;/h2&gt;
&lt;p&gt;To access files stored on a HDD via a SMB VM, I mounted the HDD on the Proxmox host and added it as a &lt;strong&gt;Virtiofs&lt;/strong&gt; share:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mount the HDD on the Proxmox host:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p /data_disk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mount /dev/sdX1 /data_disk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;(Replace &lt;code&gt;/dev/sdX1&lt;/code&gt; with the actual device name of your external HDD.)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add the directory as a Virtiofs share in Proxmox:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Datacenter → Storage → Add → Directory&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the mounted directory (&lt;code&gt;/data_disk&lt;/code&gt;) and save it as a storage location.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Add Virtiofs to the VM:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to the VM’s &lt;strong&gt;Hardware&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add → Virtiofs&lt;/strong&gt; and select the previously created directory mapping.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install and configure Virtiofs in the VM:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install the required package inside the VM:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt install virtiofsd  &lt;span style=&#34;color:#75715e&#34;&gt;# For Debian/Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Mount the Virtiofs share inside the VM:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p /data_disk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mount -t virtiofs data_disk /data_disk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;(Replace &lt;code&gt;data_disk&lt;/code&gt; with the tag you assigned in Proxmox.)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This setup allows the VM to access the HDD as if it were a local filesystem. I also needed to change the ownership of the files to my samba share user.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/posts/2026-04-18-project-proxmox-home-server-part-2-initial-zfs-setup-for-nextcloud-and-virtiofs-for-smb/</guid>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
    </item>
    
    <item>
      <title>Project Proxmox Home Server Part 1: Hardware and Initial Setup</title>
      <link>https://black-pixel.net/posts/2026-04-18-project-proxmox-home-server-part-1-hardware-and-initial-setup/</link>
      <description>&lt;p&gt;I&amp;rsquo;ve decided to build a more sophisticated setup for my home server to replace my existing mini PC running Proxmox and document the process in this blog. In this first post, I will dive into the hardware I have selected.&lt;/p&gt;
&lt;h2 id=&#34;hardware-selection&#34;&gt;Hardware Selection&lt;/h2&gt;
&lt;p&gt;Here is the hardware I have picked and what I paid for it (to cry about it later :D):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;AMD Ryzen 5 PRO 5650G 3.9GHz 16MB L3&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;334.58 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU Cooler&lt;/td&gt;
&lt;td&gt;be quiet! Pure Rock Slim 2&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;23.90 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mainboard&lt;/td&gt;
&lt;td&gt;ASRock B550M Pro4&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;88.90 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;2x Hynix 32GB DDR4 2933 MT/s PC4-2933Y-E UDIMM ECC&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;289 € each&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;2x Crucial BX500 4TB 3D NAND SATA 2.5-Inch Internal SSD&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;380 € each&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Case&lt;/td&gt;
&lt;td&gt;Chieftec CI-02B-OP&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;39.90 €&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power Supply&lt;/td&gt;
&lt;td&gt;be quiet! System Power 11 450W ATX3.1&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;49.90 €&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I gave my notebook a bigger SSD (Lexar EQ790 2TB SSD M.2 2280 PCIe Gen4x4 NVMe 1.4 for 230 €) and I&amp;rsquo;m using the old 1 TB SSD from my Thinkpad T14 as the system drive.&lt;/p&gt;
&lt;h2 id=&#34;why-ecc-ram&#34;&gt;Why ECC RAM?&lt;/h2&gt;
&lt;p&gt;I decided to use ECC RAM because I will be running Nextcloud with important personal data (photos, videos, etc.), and I want to reduce the risk of file corruption. Because of the current RAM shortage, I went with DDR4 instead of DDR5, as I could still find some more or less affordable UDIMM ECC RAM.&lt;/p&gt;
&lt;p&gt;From there, I selected a mainboard and CPU that support ECC RAM, which was not as easy as I had hoped, but I found some reports on working setups. I picked a Ryzen 5 PRO CPU because I wanted a CPU with an APU, and only the PRO versions support ECC RAM.&lt;/p&gt;
&lt;h2 id=&#34;assembly&#34;&gt;Assembly&lt;/h2&gt;
&lt;p&gt;Here are some pictures of the assembly:&lt;/p&gt;
&lt;a href=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware1.jpg&#34;&gt;
  &lt;img src=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware1.jpg&#34; alt=&#34;Assembly Step 1&#34; style=&#34;width:200px;&#34;/&gt;
&lt;/a&gt;
&lt;a href=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware2.jpg&#34;&gt;
  &lt;img src=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware2.jpg&#34; alt=&#34;Assembly Step 2&#34; style=&#34;width:200px;&#34;/&gt;
&lt;/a&gt;
&lt;a href=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware3.jpg&#34;&gt;
  &lt;img src=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware3.jpg&#34; alt=&#34;Assembly Step 3&#34; style=&#34;width:200px;&#34;/&gt;
&lt;/a&gt;
&lt;a href=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware4.jpg&#34;&gt;
  &lt;img src=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware4.jpg&#34; alt=&#34;Assembly Step 4&#34; style=&#34;width:200px;&#34;/&gt;
&lt;/a&gt;
&lt;a href=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware5.jpg&#34;&gt;
  &lt;img src=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware5.jpg&#34; alt=&#34;Assembly Step 5&#34; style=&#34;width:200px;&#34;/&gt;
&lt;/a&gt;
&lt;a href=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware6.jpg&#34;&gt;
  &lt;img src=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware6.jpg&#34; alt=&#34;Assembly Step 6&#34; style=&#34;width:200px;&#34;/&gt;
&lt;/a&gt;
&lt;a href=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware7.jpg&#34;&gt;
  &lt;img src=&#34;https://black-pixel.net/posts/images/2026-04-18-Project-Proxmox-Home-Server-Part-1-Hardware-and-Initial-Setup/hardware7.jpg&#34; alt=&#34;Assembly Step 7&#34; style=&#34;width:200px;&#34;/&gt;
&lt;/a&gt;
&lt;h2 id=&#34;ecc-verification&#34;&gt;ECC Verification&lt;/h2&gt;
&lt;p&gt;I have used Memtest86 to verify the ECC RAM is correctly detected. The Pro version supports a feature to inject errors so you can test whether these errors are detected and corrected. At the time of writing, I don&amp;rsquo;t own a Pro version, and I just trust it works as intended.&lt;/p&gt;
&lt;p&gt;To verify ECC in Linux I booted into Proxmox and first used &lt;code&gt;dmidecode&lt;/code&gt; to check the hardware support:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@proxmox:~# dmidecode &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; grep -A5 &lt;span style=&#34;color:#d88200&#34;&gt;&amp;#34;Physical Memory Array\|Memory Device\|Error Correction Type&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        **Error Correction Type: Multi-bit ECC**
        Maximum Capacity: 128 GB
        Error Information Handle: 0x000F
        Number Of Devices: 4

Handle 0x0011, DMI type 19, 31 bytes
--
        **Error Correction Type: Multi-bit ECC**
        System Type: Unified
        Associativity: 8-way Set-associative

Handle 0x0013, DMI type 7, 27 bytes
Cache Information
--
        **Error Correction Type: Multi-bit ECC**
        System Type: Unified
        Associativity: 8-way Set-associative

--
Memory Device
        Array Handle: 0x0010
        Error Information Handle: 0x0016
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
--
Memory Device
        Array Handle: 0x0010
        Error Information Handle: 0x0018
        **Total Width: 72 bits**
        **Data Width: 64 bits**
        **Size: 32 GB**
--
Memory Device
        Array Handle: 0x0010
        Error Information Handle: 0x001B
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
--
Memory Device
        Array Handle: 0x0010
        Error Information Handle: 0x001D
        **Total Width: 72 bits**
        **Data Width: 64 bits**
        **Size: 32 GB**
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The output &lt;strong&gt;Error Correction Type: Multi-bit ECC&lt;/strong&gt; confirms that the motherboard and CPU support ECC. The output &lt;strong&gt;Total Width: 72 bits&lt;/strong&gt; and &lt;strong&gt;Data Width: 64 bits&lt;/strong&gt; indicates that the installed RAM modules are ECC-capable, as the 72-bit width includes 64 bits for data and 8 bits for ECC parity.&lt;/p&gt;
&lt;p&gt;Then I used &lt;code&gt;dmesg&lt;/code&gt; to verify Linux Kernel support:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@proxmox:~# dmesg &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; grep -i &lt;span style=&#34;color:#d88200&#34;&gt;&amp;#34;ECC\|EDAC\|mce&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[    0.426997] **EDAC MC: Ver: 3.0.0**
[    4.507588] **MCE: In-kernel MCE decoding enabled.**
[    4.509209] **EDAC MC0: Giving out device to module amd64_edac controller F19h_M50h: DEV 0000:00:18.3 (INTERRUPT)**
[    4.509212] **EDAC amd64: F19h_M50h detected (node 0).**
[    4.509213] EDAC MC: UMC0 chip selects:
[    4.509215] **EDAC amd64: MC: 0:     0MB 1:     0MB**
[    4.509216] **EDAC amd64: MC: 2: 16384MB 3: 16384MB**
[    4.509218] EDAC MC: UMC1 chip selects:
[    4.509219] **EDAC amd64: MC: 0:     0MB 1:     0MB**
[    4.509220] **EDAC amd64: MC: 2: 16384MB 3: 16384MB**
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The output shows that &lt;strong&gt;EDAC (Error Detection and Correction) is detected&lt;/strong&gt; and the correct driver for my CPU (&lt;strong&gt;F19h_M50h&lt;/strong&gt; for AMD Ryzen 5 PRO 5650G) is loaded. Additionally, the line &lt;strong&gt;EDAC MC: UMC chip selects: &amp;hellip;&lt;/strong&gt; confirms that ECC is actively monitoring the RAM for errors, meaning &lt;strong&gt;ECC is enabled and functional&lt;/strong&gt; on my system.&lt;/p&gt;
&lt;h3 id=&#34;setting-ctdp-to-45w-and-verifying-the-configuration&#34;&gt;Setting cTDP to 45W and verifying the configuration&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve specifically selected the AMD Ryzen 5 PRO 5650G not only because of the ECC RAM support, but also because of the ability to run it with 45W cTDP-down. To enable that I went to the BIOS and under &amp;ldquo;Advanced → AMD CBS → NBIO Common Options → SMU Common Options → System Configuration AM4&amp;rdquo; I have selected &amp;ldquo;45W COMMERCIAL and CONSUMER - SYSTEM CONFIG 2&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;To verify the new cTDP I booted into the Proxmox installation and built the tool &lt;a href=&#34;https://github.com/FlyGoat/RyzenAdj&#34;&gt;RyzenAdj&lt;/a&gt;. You can find the build instructions on the GitHub page, it is very straightforward. After successfully building it, I have verified the new cTDP:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@proxmox:~/RyzenAdj/build# ./ryzenadj --info
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;no compatible ryzen_smu kernel module found, fallback to /dev/mem
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CPU Family: Cezanne
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SMU BIOS Interface Version: &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Version: v0.18.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PM Table Version: &lt;span style=&#34;color:#ae81ff&#34;&gt;400005&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; Name                &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; Value      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; Parameter         &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; ------------------- &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; ---------- &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; ----------------- &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; STAPM LIMIT         &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; **45.000** &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; stapm-limit       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; STAPM VALUE         &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 7.644      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; PPT LIMIT FAST      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 60.800     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; fast-limit        &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; PPT VALUE FAST      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 8.366      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; PPT LIMIT SLOW      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 54.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; slow-limit        &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; PPT VALUE SLOW      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 6.693      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; StapmTimeConst      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 200.000    &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; stapm-time        &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; SlowPPTTimeConst    &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 5.000      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; slow-time         &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; PPT LIMIT APU       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 54.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; apu-slow-limit    &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; PPT VALUE APU       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 6.693      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; TDC LIMIT VDD       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 45.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; vrm-current       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; TDC VALUE VDD       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 2.899      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; TDC LIMIT SOC       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 40.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; vrmsoc-current    &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; TDC VALUE SOC       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 1.142      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; EDC LIMIT VDD       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 65.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; vrmmax-current    &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; EDC VALUE VDD       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 65.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; EDC LIMIT SOC       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 60.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; vrmsocmax-current &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; EDC VALUE SOC       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 2.710      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; THM LIMIT CORE      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 95.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; tctl-temp         &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; THM VALUE CORE      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 32.746     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; STT LIMIT APU       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 0.000      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; apu-skin-temp     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; STT VALUE APU       &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 0.000      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; STT LIMIT dGPU      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 0.000      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; dgpu-skin-temp    &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; STT VALUE dGPU      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 0.000      &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;                   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; CCLK Boost SETPOINT &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 50.000     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; power-saving /    &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; CCLK BUSY VALUE     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; 12.442     &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt; max-performance   &lt;span style=&#34;color:#111&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;creating-usb-drives-for-memtest86-and-proxmox&#34;&gt;Creating USB drives for Memtest86 and Proxmox&lt;/h2&gt;
&lt;p&gt;While creating the USB drives to boot Memtest86 and Proxmox, I stumbled across issues getting Memtest86 onto an old USB drive. &lt;code&gt;dd&lt;/code&gt;, which worked fine for the Proxmox drive, for some reason got stuck and seemed to run indefinitely on the second USB drive I wanted to use for Memtest86. I suspect I was simply too impatient to wait for the sync to finish, but I found what I consider a better way using &lt;code&gt;pv&lt;/code&gt; instead of &lt;code&gt;dd&lt;/code&gt; with the command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#272822;background-color:#fafafa;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pv memtest86-usb/memtest86-usb.img -Yo /dev/sda
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You get a progress bar, and the data is synced to the USB drive more regularly, so when it reaches 100%, the data has actually already been written to the drive. I had tried &lt;code&gt;dd&lt;/code&gt; with &lt;code&gt;conv=fdatasync&lt;/code&gt; but, unlike with &lt;code&gt;pv&lt;/code&gt;, there was no progress and I got &amp;ldquo;stuck&amp;rdquo; after all data had been copied according to the &lt;code&gt;dd&lt;/code&gt; progress.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/posts/2026-04-18-project-proxmox-home-server-part-1-hardware-and-initial-setup/</guid>
      <pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate>
    </item>
    
    <item>
      <title>Home Network Segmentation with Openwrt</title>
      <link>https://black-pixel.net/posts/2022-02-06-home-network-segmentation-with-openwrt/</link>
      <description>&lt;h2 id=&#34;outline&#34;&gt;Outline&lt;/h2&gt;
&lt;p&gt;The aim of this post is to show/document how to configure a simple network segmentation using OpenWRT and untagged VLANs. I&amp;rsquo;m using an OpenWRT router as well as two simple unmanaged switches. One switch is used for an &amp;ldquo;IOT&amp;rdquo; VLAN containing a FireTV Stick and a Hue Bridge. The other switch is used for a &amp;ldquo;SERVICES&amp;rdquo; VLAN containing my local DNS server (Pi-hole) and my NAS. One of the remaining four ports of the router will be bridged with the WiFi and the bridge will be assigned to a &amp;ldquo;WiFi&amp;rdquo; VLAN containing my Chromcast Ultra (attached to the LAN port), my Stadia Gamepad and my Smartphone. The the last port of the routed will be assigned to a &amp;ldquo;lan&amp;rdquo; VLAN for my notebook/docking station. &lt;strong&gt;Figure 1&lt;/strong&gt; displays this setup with different colors for each VLAN.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/netzplan.png&#34;
  alt=&#34;Switch VLAN configuration&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 1: Network architecture with different colors for each VLAN.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;configure-vlans&#34;&gt;Configure VLANs&lt;/h2&gt;
&lt;p&gt;The first step is to configure the VLANs. Go to Network-&amp;gt;Switch to configure your desired VLANs. First off make sure that &amp;ldquo;Enable VLAN functionality&amp;rdquo; is checked. In the VLAN matrix, the first column (CPU (eth0)) should be left to tagged (default).  All other elements should be set to &amp;ldquo;off&amp;rdquo; except for the VLANs you want your respective ports to be in. In my example, VLAN ID 1 is on LAN port 1, this is the &amp;ldquo;lan&amp;rdquo; VLAN for my notebook. VLAN 2 is the VLAN for the WAN port. VLAN 13 is my &amp;ldquo;IOT&amp;rdquo; VLAN and assigned to LAN port 3. VLAN 23 is the VLAN I want to use for WiFi as well as for LAN port 2. A device plugged in to LAN port 2 will be in the same VLAN as the devices that are connected via WiFi. If you want a VLAN just for WiFi you can set everything (except CPU (eth0)) to &amp;ldquo;off&amp;rdquo;. VLAN 33 is the &amp;ldquo;SERVICES&amp;rdquo; VLAN for my internal services (DNS, NAS, &amp;hellip;). I am using untagged VLANs because I only have unmanaged switches attached to the LAN ports which don&amp;rsquo;t support tagged VLANs. This means the distinction between the VLANs happens on the router only, the devices attached to the ports will know nothing of the VLANs. &lt;strong&gt;Figure 2&lt;/strong&gt; shows my configuration.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/switch_vlan_configuration.png&#34;
  alt=&#34;Switch VLAN configuration&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 2: VLAN configuration in Network-&amp;gt;Switch menu.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;configure-firewall-zones&#34;&gt;Configure Firewall Zones&lt;/h2&gt;
&lt;p&gt;After you have created your VLANs, you need to create firewall zones. Each VLAN needs to have its own firewall zone. In Network-&amp;gt;Firewall add a zone for each VLAN. In my example, the VLAN &amp;ldquo;lan&amp;rdquo; is my trusted internal VLAN. It has a configured forwarding to the &amp;ldquo;WAN&amp;rdquo; zone which means all outgoing (to the Internet) communication is forwarded through the &amp;ldquo;wan&amp;rdquo; zone. It&amp;rsquo;s Input chain is set to &amp;ldquo;accept&amp;rdquo; so it can talk to OpenWRT on any port.  &amp;ldquo;IOT_LAN&amp;rdquo;, &amp;ldquo;SERVICES&amp;rdquo; and &amp;ldquo;WIFI&amp;rdquo; are untrusted and are by default rejected, which means connections to the Internet are not automatically forwarded and systems in these VLANs will by default not be able to send packets to the Internet. Their input chain is set to rejected which means they are also by default not allowed to send packets to the OpenWRT device. &lt;strong&gt;Figure 3&lt;/strong&gt; shows my firewall zone configuration.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/firewall_zones_v2.png&#34;
  alt=&#34;Firewall zone configuration&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 3: My firewall zone configuration.
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;explanation-of-zoneforwardings-input-output-and-forward&#34;&gt;Explanation of Zone=&amp;gt;Forwardings, Input, Output and Forward&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zone=&amp;gt;Forwardings&lt;/strong&gt; - Traffic forwarding from zone a to zone b&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Input&lt;/strong&gt; - Traffic to the router from the current zone (used for dns/dhcp, openwrt webinterface, ssh, &amp;hellip;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output&lt;/strong&gt; - Traffic to the current zone from the router&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forward&lt;/strong&gt; - Traffic between networks in the current zone (only relevant if you have multiple networks within one zone, not relevant in our use case)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-interfaces&#34;&gt;Configure Interfaces&lt;/h2&gt;
&lt;p&gt;Next configure your network interfaces. I have one interface per switch port and in case of LAN port 2 I have added a bridge device (see [Configure WIFI bridge](##Configure WIFI bridge)). I will not be going into interface configuration details, just configure them according to your needs and assign the firewall zones. &lt;strong&gt;Figure 4&lt;/strong&gt; shows how to assign the firewall zone to the network interface. &lt;strong&gt;Figure 5&lt;/strong&gt; shows my network interfaces configuration.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/assign_zone_to_interface.png&#34;
  alt=&#34;Assign firewall zone to network interface&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 4: Assign firewall zone to network interface.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/interfaces.png&#34;
  alt=&#34;Interfaces&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 5: My network interfaces configuration.
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;configure-wifi-bridge-device&#34;&gt;Configure WIFI bridge device&lt;/h3&gt;
&lt;p&gt;If you want to connect LAN port 2 to WiFi you need to create a bridge device. You can do this if you go to Network-&amp;gt;Interfaces and select the tab &amp;ldquo;devices&amp;rdquo;. Click on &amp;ldquo;Add device configuration&amp;hellip;&amp;rdquo; and create a bridge as shown in &lt;strong&gt;figure 6&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/wifi_bridge_device.png&#34;
  alt=&#34;WiFi bridge device&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 6: Create a WiFi bridge device.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;apply-traffic-rules&#34;&gt;Apply traffic rules&lt;/h2&gt;
&lt;p&gt;In the previous steps we have created the basic firewall zones. In this state none of the newly configured VLANs are be able to talk to each other or the router and only the VLAN &amp;ldquo;lan&amp;rdquo; is allowed to talk to &amp;ldquo;WAN&amp;rdquo; (and therefore the Internet) and the router.&lt;/p&gt;
&lt;p&gt;To configure specific traffic forwarding rules between the VLANs, go to the &amp;ldquo;Traffic Rules&amp;rdquo; tab in Network-&amp;gt;Firewall. In this tab you can configure exceptions for all the traffic you want to explicitly forward.&lt;/p&gt;
&lt;h3 id=&#34;traffic-to-the-router&#34;&gt;Traffic to the router&lt;/h3&gt;
&lt;p&gt;First you need to allow essential traffic from your untrusted VLANs to the router. Which ports you need is depending on your setup, for my setup only DNS and DHCP is required. &lt;strong&gt;Figure 7&lt;/strong&gt; shows my configuration.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_untrusted_router.png&#34;
  alt=&#34;Traffic forwarding from untrusted VLANs to router&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 7: Forward DNS and DHCP traffic from untrusted zones to the router.
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;traffic-to-wanthe-internet&#34;&gt;Traffic to WAN/the Internet&lt;/h3&gt;
&lt;p&gt;Next, to allow basic communication to the internet, your need to configure forwardings to the &amp;ldquo;WAN&amp;rdquo; VLAN. In my use case I only require HTTP and HTTPs. &lt;strong&gt;Figure 8&lt;/strong&gt; shows my configuration.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_untrusted_wan.png&#34;
  alt=&#34;Traffic forwarding from untrusted VLANs to WAN&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 8: Forward HTTP and HTTPs traffic from untrusted zones to WAN/the Internet.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The Pi-hole needs to be able to access DNS servers so you need to create a custom traffic forwarding for port 53 to WAN. &lt;strong&gt;Figure 9&lt;/strong&gt; shows this configuration.
&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_fowarding_pi-hole_dns.png&#34;
  alt=&#34;Traffic forwarding from Pi-hole to WAN on port 53&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 9: Forward DNS traffic from the Pi-hole to WAN on port 53.
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;custom-ports-for-wifi-end-devices&#34;&gt;Custom ports for WiFi end devices&lt;/h4&gt;
&lt;p&gt;My smartphone tunnels all traffic through a SOCKS5 proxy using Netguard therefore I need a custom forwarding for that (which is also why I don&amp;rsquo;t need general forwardings for SMTP and IMAP from WiFi to WAN). My Laptop connects to the Internet using a VPN tunnel so I need a custom forwarding for VPN for when my Laptop is connected to the WiFi. &lt;strong&gt;Figure 10&lt;/strong&gt; shows this configuration.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_enddevices_wan.png&#34;
  alt=&#34;Traffic forwarding from WiFi end devices to SOCKS5 and VPN&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 10: Forward SOCKS5 traffic from the smartphone to a SOCKS5 server and foward VPN traffic from the notebook (WiFi) to a VPN server.
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;individual-forwardings-between-vlans&#34;&gt;Individual forwardings between VLANs&lt;/h3&gt;
&lt;p&gt;Finally you need to configure your other individual forwardings between the VLANs according to your use cases. For the pi-hole to work properly, every zone needs a forwarding to the pi-hole on port 53 (&lt;strong&gt;Figure 11&lt;/strong&gt;). To manage the Pi-hole and the NAS via SSH you need to forward traffic for port 22/tcp (&lt;strong&gt;Figure 12&lt;/strong&gt;). Another important configuration is the forwarding of traffic from my smartphone to the Hue Bridge so I can control the lights (&lt;strong&gt;Figure 13&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_pihole_dns.png&#34;
  alt=&#34;dns forwarding to pihole&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 11: Forward DNS traffic from internal zones to the Pi-hole.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/traffic_forwarding_laptop_ssh.png&#34;
  alt=&#34;dns forwarding to pihole&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 12: Forward SSH traffic from the laptop to the Pi-hole and NAS.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img
  src=&#34;../images/2022-02-06-home-network-segmentation-with-openwrt/s10e_hue.png&#34;
  alt=&#34;Forwarding traffic from smartphone to Hue bridge&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Figure 13: Forward traffic from smartphone to Hue Bridge on port 80/tcp.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That&amp;rsquo;s it.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/posts/2022-02-06-home-network-segmentation-with-openwrt/</guid>
      <pubDate>Sun, 06 Feb 2022 19:51:00 +0100</pubDate>
    </item>
    
    <item>
      <title>A_fresh_start</title>
      <link>https://black-pixel.net/posts/2020-05-10-a_fresh_start/</link>
      <description>&lt;p&gt;So once again I have restarted this page with a new design and new content. Right now I&amp;rsquo;m mostly concerned about having a landing page for people who happen to stumble across my domain. I&amp;rsquo;m still not really keen on starting to blog again right now but who knows, maybe that will change. Due to the whole COVID-19 situation there is not much going on right now. As a result I spend most of my free time working out at home and playing darts. I also try to learn new things like learning to speak Spanish and to play the ukulele.&lt;/p&gt;
&lt;p&gt;So long.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/posts/2020-05-10-a_fresh_start/</guid>
      <pubDate>Sun, 10 May 2020 20:34:32 +0200</pubDate>
    </item>
    
    <item>
      <title>Multilingual, Multi Domain Site with MODX Revolution CMS</title>
      <link>https://black-pixel.net/2014/02/24/multilingual-multidomain-site-modx-cms/</link>
      <description>&lt;p&gt;In this post I’m going to show you how to set up a multilingual, multi domain site with MODX Revolution CMS. There are several ways to do this. What I’m going to do in this tutorial is create separate pages inside of MODX using Contexts for every language and then map the domains accordingly.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.example.com&#34;&gt;www.example.com&lt;/a&gt; will lead you to the English context and &lt;a href=&#34;https://www.example.de&#34;&gt;www.example.de&lt;/a&gt; to the German context.&lt;/p&gt;
&lt;p&gt;As a first step go to &lt;span style=&#34;text-decoration: underline;&#34;&gt;System/Contexts&lt;/span&gt; and create a new Context for your second language, in this example it’s de for German. I’m going to use the default web Context for the English page.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/createContext.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[1]&lt;/p&gt;
&lt;p&gt;Next create a new Page for the Context by right clicking on de and selecting &lt;span style=&#34;text-decoration: underline;&#34;&gt;Quick Create/Document&lt;/span&gt; and write something language specific in it so you know that you are on the correct site later.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/createDocument.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[2]&lt;/p&gt;
&lt;p&gt;Now right click on the de Context and select &lt;span style=&#34;text-decoration: underline;&#34;&gt;Update Context&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/updateContext.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[3]&lt;/p&gt;
&lt;p&gt;Create the following settings for the Context:&lt;/p&gt;
&lt;p&gt;Key: site_start&lt;/p&gt;
&lt;p&gt;Name: Site Start&lt;/p&gt;
&lt;p&gt;Value: 2&lt;/p&gt;
&lt;p&gt;2 is the ID of the start page for this Context.&lt;/p&gt;
&lt;p&gt;Key: site_url&lt;/p&gt;
&lt;p&gt;Name: Site URL&lt;/p&gt;
&lt;p&gt;Value: &lt;a href=&#34;http://example.de/&#34;&gt;http://example.de/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;or &lt;a href=&#34;http://www.example.de/&#34;&gt;http://www.example.de/&lt;/a&gt; depending on which of the two you prefer.&lt;/p&gt;
&lt;p&gt;Important: There is a little mistake in the image, you need a backslash at the end of the domain, else you might run into problems later on.&lt;/p&gt;
&lt;p&gt;Key: cultureKey&lt;/p&gt;
&lt;p&gt;Name: Culture Key&lt;/p&gt;
&lt;p&gt;Value: de&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/settingSite_Start.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[4]&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/settingSite_Url.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[5]&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/settingSite_Url.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[6]&lt;/p&gt;
&lt;p&gt;Do the same for the web Context with the corresponding values (1, example.com, en). You don’t necessarily have to set a site_start ID for the default Context web because that is set in the &lt;span style=&#34;text-decoration: underline;&#34;&gt;System/System Settings&lt;/span&gt; but I’d still do it for consistency.&lt;/p&gt;
&lt;p&gt;Once this is done you have to create a gateway plugin that redirects your visitors to the correct site. Select the Elements tab on the left, right-click on Plugins and select &lt;span style=&#34;text-decoration: underline;&#34;&gt;New Plugin&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/newPlugin.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[7]&lt;/p&gt;
&lt;p&gt;Name it whatever you like but I’d suggest &lt;span style=&#34;text-decoration: underline;&#34;&gt;gateway plugin&lt;/span&gt;. Now enter the following code with your domains:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;?php
if($modx-&amp;gt;context-&amp;gt;get(&amp;#39;key&amp;#39;) != &amp;#34;mgr&amp;#34;){
    //grab the current domain from the http_host option
    switch ($modx-&amp;gt;getOption(&amp;#39;http_host&amp;#39;)) {
        case &amp;#39;example.de&amp;#39;:
        case &amp;#39;www.example.de&amp;#39;:
            $modx-&amp;gt;switchContext(&amp;#39;de&amp;#39;);
            $modx-&amp;gt;setOption(&amp;#39;cultureKey&amp;#39;, &amp;#39;de&amp;#39;);
            break;
        default:
            // Set the default language/context here
            $modx-&amp;gt;switchContext(&amp;#39;web&amp;#39;);
            $modx-&amp;gt;setOption(&amp;#39;cultureKey&amp;#39;, &amp;#39;en&amp;#39;);
            break;
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After that click on the &lt;span style=&#34;text-decoration: underline;&#34;&gt;System Events&lt;/span&gt; tab and select OnHandleRequest.&lt;/p&gt;
&lt;p&gt;Now your domains should show the correct pages.&lt;/p&gt;
&lt;p&gt;The last thing I’m going to show you is how to automatically generate the navigation and language switching menu.&lt;/p&gt;
&lt;p&gt;To achieve this you have to install two extras. Go to &lt;span style=&#34;text-decoration: underline;&#34;&gt;System/Package Management&lt;/span&gt; and install the following plugins:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wayfinder&lt;/strong&gt; – This extra will generate the navigation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Babel&lt;/strong&gt; – This extra will create the language switching menu.&lt;/p&gt;
&lt;p&gt;Don’t forget to install the extras after you’ve downloaded them.&lt;/p&gt;
&lt;p&gt;Insert your context names in the Setup Options popup from the Babel extra:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/bableSetupOptions.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[8]&lt;/p&gt;
&lt;p&gt;Now edit the home pages of your Contexts, you will notice a new interface on the top right. Link all homepages with their respective IDs. In this example I put the ID of the German home page into the &lt;span style=&#34;text-decoration: underline;&#34;&gt;German (de)&lt;/span&gt; tab of the English home page and vice versa.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/babelLinkLanguage.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[9]&lt;/p&gt;
&lt;p&gt;Alright, just one more thing to do. Edit your template, you can find the default template by clicking on the Elements tab on the left and selecting &lt;span style=&#34;text-decoration: underline;&#34;&gt;Templates/BaseTemplate.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To show the navigation menu, all you need to do is add:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[[Wayfinder? &amp;amp;startId=`0`&amp;amp;level=`1`]]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To show the language switching menu add:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[[!BabelLinks]]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A complete example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html xmlns=&amp;#34;http://www.w3.org/1999/xhtml&amp;#34;&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;[[++site_name]] - [[*pagetitle]]&amp;lt;/title&amp;gt;
&amp;lt;base href=&amp;#34;[[++site_url]]&amp;#34; /&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;header&amp;gt;
    &amp;lt;nav&amp;gt;
      [[Wayfinder? &amp;amp;startId=`0`&amp;amp;level=`1`]]
    &amp;lt;/nav&amp;gt;
  &amp;lt;/header&amp;gt;
  &amp;lt;div id=&amp;#34;language&amp;#34;&amp;gt;
    &amp;lt;!-- Per default, Babel only includes &amp;lt;li&amp;gt; tags
    which are not XHTML compliant on thier own --&amp;gt;
    &amp;lt;ul&amp;gt;[[!BabelLinks]]&amp;lt;/ul&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;main&amp;gt;
  [[*content]]
  &amp;lt;/main&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I didn’t come up with all of this myself, there are several awesome people who have written tutorials on this topic. Here are a few of those, their instructions might differ slightly from mine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.belafontecode.com/modx-revolution-hosting-multiple-domains/&#34;&gt;http://www.belafontecode.com/modx-revolution-hosting-multiple-domains/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html&#34;&gt;http://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html&#34;&gt;http://www.multilingual-modx.com/blog/2011/multilingual-websites-with-modx-and-babel.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://rtfm.modx.com/revolution/2.x/administering-your-site/contexts/using-one-gateway-plugin-to-manage-multiple-domains&#34;&gt;http://rtfm.modx.com/revolution/2.x/administering-your-site/contexts/using-one-gateway-plugin-to-manage-multiple-domains&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2014/02/24/multilingual-multidomain-site-modx-cms/</guid>
      <pubDate>Mon, 24 Feb 2014 20:49:15 +0000</pubDate>
    </item>
    
    <item>
      <title>Colorize Terminal When Using SSH</title>
      <link>https://black-pixel.net/2014/02/17/colorize-terminal-when-using-ssh/</link>
      <description>&lt;p&gt;In this tutorial I’m going to show you how to set up your &lt;strong&gt;.bashrc&lt;/strong&gt; to colorize the terminal automatically whenever you are using SSH.&lt;/p&gt;
&lt;p&gt;The reason for this should be obvious, it can get difficult to distinguish multiple terminals and issuing commands on the wrong shell can get you into big trouble.&lt;/p&gt;
&lt;blockquote&gt;
&lt;h2 id=&#34;realizing-i-ran-the-command-on-the-wrong-server&#34;&gt;Realizing I ran the command on the wrong server&lt;/h2&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/commandOnWrongServer.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;by &lt;a href=&#34;http://devopsreactions.tumblr.com/post/72651016161/realizing-i-ran-the-command-on-the-wrong-server&#34;&gt;DEVOP REACTIONS @tumblr&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;All you have to do is write an alias in which you define the colors you want for the font and the background:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;alias ssh=”tput setf 2; tput setb 0; ssh”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This replaces ssh and puts the commands tput setf (foreground/font color) and tput setb (background color) before the actual ssh command. In case setf and setb don’t work for you, try setaf and setab.&lt;/p&gt;
&lt;p&gt;You can also create individual aliases for different ssh connections:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;alias example=”tput setf 0; tput setb 4; ssh &lt;a href=&#34;mailto:user@example.com&#34;&gt;user@example.com&lt;/a&gt;”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;alias domain=”tput setf 1; tput setb 0; ssh &lt;a href=&#34;mailto:root@domain.com&#34;&gt;root@domain.com&lt;/a&gt;”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In these cases you only have to execute the respective alias like example or domain instead of writing ssh. However, you can not use an ssh alias together with individual ones because it would overwrite the other tput settings.Probably the best solution for both a general ssh colorization and an individual one is to use a different alias for general ssh commands. Here’s an example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;alias sshc=”tput setf 2; tput setb 0; ssh”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;alias example=”tput setf 0; tput setb 4; ssh &lt;a href=&#34;mailto:user@example.com&#34;&gt;user@example.com&lt;/a&gt;”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;alias domain=”tput setf 1; tput setb 0; ssh &lt;a href=&#34;mailto:root@domain.com&#34;&gt;root@domain.com&lt;/a&gt;”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Don’t forget to reload your .bashrc file:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;source .bashrc&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here is a screenshot in which you can see the colors set with tput setf 2 and tput setb 0:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/drag@Debby-_002.png&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2014/02/drag@h1653995-_003.png&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;As you can see in the first picture, only the background of the characters is changed at first but after you issue a “clear” the whole background of the terminal has the new color. I don’t know why this happens or if it’s a bug, if you find out please let me know through the comments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Color Code for tput:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;0 – Black&lt;/p&gt;
&lt;p&gt;1 – Red&lt;/p&gt;
&lt;p&gt;2 – Green&lt;/p&gt;
&lt;p&gt;3 – Yellow&lt;/p&gt;
&lt;p&gt;4 – Blue&lt;/p&gt;
&lt;p&gt;5 – Magenta&lt;/p&gt;
&lt;p&gt;6 – Cyan&lt;/p&gt;
&lt;p&gt;7 – White&lt;/p&gt;
&lt;p&gt;You can find more info about tput here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://linux.101hacks.com/ps1-examples/prompt-color-using-tput/&#34;&gt;http://linux.101hacks.com/ps1-examples/prompt-color-using-tput/&lt;/a&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2014/02/17/colorize-terminal-when-using-ssh/</guid>
      <pubDate>Mon, 17 Feb 2014 21:28:48 +0000</pubDate>
    </item>
    
    <item>
      <title>Learning Japanese</title>
      <link>https://black-pixel.net/2014/02/13/learning-japanese/</link>
      <description>&lt;p&gt;I’ve been learning Japanese for a few months now and in this post I’m going to show you a few of the sites and apps that I think are very helpful. I will update this post whenever I come across new resources.&lt;/p&gt;
&lt;h2 id=&#34;hiragana--katakana&#34;&gt;Hiragana &amp;amp; Katakana&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dr. Moku&lt;/strong&gt; is a great app for learning how to read Hiragana and Katakana. It is amazing how well this works but it’s not for free.&lt;/p&gt;
&lt;p&gt;The &lt;span style=&#34;text-decoration: underline;&#34;&gt;Android&lt;/span&gt; version is cheaper and consists of one app for both Hiragana and Katakana:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.muko.paid&#34;&gt;https://play.google.com/store/apps/details?id=com.muko.paid&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;span style=&#34;text-decoration: underline;&#34;&gt;IOS&lt;/span&gt; version is more expensive, split up into two apps for Hiragana &amp;amp; Katakana and it includes a writing practice:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135&#34;&gt;https://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776&#34;&gt;https://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hiragana – Learn Japanese&lt;/strong&gt; and **Katakana – Learn Japanese **are two free &lt;span style=&#34;text-decoration: underline;&#34;&gt;Android&lt;/span&gt; apps with whom you can learn writing the Kana.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.legendarya.katakana&#34;&gt;https://play.google.com/store/apps/details?id=com.legendarya.katakana&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.legendarya.helloandroid&#34;&gt;https://play.google.com/store/apps/details?id=com.legendarya.helloandroid&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;kanji&#34;&gt;Kanji&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WaniKani&lt;/strong&gt; is the best site for learning Kanji in my opinion. The Kanji are split up into 50 lessons and you can try the first three lessons for free. Each lesson consists of several Radicals, Kanji and Vocabulary. Further lessons require a subscription which is $8/month or $80/year.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.wanikani.com/&#34;&gt;https://www.wanikani.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also learn the Kanji on your smartphone, there is an unofficial app for Android and IOS.&lt;/p&gt;
&lt;p&gt;Android: &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.wanikani.androidnotifier&amp;amp;hl=en&#34;&gt;https://play.google.com/store/apps/details?id=com.wanikani.androidnotifier&amp;amp;hl=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IOS: [I’ve been learning Japanese for a few months now and in this post I’m going to show you a few of the sites and apps that I think are very helpful. I will update this post whenever I come across new resources.&lt;/p&gt;
&lt;h2 id=&#34;hiragana--katakana-1&#34;&gt;Hiragana &amp;amp; Katakana&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dr. Moku&lt;/strong&gt; is a great app for learning how to read Hiragana and Katakana. It is amazing how well this works but it’s not for free.&lt;/p&gt;
&lt;p&gt;The &lt;span style=&#34;text-decoration: underline;&#34;&gt;Android&lt;/span&gt; version is cheaper and consists of one app for both Hiragana and Katakana:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.muko.paid&#34;&gt;https://play.google.com/store/apps/details?id=com.muko.paid&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;span style=&#34;text-decoration: underline;&#34;&gt;IOS&lt;/span&gt; version is more expensive, split up into two apps for Hiragana &amp;amp; Katakana and it includes a writing practice:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135&#34;&gt;https://itunes.apple.com/us/app/dr.-mokus-hiragana-mnemonics/id387585135&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776&#34;&gt;https://itunes.apple.com/us/app/dr.-mokus-katakana-mnemonics/id452226776&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hiragana – Learn Japanese&lt;/strong&gt; and **Katakana – Learn Japanese **are two free &lt;span style=&#34;text-decoration: underline;&#34;&gt;Android&lt;/span&gt; apps with whom you can learn writing the Kana.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.legendarya.katakana&#34;&gt;https://play.google.com/store/apps/details?id=com.legendarya.katakana&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.legendarya.helloandroid&#34;&gt;https://play.google.com/store/apps/details?id=com.legendarya.helloandroid&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;kanji-1&#34;&gt;Kanji&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WaniKani&lt;/strong&gt; is the best site for learning Kanji in my opinion. The Kanji are split up into 50 lessons and you can try the first three lessons for free. Each lesson consists of several Radicals, Kanji and Vocabulary. Further lessons require a subscription which is $8/month or $80/year.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.wanikani.com/&#34;&gt;https://www.wanikani.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also learn the Kanji on your smartphone, there is an unofficial app for Android and IOS.&lt;/p&gt;
&lt;p&gt;Android: &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.wanikani.androidnotifier&amp;amp;hl=en&#34;&gt;https://play.google.com/store/apps/details?id=com.wanikani.androidnotifier&amp;amp;hl=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IOS: ]&lt;a href=&#34;https://itunes.apple.com/us/app/wanikani/id631153460&#34;&gt;1&lt;/a&gt; Github: &lt;a href=&#34;https://github.com/WaniKani&#34;&gt;https://github.com/WaniKani&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id=&#34;basics--grammar&#34;&gt;Basics &amp;amp; Grammar&lt;/h2&gt;
&lt;p&gt;**123Japanese **is a good free resource for almost any topic. I mainly use it for basic phrases and grammar. It is not complete so you may need to look for other sites after a while but it’s a great starting point.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://123japanese.com/&#34;&gt;http://123japanese.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IMABI&lt;/strong&gt; is the most comprehensive resource I know and it is completely free.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.imabi.net/&#34;&gt;http://www.imabi.net/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;listening--videos&#34;&gt;Listening &amp;amp; Videos&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;Waku Waku Japanese Language Lessons!&lt;/strong&gt; from JapanSocietyNYC are a great way to learn basic words and phrases. You can watch them for free on YouTube:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/playlist?list=PLF97A549D60C2EBA4&#34;&gt;https://www.youtube.com/playlist?list=PLF97A549D60C2EBA4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2014/02/13/learning-japanese/</guid>
      <pubDate>Thu, 13 Feb 2014 21:34:07 +0000</pubDate>
    </item>
    
    <item>
      <title>Magnetic Field Measurement with an Arduino, a HMC5883L and a Piezo Speaker</title>
      <link>https://black-pixel.net/2013/06/08/magnetic-field-measurement-with-arduino-hmc5883l-and-piezo-speaker/</link>
      <description>&lt;p&gt;This is a tutorial on how to do magnetic field measurement with an Arduino, a HMC5883L triple axis magnetometer and a Piezo Speaker.&lt;/p&gt;
&lt;p&gt;First of all, here is a schematic on how to hook up everything.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2013/05/arduinoHMC5883Lpiezo.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Source images from:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://store.fut-electronics.com/HMC5883L.html&#34;&gt;&lt;a href=&#34;http://store.fut-electronics.com/HMC5883L.html&#34;&gt;http://store.fut-electronics.com/HMC5883L.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.geekzone.co.nz/imagessubs/blog18a1d14dd0a4ccf9c8d355c44d869a03.jpg&#34;&gt;&lt;a href=&#34;http://www.geekzone.co.nz&#34;&gt;http://www.geekzone.co.nz&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;HMC5883L GND -&amp;gt; Arduino GND&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;HMC5883L VCC -&amp;gt; Arduino 3.3V&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;HMC5883L SDA -&amp;gt; Arduino A4&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;HMC5883L SCL -&amp;gt; Arduino A5&lt;/p&gt;
&lt;p&gt;Piezo Speaker – -&amp;gt; Arduino D10 (Any digital PWM port is sufficient)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Piezo Speaker + -&amp;gt; Arduino GND&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Let’s get to the programming part.&lt;/p&gt;
&lt;p&gt;First of all download this HMC5883L Arduino library:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2013/06/HMC5883LArduinoV4.zip&#34;&gt;HMC5883L(Arduino)[V4]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then put the HMC5883L folder into your library.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Default Library Folder Location&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mac:&lt;/strong&gt; In (home directory)/Documents/Arduino/libraries&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PC:&lt;/strong&gt; My Documents -&amp;gt; Arduino -&amp;gt; libraries&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt; (home directory)/sketchbook/libraries&lt;/p&gt;
&lt;p&gt;Once this is done you can start programming.&lt;/p&gt;
&lt;p&gt;I’ve put my code on Github, you can find it here: &lt;a href=&#34;https://github.com/Black-Pixel/Arduino/tree/master/magneticFieldStrength&#34;&gt;https://github.com/Black-Pixel/Arduino/tree/master/magneticFieldStrength&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It should not be hard to understand. If you have any questions or suggestions feel free to write a comment.&lt;/p&gt;
&lt;p&gt;Sources and other helpful sites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://bildr.org/2012/02/hmc5883l_arduino/&#34;&gt;Triple Axis Magnetometer HMC5883L + Arduino&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.loveelectronics.co.uk/Tutorials/8/hmc5883l-tutorial-and-arduino-library&#34;&gt;HMC5883L Compass Tutorial with Arduino Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://lifehacker.com/5930536/am-i-a-cyborg-now-achieving-a-sixth-sense-through-tech&#34;&gt;Am I a Cyborg Now? Achieving a Sixth Sense Through Tech&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://c48754.r54.cf3.rackcdn.com/HMC5883L.pdf&#34; title=&#34;HMC5883L Datasheet&#34;&gt;HMC5883L Datasheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2013/06/08/magnetic-field-measurement-with-arduino-hmc5883l-and-piezo-speaker/</guid>
      <pubDate>Sat, 08 Jun 2013 23:44:07 +0000</pubDate>
    </item>
    
    <item>
      <title>New Git Wallpapers</title>
      <link>https://black-pixel.net/2013/03/01/new-git-wallpaper/</link>
      <description>&lt;p&gt;I’ve just created two Git wallpapers:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2013/03/git4.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2010/11/git4.jpg&#34;&gt;1&lt;/a&gt; &lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2013/03/git_hell.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2010/11/git_hell.jpg&#34;&gt;2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also find these wallpapers and others at my &lt;a href=&#34;http://black-pixel.net/art/wallpaper&#34;&gt;wallpaper page&lt;/a&gt; or at my &lt;a href=&#34;https://black-pixel.deviantart.com/&#34;&gt;deviantART page&lt;/a&gt;.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2013/03/01/new-git-wallpaper/</guid>
      <pubDate>Fri, 01 Mar 2013 22:31:16 +0000</pubDate>
    </item>
    
    <item>
      <title>Forward Connections from Nginx to httpd in CentOS</title>
      <link>https://black-pixel.net/2013/02/10/forwarding-connections-from-nginx-to-httpd-in-centos/</link>
      <description>&lt;p&gt;This is a tutorial on how to forward connections from Nginx to httpd in CentOS.&lt;/p&gt;
&lt;p&gt;First of all, you have to edit the Nginx configuration file for the domain you want to forward.&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;code&gt;vim /etc/nginx/conf.d/example.domain.conf&lt;/code&gt;
&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; server {
  
 server_name example.net; # your domain name
 
 location / {
 
 proxy\_set\_header X-Real-IP $remote_addr;
  
 proxy\_set\_header X-Forwarded-For $remote_addr;
 
 proxy\_set\_header Host $host;
 
 proxy_pass http://127.0.0.1:8080;
  
 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now Nginx is ready. The next thing you have to do is set up your httpd configuration so it listens on port 8080, because Nginx will forward all connections to your domain to port 8080.&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;code&gt;vim /etc/httpd/conf/httpd.conf&lt;/code&gt;
&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Listen 127.0.0.1:8080
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The forwarding should already work now, however there is still a problem.&lt;/p&gt;
&lt;p&gt;Httpd does not yet handle the forwarded header information, so all connections to httpd stem from localhost.&lt;/p&gt;
&lt;p&gt;To fix this you have to install an additional httpd module:&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;code&gt;yum install mod_extract_forwarded&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;To configure this module you need a &lt;em&gt;&lt;span style=&#34;color: #888888;&#34;&gt;mod_extract_forwarded.conf&lt;/span&gt;&lt;/em&gt; file in your &lt;em&gt;&lt;span style=&#34;color: #888888;&#34;&gt;/etc/httpd/conf.d&lt;/span&gt;&lt;/em&gt; directory.&lt;/p&gt;
&lt;p&gt;The file should contain:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;LoadModule extract_forwarded_module modules/mod_extract_forwarded.so

# MEForder can have either of two value ‘refuse,accept’ or ‘accept,refuse’ and
# specifies the order in which the information in two associated directives,
# MEFaccept and MEFrefuse, are intepreted. The MEFaccept and MEFrefuse
# directives are each used to spcifiy one or more IP numbers.

MEForder refuse,accept

# MEFrefuse can be ‘all’ OR a list of IP numbers and/or domain names of trusted
# proxy servers whose IP number can be derived by DNS from the domain name.
# The presence of ‘all’ overrides any particular IP numbers and means that no
# proxy servers are to be trusted. Individual IP numbers mean that those proxy
# servers having them are not to be trusted. This defaults to ‘all’.

MEFrefuse all
MEFaccept 127.0.0.1
# MEFaccept can be ‘all’ OR a list of IP numbers and/or domain names of trusted
# proxy servers whose IP number can be derived by DNS from the domain name.
# The presence of ‘all’ overrides any particular IP numbers and means that all
# proxy servers are to be trusted.
# Individual IP numbers mean that those the proxy servers having them are to be
# trusted. This defaults to an empty list of trusted IP numbers.

# MEFaccept 1.2.3.4 1.2.3.5

# Normal mode of use is to say:
#
# MEForder refuse,accept
# MEFrefuse all
# MEFaccept &amp;lt;space separated list of your trusted proxy servers’ IP numbers&amp;gt;
#
# with the MEForder directive saying apply the MEFrefuse rule first then the
# MEFaccept rule.
# The MEFrefuse rule says do not trust any proxy servers but this is selectively
# overridden for particular IP numbers listed by the MEFaccept directive.

# MEFaddenv can be ‘off’, ‘on’ (the default) or a string. ‘off’ means that when
# spoofing, do not add an environment variable whose value is the IP number of
# the connecting machine. ‘on’ means that when spoofing, add an environment
# variable called ‘MEF_RPROXY_ADDR’ whose value is the IP number of the
# connecting machine.
# A string means that when spoofing, add an environment variable named by the
# string supplied whose value is the IP number of the connecting machine.

MEFaddenv on

# MEFdebug can be ‘on’ or ‘off’ (the default). When turned ‘on’ information
# about how the mod_extract_forwarded module is processing every request to your
# Apache 2 server, and any associated internal redirects or subsrequests, is
# written to the server’s error_log.
# The amount of output written and the way it is generated is such that you
# would never normally want to turn this feature on.
# This feature is intended for debugging operation of the mod_extract_forwarded
# module and it is unlikely you will want to do that.

MEFdebug off
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The approach differs slightly from other distributions like Debian. You can find a tutorial for Debian here: &lt;a href=&#34;http://zeldor.biz/2011/01/nginx-apache2-real-ip/&#34;&gt;http://zeldor.biz/2011/01/nginx-apache2-real-ip/&lt;/a&gt;&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2013/02/10/forwarding-connections-from-nginx-to-httpd-in-centos/</guid>
      <pubDate>Sun, 10 Feb 2013 13:54:42 +0000</pubDate>
    </item>
    
    <item>
      <title>Manually install Sun Java on Debian</title>
      <link>https://black-pixel.net/2012/12/26/manually-install-sun-java-on-debian/</link>
      <description>&lt;p&gt;This is a tutorial on how to manually install Sun Java on Debian Linux. This may also work for other distributions but I cannot guarantee that.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd /usr/lib
mkdir jvm
cd jvm
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Download the latest .tar.gz file from &lt;a href=&#34;http://www.java.com/de/download/manual.jsp&#34;&gt;http://www.java.com/de/download/manual.jsp&lt;/a&gt; and put in in the jvm directory.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tar -xvzf javafile.tar.gz&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now set the alternatives path. If you’re just installing the runtime environment, you only need the first line.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;update-alternatives –install “/usr/bin/java” java “/usr/lib/jvm/TheExtractedFolder/bin/java” 1
update-alternatives –install “/usr/bin/javac” javac “/usr/lib/jvm/TheExtractedFolder/bin/javac” 1
update-alternatives –install “/usr/bin/javaws” javaws “/usr/lib/jvm/TheExtractedFolder/bin/javaws” 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The last thing you have to do is to set the environment variables.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vi /etc/profile&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Add the following two lines at the end:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;JAVA_HOME=&amp;#34;/usr/lib/jvm/TheExtractedFolder
export JAVA_HOME
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now activate it:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;source /etc/profile&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That’s it.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;To test if everything works, execute the following commands:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;echo $JAVA_HOME
java -version
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/12/26/manually-install-sun-java-on-debian/</guid>
      <pubDate>Wed, 26 Dec 2012 19:43:00 +0000</pubDate>
    </item>
    
    <item>
      <title>IM Sounds</title>
      <link>https://black-pixel.net/2012/11/24/im-sounds/</link>
      <description>&lt;p&gt;Good instant messaging sounds are quite rare and I often dislike the default ones, so I searched for alternatives and found three which I want to share with you.&lt;/p&gt;
&lt;p&gt;They were created for Adium, but I’ve converted them to MP3 and WAV so you should be able to use them with any instant messenger.&lt;/p&gt;
&lt;p&gt;Let’s start with the first one: &lt;a href=&#34;http://www.adiumxtras.com/index.php?a=xtras&amp;amp;xtra_id=7612&#34;&gt;Visions I&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;em&gt;&amp;#8220;The first in the new Vision series of IM sound sets. This is a project started to bring simple, elegant yet practical IM notifications to the Adium platform.&amp;#8221;&lt;/em&gt;
&lt;/p&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  by &lt;a href=&#34;http://www.adiumxtras.com/www.jamiesoarmusic.co.uk&#34; rel=&#34;cc:attributionURL&#34;&gt;Jamie Soar&lt;/a&gt; / &lt;a href=&#34;http://creativecommons.org/licenses/by-nd/3.0/&#34; rel=&#34;license&#34;&gt;CC BY-ND 3.0&lt;/a&gt;
&lt;/div&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
&lt;/div&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download MP3: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2012/11/Visions-i.AdiumSoundsetMP3.zip&#34;&gt;Visions i.AdiumSoundsetMP3&lt;/a&gt;
&lt;/div&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download WAV: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2012/11/Visions-i.AdiumSoundsetWAV.zip&#34;&gt;Visions i.AdiumSoundsetWAV&lt;/a&gt;
&lt;/div&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download Original: &lt;a href=&#34;http://www.adiumxtras.com/download/7612&#34;&gt;http://www.adiumxtras.com/download/7612&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The second: &lt;a href=&#34;http://www.adiumxtras.com/index.php?a=xtras&amp;amp;xtra_id=382&#34;&gt;SuperMarioWorld&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;em&gt;&amp;#8220;a soundset from the super nintendo game, super mario world. a complete set with a slim default set, but also comes with additional sounds for extra customisation. matches my dock icon set. enjoy!!&amp;#8221;&lt;/em&gt;
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  Credits: original sounds by nintendo. edited and prepared for adium by aaron j hoffmann
&lt;/p&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download MP3: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2012/11/SuperMarioWorld.AdiumSoundsetMP3.zip&#34;&gt;SuperMarioWorld.AdiumSoundsetMP3&lt;/a&gt;
&lt;/div&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download WAV: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2012/11/SuperMarioWorld.AdiumSoundsetWAV.zip&#34;&gt;SuperMarioWorld.AdiumSoundsetWAV&lt;/a&gt;
&lt;/div&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download Original: &lt;a href=&#34;http://www.adiumxtras.com/download/382&#34;&gt;http://www.adiumxtras.com/download/382&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The third: &lt;a href=&#34;http://www.adiumxtras.com/index.php?a=xtras&amp;amp;xtra_id=602&#34;&gt;Tokyo Train Station&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;em&gt;&amp;#8220;Tokyo Train Station is a remake of Electric Dream, designed for users who enjoy the simplicity of Electric Dream but dislike its dreamy and uncanny capability of lulling them to sleep.&lt;/em&gt;
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  This is a collection of 5 mutated synthesizer runs for the following events: Buddy LogOn, Buddy LogOff, New Message Received, Message Sent, Message Received.&lt;em&gt;&amp;#8220;&lt;/em&gt;
&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  Credits: All sounds created by Dominik Dimaano
&lt;/p&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download MP3: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2012/11/TokyoTrainStation.AdiumSoundsetMP3.zip&#34;&gt;TokyoTrainStation.AdiumSoundsetMP3&lt;/a&gt;
&lt;/div&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download WAV: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2012/11/TokyoTrainStation.AdiumSoundsetWAV.zip&#34;&gt;TokyoTrainStation.AdiumSoundsetWAV&lt;/a&gt;
&lt;/div&gt;
&lt;div style=&#34;padding-left: 30px;&#34;&gt;
  Download Original: &lt;a href=&#34;http://www.adiumxtras.com/download/602&#34;&gt;http://www.adiumxtras.com/download/602&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;p&gt;
    &amp;nbsp;
  &lt;/p&gt;
  &lt;p&gt;
    I&amp;#8217;ve used fre:ac to convert the original sound files.&lt;br /&gt; You can download it for free at &lt;a href=&#34;http://www.freac.org/&#34;&gt;http://www.freac.org/&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/11/24/im-sounds/</guid>
      <pubDate>Sat, 24 Nov 2012 18:54:50 +0000</pubDate>
    </item>
    
    <item>
      <title>Desktop Info: Conky for Windows</title>
      <link>https://black-pixel.net/2012/10/26/desktop-info-conky-for-windows/</link>
      <description>&lt;p&gt;Desktop Info is a freeware program for Windows that’s very similar to the Linux program Conky. It’s very small and only consists of an exe file and an ini file in which the configuration is stored.&lt;/p&gt;
&lt;p&gt;Quote from the official homepage:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This little application displays system information on your desktop in a similar way to some other desktop information tools. Unlike others, this application looks like wallpaper but stays resident in memory and continues to update the display in real time. Uses very little memory and nearly zero cpu. Perfect for quick identification and walk-by monitoring of production or test server farms. Everything is customisable including language.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Here is a screenshot from the desktop of my notebook:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2012/10/desktopINFO.png&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

[1]&lt;/p&gt;
&lt;p&gt;This is the configuration I am using:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[options]
top=45
#left=15
#bottom=35
right=15
width=325
fontface=Arial
fontsize=8
cleartype=0
ssfontsize=12
formcolor=000000
contextmenu=1
allowdrag=0
offset=1
networkadapterfilter=Microsoft Virtual WiFi Miniport Adapter
#language=english.ini
msnstatus=0
inimonitortime=15
#log=desktopinfo.log

[items]
# date / time
COMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Your Name Here
DATETIME=active:0,interval:1,color:DDDDDD
TIMEZONE=active:0,interval:60,color:DDDDDD
HOST=active:1,interval:0,color:DDDDDD
USER=active:1,interval:0,color:DDDDDD
BOOTTIME=active:0,interval:0,color:DDDDDD
UPTIME=active:1,interval:1,color:DDDDDD
# hardware
COMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Hardware
OEMINFO=active:0,interval:0,color:DDDDDD
CPUTYPE=active:1,interval:0,color:DDDDDD
CPUCOUNT=active:0,interval:0,color:DDDDDD
CPUTEMP=active:0,interval:10,color:DDDDDD
BATTERY=active:0,interval:60,color:DDDDDD,chart:1
MOTHERBOARD=active:0,interval:0,color:DDDDDD
BIOS=active:0,interval:0,color:DDDDDD
DISPLAYCONTROLLER=active:0,interval:0,color:DDDDDD
AUDIOCONTROLLER=active:0,interval:0,color:DDDDDD
SERIALNUMBER=active:1,interval:0,color:DDDDDD
# processes
COMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Processes
CPU=active:1,interval:5,color:DDDDDD,chart:2,threshold:95,tcolor:DDDDDD
CPUUSAGE=active:1,interval:5,color:DDDDDD,chart:0,threshold:95,tcolor:DDDDDD,count:5
PROCESSCOUNT=active:1,interval:5,color:DDDDDD,chart:0,threshold:100,tcolor:DDDDDD
TOPPROCESSCPU=active:1,interval:5,color:DDDDDD,chart:0,threshold:95,tcolor:DDDDDD
TOPPROCESSMEM=active:1,interval:5,color:DDDDDD,chart:0,threshold:500,tcolor:DDDDDD
TOPPROCESSPF=active:0,interval:5,color:DDDDDD,chart:0,threshold:5000,tcolor:DDDDDD
# windows configuration
COMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Windows Configuration
OSVERSION=active:1,interval:0,color:DDDDDD
OSBUILD=active:1,interval:0,color:DDDDDD
SERVICEPACK=active:0,interval:0,color:DDDDDD
IEVERSION=active:0,interval:0,color:DDDDDD
DIRECTX=active:0,interval:0,color:DDDDDD
SCREEN=active:1,interval:120,color:DDDDDD
# memory
COMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Memory
PHYSICALRAM=active:1,interval:5,color:DDDDDD,chart:2,threshold:90,tcolor:DDDDDD
VIRTUALMEMORY=active:1,interval:5,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD
PAGEFILE=active:1,interval:5,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD
PAGEFAULTS=active:1,interval:5,color:DDDDDD,chart:2,threshold:5000,tcolor:DDDDDD
# network adapters
COMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Network Adapters
NETWORKADAPTER=active:1,interval:30,color:DDDDDD,activeonly:1,count:8
IPADDRESS=active:1,interval:30,color:DDDDDD,offset=1
MACADDRESS=active:1,interval:60,color:DDDDDD,offset=1
GATEWAY=active:1,interval:30,color:DDDDDD,offset=1
DHCPSERVER=active:0,interval:30,color:DDDDDD,offset=1
WINSSERVER=active:0,interval:30,color:DDDDDD,offset=1
# network stack
COMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Network Stack
DNSSERVER=active:1,interval:30,color:DDDDDD
LEASEEXPIRY=active:0,interval:30,color:DDDDDD
PROXY=active:0,interval:60,color:DDDDDD
DOMAIN=active:1,interval:30,color:DDDDDD
DOMAINCONTROLLER=active:1,interval:30,color:DDDDDD
WORKGROUP=active:1,interval:30,color:DDDDDD
NETCONNECTIONS=active:1,interval:10,color:DDDDDD,chart:0,threshold:150,tcolor:DDDDDD
NETPACKETS=active:0,interval:10,color:DDDDDD
NETPACKETSRATE=active:1,interval:10,color:DDDDDD,chart:2,threshold:500,tcolor:DDDDDD
# disks
COMMENT=active:1,interval:0,color:DDDDDD,style:bu,text:Fixed Disks
FIXEDDISK=active:1,interval:10,color:DDDDDD,chart:0,threshold:90,tcolor:DDDDDD,count:8,filter:C:D:
DISKIO=active:1,interval:10,color:DDDDDD,chart:2,threshold:10000,tcolor:DDDDDD
# printers
COMMENT=active:0,interval:0,color:DDDDDD,style:bu,text:Printers
PRINTER=active:0,interval:60,color:888888,count:4
PRINTERSTATUS=active:0,interval:60,color:888888
# misc
COMMENT=active:0,interval:0,color:DDDDDD,style:iu,text:Miscellaneous – Testing
FILE=active:0,interval:10,color:ff8888,type:text,text:Setup,file:c:setup.log
REGISTRY=active:0,interval:10,color:ff8888,tree:1,text:Run Key MSC,key:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunMSC
EVENTLOG=active:0,interval:10,color:ff8888,text:System Events,log:System
TSSESSIONS=active:0,interval:10,color:888888
UNREADMAIL=active:0,interval:60,color:888888,chart:0,threshold:10,tcolor:DDDDDD
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I’ve not written it myself. I found it here: &lt;a href=&#34;http://forum.notebookreview.com/windows-os-software/585646-desktop-info-conky-windows.html&#34;&gt;http://forum.notebookreview.com/windows-os-software/585646-desktop-info-conky-windows.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Official homepage: &lt;a href=&#34;http://www.glenn.delahoy.com/software/&#34;&gt;http://www.glenn.delahoy.com/software/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Direct download link: &lt;a href=&#34;http://www.glenn.delahoy.com/software/files/DesktopInfo120.zip&#34;&gt;http://www.glenn.delahoy.com/software/files/DesktopInfo120.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For information about the configuration options check out the ReadMe file: &lt;a href=&#34;http://www.glenn.delahoy.com/software/files/desktopinfo.txt&#34;&gt;http://www.glenn.delahoy.com/software/files/desktopinfo.txt&lt;/a&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/10/26/desktop-info-conky-for-windows/</guid>
      <pubDate>Fri, 26 Oct 2012 15:08:40 +0000</pubDate>
    </item>
    
    <item>
      <title>Boot Straight to Desktop in Windows 8</title>
      <link>https://black-pixel.net/2012/10/11/boot-straight-to-desktop-in-windows-8/</link>
      <description>&lt;p&gt;I’ve written a little program that sends a “left Windows key pressed” key event which brings you to the desktop. All you have to do is start the .exe file after logging in.&lt;/p&gt;
&lt;p&gt;You can do this by using either the task scheduler or the windows Startup folder (&lt;code&gt;C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;However the task scheduler should be a bit faster.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to use the task scheduler:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open the task scheduler and click on “Create Task…” on the right.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Choose a name and go to Triggers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click on “New” and choose “Begin the task: At Log on”.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to Actions, click on “New”, browse for the .exe file and select it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you are on a laptop, go to Conditions and deselect “Start the task only if the computer is on AC power”.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This should be all.&lt;/p&gt;
&lt;p&gt;Here is the zipped .exe file:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2012/10/WinKey.zip&#34;&gt;&lt;img alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-includes/images/crystal/archive.png&#34; width=&#34;28&#34; height=&#34;36&#34; /&gt; WinKey.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is the C++ source code:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;int main() {
	// This is the structure for the key input event
	INPUT keyevent;
	// Set the key event
	keyevent.type = INPUT_KEYBOARD;
	// Press the left Windows key
	keyevent.ki.wVk = 0x5B; // virtual-key code for the key http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
	keyevent.ki.dwFlags = 0; // 0 for key press
	SendInput(1, &amp;amp;keyevent, sizeof(INPUT));
	// Release the key
	keyevent.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
	SendInput(1, &amp;amp;keyevent, sizeof(INPUT));
	return 0;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Thanks to &lt;a href=&#34;http://batchloaf.wordpress.com/2012/04/17/simulating-a-keystroke-in-win32-c-or-c-using-sendinput/&#34;&gt;batchloaf&lt;/a&gt; for the SendInput tutorial.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/10/11/boot-straight-to-desktop-in-windows-8/</guid>
      <pubDate>Thu, 11 Oct 2012 14:33:13 +0000</pubDate>
    </item>
    
    <item>
      <title>Asus Xonar D2 on Windows 8</title>
      <link>https://black-pixel.net/2012/10/03/asus-xonar-d2-on-windows-8/</link>
      <description>&lt;p&gt;At the moment there is no official driver for Windows 8 and the Windows 7 driver does not work very well. You may get sound, but the Audio Center and all the functions won’t work.&lt;/p&gt;
&lt;p&gt;However, there is a 3rd party driver that works with all Asus Xonar cards.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You just have to download and install the Asus Xonar Unified Driver: &lt;a href=&#34;http://brainbit.wordpress.com/2010/07/19/asus-xonar-unified-drivers/&#34;&gt;http://brainbit.wordpress.com/2010/07/19/asus-xonar-unified-drivers/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am using the version 1.54 and everything works perfectly.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I’m very glad someone bothered to write a proper driver. Too bad you can only donate through Paypal.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/10/03/asus-xonar-d2-on-windows-8/</guid>
      <pubDate>Wed, 03 Oct 2012 18:58:24 +0000</pubDate>
    </item>
    
    <item>
      <title>My First Blender Creations</title>
      <link>https://black-pixel.net/2012/10/03/my-first-blender-creations/</link>
      <description>&lt;p&gt;I’ve wanted to learn using the open source 3D computer graphics software Blender for a long time.&lt;/p&gt;
&lt;p&gt;Last month I finally managed to put some time into it. I’ve designed some spaceship chassis for a German browser game called &lt;a href=&#34;http://www.omega-day.com&#34;&gt;Omega-Day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can watch them “in action” here on the bottom left: &lt;a href=&#34;http://techtree.omega-day.com/index.php?op=ship&#34;&gt;http://techtree.omega-day.com/index.php?op=ship&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’ve also uploaded them to this blog, you can find them at the &lt;a href=&#34;http://black-pixel.net/art/3d-art-blender&#34;&gt;3D Art (Blender)&lt;/a&gt; page in the art section.&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href=&#34;http://svenniemannie.deviantart.com/&#34;&gt;svenniemannie&lt;/a&gt; for letting me use his spaceship texture.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Another thing I’ve created this alien:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2012/10/alien.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;I originally intended to use it as an image for the race whose spaceship chassis I’ve created but it didn’t fit that well.&lt;/p&gt;
&lt;p&gt;I’ve used the &lt;a href=&#34;http://sweetsoulsister.deviantart.com/art/Monster-Alien-Skin-Textures-144354463&#34;&gt;Monster Alien Skin Texture&lt;/a&gt; by &lt;a href=&#34;http://sweetsoulsister.deviantart.com/&#34;&gt;SweetSoulSister&lt;/a&gt;. I’m not satisfied with how it looks, but that’s my fault. The textures are really great.&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/10/03/my-first-blender-creations/</guid>
      <pubDate>Wed, 03 Oct 2012 13:49:47 +0000</pubDate>
    </item>
    
    <item>
      <title>Resize Multiple Images at Once with IrfanView</title>
      <link>https://black-pixel.net/2012/09/30/resize-multiple-images-at-once-with-irfanview/</link>
      <description>&lt;p&gt;This is a tutorial on how to resize multiple images at once using the free program IrfanView.&lt;/p&gt;
&lt;p&gt;Imagine you have a folder with several photos which you want to make smaller so you can mail them to friends or upload them somewhere.&lt;/p&gt;
&lt;p&gt;First open IrfanView and select File and click on Batch Conversion/Rename.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2012/09/irfanview1.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;In the batch conversion window navigate to your images on the top right and add them. Also specify an output directory. I’d use a separate folder within the current one.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2012/09/irfanview2.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;The next step is to set the new size. Check “Use advanced options (for bulk resize…)” and click on Advanced.&lt;/p&gt;
&lt;p&gt;There are many options but the only thing we need for this tutorial is resize. Just set the width or the height, leave the rest empty and click on OK. It’s important to use either width or height and not both so the pictures don’t get distorted.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2012/09/irfanview3.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Now back in the batch conversion window click on Start Batch. A new window should appear saying that the batch conversion is done. That’s it!&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;https://black-pixel.net/wp-content/uploads/2012/09/irfanview4.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/09/30/resize-multiple-images-at-once-with-irfanview/</guid>
      <pubDate>Sun, 30 Sep 2012 09:52:32 +0000</pubDate>
    </item>
    
    <item>
      <title>Asus Xonar D2 on Windows 8 RP</title>
      <link>https://black-pixel.net/2012/08/07/asus-xonar-d2-on-windows-8-rp/</link>
      <description>&lt;p&gt;&lt;span style=&#34;color: #ff0000;&#34;&gt;Update:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;color: #ff0000;&#34;&gt;There is a better method to make your Asus Xonar soundcard work on Windows 8. You just have to use a 3rd party driver. See this post for further information: &lt;/span&gt;&lt;a href=&#34;http://black-pixel.net/asus-xonar-d2-on-windows-8.html&#34;&gt;http://black-pixel.net/asus-xonar-d2-on-windows-8.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This is a tutorial on how to make your Asus Xonar D2 sound card work on Windows 8 Release Preview.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;First of all download the driver at the Asus homepage.&lt;/p&gt;
&lt;p&gt;Next you have to launch the setup in Windows 7 compatibility mode.&lt;/p&gt;
&lt;p&gt;After finishing the setup, run regedit and search for [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4d36e96c-e325-11ce-bfc1-08002be10318}&lt;strong&gt;0007&lt;/strong&gt;Settings]&lt;/p&gt;
&lt;p&gt;On your system it may also be 0008, you’ll have to find the right one yourself.&lt;/p&gt;
&lt;p&gt;Change the SpeakerConfig key to 06 00 00 00 and the SpDigitalOut key to 01 00 00 00.&lt;/p&gt;
&lt;p&gt;Now reboot and everything should work.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I found this solution at &lt;a href=&#34;https://vip.asus.com/forum/view.aspx?board_id=21&amp;amp;model=Xonar%20D2X&amp;amp;id=20120301055430259&amp;amp;page=1&amp;amp;SLanguage=en-us&#34;&gt;https://vip.asus.com/forum/view.aspx?board_id=21&amp;amp;model=Xonar%20D2X&amp;amp;id=20120301055430259&amp;amp;page=1&amp;amp;SLanguage=en-us&lt;/a&gt;&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/08/07/asus-xonar-d2-on-windows-8-rp/</guid>
      <pubDate>Tue, 07 Aug 2012 19:15:05 +0000</pubDate>
    </item>
    
    <item>
      <title>How to Embed Videos with HTML 5</title>
      <link>https://black-pixel.net/2012/07/10/how-to-embed-videos-with-html5/</link>
      <description>&lt;p&gt;I’ve just embedded my first video (MP4) with HTML 5. I think this is much better than depending on the Quicktime player or converting it to Flash and it’s very easy.&lt;/p&gt;
&lt;p&gt;Here is an example code for embedding a MP4 video I’ve recorded with my Android phone:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;video width=&amp;#34;529&amp;#34; height=&amp;#34;300&amp;#34; controls=&amp;#34;controls&amp;#34;&amp;gt;
  &amp;lt;source src=&amp;#34;VIDEO0006.mp4&amp;#34; type=&amp;#34;video/mp4&amp;#34; /&amp;gt;
  Your browser does not support the video tag.
&amp;lt;/video&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The control attribute adds video controls, like play, pause, and volume. You can have multiple sources of the same file. The browser will use the first recognized format.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You may also want to set the codec that is used in your video. You can to this with the &lt;code&gt;codecs=&amp;quot;&amp;quot;&lt;/code&gt; tag. A good way to find out what codec and aspect ratio your video uses is a free software called &lt;a href=&#34;http://mediainfo.sourceforge.net/en&#34;&gt;MediaInfo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;At the moment, there are 3 supported video formats:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Browser&lt;/th&gt;
&lt;th&gt;MP4&lt;/th&gt;
&lt;th&gt;WebM&lt;/th&gt;
&lt;th&gt;Ogg&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Internet Explorer 9&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firefox 4.0&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Chrome 6&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple Safari 5&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opera 10.6&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;MP4 = MPEG 4 files with H264 video codec and AAC audio codec&lt;br /&gt; WebM = WebM files with VP8 video codec and Vorbis audio codec&lt;br /&gt; Ogg = Ogg files with Theora video codec and Vorbis audio codec&lt;/p&gt;
&lt;p&gt;As you can see unfortunately not all the major browsers support the same formats. It’s best to combine MP4 and Webm or MP4 and Ogg.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If you want more detailed information, have a look at these sites:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.w3schools.com/html5/html5_video.asp&#34;&gt;http://www.w3schools.com/html5/html5_video.asp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.webmonkey.com/2010/05/embed-videos-in-your-web-pages-using-html5/&#34;&gt;http://www.webmonkey.com/2010/05/embed-videos-in-your-web-pages-using-html5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You may also find this aspect ratio calculator to be useful if you want to resize your video:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://andrew.hedges.name/experiments/aspect_ratio/&#34;&gt;http://andrew.hedges.name/experiments/aspect_ratio/&lt;/a&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/07/10/how-to-embed-videos-with-html5/</guid>
      <pubDate>Tue, 10 Jul 2012 16:44:36 +0000</pubDate>
    </item>
    
    <item>
      <title>Installing OpenELEC on the Raspberry Pi</title>
      <link>https://black-pixel.net/2012/07/07/installing-openelec-on-the-raspberry-pi/</link>
      <description>&lt;p&gt;This is a brief tutorial on how to install the &lt;a href=&#34;openelec.tv&#34;&gt;Open Embedded Linux Entertainment Center&lt;/a&gt; on your Raspberry Pi from within Windows.&lt;/p&gt;
&lt;p&gt;First of all get one of the images from there: &lt;a href=&#34;http://sparky0815.de/openelec-download-images-fat-files/&#34;&gt;http://sparky0815.de/openelec-download-images-fat-files/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next you need to get the USB Image Tool: &lt;a href=&#34;http://www.alexpage.de/usb-image-tool/download/&#34;&gt;http://www.alexpage.de/usb-image-tool/download/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Now unpack the image using 7 zip for example.&lt;/p&gt;
&lt;p&gt;Then format your SD Card, this is just so the USB Image Tool can find it.&lt;/p&gt;
&lt;p&gt;After that open up USB Image Tool.exe, select your SD card on the left, click on restore and select the OpenELEC image.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2012/07/usbit.gif&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-870&#34; title=&#34;usbit&#34; alt=&#34;usbit&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2012/07/usbit.gif&#34; width=&#34;506&#34; height=&#34;431&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now you just have to wait until it’s done.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If this did not work for you or you are searching for other methods, you may want to take a look at these links:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://wiki.openelec.tv/index.php?title=Building_and_Installing_OpenELEC_for_Raspberry_Pi&#34;&gt;http://wiki.openelec.tv/index.php?title=Building_and_Installing_OpenELEC_for_Raspberry_Pi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://openelec.tv/forum/124-raspberry-pi&#34;&gt;http://openelec.tv/forum/124-raspberry-pi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/07/07/installing-openelec-on-the-raspberry-pi/</guid>
      <pubDate>Sat, 07 Jul 2012 11:40:01 +0000</pubDate>
    </item>
    
    <item>
      <title>Chrooted SFTP Without Shell Access</title>
      <link>https://black-pixel.net/2012/05/20/chrooted-sftp-without-shell-access/</link>
      <description>&lt;p&gt;Sometimes you may need to give someone access to load files onto your server. I don’t like FTP because it’s insecure and frankly I don’t want to set up a FTP server just for that. The problem with SFTP is that the user can look through your folders and has shell access. To solve this, I’ve written this tutorial on how to set up a chrooted SFTP account without shell access.&lt;/p&gt;
&lt;p&gt;First of all, edit the file &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; and add/change the following:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Match Group sftp
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The first line changes the SFTP-Subsystem to the internal SFTP-Server which is better for chrooting.&lt;/p&gt;
&lt;p&gt;The second line (Match Group sftp) causes the lines below to only affect users in the sftp usergroup.&lt;/p&gt;
&lt;p&gt;ChrootDirectory %h binds the users to their home directory so they can’t see what’s outside.&lt;/p&gt;
&lt;p&gt;The next line forces internal-sftp and the last one disables TCP forwarding.&lt;/p&gt;
&lt;p&gt;That’s it.&lt;/p&gt;
&lt;p&gt;Now you have to create a user with the appropriate settings.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;groupadd sftp
useradd -d /path/to/the/sftp/folder -s /bin/false -G sftp Username
passwd Username
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There is one more thing you have to care about. The home folder of this user has to be owned by root, else you won’t be able to login. Then you can create an upload folder for the user. For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;chown root:root /path/to/sftp/folder
mkdir /path/to/sftp/folder/uploads
chown Username:Username /path/to/sftp/folder/uploads
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I found most of the information about this at this German blog: &lt;a href=&#34;http://madapez.com/it/linux/howto-chroot-sftp-zugang-openssh-ohne-shell-ssh/&#34;&gt;http://madapez.com/it/linux/howto-chroot-sftp-zugang-openssh-ohne-shell-ssh/&lt;/a&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/05/20/chrooted-sftp-without-shell-access/</guid>
      <pubDate>Sun, 20 May 2012 14:55:45 +0000</pubDate>
    </item>
    
    <item>
      <title>My Favourite Google Chrome Extensions</title>
      <link>https://black-pixel.net/2012/05/01/my-favourite-google-chrome-extensions/</link>
      <description>&lt;p&gt;These are my favourite Google Chrome extensions at the moment.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chrome.google.com/webstore/detail/mlomiejdfkolichcflejclcbmpeaniij&#34;&gt;Ghostery&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;em&gt;Protect your privacy. See who&amp;#8217;s tracking your web browsing with Ghostery.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;Basically what Ghostery does is it detects trackers, web bugs, pixels, and beacons placed on web pages by Facebook, Google Analytics, and over 500 other ad networks and blocks them.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chrome.google.com/webstore/detail/oiigbmnaadbkfbmpbfijlflahbdbdgdf&#34;&gt;ScriptNo&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
   &lt;em&gt;Regain control of the web and surf more securely.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;ScriptNo is very much like the famous NoScript for Firefox. In my opinion, it is the best plugin of that kind for Google Chrome.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chrome.google.com/webstore/detail/gighmmpiobklfepjocnamgkkbiglidom&#34;&gt;AdBlock&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;em&gt;AdBlock for Chrome!  Block all advertisements on all web pages, even Facebook, Youtube, and Hulu.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;The best way to block ads.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chrome.google.com/webstore/detail/bdokagampppgbnjfdlkfpphniapiiifn&#34;&gt;Youtube Options&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;em&gt;YouTube Options: disable ads, annotations, and auto-play; change resolution, display size, optional flash pre-buffering, looping/replay, SSL; download all available versions of the media (this will require installing the full version from the developers website).&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;If you often watch Youtube videos, you should get this extension.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://chrome.google.com/webstore/detail/nmpeeekfhbmikbdhlpjbfmnpgcbeggic&#34;&gt;Better Pop Up Blocker&lt;/a&gt;&lt;/p&gt;
&lt;p style=&#34;padding-left: 30px;&#34;&gt;
  &lt;em&gt;Improves the Google Chrome pop up blocker by blocking pop up windows opened by javascript &amp; other annoyances that it misses.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;This will block all the annoying pop up windows.&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/05/01/my-favourite-google-chrome-extensions/</guid>
      <pubDate>Tue, 01 May 2012 11:05:08 +0000</pubDate>
    </item>
    
    <item>
      <title>Mailman with Postfix and Nginx on CentOS 6</title>
      <link>https://black-pixel.net/2012/02/24/mailman-with-postfix-and-nginx-on-centos-6/</link>
      <description>&lt;p&gt;In this tutorial I will show you how to set up Mailman with Postfix and Nginx on CentOS 6. I assume you have already set up Nginx to server CGI scripts using fcgiwrap like I’ve shown you in the previous post.&lt;/p&gt;
&lt;p&gt;Here is the link: http://black-pixel.net/serving-cgi-scripts-with-nginx-on-centos-6.html&lt;/p&gt;
&lt;p&gt;I also presuppose that you have a working Postfix configuration.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The first step is to install Mailman.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;yum install mailman&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next you have to edit your &lt;code&gt;/usr/lib/mailman/Mailman/Defaults.py&lt;/code&gt; and change the &lt;code&gt;DEFAULT_URL_PATTERN&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DEFAULT_URL_PATTERN = &#39;http://%s/mailman/cgi-bin/&#39;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is the same hierarchy as in the directory at &lt;code&gt;/usr/lib&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Next download this script: &lt;a href=&#34;http://black-pixel.net/stuff/postfix-to-mailman.tar&#34;&gt;http://black-pixel.net/stuff/postfix-to-mailman.tar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Extract the postfix-to-mailman.py into the folder &lt;code&gt;/usr/lib/mailman/bin/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;As a next step, you’ll have to create a Nginx configuration.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim /etc/nginx/conf.d/lists.example.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Add the following lines and adjust you domain:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;server {
    server_name  lists.exmaple.com;                   # your domain name

        location /mailman/cgi-bin {
               root /usr/lib;
               fastcgi_split_path_info (^/mailman/cgi-bin/[^/]*)(.*)$;
               include /etc/nginx/fastcgi_params;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
               fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
               fastcgi_intercept_errors on;
               fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /images/mailman {
               alias /usr/share/images/mailman;
        }

        location /pipermail {
               alias /var/lib/mailman/archives/public;
               autoindex on;
        }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That’s it for Nginx, don’t forget to restart it.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The last thing we have to take care of is the Postfix configuration.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;postconf -e &amp;#39;relay_domains = lists.example.com&amp;#39;
postconf -e &amp;#39;mailman_destination_recipient_limit = 1&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Make sure your local IPv6 adress is at &lt;code&gt;mydestinations =&lt;/code&gt; in your &lt;code&gt;main.cf&lt;/code&gt; because mailman seems to use it for sending mails.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mydestinations = 127.0.0.1/8, [::1]/128&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Next edit the &lt;code&gt;master.cf&lt;/code&gt; file and add the following to the bottom:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list(i used mailman) argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now we need a transport map:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;postconf -e &#39;transport_maps = hash:/etc/postfix/transport&#39;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Edit the new transport file and add the following line:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;lists.example.com mailman:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;After that:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;postmap -v /etc/postfix/transport
service postfix restart
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You’re nearly done, add the defaul mailing list called mailman:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/usr/lib/mailman/bin/newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Edit your aliases file as told and execute &lt;code&gt;newaliases&lt;/code&gt; and &lt;code&gt;postfix restart&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now you can do the same for any mailing list you want to create.&lt;/p&gt;
&lt;p&gt;After that start Mailman and add it to chkconfig.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;service mailman start
chkconfig -–levels 2345 mailman on
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can access the Mailman list page at &lt;code&gt;lists.example.com/mailman/cgi-bin/listinfo&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If you have any problems feel free to write a comment and I will try to help you asap. I’m not 100 percent sure if I’ve written everything necessary as I had to tweak around a lot to make it work.&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/02/24/mailman-with-postfix-and-nginx-on-centos-6/</guid>
      <pubDate>Fri, 24 Feb 2012 21:47:50 +0000</pubDate>
    </item>
    
    <item>
      <title>Serving CGI Scripts with Nginx on CentOS 6</title>
      <link>https://black-pixel.net/2012/02/24/serving-cgi-scripts-with-nginx-on-centos-6/</link>
      <description>&lt;p&gt;In this post I will show you how to serve CGI scripts with Nginx on CentOS 6 using fcgiwrap.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;As there’s no fcgiwrap package for CentOS 6.0, you must build it yourself. First install some prerequisites:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yum groupinstall &amp;#39;Development Tools&amp;#39;
yum install fcgi-devel
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now you can build fcgiwrap:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This installs fcgiwrap to &lt;code&gt;/usr/local/sbin/fcgiwrap&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;1a:
Install the spawn-fcgi package which allows you to run fcgiwrap as a daemon:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;yum install spawn-fcgi&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;1b:
If you are already using spawn-fcgi for php, copy the init.d script and sysconfig of spawn-fcgi&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cp -R /etc/init.d/spawn-fcgi /etc/init.d/spawn-fcgi2
cp -R /etc/sysconfig/spawn-fcgi /etc/sysconfig/spawn-fcgi2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next change the following lines in your spawn-fcgi2 file in &lt;span style=&#34;background-color: #c0c0c0;&#34;&gt;/etc/init.d/&lt;/span&gt; to look like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;prog=&amp;#34;spawn-fcgi2&amp;#34;
config=&amp;#34;/etc/sysconfig/spawn-fcgi2&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then modify your new spawn-fcgi configuration in &lt;code&gt;/etc/sysconfig/&lt;/code&gt; to look like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;FCGI_SOCKET=/var/run/fcgiwrap.socket
FCGI_PROGRAM=/usr/local/sbin/fcgiwrap
FCGI_USER=nginx
FCGI_GROUP=nginx
FCGI_EXTRA_OPTIONS=&amp;#34;-M 0700&amp;#34;
OPTIONS=&amp;#34;-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now you can start it like any other service. Don’t forget to add it to chkconfig via &lt;code&gt;chkconfig -levels 2345 spawn-fcgi on&lt;/code&gt;. (or &lt;code&gt;chkconfig -levels 2345 spawn-fcgi2 on&lt;/code&gt; depending on your configuration)&lt;/p&gt;
&lt;p&gt;The last thing you need to do is to write the nginx configuration.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;location /cgi-bin/ {
gzip off;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you want to user another method, visit &lt;a href=&#34;http://www.howtoforge.com/serving-cgi-scripts-with-nginx-on-debian-squeeze-ubuntu-11.04&#34;&gt;http://www.howtoforge.com/serving-cgi-scripts-with-nginx-on-debian-squeeze-ubuntu-11.04&lt;/a&gt;.&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/02/24/serving-cgi-scripts-with-nginx-on-centos-6/</guid>
      <pubDate>Fri, 24 Feb 2012 12:23:36 +0000</pubDate>
    </item>
    
    <item>
      <title>Nginx with PHP on CentOS 6</title>
      <link>https://black-pixel.net/2012/02/19/nginx-with-php-on-centos-6/</link>
      <description>&lt;p&gt;This is a post on how to set up Nginx with PHP using spawn-fcgi on CentOS 6.&lt;/p&gt;
&lt;p&gt;If you haven’t already done it, you have to set up the EPEL repository.&lt;/p&gt;
&lt;p&gt;For 32bit:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;For 64bit:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next install Nginx and spawn-fcgi, I assume you have already installed PHP and all the modules you need.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;yum install nginx spawn-fcgi&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now it’s time for the spawn-fcgi configuration. The config should be at &lt;code&gt;/etc/sysconfig/spawn-fcgi&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim /etc/sysconfig/spawn-fcgi&lt;/code&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# You must set some working options before the &amp;#34;spawn-fcgi&amp;#34; service will work.
# If SOCKET points to a file, then this file is cleaned up by the init script.
#
# See spawn-fcgi(1) for all possible options.
#
# Example :
#SOCKET=/var/run/php-fcgi.sock
OPTIONS=&amp;#34;-a 127.0.0.1 -p 9000 -u nginx -g nginx -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It’s very important that you remember the port, you’ll have to set the same in the nginx configuration. You should also use the same username and group as nginx.&lt;/p&gt;
&lt;p&gt;To play it safe, make sure the following line is not commented in the file &lt;code&gt;/etc/init.d/spawn-fcgi&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;config=&amp;quot;/etc/sysconfig/spawn-fcgi&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now let’s make sure that spawn-fcgi and nginx automatically start after a reboot.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;chkconfig --level 2345 nginx on
chkconfig --level 2345 spawn-fcgi on
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For more information about chkconfig check this site: &lt;a href=&#34;http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-services-chkconfig.html&#34;&gt;http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-services-chkconfig.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next up we have to fix a folder permission. The group of the session cookies folder, the address can be found in the php.ini (session.save_path = “/var/lib/php/session”). The folder group has to be changed from apache to whatever you use, e. g. nginx. You should check this after every php update.&lt;/p&gt;
&lt;p&gt;As a last step, just add the following line to the &lt;code&gt;/etc/nginx.conf&lt;/code&gt; and/or your custom domain configuration in &lt;code&gt;/etc/nginx/conf.d/yourdomain.conf&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;location ~ .php$ {
                include        fastcgi_params;
                fastcgi_pass   localhost:9000;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You should also make some additional changes in your configuration. I’m going to make another post about some of the settings.&lt;/p&gt;
&lt;p&gt;The official wiki is always a good source for help: &lt;a href=&#34;http://wiki.nginx.org/Configuration&#34;&gt;http://wiki.nginx.org/Configuration&lt;/a&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/02/19/nginx-with-php-on-centos-6/</guid>
      <pubDate>Sun, 19 Feb 2012 16:07:33 +0000</pubDate>
    </item>
    
    <item>
      <title>App: Mars Images</title>
      <link>https://black-pixel.net/2012/01/13/app-mars-images/</link>
      <description>&lt;p&gt;Mars Images is an app for Android and IOS smartphones that lets you browse the latest images from the Mars Exploration Rover Opportunity.&lt;/p&gt;
&lt;p&gt;The app has been developed by Mark Powell who works at the &lt;a href=&#34;http://www.jpl.nasa.gov/&#34; rel=&#34;noreferrer&#34; target=&#34;_blank&#34;&gt;Jet Propulsion Laboratory&lt;/a&gt; at NASA.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;When you start the app, you may have to wait a while until the first pictures have been loaded. If you get an error message, just close the app and start it again.&lt;/p&gt;
&lt;p&gt;Now you can see a lot of images, named after the related camera. (&lt;a href=&#34;http://en.wikipedia.org/wiki/Hazcam&#34;&gt;Hazcam&lt;/a&gt; and Pancam)&lt;/p&gt;
&lt;p&gt;The newest images appear on the top. If you want to load older ones, just scroll down. Below the name of the image, you can see when the picture was taken. The date is displayed in &lt;a href=&#34;http://en.wikipedia.org/wiki/Timekeeping_on_Mars#Sols&#34;&gt;Sols&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Once you’ve selected an image, you’ll get a little preview on the right. Select it to see the picture. You can zoom in, share the picture and there is also a 3D mode. You will need &lt;a href=&#34;http://en.wikipedia.org/wiki/Anaglyph_image&#34; title=&#34;Anaglyph image&#34;&gt;3D red cyan&lt;/a&gt; glasses to see them in 3D.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This is how everything looks like:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/stuff/marsImages/marsImage.png&#34;&gt;&lt;img title=&#34;Mars Images&#34; src=&#34;http://black-pixel.net/stuff/marsImages/marsImage.png&#34; alt=&#34;marsImage&#34; width=&#34;300&#34; height=&#34;534&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://black-pixel.net/stuff/marsImages/marsImage1.png&#34;&gt;&lt;img title=&#34;Mars Images&#34; src=&#34;http://black-pixel.net/stuff/marsImages/marsImage1.png&#34; alt=&#34;marsImage1&#34; width=&#34;300&#34; height=&#34;534&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/stuff/marsImages/marsImage2.png&#34;&gt;&lt;img title=&#34;Mars Images&#34; src=&#34;http://black-pixel.net/stuff/marsImages/marsImage2.png&#34; alt=&#34;marsImage2&#34; width=&#34;300&#34; height=&#34;534&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://black-pixel.net/stuff/marsImages/marsImage3D.png&#34;&gt;&lt;img title=&#34;Mars Images&#34; src=&#34;http://black-pixel.net/stuff/marsImages/marsImage3D.png&#34; alt=&#34;marsImage3D&#34; width=&#34;300&#34; height=&#34;534&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The official  homepage is: &lt;a href=&#34;http://www.powellware.com/Mars_Images/Mars_Images_Home.html&#34;&gt;http://www.powellware.com/Mars_Images/Mars_Images_Home.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Android market: &lt;a href=&#34;https://market.android.com/details?id=com.powellware.marsimages&#34;&gt;https://market.android.com/details?id=com.powellware.marsimages&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/01/13/app-mars-images/</guid>
      <pubDate>Fri, 13 Jan 2012 19:57:04 +0000</pubDate>
    </item>
    
    <item>
      <title>Sapphire HD 5850 Toxic Overclocking</title>
      <link>https://black-pixel.net/2012/01/03/sapphire-hd-5850-oc-overclocking/</link>
      <description>&lt;p&gt;This is a little report on the experience I made with overclocking my AMD Sapphire HD 5850 Toxic Edition. One problem is that this graphics card has a lock which prevents you from overclocking (actually you can oc a bit but not much) via software (I prefer MSI Afterburner).&lt;/p&gt;
&lt;p&gt;So the first thing you have to do is to flash the GPU with a BIOS that has no such lock.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning: This can damage your GPU and render it useless.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You will need a way to boot into a DOS. I’ve already posted a tutorial on how to set up a bootable pen drive with FreeDOS. You can find it &lt;a href=&#34;https://web.archive.org/web/20120229065608/http://black-pixel.net/bootable-usb-stick-with-grub4dos-freedos-and-iso-images-e-g-ubcd.html&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;To flash you GPU you need a tool called ATI Flash:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.techpowerup.com/downloads/2040/ATIFlash%203.89.html&#34;&gt;http://www.techpowerup.com/downloads/2040/ATIFlash%203.89.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Put the atiflash.exe onto your pen drive.&lt;/p&gt;
&lt;p&gt;As already mentioned before, you’ll also need an appropriate BIOS. This Asus BIOS worked well for me:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.techpowerup.com/vgabios/58225/Asus.HD5850.1024.090925.html&#34;&gt;http://www.techpowerup.com/vgabios/58225/Asus.HD5850.1024.090925.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Choose a shorter name for the file (you’ll have to type it in later) and then also put it onto the pen drive.&lt;/p&gt;
&lt;p&gt;The last thing you need on your pen drive is a backup of your current BIOS. You can create one with GPU-Z.&lt;/p&gt;
&lt;p&gt;[&lt;img class=&#34;alignnone size-full wp-image-775&#34; title=&#34;GPU-ZOC&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2012/01/GPU-ZOC.gif&#34; alt=&#34;GPU-ZOC&#34; width=&#34;300&#34; height=&#34;256&#34; /&gt;][2]&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Now with all three files on your pen drive, reboot your PC and set the BIOS to boot from your pen drive.&lt;/p&gt;
&lt;p&gt;One thing that will help you a lot in case of a failure is to note down every step you have to make to flash the BIOS so you can do it blindly if you graphics card won’t work after the flashing. This way you can reflash you backup easily.&lt;/p&gt;
&lt;p&gt;So once you’ve booted into freeDOS, type &lt;code&gt;atiflash -f -p 0 thenameyouchose.bin&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This will flash your graphics card with the selected BIOS.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Now reboot and if your graphics card still works you can start overclocking. You will notice that you can set all the values in MSI Afterburner freely now.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2012/01/03/sapphire-hd-5850-oc-overclocking/</guid>
      <pubDate>Tue, 03 Jan 2012 20:50:55 +0000</pubDate>
    </item>
    
    <item>
      <title>QTTabBar: Tabs for Windows</title>
      <link>https://black-pixel.net/2011/11/20/qttabbar-tabs-for-windows/</link>
      <description>&lt;p&gt;In this post I’ll show you another nice tool to enhance your Windows. QTTabBar adds tabs and some other nice features to the Windows Explorer. I’ll just show you some basic stuff, there is a lot to discover.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;You can download QTTabBar from the official homepage:  &lt;a href=&#34;http://qttabbar.sourceforge.net/&#34;&gt;&lt;a href=&#34;http://qttabbar.sourceforge.net/&#34;&gt;http://qttabbar.sourceforge.net/&lt;/a&gt;&lt;/a&gt;&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE 19.04.2014:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The version on the Sourceforge page seems to no longer be actively maintained and does not work on Windows 8. However there is another version of this software that does work and seems to be actively maintained. You can find it at::&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://qttabbar.wikidot.com/&#34;&gt;http://qttabbar.wikidot.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;After installing it, your Explorer window should look like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/11/1.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-738&#34; title=&#34;qttabbar1&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/1-300x73.jpg&#34; alt=&#34;qttabbar1&#34; width=&#34;300&#34; height=&#34;73&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If you right-click your Tab, you can see some extra functions:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/11/21.jpg&#34;&gt;&lt;img class=&#34;alignnone size-full wp-image-739&#34; title=&#34;qttabbar2&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/21.jpg&#34; alt=&#34;qttabbar2&#34; width=&#34;305&#34; height=&#34;356&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Most of the things here should be self explanatory. Groups are very nice. You can create groups and add folders to them. Now you can click on the star on the left and select one of your groups, this will open all of the groups folders in separate tabs.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You will also notice a little arrow pointing down when you move your mouse over a folder, if you click on that, a drop down menu will show you all the folders and files located inside of it and you can then jump directly to where you want.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/11/31.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-740&#34; title=&#34;qttabbar3&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/31-300x114.jpg&#34; alt=&#34;qttabbar3&#34; width=&#34;300&#34; height=&#34;114&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;You can also just move any folder to your tab bar and it will appear as a new tab.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Like I’ve already said, there are lot’s of feature you can discover, just play a little around with it.&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/11/20/qttabbar-tabs-for-windows/</guid>
      <pubDate>Sun, 20 Nov 2011 10:33:27 +0000</pubDate>
    </item>
    
    <item>
      <title>Dexpot: Virtual Desktops for Windows</title>
      <link>https://black-pixel.net/2011/11/11/dexpot-virtual-desktops-for-windows/</link>
      <description>&lt;p&gt;If you’ve ever used Linux and went back to Winows, you’ll sure miss the virtual desktops. Dexpot is a free (for private use) program that gives you virtual desktops just like in Linux. You have a lot of settings and can configure it as you like.&lt;/p&gt;
&lt;p&gt;You can download it from &lt;a href=&#34;http://www.dexpot.de/index.php?lang=en&#34;&gt;http://www.dexpot.de/index.php?lang=en&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;First of all, one thing I really appreciate about this program is that it allows you to copy windows to every workspace, so for example if you are using two monitors like me and want to have a video on one of the monitors all the time, you can simple “copy” it to every virtual desktop.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Dexpot has a lot of functions and as far as I see it, it can do everything the workspaces in Linux do and maybe even more. I’ll just quote some stuff from the homepage and add some screenshots so you can see how it looks.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;text-decoration: underline;&#34;&gt;&lt;strong&gt;Dexgrid&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Activate in ‘Settings • Plugins and Extras’.&lt;/p&gt;
&lt;p&gt;This plugin adds a grid layout to your desktops.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Animation during desktop switching&lt;/li&gt;
&lt;li&gt;Switch left, right, up or down in the grid&lt;/li&gt;
&lt;li&gt;Copy or move a window left, right, up or down in the grid&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Screens:&lt;/p&gt;
&lt;p&gt;2 Monitors&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/11/grid3.jpg&#34;&gt;&lt;img class=&#34;alignnone size-large wp-image-733&#34; title=&#34;grid3&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/grid3-1024x320.jpg&#34; width=&#34;500&#34; height=&#34;156&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1 Monitor&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/11/grid1.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-729&#34; title=&#34;grid1&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/grid1-300x187.jpg&#34; width=&#34;300&#34; height=&#34;187&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/11/grid2.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-730&#34; title=&#34;grid2&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/grid2-300x187.jpg&#34; width=&#34;300&#34; height=&#34;187&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;text-decoration: underline;&#34;&gt;&lt;strong&gt;Taskbar Pager&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Activate in ‘Settings • Plugins and Extras’.&lt;/p&gt;
&lt;p&gt;This plugin integrates a pager similar to the “Desktop Preview” directly into the Windows taskbar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Switch desktops with a single click&lt;/li&gt;
&lt;li&gt;Drag &amp;amp; Drop a window to another desktop&lt;/li&gt;
&lt;li&gt;To copy a window, drag it while holding the Ctrl key&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
  &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/11/taskbar.jpg&#34;&gt;&lt;img class=&#34;alignnone  wp-image-731&#34; title=&#34;taskbar&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/taskbar.jpg&#34; width=&#34;521&#34; height=&#34;27&#34; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
  Note: I am using two Monitors. So what you see are 4 desktops.
&lt;/div&gt;
&lt;div&gt;
  &lt;span style=&#34;text-decoration: underline;&#34;&gt;&lt;strong&gt;SevenDex&lt;/strong&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;p&gt;
    Activate in &amp;#8216;Settings • Plugins and Extras&amp;#8217;.
  &lt;/p&gt;
  &lt;p&gt;
    SevenDex adds a supplemental button to the Windows 7 taskbar, which will give you a thumbnail view of all your available desktops when hovering over or clicking on it.
  &lt;/p&gt;
  &lt;p&gt;
    New in version 1.5.1:
  &lt;/p&gt;
  &lt;p&gt;
    Pin SevenDex to your task bar. If Dexpot isn&amp;#8217;t running, just click the SevenDex icon to start Dexpot. Clou.
  &lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;
      Hover over a thumbnail, and a preview of your desktop appears
    &lt;/li&gt;
    &lt;li&gt;
      If you hover over the thumbnail of your current desktop, you can peek through all windows (Aero Peek).
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;
    &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/11/sevendex.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-732&#34; title=&#34;sevendex&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/sevendex-300x81.jpg&#34; width=&#34;300&#34; height=&#34;81&#34; /&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style=&#34;text-decoration: underline;&#34;&gt;&lt;strong&gt;Dexcube&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Activate in ‘Settings • Plugins and Extras’.&lt;/p&gt;
&lt;p&gt;Dexcube offers 3D transition effects.&lt;/p&gt;
&lt;p&gt;In order to use Dexcube, you need &lt;a href=&#34;http://www.microsoft.com/downloads/details.aspx?displaylang=de&amp;FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&#34; target=&#34;_blank&#34;&gt;DirectX 9&lt;/a&gt; (pre-installed since Windows XP).&lt;/p&gt;
&lt;p&gt;Possible transition effects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cube&lt;/li&gt;
&lt;li&gt;Breakfast plate&lt;/li&gt;
&lt;li&gt;Wall&lt;/li&gt;
&lt;li&gt;Filmstrip&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Change the zoom settings in order to get more effect variations.&lt;/p&gt;
&lt;p&gt;Tip:&lt;/p&gt;
&lt;p&gt;Press &lt;strong&gt;Ctrl+Alt&lt;/strong&gt; and &lt;strong&gt;Up-arrow&lt;/strong&gt;. Keep &lt;strong&gt;Ctrl+Alt&lt;/strong&gt; pressed, additionally press &lt;strong&gt;Right-arrow&lt;/strong&gt; or &lt;strong&gt;Left-arrow&lt;/strong&gt; to rotate the cube.&lt;/p&gt;
&lt;p&gt;Official Video:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.youtube.com/watch?v=KSQiYmzU_QA&#34;&gt;http://www.youtube.com/watch?v=KSQiYmzU_QA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;And there is a lot more!  &lt;a href=&#34;http://www.dexpot.de/index.php?id=produkt&#34;&gt;http://www.dexpot.de/index.php?id=produkt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I hope you like it as much as I do. If you have questions or want me to test something or just want to tell your opinion, feel free to write a comment. 🙂&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/11/11/dexpot-virtual-desktops-for-windows/</guid>
      <pubDate>Fri, 11 Nov 2011 17:36:49 +0000</pubDate>
    </item>
    
    <item>
      <title>Origin &amp; BF3 in Sandboxie</title>
      <link>https://black-pixel.net/2011/11/01/origin-bf3-in-sandboxie/</link>
      <description>&lt;p&gt;To prevent Origin from scanning your PC, you can run it in a program called Sandboxie. In this post I’m going to show you how to set up Sandboxie.&lt;/p&gt;
&lt;p&gt;First of all you have to download Sandboxie. The free version should be enough.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.sandboxie.com/&#34;&gt;http://www.sandboxie.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Your first step in Sandboxie is to create a new sandbox (I called it origin).&lt;/p&gt;
&lt;p&gt;You can also use the default sandbox if you want to.&lt;/p&gt;
&lt;p&gt;Next, select Configure from the menu and click on Edit Configuration.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/2.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;In the now opened Sandbox.ini add at the bottom of the file under the [origin] category:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;OpenFilePath=C:\
OpenFilePath=C:\Program Files (x86)\Origin\
OpenFilePath=C:\Program Files (x86)\Origin Games\
OpenFilePath=C:\Users\Username\Documents\Battlefield 3\
OpenFilePath=C:\Users\Username\AppData\Roaming\Origin
OpenFilePath=C:\Users\Username\AppData\Local\Origin
OpenFilePath=C:\Program Files (x86)\SRWare Iron\
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The paths might differ from your installation so you have to check them. In this case I am using SRWare Iron as Browser for BF3, you have to run the Browser you want to use for the Battlelog in a sandbox, else the BF3.exe might crash.&lt;/p&gt;
&lt;p&gt;Underneath this, you can add all the folders you want Origin to not access.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ClosedFilePath=Z:\
ClosedFilePath=X:\
ClosedFilePath=G:\
ClosedFilePath=C:\foobar2000\
ClosedFilePath=C:\LaTeX\
ClosedFilePath=C:\MinGW\
ClosedFilePath=C:\Python27\
ClosedFilePath=C:\ProgramData\Adobe\
ClosedFilePath=C:\ProgramData\BOINC\
ClosedFilePath=C:\ProgramData\MiKTeX\
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A fast way to do this is to go to the Folder (for example C:Program Files (x86)) and click on the icon before the folder path:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/3.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Next replace it with cmd and press enter:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/4.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Now a console window is open, type dir /d and press enter.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/11/5.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Now you will see all the folders, you just have to copy them and replace the brackets.&lt;/p&gt;
&lt;p&gt;Attention!&lt;/p&gt;
&lt;p&gt;Do not Close the File Path for folders you opened at the beginning, in this case:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;C:\
C:\Program Files (x86)
C:\Users\Username\Documents\
C:\Users\Username\AppData\
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Attention 64bit Users! To prevent random crashes, block access to the IGO32.dll&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ClosedFilePath=C:\Program Files (x86)\Origin\IGO32.dll
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Remember that you have to start the Browser and Origin in the Sandbox. You can let them always start in a Sandbox by adding this to the Sandbox.ini file:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This only works for the purchased version of Sandboxie.&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ForceProcess=bf3.exe
ForceProcess=origin.exe
ForceFolder=C:\Program Files (x86)\SRWare Iron
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here are two links that helped me:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.sandboxie.com/phpbb/viewtopic.php?t=11767&#34;&gt;http://www.sandboxie.com/phpbb/viewtopic.php?t=11767&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://bf3blog.com/forum/topic/how-to-make-origin-stay-away-from-the-rest-of-your-computer&#34;&gt;http://bf3blog.com/forum/topic/how-to-make-origin-stay-away-from-the-rest-of-your-computer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you have questions or problems, feel free to write a comment, I’m  happy to help you.&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/11/01/origin-bf3-in-sandboxie/</guid>
      <pubDate>Tue, 01 Nov 2011 16:48:09 +0000</pubDate>
    </item>
    
    <item>
      <title>Ubuntu 11.10: Fix Touchpad</title>
      <link>https://black-pixel.net/2011/10/17/ubuntu-11-10-fix-touchpad/</link>
      <description>&lt;p&gt;I’ve recently updated Ubuntu on my Subnotebook to version 11.10. After the update, my touchpad did not work anymore.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;To fix this, first open &lt;code&gt;/etc/default/grub&lt;/code&gt; with your favourite editor.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo vim /etc/default/grub&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Find the line&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GRUB_CMDLINE_LINUX=&amp;quot;&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;and change it to&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GRUB_CMDLINE_LINUX=&amp;quot;i8042.nopnp&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now update grub and reboot.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo update-grub&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo shutdown -r now&lt;/code&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/10/17/ubuntu-11-10-fix-touchpad/</guid>
      <pubDate>Mon, 17 Oct 2011 14:55:57 +0000</pubDate>
    </item>
    
    <item>
      <title>Google Calendar in Windows 7</title>
      <link>https://black-pixel.net/2011/10/17/google-calendar-in-windows-7/</link>
      <description>&lt;p&gt;This is a short post on how you can display your Google calendar on your Windows 7 desktop.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;First of all you have to download the &lt;a href=&#34;http://wlcalendargadget.codeplex.com/&#34;&gt;Windows Live Calendar Gadget&lt;/a&gt;. Next go to the settings of your Google calendar.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/10/googlecalendar1.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Now click on your calendar and select the private ICAL address.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/10/googlecalendar2.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Copy the shown address and paste it into the settings of the Windows Live Calendar Gadget.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/10/googlecalendar3.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;That’s it.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/10/17/google-calendar-in-windows-7/</guid>
      <pubDate>Mon, 17 Oct 2011 13:24:23 +0000</pubDate>
    </item>
    
    <item>
      <title>Ram device with TmpFS</title>
      <link>https://black-pixel.net/2011/09/21/ram-device-with-tmpfs/</link>
      <description>&lt;p&gt;In the last post I’ve showed you how to set up a ram device using ramdisk  (e.g. /dev/ram0). Now I’ll show you how to create a ram device with tmpfs. This is especially necessary if you are on a VServer and therefore can’t increase the size of the ramdisk.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TmpFS&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is how you mount a tmpfs volume with 128MB space:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mkdir -p /mnt/tmp
mount -t tmpfs -o size=128m tmpfs /mnt/tmp
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you don’t set the size, it will use 50% of the available memory. You can set the size as a normal value (size=128[k,m,g]) or as a percentage value (size=20%).&lt;/p&gt;
&lt;p&gt;If you want to see if it worked or how much of the device is used, use the command &lt;code&gt;df -k&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In my opinion, this is the best method to set up a ram device. There is also ramfs, on which tmpfs is based on, but I don’t recommend it.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Don’t forget that you will loose all the data on the ram device if the computer reboots or crashes, so make sure you do regular backups.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;For more information, check out this link:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/&#34;&gt;http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/09/21/ram-device-with-tmpfs/</guid>
      <pubDate>Wed, 21 Sep 2011 16:58:15 +0000</pubDate>
    </item>
    
    <item>
      <title>Set up a Ramdisk on CentOS (e.g. for a Minecraft Server)</title>
      <link>https://black-pixel.net/2011/09/16/set-up-a-ramdisk-on-centos-e-g-for-a-minecraft-server/</link>
      <description>&lt;p&gt;&lt;em&gt;UPDATE: I recommend setting up a ram device with tmpfs as I’ve described here: &lt;a href=&#34;http://black-pixel.net/ram-device-with-tmpfs.html&#34;&gt;http://black-pixel.net/ram-device-with-tmpfs.html&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I had some performance problems with my Minecraft server and decided to run it on a ramdisk. This is a tutorial on how to set it up on CentOS.&lt;/p&gt;
&lt;p&gt;Since Linux Kernel 2.4 ramdisk support is built-in.&lt;/p&gt;
&lt;p&gt;To see the names of the ramdisk devices:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ls -l /dev/ram*
brw-rw----. 1 root disk 1,  0 Sep 16 20:40 /dev/ram0
brw-rw----. 1 root disk 1,  1 Sep 16 20:36 /dev/ram1
brw-rw----. 1 root disk 1, 10 Sep 16 20:36 /dev/ram10
brw-rw----. 1 root disk 1, 11 Sep 16 20:36 /dev/ram11
brw-rw----. 1 root disk 1, 12 Sep 16 20:36 /dev/ram12
brw-rw----. 1 root disk 1, 13 Sep 16 20:36 /dev/ram13
brw-rw----. 1 root disk 1, 14 Sep 16 20:36 /dev/ram14
brw-rw----. 1 root disk 1, 15 Sep 16 20:36 /dev/ram15
brw-rw----. 1 root disk 1,  2 Sep 16 20:36 /dev/ram2
brw-rw----. 1 root disk 1,  3 Sep 16 20:36 /dev/ram3
brw-rw----. 1 root disk 1,  4 Sep 16 20:36 /dev/ram4
brw-rw----. 1 root disk 1,  5 Sep 16 20:36 /dev/ram5
brw-rw----. 1 root disk 1,  6 Sep 16 20:36 /dev/ram6
brw-rw----. 1 root disk 1,  7 Sep 16 20:36 /dev/ram7
brw-rw----. 1 root disk 1,  8 Sep 16 20:36 /dev/ram8
brw-rw----. 1 root disk 1,  9 Sep 16 20:36 /dev/ram9
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The standard ramdisk size is very low ( &amp;lt; 20MB) so you may need to increase it.&lt;/p&gt;
&lt;p&gt;To increase it, in my case to 128MB, you have to edit the /etc/grub.conf and add ramdisk_size=131072 at the end of the kernel line:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; kernel /boot/vmlinuz-2.6.32-71.29.1.el6.x86_64 ro root=/dev/md2 &amp;lt;strong&amp;gt;ramdisk_size=131072&amp;lt;/strong&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now reboot so the changes take effect.&lt;/p&gt;
&lt;p&gt;Once rebooted, format one of the ramdisk devices:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mke2fs -m 0 /dev/ram0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now create a folder, mount the device and set the appropriate owner.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir /home/user/ramdisk 

mount /dev/ram0 /home/user/ramdisk 

chown user:user /home/user/ramdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s it. Remember that everything you put onto the ramdisk is lost after rebooting. So back it up before you reboot the server or better set up a cron job to do regular backups for you.&lt;/p&gt;
&lt;p&gt;If you want the ramdisk to be set up automatically after a reboot add the following to your /etc/rc.local file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mke2fs -m 0 /dev/ram0 

mount /dev/ram0 /home/user/ramdisk 

chown user:user /home/user/ramdisk 

# Example for copying the backup back on the ramdisk 

# cp -R /home/user/backup/* /home/user/ramdisk/
&lt;/code&gt;&lt;/pre&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/09/16/set-up-a-ramdisk-on-centos-e-g-for-a-minecraft-server/</guid>
      <pubDate>Fri, 16 Sep 2011 23:48:26 +0000</pubDate>
    </item>
    
    <item>
      <title>PyTAG: Saving and Loading</title>
      <link>https://black-pixel.net/2011/09/05/pytag-saving-and-loading/</link>
      <description>&lt;p&gt;This is another of my “Python Text Adventure Game” tutorials. I’ll show you a simple way to save data to a file and load it again.&lt;/p&gt;
&lt;p&gt;First of all, you have to import the regular expression module &lt;a href=&#34;http://docs.python.org/library/re.html&#34;&gt;re&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;import re&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now set some variables:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;name = raw_input(&amp;#34;Your name: &amp;#34;)
weapon = raw_input(&amp;#34;Your weapon: &amp;#34;)
level = raw_input(&amp;#34;Your level: &amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now you need a class with the save and load functions:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;class Option:
  #The function to save your current data
  def save(self):
    #Open the file or create it if it does not exist&amp;lt;br /&amp;gt;
    self.f = open(&amp;#39;saves.txt&amp;#39;, &amp;#39;w+&amp;#39;)
    #Put everything you want to save in a single variable and use two spaces as a separator
    #It would look like this: Username  5  Sword
    self.savegame = name + &amp;#34;  &amp;#34; + weapon + &amp;#34;  &amp;#34; + str(level)
    #Now write it into the file. this will overwrite any existing save
    self.f.write(self.savegame)
    #Close the file
    self.f.close()
    def load(self):
      #Open the file
      self.f = open(&amp;#39;saves.txt&amp;#39;, &amp;#39;r&amp;#39;)
      #Create a list for the saves
      self.saves = []
      #Add each line to the list and count up
      for line in self.f:
        self.saves.append(line)
      #We are assuming that there is only one savegame and that it is in the first line
      #Now we use the imported re module to search the content of the file for a pattern and group it
      #You can find more infos about it here: http://docs.python.org/library/re.html
      self.match = re.search(r&amp;#39;(w+s*w*)ss(w+s*w*)ss(d+)&amp;#39;, self.saves[0])
      #Now put the groups in the related variables
      name = self.match.group(1)
      weapon = self.match.group(2)
      level = self.match.group(3)
      #Close the file
      self.f.close()`
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Add this code to test everything:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;loop = 1
while loop == 1:
  print &amp;#34;What do you want to test?&amp;#34;
  print &amp;#34;1) Save&amp;#34;
  print &amp;#34;2) Load&amp;#34;
  choice = int(raw_input())
  if choice == 1:
    # Create some variables
    Option().save()
    print &amp;#34;Saved&amp;#34;
  elif choice == 2:
    Option().load()
    print &amp;#34;Name: &amp;#34; + name
    print &amp;#34;Weapon: &amp;#34; + weapon
    print &amp;#34;Level: &amp;#34; + str(level)
    raw_input()
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/09/05/pytag-saving-and-loading/</guid>
      <pubDate>Mon, 05 Sep 2011 14:07:23 +0000</pubDate>
    </item>
    
    <item>
      <title>Bootable Pen Drive with Grub4DOS, FreeDOS and ISO Images (e.g. UBCD)</title>
      <link>https://black-pixel.net/2011/08/27/bootable-usb-stick-with-grub4dos-freedos-and-iso-images-e-g-ubcd/</link>
      <description>&lt;p&gt;In this post I’ll show you a really neat pen drive installation. A bootable pen drive with FreeDOS installed (no images used) and Grub4DOS to load any ISO image you want.&lt;/p&gt;
&lt;p&gt;Start with formatting the USB-Stick using FAT32. The first thing to care about now is Grub4DOS.&lt;/p&gt;
&lt;p&gt;You’ll need the latest version of Grub4DOS and the Installer:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://download.gna.org/grub4dos/grub4dos-0.4.4.zip&#34;&gt;http://download.gna.org/grub4dos/grub4dos-0.4.4.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://download.gna.org/grubutil/grubinst-1.1-bin-w32-2008-01-01.zip&#34;&gt;http://download.gna.org/grubutil/grubinst-1.1-bin-w32-2008-01-01.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now extract them and start &lt;code&gt;grubinst_gui.exe&lt;/code&gt; as administrator.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/08/grub4dos1.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Select &lt;code&gt;Disk&lt;/code&gt;, click on &lt;code&gt;Refresh&lt;/code&gt; and then select your pen drive.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/08/grub4dos2.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Click on &lt;code&gt;Refresh&lt;/code&gt; at &lt;code&gt;Part List&lt;/code&gt; and then select &lt;code&gt;Whole disk (MBR)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you get an error message complaining about an invalid partition table, just put &lt;code&gt;-skip-mbr-test&lt;/code&gt; in the &lt;code&gt;Extra&lt;/code&gt; field.&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/08/grub4dos3.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Select &lt;code&gt;Don&#39;t search floppy&lt;/code&gt; and leave the rest as it is, then click on Install.&lt;/p&gt;
&lt;p&gt;Now you should get this message:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/08/grub4dos4.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Next up, copy the file &lt;code&gt;grldr&lt;/code&gt; (NOT grldr.mbr) onto the pen drive and create a new file called &lt;code&gt;menu.lst&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;color green/black black/green white/black white/black
timeout 30
default 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is the first part. It defines the color of the menu, the default menu selection and the time after which the default menu selection is executed.&lt;/p&gt;
&lt;p&gt;Now we’ll add something to boot CD ISO images, in this case, Ultimate Boot CD. (You can add any Image you want, such as Linux live distributions or Windows DVDs , just create a menu entry for every iso)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.ultimatebootcd.com/download.html&#34;&gt;http://www.ultimatebootcd.com/download.html&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;title Ultimate Boot CD
map (hd0,0)/ubcd511.iso (hd32)
map &amp;amp;#8211;hook
chainloader (hd32)
boot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You have to copy the &lt;code&gt;ubcd511.iso&lt;/code&gt; in the root directory of your pen drive. You can also create a folder called “Images” and put it in there. Just make sure you set the appropriate path to the file.&lt;/p&gt;
&lt;p&gt;Now let’s set up FreeDOS.&lt;/p&gt;
&lt;p&gt;Download &lt;span style=&#34;background-color: #c0c0c0;&#34;&gt;fdbasecd.iso&lt;/span&gt; from &lt;a href=&#34;http://www.freedos.org/freedos/files/&#34;&gt;http://www.freedos.org/freedos/files/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Extract or mount it and copy the folder &lt;code&gt;ODIN&lt;/code&gt; from &lt;code&gt;FREEDOSSETUP&lt;/code&gt; onto the pen drive and copy &lt;code&gt;COMMAND.COM&lt;/code&gt; from the &lt;code&gt;ODIN&lt;/code&gt; folder into the root of the device.&lt;/p&gt;
&lt;p&gt;The last step is to add the following to your menu.lst to boot FreeDOS:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;title Boot FreeDOS
root (hd0,0)
chainloader /ODIN/kernel.sys
boot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you want you can also add the following lines at the end, they should be self explanatory.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;title reboot
reboot

title halt
halt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Congratulations, your done. Now you can try it. It should look like this:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/08/grub4dos51-300x194.gif&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2013-06-23:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t know why but it is possible that you’ll get this error message when you boot FreeDOS:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Bad or missing Command INterpreter: command.com /P /E:256
Enter the full shell command line:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It seems like FreeDOS is searching for the command.com file in the root directory. Anyway, all you have to do is enter the full path: &lt;code&gt;/ODIN/command.com /P /E:256&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;amp;nbKsp;&lt;/p&gt;
&lt;p&gt;Here are several links that helped me to work things out:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://diddy.boot-land.net/grub4dos/files/boot.htm&#34;&gt;http://diddy.boot-land.net/grub4dos/files/boot.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.themudcrab.com/acronis_grub4dos.php&#34;&gt;http://www.themudcrab.com/acronis_grub4dos.php&lt;/a&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/08/27/bootable-usb-stick-with-grub4dos-freedos-and-iso-images-e-g-ubcd/</guid>
      <pubDate>Sat, 27 Aug 2011 21:03:17 +0000</pubDate>
    </item>
    
    <item>
      <title>New Theme</title>
      <link>https://black-pixel.net/2011/08/20/new-theme/</link>
      <description>&lt;p&gt;Even though I’ve changed the theme just a month ago, I made a new one. This time I’ve tried to focus more on usability. It is based on the &lt;a href=&#34;http://wordpress.org/extend/themes/oulipo&#34;&gt;Oulipo&lt;/a&gt; theme by &lt;span class=&#34;Apple-style-span&#34;&gt;&lt;a title=&#34;Visit author homepage&#34; href=&#34;http://andreamignolo.com/&#34;&gt;A. Mignolo&lt;/a&gt;. I’ve chosen this one because of the very nice typography. If you like it or have any suggestions, feel free to write a comment.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Unfortunately Firefox does not display my custom font for the recent tweets title (the blue box in the header). It seems that @font-face does not work since FF &lt;span class=&#34;Apple-style-span&#34; style=&#34;font-size: small;&#34;&gt;3.6.10. Here is a link on that topic: &lt;a href=&#34;https://support.mozilla.com/de/questions/753529&#34;&gt;&lt;a href=&#34;https://support.mozilla.com/de/questions/753529&#34;&gt;https://support.mozilla.com/de/questions/753529&lt;/a&gt;&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;After searching for a while, I’ve found this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://stackoverflow.com/questions/2856502/css-font-face-not-working-with-firefox-but-working-with-chrome-and-ie&#34;&gt;http://stackoverflow.com/questions/2856502/css-font-face-not-working-with-firefox-but-working-with-chrome-and-ie&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It seems that in my case it is a cross domain problem, as I am also using the domain black-pixel.info on which the title is displayed. Not in the font I want it to be, but it is displayed. I’ve tried the .htaccess fix but it does not work.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/08/20/new-theme/</guid>
      <pubDate>Sat, 20 Aug 2011 11:37:15 +0000</pubDate>
    </item>
    
    <item>
      <title>Configure Vsftpd to use FTPS</title>
      <link>https://black-pixel.net/2011/08/02/configure-vsftpd-to-use-ftps/</link>
      <description>&lt;p&gt;This is a little HOWTO on configuring Vsftpd to use &lt;strong&gt;FTP&lt;/strong&gt; over &lt;strong&gt;S&lt;/strong&gt;SL and FTPS only, which is highly recommended. You can use it to upgrade WordPress and install plugins, for example.&lt;/p&gt;
&lt;p&gt;First open your &lt;code&gt;vsftpd.conf&lt;/code&gt;, it should be located in &lt;code&gt;/etc/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now add the following lines to enable SSL:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The last thing you need is to specify the SSL files. There are already default files you can use.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# This option specifies the location of the RSA key to use for SSL
# encrypted connections.
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can also use your own SSL files if you want. You just have to set the appropriate path.&lt;/p&gt;
&lt;p&gt;After a restart of Vsftpd, everything should work.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: If you’ve just installed vsftpd, you should make some additional configurations depending on your needs.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;These are some adjustments I recommend:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
# Uncomment this to allow local users to log in.
local_enable=YES
# Uncomment this to enable any form of FTP write command.
write_enable=YES
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd&amp;#39;s)
local_umask=022
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/08/02/configure-vsftpd-to-use-ftps/</guid>
      <pubDate>Tue, 02 Aug 2011 21:52:29 +0000</pubDate>
    </item>
    
    <item>
      <title>Project File Server 2: The Hardware</title>
      <link>https://black-pixel.net/2011/07/30/project-file-server-2-the-hardware/</link>
      <description>&lt;p&gt;Because of some problems with my file server, I’ve decided to buy new hardware and make a fresh install.&lt;/p&gt;
&lt;h1 id=&#34;this-is-the-hardware-i-am-using&#34;&gt;This is the hardware I am using:&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CPU&lt;/strong&gt;: AMD Athlon II X3 415e&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mainboard&lt;/strong&gt;: GIGABYTE GA-870A-UD3 Rev. 3.1&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GPU&lt;/strong&gt;: Sapphire ATI Radeon HD5450&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;RAM&lt;/strong&gt;: Kingston ValueRAM DIMM 4 GB DDR3-1333&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Power supply&lt;/strong&gt;: Thermaltake Toughpower 750 W&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;System HDD&lt;/strong&gt;: Seagate Barracuda 320GB&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;File HDDs&lt;/strong&gt;: 6 x Samsung HD154UI 1,5 TB (RAID 6)&lt;/p&gt;
&lt;p&gt;
  Pictures:
&lt;/p&gt;
&lt;p&gt;
  &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/07/cpu.jpg&#34;&gt;&lt;img class=&#34;alignnone size-thumbnail wp-image-586&#34; title=&#34;cpu&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/07/cpu-150x150.jpg&#34; alt=&#34;cpu&#34; width=&#34;150&#34; height=&#34;150&#34; /&gt;&lt;/a&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/07/mobo.jpg&#34;&gt;&lt;img class=&#34;alignnone size-thumbnail wp-image-587&#34; title=&#34;mainboard&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/07/mobo-150x150.jpg&#34; alt=&#34;mainboard&#34; width=&#34;150&#34; height=&#34;150&#34; /&gt;&lt;/a&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/07/gpu.jpg&#34;&gt;&lt;img class=&#34;alignnone size-thumbnail wp-image-588&#34; title=&#34;gpu&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/07/gpu-150x150.jpg&#34; alt=&#34;gpu&#34; width=&#34;150&#34; height=&#34;150&#34; /&gt;&lt;/a&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/07/ram.jpg&#34;&gt;&lt;img class=&#34;alignnone size-thumbnail wp-image-589&#34; title=&#34;ram&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/07/ram-150x150.jpg&#34; alt=&#34;ram&#34; width=&#34;150&#34; height=&#34;150&#34; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/07/30/project-file-server-2-the-hardware/</guid>
      <pubDate>Sat, 30 Jul 2011 14:13:20 +0000</pubDate>
    </item>
    
    <item>
      <title>New CSS 3 Theme</title>
      <link>https://black-pixel.net/2011/07/16/new-css-3-theme/</link>
      <description>&lt;p&gt;This is my new CSS 3 theme, it’s based on the Twenty Eleven theme. Took me quite a while but it was worth it. The only pictures in this design are the “Pixel” before the title and the social icons.&lt;/p&gt;
&lt;p&gt;Some additional tweaks may follow once I’ve gain more experience with CSS 3. 🙂&lt;/p&gt;
&lt;p&gt;Here are some useful links about CSS 3:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.css3.info/&#34;&gt;http://www.css3.info/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.addictivefonts.com/various/css3/css3-text-effects/&#34;&gt;http://www.addictivefonts.com/various/css3/css3-text-effects/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.webdesignerdepot.com/2011/01/50-awesome-css3-techniques-for-better-designs/&#34;&gt;http://www.webdesignerdepot.com/2011/01/50-awesome-css3-techniques-for-better-designs/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/07/16/new-css-3-theme/</guid>
      <pubDate>Sat, 16 Jul 2011 23:51:50 +0000</pubDate>
    </item>
    
    <item>
      <title>PHP: Simple Chart Script</title>
      <link>https://black-pixel.net/2011/07/07/php-simple-chart-script/</link>
      <description>&lt;p&gt;Source:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;?php
if (in_array($_GET[&amp;#34;table_name&amp;#34;], array(&amp;#39;cooler&amp;#39;))) {
	$table_name = $_GET[&amp;#34;table_name&amp;#34;];
  }
else {
  $table_name = &amp;#34;cooler&amp;#34;;
  }

if (in_array($_GET[&amp;#34;order_value&amp;#34;], array(&amp;#39;name&amp;#39;, &amp;#39;standard&amp;#39;, &amp;#39;overclock&amp;#39;))) {
	$order_value = $_GET[&amp;#34;order_value&amp;#34;];
  }
else {
  $order_value = &amp;#34;name&amp;#34;;
  }

if(in_array($_GET[&amp;#34;order_align&amp;#34;], array(&amp;#39;asc&amp;#39;, &amp;#39;desc&amp;#39;))) {
  $order_align = $_GET[&amp;#34;order_align&amp;#34;];
  }
else {
  $order_align = &amp;#34;asc&amp;#34;;
  }
?&amp;gt;

&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;PHP-Chart&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

&amp;lt;?php
include(&amp;#34;myConnectionDetails&amp;#34;);
$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
if ( ! $db_link )
{
  die(&amp;#39;No connection available at the moment&amp;#39;);
}

$db_sel = mysql_select_db( MYSQL_DATENBANK )
        or die(&amp;#34;Database not available&amp;#34;);
?&amp;gt;

&amp;lt;form name=&amp;#34;form_table&amp;#34; action=&amp;#34;php_chart.php&amp;#34;
 method=&amp;#34;GET&amp;#34; enctype=&amp;#34;text/html&amp;#34;&amp;gt;
&amp;lt;p&amp;gt;Database&amp;lt;/p&amp;gt;
&amp;lt;select name=&amp;#39;table_name&amp;#39;&amp;gt;
  &amp;lt;option value=&amp;#39;cooler&amp;#39;&amp;gt;CPU-Cooler&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;
&amp;lt;input type=&amp;#34;Submit&amp;#34; value=&amp;#34;Select&amp;#34; /&amp;gt;
&amp;lt;/form&amp;gt;

&amp;lt;?php
if ($table_name) {
	$ausgabe = mysql_query(&amp;#34;select * FROM $table_name Order by $order_value $order_align&amp;#34;);

	//Define arrays and variable i (for the while loop)
	$name = array();
	$standard = array();
	$overclock = array();
	$i = 0;

	while ($rows=mysql_fetch_array($ausgabe)) {

		//Arrays for the rows
		$name[$i] = $rows[&amp;#39;name&amp;#39;];
		$standard[$i] = $rows[&amp;#39;standard&amp;#39;];
		$overclock[$i] = $rows[&amp;#39;overclock&amp;#39;];

		//Count up for each loop
		$i = $i+1;
	}

	// Define a new variable for the highest value of each array
	$max_standard = max($standard);
	$max_overclock = max($overclock);

	// Find out what value is the highest and calculate the lengh of the regarding bars
	for ($y = 0; $y &amp;lt; $i; $y++){
		if 	($max_standard &amp;gt; $max_overclock) {
			$standard_width[$y] = $standard[$y] / $max_standard * 100;
			$overclock_width[$y] = $standard[$y] / $max_overclock * 100;
		}
		else {
			$standard_width[$y] = $overclock[$y] / $max_standard * 100;
			$overclock_width[$y] = $overclock[$y] / $max_overclock * 100;
		}
	}

	//Now it&amp;#39;s time to show the results
	echo &amp;#34;&amp;lt;table BORDER=&amp;#39;2&amp;#39; CELLPADDING=&amp;#39;2&amp;#39; CELLSPACING=&amp;#39;2&amp;#39;&amp;gt;
	&amp;lt;th&amp;gt;Name
	&amp;lt;a href=&amp;#39;php_chart.php?table_name=&amp;#34;.$table_name.&amp;#34;&amp;amp;order_value=name&amp;amp;order_align=asc&amp;#39;&amp;gt;&amp;lt;img src=&amp;#39;asc.png&amp;#39; /&amp;gt;&amp;lt;/a&amp;gt;
	&amp;lt;a href=&amp;#39;php_chart.php?table_name=&amp;#34;.$table_name.&amp;#34;&amp;amp;order_value=name&amp;amp;order_align=desc&amp;#39;&amp;gt;&amp;lt;img src=&amp;#39;desc.png&amp;#39; /&amp;gt;&amp;lt;/a&amp;gt;
	&amp;lt;/th&amp;gt;
	&amp;lt;th width=&amp;#39;100px&amp;#39;&amp;gt;Chart&amp;lt;/th&amp;gt;
	&amp;lt;th&amp;gt;Standard
	&amp;lt;a href=&amp;#39;php_chart.php?table_name=&amp;#34;.$table_name.&amp;#34;&amp;amp;order_value=standard&amp;amp;order_align=asc&amp;#39;&amp;gt;&amp;lt;img src=&amp;#39;asc.png&amp;#39; /&amp;gt;&amp;lt;/a&amp;gt;
	&amp;lt;a href=&amp;#39;php_chart.php?table_name=&amp;#34;.$table_name.&amp;#34;&amp;amp;order_value=standard&amp;amp;order_align=desc&amp;#39;&amp;gt;&amp;lt;img src=&amp;#39;desc.png&amp;#39; /&amp;gt;&amp;lt;/a&amp;gt;
	&amp;lt;/th&amp;gt;
	&amp;lt;th&amp;gt;Overclock
	&amp;lt;a href=&amp;#39;php_chart.php?table_name=&amp;#34;.$table_name.&amp;#34;&amp;amp;order_value=overclock&amp;amp;order_align=asc&amp;#39;&amp;gt;&amp;lt;img src=&amp;#39;asc.png&amp;#39; /&amp;gt;&amp;lt;/a&amp;gt;
	&amp;lt;a href=&amp;#39;php_chart.php?table_name=&amp;#34;.$table_name.&amp;#34;&amp;amp;order_value=overclock&amp;amp;order_align=desc&amp;#39;&amp;gt;&amp;lt;img src=&amp;#39;desc.png&amp;#39; /&amp;gt;&amp;lt;/a&amp;gt;
	&amp;lt;/th&amp;gt;&amp;lt;tr&amp;gt;&amp;#34;;
	// Put all values in the table
	for ($y = 0; $y &amp;lt; $i; $y++){
		echo &amp;#34;&amp;lt;th&amp;gt;&amp;#34;.$name[$y].&amp;#34;&amp;lt;/th&amp;gt;
		&amp;lt;th&amp;gt;&amp;lt;div style=&amp;#39;background-color:#297f03;width:&amp;#34;.$standard_width[$y].&amp;#34;;height:10px;&amp;#39;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;#39;background-color:#c11007;width:&amp;#34;.$overclock_width[$y].&amp;#34;;height:10px;&amp;#39;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/th&amp;gt;
		&amp;lt;th&amp;gt;&amp;#34;.$standard[$y].&amp;#34;&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;&amp;#34;.$overclock[$y].&amp;#34;&amp;lt;/th&amp;gt;&amp;lt;tr&amp;gt;
		&amp;#34;;
	}
	echo &amp;#34;&amp;lt;/table&amp;gt;&amp;#34;;

}
?&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/07/07/php-simple-chart-script/</guid>
      <pubDate>Thu, 07 Jul 2011 13:06:22 +0000</pubDate>
    </item>
    
    <item>
      <title>Python Text Adventure Game: Simple Interaction</title>
      <link>https://black-pixel.net/2011/04/24/python-text-adventure-game-simple-interaction/</link>
      <description>&lt;p&gt;In this post I will show you a very primitive interaction script and combine it with the &lt;a href=&#34;http://black-pixel.net/python-text-adventure-game-displaying-text-slowly.html&#34;&gt;text displaying script&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;First of all you have to import os:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;import os&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You need this for the “clearscreen” function. As the name says, it “clears” the screen so you can focus on new text.&lt;/p&gt;
&lt;p&gt;This is the script:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;def clearscreen():
    if os.name == &amp;#34;posix&amp;#34;:
       # Unix/Linux/MacOS/BSD/etc
       os.system(&amp;#39;clear&amp;#39;)
    elif os.name in (&amp;#34;nt&amp;#34;, &amp;#34;dos&amp;#34;, &amp;#34;ce&amp;#34;):
       # DOS/Windows
       os.system(&amp;#39;CLS&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The first thing you do here is defining a function with &lt;span style=&#34;color: #ff9900;&#34;&gt;&lt;em&gt;def&lt;/em&gt;&lt;/span&gt;. This is so you don’t have to write the whole script everytime. As there are different commands for clear depending on the operating system, you check what os you are dealing with and then use the related command.&lt;/p&gt;
&lt;p&gt;You should also define a function for the &lt;a href=&#34;http://black-pixel.net/python-text-adventure-game-displaying-text-slowly.html&#34;&gt;writing script&lt;/a&gt;. It should look like this:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;import time
import sys
from random import randrange
def writetext(text):
    for c in text:
       sys.stdout.write(c)
       sys.stdout.flush()
       seconds = &amp;#34;0.0&amp;#34; + str(randrange(5, 9, 1))
       seconds = float(seconds)
       time.sleep(seconds)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you want to learn more about functions, have a look at this page: &lt;a href=&#34;http://docs.python.org/tutorial/controlflow.html#defining-functions&#34;&gt;http://docs.python.org/tutorial/controlflow.html#defining-functions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now it’s time for some more functions. 🙂&lt;/p&gt;
&lt;p&gt;In this example, our character is in a locked room and searches for the key. Let’s start with the function for the menu:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;def menu(list, question):
    for entry in list:
       print 1 + list.index(entry),
       print &amp;#34;) &amp;#34; + entry
       return input(question) - 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The list will contain all places we want to search for the key to open the door. This function shows our menu with all the places from our list.&lt;/p&gt;
&lt;p&gt;Just one more function now. 😉&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;def inspect(choice,location):
   if choice == location:
        print &amp;#34;&amp;#34;
        print &amp;#34;You found a key!&amp;#34;
        print &amp;#34;&amp;#34;
        return 1
   else:
        print &amp;#34;&amp;#34;
        # Clear the screen so the menu won&amp;#39;t be duplicated.
        clearscreen()
        print &amp;#34;Nothing of interest here.&amp;#34;
        print &amp;#34;&amp;#34;
        return 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This was the inspect function. It defines what happens if we select a place from the menu. If our choice is the right place for the key, it will display “You found a key!”. If it was the wrong place, the screen will be cleared and the menu written again.&lt;/p&gt;
&lt;p&gt;Now define the items and set some variables:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;items = [&amp;#34;pot plant&amp;#34;,&amp;#34;small case&amp;#34;,&amp;#34;vase&amp;#34;,&amp;#34;shoe&amp;#34;]

keylocation = 2
keyfound = 0
loop = 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Items are the places to look for the key.&lt;/p&gt;
&lt;p&gt;Keylocation is where the key is, in our case it’s the vase. (It starts at 0)&lt;/p&gt;
&lt;p&gt;Keyfound is whether you have found the key already or not and loop is the variable to loop the whole game until we found the key.&lt;/p&gt;
&lt;p&gt;Now you can execute the game:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;print &amp;#34;&amp;#34;
# Write the introduction text
writetext(text)
print &amp;#34;&amp;#34;
#Get your menu working, and the program running until you find the key
while loop == 1:
    keyfound = inspect(menu(items,&amp;#34;What do you want to inspect? &amp;#34;),keylocation)
    if keyfound == 1:
        writetext(&amp;#34;You put the key in the lock of the door, and turn it. It opens!&amp;#34;
        loop = 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here is the whole Code: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/04/pytag.zip&#34;&gt;pytag.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I got a lot of stuff in this post from this site: &lt;a href=&#34;http://www.sthurlow.com/python/lesson07/&#34;&gt;http://www.sthurlow.com/python/lesson07/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It has nice tutorials and may also help you. 🙂&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/04/24/python-text-adventure-game-simple-interaction/</guid>
      <pubDate>Sun, 24 Apr 2011 13:46:34 +0000</pubDate>
    </item>
    
    <item>
      <title>Debian RAID 5 &#43; Encryption</title>
      <link>https://black-pixel.net/2011/03/13/debian-raid-5-encryption/</link>
      <description>&lt;p&gt;This is a little summary about what I did to create an encrypted RAID 5 device on my file server.&lt;/p&gt;
&lt;p&gt;First of all I had to install mdadm and cryptsetup.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install mdadm cryptsetup&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The next step is to create the RAID 5, this is an example of my configuration.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mdadm –-create /dev/md0 –-level=5 -–raid-disks=3 /dev/sdb /dev/sdc /dev/sdd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now it’s time for the encryption, I’ll call my encrypted RAID 5 device raid1 because I will have 2 raids. You can name it as you like.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cryptsetup create -c twofish-cbc-essiv:sha256 raid1 /dev/md0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The filesystem is still missing. (If you have Debian Lenny, you have to use ext4dev for ext4. More information about it &lt;a href=&#34;https://ext4.wiki.kernel.org/index.php/Ext4_Howto#For_people_who_are_running_Debian&#34; title=&#34;DebianLennyEXT4&#34;&gt;here&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mke2fs -t ext4 /dev/mapper/raid1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That’s all, now mount it.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mount /dev/mapper/raid1 /media/raid1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you need to close the container, use the following commands (remember, these are my settings, yours may be different).&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;umount /media/raid1
cryptsetup remove raid1 /dev/md0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You have to recreate the cryptodrive on every reboot. You have to use exact the same password! There is no message like “wrong password”.&lt;/p&gt;
&lt;p&gt;I wrote a little shell script to make it easier. Content of mount_raid.sh:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cryptsetup create -c twofish-cbc-essiv:sha256 raid1 /dev/md0
mount /dev/mapper/raid1 /media/raid1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Just to mention, these two German blogs helped me a lot to get started:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.morphhome.net/software-raid5-mit-debian&#34;&gt;http://www.morphhome.net/software-raid5-mit-debian&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.navelfluff.de/partitionen-verschlusseln-mit-linux&#34;&gt;http://www.navelfluff.de/partitionen-verschlusseln-mit-linux&lt;/a&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/03/13/debian-raid-5-encryption/</guid>
      <pubDate>Sun, 13 Mar 2011 12:08:12 +0000</pubDate>
    </item>
    
    <item>
      <title>Photoshop Planets</title>
      <link>https://black-pixel.net/2011/03/10/photoshop-planets/</link>
      <description>&lt;p&gt;I’ve made a few planets with Photoshop, these are my first three tries. If you want to use them for something, I can give you a bigger version. Just write me an e-mail. You can find them also in my Art section.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/03/planet3.jpg&#34;&gt;&lt;img class=&#34;size-medium wp-image-456 alignnone&#34; title=&#34;planet3&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/03/planet3-300x300.jpg&#34; alt=&#34;a planet&#34; width=&#34;180&#34; height=&#34;180&#34; /&gt;&lt;/a&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/03/planet2.jpg&#34;&gt;&lt;img class=&#34;size-medium wp-image-455 alignnone&#34; title=&#34;planet2&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/03/planet2-300x300.jpg&#34; alt=&#34;a planet&#34; width=&#34;180&#34; height=&#34;180&#34; /&gt;&lt;/a&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/03/planet.jpg&#34;&gt;&lt;img class=&#34;size-medium wp-image-454 alignnone&#34; title=&#34;planet&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/03/planet-300x300.jpg&#34; alt=&#34;a planet&#34; width=&#34;180&#34; height=&#34;180&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/03/10/photoshop-planets/</guid>
      <pubDate>Thu, 10 Mar 2011 21:29:50 +0000</pubDate>
    </item>
    
    <item>
      <title>Win7 UAC: Autostart with Admin Privileges</title>
      <link>https://black-pixel.net/2011/03/06/win7-uac-autostart-with-admin-privileges/</link>
      <description>&lt;p&gt;UAC is a very good feature of Windows 7 and I recommend everyone to use it. No one should work as an administrator. Unfortunately, sometimes you need programs to be started with administrator privileges.&lt;/p&gt;
&lt;p&gt;Core Temp is one example. I like to use the &lt;a title=&#34;CoreTempGadget&#34; href=&#34;http://www.alcpu.com/CoreTemp/addons.html&#34; target=&#34;_blank&#34;&gt;Core Temp Sidebar Gadget&lt;/a&gt; but it needs Core Temp to be started with admin privileges. Doing that manually every day annoyed me, so I decided to look for a way to let it start automatically and I found a solution.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;To do this, you have to open the Task Sheduler and create a new task.&lt;/p&gt;
&lt;p&gt;Give it a name and select your user account, then check “Run only when user is logged on” and “Run with highest privileges”&lt;/p&gt;
&lt;p&gt;Go to Trigger and add a new trigger “at logon”, select all users&lt;/p&gt;
&lt;p&gt;Now go to Actions and add a new one to start your program. (You should put the exe file in your users folder)&lt;/p&gt;
&lt;p&gt;Logout and login again, it should work.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/03/06/win7-uac-autostart-with-admin-privileges/</guid>
      <pubDate>Sun, 06 Mar 2011 15:56:12 +0000</pubDate>
    </item>
    
    <item>
      <title>TS Optics 15 x 70 LE Binocular</title>
      <link>https://black-pixel.net/2011/02/26/ts-optics-15-x-70-le-binocular/</link>
      <description>&lt;p&gt;I bought the &lt;strong&gt;TS Optics 15 x 70 LE&lt;/strong&gt; a few weeks ago at &lt;a title=&#34;Teleskop-Express&#34; href=&#34;https://www.teleskop-express.de/shop/product_info.php/language/en/info/p1420_TS-LE-15x70-Porro-Weitwinkel-Fernglas-mit-besserer-Verguetung.html&#34; target=&#34;_blank&#34;&gt;Teleskop-Express&lt;/a&gt; for a price of 119€. I think this binoculars are a good start for amateur astronomers. You don’t have the weight of a telescope and don’t have the problems to adjust it. You can take it easily with you and just start to look at the sky. It’s a nice way to learn &lt;a title=&#34;star hopping&#34; href=&#34;http://en.wikipedia.org/wiki/Star_hopping&#34; target=&#34;_blank&#34;&gt;star hopping&lt;/a&gt;. You have a greater field of view than with telescopes, which makes it easier.&lt;/p&gt;
&lt;p&gt;I often read that you shouldn’t use a binocular greater than 10×50 without a tripod. But I think, at least in this case, 15×70 is OK to use freehand. Of course you have to practice a little bit to hold it calmly but for the beginning you can also try to lean on something. This binocular has only a weight of 1300 gram so it shouldn’t be a big problem.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/02/1570_h.jpg&#34;&gt;&lt;img class=&#34;size-full wp-image-429 aligncenter&#34; title=&#34;1570_h&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/02/1570_h.jpg&#34; width=&#34;400&#34; height=&#34;282&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This week was the first time that I could use it. It was really nice to just look around and notice all those stars you can’t see with the naked eye. The first “object” I’ve seen were the &lt;strong&gt;Pleiades&lt;/strong&gt;, they are easy to find and look great. After that I looked for the &lt;strong&gt;Orion Nebula&lt;/strong&gt;, it was also quite easy to find and a nice view.&lt;/p&gt;
&lt;p&gt;A day after that I took a look at Jupiter at dusk. Of course you can’t expect to see much of a planet with binoculars, but I could notice 2 of Jupiters moons, Ganymede and Callisto.&lt;/p&gt;
&lt;p&gt;I’m very happy with the binocular and hope I can find more interesting objects soon.&lt;/p&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/02/26/ts-optics-15-x-70-le-binocular/</guid>
      <pubDate>Sat, 26 Feb 2011 11:50:30 +0000</pubDate>
    </item>
    
    <item>
      <title>Stellarium: The Open Source Planetarium</title>
      <link>https://black-pixel.net/2011/02/12/stellarium-the-open-source-planetarium/</link>
      <description>&lt;p&gt;I want to show you a really good software, it is called Stellarium.&lt;/p&gt;
&lt;p&gt;It’s very useful if you want to watch the sky. You can easily find out what you can see from your position. You can select whether you watch with the naked eye, binoculars or a telescope. It’s also a nice tool to learn the constellations, stars, planets, moons and improve your orientation skills.&lt;/p&gt;
&lt;p&gt;You can decide what you want to be shown (planets, nebulas, etc.) and you can zoom in to get a closer look to see the moons of the planets for example.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;It is open source and available for Linux, Mac OSX and Windows. The official homepage is: &lt;a href=&#34;http://stellarium.org/&#34;&gt;http://stellarium.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I made a few Screenshots to show some of the features:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/02/stellarium.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-379&#34; title=&#34;stellarium&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/02/stellarium-300x187.jpg&#34; width=&#34;300&#34; height=&#34;187&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/02/stellarium2.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-380&#34; title=&#34;stellarium2&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/02/stellarium2-300x187.jpg&#34; width=&#34;300&#34; height=&#34;187&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/02/Stellarium3.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-381&#34; title=&#34;Stellarium3&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/02/Stellarium3-300x187.jpg&#34; width=&#34;300&#34; height=&#34;187&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/02/Stellarium4.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-382&#34; title=&#34;Stellarium4&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/02/Stellarium4-300x187.jpg&#34; width=&#34;300&#34; height=&#34;187&#34; /&gt;&lt;/a&gt; &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2011/02/Stellarium5.jpg&#34;&gt;&lt;img class=&#34;alignnone size-medium wp-image-383&#34; title=&#34;Stellarium5&#34; alt=&#34;&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2011/02/Stellarium5-300x187.jpg&#34; width=&#34;300&#34; height=&#34;187&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/02/12/stellarium-the-open-source-planetarium/</guid>
      <pubDate>Sat, 12 Feb 2011 14:00:55 +0000</pubDate>
    </item>
    
    <item>
      <title>Biohacking/Modifying yourself</title>
      <link>https://black-pixel.net/2011/01/09/biohackingmodifying-yourself/</link>
      <description>&lt;p&gt;I just watched a really interesting speech from the &lt;a href=&#34;http://events.ccc.de/congress/2010/wiki/Welcome&#34; title=&#34;27C3&#34;&gt;27th Chaos Communication Congress&lt;/a&gt;. It’s about modifying yourself. The lecturer, Lepht Anonym, is trying to extend her own senses by putting tiny magnets and other electronic devices under her own skin.&lt;/p&gt;
&lt;p&gt;A result of this is, for example, the ability to feel electromagnetic fields. If her next project succeeds, she will be able to feel the magnetic north.&lt;/p&gt;
&lt;p&gt;You can watch the speech here:&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
  &lt;a title=&#34;Cybernetics for the masses&#34; href=&#34;http://mirror.netcologne.de/CCC/27C3/mp4-h264-HQ/27c3-4003-en-cybernetics_for_the_masses.mp4&#34;&gt;http://mirror.netcologne.de/CCC/27C3/mp4-h264-HQ/27c3-4003-en-cybernetics_for_the_masses.mp4&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
  She also has a blog, you can reach it at this link, it&amp;#8217;s also in my blogroll:
&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;http://sapiensanonym.blogspot.com/&#34;&gt;http://sapiensanonym.blogspot.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
  And here is a Wired article about her and the speech:
&lt;/p&gt;
&lt;p style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;http://www.wired.com/threatlevel/2010/12/transcending-the-human-diy-style/&#34;&gt;http://www.wired.com/threatlevel/2010/12/transcending-the-human-diy-style/&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
  Of course this is far away from, let&amp;#8217;s call them cyborgs, we see in science fiction movies or games, but I think experimenting with it is necessary. At least to show what is possible and what could be the next step.
&lt;/p&gt;
&lt;p style=&#34;text-align: left;&#34;&gt;
  She also shows that, theoretically, everyone could do it, you don&amp;#8217;t need much money for it. But if you want to do it, you should know the possible consequences and know what you are doing. (Do some research etc.)
&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/01/09/biohackingmodifying-yourself/</guid>
      <pubDate>Sun, 09 Jan 2011 09:57:13 +0000</pubDate>
    </item>
    
    <item>
      <title>Photo Manipulation: Tiger Orange</title>
      <link>https://black-pixel.net/2011/01/08/photo-manipulation-tiger-orange/</link>
      <description>&lt;p&gt;I’ve already made this a little time ago with Gimp, it’s an orange combined with the mouth of a tiger. I think it took me about 1-2 hours, I can’t remember exactly how long I worked on it as I improved it over and over again. (On different days)&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2011/01/TigerOrange.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;You can find this and other stuff I made in the &lt;a title=&#34;art section&#34; href=&#34;http://black-pixel.net/art&#34;&gt;art section&lt;/a&gt; of my blog.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/01/08/photo-manipulation-tiger-orange/</guid>
      <pubDate>Sat, 08 Jan 2011 18:08:15 +0000</pubDate>
    </item>
    
    <item>
      <title>Python Text Adventure Game: Displaying Text Slowly</title>
      <link>https://black-pixel.net/2011/01/07/python-text-adventure-game-displaying-text-slowly/</link>
      <description>&lt;p&gt;I started to work on a Python text adventure game. I will split the working progress into several parts. This is the first one.&lt;/p&gt;
&lt;p&gt;With “displaying the text slowly” I mean that, for example the introduction text, should appear like it is just being typed.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;To do this, you must first import some things:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;import time
import sys
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The next step is to set the text you want to be “written”.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;text = &amp;quot;This is the introduction text.&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now you have to make a for loop to print the text not as a single string, but character by character with a little delay between.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;for c in text:
    sys.stdout.write(c)
    sys.stdout.flush()
    time.sleep(0.2)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The “c” stands for character. So the for loop is continuing until it passed every character from the string.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sys.stdout.write(c)&lt;/em&gt; writes the actual character.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sys.stdout.flush()&lt;/em&gt; actually I’m not sure what this means, I think it just clears the buffer.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;time.sleep(0.2)&lt;/em&gt; makes the loop wait 0.2 seconds before it writes the next character.&lt;/p&gt;
&lt;p&gt;You can set this to any value you feel comfortable with, you can even make it a random number, for example between 0.1 and 0.4.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This can be done the following way:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;from random import randrange
for c in text:
    sys.stdout.write(c)
    sys.stdout.flush()
    seconds = &amp;#34;0.&amp;#34; + str(randrange(1, 4, 1))
    seconds = float(seconds)
    time.sleep(seconds)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;seconds = “0.” + str(randrange(1, 4, 1))&lt;/em&gt; generates a random integer between 1 and 4 in the step of 1 and converts it into a string. As we need a number between 0.1 and 0.4 we have to add the 0. manually because randrange does only support integer values.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;seconds = float(seconds)&lt;/em&gt; converts the string to float, so we can use it with the time.sleep function.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This is the whole code again, with the random time.sleep function:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;import&amp;lt;/span&amp;gt; time
import&amp;lt;/span&amp;gt; sys
from&amp;lt;/span&amp;gt; random import randrange
text = &amp;#34;This is the introduction text.&amp;#34;

for c in text:
    sys.stdout.write(c)
    sys.stdout.flush()
    seconds = &amp;#34;0.&amp;#34; + str(randrange(1, 4, 1))
    seconds = float(seconds)
    time.sleep(seconds)
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/01/07/python-text-adventure-game-displaying-text-slowly/</guid>
      <pubDate>Fri, 07 Jan 2011 17:54:28 +0000</pubDate>
    </item>
    
    <item>
      <title>CentOS Server in Virtualbox</title>
      <link>https://black-pixel.net/2011/01/03/centos-server-in-virtualbox/</link>
      <description>&lt;p&gt;I just installed a CentOS Server in Virtualbox, so I can work with a Red Hat based distribution. Until now I only used Debian based systems and now I decided to to broaden my mind. 😉&lt;/p&gt;
&lt;p&gt;I had a little problem with the installation, as the loading stopped at &lt;code&gt;NET: Registered protocol family 2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The solution is to &lt;code&gt;enable IO APIC&lt;/code&gt; for the guest in the settings.&lt;/p&gt;
&lt;p&gt;If you want more information, here is the bug report I found: &lt;a href=&#34;http://www.virtualbox.org/ticket/5423&#34;&gt;http://www.virtualbox.org/ticket/5423&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now I’m going to play around a little bit to get used to it.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2011/01/03/centos-server-in-virtualbox/</guid>
      <pubDate>Mon, 03 Jan 2011 21:43:20 +0000</pubDate>
    </item>
    
    <item>
      <title>Coca Cola Commercials</title>
      <link>https://black-pixel.net/2010/12/02/coca-cola-commercials/</link>
      <description>&lt;p&gt;I gathered a few of the best Coca Cola commercials I know. One of them is this:&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;http://www.youtube.com/watch?v=Kwke0LNardc&#34;&gt;Coca Cola &amp;#8211; Avatar&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I’ve also gathered some Christmas commercials (I love the Coca Cola trucks :D).&lt;/p&gt;
&lt;p&gt;Here is the latest:&lt;/p&gt;
&lt;div style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;http://www.youtube.com/watch?v=BztOLaIfCMI&amp;feature=related&#34;&gt;Coca Cola Trucks 2010&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;You can find them in the Videos section, or by clicking one of the following links:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/videos/coca-cola-commercials&#34; title=&#34;Coca Cola general&#34;&gt;http://black-pixel.net/videos/coca-cola-commercials&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/videos/coca-cola-christmas&#34; title=&#34;Coca Cola Christmas&#34;&gt;http://black-pixel.net/videos/coca-cola-christmas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Enjoy 🙂&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/12/02/coca-cola-commercials/</guid>
      <pubDate>Thu, 02 Dec 2010 17:33:47 +0000</pubDate>
    </item>
    
    <item>
      <title>Best Google Chrome Extensions</title>
      <link>https://black-pixel.net/2010/10/05/best-chrome-extensions/</link>
      <description>&lt;p&gt;&lt;strong&gt;&lt;a title=&#34;AdBlock&#34; href=&#34;https://chrome.google.com/extensions/detail/gighmmpiobklfepjocnamgkkbiglidom?hl=en&#34; target=&#34;_blank&#34;&gt;AdBlock&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AdBlock for Chrome! Blocks ads all over the web.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title=&#34;AdBlock+&#34; href=&#34;https://chrome.google.com/extensions/detail/chmimgmjdabgiilljdjfbonifbhiglao?hl=en&#34; target=&#34;_blank&#34;&gt;AdBlock+ – Element Hiding Helper&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An adblock extension for Google Chrome. Similar to “Remove It Permanently” and “Adblock Plus: Element Hiding Helper” from FireFox.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;** &lt;a title=&#34;Firebug Lite&#34; href=&#34;https://chrome.google.com/extensions/detail/bmagokdooijbeehmkpknfglimnifench?hl=en&#34; target=&#34;_blank&#34;&gt;Firebug Lite&lt;/a&gt;**&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Firebug Lite for Google Chrome, supported by the Firebug Working Group.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title=&#34;Speed Dial&#34; href=&#34;https://chrome.google.com/extensions/detail/dgpdioedihjhncjafcpgbbjdpbbkikmi?hl=en&#34; target=&#34;_blank&#34;&gt;Speed Dial&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Speed Dial for Chrome – replace Chrome new tab with your predefined visual bookmarks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title=&#34;Web Developer&#34; href=&#34;https://chrome.google.com/extensions/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm?hl=en&#34; target=&#34;_blank&#34;&gt;Web Developer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Adds a toolbar button with various web developer tools. The official port of the Web Developer extension for Firefox.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title=&#34;Ultimate Chrome Flag&#34; href=&#34;https://chrome.google.com/extensions/detail/dbpojpfdiliekbbiplijcphappgcgjfn?hl=en&#34; target=&#34;_blank&#34;&gt;Ultimate Chrome Flag&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This extension displays country or region name, Geo, Google PageRank, Alexa Rank and WOT info for the websites you’re visiting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title=&#34;NotScripts&#34; href=&#34;https://chrome.google.com/extensions/detail/odjhifogjcknibkahlpidmdajjpkkcfn?hl=en&#34; target=&#34;_blank&#34;&gt;NotScripts&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A clever extension that provides a high degree of ‘NoScript’ like control of javascript, iframes, and plugins on Google Chrome.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/10/05/best-chrome-extensions/</guid>
      <pubDate>Tue, 05 Oct 2010 08:21:23 +0000</pubDate>
    </item>
    
    <item>
      <title>Google Chrome – Prevent Spying with Kill-ID</title>
      <link>https://black-pixel.net/2010/10/03/google-chrome-prevent-spying-with-kill-id/</link>
      <description>&lt;p&gt;Google Chrome is in my opinion the best browser available at the moment. It’s very fast and you can get an extension for everything you need. The only thing you could complain about are the “spying features”. Of course there are some other browsers based on chromium and without these features (SR Iron, ChromePlus), but they are always a little bit out-dated and lot’s of plugins require the current version of Chrome.&lt;/p&gt;
&lt;p&gt;I just found a solution for this. The program Kill-ID, it gives you full control of the features and lets you deactivate them.&lt;/p&gt;
&lt;p&gt;You can get it from the official homepage: &lt;a href=&#34;http://www.almisoft.de/?cont=kchrome&#34;&gt;http://www.almisoft.de/?cont=kchrome&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s in German, but that should be no problem.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2010/10/killid.jpg&#34;&gt;&lt;img class=&#34;alignleft size-medium wp-image-198&#34; title=&#34;killid&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2010/10/killid-300x279.jpg&#34; alt=&#34;&#34; width=&#34;300&#34; height=&#34;279&#34; /&gt;&lt;/a&gt;Here in short what the options do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Chrome-ID&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Send auto-completed url to Google&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Send navigation errors (Not existing homepage/wrong url,…) to Google&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Send user statistics and error messages to Google&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Resolve the IP of every link on the homepage&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Google Cookies&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Google Update program&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Aktivieren == Activate || Deaktivieren == Deactivate&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/10/03/google-chrome-prevent-spying-with-kill-id/</guid>
      <pubDate>Sun, 03 Oct 2010 10:44:49 +0000</pubDate>
    </item>
    
    <item>
      <title>Caesar Cipher in Python</title>
      <link>https://black-pixel.net/2010/09/21/caesar-cipher-in-python/</link>
      <description>&lt;p&gt;I just wrote a simple encryption application using the caesar cipher. I wrote the same in C++ a while ago but this version is, in my opinion,  much better coded.&lt;/p&gt;
&lt;p&gt;I decided to stop learning C++ and learn Python instead.&lt;/p&gt;
&lt;p&gt;Here is the file: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2010/09/ccipher1.zip&#34;&gt;ccipher1.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use at your own risk!&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/09/21/caesar-cipher-in-python/</guid>
      <pubDate>Tue, 21 Sep 2010 19:38:42 +0000</pubDate>
    </item>
    
    <item>
      <title>My first C&#43;&#43; Application</title>
      <link>https://black-pixel.net/2010/08/20/my-first-c-application/</link>
      <description>&lt;p&gt;I finally finished my first C++ console application. (Except hello world) I made it using Eclipse IDE.&lt;/p&gt;
&lt;p&gt;It’s an encryption program which let’s you encrypt or decrypt text using the simple caesar cypher.&lt;/p&gt;
&lt;p&gt;You can get the source code here: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2010/08/cryptCC.cpp_.tar.gz&#34;&gt;cryptCC.cpp.tar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is the executable for Linux: &lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2010/08/cryptCC.tar.gz&#34;&gt;cryptCC.tar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use at your own risk!&lt;/p&gt;
&lt;p&gt;At the moment, I’m thinking about adding features like encrypting a whole .txt file, or something like that.&lt;/p&gt;
&lt;p&gt;My next aim is to write an encryption program with a more complex method, such as AES or Twofish. I want to finish it not later than the end of September.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/08/20/my-first-c-application/</guid>
      <pubDate>Fri, 20 Aug 2010 02:22:31 +0000</pubDate>
    </item>
    
    <item>
      <title>ALC892/Realtek ID 892 on Mint Linux/Ubuntu</title>
      <link>https://black-pixel.net/2010/08/18/alc892realtek-id-892-on-mint-linuxubuntu/</link>
      <description>&lt;p&gt;After installing Mint Linux on my computer, I noticed that the sound did not work. I tried a lot of things and then finally, thanks to the help of some guys from &lt;a href=&#34;http://www.linuxmintusers.de&#34;&gt;http://www.linuxmintusers.de&lt;/a&gt;, I found a solution.&lt;/p&gt;
&lt;p&gt;First I identified the codec of my sound card:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;drag@hell ~ $ head -n 1 /proc/asound/card0/codec* Codec: Realtek ALC892&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then i found a blog post regarding this problem. You can read it in German here: &lt;a href=&#34;http://www.spacefish.biz/blog/2010/06/alc892-b-z-w-realtek-id-892-unter-ubuntu-10-04/&#34;&gt;http://www.spacefish.biz/blog/2010/06/alc892-b-z-w-realtek-id-892-unter-ubuntu-10-04/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The problem is that the ALSA package of Ubuntu based distributions (maybe others too) does not include a module for the ALC892. But you can easily build it from the package &lt;a href=&#34;http://files.spacefish.biz/LinuxPkg-5.15rc1.tar.bz2&#34;&gt;http://files.spacefish.biz/LinuxPkg-5.15rc1.tar.bz2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You just have to unpack it and execute the install script as root. After that you have to reboot your computer, then everything should work well.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/08/18/alc892realtek-id-892-on-mint-linuxubuntu/</guid>
      <pubDate>Wed, 18 Aug 2010 21:00:11 +0000</pubDate>
    </item>
    
    <item>
      <title>Linux vs ACPI APIC Support</title>
      <link>https://black-pixel.net/2010/08/18/linux-vs-acpi-apic-support/</link>
      <description>&lt;p&gt;Now that I have my new computer, I wanted to try Linux on it. Unfortunately, none of the distributions I tried worked, they just did not want to start so I could not install them. The only way was to use the safe mode.&lt;/p&gt;
&lt;p&gt;After a while, I found the reason for it. The ACPI APIC support. After disabling it in the BIOS, everything worked fine. An alternative way is to set the boot option noapic.&lt;/p&gt;
&lt;p&gt;I don’t know why none of the Linux Distributions can handle it, I hope this will be fixed soon.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/08/18/linux-vs-acpi-apic-support/</guid>
      <pubDate>Wed, 18 Aug 2010 13:06:03 +0000</pubDate>
    </item>
    
    <item>
      <title>New Hardware</title>
      <link>https://black-pixel.net/2010/08/15/new-hardware/</link>
      <description>&lt;p&gt;I sold my old hardware and arranged a new computer. This time, I didn’t use a water cooling system, the new computer is cooled just via air cooling.&lt;/p&gt;
&lt;p&gt;This is the new hardware:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU:&lt;/strong&gt; AMD Phenom II X6 1055T&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mainboard:&lt;/strong&gt; Biostar TA890FXE&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPU:&lt;/strong&gt; Sapphire HD5850 Toxic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAM:&lt;/strong&gt; 2 x 4 GB Mushkin Blackline DDR3-1600 CL9&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As I wanted my system to be silent, I decided to use a noise dampened case. Also a new CPU cooler was needed and of course a fan control.&lt;/p&gt;
&lt;p&gt;I bought the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Noise dampened Lian Li PC-P50 Midi-Tower&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thermaltake Venomous X CPU cooler&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lamptron FC2 Fan Controller 5,25″ – black&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The system works really good and the temperatures are fine, even after a few hours of crunching (BOINC). I haven’t been able to test a lot more yet, but I will do soon.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/08/15/new-hardware/</guid>
      <pubDate>Sun, 15 Aug 2010 21:39:26 +0000</pubDate>
    </item>
    
    <item>
      <title>DLNA via MiniDLNA</title>
      <link>https://black-pixel.net/2010/07/29/dlna-via-minidlna/</link>
      <description>&lt;p&gt;I had some issues with Mediatomb:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I had to tweek the configuration to make it work with my Samsung TV&lt;/li&gt;
&lt;li&gt;Adding Truecrypt devices was very laborious&lt;/li&gt;
&lt;li&gt;My media folders weren’t updated on new files&lt;/li&gt;
&lt;li&gt;Fast-forward and wind back did not work on most of the videos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I decided to search for an alternative.&lt;/p&gt;
&lt;p&gt;After a little search, I found MiniDLNA. The only thing I had to configure to make it work, was to set the path for the media files. Unlike Mediatomb, there was no extra configuration needed to make it work with my TV.&lt;/p&gt;
&lt;p&gt;I found the following init-script, it works well:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    #!/bin/sh

    # chkconfig: 345 99 10
    # description: Startup/shutdown script for MiniDLNA daemon
    #
    # $Id: minidlna.init.d.script,v 1.2 2009/07/02 00:33:15 jmaggard Exp $
    # MiniUPnP project
    # author: Thomas Bernard
    # website: http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/

    MINIDLNA=/usr/sbin/minidlna
    ARGS=’-f /etc/minidlna.conf’

    test -f $MINIDLNA || exit 0

    . /lib/lsb/init-functions

    case ”$1″ in
    start)  log_daemon_msg ”Starting minidlna” ”minidlna”
    start-stop-daemon –start –quiet –pidfile /var/run/minidlna.pid –startas $MINIDLNA – $ARGS $LSBNAMES
    log_end_msg $?
    ;;
    stop)   log_daemon_msg ”Stopping minidlna” ”minidlna”
    start-stop-daemon –stop –quiet –pidfile /var/run/minidlna.pid
    log_end_msg $?
    ;;
    restart|reload|force-reload)
    log_daemon_msg ”Restarting minidlna” ”minidlna”
    start-stop-daemon –stop –retry 5 –quiet –pidfile /var/run/minidlna.pid
    start-stop-daemon –start –quiet –pidfile /var/run/minidlna.pid –startas $MINIDLNA – $ARGS $LSBNAMES
    log_end_msg $?
    ;;
    *)      log_action_msg ”Usage: /etc/init.d/minidlna {start|stop|restart|reload|force-reload}”
    exit 2
    ;;
    esac
    exit 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Source: &lt;a title=&#34;HiFi Forum Source&#34; href=&#34;http://www.hifi-forum.de/viewthread-151-11576.html&#34; target=&#34;_blank&#34;&gt;&lt;a href=&#34;http://www.hifi-forum.de/viewthread-151-11576.html&#34;&gt;http://www.hifi-forum.de/viewthread-151-11576.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In summary:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Works with Samsung TV without any additional tweaks&lt;/li&gt;
&lt;li&gt;Adding devices is very easy, just enter a line in the configuration file&lt;/li&gt;
&lt;li&gt;The media folders are updated on the fly, as soon as there is a new file, you can watch it&lt;/li&gt;
&lt;li&gt;Fast-forward and wind back works on most of the videos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only thing I could complain about is the missing web UI, but I don’t really need it.&lt;/p&gt;
&lt;p&gt;This software is really great, especially if you want to use it with a Samsung TV.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/07/29/dlna-via-minidlna/</guid>
      <pubDate>Thu, 29 Jul 2010 22:53:50 +0000</pubDate>
    </item>
    
    <item>
      <title>WorldWide Telescope</title>
      <link>https://black-pixel.net/2010/07/22/worldwide-telescope/</link>
      <description>&lt;p&gt;I just found a very interesting site, it’s called WorldWide Telescope.&lt;/p&gt;
&lt;p&gt;Quote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;WorldWide Telescope (WWT) enables your computer to function as a virtual telescope, bringing together imagery from the best ground and space-based telescopes in the world. Experience narrated guided tours from astronomers and educators featuring interesting &lt;a href=&#34;http://www.worldwidetelescope.org/search/objects.aspx&#34;&gt;places&lt;/a&gt; in the sky.&lt;/p&gt;
&lt;p&gt;A web-based version of WorldWide Telescope is also now available. This version enables seamless, guided explorations of the universe from within a web browser on PC and Intel Mac OS X by using the power of Microsoft Silverlight 3.0.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are new detailed Mars Exploration and Enhanced Night Sky images. You can also watch the Mars in a 3D View, just like Google Street View. It’s really worth a look.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Here is a sample Screenshot:&lt;/em&gt;&lt;/p&gt;
&lt;div&gt;
  &lt;em&gt;&lt;a href=&#34;http://black-pixel.net/wp-content/uploads/2010/07/mars.jpg&#34;&gt;&lt;img class=&#34;aligncenter size-medium wp-image-76&#34; title=&#34;mars&#34; alt=&#34;WorldWide Telescope.&#34; src=&#34;http://black-pixel.net/wp-content/uploads/2010/07/mars-300x187.jpg&#34; width=&#34;180&#34; height=&#34;112&#34; /&gt;&lt;/a&gt;&lt;/em&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a title=&#34;WorldWide Telescope&#34; href=&#34;http://www.worldwidetelescope.org&#34; target=&#34;_blank&#34;&gt;http://www.worldwidetelescope.org&lt;/a&gt;
&lt;/div&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/07/22/worldwide-telescope/</guid>
      <pubDate>Thu, 22 Jul 2010 23:57:57 +0000</pubDate>
    </item>
    
    <item>
      <title>New Clone Wars Signatures</title>
      <link>https://black-pixel.net/2010/07/22/new-clone-wars-signatures-submitted-on-deviantart/</link>
      <description>&lt;p&gt;I recently submitted two of my new Clone Wars signatures on Deviantart.&lt;/p&gt;
&lt;p&gt;Ashoka:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2010/07/asoka2a.jpg&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;Yoda:&lt;/p&gt;
&lt;p&gt;&lt;img
  src=&#34;http://black-pixel.net/wp-content/uploads/2010/07/yoda1.png&#34;
  alt=&#34;&#34;
  loading=&#34;lazy&#34;
  decoding=&#34;async&#34;
  class=&#34;full-width&#34;
/&gt;

&lt;/p&gt;
&lt;p&gt;I am already planning other Clone Wars signatures, but it will take some time.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/07/22/new-clone-wars-signatures-submitted-on-deviantart/</guid>
      <pubDate>Thu, 22 Jul 2010 20:09:01 +0000</pubDate>
    </item>
    
    <item>
      <title>Project Fileserver: DLNA via Mediatomb</title>
      <link>https://black-pixel.net/2010/07/19/project-fileserver-dlna-via-mediatomb/</link>
      <description>&lt;p&gt;To watch my videos via DLNA on my Samsung TV, I needed an alternative program, because the Samsung software does not support Linux operating systems.&lt;/p&gt;
&lt;p&gt;I chose to install Mediatomb. To make it work with Samsung TVs, there were a few additional config tweaks necessary.&lt;/p&gt;
&lt;p&gt;The config.xml files in /etc/mediatomb/ &lt;strong&gt;and&lt;/strong&gt; in /root/.mediatomb/ have to be identically, else it Mediatomb won’t start.&lt;/p&gt;
&lt;p&gt;First of all you have to uncomment the &lt;code&gt;&amp;lt;custom-http-headers&amp;gt;&lt;/code&gt; section.&lt;/p&gt;
&lt;p&gt;The next step is to add the following lines to this section:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;add header=&amp;#34;transferMode.dlna.org: Streaming&amp;#34;/&amp;gt;
&amp;lt;add header=&amp;#34;contentFeatures.dlna.org:  DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000   00000000000000000000000000&amp;#34;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;At last  you have to change&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;protocolInfo extend=&amp;quot;no&amp;quot;/&amp;gt; to &amp;lt;protocolInfo extend=&amp;quot;yes&amp;quot;/&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now you can (re)start Mediatomb and it should be identified by the TV.&lt;/p&gt;
&lt;p&gt;To add the video folders you normally have to go to the web ui &lt;code&gt;http://serverip:49152/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In my case, Mediatomb could not scan the Truecrypt devices. To solve this problem I used the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mediatomb --add /media/truecrypt3/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That’s it.&lt;/p&gt;
&lt;p&gt;By the way, Mediatomb is &lt;strong&gt;much&lt;/strong&gt; better than the Samsung PC Share Manager.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/07/19/project-fileserver-dlna-via-mediatomb/</guid>
      <pubDate>Mon, 19 Jul 2010 00:59:27 +0000</pubDate>
    </item>
    
    <item>
      <title>Project Fileserver: Samba &#43; Truecrypt</title>
      <link>https://black-pixel.net/2010/07/18/project-fileserver-samba-truecrypt/</link>
      <description>&lt;p&gt;After assembling the computer and connecting everything, I had to install the operating system. I chose to install Debian Linux via netinst image, then I installed Samba and Truecrypt.&lt;/p&gt;
&lt;p&gt;The next step was configuring Samba and mounting the Truecrypt devices. I thought it would be done by that, but then I got 2 issues:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Fileserver was not “visible” in Windows 7.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;p&gt;You have to add two things to the Windows registry:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;HKLMSystemCCSServicesLanmanWorkstationParameters
DWORD  DomainCompatibilityMode = 1
DWORD  DNSNameResolutionRequired = 0
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Even though the rights in Linux were correct, all my Truecrypt folders were read-only.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Solution:&lt;/p&gt;
&lt;p&gt;If you want Truecrypt to mount the devices in read/write mode, you have to install the ntfs-3g driver and force Truecrypt to mount using it, with the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--filesystem=ntfs-3g&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now everything works fine.&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/07/18/project-fileserver-samba-truecrypt/</guid>
      <pubDate>Sun, 18 Jul 2010 01:10:15 +0000</pubDate>
    </item>
    
    <item>
      <title>Project Fileserver: The Hardware</title>
      <link>https://black-pixel.net/2010/07/18/project-fileserver-the-hardware/</link>
      <description>&lt;p&gt;Today, I will present you the Hardware for my File Server:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU&lt;/strong&gt;: AMD Athlon64 X2 4850e&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mainboard&lt;/strong&gt;: MSI K9A2VM-FD&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAM&lt;/strong&gt;: 2 GB DDR2-800&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Power supply&lt;/strong&gt;: Thermaltake Toughpower 750 W&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System HDD&lt;/strong&gt;: Seagate Barracuda 320GB&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File HDDs&lt;/strong&gt;: 2x Samsung 500GB; 1x Samsung 1,5TB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pictures:&lt;/p&gt;
</description>
      <author>Andy</author>
      <guid>https://black-pixel.net/2010/07/18/project-fileserver-the-hardware/</guid>
      <pubDate>Sun, 18 Jul 2010 00:51:46 +0000</pubDate>
    </item>
    
  </channel>
</rss>
