<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dev on Benny Simmonds</title>
    <link>https://www.bencode.io/categories/dev/</link>
    <description>Recent content in Dev on Benny Simmonds</description>
    <generator>Hugo -- 0.149.1</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 12 Dec 2025 08:07:00 +1100</lastBuildDate>
    <atom:link href="https://www.bencode.io/categories/dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Managing multiple SSH GitHub identities</title>
      <link>https://www.bencode.io/posts/multi-ssh/</link>
      <pubDate>Fri, 12 Dec 2025 08:07:00 +1100</pubDate>
      <guid>https://www.bencode.io/posts/multi-ssh/</guid>
      <description>&lt;p&gt;Now I&amp;rsquo;m involved in multiple businesses, I&amp;rsquo;m finding I need to frequently juggle multiple SSH key pairs (aka identities) with &lt;em&gt;choose your favourite git offering&lt;/em&gt; (e.g. GitHub). When I push and pull to origins on the same machine, I need to alternate the identities I use.&lt;/p&gt;
&lt;p&gt;The best approach is to use an &lt;strong&gt;SSH config file&lt;/strong&gt; to define host aliases. This lets you seamlessly use different keys without manually switching anything.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Entity Resolution and the Instability Problem</title>
      <link>https://www.bencode.io/posts/entity/</link>
      <pubDate>Tue, 02 Dec 2025 09:02:00 +1100</pubDate>
      <guid>https://www.bencode.io/posts/entity/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#the-problem&#34;&gt;The Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution-1-make-the-api-recordcentric-not-entitycentric&#34;&gt;Solution 1: Make the API record‑centric, not entity‑centric&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution-2-introduce-your-own-stable-external-entity-id-and-map-it-to-senzing&#34;&gt;Solution 2: Introduce your own &lt;em&gt;stable&lt;/em&gt; external Entity ID and map it to Senzing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#21-public-vs-internal-ids&#34;&gt;2.1. Public vs internal IDs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#22-handling-merges&#34;&gt;2.2. Handling merges&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#23-handling-splits&#34;&gt;2.3. Handling splits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#24-pros--cons&#34;&gt;2.4. Pros / Cons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution-3-provide-an-entity-change-feed-events-for-downstream-sync&#34;&gt;Solution 3: Provide an entity change feed (events) for downstream sync&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#31-why&#34;&gt;3.1. Why?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#32-event-model&#34;&gt;3.2. Event model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution-4-treat-entity-ids-as-ephemeral-handles-with-ttl-semantics&#34;&gt;Solution 4: Treat entity IDs as &lt;em&gt;ephemeral handles&lt;/em&gt; with TTL semantics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#solution-5-eventsourcing--versioned-entities-for-heavy-complianceaudit-usecases&#34;&gt;Solution 5: Event‑sourcing / versioned entities (for heavy compliance/audit use‑cases)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#frankenres&#34;&gt;FrankenRes&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#internals&#34;&gt;Internals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#api-surface&#34;&gt;API surface&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#detecting-splits-and-merges-with-senzing&#34;&gt;Detecting Splits and Merges with Senzing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#what-senzing-actually-provides-the-barebones&#34;&gt;What Senzing actually provides (the barebones)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#minimum-state-you-need-to-track&#34;&gt;Minimum state you need to track&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#robust-per-event-processing-pattern&#34;&gt;Robust per-event processing pattern&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#concurrency-safeguard&#34;&gt;Concurrency safeguard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#split-vs-merge-detection&#34;&gt;Split vs Merge Detection&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#detecting-splits&#34;&gt;Detecting splits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#detecting-merges&#34;&gt;Detecting merges&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#a-simplier-way&#34;&gt;A simplier way&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#senzing-lifecycle-detector-c-implementation&#34;&gt;Senzing Lifecycle Detector C# Implementation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#single-file-example&#34;&gt;Single-file example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#usage&#34;&gt;Usage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tldr&#34;&gt;TL;DR&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-problem&#34;&gt;The Problem&lt;/h2&gt;
