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.