PageSourceSearch

https://benkaiser.dev/consulting/

html benkaiser.dev collected 2026-09-25 21:22:59 UTC 13,643 bytes, 333 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5    <meta charset="utf-8">
6    <meta name="viewport" content="width=device-width, initial-scale=1">
7    <title>Consulting</title>
8    <link rel="stylesheet" href="/assets/built/screen.css?v=fb7cdb65c1">
9    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Muli:400,400i,700,700i,800">
10
11    
11<script>
12        if (localStorage.getItem('alto_dark') == 'true') {
13            document.documentElement.classList.add('dark-mode');
14        }
15    </script>
15
16
17    <link rel="canonical" href="https://benkaiser.dev/consulting/">
18    <meta name="referrer" content="no-referrer-when-downgrade">
19    
20    <meta property="og:site_name" content="Benjamin Kaiser">
21    <meta property="og:type" content="website">
22    <meta property="og:title" content="Consulting">
23    <meta property="og:description" content="I am available for freelance work, typically around:
24
25 * General software consulting
26 * Software development with a primary focus on web development
27
28Areas of expertise that make me more useful than your average software engineer:
29
30 * Deep knowledge of web performance to deliver blazing-fast web applications
31 * Experience building web applications that function">
32    <meta property="og:url" content="https://benkaiser.dev/consulting/">
33    <meta property="og:image" content="https://benkaiser.dev/content/images/size/w1200/2016/09/SbcqUQ4iEcI-1.jpg">
34    <meta property="article:published_time" content="2022-07-24T13:46:15.000Z">
35    <meta property="article:modified_time" content="2025-03-20T02:37:37.000Z">
36    <meta property="article:publisher" content="https://www.facebook.com/benjaminjkaiser">
37    <meta name="twitter:card" content="summary_large_image">
38    <meta name="twitter:title" content="Consulting">
39    <meta name="twitter:description" content="I am available for freelance work, typically around:
40
41 * General software consulting
42 * Software development with a primary focus on web development
43
44Areas of expertise that make me more useful than your average software engineer:
45
46 * Deep knowledge of web performance to deliver blazing-fast web applications
47 * Experience building web applications that function">
48    <meta name="twitter:url" content="https://benkaiser.dev/consulting/">
49    <meta name="twitter:image" content="https://benkaiser.dev/content/images/size/w1200/2016/09/SbcqUQ4iEcI-1.jpg">
50    <meta name="twitter:label1" content="Written by">
51    <meta name="twitter:data1" content="Benjamin Kaiser">
52    <meta property="og:image:width" content="1200">
53    <meta property="og:image:height" content="800">
54    
55    
55<script type="application/ld+json">
56{
57    "@context": "https://schema.org",
58    "@type": "Article",
59    "publisher": {
60        "@type": "Organization",
61        "name": "Benjamin Kaiser",
62        "url": "https://benkaiser.dev/",
63        "logo": {
64            "@type": "ImageObject",
65            "url": "https://benkaiser.dev/favicon.ico",
66            "width": 48,
67            "height": 48
68        }
69    },
70    "author": {
71        "@type": "Person",
72        "name": "Benjamin Kaiser",
73        "image": {
74            "@type": "ImageObject",
75            "url": "https://benkaiser.dev/content/images/2021/09/00100lPORTRAIT_00100_BURST20190620164942474_COVER_cropped-1.jpeg",
76            "width": 952,
77            "height": 952
78        },
79        "url": "https://benkaiser.dev/author/benjamin/",
80        "sameAs": []
81    },
82    "headline": "Consulting",
83    "url": "https://benkaiser.dev/consulting/",
84    "datePublished": "2022-07-24T13:46:15.000Z",
85    "dateModified": "2025-03-20T02:37:37.000Z",
86    "description": "I am available for freelance work, typically around:\n\n * General software consulting\n * Software development with a primary focus on web development\n\nAreas of expertise that make me more useful than your average software engineer:\n\n * Deep knowledge of web performance to deliver blazing-fast web applications\n * Experience building web applications that function completely offline\n * Experience converting web applications into progressive web applications at enterprise scale\n * Experience buildin",
87    "mainEntityOfPage": "https://benkaiser.dev/consulting/"
88}
89    </script>
89
90
91    <meta name="generator" content="Ghost 6.45">
92    <link rel="alternate" type="application/rss+xml" title="Benjamin Kaiser" href="https://benkaiser.dev/rss/">
93    
94    
94<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="49efc2e09e4f99c98b847510c1" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://benkaiser.dev/" data-locale="en" crossorigin="anonymous"></script>
94
95    
96    <link href="https://benkaiser.dev/webmentions/receive/" rel="webmention">
97    
97<script defer src="/public/cards.min.js?v=fb7cdb65c1"></script>
97<style>:root {--ghost-accent-color: #44bbff;}</style>
98    <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=fb7cdb65c1">
99    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/line-numbers/prism-line-numbers.min.css" integrity="sha512-cbQXwDFK7lj2Fqfkuxbo5iD1dSbLlJGXGpfTDqbggqjHJeyzx88I3rfwjS38WJag/ihH7lzuGlGHpDBymLirZQ==" crossorigin="anonymous" />
100<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism-tomorrow.min.css" integrity="sha512-vswe+cgvic/XBoF1OcM/TeJ2FW0OofqAVdCZiEYkd6dwGXthvkSFWOoGGJgS2CW70VK5dQM5Oh+7ne47s74VTg==" crossorigin="anonymous" />
101<style>
102/* bootstrap button styles */
103.btn-primary {
104    background-color: #0d6efd;
105    border-color: #0d6efd;
106}
107.btn {
108    display: inline-block;
109    font-weight: 400;
110    line-height: 1.5;
111    color: #fff !important;
112    text-align: center;
113    text-decoration: none;
114    vertical-align: middle;
115    cursor: pointer;
116    -webkit-user-select: none;
117    -moz-user-select: none;
118    user-select: none;
119    padding: .375rem .75rem;
120    font-size: 1rem;
121    border-radius: .25rem;
122    transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
123    text-decoration: none !important;
124}
125.btn.btn-cta {
126    padding: 10px 20px;
127    font-size: 20px;
128    display: block;
129    width: fit-content;
130    margin: 0 auto;
131}
132.btn-primary:active {
133    color: #fff;
134    background-color: #0a58ca;
135    border-color: #0a53be;
136}
137.btn-primary:hover {
138    color: #fff;
139    background-color: #0b5ed7;
140    border-color: #0a58ca;
141}
142.btn-primary:focus {
143    color: #fff;
144    background-color: #0b5ed7;
145    border-color: #0a58ca;
146    box-shadow: 0 0 0 0.25rem rgb(49 132 253 / 50%);
147}
148blockquote {
149    font-size: 16px;
150    color: var(--primary-text-color);
151    margin-block-start: 0;
152    margin-block-end: 0;
153    margin-inline-start: 0;
154    margin-inline-end: 0;
155    border-left: 2px solid var(--primary-color);
156    padding-inline-start: 1.5em;
157    font-weight: 500;
158    font-style: italic;
159}
160    table {
161  width: 100%;
162  border-collapse: collapse;
163  font-family: sans-serif;
164  color: #333;
165  background-color: #fff;
166}
167
168th, td {
169  border: 1px solid #ccc;
170  padding: 8px 12px;
171  text-align: left;
172}
173
174thead {
175  background-color: #f2f2f2;
176}
177
178tbody tr:nth-child(odd) {
179  background-color: #f9f9f9;
180}
181
182tbody tr:nth-child(even) {
183  background-color: #ffffff;
184}
185
186/* Dark mode styles */
187html.dark-mode table {
188  color: #ddd;
189  background-color: #1e1e1e;
190}
191
192html.dark-mode th,
193html.dark-mode td {
194  border: 1px solid #444;
195}
196
197html.dark-mode thead {
198  background-color: #2a2a2a;
199}
200
201html.dark-mode tbody tr:nth-child(odd) {
202  background-color: #2e2e2e;
203}
204
205html.dark-mode tbody tr:nth-child(even) {
206  background-color: #252525;
207}
208</style>
209
210<amp-analytics type="googleanalytics" config="https://amp.analytics-debugger.com/ga4.json" data-credentials="include">
211<script type="application/json">
212{
213    "vars": {
214                "GA4_MEASUREMENT_ID": "G-W76R2M6NH6",
215                "GA4_ENDPOINT_HOSTNAME": "www.google-analytics.com",
216                "DEFAULT_PAGEVIEW_ENABLED": true,    
217                "GOOGLE_CONSENT_ENABLED": false,
218                "WEBVITALS_TRACKING": false,
219                "PERFORMANCE_TIMING_TRACKING": false,
220                "SEND_DOUBLECLICK_BEACON": false
221    }
222}
223</script>
223
224</amp-analytics>
225</head>
226
227<body class="page-template page-consulting">
228    <div class="site">
229        <header class="site-header container">
230    <div class="navbar">
231        <div class="navbar-left">
232            <div class="burger hidden-lg hidden-xl"></div>
233            <a class="logo" href="https://benkaiser.dev">
234        <span class="logo-text">Benjamin Kaiser</span>
235</a>            <div class="sep hidden-xs hidden-sm hidden-sm"></div>
236                <nav class="main-menu hidden-xs hidden-sm hidden-md">
237                    <ul class="nav-list u-plain-list">
238        <li class="menu-item menu-item-home"><a class="menu-item-link"
239                href="https://blog.kaiser.lol/">Home</a></li>
240        <li class="menu-item menu-item-github"><a class="menu-item-link"
241                href="https://github.com/benkaiser">GitHub</a></li>
242        <li class="menu-item menu-item-mentoring"><a class="menu-item-link"
243                href="https://mentorcruise.com/mentor/benjaminkaiser/">Mentoring</a></li>
244        <li class="menu-item menu-item-consulting menu-item-current"><a class="menu-item-link"
245                href="https://benkaiser.dev/consulting/">Consulting</a></li>
246        <li class="menu-item menu-item-about"><a class="menu-item-link"
247                href="https://blog.kaiser.lol/about/">About</a></li>
248</ul>
249                </nav>
250        </div>
251        <div class="navbar-right">
252            <div class="toggle-track">
253                <div class="toggle-moon"><i class="icon icon-brightness-2"></i></div>
254                <div class="toggle-sun"><i class="icon icon-white-balance-sunny"></i></div>
255                <div class="toggle-thumb"></div>
256            </div>
257        </div>
258    </div>
259</header>        <div class="site-content">
260            
261<div class="content-area">
262    <main class="site-main">
263            <article class="post no-image no-image single-post">
264                <header class="post-header big-title container medium">
265        <h1 class="post-title">Consulting</h1>
266</header>                                <div class="post-content kg-canvas u-text-format">
267                    <p>I am available for freelance work, typically around:</p><ul><li>General software consulting</li><li>Software development with a primary focus on web development</li></ul><p>Areas of expertise that make me more useful than your average software engineer:</p><ul><li>Deep knowledge of web performance to deliver blazing-fast web applications</li><li>Experience building web applications that function completely offline</li><li>Experience converting web applications into progressive web applications at enterprise scale</li><li>Experience building highly technical applications to automate business processes</li></ul><p>I typically bill at a rate of $200 AUD/h, but lower rates can be negotiated for registered charity work. If you would be interested in hiring me, please reach out to consulting @ the domain of this website.</p>
268                </div>
269            </article>
270    </main>
271</div>
272        </div>
273        <footer class="site-footer container large">
274    <div class="copyright">
275        Powered by <a href="https://ghost.org/" target="_blank" rel="noopener">Ghost</a>
276    </div>
277
278    <a class="logo" href="https://benkaiser.dev">
279        <span class="logo-text">Benjamin Kaiser</span>
280</a>
281    <div class="footer-social">
282            <a class="footer-social-item footer-social-item-facebook" href="https://www.facebook.com/benjaminjkaiser"
283                target="_blank" rel="noopener" aria-label="Facebook">
284                <i class="icon icon-facebook"></i>
285            </a>
286        <a class="footer-social-item footer-social-item-rss"
287            href="https://feedly.com/i/subscription/feed/https://benkaiser.dev/rss/" target="_blank" rel="noopener"
288            aria-label="RSS">
289            <i class="icon icon-rss"></i>
290        </a>
291    </div>
292</footer>    </div>
293
294    <div class="dimmer"></div>
295
296    <div class="off-canvas">
297        <div class="canvas-close">
298            <i class="canvas-icon icon icon-window-close"></i>
299        </div>
300        <div class="mobile-menu"></div>
301    </div>
302
303    
303<script
304        src="https://code.jquery.com/jquery-3.5.1.min.js"
305        integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
306        crossorigin="anonymous">
307    </script>
307
308    
308<script src="/assets/built/main.min.js?v=fb7cdb65c1"></script>
308
309
310    
311
312    <!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 312-313
312
313<script async src="https://www.googletagmanager.com/gtag/js?id=
313G-W76R2M6NH6
vendor: 12 bytes, line 313
313"></script>
314<script>
315  
vendor: 134 bytes, lines 315-319
315window.dataLayer = window.dataLayer || [];
316  function gtag(){dataLayer.push(arguments);}
317  gtag('js', new Date());
318
319  gtag('config', '
319G-W76R2M6NH6
vendor: 4 bytes, line 319
319');
320</script>
vendor: 1 bytes, line 320
320
321<script>
322    window.addEventListener('DOMContentLoaded', (event) => {
323        document.querySelectorAll('pre[class*=language-]').forEach(function (node) {
324            node.classList.add('line-numbers');
325        });
326        Prism.highlightAll();
327    });
328</script>
vendor: 1 bytes, line 328
328
329<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/prism.min.js" integrity="sha512-YBk7HhgDZvBxmtOfUdvX0z8IH2d10Hp3aEygaMNhtF8fSOvBZ16D/1bXZTJV6ndk/L/DlXxYStP8jrF77v2MIg==" crossorigin="anonymous"></script>
vendor: 1 bytes, line 329
329
330<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/line-numbers/prism-line-numbers.min.js" integrity="sha512-br8H6OngKoLht57WKRU5jz3Vr0vF+Tw4G6yhNN2F3dSDheq4JiaasROPJB1wy7PxPk7kV/+5AIbmoZLxxx7Zow==" crossorigin="anonymous"></script>
330
331</body>
332
333</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.