&lt;p&gt;The classic entity resolution gotcha: the thing that looks like a primary key (e.g. Senzing&amp;rsquo;s entity ID) is actually a volatile cluster ID that can legitimately change as the engine learns. Senzing explicitly says their resolved entity ID is &lt;strong&gt;not&lt;/strong&gt; a globally unique persistent identifier and that it&amp;rsquo;s just an identifier for a grouping that may be transient. (&lt;a href=&#34;https://senzing.zendesk.com/hc/en-us/articles/4415858978067-How-does-an-Entity-ID-behave&#34; title=&#34;How does an Entity ID behave&#34;&gt;senzing.zendesk.com&lt;/a&gt;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Shadcn UI Quick Reference</title>
      <link>https://www.bencode.io/posts/shadcn/</link>
      <pubDate>Mon, 01 Dec 2025 17:45:00 +1100</pubDate>
      <guid>https://www.bencode.io/posts/shadcn/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#wat&#34;&gt;wat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#componentsjson&#34;&gt;components.json&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-cn-helper&#34;&gt;The &lt;code&gt;cn()&lt;/code&gt; Helper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#globalscss--theming&#34;&gt;globals.css &amp;amp; Theming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#dark-mode&#34;&gt;Dark Mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#dependencies-explained&#34;&gt;Dependencies Explained&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#cva-example&#34;&gt;CVA Example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#blocks-vs-components&#34;&gt;Blocks vs Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#quick-start-workflow&#34;&gt;Quick Start Workflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#forms-with-tanstack--shadcnui&#34;&gt;Forms with TanStack + shadcn/ui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#claude-code--mcp-tips&#34;&gt;Claude Code + MCP Tips&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#essential-commands&#34;&gt;Essential Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#mental-model&#34;&gt;Mental Model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;wat&#34;&gt;wat&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;shadcn/ui is a set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks and AI models. Open Source. Open Code.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;componentsjson&#34;&gt;components.json&lt;/h2&gt;
&lt;p&gt;Controls how CLI installs components, paths, and styling preferences.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI Dev Setup</title>
      <link>https://www.bencode.io/posts/aidev/</link>
      <pubDate>Sat, 18 Oct 2025 15:29:00 +1000</pubDate>
      <guid>https://www.bencode.io/posts/aidev/</guid>
      <description>&lt;p&gt;A place to document how I use AI to assist the development of software.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#context-is-king&#34;&gt;Context Is King&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#token-sizing-guidelines-pebble--boulder&#34;&gt;Token Sizing Guidelines (Pebble → Boulder)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#claude-code&#34;&gt;Claude Code&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#awesome-claude-level-ups&#34;&gt;Awesome Claude Level Ups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#claude-code-cheat-sheet&#34;&gt;Claude Code Cheat Sheet&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#basics&#34;&gt;Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#context-management&#34;&gt;Context Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#miscellaneous&#34;&gt;Miscellaneous&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#caching-codebase-knowledge&#34;&gt;Caching Codebase Knowledge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#claudemd-files-persistent-memory&#34;&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; Files (Persistent Memory)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#api-prompt-caching&#34;&gt;API Prompt Caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#async-subagents&#34;&gt;Async Subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#skills&#34;&gt;Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#plugins&#34;&gt;Plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#hooks&#34;&gt;Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#teleport-sessions&#34;&gt;Teleport Sessions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#general-purpose-context-management&#34;&gt;General Purpose Context Management&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#vibe-rules&#34;&gt;vibe-rules&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;context-is-king&#34;&gt;Context Is King&lt;/h2&gt;
&lt;p&gt;Managing the context window for your model is &lt;strong&gt;the most&lt;/strong&gt; benefitial thing you can do as the human-in-the-loop.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redux</title>
      <link>https://www.bencode.io/posts/redux/</link>
      <pubDate>Wed, 29 Apr 2020 12:04:16 +0000</pubDate>
      <guid>https://www.bencode.io/posts/redux/</guid>
      <description>&lt;p&gt;Once you start working with &lt;a href=&#34;https://www.bencode.io/posts/react/&#34;&gt;React&lt;/a&gt; in anger, there is a tipping point to be aware of where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the complexity of data flows piles up&lt;/li&gt;
&lt;li&gt;the same data is being rendered in multiple places&lt;/li&gt;
&lt;li&gt;the number of state changes blow out&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Being able to tackle these problems in a single place is where Redux fits in.&lt;/p&gt;
&lt;h1 id=&#34;contents&#34;&gt;Contents&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#contents&#34;&gt;Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-problem&#34;&gt;The Problem&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#option-1-lift-the-state&#34;&gt;Option 1 lift the state&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#option-2-react-context&#34;&gt;Option 2 react context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#option-3-redux&#34;&gt;Option 3 Redux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#a-chat-with-redux&#34;&gt;A chat with redux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#container-vs-presentation-components&#34;&gt;Container vs Presentation Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-redux-principles&#34;&gt;The Redux Principles&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#actions&#34;&gt;Actions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-store&#34;&gt;The Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#immutability&#34;&gt;Immutability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#reducers&#34;&gt;Reducers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#react-redux&#34;&gt;React-Redux&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#react-redux-provider&#34;&gt;React-Redux Provider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#react-redux-connect&#34;&gt;React-Redux Connect&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#mapstatetoprops&#34;&gt;mapStateToProps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#mapdispatchtoprops&#34;&gt;mapDispatchToProps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#redux-setup&#34;&gt;Redux Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#async-and-apis&#34;&gt;Async and APIs&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#mock-api&#34;&gt;Mock API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#api-client-wrappers&#34;&gt;API Client Wrappers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#redux-middleware&#34;&gt;Redux Middleware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#redux-async-libraries&#34;&gt;Redux Async Libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thunks&#34;&gt;Thunks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#conditional-mapstatetoprops&#34;&gt;Conditional mapStateToProps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#polish-the-finer-things&#34;&gt;Polish (the finer things)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#spinner-component&#34;&gt;Spinner component&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#status-api-and-feedback&#34;&gt;Status API and feedback&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#server-side-validation&#34;&gt;Server side validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#client-side-validation&#34;&gt;Client side validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#optimistic-deletes&#34;&gt;Optimistic deletes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#testing&#34;&gt;Testing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#redux-connected-components&#34;&gt;Redux Connected Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#action-creators&#34;&gt;Action Creators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thunks-1&#34;&gt;Thunks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#reducers-1&#34;&gt;Reducers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#store&#34;&gt;Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;the-problem&#34;&gt;The Problem&lt;/h1&gt;
&lt;p&gt;Imagine a fairly deep component hierarchy, starting with your top level &lt;code&gt;App&lt;/code&gt; component. Deep down the tree, there are two child components that need to access a common piece of data (e.g. customer data). How should these components access the data they require?&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Go Programming Lang</title>
      <link>https://www.bencode.io/posts/go/</link>
      <pubDate>Sat, 05 Oct 2019 19:02:44 +0000</pubDate>
      <guid>https://www.bencode.io/posts/go/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#gopath&#34;&gt;GOPATH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#run-build-and-install&#34;&gt;Run, build and install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#dependencies&#34;&gt;Dependencies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#formatting&#34;&gt;Formatting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#documentation&#34;&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#structuring-a-source-tree&#34;&gt;Structuring a source tree&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-lang&#34;&gt;The lang&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#variables&#34;&gt;Variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#control-structures-if-switch-and-for&#34;&gt;Control structures (if, switch and for)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#if&#34;&gt;if&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#switch&#34;&gt;switch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#for&#34;&gt;for&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#io&#34;&gt;I/O&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#fmt&#34;&gt;fmt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cli&#34;&gt;CLI&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#args&#34;&gt;Args&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#flags&#34;&gt;Flags&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#basic-data-types&#34;&gt;Basic Data Types&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#type-conversion&#34;&gt;Type conversion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#strings&#34;&gt;Strings&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#unicode&#34;&gt;Unicode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#string-literals&#34;&gt;String literals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#numbers&#34;&gt;Numbers&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#integers&#34;&gt;Integers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#bitwise-operations&#34;&gt;Bitwise operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#floating-point&#34;&gt;Floating point&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#constants&#34;&gt;Constants&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#pointers&#34;&gt;Pointers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#functions&#34;&gt;Functions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#grouped-parameters-types&#34;&gt;Grouped parameters types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#variadic-functions&#34;&gt;Variadic functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#multiple-return-values&#34;&gt;Multiple return values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#named-return-values&#34;&gt;Named return values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#recursion&#34;&gt;Recursion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#deferred-functional-calls&#34;&gt;Deferred functional calls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#functions-as-values&#34;&gt;Functions as values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#function-literals-anonymous-functions&#34;&gt;Function literals (anonymous functions)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#passing-functions-to-functions&#34;&gt;Passing functions to functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#closures&#34;&gt;Closures&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#error-handling&#34;&gt;Error Handling&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#error-handling-strategies&#34;&gt;Error handling strategies&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#propagate-to-caller&#34;&gt;Propagate to caller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#retry&#34;&gt;Retry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#log-and-continue&#34;&gt;Log and continue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#log-and-exit&#34;&gt;Log and exit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#pkgerrors&#34;&gt;pkg/errors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#panic-and-recover&#34;&gt;Panic and Recover&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#packages-and-libraries&#34;&gt;Packages and Libraries&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#package-aliases&#34;&gt;Package aliases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#imported-unused-packages-for-side-effects&#34;&gt;Imported unused packages for side effects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#inspecting-a-package-api&#34;&gt;Inspecting a package API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#advanced-data-types&#34;&gt;Advanced Data Types&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#arrays&#34;&gt;Arrays&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#slices&#34;&gt;Slices&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#extending-slices&#34;&gt;Extending slices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#creating-a-slice-with-make&#34;&gt;Creating a slice with make&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#byte-slices&#34;&gt;Byte slices&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#maps&#34;&gt;Maps&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#creating-maps&#34;&gt;Creating maps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#crud-create-retrieve-update-delete-operations-with-maps&#34;&gt;CRUD (create retrieve update delete) operations with maps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#named-types-user-defined-types&#34;&gt;Named types (user defined types)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#function-named-type&#34;&gt;Function named type&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#type-aliases&#34;&gt;Type aliases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#struct&#34;&gt;Struct&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#struct-embedding&#34;&gt;Struct embedding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#field-tags&#34;&gt;Field tags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#struct-methods&#34;&gt;Struct methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#receiver-method-sets&#34;&gt;Receiver Method Sets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#interfaces&#34;&gt;Interfaces&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#interface-internals&#34;&gt;Interface internals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#warning---dont-assign-nil-variables-to-interfaces&#34;&gt;WARNING - dont assign nil variables to interfaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#type-assertion&#34;&gt;Type assertion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#type-switches&#34;&gt;Type switches&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cool-cool-cool&#34;&gt;Cool cool cool&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#stdlib&#34;&gt;stdlib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tools&#34;&gt;Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#make&#34;&gt;Make&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#vim-setup&#34;&gt;Vim setup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#libraries&#34;&gt;Libraries&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#data&#34;&gt;Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#middleware&#34;&gt;Middleware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#web&#34;&gt;Web&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://golang.org/doc/effective_go.html&#34;&gt;Effective Go&lt;/a&gt; is a howto on writing idiomatic Go.&lt;/p&gt;</description>
    </item>
    <item>
      <title>React v19</title>
      <link>https://www.bencode.io/posts/react/</link>
      <pubDate>Sun, 05 May 2019 22:08:10 +1000</pubDate>
      <guid>https://www.bencode.io/posts/react/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#react&#34;&gt;React&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#react-no-frills&#34;&gt;React No Frills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tools&#34;&gt;Tools&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#npm&#34;&gt;npm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#prettier&#34;&gt;Prettier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#eslint&#34;&gt;ESLint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#vite&#34;&gt;Vite&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#vite-proxy&#34;&gt;Vite Proxy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#typescript&#34;&gt;TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#bleeding-edge-and-alternative-tools&#34;&gt;Bleeding Edge and Alternative Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#jsx&#34;&gt;JSX&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#dom-control&#34;&gt;DOM control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#styling&#34;&gt;Styling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rendering-lists&#34;&gt;Rendering Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#handling-events&#34;&gt;Handling Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#passing-parameters-to-event-handlers&#34;&gt;Passing Parameters to Event Handlers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#passing-jsx-as-props&#34;&gt;Passing JSX as Props&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#react-hooks&#34;&gt;React Hooks&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#usestate&#34;&gt;useState&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#useeffect&#34;&gt;useEffect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#custom-hooks&#34;&gt;Custom Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#usecontext&#34;&gt;useContext&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#useref&#34;&gt;useRef&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#forms-and-user-input&#34;&gt;Forms and User Input&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#push-cart-to-server&#34;&gt;Push Cart to Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#react-ecosystem&#34;&gt;React Ecosystem&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#tanstack-router&#34;&gt;TanStack Router&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#vite-setup&#34;&gt;Vite Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#routetreegents&#34;&gt;routeTree.gen.ts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#router-setup&#34;&gt;Router Setup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tanstack-query&#34;&gt;TanStack Query&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#resources&#34;&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;react&#34;&gt;React&lt;/h2&gt;
&lt;p&gt;React is a JavaScript &lt;em&gt;library&lt;/em&gt; for building component based interactive UI&amp;rsquo;s.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go Web Apps</title>
      <link>https://www.bencode.io/posts/2019-04-28-go-web/</link>
      <pubDate>Sun, 28 Apr 2019 17:13:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2019-04-28-go-web/</guid>
      <description>&lt;p&gt;A quick tour of doing web with golang, all living off the land with Go&amp;rsquo;s built-in &lt;a href=&#34;https://golang.org/pkg/&#34;&gt;standard library&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;packages&#34;&gt;Packages&lt;/h1&gt;
&lt;p&gt;Working example, where the web server and templating code in source file &lt;code&gt;$GOPATH/src/github.com/bm4cs/gotime/web/server.go&lt;/code&gt;. It does lots of things, but exports function &lt;code&gt;StartServer&lt;/code&gt; (upper case first character means publically exported).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;web&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;StartServer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The main func in &lt;code&gt;$GOPATH/src/github.com/bm4cs/gotime/myapp/app.go&lt;/code&gt; can import the web package:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;github.com/bm4cs/gotime/web&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;web&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;StartServer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;handling-requests&#34;&gt;Handling Requests&lt;/h1&gt;
&lt;p&gt;The &lt;a href=&#34;https://golang.org/pkg/net/http/&#34;&gt;http&lt;/a&gt; package from the standard library, provides a ton a out of the box functionality. &lt;a href=&#34;https://golang.org/doc/articles/wiki/&#34;&gt;Writing Web Applications&lt;/a&gt; on golang.org is a very pragmatic guide.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Packet Analysis Basics</title>
      <link>https://www.bencode.io/posts/2019-01-15-packets/</link>
      <pubDate>Tue, 15 Jan 2019 21:29:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2019-01-15-packets/</guid>
      <description>&lt;p&gt;An evolving list of resources around packet analysis tips and tricks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#terminology&#34;&gt;Terminology&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cheat-sheets&#34;&gt;Cheat sheets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#anatomy-of-a-packet&#34;&gt;Anatomy of a Packet&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#osi-model-layers&#34;&gt;OSI Model Layers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#link-layer&#34;&gt;Link Layer&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#ether-type-fields&#34;&gt;Ether Type Fields&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#network-layer&#34;&gt;Network layer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#transport-layer&#34;&gt;Transport layer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tools&#34;&gt;Tools&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#wireshark-and-tshark&#34;&gt;Wireshark (and tshark)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tcpdump&#34;&gt;tcpdump&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#useful-switches&#34;&gt;Useful switches&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#examples&#34;&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#real-world-use-cases&#34;&gt;Real world use-cases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#netsniff-ng&#34;&gt;netsniff-ng&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#analysis&#34;&gt;Analysis&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;terminology&#34;&gt;Terminology&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;SOC&lt;/em&gt;, or Security Operations Center, is a central location composed of leading edge tools, technology and peeps (intel gatherers, analysts) that deals with security issues at an organisational and technical level.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;IDS&lt;/em&gt;, or Intrusion Detection System, is a device that monitors network traffic for threats to the environment, proactively alert the SOC analyst of potential problems.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;IPS&lt;/em&gt;, or an Intrusion Prevention System, is more sits inline, and can take active or passive mitigation actions.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;SIEM&lt;/em&gt;, or Security Information and Event Management, is all about the collection and aggregation of alerts and logs for event tracking, retention and correlation from multiple hosts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;cheat-sheets&#34;&gt;Cheat sheets&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.sans.org/security-resources/tcpip.pdf&#34;&gt;SANS TCP/IP and tcpdump Pocket Reference Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.ietf.org/html/rfc790&#34;&gt;RFC 790 Assigned Internet Protocol Numbers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.ietf.org/html/rfc791&#34;&gt;RFC 791 Internet Protocol&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;anatomy-of-a-packet&#34;&gt;Anatomy of a Packet&lt;/h1&gt;
&lt;h2 id=&#34;osi-model-layers&#34;&gt;OSI Model Layers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;7: application: HTTP, FTP, DNS&lt;/li&gt;
&lt;li&gt;6: presentation: SSL, JPEG&lt;/li&gt;
&lt;li&gt;5: session: SQL, SCP, NetBIOS, SOAP&lt;/li&gt;
&lt;li&gt;4: transport: TCP, UDP&lt;/li&gt;
&lt;li&gt;3: network: IPv4, IPv6, ICMP&lt;/li&gt;
&lt;li&gt;2: data-link: PPP, ARP, CDP&lt;/li&gt;
&lt;li&gt;1: physical: Ethernet, Bluetooth&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Layers 2-4 will be of primary interest.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Beyond Compare</title>
      <link>https://www.bencode.io/posts/2018-04-21-bcompare/</link>
      <pubDate>Sat, 21 Apr 2018 22:01:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2018-04-21-bcompare/</guid>
      <description>&lt;p&gt;Installation on Linux is well &lt;a href=&#34;https://www.scootersoftware.com/download.php?zz=kb_linux_install&#34;&gt;documented&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://www.scootersoftware.com/bcompare-4.2.4.22795.x86_64.rpm
su
rpm --import https://www.scootersoftware.com/RPM-GPG-KEY-scootersoftware
yum install bcompare-4.2.4.22795.x86_64.rpm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On my Fedora 27 box, I found the launcher bash &lt;code&gt;/usr/bin/bcompare&lt;/code&gt; exits with a return code of 1, if the linker cannot resolve all dependencies.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;BC_LIB=/usr/lib64/beyondcompare
export BC_LIB
EXEC=$BC_LIB/BCompare

#check to see if we have all of the shared libraries.
CHECK=`ldd $EXEC | grep &amp;quot;not found&amp;quot; | wc -l`

if [ &amp;quot;$CHECK&amp;quot; -ne  &amp;quot;0&amp;quot; ]; then
   echo Some Shared Libraries were not found
   ldd $EXEC
   exit 1
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dumping out the shared libs &lt;code&gt;BCompare&lt;/code&gt; depends on:&lt;/p&gt;</description>
    </item>
    <item>
      <title>make</title>
      <link>https://www.bencode.io/posts/2016-10-09-make/</link>
      <pubDate>Sun, 09 Oct 2016 20:23:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-10-09-make/</guid>
      <description>&lt;p&gt;A small &lt;a href=&#34;https://www.gnu.org/software/make/manual/make.html&#34;&gt;make&lt;/a&gt; orientation guide.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;make is a versatile task runner, its core competency is in creating files from other files&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#make-essentials&#34;&gt;Make essentials&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#equal-signs&#34;&gt;Equal signs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#built-in-variables&#34;&gt;Built-in variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#phony-targets&#34;&gt;Phony targets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#c-specifics&#34;&gt;C specifics&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#custom-variables&#34;&gt;Custom variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#implicit-variables&#34;&gt;Implicit variables&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#example-makefiles&#34;&gt;Example Makefiles&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;make-essentials&#34;&gt;Make essentials&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;make&lt;/code&gt; generates files from other files, using &lt;em&gt;recipes&lt;/em&gt;, the syntax is as follows. Please note, thanks to POSIX standardisation the recipe MUST be indented with a tab (not spaces):&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;target_file: prerequisite_file1 prerequisite_file2
	shell command to build target_file (MUST be indented with tabs, not spaces)
	another shell command (these commands are called the &amp;#34;recipe&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Unless you specify otherwise, Make assumes that the target (&lt;code&gt;target_file&lt;/code&gt; above) and prerequisites (&lt;code&gt;prerequisite_file1&lt;/code&gt; and &lt;code&gt;prerequisite_file2&lt;/code&gt;) are actual files or directories. You can ask Make to build a target from the command line like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Architecture</title>
      <link>https://www.bencode.io/posts/2016-07-13-architecture/</link>
      <pubDate>Wed, 13 Jul 2016 22:13:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-07-13-architecture/</guid>
      <description>&lt;p&gt;A collection of software concepts I plan to apply to some up coming projects. Some fundamental philosophies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automation everywhere.&lt;/li&gt;
&lt;li&gt;A clean (agnostic) contract with the underlying operating system, promoting portability between execution environments.&lt;/li&gt;
&lt;li&gt;Can scale without major changes to tooling, architecture or development.&lt;/li&gt;
&lt;li&gt;Smallest possible delta between development and production, enabling continuous integration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;deployment&#34;&gt;Deployment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Processes are first class citizens. Execute the application as one or more &lt;strong&gt;stateless&lt;/strong&gt; processes.&lt;/li&gt;
&lt;li&gt;Model &lt;em&gt;process types&lt;/em&gt; explicitly, e.g. HTTP requests might be handled by a web process, while long running backend tasks by a worker process.&lt;/li&gt;
&lt;li&gt;Always rely on the operating systems user-space process manager (e.g. systemd, Upstart) to manage output streams, respond to crashed processes and handle user initiated restarts and shutdowns.&lt;/li&gt;
&lt;li&gt;Concurrency;&lt;/li&gt;
&lt;li&gt;Physical distribution and clean contract with operating system, e.g. containers (e.g. docker).&lt;/li&gt;
&lt;li&gt;Versioning; the ability to deploy and hotswap versions side by side.&lt;/li&gt;
&lt;li&gt;Pluggable; ability to snap modules into architecture (punch through all layers), see &lt;em&gt;attached resources&lt;/em&gt; under &lt;em&gt;backing services&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Store all runtime configuration as environmental variables. They are a language and OS agnostic standard, and unlike other config options such as Java System Properties, are not accidentially added into the source code repo.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The array of process types and number of processes of each type is known as the process formation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>soapUI mock bug</title>
      <link>https://www.bencode.io/posts/2016-06-01-soapui-noop/</link>
      <pubDate>Wed, 01 Jun 2016 20:57:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-06-01-soapui-noop/</guid>
      <description>&lt;p&gt;Today I stumbled onto interesting soapUI quirk, involving a combination of mock services, SOAP 1.2 and multipart message definitions.&lt;/p&gt;
&lt;p&gt;In essence, the soapUI mock service will always return an HTTP 500, with the following response:&lt;/p&gt;
&lt;p&gt;{% highlight xml %}
&amp;lt;soap:Envelope xmlns:soap=&amp;ldquo;&lt;a href=&#34;http://www.w3.org/2003/05/soap-envelope%22%3E&#34;&gt;http://www.w3.org/2003/05/soap-envelope&amp;quot;&amp;gt;&lt;/a&gt;
&lt;a href=&#34;soap:Body&#34;&gt;soap:Body&lt;/a&gt;
&lt;a href=&#34;soap:Fault&#34;&gt;soap:Fault&lt;/a&gt;
&lt;a href=&#34;soap:Code&#34;&gt;soap:Code&lt;/a&gt;
&lt;a href=&#34;soap:Value&#34;&gt;soap:Value&lt;/a&gt;Server&amp;lt;/soap:Value&amp;gt;
&amp;lt;/soap:Code&amp;gt;
&lt;a href=&#34;soap:Reason&#34;&gt;soap:Reason&lt;/a&gt;

&amp;lt;soap:Text xml:lang=&amp;ldquo;en&amp;rdquo;&amp;gt;Missing operation for soapAction [http://services.net.bencode/wsdl/2016/06/01/retrievecoolnesslevelrequest] and body element [{http://services.net.bencode/wsdl/2016/06/01}retrieveCoolnessLevelRequest] with SOAP Version [SOAP 1.2]&amp;lt;/soap:Text&amp;gt;
&amp;lt;/soap:Reason&amp;gt;
&amp;lt;/soap:Fault&amp;gt;
&amp;lt;/soap:Body&amp;gt;
&amp;lt;/soap:Envelope&amp;gt;
{% endhighlight %}&lt;/p&gt;
&lt;p&gt;Sigh.&lt;/p&gt;
&lt;p&gt;Thankfully some legend known as fyerf posted a solution on the &lt;a href=&#34;https://community.smartbear.com/t5/SoapUI-Open-Source/R-Missing-operation-for-soapAction-and-body-element-moc/td-p/38006&#34;&gt;smartbear community forums&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Classloaders</title>
      <link>https://www.bencode.io/posts/2016-04-20-classloader/</link>
      <pubDate>Wed, 20 Apr 2016 20:33:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-04-20-classloader/</guid>
      <description>&lt;p&gt;First some kudos and credits to the below. None of the material in this post is original, and I have documented it for my personal learning. Please refer to the below original (and superior) articles.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ZeroTurnaround&amp;rsquo;s Jevgeni Kabanov awesome and most practical &lt;a href=&#34;http://zeroturnaround.com/rebellabs/rebel-labs-tutorial-do-you-really-get-classloaders&#34;&gt;Do You Really Get Classloaders?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Oracle&amp;rsquo;s A Sundararajan &lt;a href=&#34;https://blogs.oracle.com/sundararajan/entry/understanding_java_class_loading&#34;&gt;Understanding Java class loading&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;All the way from 1996 by Chuck Mcmanis &lt;a href=&#34;http://www.javaworld.com/article/2077260/learn-java/learn-java-the-basics-of-java-class-loaders.html&#34;&gt;The basics of Java classloaders&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;hello-javalangclassloader&#34;&gt;Hello java.lang.ClassLoader&lt;/h1&gt;
&lt;p&gt;A Java class is loaded (i.e. born into the JVM) by a concrete implementation of &lt;code&gt;java.lang.ClassLoader&lt;/code&gt;. If a class must be class loaded, what loads the &lt;code&gt;java.lang.ClassLoader&lt;/code&gt; class itself (i.e. who loads the loader)? It turns out that there is a bootstrap classloader wired into the JVM. The bootstrap loader loads &lt;code&gt;java.lang.ClassLoader&lt;/code&gt; in additional to many other Java platform classes (e.g. &lt;code&gt;java.lang.*&lt;/code&gt;) into memory. The essential API:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Struts</title>
      <link>https://www.bencode.io/posts/2016-03-17-struts/</link>
      <pubDate>Thu, 17 Mar 2016 20:25:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-03-17-struts/</guid>
      <description>&lt;p&gt;Struts, the famous Java MVC web framework of the late 90&amp;rsquo;s and early 00&amp;rsquo;s that pioneered well structured server side web logic. Many Java based enterprise applications developed during this era (a metric s#!t ton) still make heavy use of Struts 1.x today.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Apache Struts 1 is a discontinued open-source web application framework for developing Java EE web applications. It complements the Servlet API to encourage developers to adopt a model–view–controller (MVC) architecture. It was originally created by Craig McClanahan and donated to the Apache Foundation in May, 2000.&lt;/p&gt;</description>
    </item>
    <item>
      <title>wsimport</title>
      <link>https://www.bencode.io/posts/2016-03-02-wsimport/</link>
      <pubDate>Wed, 02 Mar 2016 21:53:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2016-03-02-wsimport/</guid>
      <description>&lt;p&gt;Thrown into a large, legacy EE code base, I needed to create new SOAP web services, and update some existing ones. To make life interesting, there lacked a repeatable process (e.g. via Ant or Maven) for processing WSDL&amp;rsquo;s and generating the associated JAXWS and JAXB source code artifacts in a consistent manner.&lt;/p&gt;
&lt;p&gt;First things first, a repeatable and scriptable procedure. &lt;a href=&#34;https://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/rwbs_wsimport.html&#34;&gt;wsimport&lt;/a&gt; to the rescue. &lt;code&gt;wsimport&lt;/code&gt; has been around so long now, the &lt;code&gt;com.sun.tools.ws.ant.WsImport&lt;/code&gt; Ant task is guarenteed to be kicking around in your environment. It&amp;rsquo;s also a best practice to use the vendor specific wrapper to &lt;code&gt;wsimport&lt;/code&gt;, in my case WebSphere.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IntelliJ Bad Font Rendering on Linux</title>
      <link>https://www.bencode.io/posts/2015-12-06-intellij-bad-font-linux/</link>
      <pubDate>Sat, 05 Dec 2015 16:12:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-12-06-intellij-bad-font-linux/</guid>
      <description>&lt;p&gt;Font rendering in IntelliJ on Linux looks horrid. Any Java based application does for that matter. I can&amp;rsquo;t take it anymore. I just burnt 30 minutes looking into solutions. Fastest option, run it on the Linux optimised JVM &lt;a href=&#34;https://code.google.com/p/tuxjdk/&#34;&gt;tuxjdk&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;tuxjdk is a series of patched to OpenJDK to enhance user experience with Java-based and Swing-based tools (NetBeans, Idea, Android Studio, etc)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Instructions (for me) next time this happens:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download &lt;a href=&#34;https://code.google.com/p/tuxjdk/&#34;&gt;tuxjdk&lt;/a&gt; and unpack it in &lt;code&gt;/usr/lib/jvm&lt;/code&gt;, e.g. &lt;code&gt;/usr/lib/jvm/jdk-8u25-tuxjdk-b01&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run IntelliJ like this; &lt;code&gt;export IDEA_JDK=/usr/lib/jvm/jdk-8u25-tuxjdk-b01/ &amp;amp; ./idea.sh&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt=&#34;IntelliJ running on Fedora 22 and tuxjdk&#34; loading=&#34;lazy&#34; src=&#34;https://www.bencode.io/images/intellij.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eclipse brain damage</title>
      <link>https://www.bencode.io/posts/2015-09-02-rad-silly-error/</link>
      <pubDate>Wed, 02 Sep 2015 10:58:33 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-09-02-rad-silly-error/</guid>
      <description>&lt;p&gt;In my current project we use IBM&amp;rsquo;s version of Eclipse. On a Windows 7 VM. The VM crashes weekly.&lt;/p&gt;
&lt;p&gt;Not only has this made me paranoid about loosing my work (I stash my changes in version control like a demon), it seems to corrupt my RAD/Eclipse instance.&lt;/p&gt;
&lt;p&gt;Starting RAD produces the useful &amp;ldquo;An error has occured&amp;rdquo; error message:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Eclipse error&#34; loading=&#34;lazy&#34; src=&#34;https://www.bencode.io/images/rad-error.png&#34;&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;!SESSION 2015-09-02 10:53:50.331 -----------------------------------------------
eclipse.buildId=unknown
java.fullversion=JRE 1.7.0 IBM J9 2.6 Windows 7 amd64-64 Compressed References 20140313_192258 (JIT enabled, AOT enabled)
J9VM - R26_Java726_SR6_20140313_1318_B192258
JIT  - r11.b05_20131003_47443.02
GC   - R26_Java726_SR6_20140313_1318_B192258_CMPRSS
J9CL - 20140313_192258
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_AU
Framework arguments:  -product com.ibm.rational.rad.product.v80.ide
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product com.ibm.rational.rad.product.v80.ide

!ENTRY org.eclipse.equinox.app 0 0 2015-09-02 10:53:52.658
!MESSAGE Product com.ibm.rational.rad.product.v80.ide could not be found.

!ENTRY org.eclipse.osgi 4 0 2015-09-02 10:53:54.131
!MESSAGE Application error
!STACK 1
java.lang.RuntimeException: No application id has been found.
  at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242)
  at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
  at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
  at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
  at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
  at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
  at java.lang.reflect.Method.invoke(Method.java:618)
  at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
  at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
  at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
  at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The error log isn&amp;rsquo;t much help. Something somewhere is corrupt. Asking Eclipse to clean itself seems to fix things:&lt;/p&gt;</description>
    </item>
    <item>
      <title>JAX-WS SOAP Logger</title>
      <link>https://www.bencode.io/posts/2015-09-01-soap-handler/</link>
      <pubDate>Tue, 01 Sep 2015 09:56:33 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-09-01-soap-handler/</guid>
      <description>&lt;p&gt;Hot tip, logging helps understand how a piece of software works, long after it has left the cosy confines of the debugger.&lt;/p&gt;
&lt;p&gt;Logging SOAP message bodies can be really handy, when the thing that is interacting with your software is out of your control (i.e. a vendor or trading partner). And if you&amp;rsquo;re using web services, the likehood of this is high.&lt;/p&gt;
&lt;p&gt;Running JAX-WS web services in our servlet container, needed a quick and easy way to acheive this. Welcome to the wonderful world of &lt;a href=&#34;https://docs.oracle.com/javase/7/docs/api/javax/xml/ws/handler/soap/SOAPHandler.html&#34;&gt;SOAPHandler&amp;rsquo;s&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cherished GCC flags</title>
      <link>https://www.bencode.io/posts/2015-08-23-gcc-flags/</link>
      <pubDate>Sat, 22 Aug 2015 15:32:44 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-08-23-gcc-flags/</guid>
      <description>&lt;p&gt;A (work in progress) compilation of useful GCC configuration, focused on C.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-W&lt;/strong&gt; warnings.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-Wall&lt;/code&gt; is a must.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-Werror&lt;/code&gt; to treat warnings as errors.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;-l&lt;/strong&gt; instructs the linker it has some work to do (i.e. link a library please). &lt;code&gt;-lm&lt;/code&gt; is shorthand for &lt;code&gt;-libm&lt;/code&gt; and in turn &lt;code&gt;-libm.a&lt;/code&gt; is a static library is selected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-L&lt;/strong&gt; hint to the linker where to locate libraries. &lt;code&gt;-L/opt/gdbm-1.10/src&lt;/code&gt; in combination with -lgdbm tells the linker exactly where to find the gdbm libraries. Multiple &lt;code&gt;-L&lt;/code&gt; can be specified. Alternatively use the &lt;code&gt;LIBRARY_PATH&lt;/code&gt; environment variable like so:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Logback Boilerplate</title>
      <link>https://www.bencode.io/posts/2015-08-22-logback/</link>
      <pubDate>Sat, 22 Aug 2015 09:16:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-08-22-logback/</guid>
      <description>&lt;p&gt;A useful starting place logback setup.&lt;/p&gt;
&lt;p&gt;I needed a way to roll logs not only by date, but also by size, to prevent behemoth log files from being generated. The marvellous&lt;code&gt;SizeAndTimeBasedFNATP&lt;/code&gt; triggering policy (which comes out of the box) will gzip roll logs based on date, and then size too. So your logs directory ends up looking something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fooapp.log
fooapp_2015-08-22.0.log.zip
fooapp_2015-08-22.1.log.zip
fooapp_2015-08-22.2.log.zip
fooapp_2015-08-23.0.log.zip
fooapp_2015-08-24.0.log.zip
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here&amp;rsquo;s a sample &lt;code&gt;logback.xml&lt;/code&gt; configuration that:&lt;/p&gt;</description>
    </item>
    <item>
      <title>JDBC blob extractor</title>
      <link>https://www.bencode.io/posts/2015-08-21-jdbc-blob-extractor/</link>
      <pubDate>Fri, 21 Aug 2015 21:59:33 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-08-21-jdbc-blob-extractor/</guid>
      <description>&lt;p&gt;I was dealing with an application that stores image binary data in DB2. DB2 tooling (e.g. IBM Data Studio) didn&amp;rsquo;t seem to offer a convenient way of extracting images out of the box. I wasn&amp;rsquo;t suprised. It turns out dragging them out via JDBC was the path of least resistance.&lt;/p&gt;
&lt;p&gt;Ensure that you give your JDBC driver enough hints about the heavy nature of the result set that is coming back. For DB2 &lt;code&gt;ResultSet.TYPE_FORWARD_ONLY&lt;/code&gt; and &lt;code&gt;ResultSet.CONCUR_READ_ONLY&lt;/code&gt; worked well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JVMVRFY012 Stack Shape Inconsistent</title>
      <link>https://www.bencode.io/posts/2015-07-25-jvmvrfy012/</link>
      <pubDate>Sat, 25 Jul 2015 18:40:05 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-07-25-jvmvrfy012/</guid>
      <description>&lt;p&gt;Following the routine restart of a WebSphere app server earlier this week, our application refused to start back up. This was an annoying suprise, as the environments are normally incredibly stable.&lt;/p&gt;
&lt;p&gt;The logs highlighted that a darker force was at play:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[15/07/15 13:38:00:581 EST] 000000a9 StandaloneEJB I StandaloneEJBLifeCycle startApplication OpenWebBeans Container is starting...
[15/07/15 13:38:00:589 EST] 000000a9 ObserverMetho I ObserverMethodImpl notify Cannot send event to bean in non-active context :
[-43735604,Name:null,WebBeans Type:EXTENSION,APITypes:[java.lang.Object,org.apache.webbeans.jsf.scopes.Jsf2ScopesExtension,javax.enterprise.inject.spi.Extension],Qualifiers:[javax.enterprise.inject.Default]] 
[15/07/15 13:38:00:958 EST] 000000a9 ApplicationMg E WSVR0101W: An error occurred starting, ZizzledApp
[15/07/15 13:38:00:959 EST] 000000a9 ApplicationMg A WSVR0217I: Stopping application: ZizzledApp
[15/07/15 13:38:00:972 EST] 000000a9 WSEJBIntercep E CWOWB0102E: A JCDI error has occurred: &amp;lt;null&amp;gt;
[15/07/15 13:38:00:977 EST] 000000a9 WSEJBIntercep E CWOWB0102E: A JCDI error has occurred: &amp;lt;null&amp;gt;
[15/07/15 13:38:01:003 EST] 000000a9 ServletWrappe I com.ibm.ws.webcontainer.servlet.ServletWrapper doDestroy SRVE0253I: [ZizzledApp] [/ZizzledAppService/v1] [ZizzledAppServiceImpl]: Destroy successful.
[15/07/15 13:38:01:039 EST] 000000a9 SharedEJBRunt I WSVR0041I: Stopping EJB jar: ZizzledAppEJB.jar 
[15/07/15 13:38:01:099 EST] 000000a9 SharedEJBRunt I WSVR0059I: EJB jar stopped: ZizzledAppEJB.jar
[15/07/15 13:38:01:137 EST] 000000a9 ApplicationMg A WSVR0220I: Application stopped: ZizzledApp 
[15/07/15 13:38:01:208 EST] 000000a9 CompositionUn E WSVR0194E: Composition unit WebSphere:cuname=ZizzledApp in BLA WebSphere:blaname=ZizzledApp failed to start. 
[15/07/15 13:38:01:234 EST] 000000a9 FfdcProviderW com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on /var/logs/WebSphere8/ffdc/bencode02_9315bb77_15.07.15_13.38.01.2112090578995796253353.txt com.ibm.ws.runtime.component.CompositionUnitMgrImpl 679 
[15/07/15 13:38:01:269 EST] 000000a9 DMAdapter I com.ibm.ws.ffdc.impl.DMAdapter getAnalysisEngine FFDC1009I: Analysis Engine using data base: /usr/WebSphere8/AppServer/properties/logbr/ffdc/adv/ffdcdb.xml 
[15/07/15 13:38:01:338 EST] 000000a9 FfdcProviderW com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on /var/logs/WebSphere8/ffdc/bencode02_9315bb77_15.07.15_13.38.01.235306456357083187192.txt com.ibm.ws.management.AdminServiceImpl.invoke 679
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wanting more details than &lt;strong&gt;an error occurred starting&lt;/strong&gt;, tried my luck with the FFDC logs listed toward the end of the log:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spring Context Specific Configuration Files</title>
      <link>https://www.bencode.io/posts/2015-05-31-spring-context-specific-configuration/</link>
      <pubDate>Sun, 31 May 2015 21:22:05 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-05-31-spring-context-specific-configuration/</guid>
      <description>&lt;p&gt;Spring can be configured in lots of different ways and using context specific XML configuration is one of the preferred approaches. Context specific configuration in other words is simply a chunk of XML specific to a single concern (e.g. servlet config, jpa config, and whatever else you need). A classic example of this is the &lt;code&gt;servlet-config.xml&lt;/code&gt; that the Dispatcher Servlet binds against:&lt;/p&gt;
&lt;p&gt;{% highlight xml %}
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;fitTrackerServlet&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;org.springframework.web.servlet.DispatcherServlet&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;contextConfigLocation&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;/WEB-INF/config/servlet-config.xml&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
{% endhighlight %}
Other Context specific configuration files can be registered by hacking your &lt;code&gt;web.xml&lt;/code&gt;. Here&amp;rsquo;s an example for defining a place to stick JPA related cruft:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spring MVC</title>
      <link>https://www.bencode.io/posts/2015-05-31-spring-mvc/</link>
      <pubDate>Sun, 31 May 2015 21:16:05 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-05-31-spring-mvc/</guid>
      <description>&lt;p&gt;Some of my learning notes about using the excellent &lt;a href=&#34;https://spring.io/guides/gs/serving-web-content/&#34;&gt;Spring MVC&lt;/a&gt; framework to build a simple MVC based web application. Spring MVC is an action oriented framework. For a good overview on the differences between UI Component and Action oriented frameworks checkout this &lt;a href=&#34;http://www.oracle.com/technetwork/articles/java/mvc-2280472.html&#34;&gt;link&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In action oriented MVC land, the controller dispatches to a specific action, based on information in the request. Each action does a specific thing to transform the request and take action on it, possibly updating the model tier. This approach does not try to hide the request/response model of the underlying HTTP, and it also says absolutely nothing about the specifics of the HTML/CSS/JS comprising the UI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spring Data JPA Fun</title>
      <link>https://www.bencode.io/posts/2015-05-29-spring-data-jpa/</link>
      <pubDate>Fri, 29 May 2015 17:03:05 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-05-29-spring-data-jpa/</guid>
      <description>&lt;p&gt;Maven dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;mysql&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;mysql-connector-java&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;5.1.21&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.hibernate&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;hibernate-entitymanager&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;4.1.9.Final&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;javax.transaction&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;jta&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;1.1&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;spring-jdbc&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;3.2.0.RELEASE&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
  &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;spring-orm&amp;lt;/artifactId&amp;gt;
  &amp;lt;version&amp;gt;3.2.0.RELEASE&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;entity-manager-factory&#34;&gt;Entity Manager Factory&lt;/h2&gt;
&lt;p&gt;Used to bootstrap JPA and also Hibernate inside our application. The &lt;code&gt;LocalContainerEntityManagerFactoryBean&lt;/code&gt; which is packaged in the &lt;code&gt;spring-orm.jar&lt;/code&gt;, references the defined persistence unit.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;bean id=&amp;quot;entityManagerFactory&amp;quot; class=&amp;quot;org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean&amp;quot;&amp;gt;
    &amp;lt;property name=&amp;quot;persistenceUnitName&amp;quot; value=&amp;quot;punit&amp;quot; /&amp;gt;
    &amp;lt;property name=&amp;quot;dataSource&amp;quot; ref=&amp;quot;dataSource&amp;quot; /&amp;gt;
    &amp;lt;property name=&amp;quot;jpaVendorAdapter&amp;quot;&amp;gt;
        &amp;lt;bean class=&amp;quot;org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter&amp;quot;&amp;gt;
            &amp;lt;property name=&amp;quot;showSql&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/bean&amp;gt;
    &amp;lt;/property&amp;gt;
    &amp;lt;property name=&amp;quot;jpaPropertyMap&amp;quot;&amp;gt;
        &amp;lt;map&amp;gt;
            &amp;lt;entry key=&amp;quot;hibernate.dialect&amp;quot; value=&amp;quot;org.hibernate.dialect.MySQL5InnoDBDialect&amp;quot; /&amp;gt;
            &amp;lt;entry key=&amp;quot;hibernate.hbm2ddl.auto&amp;quot; value=&amp;quot;none&amp;quot; /&amp;gt;
            &amp;lt;entry key=&amp;quot;hibernate.format_sql&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/map&amp;gt;
    &amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;transaction-manager&#34;&gt;Transaction Manager&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;JpaTransactionManager&lt;/code&gt; (packaged within &lt;code&gt;spring-tx.jar&lt;/code&gt;) which sucks in a reference to the entityManagerFactory, is responsible for taking care of transactions within the JPA layer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EJB Timing with Interceptors</title>
      <link>https://www.bencode.io/posts/2015-05-13-interceptors-ejb-timing/</link>
      <pubDate>Wed, 13 May 2015 15:36:19 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-05-13-interceptors-ejb-timing/</guid>
      <description>&lt;p&gt;Java EE is packed tight with useful functionality. The humble &lt;code&gt;Interceptor&lt;/code&gt; provides cross cutting functionality external to the targetted code, without modifying the code itself. In other words &lt;a href=&#34;http://en.wikipedia.org/wiki/Aspect-oriented_programming&#34;&gt;AOP&lt;/a&gt;. The API is rather simple an involves using &lt;code&gt;@AroundInvoke&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The following highlights just how simple it is to log all EJB service call execution times, without the need to modify a single bean.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;META-INF/ejb-jar.xml&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;ejb-jar xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd&amp;quot; version=&amp;quot;3.1&amp;quot;&amp;gt;
  &amp;lt;display-name&amp;gt;SerivceModuleEJB&amp;lt;/display-name&amp;gt;
  &amp;lt;assembly-descriptor&amp;gt;
    &amp;lt;interceptor-binding&amp;gt;
      &amp;lt;ejb-name&amp;gt;*&amp;lt;/ejb-name&amp;gt;
      &amp;lt;interceptor-class&amp;gt;
        net.bencode.common.ServicePerformanceInterceptor
      &amp;lt;/interceptor-class&amp;gt;
    &amp;lt;/interceptor-binding&amp;gt;
  &amp;lt;/assembly-descriptor&amp;gt;
&amp;lt;/ejb-jar&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;ServicePerformanceInterceptor.java&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microservices</title>
      <link>https://www.bencode.io/posts/2015-04-26-microservices/</link>
      <pubDate>Sun, 26 Apr 2015 22:09:01 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-04-26-microservices/</guid>
      <description>&lt;p&gt;Amped by &lt;a href=&#34;https://twitter.com/yaamehn&#34;&gt;@yaamehn&lt;/a&gt;&amp;rsquo;s opinionated &lt;a href=&#34;https://www.youtube.com/watch?v=KHqMPRA6jVI&amp;amp;list=LL5wCy3trg9aNEBcarsIWUEg&amp;amp;index=1&#34;&gt;Microservices A Reference Architecture&lt;/a&gt; recent talk at the Microservices Australia Meetup, has got me thinking about the many interesting possibilities Microservices stirs up. Many useful techniques are touched on, regardless of whether actually adopting Microservices.&lt;/p&gt;
&lt;p&gt;On the surface Microservices doesn&amp;rsquo;t appear to be anything groundbreakingly new. It does however push tried-and-trued concepts (e.g. abstraction, decoupling, modularisation, continuous delivery) to extreme levels. Fused with innovations in the operations space such as containerising like &lt;a href=&#34;https://www.docker.com/&#34;&gt;Docker&lt;/a&gt;, can lead to some very powerful outcomes; such efficient continuous delivery (on a micro scale), decoupling of domains allowing for a best of bread technlogies, and so on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>soapUI freeze on Mac OS X</title>
      <link>https://www.bencode.io/posts/2015-01-25-soapui-freezing-osx/</link>
      <pubDate>Sun, 25 Jan 2015 22:31:43 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-01-25-soapui-freezing-osx/</guid>
      <description>&lt;p&gt;Well first time for everything. Messing around with some JAX-WS web services, wanted to spin up my favourite SOAP frontend, soapUI. On my Mac. Annoyingly it would just immediately hang. Completely frozen. soapUI by default will try and render a web page on startup. This doesn&amp;rsquo;t seem to work out so well when running on OSX.&lt;/p&gt;
&lt;p&gt;A handy little article I found on &lt;a href=&#34;http://antonperez.com/2012/09/05/fix-for-soapui-freezing-on-mac-os-x-lion/&#34;&gt;Anton Perez&amp;rsquo;s blog&lt;/a&gt;, made my day.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start &amp;lsquo;Activity Monitor&amp;rsquo; and Force Kill your dead soapUI process.&lt;/li&gt;
&lt;li&gt;In Finder, &lt;code&gt;/Applications/SmartBear/soapUI-5.0.0.app&lt;/code&gt; &amp;gt; Show Package Contents.&lt;/li&gt;
&lt;li&gt;Edit &lt;code&gt;/Applications/SmartBear/soapUI-5.0.0.app/Contents/java/app/bin/soapui.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Uncomment this line&lt;code&gt;#   JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dsoapui.browser.disabled=true&amp;quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Edit &lt;code&gt;/Applications/SmartBear/soapUI-5.0.0.app/Contents/vmoptions.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;-Dsoapui.browser.disabled=true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Start soapUI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Checkout these commented lines in &lt;code&gt;soapui.sh&lt;/code&gt;&amp;hellip;our fix ready to go:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Ant</title>
      <link>https://www.bencode.io/posts/2015-01-22-ant/</link>
      <pubDate>Thu, 22 Jan 2015 22:15:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2015-01-22-ant/</guid>
      <description>&lt;p&gt;Lately I&amp;rsquo;ve gleened some &amp;ldquo;real world&amp;rdquo; Apache Ant tips and tricks from some really impressive Java EE developers I&amp;rsquo;ve had the opportunity of working with over the last year.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Asynchronous Workloads with WebSphere Application Server</title>
      <link>https://www.bencode.io/posts/2014-07-26-was-async-beans/</link>
      <pubDate>Sat, 26 Jul 2014 20:16:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2014-07-26-was-async-beans/</guid>
      <description>&lt;p&gt;So I&amp;rsquo;ve been using WebSphere for a while now, and continue to discover new functionality in this powerhouse of an application server. This post focuses on performing background work in WebSphere Application Server (WAS) 7.0, which is an EE 5 compliant container.&lt;/p&gt;
&lt;p&gt;Firstly a quick outline of the problem. Across a series of web service calls, there exist a number of intensive processes that need to take place. I wanted a way to perform work this asynchronously somewhere else within the application server, without being bound to the request/response cycle that HTTP web services impose&amp;hellip;in essence making the actual service calls appear super snappy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>REST APIs with RESTEasy and Tomcat</title>
      <link>https://www.bencode.io/posts/2014-04-17-resteasy-jaxrs-tomcat/</link>
      <pubDate>Thu, 17 Apr 2014 21:48:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2014-04-17-resteasy-jaxrs-tomcat/</guid>
      <description>&lt;p&gt;Java EE application servers at times can feel big and heavy&amp;hellip;as in behemoth. I&amp;rsquo;m &amp;ldquo;lucky&amp;rdquo; enough to work with an old version of WebSphere AS on a daily basis at the moment. To keep things fast, I&amp;rsquo;ve resorted to using lighter weight containers for the job at hand. &lt;a href=&#34;http://tomcat.apache.org/&#34;&gt;Tomcat&lt;/a&gt; is king when it comes to meeting the servlet specification, and no more.&lt;/p&gt;
&lt;p&gt;Its hell fast. As a result is very lean on what it offers out of the box. I needed to whip up a quick and dirty REST API using Tomcat and ideally using something based on &lt;a href=&#34;https://jax-rs-spec.java.net/&#34;&gt;JAX-RS&lt;/a&gt;. &lt;a href=&#34;http://www.jboss.org/resteasy&#34;&gt;RESTEasy&lt;/a&gt; is a JBoss project that provides and surfaces various frameworks (e.g. &lt;a href=&#34;https://github.com/FasterXML/jackson&#34;&gt;Jackson&lt;/a&gt; for JSON serialisation) for building RESTful services, and is a fully certifed and portable implementation of the JAX-RS specification. Perfect.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Essential software development toolkit</title>
      <link>https://www.bencode.io/posts/2014-03-01-effective-software-engineering-principles/</link>
      <pubDate>Sat, 01 Mar 2014 21:46:37 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2014-03-01-effective-software-engineering-principles/</guid>
      <description>&lt;p&gt;Sometimes life in the world of software can seem like complete chaos, and other times a well planned cathedral. Perhaps this is due to subjective nature of software itself. Like any other engineering related discipline (e.g. building construction), beauty is in the eyes of the creator. Also a happy customer is a happy customer&amp;hellip;even if they want a &lt;a href=&#34;http://theoatmeal.com/comics/design_hell&#34;&gt;pink color scheme and pictures of kittens&lt;/a&gt; on their screens. Unlike the construction industry, a customer does not happily accept a product built on unreliable foundations, that is unmaintainable mess. Problems such as software quality and longevity, and even the impediance mismatch between customers and engineers, are by no means new problems, and have been solved in a plethora of ways a long time ago.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Neat and tidy Swing with JGoodies FormLayout</title>
      <link>https://www.bencode.io/posts/2014-02-23-jgoodies-swing-layout/</link>
      <pubDate>Mon, 24 Feb 2014 20:30:05 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2014-02-23-jgoodies-swing-layout/</guid>
      <description>&lt;p&gt;When its comes to laying out slightly complex forms in AWT or Swing, using the &lt;a href=&#34;http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html#grid&#34;&gt;baked-in layout managers&lt;/a&gt; (BoxLayout, FlowLayout, GridLayout) can feel frustrating.&lt;/p&gt;
&lt;p&gt;Thankfully I stumbled across the &lt;a href=&#34;http://www.jgoodies.com/freeware/libraries/forms/&#34;&gt;JGoodies FormLayout&lt;/a&gt; layout manager whilst working on some Swing applications using IntelliJ IDEA 13. IDEA has an integrated visual GUI builder, that makes it really quick and easy to mock up FormLayout controlled layouts, but for the most precise level of control I found handcrafting to be very clean and simple.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Machine learning basics</title>
      <link>https://www.bencode.io/posts/2013-10-19-machine-learning-basics/</link>
      <pubDate>Sat, 19 Oct 2013 17:39:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2013-10-19-machine-learning-basics/</guid>
      <description>&lt;p&gt;Well, after wanting to do this for years, I finally bit the bullet and enroled in the infamous &lt;a href=&#34;https://www.coursera.org/course/ml&#34;&gt;Machine Learning class&lt;/a&gt; run by Andrew Ng through Coursera and Stanford. Professor Andrew Ng is Director of the Stanford Artificial Intelligence Lab, the main AI research organization at Stanford, with 20 professors and about 150 students/post docs. The first revision of this course ran in 2008, where Andrew started SEE (Stanford Engineering Everywhere), which was Stanford&amp;rsquo;s first attempt at free, online distributed education.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ReSharper killer shortcuts</title>
      <link>https://www.bencode.io/posts/2013-07-30-resharper-killer-shortcuts/</link>
      <pubDate>Tue, 30 Jul 2013 21:05:20 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2013-07-30-resharper-killer-shortcuts/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.jetbrains.com/resharper/&#34;&gt;ReSharper&lt;/a&gt; (R#) is a tool that I use, love and recommend for anyone who uses Visual Studio. The immediate benefits that it brings and the sheer productivity boost that you gain from using it makes Visual Studio a pleasure to use. I have been using R# for about 2 years now, and keep discovering new gems every now and then, from other R# fans. It compliments Visual Studio so well, sometimes you don&amp;rsquo;t notice that you are actually using R#.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spring Dependency Injection</title>
      <link>https://www.bencode.io/posts/2013-04-25-spring-dependency-injection/</link>
      <pubDate>Thu, 25 Apr 2013 21:58:05 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2013-04-25-spring-dependency-injection/</guid>
      <description>&lt;p&gt;Spring provides dependency injection capabilities using Setter injection, or Constructor injection. Object models can then be declaratively represented in XML. Here&amp;rsquo;s a Setter injection based example using the &lt;code&gt;property&lt;/code&gt; element:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;bean name=&amp;quot;shaker&amp;quot; class=&amp;quot;net.bencode.model.Shaker&amp;quot;&amp;gt;
  &amp;lt;property name=&amp;quot;proteinPowder&amp;quot; ref=&amp;quot;proteinPowder&amp;quot; /&amp;gt;
&amp;lt;/bean&amp;gt;

&amp;lt;bean name=&amp;quot;proteinPowder&amp;quot; class=&amp;quot;net.bencode.model.ProteinPowder&amp;quot;&amp;gt;
  &amp;lt;property name=&amp;quot;grams&amp;quot; ref=&amp;quot;120&amp;quot; /&amp;gt;
&amp;lt;/bean&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or if XML isn&amp;rsquo;t your thing, annotations are also an option, using a combination of &lt;code&gt;@Component&lt;/code&gt; and &lt;code&gt;@Autowired&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@Component
public class Shaker {
  @Autowired
  private ProteinPowder proteinPowder;
  ...
}

@Component
public class ProteinPowder {
  private int grams;
  ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Constructor injection is similarly defined using the &lt;code&gt;constructor-arg&lt;/code&gt; element. The following example works if the Shaker class has a constructor that takes in a ProteinPowder instance:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Native Desktop Window Skeleton with ATL</title>
      <link>https://www.bencode.io/posts/2012-12-31-winskeleton/</link>
      <pubDate>Mon, 31 Dec 2012 12:50:06 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2012-12-31-winskeleton/</guid>
      <description>&lt;p&gt;Building native Windows application with C++ can be done using a variety of techniques, from handrolled win32 to MFC. Some uglier than others. Using some ATL macros, here is the most minimalist implementation I could find, that will get you a native Windows desktop shell up and running.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a skeleton native Windows desktop application that uses &lt;!-- raw HTML omitted --&gt;ATL&lt;!-- raw HTML omitted --&gt; (Abstract Template Library) as a thin wrapper on top of the underlying Windows scaffolding (e.g. the winproc, the message pump and so on). Compared to hand rolling this plumbing yourself, ATL (although its largly macro based) keeps the code lean and mean. I plan to use this as a shell DirectX render target for testing. For buildable VS2012 solution see &lt;a href=&#34;https://github.com/benjaminify/WindowsAtlSkeleton&#34;&gt;github&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43;11 with Clang on Windows and MinGW</title>
      <link>https://www.bencode.io/posts/2012-10-20-clangonwindows/</link>
      <pubDate>Sat, 20 Oct 2012 10:44:33 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2012-10-20-clangonwindows/</guid>
      <description>&lt;p&gt;Installation steps for getting a functional Clang++ build running on Windows 8 and MinGW.&lt;/p&gt;
&lt;h2 id=&#34;step-1&#34;&gt;Step 1&lt;/h2&gt;
&lt;p&gt;Install &lt;a href=&#34;https://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/&#34;&gt;MinGW&lt;/a&gt;. Using &lt;code&gt;mingw-get-inst-20120426.exe&lt;/code&gt; go with the pre-packaged repository catalogues, which bundles in GCC 4.6.1 as opposed to 4.7.x, which at the time of writing Clang does not support seemlessly. You will need the C Compiler, C++ Compiler, MSYS Basic System and MinGW Developer Toolkit MinGW packages.&lt;/p&gt;
&lt;h2 id=&#34;step-2&#34;&gt;Step 2&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://www.python.org/download/&#34;&gt;Python 2.x&lt;/a&gt;. Install the Python Interpreter and Libraries into &lt;code&gt;c:\MinGW\bin&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>StreamInsight in Azure</title>
      <link>https://www.bencode.io/posts/2012-09-18-streaminsightaustinfun/</link>
      <pubDate>Tue, 18 Sep 2012 05:21:59 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2012-09-18-streaminsightaustinfun/</guid>
      <description>&lt;p&gt;Well, the dust is starting to settle after an amazing geek-out week at the gold coast with the Mexia team. Pre-TechEd Australia 2012, we kicked off with the Mexia&amp;rsquo;s &amp;ldquo;Code Camp 2.0&amp;rdquo;, an opportunity for the team to come together and deep dive (hack code, whiteboard, design and discuss, present) on emerging Microsoft technologies. It was epic to say the least.&lt;/p&gt;
&lt;p&gt;One technology that particularly excites me is &lt;strong&gt;StreamInsight&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Perhaps because my brain has become so conditioned to the existing data storage techniques (relational, normalisation, warehousing, ETL, etc&amp;hellip;) that we regularly apply in the industry, when I first learned of StreamInsight or Complex Event Processing (CEP), it seemed such a natural and elegant fit for so many common data problems we aim to solve today.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to pass 70-513 Windows Communication Foundation 4 Development</title>
      <link>https://www.bencode.io/posts/2012-04-29-70-513/</link>
      <pubDate>Sun, 29 Apr 2012 07:00:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2012-04-29-70-513/</guid>
      <description>&lt;p&gt;My experience preparing for and gaining the TS Windows Communication Foundation Development 4 certification.&lt;/p&gt;
&lt;p&gt;The (~7 year old) WCF stack to my suprise, is much larger than I ever gave it credit for. 70-513 successfully pointed me toward a number of &amp;ldquo;off the beaten track&amp;rdquo; topics, so much so, that I actually quite enjoyed preparing for this exam. Lots of emphasis in the exam on topics such as routing, diagnostics, transactions, sessions and discovery.&lt;/p&gt;</description>
    </item>
    <item>
      <title>F# Cheatsheet</title>
      <link>https://www.bencode.io/posts/2012-04-23-fsharpcheatsheet/</link>
      <pubDate>Mon, 23 Apr 2012 07:00:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2012-04-23-fsharpcheatsheet/</guid>
      <description>&lt;p&gt;The VS11 beta includes a really slick cheatsheet style F# language reference. A gem for groking F# syntax.&lt;/p&gt;
&lt;p&gt;The samples are grouped into modules. A module is just a collection of value, function and type definitions.&lt;/p&gt;
&lt;p&gt;To execute the code in F# Interactive, highlight a line of code and then either type Alt-Enter, or right-click and choose &amp;ldquo;Send to Interactive&amp;rdquo;.  To start F# Interactive, see the &amp;ldquo;View&amp;rdquo; menu.&lt;/p&gt;
&lt;p&gt;For more about F#, see:
&lt;a href=&#34;http://fsharp.net&#34;&gt;http://fsharp.net&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>WCF Error Handling using IErrorHandler and log4net</title>
      <link>https://www.bencode.io/posts/2012-04-11-ierrorhandler/</link>
      <pubDate>Wed, 11 Apr 2012 07:00:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2012-04-11-ierrorhandler/</guid>
      <description>&lt;p&gt;When its comes to managing and supporting WCF services, like any software, having insight into erroronous situtions is essential. There are several ways to go about this that are specific to WCF, such as enabling a trace listener for example. A more customisable option involves fleshing out an &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx&#34;&gt;IErrorHandler&lt;/a&gt;. As put by MSDN, provides the necessary hooks to run custom error processing logic.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Allows an implementer to control the fault message returned to the caller and optionally perform custom error processing such as logging.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Autofac Your WCF</title>
      <link>https://www.bencode.io/posts/2012-03-22-autofac-wcf/</link>
      <pubDate>Thu, 22 Mar 2012 07:00:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2012-03-22-autofac-wcf/</guid>
      <description>&lt;p&gt;Autofac (a .NET IoC container) makes .NET code better. Simple. Controlling the way software interacts with it&amp;rsquo;s components (dependencies) is one powerful way to the increase its &amp;ldquo;bendability&amp;rdquo;. Bendability meaning how well a chunk of software is able to cope with change (this is inevitable). WCF&amp;rsquo;s unique object model (bindings, endpoints, behaviors, contracts, etc) can make doing IoC more of a challenge, however Autofac&amp;rsquo;s native WCF integration comes to the rescue.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SharePoint 2010 Application Development</title>
      <link>https://www.bencode.io/posts/2011-09-15-70-573/</link>
      <pubDate>Thu, 15 Sep 2011 07:00:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2011-09-15-70-573/</guid>
      <description>&lt;p&gt;The SharePoint 2010 platform is dauntingly huge. Fortunately development certification 70-573 (Microsoft SharePoint 2010, Application Development) sticks to the bread and butter fundamentals that is applicable to all forms of custom SharePoint development. For the purposes of 70-573 you can pick up things like FAST, Excel Services, Form Services, Performance Point and toss them out the window. Concepts like lists, libraries, web parts, and delegate controls is what SharePoint development is really about.&lt;/p&gt;</description>
    </item>
    <item>
      <title>.NET 4.0 GAC Post-build Event Command</title>
      <link>https://www.bencode.io/posts/2011-07-09-net-4-postbuild-cmd/</link>
      <pubDate>Sat, 09 Jul 2011 07:00:00 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2011-07-09-net-4-postbuild-cmd/</guid>
      <description>&lt;p&gt;For &lt;a href=&#34;http://stackoverflow.com/questions/2660355/net-4-0-has-a-new-gac-why&#34;&gt;various design reasons&lt;/a&gt; .NET 4.0 has it&amp;rsquo;s own GAC, located here.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%systemroot%\Windows\Microsoft.NET\assembly
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;An updated version 4.0 of gacutil is available as a part of the Windows SDK. Here is a handy VS.NET &amp;ldquo;Post-build event command&amp;rdquo;, that will .NET 4.0 GAC your freshly baked assemblies.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;quot;%programfiles(x86)%\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe&amp;quot; /i &amp;quot;$(TargetPath)&amp;quot;
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>JavaServer Pages</title>
      <link>https://www.bencode.io/posts/2007-02-28-jsp/</link>
      <pubDate>Wed, 28 Feb 2007 09:15:48 +1100</pubDate>
      <guid>https://www.bencode.io/posts/2007-02-28-jsp/</guid>
      <description>&lt;p&gt;As a follow up to previous post [The Servlet API]({% post_url 2007-02-20-servlet-api %}), this post aims to sweeps over some fundamentals of JSP, a technology which thanks to its simple yet extensible design, still to this day, underpins many modern web application frameworks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;JavaServer Pages (JSP) is a technology that helps software developers create dynamically generated web pages based on HTML, XML, or other document types. Released in 1999 by Sun Microsystems.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Servlet API</title>
      <link>https://www.bencode.io/posts/2007-02-20-servlet-api/</link>
      <pubDate>Tue, 20 Feb 2007 13:12:10 +0000</pubDate>
      <guid>https://www.bencode.io/posts/2007-02-20-servlet-api/</guid>
      <description>&lt;p&gt;As you start out building Java web applications, you soon find that it sit upon several well designed building blocks. Once the penny drops, and an intuition about these building blocks is gained, creating web apps on Java becomes a delight.&lt;/p&gt;
&lt;p&gt;Two key, top level concepts are the mighty &lt;em&gt;Servlet API&lt;/em&gt; and &lt;em&gt;JavaServer Pages&lt;/em&gt; (JSP). These are deployed to a Web container, also commonly referred to a Servlet (or Web) container.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
