

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>chealion.ca</title>
    <link>https://chealion.ca/</link>
    <description>Recent content on chealion.ca</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>chealion@chealion.ca (Micheal Jones)</managingEditor>
    <webMaster>chealion@chealion.ca (Micheal Jones)</webMaster>
    <lastBuildDate>Thu, 13 Nov 2025 11:26:19 -0700</lastBuildDate>
    
        <atom:link href="https://chealion.ca/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>On Learning Gateway API using Cilium&#39;s Node IPAM and L2 features</title>
      <link>https://chealion.ca/blog/learning-gateway-api-cilium-node-ipam-and-l2/</link>
      <pubDate>Thu, 13 Nov 2025 11:26:19 -0700</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/learning-gateway-api-cilium-node-ipam-and-l2/</guid>
      <description>&lt;p&gt;During my learning of the Kubernetes &lt;a href=&#34;https://kubernetes.io/docs/concepts/services-networking/gateway/&#34;&gt;gateway API&lt;/a&gt;, I wanted to explore two of the different options Cilium has to assign an external IP to a service. Namely leveraging &lt;a href=&#34;https://docs.cilium.io/en/stable/network/node-ipam/&#34;&gt;Node IPAM&lt;/a&gt; which will allow you to use the IP addresses of your nodes, as well as the more general &lt;a href=&#34;https://docs.cilium.io/en/stable/network/l2-announcements&#34;&gt;L2&lt;/a&gt; option where you specify what IP addresses it should respond to within my home&amp;rsquo;s local network.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s not intended to be used this way for long, but gives me flexibility in presenting services in a way I know will work while sorting out some larger IPv6 routing choices by my ISP. (Figuring out how to convince my router to handle multiple /64s since I have a /56 delegated to me)&lt;/p&gt;&#xA;&lt;p&gt;My learning/example application is using &lt;a href=&#34;https://github.com/Ealenn/Echo-Server&#34;&gt;echoserver&lt;/a&gt; as the application and service, and then we&amp;rsquo;ll leverage gateway API and HTTPRoutes. It also shows the code and assumes the contents shown are put into a file and applied using &lt;code&gt;kubectl apply&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Without further adieu, let&amp;rsquo;s show how you configure it and what the results look like.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s set up a basic echo app with Cilium&amp;rsquo;s Gateway API using both Node IPAM and L2!&lt;/p&gt;&#xA;&lt;h4 id=&#34;1-configure-cilium-for-l2&#34;&gt;1. Configure Cilium for L2&lt;/h4&gt;&#xA;&lt;p&gt;There are two items we need to set up with Cilium:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Configure Cilium to do L2 announcements - by setting &lt;code&gt;l2announcements.enabled=true&lt;/code&gt; in Cilium&amp;rsquo;s config. (see &lt;a href=&#34;https://docs.cilium.io/en/stable/network/l2-announcements&#34;&gt;upstream&lt;/a&gt; docs for full instructions on customizing Cilium)&lt;/li&gt;&#xA;&lt;li&gt;Create a &lt;code&gt;LoadBalancerIPPool&lt;/code&gt; and a &lt;code&gt;CiliumL2AnnouncementPolicy&lt;/code&gt; object&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The below sets what IPs are available, and on what interfaces on the nodes should Cilium respond to these IPs on.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;---&#xA;apiVersion: &amp;quot;cilium.io/v2&amp;quot;&#xA;kind: CiliumLoadBalancerIPPool&#xA;metadata:&#xA;  name: &amp;quot;example-l2&amp;quot;&#xA;spec:&#xA;  blocks:&#xA;  - cidr: &amp;quot;192.168.123.0/24&amp;quot;&#xA;&#xA;---&#xA;apiVersion: &amp;quot;cilium.io/v2alpha1&amp;quot;&#xA;kind: CiliumL2AnnouncementPolicy&#xA;metadata:&#xA;  name: example-l2-policy&#xA;spec:&#xA;  interfaces:&#xA;  # Advertise on enp* named interfaces&#xA;  # Change if you interface is different&#xA;  - ^enp[0-9]s[0-9]f[0-9]+&#xA;  externalIPs: true&#xA;  loadBalancerIPs: true&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Once that is applied, we now have IP addresses associated with our L2 setup for the load balancer (Envoy in our case) to leverage. Because we have no selectors set up as seen in the upstream docs, it will be the greedy default provider.&lt;/p&gt;&#xA;&lt;h4 id=&#34;2-create-your-node-ipam-configuration&#34;&gt;2. Create your Node IPAM configuration&lt;/h4&gt;&#xA;&lt;p&gt;To do this, we need to configure Cilium to allow Node IPAM - by setting &lt;code&gt;nodeIPAM.enabled=true&lt;/code&gt; in Cilium&amp;rsquo;s config. (see &lt;a href=&#34;https://docs.cilium.io/en/stable/network/node-ipam/&#34;&gt;upstream&lt;/a&gt; docs for full instructions on customizing Cilium).&lt;/p&gt;&#xA;&lt;p&gt;To leverage this, we will need to make sure our LoadBalancer service is using the &lt;code&gt;loadBalancerClass&lt;/code&gt; of &lt;code&gt;io.cilium/node&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;3-create-our-deployments&#34;&gt;3. Create our deployments&lt;/h4&gt;&#xA;&lt;p&gt;Our next step is that we will deploy two different deployments of echoserver named for each gateway to make it easier to tell apart. This is the same deployment with different names.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;---&#xA;apiVersion: apps/v1&#xA;kind: Deployment&#xA;metadata:&#xA;  name: echoserver-l2&#xA;  namespace: default&#xA;spec:&#xA;  replicas: 2&#xA;  selector:&#xA;    matchLabels:&#xA;      app: echoserver-l2&#xA;  template:&#xA;    metadata:&#xA;      labels:&#xA;        app: echoserver-l2&#xA;    spec:&#xA;      containers:&#xA;      - image: ealen/echo-server:latest&#xA;        imagePullPolicy: IfNotPresent&#xA;        name: echoserver&#xA;        ports:&#xA;        - containerPort: 80&#xA;        env:&#xA;        - name: PORT&#xA;          value: &amp;quot;80&amp;quot;&#xA;---&#xA;apiVersion: apps/v1&#xA;kind: Deployment&#xA;metadata:&#xA;  name: echoserver-node&#xA;  namespace: default&#xA;spec:&#xA;  replicas: 2&#xA;  selector:&#xA;    matchLabels:&#xA;      app: echoserver-node&#xA;  template:&#xA;    metadata:&#xA;      labels:&#xA;        app: echoserver-node&#xA;    spec:&#xA;      containers:&#xA;      - image: ealen/echo-server:latest&#xA;        imagePullPolicy: IfNotPresent&#xA;        name: echoserver&#xA;        ports:&#xA;        - containerPort: 80&#xA;        env:&#xA;        - name: PORT&#xA;          value: &amp;quot;80&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You can check out the pods with &lt;code&gt;kubectl get pods&lt;/code&gt; at this point to ensure they are running.&lt;/p&gt;&#xA;&lt;h4 id=&#34;4-deploy-our-gateways&#34;&gt;4. Deploy our gateways&lt;/h4&gt;&#xA;&lt;p&gt;Our goal here is to create a gateway targeting each IPAM approach (Node vs L2). It&amp;rsquo;s important to note that the Node IPAM approach requires a second GatewayClass to be created and it&amp;rsquo;s associated config to set &lt;code&gt;loadBalancerClass&lt;/code&gt; as mentioned in step  2&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;---&#xA;apiVersion: gateway.networking.k8s.io/v1&#xA;kind: GatewayClass&#xA;metadata:&#xA;  name: node-gateway-class&#xA;spec:&#xA;  controllerName: io.cilium/gateway-controller&#xA;  description: Non default gateway class to use node ipam.&#xA;  parametersRef:&#xA;    group: cilium.io&#xA;    kind: CiliumGatewayClassConfig&#xA;    name: node-gateway-config&#xA;    namespace: default&#xA;---&#xA;apiVersion: cilium.io/v2alpha1&#xA;kind: CiliumGatewayClassConfig&#xA;metadata:&#xA;  name: node-gateway-config&#xA;  namespace: default&#xA;spec:&#xA;  service:&#xA;    loadBalancerClass: io.cilium/node&#xA;&#xA;---&#xA;apiVersion: gateway.networking.k8s.io/v1&#xA;kind: Gateway&#xA;metadata:&#xA;  name: my-l2-gateway&#xA;spec:&#xA;  # Use default gatewayClass&#xA;  gatewayClassName: cilium&#xA;  listeners:&#xA;  - protocol: HTTP&#xA;    port: 80&#xA;    name: l2-gw&#xA;    allowedRoutes:&#xA;      namespaces:&#xA;        from: Same&#xA;---&#xA;apiVersion: gateway.networking.k8s.io/v1&#xA;kind: Gateway&#xA;metadata:&#xA;  name: my-node-gateway&#xA;spec:&#xA;  gatewayClassName: node-gateway-class&#xA;  listeners:&#xA;  - protocol: HTTP&#xA;    port: 80&#xA;    name: node-gw&#xA;    allowedRoutes:&#xA;      namespaces:&#xA;        from: Same&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;To confirm they are created you can see them with &lt;code&gt;kubectl get gateway&lt;/code&gt;. If you have errors - you&amp;rsquo;ll want to start with the cilium-operator logs.&lt;/p&gt;&#xA;&lt;h4 id=&#34;5-deploy-the-httproutes&#34;&gt;5. Deploy the HTTPRoutes&lt;/h4&gt;&#xA;&lt;p&gt;Next, we can add the route that ties the service defined in the next step with the gateway we just created for each of our example deployments.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;---&#xA;apiVersion: gateway.networking.k8s.io/v1&#xA;kind: HTTPRoute&#xA;metadata:&#xA;  name: http-l2-route&#xA;spec:&#xA;  parentRefs:&#xA;  - name: my-l2-gateway&#xA;    namespace: default&#xA;  rules:&#xA;  - matches:&#xA;    - path:&#xA;        type: PathPrefix&#xA;        value: /&#xA;    backendRefs:&#xA;    - name: l2-service&#xA;      port: 80&#xA;---&#xA;apiVersion: gateway.networking.k8s.io/v1&#xA;kind: HTTPRoute&#xA;metadata:&#xA;  name: http-node-route&#xA;spec:&#xA;  parentRefs:&#xA;  - name: my-node-gateway&#xA;    namespace: default&#xA;  rules:&#xA;  - matches:&#xA;    - path:&#xA;        type: PathPrefix&#xA;        value: /&#xA;    backendRefs:&#xA;    - name: node-service&#xA;  port: 80&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;To confirm they are created you can see them with &lt;code&gt;kubectl get httproute&lt;/code&gt;. If you have errors - you&amp;rsquo;ll want to start with the cilium-operator logs.&lt;/p&gt;&#xA;&lt;p&gt;We should see 1 attached route to each gateway, and each gateway should have an external IP. The Node IPAM will list all of the available nodes.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;kubectl get gateway -o yaml | grep ttach &#xA;&#xA;    - attachedRoutes: 1&#xA;    - attachedRoutes: 1&#xA;&#xA;kubectl get gateway&#xA;&#xA;    NAME             CLASS                      ADDRESS        PROGRAMMED   AGE&#xA;    my-l2-gateway    cilium                     192.168.123.2  True         3m&#xA;    my-node-gateway  nodeipamlb-gateway-class   192.168.124.3  True         3m&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h4 id=&#34;6-deploy-the-services&#34;&gt;6. Deploy the services&lt;/h4&gt;&#xA;&lt;p&gt;Next, we need to attach our deployments to our gateway using a service - seeing the labels attach the components together.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;---&#xA;apiVersion: v1&#xA;kind: Service&#xA;metadata:&#xA;  name: l2-service&#xA;  labels:&#xA;    app: echoserver-l2&#xA;    service: l2-service&#xA;spec:&#xA;  ports:&#xA;  - port: 80&#xA;    targetPort: 80&#xA;    protocol: TCP&#xA;    name: http&#xA;  selector:&#xA;    app: echoserver-l2&#xA;---&#xA;apiVersion: v1&#xA;kind: Service&#xA;metadata:&#xA;  name: node-service&#xA;  labels:&#xA;    app: echoserver-node&#xA;    service: node-service&#xA;spec:&#xA;  ports:&#xA;  - port: 80&#xA;    targetPort: 80&#xA;    protocol: TCP&#xA;    name: http&#xA;  selector:&#xA;    app: echoserver-node&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;And as always you can double check they exist using &lt;code&gt;kubectl get svc&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;7-confirm-connectivity&#34;&gt;7. Confirm connectivity&lt;/h4&gt;&#xA;&lt;p&gt;The last part will require &lt;code&gt;jq&lt;/code&gt; for ease. We can use it to grab our external gateways and then curl the IP to find out which deployment we&amp;rsquo;re talking to.&lt;/p&gt;&#xA;&lt;p&gt;Grab the external gateway IPs and then we&amp;rsquo;ll curl to echo back the info we want:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;L2GATEWAY=$(kubectl get gateway my-l2-gateway -o json | jq -r &#39;.status.addresses[0].value&#39;)&#xA;NODEGATEWAY=$(kubectl get gateway my-node-gateway -o json | jq -r &#39;.status.addresses[0].value&#39;)&#xA;curl -v http://${L2GATEWAY}/ | jq &#39;.environment.HOSTNAME&#39;&#xA;curl -v http://${NODEGATEWAY}/ | jq &#39;.environment.HOSTNAME&#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If it&amp;rsquo;s working correctly you&amp;rsquo;ll see the normal curl output followed by &lt;code&gt;&amp;quot;echoserver-l2-&amp;lt;rest of container name&amp;gt;&amp;quot;&lt;/code&gt; or &lt;code&gt;&amp;quot;echoserver-node-&amp;lt;rest of container name&amp;gt;&amp;quot;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;NOTE: As of 1.18, it&amp;rsquo;s not possible to enable access logs in Envoy which makes debugging a little harder to note that your HTTPRoute is not pointed to a service that exists.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Starred Podcasts to mcjones.ca</title>
      <link>https://chealion.ca/blog/starred-podcasts-to-mcjones-ca/</link>
      <pubDate>Sun, 23 Jul 2023 23:54:02 -0600</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/starred-podcasts-to-mcjones-ca/</guid>
      <description>&lt;p&gt;I have finally completed a piece of work I started July last year with&#xA;&lt;a href=&#34;https://mcjones.ca&#34;&gt;mcjones.ca&lt;/a&gt; - that is having a good spot to dump all the&#xA;starred podcasts from Overcast. I&amp;rsquo;ve wanted to share them or create something&#xA;I can go back to reference, and this still isn&amp;rsquo;t quite that, but it is at&#xA;least getting everything in one place.&lt;/p&gt;&#xA;&lt;p&gt;The majority of the entries do not have any notes - just the name and I&amp;rsquo;ve had&#xA;to go digging for links to the various podcast&amp;rsquo;s websites. Apparently&#xA;I have/had 392 entries I&amp;rsquo;ve sent to Bear from Overcast with the #podcast tag.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s hoping it proves to be useful with the demise of most social media&#xA;lately.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>SSH Key Types and Crytography Short Notes in 2023</title>
      <link>https://chealion.ca/blog/ssh-keys-2023/</link>
      <pubDate>Mon, 06 Feb 2023 21:15:24 -0700</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/ssh-keys-2023/</guid>
      <description>&lt;p&gt;This is an update to my personal notes that made up my 2016 post: &lt;a href=&#34;https://chealion.ca/blog/ssh-key-types-and-cryptography-the-short-notes/&#34;&gt;SSH Key Types and Cryptogpraphy: The Short Notes&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Things have changed in short 6+ years since this post. Namely DSA is long one, RSA is on well on its way out, and the two newer options in that post are now considered the minimum standard.&lt;/p&gt;&#xA;&lt;p&gt;The too long, didn’t read version of this entire post is almost the same as what I said in 2016 - &lt;strong&gt;use ed25519 for your keys unless something explicitly does not support it.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;openssh-version-references&#34;&gt;OpenSSH Version References&lt;/h3&gt;&#xA;&lt;p&gt;From the notes I gathered to make the previous blog post - ed25519 was introduced in OpenSSH 6.5+&lt;/p&gt;&#xA;&lt;h4 id=&#34;ubuntu&#34;&gt;Ubuntu&lt;/h4&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;OS Version&lt;/th&gt;&#xA;          &lt;th&gt;OpenSSH Version&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;12.04&lt;/td&gt;&#xA;          &lt;td&gt;5.9&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;14.04&lt;/td&gt;&#xA;          &lt;td&gt;6.6&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;16.04&lt;/td&gt;&#xA;          &lt;td&gt;7.2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;18.04&lt;/td&gt;&#xA;          &lt;td&gt;7.6&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;20.04&lt;/td&gt;&#xA;          &lt;td&gt;8.2&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;22.04&lt;/td&gt;&#xA;          &lt;td&gt;8.9&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h4 id=&#34;macos&#34;&gt;macOS&lt;/h4&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;OS Version&lt;/th&gt;&#xA;          &lt;th&gt;OpenSSH Version&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;10.12 Sierra (2016)&lt;/td&gt;&#xA;          &lt;td&gt;7.3&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;10.13 High Sierra (2017)&lt;/td&gt;&#xA;          &lt;td&gt;7.6&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;10.14 Mojave (2018)&lt;/td&gt;&#xA;          &lt;td&gt;7.9&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;10.15 Catalina (2019)&lt;/td&gt;&#xA;          &lt;td&gt;7.9&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;11.x Big Sur (2020)&lt;/td&gt;&#xA;          &lt;td&gt;8.1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;12.x Monterey (2021)&lt;/td&gt;&#xA;          &lt;td&gt;8.6&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;13.x Ventura (2022)&lt;/td&gt;&#xA;          &lt;td&gt;9.0&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;14.x Sonoma (2023)&lt;/td&gt;&#xA;          &lt;td&gt;9.3&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h4 id=&#34;nova--horizon-openstack&#34;&gt;Nova / Horizon (OpenStack)&lt;/h4&gt;&#xA;&lt;p&gt;Of note ed25519 support was removed prior to Ocata, and then restored with around version 19 (Stein / Apr 2019) of nova-api.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Dev Diary - Community Development Map</title>
      <link>https://chealion.ca/blog/dev-diary-commmunity-development-map/</link>
      <pubDate>Mon, 30 Aug 2021 09:00:00 -0600</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/dev-diary-commmunity-development-map/</guid>
      <description>&lt;h3 id=&#34;the-problem&#34;&gt;The Problem&lt;/h3&gt;&#xA;&lt;p&gt;The City of Calgary has a number of resources available for finding out what development is happening in your community. The primary resource is the &lt;a href=&#34;https://developmentmap.calgary.ca&#34;&gt;Development Map&lt;/a&gt;, which while comprehensive is significantly off putting because of the amount of information presented. It also only covers the major developments - land use changes and development permits, that are open to some community consultation.&lt;/p&gt;&#xA;&lt;p&gt;My particular community - Sunalta - has an additional problem because we joined a project with the City of Calgary removing the need for most businesses to apply for a development permit for change of use on our Main Streets (10th Ave. and 14th St). While we are very supportive of the project, we&amp;rsquo;ve always struggled with notification or knowing when a new business has moved in so we could welcome them to the community. The lack of development permit makes this a bit harder.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-data&#34;&gt;The Data&lt;/h3&gt;&#xA;&lt;p&gt;Thankfully, the City provides this data via their open data portal:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://data.calgary.ca/dataset/Land-Use-Redesignation-Applications/33vi-ew4s&#34;&gt;Land Use Applications&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://data.calgary.ca/dataset/Development-Permits/6933-unw5&#34;&gt;Development Permits&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;However the City also releases the information for more minor information to help answer resident&amp;rsquo;s questions that are sometimes directed to us.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;[Building Permits])(&lt;a href=&#34;https://data.calgary.ca/Business-and-Economic-Activity/Building-Permits/c2es-76ed&#34;&gt;https://data.calgary.ca/Business-and-Economic-Activity/Building-Permits/c2es-76ed&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://data.calgary.ca/dataset/Tenancy-Change-Applications/wrtt-2nqs&#34;&gt;Tenancy Changes&lt;/a&gt; - when businesses move in to the neighbourhood!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;but-can-i-use-it&#34;&gt;But can I use it?&lt;/h3&gt;&#xA;&lt;p&gt;So cool, we have some data. How do we make this easier to use? The Open Data Portal does present the data and even allows you to do some visualization but you&amp;rsquo;re unable to share your visualizations and filtered datasets without logging in. So using &lt;a href=&#34;https://data.calgary.ca&#34;&gt;data.calgary.ca&lt;/a&gt; is only good for exploration. It also does not provide a great way for less technically minded folks on our board to get this data or even glance at it.&lt;/p&gt;&#xA;&lt;p&gt;So the next best thing is to look at setting something up to read the data and create the visualizations we want!&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-solution&#34;&gt;The &amp;ldquo;solution&amp;rdquo;&lt;/h3&gt;&#xA;&lt;p&gt;From here I&amp;rsquo;ll share my notes about how I arrived at my solution. It&amp;rsquo;s far from the only solution, but is the result of my trial, error, and realizing there are a LOT of options I&amp;rsquo;m simply not even aware of.&lt;/p&gt;&#xA;&lt;h4 id=&#34;filtering&#34;&gt;Filtering&lt;/h4&gt;&#xA;&lt;p&gt;The first step was to try and filter the data from the 4 datasets to just the area I cared about - turns out this is easy with &lt;a href=&#34;https://dev.socrata.com/docs/queries/&#34;&gt;Socrata&amp;rsquo;s Query Language&lt;/a&gt;. Adding &lt;code&gt;?communityname=SUNALTA&lt;/code&gt; to my queries and the python py-soda library and I&amp;rsquo;m off to the races. The land use dataset however does NOT include community fields, so I bet heavily on that 1000 land use items is sufficient for the last 365 days worth of data.&lt;/p&gt;&#xA;&lt;h4 id=&#34;visualization-streamlit&#34;&gt;Visualization (&lt;a href=&#34;https://streamlit.io&#34;&gt;Streamlit&lt;/a&gt;)&lt;/h4&gt;&#xA;&lt;p&gt;The next tech I dove into - was how can I show off this data on a map and in a table. At work another team has started using &lt;a href=&#34;https://streamlit.io&#34;&gt;Streamlit&lt;/a&gt; and it was incredibly easy to get started with. It also had a fantastic feature where it will cache data removing my worry about needing to jump through hoops to avoid hitting data.calgary.ca too many times and needing to create a caching layer myself.&lt;/p&gt;&#xA;&lt;p&gt;The biggest gotchas with streamlit I have found is that the default map is nowhere near as featureful as using the plotly library to put dots on the map. Plotly&amp;rsquo;s table feature while supported has terrible performance and causes everything to drag to a halt. As such I went with Plotly for showing the map, but used Streamlit&amp;rsquo;s native table view to show off the data.&lt;/p&gt;&#xA;&lt;h4 id=&#34;hosting&#34;&gt;Hosting&lt;/h4&gt;&#xA;&lt;p&gt;While Streamlit is easy to run and put a reverse proxy in front of (for SSL and caching), they do also run a free service to deploy your Streamlit app to Heroku for showing off. &lt;a href=&#34;https://streamlit.io/cloud&#34;&gt;Streamlit Sharing&lt;/a&gt; is free for public repositories (like this project). It will also hook up to GitHub to redeploy your app whenever you push an update without needing to code this in GitHub workflows yourself. Very convenient.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Hugo Archetypes</title>
      <link>https://chealion.ca/til/til-hugo-archetypes/</link>
      <pubDate>Thu, 26 Aug 2021 15:04:54 -0600</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/til/til-hugo-archetypes/</guid>
      <description>&lt;p&gt;As the first post to my TIL section where I&amp;rsquo;m trying to encourage myself to&#xA;write more frequently on smaller topics; I learned about Hugo&amp;rsquo;s&#xA;&lt;a href=&#34;https://gohugo.io/content-management/archetypes/&#34;&gt;Archetypes&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The tl;dr is that archetypes is the template for new content. As such instead&#xA;of typing out all of the metadata fields each time, I can type &lt;code&gt;hugo new blog/&amp;lt;name&amp;gt;.md&lt;/code&gt; to get a new blog post and &lt;code&gt;hugo new til/&amp;lt;name&amp;gt;.md&lt;/code&gt;. These are each&#xA;defined in the archetypes folder in blog.md and til.md.&lt;/p&gt;&#xA;&lt;p&gt;For example I use the below in blog.md:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;+++&#xA;categories = []&#xA;tags = []&#xA;description = &amp;#34;&amp;#34;&#xA;slug = &amp;#39;{{ .File.BaseFileName }}&amp;#39;&#xA;draft = true&#xA;title = &amp;#34;{{ replace .Name &amp;#34;-&amp;#34; &amp;#34; &amp;#34; | title }}&amp;#34;&#xA;date = {{ .Date }}&#xA;author = &amp;#34;Micheal J.&amp;#34;&#xA;+++&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Dev Diary - yycbike_count - Python 3 and GitHub Actions</title>
      <link>https://chealion.ca/blog/dev-diary-updating-yycbike-count-python-2-github-actions/</link>
      <pubDate>Thu, 08 Jul 2021 00:00:00 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/dev-diary-updating-yycbike-count-python-2-github-actions/</guid>
      <description>&lt;p&gt;A couple weeks back, a &lt;a href=&#34;https://twitter.com/yycbike_count&#34;&gt;Twitter bot&lt;/a&gt; I run stopped working correctly. It&amp;rsquo;s been on my list for a long time to revamp and clean up - if only because the server that it was running on was very overdue for being rebuilt. So when Eco Counter changed their private API and broke the script it provided a great chance to rewrite.&lt;/p&gt;&#xA;&lt;p&gt;Fun items learned along the way:&lt;/p&gt;&#xA;&lt;h4 id=&#34;python-3-upgrade-notes&#34;&gt;Python 3 Upgrade Notes&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Changing print is straight forward.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.python.org/3/tutorial/inputoutput.html#formatted-string-literals&#34;&gt;f strings&lt;/a&gt; are awesome&lt;/li&gt;&#xA;&lt;li&gt;Cleaning up data is super time consuming, but cleans things up so nicely.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;github-actions&#34;&gt;GitHub Actions&lt;/h4&gt;&#xA;&lt;p&gt;As part of the rewrite I wanted to explore ways to stop managing a server in order to run the bot. As it turns out GitHub actions has a &lt;a href=&#34;https://docs.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events&#34;&gt;schedule feature&lt;/a&gt; and could work quite well for both testing and running the script. They also provide a fantastic learning tutorial at &lt;a href=&#34;https://lab.github.com/githubtraining/github-actions:-hello-world&#34;&gt;https://lab.github.com/githubtraining/github-actions:-hello-world&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;It gave me a great easy chance to get into actually setting up a simplistic CD system for myself, and to get my hands dirty. This coupled with &lt;a href=&#34;https://github.com/nektos/act&#34;&gt;act&lt;/a&gt; made it easy to test and run the script through being rewritten.&lt;/p&gt;&#xA;&lt;p&gt;The whole process is summarized in a sentence, but it took some time and I hope will pay off in spades in the future.&lt;/p&gt;&#xA;&lt;p&gt;You can find the workflow used on &lt;a href=&#34;https://github.com/Chealion/yycbike/blob/main/.github/workflows/yycbike.yml&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;repurposing-or-extending-yycbike_count&#34;&gt;Repurposing or Extending yycbike_count&lt;/h4&gt;&#xA;&lt;p&gt;For those who are interested in taking the work in yycbike_count to use for their own city - please do. There are a couple things to mention if you want to re-use most of the work I did.&lt;/p&gt;&#xA;&lt;h5 id=&#34;counter-config&#34;&gt;Counter Config&lt;/h5&gt;&#xA;&lt;p&gt;The counter config is hard coded into &lt;code&gt;twitterBot.py&lt;/code&gt; - sorry.&lt;/p&gt;&#xA;&lt;h5 id=&#34;github-actions-1&#34;&gt;GitHub Actions&lt;/h5&gt;&#xA;&lt;p&gt;If you want to use the workflow you&amp;rsquo;ll need to make 4 GitHub secrets correspondding to the environment variables (&lt;code&gt;TWITTER_TOKEN&lt;/code&gt;, &lt;code&gt;TWITTER_TOKEN_KEY&lt;/code&gt;, etc.). If you want to use &lt;code&gt;act&lt;/code&gt;, you&amp;rsquo;ll also need to add them to the .secrets file.&lt;/p&gt;&#xA;&lt;h5 id=&#34;act&#34;&gt;act&lt;/h5&gt;&#xA;&lt;p&gt;If you want to use act to run the workflow locally you&amp;rsquo;ll need to add the following to your &lt;code&gt;.actrc&lt;/code&gt; file:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;-P ubuntu-latest=catthehacker/ubuntu:act-latest&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>Running Pihole using Docker on your Mac</title>
      <link>https://chealion.ca/blog/pihole-on-a-mac-with-docker/</link>
      <pubDate>Thu, 08 Aug 2019 20:00:02 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/pihole-on-a-mac-with-docker/</guid>
      <description>&lt;p&gt;A colleague of mine mentioned an open source program called Pi-hole designed to act as a DNS resolver in your local network to blackhole trackers and ads. The biggest advantage of this is that it can also be used by devices that don’t support adblockers natively or are cumbersome to use.&lt;/p&gt;&#xA;&lt;p&gt;So how does one trial something on their local Mac to see if it’s worthwhile? Turns out the project has a Dockerfile and it works quite well, and if you don’t expose the DHCP ports you can ignore breaking your work network with a rogue DHCP server. So assuming you already have Docker installed:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cat &amp;lt;&amp;lt;EOF | tee ~/.piholeenv&#xA;WEBPASSWORD=pihole&#xA;DNS1=1.1.1.1&#xA;IPv6=True&#xA;EOF&#xA;&#xA;docker pull pihole/pihole&#xA;&#xA;docker run -d -p 80:80 -p 53:53 -p 53:53/udp -p 443:443 --restart=unless-stopped --env-file ~/.piholeenv --name pihole pihole/pihole&#xA;&#xA;open http://127.0.0.1/admin/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next, set your DNS server to 127.0.0.1:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;networksetup -setdnsservers Wi-Fi 127.0.0.1&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And nada, a quick, dirty, and SUPER ephemeral test that doesn’t mess with the current DHCP setup on your network. If you want to run it more long term, follow the &lt;a href=&#34;https://github.com/pi-hole/docker-pi-hole/#running-pi-hole-docker&#34;&gt;docs&lt;/a&gt; properly and specify a volume to save the data.&lt;/p&gt;&#xA;&lt;p&gt;To shut it all down:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker stop pihole&#xA;docker rm pihole&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Unfortunately my home router provided by my ISP doesn&amp;rsquo;t offer the ability to&#xA;change DNS. So I guess that&amp;rsquo;s the push necessary to get around to putting it&#xA;in bridge mode and getting a proper router.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Using CloudFlare as a v6 to v4 Bridge</title>
      <link>https://chealion.ca/blog/using-cloudflare-as-a-v6-to-v4-bridge/</link>
      <pubDate>Sat, 09 Jul 2016 06:45:08 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/using-cloudflare-as-a-v6-to-v4-bridge/</guid>
      <description>&lt;p&gt;CloudFlare offers the ability for you to turn on CDN caching and present your service to the public without requiring a public IPv4 address (so long as you have a publicly accessible v6 address) To turn it on, add the DNS entry to your domain on CloudFlare, and then turn on the caching service (Coloured in logo)&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://chealion.ca/images/CloudFlare.png&#34; alt=&#34;Alt text&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The caveats with the CDN are the same as if you had a v4 address; only &lt;a href=&#34;https://support.cloudflare.com/hc/en-us/articles/200169156-Which-ports-will-CloudFlare-work-with-&#34;&gt;certain ports&lt;/a&gt; (eg. 80, 8080, 443 , 8443, etc.) work. The output from your server is cached/proxied via CloudFlare&amp;rsquo;s CDN servers. So it&amp;rsquo;s not a full fix; eg. no port 22 to ssh in, but for running a web/http based service can be quite useful.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>SSH Key Types and Cryptography: The Short Notes</title>
      <link>https://chealion.ca/blog/ssh-key-types-and-cryptography-the-short-notes/</link>
      <pubDate>Mon, 20 Jun 2016 18:41:23 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/ssh-key-types-and-cryptography-the-short-notes/</guid>
      <description>&lt;p&gt;On nearly all current (&amp;lt; 3 years old) operating systems there are 4 different types of SSH key types available - both as a client&amp;rsquo;s key and the host key:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;DSA (No longer allowed by default in OpenSSH 7.0+)&lt;/li&gt;&#xA;&lt;li&gt;RSA&lt;/li&gt;&#xA;&lt;li&gt;ECDSA (OpenSSH 5.7+)&lt;/li&gt;&#xA;&lt;li&gt;ed25519 (OpenSSH 6.5+)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;So which one to use?&lt;/p&gt;&#xA;&lt;p&gt;In general, the best practice preference is to use ed25519 if possible, otherwise use RSA (4096 bits) due to mistrust of NIST&amp;rsquo;s curve for ECDSA. Which key is chosen/created is managed by &lt;code&gt;HostKeyAlgorithms&lt;/code&gt; in &lt;code&gt;sshd.conf&lt;/code&gt;, and when you create a client key by running &lt;code&gt;ssh-keygen&lt;/code&gt;. So what about the other parts of an SSH connection, and can I use an ed25519 key anywhere?&lt;/p&gt;&#xA;&lt;p&gt;The key types are just one portion of an SSH connection; authentication. SSH connections have three major cryptographic phases, the key exchange, the authentication, followed by the negotiated symmetric encryption used by the rest of the connection. (If you want more detail, check out &lt;a href=&#34;https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process&#34;&gt;Digital Ocean&lt;/a&gt; or &lt;a href=&#34;http://www.cisco.com/c/en/us/about/press/internet-protocol-journal/back-issues/table-contents-46/124-ssh.html&#34;&gt;Cisco&amp;rsquo;s&lt;/a&gt; explanations.)&lt;/p&gt;&#xA;&lt;p&gt;Unlike the SSH key type, the ciphers and key exchange are decided on between &lt;code&gt;sshd&lt;/code&gt; and &lt;code&gt;ssh&lt;/code&gt; depending on their feature set and what is defined in their config files.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re running OpenSSH 6.3 or newer you can see what algorithms are supported by running one of the three commands: &lt;code&gt;ssh -Q [cipher|mac|kex]&lt;/code&gt;, or read &lt;code&gt;man ssh_config&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;key-exchange&#34;&gt;Key Exchange&lt;/h4&gt;&#xA;&lt;p&gt;A glossed over version of the key exchange, has the client and the server share some information (eg. public keys) and use the Diffie-Hellman algorithm with a decided curve to set up the cipher (symmetric key) and the MAC (message authentication code to confirm validity) to be used for the rest of the connection.&lt;/p&gt;&#xA;&lt;p&gt;Mozilla&amp;rsquo;s recomended list of kex choices to use (specify in sshd_config) per their &lt;a href=&#34;https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern_.28OpenSSH_6.7.2B.29&#34;&gt;wiki&lt;/a&gt; is a great starting point. The summary being anything at least with a sha256 confirmation helps.&lt;/p&gt;&#xA;&lt;h4 id=&#34;encryption&#34;&gt;Encryption&lt;/h4&gt;&#xA;&lt;p&gt;The symmetric key created during the key exchange step is now used to encrypt and decrypt the rest of the connection.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern_.28OpenSSH_6.7.2B.29&#34;&gt;Mozilla&amp;rsquo;s wiki&lt;/a&gt; again lists the most recommended ciphers and MACs with the new chacha20-poly1305 being the first on the list.&lt;/p&gt;&#xA;&lt;h4 id=&#34;key-type-reference&#34;&gt;Key Type Reference&lt;/h4&gt;&#xA;&lt;table&gt;&#xA;&lt;tr&gt;&#xA;&lt;th&gt;OS&lt;/th&gt;&#xA;&lt;th&gt;OpenSSH&lt;/th&gt;&#xA;&lt;th&gt;Type&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Ubuntu 12.04&lt;/td&gt;&#xA;&lt;td&gt;5.9&lt;/td&gt;&#xA;&lt;td&gt;dsa,rsa,ecdsa&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Ubuntu 14.04&lt;/td&gt;&#xA;&lt;td&gt;6.6&lt;/td&gt;&#xA;&lt;td&gt;dsa,rsa,ecdsa,ed25519&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Ubuntu 16.04&lt;/td&gt;&#xA;&lt;td&gt;7.2&lt;/td&gt;&#xA;&lt;td&gt;dsa*,rsa,ecdsa,ed25519&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Fedora 23&lt;/td&gt;&#xA;&lt;td&gt;7.1&lt;/td&gt;&#xA;&lt;td&gt;dsa*,rsa,ecdsa,ed25519&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;CentOS 7&lt;/td&gt;&#xA;&lt;td&gt;6.4&lt;/td&gt;&#xA;&lt;td&gt;dsa,rsa,ecdsa&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Mac OS X 10.11 (El Capitan)&lt;/td&gt;&#xA;&lt;td&gt;6.9&lt;/td&gt;&#xA;&lt;td&gt;dsa,rsa,ecdsa,ed25519&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;macOS 10.12 (Sierra DP)&lt;/td&gt;&#xA;&lt;td&gt;7.2&lt;/td&gt;&#xA;&lt;td&gt;dsa*,rsa,ecdsa,ed25519&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Cmder&lt;/td&gt;&#xA;&lt;td&gt;7.1&lt;/td&gt;&#xA;&lt;td&gt;dsa*,rca,edsa,ed25519&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;Window 10 (14342)&lt;/td&gt;&#xA;&lt;td&gt;6.6.1&lt;/td&gt;&#xA;&lt;td&gt;dsa,rsa,ecdsa,ed25519&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;PuTTY&lt;/td&gt;&#xA;&lt;td&gt;N/A&lt;/td&gt;&#xA;&lt;td&gt;dsa,rsa,ecdsa[1],ed25519[1]&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;code&gt;*&lt;/code&gt; - disabled by default for &lt;code&gt;sshd&lt;/code&gt;&lt;br&gt;&#xA;1 - PuTTY stable only supports dsa and rsa but the latest development snapshots support &lt;a href=&#34;http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/ecdsa.html&#34;&gt;ecdsa&lt;/a&gt; and &lt;a href=&#34;http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/ed25519.html&#34;&gt;ed25519&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h4 id=&#34;tldr&#34;&gt;TL;DR&lt;/h4&gt;&#xA;&lt;p&gt;Unless you&amp;rsquo;re using CentOS 6 or Ubuntu 12.04, use ed25519 keys and Mozilla&amp;rsquo;s config files to limit the preferred connection ciphers.&lt;/p&gt;&#xA;&lt;h4 id=&#34;other-resource-links&#34;&gt;Other Resource Links&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.openssh.com/legacy.html&#34;&gt;http://www.openssh.com/legacy.html&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>What&#39;s calgary.bike?</title>
      <link>https://chealion.ca/blog/whats-calgary-bike/</link>
      <pubDate>Sat, 18 Apr 2015 21:10:48 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/whats-calgary-bike/</guid>
      <description>&lt;p&gt;On &lt;a href=&#34;https://twitter.com/yycbike_count/status/585944812303417344&#34;&gt;April 8th&lt;/a&gt; I stopped redirecting &lt;a href=&#34;https://calgary.bike&#34;&gt;calgary.bike&lt;/a&gt; to &lt;a href=&#34;http://bikecalgary.org&#34;&gt;Bike Calgary&lt;/a&gt;[1] to start showing off the aggregated data that I was pulling together from the 3 &lt;a href=&#34;http://www.eco-counter.com/&#34;&gt;Eco-Counter&lt;/a&gt; installations. With the &lt;a href=&#34;https://github.com/chealion/yycbike&#34;&gt;source on GitHub&lt;/a&gt;, I thought it&amp;rsquo;d be worth explaining a little of the why and how.&lt;/p&gt;&#xA;&lt;p&gt;At the start of January, the City of Calgary made public the web page for bike counter on the &lt;a href=&#34;http://www.eco-public.com/public2/?id=100018487&#34;&gt;Peace Bridge&lt;/a&gt; with promises of making more available including at least 10 more during the upcoming cycle track pilot. The Peace Bridge counter had data stretching back to April 24th, 2014 and by default was always showing the entire daily data set.&lt;/p&gt;&#xA;&lt;p&gt;My first curiousity was whether I can could have a bookmark to just show the last week or so worth of numbers which led me to figuring out &lt;a href=&#34;http://pastebin.com/kKa5cAQV&#34;&gt;how the webapp worked&lt;/a&gt;. (Good ol&amp;rsquo; WebKit developer tools)&lt;/p&gt;&#xA;&lt;p&gt;After that in tandem with some projects I was looking into for work I decided to start seeing about scrapping the data and storing it somewhere to compare numbers (different installations, averages, weather) more easily. So a big thank you for the people at the City and Eco-Counter for not telling me to &amp;ldquo;get lost and don&amp;rsquo;t use things inappropriately&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;As for how - the Python scripts just ask Environment Canada and the counters once a day for their last day&amp;rsquo;s worth of new data (if possible) and store it in Graphite. Interacting with the data is Grafana 2 behind nginx. All hosted on a tiny instance on some &lt;a href=&#34;http://www.cybera.ca/projects/cloud-resources/rapid-access-cloud/&#34;&gt;publicly available free compute resources&lt;/a&gt; that I just happen to also manage as part of my day job. Funnily, most of the script writing was done during an all nighter at a Denny&amp;rsquo;s in Kamloops waiting for 4 AM to roll around so I could swap some power cables in a maintenance window.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s nothing fancy but it&amp;rsquo;s fun to see what might come of it when data is made available.&lt;/p&gt;&#xA;&lt;p&gt;1 - I had registered the domain last year and figured that was a good place to point until I had a better idea of how to use it.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Trying to make sense of when to use Docker vs. LXC</title>
      <link>https://chealion.ca/blog/making-sense-of-when-to-use-docker-vs-lxc/</link>
      <pubDate>Tue, 10 Jun 2014 19:36:58 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/making-sense-of-when-to-use-docker-vs-lxc/</guid>
      <description>&lt;p&gt;While working on some side projects the past couple weeks I kept confusing myself on how things worked behind the scenes between &lt;a href=&#34;link&#34;&gt;Linux Containers&lt;/a&gt; and &lt;a href=&#34;http://docker.io&#34;&gt;Docker&lt;/a&gt;. They both leverage the Linux kernel&amp;rsquo;s &lt;a href=&#34;http://en.wikipedia.org/wiki/Cgroups&#34;&gt;cgroups&lt;/a&gt; to function on Linux (and in Docker&amp;rsquo;s case - similiar technologies in other OSes), but differ completely in terms of how you interact with them.&lt;/p&gt;&#xA;&lt;p&gt;While Linux Containers can best be thought of a super lightweight VM to run a whole VM, Docker contains a slew of other features that blur the lines between it acting like a super lightweight VM and being a full platform to build off of. Docker plays closer to the idea of a process/group of processes (application) under a chroot versus LXC&amp;rsquo;s idea of a whole OS/machine in a chroot jail.&lt;/p&gt;&#xA;&lt;p&gt;So it&amp;rsquo;s misleading to think of a Docker container the same way as a LXC container. Same technology behind the scenes but completely different approaches. For Docker it&amp;rsquo;s all in how you set up your container to run - you can have all the other services you normally get in a VM if you so wish.&lt;/p&gt;&#xA;&lt;p&gt;For example with LXC setting up MySQL would consist of making the container, running the command to install MySQL and setting the service to go. You can then log in or attach and run other commands as well if necessary.&lt;/p&gt;&#xA;&lt;p&gt;Docker on the other hand involves similar steps with the flexibility of having Docker do the install and run the service when the container starts (defined in the Dockerfile). However if you want to attach to that container and run more commands you have to have set access to do that up ahead of time (eg. supervisord, runit), create a new container with that command, or try and force your way into the container. (you can try lxc-attach but if you want a new TTY and you&amp;rsquo;re attaching to a &lt;code&gt;mysqld&lt;/code&gt; instance? Not going to work)&lt;/p&gt;&#xA;&lt;p&gt;After figuring that out - the use of Puppet in Docker started to make more sense. Have Puppet configure your image and then save/commit that state or kick off the supervisord process to keep the container &amp;ldquo;alive&amp;rdquo;. Docker lends itself more to recreating/iterating whenever a new update is needed over updating settings.&lt;/p&gt;&#xA;&lt;p&gt;In summary - LXC container is analagous to a VM, while Docker a very supercharged sandbox for running a process or group of processes. Use LXC when you&amp;rsquo;re wanting a separate &amp;ldquo;server&amp;rdquo; without the extra overhead, Docker when you&amp;rsquo;re wanting to run a &amp;ldquo;service&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;I also recommend reading the &lt;a href=&#34;https://docs.docker.com/faq/&#34;&gt;FAQ&lt;/a&gt; - primarily the what Docker &amp;ldquo;adds to LXC&amp;rdquo;. In the end it&amp;rsquo;s left me more leery of using Docker - it&amp;rsquo;s a bit of a paradigm shift I&amp;rsquo;m not ready to do just yet.&lt;/p&gt;&#xA;&lt;p&gt;On one last sidenote, IPv6 support also looks like a lot of pain - but not any worse than LXC.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>IPv6 and Systems</title>
      <link>https://chealion.ca/blog/ipv6-and-systems/</link>
      <pubDate>Sun, 04 May 2014 23:23:51 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/ipv6-and-systems/</guid>
      <description>&lt;p&gt;Last Monday I was part of a team presenting a workshop at BCNET&amp;rsquo;s 2014 conference about &lt;a href=&#34;https://wiki.bc.net/atl-conf/display/BCNETCONF2014/Configuring+IPv6+for+Networks+and+Systems&#34;&gt;Configuring IPv6 for Networks and Systems&lt;/a&gt;. The network walkthrough and slides put together by BCNET are available on their wiki while the Systems portion I worked has the slides and workshop examples on &lt;a href=&#34;http://github.com/cybera/ipv6-workshop&#34;&gt;Github&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Thanks to everyone who came out.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>About Me</title>
      <link>https://chealion.ca/aboutme/</link>
      <pubDate>Tue, 18 Feb 2014 05:28:04 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/aboutme/</guid>
      <description>&lt;p&gt;I am a Technical Operations Manager at &lt;a href=&#34;http://cybera.ca&#34;&gt;Cybera&lt;/a&gt; by day, a geek, father, and husband by night. My current role grants me a great deal of freedom to try out various different solutions both as a learning exercise and as a way to improve how things run. I’ve used the pseudonym Chealion online since 1998 and have subsequently owned and posted content on chealion.ca off and on (more off than on) since 2006.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m writing this for myself so I apologize in advance if you find it not very focused.&lt;/p&gt;&#xA;&lt;p&gt;You can get contact me by emailing me chealion AT chealion DOT ca&lt;/p&gt;&#xA;&lt;p&gt;Other haunts:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/chealion&#34;&gt;Github&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://flickr.com/photos/chealion&#34;&gt;Flickr&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://hachyderm.io/@chealion&#34;&gt;Mastodon&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Moving to Ghost</title>
      <link>https://chealion.ca/blog/moving-to-ghost/</link>
      <pubDate>Tue, 18 Feb 2014 05:21:02 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/moving-to-ghost/</guid>
      <description>&lt;p&gt;Alongside changing hosts (moving from TextDrive to my own VPS), adding IPv6 support for my websites and taking far too long to do it I&amp;rsquo;ve also swapped WordPress for Ghost. Slightly involved installation but much nicer. Most importantly no comment spam.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Calgary FCPUG: Outputting to Blu-ray, DVD and the Web</title>
      <link>https://chealion.ca/blog/calgary-fcpug-outputting-to-blu-ray-dvd-and-the-web/</link>
      <pubDate>Sat, 12 Mar 2011 00:23:13 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/calgary-fcpug-outputting-to-blu-ray-dvd-and-the-web/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve now uploaded the slides from the talk I gave to the Calgary FCPUG about outputting to Blu-ray, DVD and the Web. You can grab them from the following link:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://chealion.ca/other/OutputBDDVDWeb.pdf&#34;&gt;https://chealion.ca/other/OutputBDDVDWeb.pdf&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I do have an audio recording of the first presentation I&amp;rsquo;ve given since high school but have yet had a chance to listen and edit it as necessary.&lt;/p&gt;&#xA;&lt;p&gt;I hope everyone found it useful.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Using Gmail as your SMTP server When Using your ISP&#39;s Email</title>
      <link>https://chealion.ca/blog/using-gmail-as-your-smtp-server-when-using-your-isps-email/</link>
      <pubDate>Sat, 22 Jan 2011 15:07:22 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/using-gmail-as-your-smtp-server-when-using-your-isps-email/</guid>
      <description>&lt;p&gt;NOTE: You&amp;rsquo;re going to be using Google&amp;rsquo;s service to send the email but for all intents and purposes it&amp;rsquo;s completely transparent to both you and your recipient. It&amp;rsquo;s also a world lot better than using some random SMTP server (having to find out the local one and always change it) or finding all your email you sent doesn&amp;rsquo;t even arrive in your recipient&amp;rsquo;s inbox because it&amp;rsquo;s been marked as spam because of the server used. I&amp;rsquo;d recommend looking for an IMAP host instead for the long run.&lt;/p&gt;&#xA;&lt;p&gt;For brevity I&amp;rsquo;m leaving out the exact steps to hook this up with your favourite mail client but you can find that out fairly easily as it&amp;rsquo;s only changing the SMTP server (or check my &lt;a href=&#34;http://chealion.ca/2011/01/22/hooking-up-with-shaws-new-remote-smtp-service/&#34;&gt;post about setting up Shaw&amp;rsquo;s SMTP service&lt;/a&gt;) and change &lt;code&gt;mail.shaw.ca&lt;/code&gt; to &lt;code&gt;smtp.gmail.com&lt;/code&gt; and using your Google login instead of say Shaw&amp;rsquo;s in the section about changing your SMTP server).&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Set up a Google Account. If you have one you&amp;rsquo;re good to go.&lt;/li&gt;&#xA;&lt;li&gt;Log into Gmail&lt;/li&gt;&#xA;&lt;li&gt;Go to Settings (link is in the top right)&lt;/li&gt;&#xA;&lt;li&gt;Go to Accounts and Import&lt;/li&gt;&#xA;&lt;li&gt;Under &amp;ldquo;Send mail as:&amp;rdquo; section click &amp;ldquo;Send mail from another address&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Enter your email address you want to use (eg. &lt;a href=&#34;mailto:username@shaw.ca&#34;&gt;username@shaw.ca&lt;/a&gt;) and press Next&lt;/li&gt;&#xA;&lt;li&gt;Choose to use Gmail&amp;rsquo;s servers, press Next and choose Send Verification&lt;/li&gt;&#xA;&lt;li&gt;Click on the link in the verification email. This will verify the email address so you can move onto step 9. You may need to check your Junk Mail folder.&lt;/li&gt;&#xA;&lt;li&gt;Back at the &amp;ldquo;Send mail as&amp;rdquo; section (you may need to refresh the browser) click the &amp;ldquo;make default&amp;rdquo; link for the email address you set up and be sure that below it &amp;ldquo;Always reply from default address&amp;rdquo; is selected.&lt;/li&gt;&#xA;&lt;li&gt;Now be sure to change your SMTP settings on your computer/mobile device accordingly. This varies from device to device as to the steps but is the most important step. If not set correctly (eg. not turning off other SMTP servers on an iOS device) will make everything we&amp;rsquo;ve done for naught.&lt;/li&gt;&#xA;&lt;li&gt;Send an email to yourself to test and reply to it and make sure it gets to the right address. The only times I&amp;rsquo;ve ever seen an error here is if the SMTP wasn&amp;rsquo;t set up correctly, step 9 wasn&amp;rsquo;t followed or the carrier&amp;rsquo;s SMTP server was enabled again (yes it&amp;rsquo;s repeated because it accounts for 99% of errors I&amp;rsquo;ve seen).&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Not difficult, but something I can grab when writing an email on how to do it. :-)&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Hooking Up with Shaw&#39;s New &#34;Remote SMTP&#34; Service</title>
      <link>https://chealion.ca/blog/hooking-up-with-shaws-new-remote-smtp-service/</link>
      <pubDate>Sat, 22 Jan 2011 14:46:50 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/hooking-up-with-shaws-new-remote-smtp-service/</guid>
      <description>&lt;p&gt;Update (February 2012 - Webmail 2.0 is completely up with all it&amp;rsquo;s Exchange goodness - so check out &lt;a href=&#34;http://shaw.ca/Support/Internet/Webmail-20/Webmail-20-Setup/Synchronize-Your-iPhone-iPad/&#34;&gt;Shaw&amp;rsquo;s new instructions&lt;/a&gt; )&lt;/p&gt;&#xA;&lt;p&gt;Please join me in welcoming Shaw&amp;rsquo;s new feature of actually allowing Shaw email users to send email while travelling without resorting to webmail or trying to find the local ISP&amp;rsquo;s SMTP server address (or seeing that Telus&amp;rsquo; mobile SMTP server is blacklisted AGAIN marking all your email as spam). This is of course ignoring that I don&amp;rsquo;t recommend anyone actually use their ISP provided email address but instead use something a bit more dedicated like your own domain or an actual email service. It&amp;rsquo;s still better than an AOL address.&lt;/p&gt;&#xA;&lt;p&gt;Previously I&amp;rsquo;d been setting clients up to use a Gmail account as their proxy sending address when they have a Shaw or Telus email address - this makes it easier for Shaw clients. It&amp;rsquo;s also a lot simpler than the Gmail approach (which I have yet to post here).&lt;/p&gt;&#xA;&lt;h3 id=&#34;coles-notes&#34;&gt;Coles Notes&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Turn on Mobile Access using the new Webmail beta: &lt;a href=&#34;https://wmbeta.shaw.ca/&#34;&gt;https://wmbeta.shaw.ca&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Change your SMTP settings to point to mail.shaw.ca using port 587, STARTTLS, and use your username and password as the authentication&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;more-elaborate-instructions&#34;&gt;More elaborate instructions&lt;/h3&gt;&#xA;&lt;p&gt;Setting Up Shaw&amp;rsquo;s End:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Sign into &lt;a href=&#34;https://wmbeta.shaw.ca&#34;&gt;https://wmbeta.shaw.ca&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Click on Preferences (right side of screen - it’s a text link beside Feedback)&lt;/li&gt;&#xA;&lt;li&gt;Click on the ‘tab’ that says ‘Mobile Access’&lt;/li&gt;&#xA;&lt;li&gt;Set it to Enabled (click the radio button beside it)&lt;/li&gt;&#xA;&lt;li&gt;You may need to change your password to meet their new security requirements.&lt;/li&gt;&#xA;&lt;li&gt;Press Save. It will say “Preferences saved” in a small yellow box at the top of the page if it’s successful.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Thunderbird:&lt;/p&gt;&#xA;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Go to the Tools menu and choose Account Settings&lt;/li&gt;&#xA;&lt;li&gt;On the left side on that window click on “Outgoing Server (SMTP)”. You may need to scroll as it’s always the last item.&lt;/li&gt;&#xA;&lt;li&gt;There should be an item associated with the Shaw account you just turned on. Whichever account you turned on Mobile Access for and click on it and then click the button that says “Edit&amp;hellip;”&lt;/li&gt;&#xA;&lt;li&gt;In the window that appears change the server name to &lt;code&gt;mail.shaw.ca&lt;/code&gt; instead of &lt;code&gt;shawmail&lt;/code&gt; or &lt;code&gt;shawmail.cg.shawcable.net&lt;/code&gt; that it was set to. The port number should be changed from 25 to 587 and the Connection Security to STARTTLS. Authentication: Normal password and then enter your username&lt;/li&gt;&#xA;&lt;li&gt;Press OK&lt;/li&gt;&#xA;&lt;li&gt;If you did not change your password when setting up Shaw then press OK and you’re done. If you did change your password when setting up Mobile Access the next time you check email it will ask you for a new password and you can enter it.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Mail.app:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Go to the Preferences and click on the Accounts section&lt;/li&gt;&#xA;&lt;li&gt;Click on your Shaw account on the left side&lt;/li&gt;&#xA;&lt;li&gt;Where it says Outgoing Mail Server (SMTP): click on the drop down menu and choose &amp;ldquo;Edit SMTP Server List&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;Find the Shaw SMTP server in that list  and click on it.&lt;/li&gt;&#xA;&lt;li&gt;Change Server Name to &lt;code&gt;mail.shaw.ca&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Click on the Advanced tab&lt;/li&gt;&#xA;&lt;li&gt;Check off Use Secure Sockets Layer&lt;/li&gt;&#xA;&lt;li&gt;Change the Authentication drop down menu to Password&lt;/li&gt;&#xA;&lt;li&gt;Enter your username and password and then press OK.&lt;/li&gt;&#xA;&lt;li&gt;Close the accounts preferences window and say yes to saving it if necessary.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Shaw&amp;rsquo;s already provided instructions on setting up an account anew for iOS, Android and Blackberry devices: &lt;a href=&#34;https://wmbeta.shaw.ca/doc/offnet-device-instructions.html&#34;&gt;https://wmbeta.shaw.ca/doc/offnet-device-instructions.html&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Using Compressor to Make H.264 MP4s</title>
      <link>https://chealion.ca/blog/using-compressor-to-make-better-html5-video-draft/</link>
      <pubDate>Thu, 23 Sep 2010 14:06:05 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/using-compressor-to-make-better-html5-video-draft/</guid>
      <description>&lt;p&gt;In April I pushed to GitHub my &lt;a href=&#34;http://github.com/Chealion/chealion/tree/master/Applescripts/RewrapMP4/&#34;&gt;RewraptoMP4 Script&lt;/a&gt; I put together to help assist in creating proper MPEG-4 container files while being able to use the &lt;a href=&#34;http://www003.upp.so-net.ne.jp/mycometg3/&#34;&gt;x264 QuickTime component&lt;/a&gt; in Compressor. Compressor only allows you to specify the codec being used when exporting to a QuickTime file, however it is possible to use QuickTime Player after the fact to convert a QuickTime Movie to an MPEG-4 without transcoding so long as the codecs are supported in the MPEG-4 container spec.&lt;/p&gt;&#xA;&lt;p&gt;My primary reason for the extra work is that Google Chrome will not recognize a .mov file as a valid wrapper for video in HTML 5&amp;rsquo;s &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;&#xA;&lt;h3 id=&#34;using-compressor&#34;&gt;Using Compressor&lt;/h3&gt;&#xA;&lt;p&gt;You need to make your Compressor preset using x264 as a normal QuickTime movie preset (use the table below to help with settings if necessary). You&amp;rsquo;ll then want to grab the script from GitHub and add it as a script to your preset.&lt;/p&gt;&#xA;&lt;p&gt;Scripting Compressor isn&amp;rsquo;t very straight forward, while you can use AppleScript or launch a script using Compressor they fail to mention that the script &lt;em&gt;must&lt;/em&gt; be saved as an application and the file is accessed by using on open.&lt;/p&gt;&#xA;&lt;h3 id=&#34;helpful-table-of-limitations&#34;&gt;Helpful Table of Limitations&lt;/h3&gt;&#xA;&lt;table width=&#34;100%&#34;&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&lt;th&gt;Device&lt;/th&gt;&lt;th&gt;Max Res&lt;/th&gt;&lt;th&gt;Max Bit Rate&lt;/th&gt;&lt;th width=&#34;325px&#34;&gt;H.264 Settings&lt;/th&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPhone&lt;/td&gt;&lt;td&gt;640x480&lt;/td&gt;&lt;td&gt;2.5 Mbps&lt;/td&gt;&lt;td&gt;Can only use Baseline profile Level 3.0 with CAVLC&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPod touch&lt;/td&gt;&lt;td&gt;640x480&lt;/td&gt;&lt;td&gt;2.5 Mbps&lt;/td&gt;&lt;td&gt;Can only use Baseline profile Level 3.0 with CAVLC&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPhone 3G&lt;/td&gt;&lt;td&gt;640x480&lt;/td&gt;&lt;td&gt;2.5 Mbps&lt;/td&gt;&lt;td&gt;Can only use Baseline profile Level 3.0 with CAVLC&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPod touch 2G&lt;/td&gt;&lt;td&gt;640x480&lt;/td&gt;&lt;td&gt;2.5 Mbps&lt;/td&gt;&lt;td&gt;Can only use Baseline profile Level 3.0 with CAVLC&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPhone 3G S&lt;/td&gt;&lt;td&gt;640x480&lt;/td&gt;&lt;td&gt;2.5 Mbps&lt;/td&gt;&lt;td&gt;Can only use Baseline profile Level 3.0 with CAVLC&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPod touch 3G&lt;/td&gt;&lt;td&gt;640x480&lt;/td&gt;&lt;td&gt;2.5 Mbps&lt;/td&gt;&lt;td&gt;Can only use Baseline profile Level 3.0 with CAVLC&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPad&lt;/td&gt;&lt;td&gt;1280x720&lt;/td&gt;&lt;td&gt;&#34;Unlimited&#34;&lt;/td&gt;&lt;td&gt;Can only use up to Main Profile Level 3.1&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPhone 4&lt;/td&gt;&lt;td&gt;1280x720&lt;/td&gt;&lt;td&gt;&#34;Unlimited&#34;&lt;/td&gt;&lt;td&gt;Can only use up to Main Profile Level 3.1&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;iPod touch 4G&lt;/td&gt;&lt;td&gt;1280x720&lt;/td&gt;&lt;td&gt;&#34;Unlimited&#34;&lt;/td&gt;&lt;td&gt;Can only use up to Main Profile Level 3.1&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;G1&lt;/td&gt;&lt;td&gt;480x320&lt;/td&gt;&lt;td&gt;600&lt;/td&gt;&lt;td&gt;Lack of documentation for anything Android&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;tr&gt;&lt;td&gt;Droid X&lt;/td&gt;&lt;td&gt;1280x720&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;td&gt;Lack of documentation for anything Android - can&#39;t play more than 24FPS&lt;/td&gt;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Android information is rather limited. Official Android information is near non-existent.&lt;/p&gt;&#xA;&lt;p&gt;Thanks to:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.proactiveinteractive.com/software/compressor/index.php&#34;&gt;http://www.proactiveinteractive.com/software/compressor/index.php&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Using HTML 5&#39;s Video To Serve Baseline and Main Profile Content</title>
      <link>https://chealion.ca/blog/using-html-5s-video-to-serve-baseline-and-main-profile-content/</link>
      <pubDate>Wed, 11 Aug 2010 16:49:12 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/using-html-5s-video-to-serve-baseline-and-main-profile-content/</guid>
      <description>&lt;p&gt;At work I was trying out to see if I could use the new &lt;code&gt;video&lt;/code&gt; tag in HTML 5 to show two different versions of the same video; one optimized for devices that accept only the Baseline profile (eg. iPhone 3G S and older, many other phones) and one optimized for larger devices (eg. iPad, iPhone 4 that support the Main profile). Turns out it works absolutely fabulous by using the codecs section in the type (Thanks to &lt;a href=&#34;http://diveintohtml5.org/video.html&#34;&gt;Dive into HTML 5&lt;/a&gt; for the documentation).&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;&amp;lt;video OTHER_ATTRIBUTES_HERE&amp;gt;&#xA;    &amp;lt;source src=&amp;quot;PATH_TO_MAIN_PROFILE.mp4&amp;quot; type=&#39;video/mp4; codecs=&amp;quot;avc1.4D401F, mp4a.40.2&amp;quot;&#39; /&amp;gt;&#xA;    &amp;lt;source src=&amp;quot;PATH_TO_BASELINE_PROFILE.mp4&amp;quot; type=&#39;video/mp4; codecs=&amp;quot;avc1.42E01E, mp4a.40.2&amp;quot;&#39; /&amp;gt;&#xA;&amp;lt;/video&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The video codec for H.264 is: avc1.&lt;strong&gt;YYYY&lt;/strong&gt;XX where YYYY represents the profile, while XX is the level (multiplied by 10 and turned into HEX):&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Profile     Value   &#xA;Baseline    42E0&#xA;Main        4D40&#xA;High        6400&#xA;Extended    58A0&#xA;&#xA;Level       Hex Value   &#xA;3.0         1E&#xA;3.1         1F&#xA;4.1         29&#xA;5.1         33&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Now when I visit with an iPhone 3G it loads the baseline version, while my iPhone 4 and iPad both load the Main Profile version. For my current project I use video for whenever Flash isn&amp;rsquo;t available and it does leave a gap for Firefox and Opera users who don&amp;rsquo;t have Flash but according to our web stats they don&amp;rsquo;t actually exist.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s also important to note that Android users are also left in a lurch because any version lower than 2.0 doesn&amp;rsquo;t support &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt;, and those that do can&amp;rsquo;t handle a &lt;code&gt;&amp;lt;source&amp;gt;&lt;/code&gt; element having a type value like above. To top it all off it isn&amp;rsquo;t able to play or show controls on a video on it&amp;rsquo;s own. You have to add some JavaScript to your page in order to play to pass the click event and tell it to play.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Mail.app, Outlook, Attachments and Disappearing Text</title>
      <link>https://chealion.ca/blog/mail-app-outlook-attachments-and-disappearing-text/</link>
      <pubDate>Mon, 21 Jun 2010 17:57:59 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/mail-app-outlook-attachments-and-disappearing-text/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s a particularly nasty implementation detail that doesn&amp;rsquo;t seem to come up often but is just waiting to bite just about every Mac user in the ass. Mail.app allows users to attach files inline allowing them to be part of the flow of the text or in the case of one of my users be right alongside the paragraph talking about the changes in that paragraph. Or like me, right below the email you&amp;rsquo;re sending and above the replied emails because of Mail.app&amp;rsquo;s defaulting to top posting. The issue isn&amp;rsquo;t being able to put attachments inline, but the fact that by default Mail.app will encode the attachment in the same spot in the email file causing other email clients to see the rest of the email as a set of attachments.&lt;/p&gt;&#xA;&lt;p&gt;The fix: Make sure &amp;ldquo;Always Insert Attachments at End of Message&amp;rdquo; is checked off (preference key is AttachAtEnd - boolean for you MCX minded folk) and you can now attach inline as you would normally want to without having Outlook eat your message.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://chealion.ca/images/Mail.app_.jpg&#34;&gt;&lt;img src=&#34;https://chealion.ca/images/Mail.app_.jpg&#34; alt=&#34;Mail.app.jpg&#34; title=&#34;Mail.app.jpg&#34; border=&#34;0&#34; width=&#34;626&#34; height=&#34;171&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Thunderbird will display the text correctly, but you&amp;rsquo;ll lose it and it will only appear as an attachment once that email is forwarded or replied to: (Part 1.1.3 is the text &amp;ldquo;There&amp;rsquo;s an attachment&amp;rdquo;). You&amp;rsquo;ll also notice the horizontal rule separating between the different HTML portions of the email.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=https://chealion.ca/images/Thunderbird.jpg&#34;&gt;&lt;img src=&#34;https://chealion.ca/images/Thunderbird.jpg&#34; alt=&#34;Thunderbird.jpg&#34; title=&#34;Thunderbird.jpg&#34; border=&#34;0&#34; width=&#34;506&#34; height=&#34;310&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;What program completely falls flat on it&amp;rsquo;s face is Outlook; it just puts all attachments off to the side and you have no idea what&amp;rsquo;s in the those ATT documents and your client sure as hell isn&amp;rsquo;t going to read them. So you&amp;rsquo;ve sent the email, the email was successfully sent, the text will be visible on their webmail systems, on their mobile device (Blackberry or iPhone), and even visible in other mail clients but because it&amp;rsquo;s technically an attachment Outlook won&amp;rsquo;t display it inline by default. (For the same reason they won&amp;rsquo;t show images by default in emails - the cookie tracking and that it&amp;rsquo;s a great attack vector)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://chealion.ca/images/Outlook.jpg&#34;&gt;&lt;img src=&#34;https://chealion.ca/images/Outlook.jpg&#34; alt=&#34;Outlook.jpg&#34; title=&#34;Outlook.jpg&#34; border=&#34;0&#34; width=&#34;454&#34; height=&#34;175&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Of note, this only occurs when sending from Mail.app. Outlook can attach items inline and have no issue as it attaches the images at the end of the email.&lt;/p&gt;&#xA;&lt;p&gt;Correct view:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://chealion.ca/images/OutlookCorrect.jpg&#34;&gt;&lt;img src=&#34;https://chealion.ca/images/OutlookCorrect.jpg&#34; alt=&#34;OutlookCorrect.jpg&#34; title=&#34;OutlookCorrect.jpg&#34; border=&#34;0&#34; width=&#34;641&#34; height=&#34;313&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Comments, No Comments, and When It Doesn&#39;t Matter</title>
      <link>https://chealion.ca/blog/comments-no-comments-and-when-it-doesnt-matter/</link>
      <pubDate>Wed, 16 Jun 2010 23:32:53 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/comments-no-comments-and-when-it-doesnt-matter/</guid>
      <description>&lt;p&gt;Today I&amp;rsquo;ve &lt;a href=&#34;http://twitter.com/Chealion/status/16338959775&#34;&gt;been&lt;/a&gt; &lt;a href=&#34;http://twitter.com/Chealion/status/16365850653&#34;&gt;heckling&lt;/a&gt; &lt;a href=&#34;http://darcynorman.net&#34;&gt;D&amp;rsquo;arcy Norman&lt;/a&gt; on Twitter about his plan to try out turning off &lt;a href=&#34;http://www.darcynorman.net/2010/06/16/on-decommenting&#34;&gt;comments on his blog.&lt;/a&gt; The discussion of comments versus no comments is not new but has come to the forefront again because of Gruber&amp;rsquo;s defence of not allowing comments.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; D&amp;rsquo;Arcy has done a good job showcasing several opinions on the matter - so good read his post first.&lt;/p&gt;&#xA;&lt;p&gt;Why would I want comments on my site? They provide a relatively frictionless (provided no registration is required) way for a reader to respond to something I have written to power Google&amp;rsquo;s index.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; This includes developers responding to my criticisms of their applications, or some method of feedback. The feedback is part of the reason I even write comments anywhere else. It&amp;rsquo;s still very possible to get a large volume of feedback relevant and helpful to the article/essay/what-have-you without detracting from it. (eg. Coding Horror as an example - not always, not perfect but on a whole a decent example) Comments at one time also help differentiate the &amp;ldquo;new media&amp;rdquo; from the &amp;ldquo;old media&amp;rdquo;, it promoted the idea that the reader could be involved instead of just a a passive listener.&lt;/p&gt;&#xA;&lt;p&gt;Why do I think I should remove comments from my site? Spam and focusing on the content. I don&amp;rsquo;t like being required to run Akismet, or remembering the issues of using Moveable Type 2.x and the necessity of MT-Blacklist. Erasing the spam issue is definitely enticing, especially with some many other avenues of feedback.&lt;/p&gt;&#xA;&lt;p&gt;Additionally once comments grow beyond a certain quantitative threshold they simply become drive by soapboxes or discussion boxes with little to no control of their direction (unless heavily moderated) and relevance to the whole point of the page&amp;rsquo;s existence. If you really want people to discuss with each other about something you&amp;rsquo;ve put forward as a conversation piece? Consider setting up a proper forum&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; for the thread control so it doesn&amp;rsquo;t feel like a discussion has been shoehorned into something that doesn&amp;rsquo;t quite fit correctly. Personally the whole point of my corner of the web is not to make conversation pieces but to showcase something I actually want to broadcast more widely to the world.&lt;/p&gt;&#xA;&lt;p&gt;But wait. Why should I even care if they&amp;rsquo;re on or off? Be practical - for many comments are your first way to get feedback without the roadblocks (registration, emailing, etc.) that are necessary to keep the volume manageable for higher volume sites. Comments don&amp;rsquo;t scale with the purpose of a blog, website, whatever you want to call your little corner of the world wide web. If you&amp;rsquo;re small enough they don&amp;rsquo;t exist, if you&amp;rsquo;re big enough they overshadow or fail completely miserably at being either a way to leave a note for the author or as a discussion board. So in the big picture - the choice doesn&amp;rsquo;t matter. What matters is whether they are a positive or a negative impact to you, the moment it&amp;rsquo;s negative kill it - there&amp;rsquo;s no saving the signal when the noise gets too loud. If it&amp;rsquo;s positive, keep it.&lt;/p&gt;&#xA;&lt;p&gt;Don&amp;rsquo;t sweat it and focus on writing (or doing your thing).&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;RIP daringfireballwithcomments.net - it was hilarious and a perfect example as to why Gruber should keep his site just the way it is.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;My traffic consists of 3 people who follow using RSS and about 30 people a day from random search terms.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;This doesn&amp;rsquo;t have to be proper forum software such as phpBB and such but they do offer the more advanced features one would want when dealing with diverging threads of discussion.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Curious Notes about WebM on YouTube</title>
      <link>https://chealion.ca/blog/curious-notes-about-webm-on-youtube/</link>
      <pubDate>Fri, 21 May 2010 12:22:37 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/curious-notes-about-webm-on-youtube/</guid>
      <description>&lt;p&gt;When looking at one of the trailers (&lt;a href=&#34;http://www.youtube.com/watch?v=XJ_XTIsMKig&#34;&gt;Tetro: Original Trailer&lt;/a&gt;) that has been transcoded into &lt;a href=&#34;http://webmproject.org&#34;&gt;WebM&lt;/a&gt;. I wanted to compare YouTube&amp;rsquo;s x264 settings versus their WebM settings. I&amp;rsquo;ve also uploaded some &lt;a href=&#34;http://youtube.com/watch?v=iPe_Wa7R07I&#34;&gt;1080p footage&lt;/a&gt; for more recent footage (in case the H.264 settings had changed between Dec. 2009 and now - which AFAIK they haven&amp;rsquo;t) to compare. It&amp;rsquo;s also important to note that the HTML5 access to YouTube videos is only available on non-monetized content.&lt;/p&gt;&#xA;&lt;p&gt;During my testing I noticed that in the HTML5 Beta on older versions of Chrome and Safari (aka H.264 using browsers) when you select 360p for your video size, YouTube does &lt;strong&gt;NOT&lt;/strong&gt; give you a 360p file - it is actually smaller in terms of resolution (480x270) and has to be upscaled. This is most likely a reason why my initial thoughts on &lt;a href=&#34;http://twitter.com/Chealion/status/14442371964&#34;&gt;Twitter&lt;/a&gt; didn&amp;rsquo;t match with what I had on paper.&lt;/p&gt;&#xA;&lt;p&gt;Disclaimer: Subjective paragraph to follow - I&amp;rsquo;m not an expert and I&amp;rsquo;m judging just by general visual quality to my eye.&lt;/p&gt;&#xA;&lt;p&gt;A quick visual inspection shows the WebM version in 360p seem noticeably sharper in terms of details than the 480x270 H.264 which had to be upscaled. The 720p WebM version was close enough to it&amp;rsquo;s H.264 counterpart. However I did definitely notice with the 360p version, a &amp;ldquo;quality bump&amp;rdquo; every once in a while as described in the ratecontrol section of a &lt;a href=&#34;http://x264dev.multimedia.cx/?p=377&#34;&gt;blog post&lt;/a&gt; by one of the x264 developers when criticizing the VP8 specification.&lt;/p&gt;&#xA;&lt;p&gt;Using &lt;a href=&#34;http://mediainfo.massanti.com/&#34;&gt;MediaInfo Mac&lt;/a&gt; the following settings can be found:&lt;/p&gt;&#xA;&lt;h3 id=&#34;tetro-trailer-originally-encoded-122609&#34;&gt;Tetro Trailer (Originally encoded 12/26/09)&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&#xA;&lt;th width=&#34;50px&#34;&gt;Resolution&lt;/th&gt;&#xA;&lt;th width=&#34;125px&#34;&gt;Container - Codec&lt;/th&gt;&#xA;&lt;th width=&#34;100px&#34;&gt;Total Rate (kbps)&lt;/th&gt;&#xA;&lt;th width=&#34;100px&#34;&gt;Video Bit Rate&lt;/th&gt;&#xA;&lt;th width=&#34;100px&#34;&gt;File Size (MiB)&lt;/th&gt;&#xA;&lt;th width=&#34;125px&#34;&gt;Notes&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;640x360&lt;/td&gt;&#xA;&lt;td&gt;WebM - VP8/Vorbis&lt;/td&gt;&#xA;&lt;td&gt;812&lt;/td&gt;&#xA;&lt;td&gt;?&lt;/td&gt;&#xA;&lt;td&gt;14.2&lt;/td&gt;&#xA;&lt;td&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;480x270&lt;/td&gt;&#xA;&lt;td&gt;MPEG4 - H.264/AAC&lt;/td&gt;&#xA;&lt;td&gt;500&lt;/td&gt;&#xA;&lt;td&gt;393 VBR&lt;/td&gt;&#xA;&lt;td&gt;8.7&lt;/td&gt;&#xA;&lt;td&gt;Baseline Profile - HTML 5&#39;s &#34;360p&#34;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;640x360&lt;/td&gt;&#xA;&lt;td&gt;FLV - H.264/AAC&lt;/td&gt;&#xA;&lt;td&gt;677&lt;/td&gt;&#xA;&lt;td&gt;568&lt;/td&gt;&#xA;&lt;td&gt;11.8&lt;/td&gt;&#xA;&lt;td&gt;Main Profile&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;1280x720&lt;/td&gt;&#xA;&lt;td&gt;WebM - VP8/Vorbis&lt;/td&gt;&#xA;&lt;td&gt;2887&lt;/td&gt;&#xA;&lt;td&gt;?&lt;/td&gt;&#xA;&lt;td&gt;50.4&lt;/td&gt;&#xA;&lt;td&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;1280x720&lt;/td&gt;&#xA;&lt;td&gt;MPEG4 - H.264/AAC&lt;/td&gt;&#xA;&lt;td&gt;2172&lt;/td&gt;&#xA;&lt;td&gt;2045&lt;/td&gt;&#xA;&lt;td&gt;37.8&lt;/td&gt;&#xA;&lt;td&gt;High Profile&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;br&gt;&#xA;Part of the reason I chose Teatro is that it has some excellent DOF changes, the other reason is that I just liked the visual style of the trailer. It was also the first trailer I clicked on that worked in the HTML5 beta that didn&#39;t resort to using Flash because it has been monetized.&#xA;&lt;h3 id=&#34;12-second-test-clip-uploaded-today&#34;&gt;12 Second Test Clip Uploaded Today&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&#xA;&lt;tr&gt;&#xA;&lt;th width=&#34;50px&#34;&gt;Resolution&lt;/th&gt;&#xA;&lt;th width=&#34;125px&#34;&gt;Container - Codec&lt;/th&gt;&#xA;&lt;th width=&#34;100px&#34;&gt;Total Rate (kbps)&lt;/th&gt;&#xA;&lt;th width=&#34;100px&#34;&gt;Video Bit Rate&lt;/th&gt;&#xA;&lt;th width=&#34;100px&#34;&gt;File Size (MiB)&lt;/th&gt;&#xA;&lt;th width=&#34;125px&#34;&gt;Notes&lt;/th&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;640x360&lt;/td&gt;&#xA;&lt;td&gt;WebM - VP8/Vorbis&lt;/td&gt;&#xA;&lt;td&gt;709&lt;/td&gt;&#xA;&lt;td&gt;?&lt;/td&gt;&#xA;&lt;td&gt;709 KiB&lt;/td&gt;&#xA;&lt;td&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;480x270&lt;/td&gt;&#xA;&lt;td&gt;MPEG4 - H.264/AAC&lt;/td&gt;&#xA;&lt;td&gt;508&lt;/td&gt;&#xA;&lt;td&gt;415 VBR&lt;/td&gt;&#xA;&lt;td&gt;751 KiB&lt;/td&gt;&#xA;&lt;td&gt;Baseline Profile - HTML 5&#39;s &#34;360p&#34;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;640x360&lt;/td&gt;&#xA;&lt;td&gt;FLV - H.264/AAC&lt;/td&gt;&#xA;&lt;td&gt;542&lt;/td&gt;&#xA;&lt;td&gt;466&lt;/td&gt;&#xA;&lt;td&gt;835 KiB&lt;/td&gt;&#xA;&lt;td&gt;Main Profile&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;1280x720&lt;/td&gt;&#xA;&lt;td&gt;WebM - VP8/Vorbis&lt;/td&gt;&#xA;&lt;td&gt;1736&lt;/td&gt;&#xA;&lt;td&gt;?&lt;/td&gt;&#xA;&lt;td&gt;2.61&lt;/td&gt;&#xA;&lt;td&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;1280x720&lt;/td&gt;&#xA;&lt;td&gt;MPEG4 - H.264/AAC&lt;/td&gt;&#xA;&lt;td&gt;2120&lt;/td&gt;&#xA;&lt;td&gt;2005&lt;/td&gt;&#xA;&lt;td&gt;3.06&lt;/td&gt;&#xA;&lt;td&gt;High Profile&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;br&gt;&#xA;What&#39;s the conclusion for what YouTube is offering? Visually, WebM can be made to look quite decent - especially for what I believe is it&#39;s target market; the web and mobile devices. However on higher resolution and higher bit rates, H.264 definitely appears better. I don&#39;t think most people will notice - they&#39;re close enough with the current settings. However I do believe that the WebM settings are more fine tuned than the x264 settings to get a little bit more video quality. Encoding my sample 12 second video with a relatively recent version of x264 locally with some rather generic settings is more visually appealing than YouTube&#39;s.&#xA;&lt;p&gt;Even though H.264 is definitely better on paper, I think VP8 will do just fine as a replacement for Theora and a competitor to H.264 for use on the web. For the near future (next 3 months IMO) you won&amp;rsquo;t see a lot of WebM footage available as the playback availability is extremely limited.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>i5/i7 MacBook Pros do NOT support Jumbo Frames</title>
      <link>https://chealion.ca/blog/i5i7-macbook-pros-do-not-support-jumbo-frames/</link>
      <pubDate>Sun, 02 May 2010 01:51:18 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/i5i7-macbook-pros-do-not-support-jumbo-frames/</guid>
      <description>&lt;p&gt;While doing some research I discovered (first with the 27&amp;quot; iMacs) and now with the new MacBook Pro line that runs the i5 or the i7 processors; Apple has slotted in an ethernet controller that does &lt;strong&gt;NOT&lt;/strong&gt; support &lt;a href=&#34;http://en.wikipedia.org/wiki/Jumbo_frames&#34;&gt;Jumbo Frames&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;See page four of the PDF of the &lt;a href=&#34;http://www.broadcom.com/collateral/pg/5764M-PG100-R.pdf&#34;&gt;Broadcom 5764 Chipset&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Google Chrome on the Mac - When beta doesn&#39;t mean beta</title>
      <link>https://chealion.ca/blog/google-chrome-on-the-mac-when-beta-doesnt-mean-beta/</link>
      <pubDate>Tue, 08 Dec 2009 12:13:51 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/google-chrome-on-the-mac-when-beta-doesnt-mean-beta/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been using Chromium (the developer version of Chrome) since May side by side the WebKit nightlies. They&amp;rsquo;re very fast and I like Chrome quite a bit however I won&amp;rsquo;t be moving to Chrome/Chromium as my main browser. Yet. After all it&amp;rsquo;s still a &lt;strong&gt;beta&lt;/strong&gt; and under very active development.&lt;/p&gt;&#xA;&lt;p&gt;And like any craptastic method of making sure one has an easy time of making an article/blog post/etc. a set of pros and cons as to what I like and dislike about Chrome/Chromium)&lt;/p&gt;&#xA;&lt;p&gt;Pros:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Super fast, uses a newer version of WebKit than Safari. (If you like Safari but want the new versions of WebKit - use nightly.webkit.org - will never use Vanilla Safari again)&lt;/li&gt;&#xA;&lt;li&gt;Automatically updates itself silently (Chrome only, Chromium must be &lt;a href=&#34;http://chealion.ca/2009/05/13/chromium-build-bot-updater-script/&#34;&gt;manually updated&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Updates often so new features and bug fixes in WebKit show up quite quickly.&lt;/li&gt;&#xA;&lt;li&gt;Bookmark Sync (this came online last week). Awesome.&lt;/li&gt;&#xA;&lt;li&gt;If one tab crashes the entire program doesn&amp;rsquo;t crash. Huge. Not as huge since Safari started sandboxing Flash but huge none the less.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Silently installs an auto updater that is hard to remove and impossible to control in a managed environment.&lt;/li&gt;&#xA;&lt;li&gt;Extension support not easily accessible&lt;/li&gt;&#xA;&lt;li&gt;Bookmark Management is near non-existent. It&amp;rsquo;s a completely broken feature at this time.&lt;/li&gt;&#xA;&lt;li&gt;No Click To Flash yet. Flash Blocker is a poor substitute.&lt;/li&gt;&#xA;&lt;li&gt;Tabs just become a set of mountains when too many are open.&lt;/li&gt;&#xA;&lt;li&gt;Top Sites look alike feature isn&amp;rsquo;t as customizable. Oddly I use Chrome&amp;rsquo;s Top Site feature but not Safari&amp;rsquo;s.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I like it a lot but I believe calling it a beta is disingenuous. A beta usually refers to something feature complete and in bug testing. My usage however says that it&amp;rsquo;s very solid but that new features are being added all the time. The reality is that Google Chrome is being treated like a web application - iterated fast and often and there is no real distinction between alpha, beta or a final &amp;ldquo;1.0&amp;rdquo; version number. Just a stable and unstable branch and the version number to correspond to where development is at.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a bit more chaotic but represents a change in how developers can approach development, after all there are no instances of a user using a version 3 or 4 versions old when you make sure everyone is using the latest version all the time.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Xdebug, Leopard, and 64-bit shenanigans.</title>
      <link>https://chealion.ca/blog/xdebug-leopard-and-64-bit-shenanigans/</link>
      <pubDate>Sat, 07 Nov 2009 17:10:56 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/xdebug-leopard-and-64-bit-shenanigans/</guid>
      <description>&lt;p&gt;In order to profile some in house web application development and find out a couple bottlenecks that were appearing I went looking for a decent PHP profiler and found &lt;a href=&#34;http://xdebug.org/&#34;&gt;Xdebug&lt;/a&gt;. Because I am using the built in version of PHP on the Leopard Server, and a MacPorts version on Snow Leopard (we also have an application that fails miserably on PHP 5.3) it lead to some fun installing Xdebug on the Leopard machine since I didn&amp;rsquo;t want to reconfigure apache2 to use PHP 5.3 from MacPorts.&lt;/p&gt;&#xA;&lt;p&gt;The crux of it is to grab the source of Xdebug, and then when configuring prefix your standard &lt;code&gt;./configure --enable-xdebug&lt;/code&gt; with the statement &lt;code&gt;CFLAGS=&#39;-arch ppc64&#39;&lt;/code&gt; or &lt;code&gt;CFLAGS=&#39;-arch x86_64&#39;&lt;/code&gt; as necessary. Compile xdebug as a 64-bit extension and it will actually work with a 64-bit version of Apache. With MacPorts it was as simple as enabling the xdebug variant and letting it recompile PHP.&lt;/p&gt;&#xA;&lt;p&gt;I highly recommend using &lt;a href=&#34;http://code.google.com/p/webgrind/&#34;&gt;webgrind&lt;/a&gt;. It gave me more useful results than &lt;a href=&#34;http://www.maccallgrind.com/&#34;&gt;MacCallGrind&lt;/a&gt;, and didn&amp;rsquo;t require an hour hoping &lt;a href=&#34;http://macports.org&#34;&gt;MacPorts&lt;/a&gt; could compile all the dependencies for &lt;a href=&#34;http://kcachegrind.sourceforge.net/html/Home.html&#34;&gt;kcachegrind&lt;/a&gt; (which would require graphviz as an additional install). Now I have some numbers to tell me where to look for proof &lt;a href=&#34;http://www.cimgf.com/2009/03/26/dont-blindly-trust-debb/&#34;&gt;old me is a moron&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Magic Mouse: Impressions</title>
      <link>https://chealion.ca/blog/magic-mouse-impressions/</link>
      <pubDate>Tue, 03 Nov 2009 13:24:44 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/magic-mouse-impressions/</guid>
      <description>&lt;p&gt;As many of you are aware, Apple released a new horribly named mouse, the &lt;a href=&#34;http://www.apple.com/magicmouse/&#34;&gt;Magic Mouse&lt;/a&gt;. On Saturday I had the opportunity (since I was in the mall anyway) to drop by the Market Mall Apple Store and give the mouse a whirl - it was comfortable, &lt;strong&gt;did not&lt;/strong&gt; have the gum-up-every-5-seconds trackball, and was exceptionally responsive. On a whim I ended up purchasing one later that day.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-good&#34;&gt;The Good&lt;/h3&gt;&#xA;&lt;p&gt;The mouse is accurate, responsive and the multitouch feels intuitive and that with software updates it could become even more. Additionally the weight has just enough heft to feel solid but much lighter than most other wireless mice  Definitely the best Bluetooth mouse I&amp;rsquo;ve ever used.&lt;/p&gt;&#xA;&lt;p&gt;Scrolling without a wheel (and momentum on Snow Leopard) brings the best of scrolling on an iPhone/iPod touch to the desktop and for the reason alone is worth it. Instead of a tiny wheel that just spins the entire surface of the mouse is now you touchpad for scrolling, perfect for reading long PDFs and being able to lean back and just use one finger without having to clutch a mouse.&lt;/p&gt;&#xA;&lt;p&gt;Of note the two finger swipe to go back in Safari hasn&amp;rsquo;t been an issue and actually useful on occassion.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-bad&#34;&gt;The Bad&lt;/h3&gt;&#xA;&lt;p&gt;The mouse is smallish and does not offer the ability for a &amp;ldquo;middle click&amp;rdquo; (3rd button). If you are used to the Mighty Mouse the muscle memory of squeezing may take a little while to get used to not being able to do. The loss of being able to trigger Exposé in any form is definitely a large loss and the primary reason I normally prefer 5 or 6 buttons on my mice. Being forced to use a less than optimum layout for Exposé on the Aluminum keyboard makes using Exposé more and more of an afterthought without resorting to Dock Exposé in Snow Leopard. Apple&amp;rsquo;s hardware definitely is not very Exposé friendly at times.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-ugly&#34;&gt;The Ugly&lt;/h3&gt;&#xA;&lt;p&gt;The new mouse is quite cramped and not all that comfortable compared to full size mice like Logitech&amp;rsquo;s MX Revolution, 1000 or the Performance. This is a huge misnomer because the Magic mouse is surprisingly comfortable even for long periods of time - it&amp;rsquo;s that the MX line fits my hand more completely and feels nicer to hold at odd angles. That said, I always have a hand on the keyboard and avoid mousing unncessarily as keyboard shortcuts are nearly always faster then hunting for them in the menus.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h3&gt;&#xA;&lt;p&gt;Suffice to say, it&amp;rsquo;s an excellent Bluetooth mouse, it&amp;rsquo;s minimalistic and has all the features I want. For users who don&amp;rsquo;t require a middle button, those who want a solid mouse it&amp;rsquo;s perfect. I&amp;rsquo;ll definitely be keeping it - at least until the wife steals it and I upgrade to an &lt;a href=&#34;http://www.logitech.com/index.cfm/mice_pointers/mice/devices/5845&amp;amp;cl=us,en&#34;&gt;MX Performance&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I highly recommmend the mouse so long as you&amp;rsquo;re not looking for a large or gaming mouse.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Initial Snow Leopard Client Impressions</title>
      <link>https://chealion.ca/blog/initial-snow-leopard-client-impressions/</link>
      <pubDate>Fri, 28 Aug 2009 17:15:01 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/initial-snow-leopard-client-impressions/</guid>
      <description>&lt;p&gt;My initial impressions are that Snow Leopard is very much worth the upgrade if you can afford the time to do an operating system upgrade (in this case for me it was ~1.5 hours: 45 minute install, 45 minutes testing apps and seeing they still worked without any modification)&lt;/p&gt;&#xA;&lt;p&gt;Pros:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Speed&lt;br&gt;&#xA;Awesome!&lt;/li&gt;&#xA;&lt;li&gt;New Services Feature&lt;br&gt;&#xA;My favourite feature&lt;/li&gt;&#xA;&lt;li&gt;OpenCL&lt;br&gt;&#xA;If you haven&amp;rsquo;t seen MacResearch&amp;rsquo;s &lt;a href=&#34;http://macresearch.org/opencl_episode1&#34;&gt;Introduction to OpenCL&lt;/a&gt; check out 33:30 to 34:50 or so. (Rough timecodes&lt;/li&gt;&#xA;&lt;li&gt;iCal Event Editing Gets a Window Again&lt;/li&gt;&#xA;&lt;li&gt;Spotlight Default Search Location Fix and Sortable Results&#xA;I can finally search within a folder without holding a needle to my eye first!&lt;/li&gt;&#xA;&lt;li&gt;Enhanced Icon View&#xA;Neat if I used icon view.&lt;/li&gt;&#xA;&lt;li&gt;Faster wakeup to password screen&#xA;Hawt.&lt;/li&gt;&#xA;&lt;li&gt;Faster Time Machine Backup&#xA;Hawt.&lt;/li&gt;&#xA;&lt;li&gt;Airport Menu Changes&#xA;Neat animation, but more info when holding the option key as well.&lt;/li&gt;&#xA;&lt;li&gt;Gamma 2.2 Default&#xA;No longer do I have to set this up each time.&lt;/li&gt;&#xA;&lt;li&gt;New Fonts&#xA;Menlo is cool, but Chalkduster; Heiti SC and TC; and Hiragino Sans GB are all fonts I&amp;rsquo;ll never use.&lt;/li&gt;&#xA;&lt;li&gt;Safari Plug-ins are sandboxed&#xA;Awesome - Flash won&amp;rsquo;t hurt as much even after ClickToFlash&lt;/li&gt;&#xA;&lt;li&gt;QuickTime Player&#xA;New UI is great for viewing.&lt;/li&gt;&#xA;&lt;li&gt;Preview&#xA;Faster and better scaling.&lt;/li&gt;&#xA;&lt;li&gt;Mail&#xA;Much faster. :-)&lt;/li&gt;&#xA;&lt;li&gt;Set a time before the screen saver asks for a password.&#xA;THANK YOU.&lt;/li&gt;&#xA;&lt;li&gt;Smaller footprint&#xA;I liked the good thwack of disk space I got back (~6GB)&lt;/li&gt;&#xA;&lt;li&gt;Grand Dispatch&#xA;Can&amp;rsquo;t wait to see the results on the Mac Pros at work.&lt;/li&gt;&#xA;&lt;li&gt;Screen Recording&#xA;Neat, but I&amp;rsquo;ll stick with ScreenFlow.&lt;/li&gt;&#xA;&lt;li&gt;Revised Keyboard Shortcut / Services Preference Pane&#xA;Much nicer to work with.&lt;/li&gt;&#xA;&lt;li&gt;Wake on Demand&#xA;No more having to worry about whether the computer is asleep or not? Over wireless? Sweet (Airport Extreme only though)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Base 10 Counting&lt;br&gt;&#xA;WTF. DO NOT LIKE. &amp;ldquo;Mac OS X can not count&amp;rdquo; Would prefer a preference to turn this off and/or proper suffixes (eg. MiB instead of MB)&lt;/li&gt;&#xA;&lt;li&gt;QuickTime Player&#xA;Absolutely neutered into being useless beyond viewing and &amp;ldquo;Sharing&amp;rdquo; your movie to MobileMe.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In summary, there is no one real feature in Snow Leopard worth upgrading for - no major consumer focused feature. It&amp;rsquo;s the sum of all the parts that make it worth much more than the $29 they are charging. Once installed you never want to go back.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>iCal Server Multiple / Sub Calendars and Sunbird</title>
      <link>https://chealion.ca/blog/ical-server-multiple-sub-calendars-and-sunbird/</link>
      <pubDate>Wed, 05 Aug 2009 12:51:28 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/ical-server-multiple-sub-calendars-and-sunbird/</guid>
      <description>&lt;p&gt;At my workplace we use iCal Server running on Mac OS X 10.5 Server to share several calendars all under our one staff group. With iCal, so long as the group is delegated to be shown on the user&amp;rsquo;s accounts you can see all the calendars but with Sunbird you only get to see the first calendar.&lt;/p&gt;&#xA;&lt;p&gt;Before going further it&amp;rsquo;s worth noting how to delegate a group calendar so a user can view it without manually adding the group calendar as it&amp;rsquo;s own calendar (if using Delegates instead of multiple calendar &amp;ldquo;accounts&amp;rdquo; (same credentials, different calendars) is your aim). To do so you have to add the group calendar as a normal account in order to set it up, and then set up delegation as you would for a normal account. The important URL to know for using a group calendar is &lt;code&gt;http://FQDN.OF.SERVER:8008/principals/groups/groupname&lt;/code&gt; (as always replace http with https and 8008 with 8443 if you are using SSL).&lt;/p&gt;&#xA;&lt;p&gt;Sunbird uses slightly different URLs than what you use in iCal to start with, where in iCal an example URL might be &lt;code&gt;http://FQDN.OF.SERVER:8008/principals/users/USERNAME&lt;/code&gt; or &lt;code&gt;http://FQDN.OF.SERVER:8008/principals/groups/GROUPNAME&lt;/code&gt;. The corresponding URL to use in Sunbird is &lt;code&gt;http://FQDN.OF.SERVER:8008/calendars/users/USERNAME/calendar&lt;/code&gt; or &lt;code&gt;http://FQDN.OF.SERVER:8008/calendars/groups/GROUPNAME/calendar&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;That&amp;rsquo;s great for adding a single calendar but what if a user or a group has multiple calendars under their one account? iCal will automatically show them as a group whereas Sunbird requires you to add each and everyone that you wish to have show up.&lt;/p&gt;&#xA;&lt;p&gt;You can specify a &amp;ldquo;sub-calendar&amp;rdquo; to subscribe to in Mozilla Sunbird by specifying the unique ID of that calendar instead in the form of the url &lt;code&gt;http://FQDN.OF.SERVER:8008/calendars/__uids__/UID_OF_GROUP_OR_USER/UID_OF_SUB_CALENDAR&lt;/code&gt; (Newer versions of Lightning will take &lt;code&gt;http://FQDN.OF.SERVER:8008/users/USERNAME/UID_OF_SUB_CALENDAR&lt;/code&gt;). Note the lack of &lt;code&gt;calendar&lt;/code&gt; at the end of the URL. To determine the UIDs in question it&amp;rsquo;s easiest using iCal, if you click on a calendar and press Command-I (File -&amp;gt; Get Info) you can see part of the CalDAV URL at the bottom of the sheet that appears.&lt;/p&gt;&#xA;&lt;p&gt;You will see &lt;code&gt;calendars/__uids__/UNIQUE_ID/ONLY_PART_OF_THE_UNIQUE_ID&lt;/code&gt; because the label the text is placed into is not big enough to fit the URL. Because you can&amp;rsquo;t get the full URL from there it&amp;rsquo;s easiest to go to the iCal Server itself and navigate to &lt;code&gt;/Library/CalendarServer/Documents/calendars/__uids__/&lt;/code&gt; (you&amp;rsquo;ll need administrator privileges to view this). From there find the folder named the same as the UNIQUE_ID portion of the URL and open it to find a folder with the UNIQUE_ID of the &amp;ldquo;sub-calendar&amp;rdquo;. You can now put the URL together and use that in Sunbird to view that additional calendar.&lt;/p&gt;&#xA;&lt;p&gt;Example URL of a sub-calendar in the group:&lt;br&gt;&#xA;&lt;code&gt;https://FQDN.OF.SERVER:8443/calendars/__uids__/FA26C8C6-5B78-4AB0-AE73-0E9576574EBB/F74174B7-380C-4630-9192-9025F4C691A2&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sub-calendars also work at https://FQDN.OF.SERVER:8443/calendars/users/USERNAME/UID_OF_SUBCALENDAR&lt;/p&gt;&#xA;&lt;p&gt;Sources Used:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.macosxhints.com/article.php?story=20080410162942908&#34;&gt;MacOSXHints.com - Add group calendars to iCal Server&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://discussions.apple.com/thread.jspa?messageID=6865452&#34;&gt;Apple Support Discussions - Correct URLs for Sunbird&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://discussions.apple.com/thread.jspa?threadID=1666801&amp;amp;tstart=-1&#34;&gt;Apple Support Discussions - iCal + Sunbird&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Chromium Mac Build Bot Updater Script</title>
      <link>https://chealion.ca/blog/chromium-build-bot-updater-script/</link>
      <pubDate>Wed, 13 May 2009 16:07:34 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/chromium-build-bot-updater-script/</guid>
      <description>&lt;p&gt;When I read on &lt;a href=&#34;http://macrumors.com&#34;&gt;MacRumors&lt;/a&gt; that the Chromium builds for the Mac were available and were actually launching the &amp;ldquo;stupid&amp;rdquo; geek in me jumped at the opportunity to try the unfinished, unpolished software. By &amp;ldquo;stupid&amp;rdquo; I refer to the side of near any geek who sees the OOO SHINY and is fully prepared to deal with the instability and issues that will crop up with using pre-alpha/alpha software. Naturally when I saw how fast and furious the updates were happening alongside the fact there was no automatic update mechanism apparent in Chromium (I don&amp;rsquo;t have the Google Updater installed and don&amp;rsquo;t want to) I sought to find out how to automate the updates to make the pain of manual downloads, copies and such go away.&lt;/p&gt;&#xA;&lt;p&gt;Using my previous WebKit script, 5 minutes looking at the Chromium application layout and how the builds are stored on the server I changed the script. I fully expect it to break horribly in the future as Google changes folder layouts and/or adds Chromium support to their own &amp;ldquo;silent&amp;rdquo; updating mechanism.&lt;/p&gt;&#xA;&lt;pre lang=&#34;bash&#34;&gt;&#xA;#! /bin/bash&#xA;&#xA;# Based off my WebKit nightly script (now defunct as WebKit uses Sparkle)&#xA;# Copyright 2009 Micheal Jones&#xA;# Software License: Do whatever you want.&#xA;&#xA;#Find current revision&#xA;currentRevision=`/usr/libexec/PlistBuddy -c &#39;Print :SVNRevision&#39; /Applications/Chromium.app/Contents/Info.plist`&#xA;&#xA;#Get latest revision&#xA;latestRevision=`curl -s http://build.chromium.org/f/buildbot/snapshots/chromium-rel-mac/LATEST`&#xA;&#xA;#Abort if there is no update&#xA;if [ $latestRevision -le $currentRevision ]&#xA;then&#xA;&#x9;echo &#34;There is no update for Chromium available&#34;&#xA;&#x9;exit&#xA;fi&#xA;&#xA;#Append download address&#xA;address=&#39;http://build.chromium.org/f/buildbot/snapshots/chromium-rel-mac/&#39;${latestRevision}&#39;/chrome-mac.zip&#39;&#xA;&#xA;echo &#34;Downloading... $address&#34;&#xA;curl -s $address -o /tmp/chrome.zip&#xA;&#xA;#Abort if the build is not available&#xA;if [ &#34;`head -n 3 /tmp/chrome.zip | tail -n 1`&#34; = &#34;&lt;title&gt;404 Not Found&lt;/title&gt;&#34; ];&#xA;then&#xA;&#x9;echo &#34;Latest Version is not available yet (try again in a couple minutes)&#34;&#xA;&#x9;rm -rf /tmp/chrome-mac.zip&#xA;&#x9;exit&#xA;fi&#xA;&#xA;#Unzip&#xA;unzip /tmp/chrome.zip 1&gt;/dev/null&#xA;&#xA;echo &#34;Copying...&#34;&#xA;#Copy to Applications&#xA;cp -RfL /tmp/chrome-mac/Chromium.app /Applications/ 2&gt;/dev/null&#xA;&#xA;echo &#34;Cleaning up...&#34;&#xA;#Clean up&#xA;rm -rf /tmp/chrome*&#xA;&#xA;revision=`/usr/libexec/PlistBuddy -c &#39;Print :SVNRevision&#39; /Applications/Chromium.app/Contents/Info.plist`&#xA;&#xA;echo &#34;Finished. (r$revision)&#34;&#xA;&lt;/pre&gt;&#xA;&lt;p&gt;Realistically you should be looking for the latest source at the link below:&lt;/p&gt;&#xA;&lt;p&gt;As always this script can be found in my &lt;a href=&#34;http://github.com/Chealion/chealion&#34;&gt;git repository&lt;/a&gt; on &lt;a href=&#34;http://github.com&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Quick Looking a .csv File</title>
      <link>https://chealion.ca/blog/quick-looking-a-csv-file/</link>
      <pubDate>Mon, 11 May 2009 15:37:04 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/quick-looking-a-csv-file/</guid>
      <description>&lt;p&gt;On &lt;a href=&#34;http://serverfault.com&#34;&gt;ServerFault&lt;/a&gt; someone was &lt;a href=&#34;http://serverfault.com/questions/6863/how-do-i-view-csv-files-in-quicklook&#34;&gt;asked&lt;/a&gt; a question why .csv files were unable to be viewed in Quick Look. For some reason .csv files are not defined as plain text by the operating system which leads to odd conflicts between applications that can deal with .csv files that causes QuickLook to report that it can&amp;rsquo;t find a generator for the file and just show the icon.&lt;/p&gt;&#xA;&lt;p&gt;The one way to force it to work is to roll your own, with a bit of &lt;a href=&#34;http://www.viddler.com/explore/lammig/videos/6/&#34;&gt;help&lt;/a&gt; after reading the &lt;a href=&#34;http://developer.apple.com/documentation/UserExperience/Conceptual/Quicklook%5FProgramming%5FGuide/Introduction/Introduction.html&#34;&gt;QuickLook Programming Reference&lt;/a&gt; it was rather simple to roll together a proof of concept QuickLook generator for .csv files.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s not pretty, it may break at any time (if only because it&amp;rsquo;s using a dynamic UTI since one is not defined anywhere, however .csv files have been using the UTI &amp;ldquo;dyn.age80g650&amp;rdquo; for quite a while - as far back as prior to 10.0) but it works and forces the .csv to display properly.&lt;/p&gt;&#xA;&lt;p&gt;The code and a download of CSVQL is available on GitHub:&lt;/p&gt;&#xA;&lt;p&gt;Source: &lt;a href=&#34;http://github.com/Chealion/chealion/tree/master&#34;&gt;http://github.com/Chealion/chealion/tree/master&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Download: &lt;a href=&#34;http://cloud.github.com/downloads/Chealion/chealion/CSVQL.zip&#34;&gt;http://cloud.github.com/downloads/Chealion/chealion/CSVQL.zip&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Check out &lt;a href=&#34;http://chealion.ca/2009/05/quick-looking-a-csv-file/#comments&#34;&gt;Pascal&amp;rsquo;s comment&lt;/a&gt; for a much nicer looking version - actually puts the data into tables.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>DROC.CA : Douchy Business Practices</title>
      <link>https://chealion.ca/blog/drocca-douchy-business-practices/</link>
      <pubDate>Mon, 27 Apr 2009 18:57:02 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/drocca-douchy-business-practices/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m unsure as to exactly why this annoyed me so much but on receiving junk mail to my home address from a company called &amp;ldquo;Domain Registry of Canada&amp;rdquo; (&lt;a href=&#34;http://droc.ca&#34;&gt;spammer&amp;rsquo;s website&lt;/a&gt;) I felt compelled to write an email (if only to get myself off their mailing list).&lt;/p&gt;&#xA;&lt;p&gt;Hi,&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;d like to inquire why environmental resources, postage, and my time was wasted by sending a letter to my home address &amp;ldquo;as a courtesy&amp;rdquo; to &amp;ldquo;renew&amp;rdquo; or should I say SWITCH for 4 times ($40.00 CDN) the price I currently pay to register my domains.&lt;/p&gt;&#xA;&lt;p&gt;Please remove me from your database and in my obtuse opinion grow a pair of non shifty business practices. (&amp;ldquo;Domain Registry of Canada&amp;rdquo;? It may be legal but it&amp;rsquo;s certainly douchy).&lt;/p&gt;&#xA;&lt;p&gt;Pissed off over junk mail and shady business practices,&lt;/p&gt;&#xA;&lt;p&gt;Micheal&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m fully aware it will do nothing, they won&amp;rsquo;t (and most likely should not) care about my opinion of their practices but making it known that Domain Registry of Canada is soliciting me to switch (under the guise of renewing) is douchy. The domain is even transfer locked (meaning I can&amp;rsquo;t switch registrar&amp;rsquo;s with their fancy paper form). It does stand to point that the moment you start reading further it&amp;rsquo;s quite obvious it&amp;rsquo;s a solicitation - it&amp;rsquo;s not hidden but the fact that I am being solicited for this annoys me even if it &amp;ldquo;standard practice&amp;rdquo; by those who have business practices I despise.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Aborting On the Second Disk on a Restore</title>
      <link>https://chealion.ca/blog/aborting-on-the-second-disk-on-a-restore/</link>
      <pubDate>Tue, 17 Feb 2009 15:22:08 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/aborting-on-the-second-disk-on-a-restore/</guid>
      <description>&lt;p&gt;Scenario: Client attempts to restore their iMac using their Software Restore disks (10.4.10) but the second disk containing iLife for some reason refuses to be recognized. iLife is already installed and the OS has been installed but the Installer will come up everytime you attempt to start up the computer.&lt;/p&gt;&#xA;&lt;p&gt;The workaround: Start up the computer in single user mode. Then use the following commands (not the ones with ## preceding them however)&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;## Mount the filesystem so you can read and write to it&#xA;mount -uw /&#xA;## The files we want live in /var/db&#xA;cd /var/db/&#xA;## Files that tell us it&#39;s a multi disk install&#xA;rm .AppleMultiInstall*&#xA;## File that tells us to pop up the registration dialog&#xA;rm .AppleCustomMac&#xA;## Something else to do with setup (Locale Setup?)&#xA;rm .locsetup.plist  &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;I removed all 3 files because they looked like the most likely culprits but gut tells me the .AppleMultiInstall* files are the only ones that &lt;em&gt;have&lt;/em&gt; to be removed but I wasn&amp;rsquo;t able to test it.&lt;/p&gt;&#xA;&lt;p&gt;You&amp;rsquo;re now able to boot the computer just fine - it&amp;rsquo;s imperative however to be sure that you know what has been installed as you&amp;rsquo;re interrupting the installation. Because in this case I knew that only iLife was on the second disk (in terms of what had been selected to be installed) I didn&amp;rsquo;t go ahead with reinstalling the OS to be on the safe side.&lt;/p&gt;&#xA;&lt;p&gt;This has been tested on Mac OS X Tiger 10.4, it should be identical for Mac OS X Leopard 10.5 as well but I&amp;rsquo;m not 110% positive.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Invisible Shield</title>
      <link>https://chealion.ca/blog/invisible-shield/</link>
      <pubDate>Fri, 06 Feb 2009 17:44:17 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/invisible-shield/</guid>
      <description>&lt;p&gt;When I got my iPhone I went looking for a case that ideally would not make the iPhone much more thicker than necessary, protected the screen from fingerprints and scratches and generally didn&amp;rsquo;t suck. It took a while but after reading reviews I settled on using the &lt;a href=&#34;http://www.zagg.com/invisibleshield/apple-iphone-3g-cases-screen-protectors-covers-skins-shields.php&#34;&gt;Invisible Shield&lt;/a&gt; by &lt;a href=&#34;http://zagg.com&#34;&gt;Zagg&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;good&#34;&gt;Good&lt;/h3&gt;&#xA;&lt;p&gt;The Invisible Shield protects my iPhone quite well against scratches against keys and well near anything that doesn&amp;rsquo;t actually slice the material itself. While often the scratch will be visible, running your thumb over the scratch or just giving the material time will have the scratch disappear like it never existed. It&amp;rsquo;s remarkably resilient to scuffs as well as often wiping away the offending scuff will cause it to disappear, or if dirty a little bit of water will work as well.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s also exceptionally thin and clear leaving the screen of the iPhone easy to see underneath it&amp;rsquo;s protective layer. Additionally dirt, dust, and other cosmetic annoyances can be easily washes or wiped off the screen just like the glass screen on the iPhone.&lt;/p&gt;&#xA;&lt;p&gt;I prefer the slightly more tactile feel of the material (and if applied to the back as well if applied) as it gives a better sense of tactile feedback on the touch screen. It feels like you&amp;rsquo;re moving your finger across the screen a certain amount - much akin to using a scroll wheel on a mouse with grooves versus one that was completely smooth. The additional traction also makes the iPhone easier to hold - especially with your finger tips.&lt;/p&gt;&#xA;&lt;h3 id=&#34;bad&#34;&gt;Bad&lt;/h3&gt;&#xA;&lt;p&gt;The suckers are hard to apply - compared to just slipping your iPhone into a case the initial time investment is pretty steep. However if you spend the 5 minutes reading the instructions and/or watching the video instructions on their website and then take your time applying it on the iPhone you&amp;rsquo;ll avoid the major issues of dust, air bubbles and streaks.&lt;/p&gt;&#xA;&lt;p&gt;Between all the Invisible Shield&amp;rsquo;s I&amp;rsquo;ve installed I&amp;rsquo;ve seen all 3 major issues and all were my fault and thankfully if you&amp;rsquo;re paying attention can be avoided by taking the screen off and restarting the procedure over before it has time to start to set (according to the instructions). Having air bubbles or dust under the screen is really distracting but I find the streaks the most annoying if only because they aren&amp;rsquo;t obvious until you&amp;rsquo;re looking intently at the screen by watching a movie, reading text or something similar. I&amp;rsquo;ve found they happen when you pull the shield too taunt and are different then the streaks you get after installation.&lt;/p&gt;&#xA;&lt;p&gt;After installation you will notice there are streaks on the screen that take a couple days to go away. These are normal and I&amp;rsquo;ve found will go in the direction that you used the squeegee to push out the excess liquid. So for the first couple days they can be a bit annoying as the streaks will distort the colour of some pixels making it seem as if there are razor thin lines of green or red at certain points. Thankfully after a while for the iPhone and the shield to get used to each other it disappears. I&amp;rsquo;ve also noticed that until this happens as well the quality of the iPhone screen will appear slightly fuzzy - not bad but as if the anti-alias filter was set a notch or two off optimum.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve found that over time the screen likes to grab and hold onto oil and dust requiring wiping. The slight fuzzy appearance of elements on the iPhone comes back as well because of the oil but after cleaning it&amp;rsquo;s back to where it should be.&lt;/p&gt;&#xA;&lt;p&gt;The biggest downside I&amp;rsquo;ve found is that they are not realistically reusable. For example each time I&amp;rsquo;ve had my iPhone replaced I&amp;rsquo;ve had to take the old one off and it would stick to itself creating a nice ball of Invisible Shield destined for the garbage requiring me to shell out another $25-$30 CAD for a new one. Be prepared to buy a new one if you have to replace your device.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h3&gt;&#xA;&lt;p&gt;So of all the faults with the Invisible Shield (which I find are more caveats than faults) I heartily recommend it because it&amp;rsquo;s unobtrusive and works exceptionally well. After having purchased 4 of them and applying them on 4 different iPhones I&amp;rsquo;ve still come back to the Invisible Shield every time.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>iPhone Restoration : Restoring Home Screen Layout (Pre 3.0)</title>
      <link>https://chealion.ca/blog/iphone-restoration-restoring-home-screen-layout/</link>
      <pubDate>Fri, 06 Feb 2009 16:57:01 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/iphone-restoration-restoring-home-screen-layout/</guid>
      <description>&lt;p&gt;After having gone through 3 iPhones and countless restores of different iPhones and iPod touches I had to get to the bottom of how to restore my layout of my apps on my home screens.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-cause&#34;&gt;The Cause&lt;/h3&gt;&#xA;&lt;p&gt;When you restore your iPhone / iPod touch to it&amp;rsquo;s factory defaults the device is not connected to an iTunes account. When you restore it from your backup (to put your apps and info back on) it will load anything that does not require authorization through the iTunes store (with the exception of free apps - though purchased from the iTunes Store they seem to get loaded anyway). So when you finish a Restore From Backup the first time around it will not load any paid apps or music until it&amp;rsquo;s authorized. It does it&amp;rsquo;s authorizations seemingly right after you&amp;rsquo;ve restored it as it accesses the iTunes Store as if it was just plugged in. Why that has no effect on purchased music I&amp;rsquo;ve no idea.&lt;/p&gt;&#xA;&lt;p&gt;In the end you&amp;rsquo;re left with a phone / iPod that has only part of the data it had on it before and requires you to press Sync again to put your paid applications and purchased music on to it. The biggest issue here is that if you have any data stored in that application, like say Things, or high scores from a game, or just find reorganizing your home layout frustrating you&amp;rsquo;re out of luck. The paid apps are installed anew, and placed one at a time into the earliest empty spot on your home screens. Frustrating. Thankfully there is a workaround.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-workaround&#34;&gt;The Workaround&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Perform a backup before you restore.&lt;/li&gt;&#xA;&lt;li&gt;After restoring your Phone to the whichever OS version&lt;/li&gt;&#xA;&lt;li&gt;Restore from your backup (you can cancel syncing music when this part finishes - it will start up again after the next step)&lt;/li&gt;&#xA;&lt;li&gt;Restore once more - you may see two backups to choose from as it would have created a backup after the restoring. Choose the one that would have a timestamp just before you do the restore.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Annoying because a restore from backup may take as long as 5 or 6 minutes but at least you aren&amp;rsquo;t stuck reorganizing your applications the way you wanted them again.&lt;/p&gt;&#xA;&lt;p&gt;EDIT: From what I can gather 3.0 has fixed this issue.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Agricola - Initial Impressions</title>
      <link>https://chealion.ca/blog/agricola-initial-impressions/</link>
      <pubDate>Thu, 22 Jan 2009 11:38:39 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/agricola-initial-impressions/</guid>
      <description>&lt;p&gt;After becoming slowly disenchanted with Settlers of Catan which left me feeling like I could tell who would win often within 1 or 2 moves - if the dice would actually play like it statistically should I felt that I really wanted to get another more serious board game that wasn&amp;rsquo;t as well known and would best of all be fun. After much searching and asking around I purchased the board game &lt;a href=&#34;http://www.zmangames.com/boardgames/agricola.htm&#34;&gt;Agricola&lt;/a&gt; (&lt;a href=&#34;http://www.boardgamegeek.com/game/31260&#34;&gt;BoardGameGeek&lt;/a&gt;) after a promising recommendation and the fact that it has taken over as the #1 rated game on &lt;a href=&#34;http://boardgamegeek.com&#34;&gt;BoardGameGeek&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Three members of my family and I set up the Family Game (a simpler variant recommended for starting out) and I&amp;rsquo;m certainly happy that we did. The game from unboxing (pieces already separated earlier) to finish took a good 4 hours. The 4 hour number is artificially inflated due to reading the rules and figuring out the rules on top of interruptions. Once we had started the game itself only took a bit over the 90 minutes it says to expect. I highly suspect after several more plays it will become considerably faster than that.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-good&#34;&gt;The Good&lt;/h3&gt;&#xA;&lt;p&gt;The game plays like a well oiled machine - thought out, exceptionally balanced, and insanely competitive without forcing one into an all out war against someone. Without any dice rolling (the bane of my existence in Risk) the element of chance takes a back seat to good old fashioned strategy and ingenuity.&lt;/p&gt;&#xA;&lt;p&gt;The game is serious but quite fun - I can&amp;rsquo;t comment on the &amp;ldquo;let&amp;rsquo;s play it again&amp;rdquo; factor as nearly any brand new game I wish to play it again now that I have learnt the rules and mechanics. [EDIT: After playing several more games since writing the first draft of this - the let&amp;rsquo;s play it again right away factor is not as high as one would expect. Games can get a bit long but that idea that you can play again the following day is high - or if someone asks to play I&amp;rsquo;ve yet to have anyone say no. But 2 or 3 games in a row? Not as much]&lt;/p&gt;&#xA;&lt;p&gt;I look forward to introducing the minor improvements alongside the Occupations of the full game that will result in a much more diversifed game.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-bad&#34;&gt;The Bad&lt;/h3&gt;&#xA;&lt;p&gt;Your best attack is to go first and take the action that your opponents want the most, and when there are multiple routes to victory and easy to change your strategy it becomes a game where you have to think for yourself and see how you can use the different advantages you have to improve your standing instead of sabotaging others. It&amp;rsquo;s also quite apparent how important it is to not always go last in the turn order - it makes life much more difficult for sure.&lt;/p&gt;&#xA;&lt;p&gt;Another &amp;ldquo;bad&amp;rdquo; point is the rules. While praised for being concise and very informative and easy to consult they are best compared to a comprehensive reference book instead of a how to or introduction. I explain more later about the insane learning curve.&lt;/p&gt;&#xA;&lt;p&gt;The colour / aesthetics feel bland - with the muted colours of the majority of the pieces the initial feeling is the only exceptions is the green of the farmyards. After more research there are available upgrades for the vegetables and animals to appear like animals instead of just wooden disks or cubes. The disks and cubes only accentuated the initial overwhelming complexity as pieces are not self obvious.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-ugly&#34;&gt;The Ugly&lt;/h3&gt;&#xA;&lt;p&gt;The initial learning curve if all you have is just the rules is massive. Absolutely positively aggravatingly massive. The game creators have included additional illustrations to make it easier to understand on the back of some of the game boards but if you are unaware that is their point or how they fit together (which isn&amp;rsquo;t revealed until a page or two into the rules) that simply add to the mass confusion of pieces. The good news is that if you&amp;rsquo;re patient and just read it all through and be patient while going through those first 7 pages, that items that are brought up that haven&amp;rsquo;t been discussed will be covered shortly it&amp;rsquo;s easy to get by.&lt;/p&gt;&#xA;&lt;p&gt;The silver lining of this is that if you have someone who has played the game before or are able to watch a game in play before playing yourself the learning curve is quite trivial in comparison as the game, once aware of the purpose of the pieces is straight forward and well designed.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-reality&#34;&gt;The Reality&lt;/h3&gt;&#xA;&lt;p&gt;If you can - find someway to play this game. It&amp;rsquo;s not the most inexpensive game (retails for ~$75-80 CAD) but the quality of the pieces is excellent and the design top notch. While it won&amp;rsquo;t be the most favourite game of everyone I can heartily recommend it as no matter what is happening in the game it&amp;rsquo;s possible to use the advantages you have in hand to do your best if not win.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Disabling Mail.app&#39;s To Do Mailboxes and Quasi-Debugging Mailbox Creation</title>
      <link>https://chealion.ca/blog/disabling-mailapps-to-do-mailboxes-and-quasi-debugging-mailbox-creation/</link>
      <pubDate>Mon, 15 Dec 2008 15:02:11 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/disabling-mailapps-to-do-mailboxes-and-quasi-debugging-mailbox-creation/</guid>
      <description>&lt;p&gt;Leopard&amp;rsquo;s Mail.app introduced some nice speed improvements over Tiger&amp;rsquo;s version but introduced one of the most annoying features (IMNSHO) in Leopard. System Wide &amp;ldquo;To Dos&amp;rdquo; in a garish Marker Felt font intent on polluting my IMAP mailboxes with Apple Mail To Do or ToDos.mbox seemingly placed randomly (they aren&amp;rsquo;t but when your Prefixes differ from account to account it seems random at first). Additionally when I moved servers at my &lt;a href=&#34;http://joyent.us&#34;&gt;host&lt;/a&gt; my accounts on my computer started misbehaving creating nested mailboxes continuously. In the end it&amp;rsquo;s mostly user error but I&amp;rsquo;m hoping these tips on how to disable the To Do mailbox (see the edit for the easy way) and force Mail to look properly for the right mailbox will help someone jump to the fix that will stick.&lt;/p&gt;&#xA;&lt;h3 id=&#34;mailbox-setup-reference&#34;&gt;Mailbox Setup Reference&lt;/h3&gt;&#xA;&lt;p&gt;To start with for reference I have several computers and an iPhone that share 4 IMAP accounts (GMail, my webhost and one from work). The main reason I use IMAP is that it keeps them in sync - the backup on the server is just gravy. By default Mail.app uses a mailbox called &amp;ldquo;Sent Messages&amp;rdquo; and &amp;ldquo;Deleted Messages&amp;rdquo; for it&amp;rsquo;s Sent and Trash mailboxes. If they do not exist it will attempt to create them - which isn&amp;rsquo;t entirely interoperable with some webmail clients out of the box (eg. Squirrelmail and RoundCube don&amp;rsquo;t use those mailboxes by default) or other email clients such as Thunderbird (which doesn&amp;rsquo;t allow you to change your Trash mailbox in Account Settings so you can&amp;rsquo;t tell it to use Deleted Messages as well).&lt;/p&gt;&#xA;&lt;h3 id=&#34;changing-your-sent-and-trash-mailboxes-normally&#34;&gt;Changing Your Sent and Trash Mailboxes Normally&lt;/h3&gt;&#xA;&lt;p&gt;In Mail.app you can click on a mailbox (eg. Trash Man O&amp;rsquo; Doom) you&amp;rsquo;ve created and then under the Mailbox menu scroll down to &amp;ldquo;Use This Mailbox For&amp;rdquo; and set the mailbox for what you would like to use it for Drafts, Sent, Trash or as the Junk Mailbox. Nice, easy and it nearly always works. (I&amp;rsquo;ve had it not work once and that wasn&amp;rsquo;t Mail&amp;rsquo;s fault)&lt;/p&gt;&#xA;&lt;h3 id=&#34;to-do-mailboxes-are-from-hell&#34;&gt;To Do Mailboxes Are From Hell&lt;/h3&gt;&#xA;&lt;p&gt;You may have noticed above that there was no option for a &amp;ldquo;To Do&amp;rdquo; mailbox or even an option anywhere to disable System wide To Dos which means that once iCal is opened or any To Do is intentionally or accidentally created Mail.app will dutifully create Apple Mail To Do mailboxes for each account you have following the IMAP Prefix if necessary. On my iPhone where To Dos are not even recognized it means I&amp;rsquo;m always seeing a completely useless Apple Mail To Do mailbox somewhere in the hierarchy of my mailboxes.&lt;/p&gt;&#xA;&lt;p&gt;Following the publishing of a &lt;a href=&#34;http://www.macosxhints.com/article.php?story=20080327194950551&#34;&gt;hint&lt;/a&gt; on &lt;a href=&#34;http://macosxhints.com&#34;&gt;MacOSXHints.com&lt;/a&gt; that described the key used in Mail.app&amp;rsquo;s Preference file (com.apple.mail.plist) I decided to go digging to see what else was stored there. I discovered that by setting the value to nothing (as in just leave it blank) that To Dos were effectively disabled on that account - I could then delete the Apple Mail To Do mailbox on the account. By doing the same change on the other computers (4 accounts * 4 computers = tedious) I was then Apple Mail To Do mailbox free!&lt;/p&gt;&#xA;&lt;p&gt;**EDIT: According to a newly published &lt;a href=&#34;http://www.macosxhints.com/article.php?story=20090115191259125&#34;&gt;hint&lt;/a&gt; there&amp;rsquo;s another way to avoid ToDo mailboxes being recreated by changing the NewNoteToDoAccount key to the ID of your local account. After deleting all my To Do mailboxes this was auto set so I didn&amp;rsquo;t notice that it had changed.&lt;/p&gt;&#xA;&lt;p&gt;**EDIT 2: As far as I can tell this is akin to setting Create Notes &amp;amp; To Do&amp;rsquo;s in: to On My Mac in the Composing section of the Mail Preferences - which is FAR easier than messing with the plist file.&lt;/p&gt;&#xA;&lt;h3 id=&#34;multiplying-inboxes&#34;&gt;Multiplying Inboxes&lt;/h3&gt;&#xA;&lt;p&gt;When I changed servers at my webhost, Mail.app got confused about the IMAP Prefixes (I believe the new server was telling Mail.app INBOX and the old server was saying /, but I&amp;rsquo;m unsure) and decided to whenever I deleted a message to move the message to a new mailbox it would create at INBOX/Deleted Messages. Thinking it was an anomaly I would move the message where it should have gone and delete the newly create mailbox. The next time a message would be deleted (wasn&amp;rsquo;t necessarily on that computer) it would recreate that mailbox but oddly at INBOX/INBOX/Deleted Messages and the cycle would keep repeating. This was the one time that selecting the Trash Mailbox (Deleted Messages at / and not in INBOX) and telling it to use it failed.&lt;/p&gt;&#xA;&lt;p&gt;Using the knowledge that the mailbox information is stored in com.apple.mail.plist I edited the offending section setting it properly and haven&amp;rsquo;t had a problem with it since - it was a good way of having somewhere to write in &amp;ldquo;I want my Trash to go here&amp;rdquo;. So it&amp;rsquo;s useful for making changes and checking to see what path that Mail.app is looking for when it shouldn&amp;rsquo;t be looking at that location (especially via SSH when VNC is unavailable).&lt;/p&gt;&#xA;&lt;p&gt;So my frustration ends with that to edit a binary plist the only Apple provided tool is the new Property List Editor 3.0 which is not an optimum solution for editing - it doesn&amp;rsquo;t provide searching and I find that the extra work using plutil to convert to xml instead of binary and back so I can use TextMate not worth it in the end. Much of what you need to do is in Mail.app itself but when Mail.app is acting up, it&amp;rsquo;s good to know where you can go to set it back straight and stop the cluttering of your mailbox hierarchies.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Alert: Flash Player 10.0.12.36 Installer Opens Up Root Home Folder</title>
      <link>https://chealion.ca/blog/alert-flash-player-1001236-installer-opens-up-root-home-folder/</link>
      <pubDate>Wed, 10 Dec 2008 15:21:30 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/alert-flash-player-1001236-installer-opens-up-root-home-folder/</guid>
      <description>&lt;p&gt;I updated the current installation of Adobe Flash Player at work today over ARD and had several people ask me odd questions about why there was a Finder window with the word root for a title when they came in to login this morning. Needless to say that raised warning bells all over the place for myself.&lt;/p&gt;&#xA;&lt;p&gt;On checking the computers I noticed it occurred on every computer running Tiger and that every computer running Leopard did show the menu bar and said Finder was running but unlike Tiger it did not allow you to perform any actions beyond opening a menu. In Tiger you were essentially logged in as root into the Finder (and SystemUIServer) which gave you complete access to anything. The kicker is that the root user &lt;strong&gt;was not&lt;/strong&gt; enabled on any of the computers.&lt;/p&gt;&#xA;&lt;p&gt;Now in the big picture it&amp;rsquo;s mostly a non-issue because the following requirements have to be taken to see this edge case:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The workstation must be running 10.4.0-10.4.11 (Flash Player 10 doesn&amp;rsquo;t run on Mac OS X older than 10.4)&lt;/li&gt;&#xA;&lt;li&gt;You must be using Apple Remote Desktop to install the package&lt;/li&gt;&#xA;&lt;li&gt;You must ensure that you choose not to restart the computers in question. By default the package wants to restart the computer if no one is logged in (I assume it is to avoid this very situation). If someone is logged in however it doesn&amp;rsquo;t request a restart. The kicker is that if you select a group of machines and send it to install and one of them has a logged in user by default it does not ask you to restart.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;If you check on the workstation you will see a Finder window open to root&amp;rsquo;s home folder - even if you don&amp;rsquo;t have the root user enabled (which I am of the opinion you shouldn&amp;rsquo;t especially with sudo available). Anything then opened via the Finder then runs as root as well (including Terminal).&lt;/p&gt;&#xA;&lt;p&gt;So it&amp;rsquo;s easy to work around - either restart them all, or do it when you have users logged in (not ideal). If you do choose the username for the action to be done in ARD; the Finder window will open up as that user (quite possibly a local administrator account) so filing in a username there is not a workaround but much less dangerous than root access. Once the computer is restarted or someone logs in the issue goes away.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Rose and Crown: Banff</title>
      <link>https://chealion.ca/blog/rose-and-crown-banff/</link>
      <pubDate>Wed, 10 Dec 2008 14:12:15 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/rose-and-crown-banff/</guid>
      <description>&lt;p&gt;I really like the Rose and Crown pub in Calgary. I had a Christmas party this weekend at the Rose and Crown in Banff which I had read only shares the name - not owners and was not as good. What I didn&amp;rsquo;t realize was just how bad of euphemism &amp;ldquo;not as good&amp;rdquo; was. All in all the most positive thing I can say about my experience there was &amp;ldquo;at least it didn&amp;rsquo;t suck&amp;rdquo; or &amp;ldquo;it was edible food and I didn&amp;rsquo;t get food poisoning&amp;rdquo;. I put up with much of it as I was under the assumption that I was not going to be paying and such didn&amp;rsquo;t pay attention much to price as much of what I was ordering was something similar to what I and my fiancee would order in Calgary. So my expected price with everything all told would be ~$45 tops. It should be noted that I&amp;rsquo;m quite easy going on food quality as most things taste quite good to me.&lt;/p&gt;&#xA;&lt;h3 id=&#34;drinks&#34;&gt;Drinks&lt;/h3&gt;&#xA;&lt;p&gt;I ordered a Crown Float ($8), a Sleeman Honey Brown ($7), a double Jack and Coke ($11.51), and a glass of Robinson Wine Shiraz that was given to me. Of the four, my water ($0.00) which wasn&amp;rsquo;t even listed was the best tasting drink and I think had the most alcohol. The double Jack and Coke which cost $11.50 tasted like it had double coke to half a shot of Jack. The Crown Float tasted like warm Guiness and slightly cool Strongbow Dry Cider - making neither taste any good. The Sleeman Honey Brown tasted decidedly flat and was hard to stomach at best. Whereas the Robison Wine Shiraz (RSA) tasted like a wannabe fruit bomb - not terrible but decidedly not good. So the&lt;/p&gt;&#xA;&lt;h3 id=&#34;food&#34;&gt;Food&lt;/h3&gt;&#xA;&lt;p&gt;My fianceé ordered Mussels ($10) as an appetizer and the Rueben ($11) with French Onion Soup ($3 extra) as her main course. I ordered the Maple Salmon ($15). The prices weren&amp;rsquo;t absurd and relatively close to what I would have expected in Calgary - the quality however was decidedly &amp;ldquo;it doesn&amp;rsquo;t suck - it tastes like barely decent British Pub Food&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;The Mussels were thankfully plentiful (with a lot of empty shells) and were decent - not good, not bad. Just satisfactory. I&amp;rsquo;ve had better many times and worse a couple times as well. The Reuben was not Montreal Smoked Meat - it was just a swack of Pastrami with some partially melted Mozzarella on some bread with a decidedly soft pickle. Really disappointing but it was food and it didn&amp;rsquo;t suck (but that means it was far from good). The French Onion Soup ($3 extra) was bland, boring and utterly and totally forgetful - so much so I don&amp;rsquo;t remember my two spoonfuls whatsoever.&lt;/p&gt;&#xA;&lt;p&gt;My Maple Salmon is best described as decent. With Basmati Rice and vegetables the best portion was the steamed pea pods accompanied by well steamed carrots. The rice was unseasoned, plain and completely forgettable. The Maple Salmon was seared (pro), but lacked much in terms of texture and taste beyond a very subtle maple taste as if the scorch marks on the salmon contained the maple sauce retrieved from the grill. Forgetful at best, unsatisfactory at worst.&lt;/p&gt;&#xA;&lt;h3 id=&#34;price&#34;&gt;Price&lt;/h3&gt;&#xA;&lt;p&gt;The worst portion of this whole debacle was the resulting price - after a 15% tip, tax the total came to just barely shy of $80 ($79.95 for those keeping count). Was the evening worth even close to $80? Or heck worth $40? (Barely the latter IMNSHO). The value was appalling especially when considering the drink total ($31.80 with tax and tip) was a complete and absolute regrettable wash. The food ($48.15 with tax and tip) also did not measure up in value. At half the price it might be acceptable in terms of value.&lt;/p&gt;&#xA;&lt;h3 id=&#34;atmosphere&#34;&gt;Atmosphere&lt;/h3&gt;&#xA;&lt;p&gt;Shockingly, the atmosphere can also be described as &amp;ldquo;it didn&amp;rsquo;t suck&amp;rdquo; - nowhere near good and not terrible. Just barely adequate. It was very loud, dimly lit and not conducive to talking to anyone more than half a metre away from you. It&amp;rsquo;s very similar to other pubs I&amp;rsquo;ve been to but somehow a step or two worse without being outstandingly crappy.&lt;/p&gt;&#xA;&lt;h3 id=&#34;service&#34;&gt;Service&lt;/h3&gt;&#xA;&lt;p&gt;To close up this review I end with the most positive aspect of the evening at the Rose and Crown: the service was prompt and just what would be normally expected. Nothing exceptionally or above what should normally be expected from a waitress at a pub. The exception was it took a couple minutes to track her down in order to pay the grossly overpriced bill.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s not only just barely adequate in terms of quality of food, a complete waste in terms of alcohol, and acceptable in terms of service - it&amp;rsquo;s absolutely terrible in terms of value for money.So in summary, for the love of God and all that is holy &lt;strong&gt;avoid&lt;/strong&gt; the Rose and Crown in BANFF.&lt;/p&gt;&#xA;&lt;p&gt;The Rose and Crown in Calgary is awesome and not affiliated with the Rose and Crown in Banff. Thank God.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>iPhone Cryptic Error : Invalid Recipient</title>
      <link>https://chealion.ca/blog/iphone-cryptic-error-invalid-recipient/</link>
      <pubDate>Tue, 04 Nov 2008 21:08:49 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/iphone-cryptic-error-invalid-recipient/</guid>
      <description>&lt;p&gt;While I really enjoy my iPhone&amp;rsquo;s ease of use it does spit some really cryptic errors sometimes. Namely one I&amp;rsquo;ve kept running into after changing over my domains to the new Shared Accelerators from Joyent which changed my SMTP information.&lt;/p&gt;&#xA;&lt;p&gt;For some reason my new SMTP information just wouldn&amp;rsquo;t sync to my iPhone correctly - at best the server info will but the username and password were blank. I&amp;rsquo;m not 100% certain that the error is not exclusive to Joyebt&amp;rsquo;s email servers as I have seen it on another server as well - but when the username or password is wrong when attempting to send uemail you are presented with the following error:&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;One of the recipient addresses was invalid&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Frustrating and exceedingly cryptic, but if I write it down then I might actually remember what the error means next time.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Showing Network Volumes in the Sidebar</title>
      <link>https://chealion.ca/blog/showing-network-volumes-in-the-sidebar/</link>
      <pubDate>Tue, 28 Oct 2008 14:49:07 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/showing-network-volumes-in-the-sidebar/</guid>
      <description>&lt;p&gt;At work I have a user that really, really was having a hard time with Network Shares being moved to under Network in Leopard instead of showing up with the rest of the Volumes as they used to in Tiger. After a bit of digging around I found the following information but failed to figure out how to create a script to automagically put Network shares in the Devices section of your sidebar but if you&amp;rsquo;re managing several computers it is possible to copy the com.apple.sidebarlists.plist file saving a lot of time.&lt;/p&gt;&#xA;&lt;p&gt;When a network share is mounted in Leopard it does not appear in the Finder sidebar on it&amp;rsquo;s own - it is accessible via the server it is on if you have Connected Servers checked off in the Finder preferences. At work we have Back to My Mac, Connected Servers, and Bonjour Servers all hidden by default because they do little to assist anyone in finding anything. (Not to mention Back to My Mac isn&amp;rsquo;t used and Bonjour Servers lists every computer in the building). Your one alternative was to navigate back to the Computer (Command-Shift-C) and find your Volume there - instead what you can do is drag a Network share to your sidebar (or press Command-T when it is selected) where if mounted it will appear.&lt;/p&gt;&#xA;&lt;p&gt;What I wanted to do was make it so they would automatically appear no matter what was connected - making the change more future proof. I ultimately failed to do so but I did learn the following tidbits about com.apple.sidebarlists.plist:&lt;/p&gt;&#xA;&lt;p&gt;Under :systemitems:VolumesList (PlistBuddy syntax in use) you have a list of different hard drives and such that have been plugged into your computer - and if you happen to add a share to your sidebar this portion is what is changed.&lt;/p&gt;&#xA;&lt;p&gt;Each Item consists of:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;An Alias (Data) - This is the base64 decoded form of a _CFULRAlias (identical to as seen in com.apple.dock.plist)&lt;/li&gt;&#xA;&lt;li&gt;EntryType (Integer) - I found the codes for several different types:&lt;br&gt;&#xA;16: Special Access (Computer, iDisk, Network)&lt;br&gt;&#xA;261: Hard Drive (and ZFS Pool)&lt;br&gt;&#xA;517: Time Machine&lt;br&gt;&#xA;515: USB Drive&lt;/li&gt;&#xA;&lt;li&gt;Icon (Data) - Again this is Hex but if you have a hex editor (such as &lt;a href=&#34;http://ridiculousfish.com/hexfiend/&#34;&gt;Hex Fiend&lt;/a&gt;) but is the form &amp;ldquo;ImgR? SYSL fldr&amp;rdquo; (Default Finder Folder icon) with two fields separating each section. The default for a server icon is: 496d6752 0000001c 00000000 5359534c 00000010 00000000 73727672&lt;/li&gt;&#xA;&lt;li&gt;Visibility (string)(optional) - Can be NeverVisible or AlwaysVisible. In this case we want AlwaysVisible.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;My big issue in not being able to figure it out was that I couldn&amp;rsquo;t figure out through research how to write the necessary alias data that is being looked for by com.apple.sidebarlists.plist . &lt;a href=&#34;http://www.nntp.perl.org/group/perl.macosx/2007/10/msg10484.html&#34;&gt;James Reynolds&lt;/a&gt; created the &lt;a href=&#34;http://firebolt.scl.utah.edu/public/dockit/dockit.c&#34;&gt;dockit.c&lt;/a&gt; program. Tweaking the program so it&amp;rsquo;s start and end points only included the CFURLAlias data (329 and 326 respectively) gave me the base64 encoded information that you see when editing an XML version of the Dock or Sidebarlists plists - but using PlistBuddy to input the information did no good.&lt;/p&gt;&#xA;&lt;p&gt;So what I ended up doing instead was to use one computer to mount all the possible shares put them in the sidebar (since they&amp;rsquo;re hidden when not mounted it&amp;rsquo;s fine having shares that wouldn&amp;rsquo;t even be mounted) and then push out the changes via MCX. It&amp;rsquo;s not perfect but it works and it will make finding the shares much easier. I&amp;rsquo;m hoping this entry helps someone else on their search for getting such a script created.&lt;/p&gt;&#xA;&lt;p&gt;Thanks to the following places for information:&lt;br&gt;&#xA;&lt;a href=&#34;http://www.cocoadev.com/index.pl?SideBarContent&#34;&gt;CocoaDev&lt;/a&gt; (note: The Alias data when viewed in an xml plist is base64 encoded - but not in Property List Editor)&lt;br&gt;&#xA;&lt;a href=&#34;http://www.jeremyforpresident.com/archives/38&#34;&gt;JeremyForPresident&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.macosxhints.com/article.php?story=20071117055841714&#34;&gt;MacOSXHints&lt;/a&gt;&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Tethering your iPhone : Experiences</title>
      <link>https://chealion.ca/blog/tethering-your-iphone-experiences/</link>
      <pubDate>Sat, 25 Oct 2008 17:20:41 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/tethering-your-iphone-experiences/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update: Nov. 17th, 2008&lt;/strong&gt; - PDANet 1.4.0 allows VPN access, however at first look it doesn&amp;rsquo;t work correctly with VPN Tracker 5.&lt;/p&gt;&#xA;&lt;p&gt;One of the biggest benefits of my iPhone that I&amp;rsquo;ve been waiting vainly to try was the ability to tether my iPhone to my laptop so I could access the net from anywhere in case of an emergency - whether it be a server at work or a life or death flash video that isn&amp;rsquo;t on YouTube. It&amp;rsquo;s also very worthwhile to note that this will suck your iPhone&amp;rsquo;s battery faster than anyone would like - for me it lasts about 2.5 hours as both the WiFi and 3G antennae are in heavy use.&lt;/p&gt;&#xA;&lt;p&gt;It should be noted that all the present options require jailbreaking your iPhone which is not without its caveats and primarily a reason I want an official solution simply because  if Apple breaks the jailbreak during an upgrade you&amp;rsquo;re forced to wait for the &lt;a href=&#34;http://blog.iphone-dev.org/&#34;&gt;iPhone dev team&lt;/a&gt; (it&amp;rsquo;s amazing the work they&amp;rsquo;ve done) to be able to get a patch out so they can still jailbreak themselves. The good news on this front is the current jailbreak they have is quite resilient as the current jailbreak method they are using can&amp;rsquo;t be fixed with software. (Although iTunes 8 does look for jailbroken ipsws and tries to stop them). For more details on the jailbreaking process I recommend checking out the &lt;a href=&#34;http://blog.iphone-dev.org/&#34;&gt;iPhone Dev Team&amp;rsquo;s Blog&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;pdanet-133&#34;&gt;PDANet 1.3.3&lt;/h3&gt;&#xA;&lt;p&gt;By June Fabrics PDA Technology Group&lt;br&gt;&#xA;&lt;a href=&#34;http://www.junefabrics.com/iphone/index.php&#34;&gt;Homepage&lt;/a&gt; | Available through Cydia&lt;/p&gt;&#xA;&lt;p&gt;Pros:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Very easy to use&lt;/li&gt;&#xA;&lt;li&gt;Very little setup - only need to have the iPhone connect to your laptop&amp;rsquo;s created wireless network&lt;/li&gt;&#xA;&lt;li&gt;Keeps working even after the iPhone&amp;rsquo;s screen has turned off.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Does not work with VPN (deal breaker) - IPSec Passthrough does not work&lt;/li&gt;&#xA;&lt;li&gt;Some Terminal commands do not work - eg. can not ping&lt;/li&gt;&#xA;&lt;li&gt;Can not use your iPhone for anything else without disrupting connectivity.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;using-ssh-and-socks&#34;&gt;Using ssh and SOCKS&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://lifehacker.com/software/feature/use-your-iphones-internet-connection-on-your-laptop-327066.php?mail2=true&#34;&gt;Sample Instructions&lt;/a&gt; | Requires OpenSSH to be installed on your iPhone&lt;br&gt;&#xA;Linked are some instructions on how to do this - I&amp;rsquo;ve done this before as a poor man&amp;rsquo;s VPN before so it was straightforward.&lt;/p&gt;&#xA;&lt;p&gt;Pros:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Easy setup (as OpenSSH is installed by default when jailbreaking now)&lt;/li&gt;&#xA;&lt;li&gt;Keeps working even after the iPhone&amp;rsquo;s screen has turned off. Not 100% reliable though.&lt;/li&gt;&#xA;&lt;li&gt;You can still use your iPhone&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;For those unfamiliar or comfortable with the Terminal it may be a bit confusing.&lt;/li&gt;&#xA;&lt;li&gt;Does not work with VPN (deal breaker) - IPSec Passthrough does not work&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;3proxy&#34;&gt;3proxy&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://cre.ations.net/blog/post/how-to-tether-your-iphone-3g-and-browse-the-web-using-your-3g-co&#34;&gt;Sample Instructions&lt;/a&gt; | Available via Cydia&lt;/p&gt;&#xA;&lt;p&gt;Very similar to simply using the ssh setup - but uses 169.254.x.x and port 1080 for your SOCKS Proxy.&lt;/p&gt;&#xA;&lt;p&gt;Pros:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It works&lt;/li&gt;&#xA;&lt;li&gt;Can still use your iPhone&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Requires more setup (downloading and installing 3proxy).&lt;/li&gt;&#xA;&lt;li&gt;Requires use of Mobile Terminal. The instructions require force quitting Mobile Terminal, but if you added a &amp;amp; at the end of the command you could then run jobs -p when you want to quit, see the process id and type kill PID (where PID is that number that jobs -p gave you).&lt;/li&gt;&#xA;&lt;li&gt;Does not work with VPN - IPSec Passthrough does not work&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;iphonemodem-zsrelay&#34;&gt;iPhoneModem zsrelay&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.iphonemodem.de/en/index.html&#34;&gt;Homepage&lt;/a&gt; | Part a download for OS X (or use PuTTY on Windows) and part iPhone app on Cydia.&lt;/p&gt;&#xA;&lt;p&gt;Note: There is another iPhoneModem application by Addition that exists that costs $9.99 and as far as I can tell has nothing to offer that the free options here don&amp;rsquo;t have.&lt;/p&gt;&#xA;&lt;p&gt;The Mac application side is only required if you&amp;rsquo;d like to secure the connection between your computer and the iPhone. It will use ssh to secure the connection between the two to start and then puts WEP on the ad-hoc network created as well to help discourage anybody jumping on to the network. (WEP may not be secure but the network I really doubt is going to be around for longer than a brief period of time).&lt;/p&gt;&#xA;&lt;p&gt;Pros:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Nicest setup&lt;/li&gt;&#xA;&lt;li&gt;You can still use your iPhone&lt;/li&gt;&#xA;&lt;li&gt;Secure connection between your computer and the iPhone&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Harder setup in comparison to other options&lt;/li&gt;&#xA;&lt;li&gt;Advanced Settings on the iPhone has a download counter that appears to reset whenever you leave that page but updates properly once more data is used.&lt;/li&gt;&#xA;&lt;li&gt;As with all these options that just use proxies - VPN (IPSec) is not allowed over SOCKS.&lt;/li&gt;&#xA;&lt;li&gt;Slow setup - and more involved.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;netshare&#34;&gt;NetShare&lt;/h3&gt;&#xA;&lt;p&gt;The original tethering application that was available on the App Store. I opted to not try and install NetShare on my iPhone because even though it&amp;rsquo;s not publicly available to buy anymore it&amp;rsquo;s still illegal.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusions&#34;&gt;Conclusions&lt;/h3&gt;&#xA;&lt;p&gt;Of the options available iPhoneModem zsrelay is the nicest setup with a good mix of security, ease of use and other features however the easiest to set up and use is hands down PDANet. The unfortunate portion for me is that none of them will allow me to use VPN Tracker to connect to the VPN server at work. Personally I&amp;rsquo;ll stick with PDANet as it&amp;rsquo;s the least invasive&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Venus T5 : Benchmarks (ZFS versus Hardware RAID)</title>
      <link>https://chealion.ca/blog/venus-t5-benchmarks-zfs-versus-hardware-raid/</link>
      <pubDate>Mon, 20 Oct 2008 14:02:16 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/venus-t5-benchmarks-zfs-versus-hardware-raid/</guid>
      <description>&lt;p&gt;After trying out ZFS on a handful of fitful USB keys I pulled out the AMS Venus T5 a 5 drive SATA RAID enclosure with an eSATA port for plugging into the computer. The Venus T5 was outfitted with 5 x 7200RPM 1TB Seagate Drives for the test. I was curious as to what the difference would be&lt;/p&gt;&#xA;&lt;p&gt;RAID 0 setting has them all striped together. The Single Drive results are an average from all 5 drives. To keep in with the previous post I still used date +%s for the timings instead of using the more accurate time command.&lt;/p&gt;&#xA;&lt;p&gt;Standard Test (5 cycles):&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;tr&gt;&lt;th width=&#34;250px;&#34;&gt;&lt;/th&gt;&lt;th width=&#34;100px;&#34;&gt;Single Drive&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;Hardware RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;Software RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;ZFS&lt;/th&gt;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Sequential Read Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;71.542&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;68.170&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;66.358&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;678.275&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Sequential Write Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;63.107&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;68.043&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;64.925&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;338.702&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Random Read Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;17.203&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;21.308&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;28.053&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;276.802&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Random Write Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;29.525&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;29.634&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;46.104&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;505.464&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Extended Test (5 cycles):&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;tr&gt;&lt;th width=&#34;250px;&#34;&gt;&lt;/th&gt;&lt;th width=&#34;100px;&#34;&gt;Single Drive&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;Hardware RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;Software RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;ZFS&lt;/th&gt;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Read Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;100.501&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;113.045&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;125.893&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;248.304&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Write Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;90.517&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;97.360&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;101.469&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;299.403&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;Speeds in MB/sec&#xA;&lt;p&gt;As seen in the ZFS test on the USB keys it&amp;rsquo;s quite obvious that QuickBench 4.0 is useless in benchmarking a ZFS formatted drive in comparison to other formatted drives. ZFS isn&amp;rsquo;t supported so it isn&amp;rsquo;t surprising.&lt;/p&gt;&#xA;&lt;p&gt;As a continuation of a more consistent test we then copied a 903MB file (Xcode 2.5) and a folder of of 1500 0 byte files numerically named.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;date +%s; cp ~/Desktop/SpeedTest/xcode.dmg DESTINATION; date +%s;&#xA;cp ~/Desktop/SpeedTest/*.txt DESTINATION; date +%s&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;tr&gt;&lt;th width=&#34;250px;&#34;&gt;&lt;/th&gt;&lt;th width=&#34;100px;&#34;&gt;Single Drive&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;Hardware RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;Software RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;ZFS&lt;/th&gt;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Large File Time:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0:36 (~25MB/sec)&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0:31 (~29MB/sec)&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0:29 (~31MB/sec)&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0:41 (~22MB/sec)&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Small File Time:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0:01&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;&amp;lt;0:01&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;&amp;lt;0:01&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;&amp;lt;0:01&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;Measured in seconds. 5 trials, highest and lowest scores dropped and remaining 3 trials averaged.&#xA;&lt;p&gt;With much better hardware the actual throughput information is a lot more interesting.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Messing with USB Keys: ZFS Fun and Shenanigans</title>
      <link>https://chealion.ca/blog/messing-with-usb-keys-zfs-fun-and-shenanigans/</link>
      <pubDate>Wed, 15 Oct 2008 17:20:10 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/messing-with-usb-keys-zfs-fun-and-shenanigans/</guid>
      <description>&lt;p&gt;In the quest to sate my curiosity of the viability of ZFS for replacing hardware RAIDs I gathered a few extra USB keys that were lying around my office in hopes to see just how much of a difference in terms of numbers one can find between a single USB key, a software RAIDed set and the new Zettabyte file system (ZFS) that will be more predominantly shown in Snow Leopard.&lt;/p&gt;&#xA;&lt;p&gt;I used two identical Kingston DataTraveler 2.0 Media DTI/1GB keys. Key 1 reports 980MB, whereas Key 2 reports 984MB. I had originally 4 keys lined up to use, but the two other keys I had would not format. I am unsure why there is such a difference in reported size, and the two keys that wouldn&amp;rsquo;t format would both report 970MB.&lt;/p&gt;&#xA;&lt;p&gt;Because ZFS is a software RAID I was comparing it to the software RAIDs created by Apple&amp;rsquo;s Disk Utility (Version 11.1 in Mac OS X Leopard 10.5.5). The ZFS installation was the 119 release that was put on &lt;a href=&#34;http://macosforge.org&#34;&gt;MacOSForge&lt;/a&gt; on July 23rd, 2008 and is still very much under development as the Mac OS X port isn&amp;rsquo;t even complete yet.&lt;/p&gt;&#xA;&lt;p&gt;All test performed using QuickBench&amp;rsquo;s Standard Test, which is a test that transfers several small files ranging from 4KB to 1MB:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;tr&gt;&lt;th width=&#34;250px;&#34;&gt;&lt;/th&gt;&lt;th width=&#34;100px;&#34;&gt;Single Drive&lt;/th&gt;&lt;th width=&#34;100px;&#34;&gt;RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;RAID 1&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;RAID &lt;br /&gt;Concatenation&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;ZFS&lt;/th&gt;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Sequential Read Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;11.394&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;18.487&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;11.556&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;11.024&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;360.927&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Sequential Write Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;3.386&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;6.090&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;3.431&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;3.750&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;258.036&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Random Read Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;11.159&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;18.167&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;11.416&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;10.963&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;220.398&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Random Write Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0.741&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0.593&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0.608&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0.637&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;423.246&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;All speeds in MB/sec&#xA;&lt;p&gt;Given the insane speed increase seen by ZFS (which I assume is greatly improved by it&amp;rsquo;s ability to use compression reducing the amount of I/O work) which makes the test sound horribly flawed I redid the test using the Extended Test in QuickBench 4.0.&lt;/p&gt;&#xA;&lt;p&gt;Extended Test (20-100MB)&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;tr&gt;&lt;th width=&#34;250px;&#34;&gt;&lt;/th&gt;&lt;th width=&#34;100px;&#34;&gt;Single Drive&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;ZFS&lt;/th&gt;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Read Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;13.892&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;27.288&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;65.964&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Write Speed:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;5.396&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;9.954&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;202.043&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;In this second test we were again getting wildly fast results that didn&amp;rsquo;t fit with reality - the files divisible by 30 were wildly faster than any other result.&lt;/p&gt;&#xA;&lt;p&gt;Lastly a very simple copy using the command line copy:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;date +%s; cp ~/Desktop/Reverie_Final_Cut2_midres.m4v DESTINATION; date +%s&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;As a baseline a simply copy on my 5400RPM drive in the MacBook Pro this was done on takes 11 seconds.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;tr&gt;&lt;th width=&#34;250px;&#34;&gt;&lt;/th&gt;&lt;th width=&#34;100px;&#34;&gt;Single Drive&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;ZFS&lt;/th&gt;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Time (seconds):&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;37&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;22&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;11&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;Measured in seconds. 3 trials averaged.&#xA;&lt;p&gt;Caveats: The RAID 1 copy trials ranged from 13 seconds (subsequent trials) to as much as 39 seconds (the first copy). While ZFS was 11 seconds each and every time. Also the commands used are going to be imprecise - if I wanted it to be more accurate instead of easily out by as much as 1 second I would have used the time command.&lt;/p&gt;&#xA;&lt;p&gt;As a continuation of a more consistent test we then copied a 903MB file (Xcode 2.5) and a folder of of 1500 0 byte files numerically named.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;date +%s; cp ~/Desktop/SpeedTest/xcode.dmg DESTINATION; date +%s;&#xA;cp ~/Desktop/SpeedTest/*.txt DESTINATION; date +%s&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;tr&gt;&lt;th width=&#34;250px;&#34;&gt;&lt;/th&gt;&lt;th width=&#34;100px;&#34;&gt;Single Drive&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;RAID 0&lt;/th&gt;&lt;th width=&#34;100px&#34;&gt;ZFS&lt;/th&gt;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Large File Time:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;4:13&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;2:40&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;3:10&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;tr&gt;&lt;td&gt;Small File Time:&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0:03&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0:01&lt;/td&gt;&#xA;&#x9;&#x9;&lt;td&gt;0:01&lt;/td&gt;&#xA;&#x9;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;Measured in seconds. 3 trials averaged.&#xA;&lt;p&gt;So what does this all mean? From the first two tests we can see that ZFS does improve throughput but our standard QuickBench tests aren&amp;rsquo;t any help of determining how much because of ZFS&amp;rsquo; difference in dealing with files giving us consistent odd results. The more practical test of copying an H.264 file and the large file with many small files gave us inconsistent results. There isn&amp;rsquo;t anything concrete in my non-scientific results but I&amp;rsquo;m looking forward to Snow Leopard being released and ZFS becoming a full fledged filesystem citizen in the Mac OS - if only because with maturity ZFS might be a faster option for a RAID system.&lt;/p&gt;&#xA;&lt;p&gt;Tomorrow the same file copying tests will be performed on a 5TB RAID connected to the computer via eSATA for kicks.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>LaunchBar Snippets</title>
      <link>https://chealion.ca/blog/launchbar-snippets/</link>
      <pubDate>Tue, 14 Oct 2008 17:06:03 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/launchbar-snippets/</guid>
      <description>&lt;p&gt;One of the very first programs I install on any machine I will be spending a good deal of time on is LaunchBar. I am a self confessed LaunchBar whore because of the amount of time it saves me from going down to the Dock or having to find the Applications folder to launch Applications on top of being able to calculate, do web searches and manipulate files just from a few keystrokes.&lt;/p&gt;&#xA;&lt;p&gt;Here are three snippets I&amp;rsquo;ve added to my LaunchBar configuration that make my life a bit easier:&lt;/p&gt;&#xA;&lt;p&gt;Add /Library/CoreServices as a folder to search - it means you can access applications like Screen Sharing and a few other lesser known applications without digging.&lt;/p&gt;&#xA;&lt;p&gt;Searching Apple Mailing Lists:&#xA;&lt;a href=&#34;http://search.lists.apple.com/?q=&#34;&gt;http://search.lists.apple.com/?q=&lt;/a&gt;*&amp;amp;cmd=Search%21&amp;amp;form=extended&amp;amp;m=all&amp;amp;ps=50&amp;amp;fmt=long&amp;amp;wm=wrd&amp;amp;wf=2221&amp;amp;sp=1&amp;amp;ul=&lt;/p&gt;&#xA;&lt;p&gt;LargeText:&#xA;x-launchbar:large-type?string=*&lt;/p&gt;&#xA;&lt;p&gt;Lastly a couple other tips that I keep running up against:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;** allows you to do powers of in the calculator. Not ^.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;If you consistently misspell something (eg. LIHGR instead of LIGHR for Lightroom) you can set the abbreviation by typing in something that does bring up the file or application and then press Command-Option-A (Select-&amp;gt;Assign Abbreviation with the mouse) and then type in the misspell that you keep typing.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;</description>
    </item>
    
    <item>
      <title>build_hd_index</title>
      <link>https://chealion.ca/blog/build_hd_index/</link>
      <pubDate>Sat, 27 Sep 2008 00:58:07 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/build_hd_index/</guid>
      <description>&lt;p&gt;I came across a process running on my iMac at home tonight that was consuming a fair chunk of RAM, and a consistent 40-50% of my CPU while accessing each and every hard drive I have hooked up. The process in question is called build_hd_index and is part of Apple&amp;rsquo;s built in Remote Management software in OS X.&lt;/p&gt;&#xA;&lt;p&gt;The specific file can be found in /System/Library/CoreServices/RemoteManagement/ as part of ARDAgent.app (ARDAgent.app/ Contents/Support/build_hd_index) and is used by the program (Apple Remote Desktop Agent) to build user and applications reports to be sent back to Remote Desktop Admin (an Apple program for managing multiple computers that is awesome). The reason this was even turned on was that as part of an attempt to get a VPN server working I added my home computer to Remote Desktop Admin on my work computer. By default (as it&amp;rsquo;s set in my preferences and I believe always default) it will gather reports on certain data which run at midnight in order to cache the data on the computer running Remote Desktop Admin so you don&amp;rsquo;t have to requery such information every time you wish to look at it.&lt;/p&gt;&#xA;&lt;p&gt;A quick Google search on &lt;a href=&#34;http://www.google.com/search?q=build_hd_index&amp;amp;ie=ISO-8859-1&amp;amp;oe=ISO-8859-1&#34;&gt;build_hd_index&lt;/a&gt; showed several other people having issues with it suggesting ways to neuter the process (which would break System updates) or other attempts to disable it.&lt;/p&gt;&#xA;&lt;p&gt;To turn it off, on every computer running Remote Desktop Admin you need to tell it to stop collecting data (Get Info on the computer) or you can force this by removing the plist file in charge of ARDAgent at /Library/Preferences/com.apple.ARDAgent.plist . More of this is covered in detail in &lt;a href=&#34;http://support.apple.com/kb/HT1088&#34;&gt;Apple&amp;rsquo;s KBase article&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;So as of a result, since my work computer is a laptop and is not on, let alone at work at midnight I&amp;rsquo;ve turned off uploading information at scheduled intervals - however I still want my work computers to cache the data as the information is useful to debugging why something may be happening.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>WebKit Nightly Update Script</title>
      <link>https://chealion.ca/blog/webkit-nightly-update-script/</link>
      <pubDate>Thu, 25 Sep 2008 04:15:23 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/webkit-nightly-update-script/</guid>
      <description>&lt;p&gt;This is a repost of a much older post that was lost when I transitioned from Moveable Type 3 to 4.&lt;/p&gt;&#xA;&lt;p&gt;I personally like using WebKit nightlies as my main browser as it&amp;rsquo;s more or less Safari with a better, faster, and much more current rendering engine underneath it. That and the gold logo looks much better than the silver. It does have bugs occasionally (for example I was unable to post comments to Flickr with WebKit nightlies for a couple weeks) but all in all the experience is very positive. This is the script I use to keep WebKit updated whenever it bugs me for an update. I use an alias in my .bashrc file so I can just type &amp;lsquo;wkupdate&amp;rsquo; to run the shell script. The best part is that if I copy it and I&amp;rsquo;m still using the program the changes won&amp;rsquo;t take effect until I restart but it allows me to copy it still. (Not advisable however)&lt;/p&gt;&#xA;&lt;pre lang=&#34;bash&#34;&gt;&#xA;#! /bin/bash&#xA;&#xA;#Find current revision&#xA;currentRevision=`cat /Applications/WebKit.app/Contents/Resources/VERSION`&#xA;&#xA;#Get address&#xA;#Download start page and find address&#xA;address=`curl -s http://nightly.webkit.org/start/trunk/$currentRevision | grep &#39;WebKit-SVN-r[0-9]*&#39; -o | head -n 1`&#xA;&#xA;#Abort if there is no update&#xA;if [ &#34;$address&#34; == &#34;&#34; ]&#xA;then&#xA;&#x9;echo &#34;There is no update for WebKit available&#34;&#xA;&#x9;exit&#xA;fi&#xA;&#xA;#Append download address&#xA;address=&#39;http://nightly.webkit.org/files/trunk/mac/&#39;${address}&#39;.dmg&#39;&#xA;&#xA;echo &#34;Downloading... $address&#34;&#xA;curl -s $address -o /tmp/WebKit.dmg&#xA;#Mount Image&#xA;hdid -readonly -quiet /tmp/WebKit.dmg&#xA;&#xA;echo &#34;Copying...&#34;&#xA;#Copy to Applications&#xA;revision=`cat /Volumes/WebKit/WebKit.app/Contents/Resources/VERSION`&#xA;&#xA;cp -RfL /Volumes/WebKit/* /Applications/ 2&gt;/dev/null&#xA;ls /Volumes/WebKit/&#xA;&#xA;echo &#34;Cleaning up...&#34;&#xA;#Clean up&#xA;hdiutil detach /Volumes/WebKit/ -quiet&#xA;rm -rf /tmp/WebKit.dmg&#xA;&#xA;echo &#34;Finished. (r$revision)&#34;&#xA;&lt;/pre&gt;&#xA;&lt;p&gt;EDIT: Updated 12/30/08 - Fixed URL check. Realistically you should be looking for the latest source at the link below:&lt;/p&gt;&#xA;&lt;p&gt;As always this script can be found in my &lt;a href=&#34;http://github.com/Chealion/chealion&#34;&gt;git repository&lt;/a&gt; on &lt;a href=&#34;http://github.com&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Opening/Copying Locked DVDs</title>
      <link>https://chealion.ca/blog/openingcopying-locked-dvds/</link>
      <pubDate>Tue, 09 Sep 2008 17:56:15 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/openingcopying-locked-dvds/</guid>
      <description>&lt;p&gt;At work we sometimes receive DVDs that we need footage off of that are locked. They will play back fine in DVD Player but we don&amp;rsquo;t want it for playback. The resulting DVD images are always titled SONATA_VOLUME and are created by a stand alone Sony DVD Recorder.&lt;/p&gt;&#xA;&lt;p&gt;In order to copy the VIDEO_TS file off of the DVD you require sudo access but given that sudo access is limited to administrators (and not the editors) - this gets to be a bit of hassle because I have to be called to copy the DVD which adds unnecessary overhead to just get some footage off a simple DVD.&lt;/p&gt;&#xA;&lt;p&gt;The solution? Create a droplet application (in this case AppleScript with shell scripts) so the editors don&amp;rsquo;t have to disrupt their workflow to get me to unlock the footage they need.&lt;/p&gt;&#xA;&lt;p&gt;The source follows:&lt;/p&gt;&#xA;&lt;pre lang=&#34;applescript&#34;&gt;&#xA;(* Files dropped onto the application will be copied to the root folder&#xA;of the main hard drive and set so the user has ownership - allowing &#xA;them to move, rename and delete said file/folder. *)&#xA;on open files_&#xA;&#x9;repeat with file_ in files_&#xA;&#x9;&#x9;--Get name of file, path, and the current username of editor&#xA;&#x9;&#x9;set name_ to name of (info for file_)&#xA;&#x9;&#x9;set file_ to POSIX path of file_&#xA;&#x9;&#x9;set username_ to short user name of (system info)&#xA;&#x9;&#x9;(* The 3 shell commands here can be condensed into one longer line&#xA;&#x9;&#x9;&#x9;but I left them separate for debugging and readability reasons&#xA;&#x9;&#x9;*)&#xA;&#x9;&#x9;do shell script &#34;/bin/cp -R &#34; &amp; quoted form of file_ &amp; &#34; /&#34; &amp; quoted form of name_ user name &#34;ADMIN_USER_NAME&#34; password &#34;PASSWORD&#34; with administrator privileges&#xA;&#x9;&#x9;do shell script &#34;/bin/chmod -R 777 /&#34; &amp; quoted form of name_ user name &#34;ADMIN_USER_NAME&#34; password &#34;PASSWORD&#34;&#34; with administrator privileges&#xA;&#x9;&#x9;do shell script &#34;/usr/sbin/chown -R &#34; &amp; username_ &amp; &#34; /&#34; &amp; quoted form of name_ user name &#34;ADMIN_USER_NAME&#34; password &#34;PASSWORD&#34;smoke@#$&#34; with administrator privileges&#xA;&#x9;&#x9;do shell script &#34;open /&#34;&#xA;&#x9;end repeat&#xA;end open&#xA;&lt;/pre&gt;&#xA;</description>
    </item>
    
    <item>
      <title>The Move To WordPress</title>
      <link>https://chealion.ca/blog/the-move-to-wordpress/</link>
      <pubDate>Sat, 30 Aug 2008 23:20:16 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/the-move-to-wordpress/</guid>
      <description>&lt;p&gt;After much (okay very little) persuasion from &lt;a href=&#34;http://stretched.ca&#34;&gt;Matt&lt;/a&gt; and coincidentally a well written &lt;a href=&#34;http://stretched.ca/2008/08/29/how-stretched-runs-wordpress-and-the-various-plug-ins/&#34;&gt;breakdown&lt;/a&gt; on how he has set up his WordPress installation I&amp;rsquo;ve pulled the trigger and installed WordPress. The installation replaces my &lt;a href=&#34;http://moveabletype.com&#34;&gt;MT4.1&lt;/a&gt; installation that languished under the wait for me to find some time to design the new blog and accompanying photo blog on &lt;a href=&#34;http://mcjones.ca&#34;&gt;mcjones.ca&lt;/a&gt;. I had even got so far I had it written it out and sketched in a notebook. Finding the time to sit down and actually code it however never came to pass as when I did make time it was the last thing I felt like doing.&lt;/p&gt;&#xA;&lt;p&gt;So please bear with some minor growing pains as I decide and modify a theme for WordPress - I&amp;rsquo;d still love to go with the design I made but since that is never going to come to fruition I should move and start creating articles that interest me.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>kCFErrorDomainCFNetwork: 302</title>
      <link>https://chealion.ca/blog/kcferrordomaincfnetwork-302/</link>
      <pubDate>Thu, 10 Jul 2008 23:27:08 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/kcferrordomaincfnetwork-302/</guid>
      <description>&lt;p&gt;After seeing this error popping up a lot while having issues with my internet connection dropping packets left and right I searched CFNetworkErrors.h for what the error code meant (since Google didn’t say much other than it appeared in 10.5.3). The line in question is: kCFErrorHTTPConnectionLost = 302,&lt;/p&gt;&#xA;&lt;p&gt;So if you get kCFErrorDomainCFNetwork: 302 errors, it’s because the HTTP connection was lost somewhere along the way. As to what causes it can really definitely seem like voodoo.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>Tab Count to Growl for Safari</title>
      <link>https://chealion.ca/blog/tab-count-to-growl-for-safari/</link>
      <pubDate>Tue, 17 Jun 2008 20:50:41 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/tab-count-to-growl-for-safari/</guid>
      <description>&lt;p&gt;The following AppleScript snippet figures out how many tabs are open in the frontmost window and spits it out to Growl. Helps when I don’t feel like counting how many tabs I’ve opened in WebKit/Safari. Note: To get this to work with Safari change WebKit to Safari.&lt;/p&gt;&#xA;&lt;pre lang=&#34;applescript&#34;&gt;&#xD;&#xA;tell application &#34;WebKit&#34;&#xD;&#xA;    activate&#xD;&#xA;    set numtabs to index of last tab of front window&#xD;&#xA;    tell application &#34;GrowlHelperApp&#34;&#xD;&#xA;        set the allNotificationsList to {&#34;Number of Tabs&#34;}&#xD;&#xA;        set the enabledNotificationsList to {&#34;Number of Tabs&#34;}&#xD;&#xA;        register as application &#34;Growl AppleScript Sample&#34; all notifications allNotificationsList default notifications enabledNotificationsList icon of application &#34;WebKit&#34;&#xD;&#xA;&#xD;&#xA;        notify with name &#34;Number of Tabs&#34; title &#34;Number of Tabs&#34; description &#34;&#34; &amp; numtabs application name &#34;Growl AppleScript Sample&#34;&#xD;&#xA;    end tell&#xD;&#xA;end tell&#xD;&#xA;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>launchd Caveats: StartCalendarInterval and Sleeping</title>
      <link>https://chealion.ca/blog/launchd-caveats-startcalendarinterval-and-sleeping/</link>
      <pubDate>Tue, 27 Mar 2007 12:00:00 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/launchd-caveats-startcalendarinterval-and-sleeping/</guid>
      <description> &lt;p&gt;After a couple hours of testing, and searching on Google I&amp;#8217;ve come to the realization (and subsequent confirmation) that the reason my launchd periodic task doesn&amp;#8217;t always run on time (but sometimes hours late) is that the process is tied to a timer and not a specific time of the day like you specify in the plist.&lt;/p&gt;&#xA;&lt;p&gt;So if your computer is asleep for 3 hours, the process will run 3 hours later unless you restart your computer which will fix the timer issue, until the next time you sleep.&lt;/p&gt;&#xA;&lt;p&gt;I really hope this is fixed in Leopard, and have subsequently filed a bug report. (&lt;a href=&#34;rdar://problem/5091911&#34;&gt;Radar 5091911&lt;/a&gt; - link will only work for Apple employees)&lt;/p&gt;&#xA;&lt;p&gt;So in summary, don&amp;#8217;t depend on StartCalendarInterval to run your launchd process at the time you&amp;#8217;ve said unless you know the computer has restarted since the last time it was put to sleep.&lt;/p&gt;&#xA;&lt;p&gt;Note: This was fixed in Leopard. Unsure if it was fixed in 10.4.11 as I don&amp;rsquo;t use Tiger anymore.&lt;/p&gt;&#xA;</description>
    </item>
    
    <item>
      <title>launchd : cron with less suck?</title>
      <link>https://chealion.ca/blog/launchd-cron-with-less-suck/</link>
      <pubDate>Tue, 20 Mar 2007 12:00:00 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/launchd-cron-with-less-suck/</guid>
      <description>&lt;p&gt;So while figuring out launchd I came across the revelation that launchd will run any tasks it is given at it&amp;#8217;s prescribed time, or the next time available (eg. the computer is asleep or turned off). I now remember hearing that when 10.4 Tiger was first released but had completely forgot it. Since Apple has the periodic tasks running in launchd instead of cron in Tiger, this makes the often touted reason to run Onyx moot and useless.&lt;/p&gt;&#xA;&lt;p&gt;The system runs the scripts when it can (when it&amp;#8217;s supposed to, or when you turn your computer on next), and doesn&amp;#8217;t just &amp;#8220;not run them&amp;#8221; as cron would.&lt;/p&gt;&#xA;&lt;p&gt;Running the periodic scripts sounds just as helpful as &amp;#8220;Repairing Permissions&amp;#8221; now, but I may be underestimating the value of the &lt;a href=&#34;http://en.wikipedia.org/wiki/Placebo&#34;&gt;placebo effect&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Source: &lt;a href=&#34;http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html&#34;&gt;man launchd.plist&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&#xA;  StartCalendarInterval &amp;lt;dictionary of integers&amp;gt;&#xA;  &#xA;  This optional key causes the job to be started every calendar interval as&#xA;  specified. Missing arguments are considered to be wildcard. The semantics are much&#xA;  like crontab(5).  &#xA;  &lt;strong&gt;Unlike cron which skips job invocations when the computer is asleep, launchd will start the job the next time the computer wakes up.&lt;/strong&gt;   &#xA;  If multiple intervals transpire before the computer is woken, those events will be&#xA;  coalesced into one event upon wake from sleep.&#xA;&lt;/pre&gt;&#xA;&lt;p&gt;So for replacing cron? launchd kicks ass. I&amp;#8217;m disappointed it took me until 10.4.9&amp;#8217;s release for me to truly start finding out the power of launchd.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Carnarvon Lake</title>
      <link>https://chealion.ca/blog/carnarvon-lake/</link>
      <pubDate>Mon, 14 Aug 2006 00:00:00 +0000</pubDate><author>chealion@chealion.ca (Micheal Jones)</author>
      <guid>https://chealion.ca/blog/carnarvon-lake/</guid>
      <description>&lt;p&gt;Note: Pictures so far are only on Flickr: &lt;a href=&#34;http://www.flickr.com/photos/chealion/sets/72157594236560980/&#34;&gt;Carnarvon Lake Set&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&#xA;&lt;p&gt;Having never been backpacking before I wasn&amp;#8217;t sure what to expect when invited for a backpacking trip up to Carnarvon Lake[1] at the Southern tip of Kanasakis Country.&lt;/p&gt;&#xA;&lt;p&gt;Three friends, my brother and I left Calgary around 7:30 AM so we could start our 10K hike in by 10:00 AM or so. Having arrived fine at our parking spot on Cat creek we unloaded and began our hike that would see roughly 500 metres in elevation gain, most in the last 300 metres or so.&lt;/p&gt;&#xA;&lt;p&gt;The hike itself includes 3 creek crossing (one mid thigh, one mid calf and one mid toe.[2]), so a good pair of sandals was recommended. Unfortunately mine sucked and while extremely useful for the crossing caused me to develop 3 blisters on each foot pretty quickly. The joys of being a city boy not used to travelling on cow trails and logging trails.[3]&lt;/p&gt;&#xA;&lt;p&gt;Your first 9 kilometres or so yield some good rolling terrain with a general uphill feel giving good vantage points and a good view as you go around one of the foothills to get to the headwall. The headwall is broken into two sections, with the first section allowing you to follow a couple hundred metre path or do what those who don&amp;#8217;t know about the path; scramble up the &lt;a href=&#34;http://en.wikipedia.org/wiki/Scree&#34;&gt;scree&lt;/a&gt; about 100m.&lt;/p&gt;&#xA;&lt;p&gt;The scramble up the scree took us an hour and wasn&amp;#8217;t fun as you went from safe spot to safe spot trying to stick to any vegetation available. Once we got up to the path it was apparent that the path would have shaved off 50 minutes and saved several litres of sweat from each person. It should be noted that not being protected the wind had picked up and was appreciable keeping the beating sun from overheating us.&lt;/p&gt;&#xA;&lt;p&gt;From there we made our way up the path to the second section where chains have been attached to the rocks to make the scramble up a heck of a lot easier. It&amp;#8217;s possible without the chains, but the chains offer some safety and give you a path to follow. Another 15 minutes climbing rocks we hit the top of the headwall.&lt;/p&gt;&#xA;&lt;p&gt;At this point, I was exhausted and just happy to be at the top so I could get some water and some respite from the climb. Coming over the headwall we faced a hundred kilometre or so wind battering us as the wind came through the 3 valleys behind the lake, across the lake and down into the valley below. Another 15 minute hike around the lake brought us to where we would make camp, on the lee side of a ridge reducing the wind considerably.&lt;/p&gt;&#xA;&lt;p&gt;From there after shedding all our gear and setting up the tents we were able to head to the lake and relax. All in all the 10k hike had taken us about 6 hours, longer then expected largely to the unexpected hour long scramble up the scree. My friend Earl (who was leading us) was right however. The 6 hour hike was definitely worth the view, bot at the headwall and the ridge above the lake which a couple of steps from that was the &lt;a href=&#34;http://en.wikipedia.org/wiki/Continental_Divide&#34;&gt;continental divide&lt;/a&gt; and British Columbia.&lt;/p&gt;&#xA;&lt;p&gt;After getting a few pictures of Mount Armstrong from the ridge we headed back down to get some food (reheat some pasta) and get some sleep.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;#8217;s been a really long time since I&amp;#8217;ve seen stars that bright, but my biggest regret was being as tired as I was, I didn&amp;#8217;t see much.&lt;/p&gt;&#xA;&lt;p&gt;The following morning we immediately headed to the headwall to get some shots of the valley below before the cloud cover burned off and the sun rose any higher in the sky. (8:30 AM) Afterwards which we headed back to camp to get some light breakfast ready (jerky and cereal bars). For the next few hours (until 1) we then hiked into BC getting several shots of the Purcells, and heading up one of the mountains checking for an unnamed lake further up.&lt;/p&gt;&#xA;&lt;p&gt;Coming down was much easier then coming up, although the wind was going roughly a hundred again, and giving the lake some really nice looking whitecaps. It only took about 4 and a half hours to get down and back to the car, and in all we saw a total of 11 people or so going up and back down. (A group of three on horseback passed us on the trail to go fishing on the way up, a group of two were there when we arrived fishing, the conservation officer who was using a bike to do the trail, and a group of two we saw on Sunday who hiked up as we were leaving for BC, and hiked down while we ate lunch.)&lt;/p&gt;&#xA;&lt;p&gt;Would I do it again? Yes, but I can&amp;#8217;t do it every weekend. I&amp;#8217;m just not cut out for it. Yet?&#xA;Was it a lot of fun? Yes. If you&amp;#8217;re looking for something a wee bit challenging and know about doing backcountry backpacking it&amp;#8217;s definitely a place to visit.&lt;/p&gt;&#xA;&lt;p&gt;Just take a look at the pictures on Flickr for a more visual idea.&lt;/p&gt;&#xA;&lt;p&gt;1 - It&amp;#8217;s on a trail off the Cat Creek trailhead. &lt;a href=&#34;http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=carnarvon+lake,+alberta&amp;amp;mrt=all&amp;amp;sll=51.052186,-115.715561&amp;amp;sspn=0.344444,0.583649&amp;amp;doflg=ptk&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Carnarvon+Lake&amp;amp;ll=50.373195,-114.812021&amp;amp;spn=0.022526,0.036478&amp;amp;t=h&amp;amp;z=15&amp;amp;iwloc=A&#34;&gt;(Google Maps Link)&lt;/a&gt;&lt;br /&gt;&#xA;2 - Obviously this would be higher if it wasn&amp;#8217;t done in late July. &lt;br /&gt;&#xA;3 - No excuses. I wasn&amp;#8217;t as fit as I thought, but I did it fine.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
