<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Rob on Blog Title</title>
    <link>https://blogtitle.github.io/authors/rob/</link>
    <description>Recent content in Rob on Blog Title</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 16 Dec 2024 22:19:23 +0100</lastBuildDate>
    
	<atom:link href="https://blogtitle.github.io/authors/rob/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Go advanced concurrency patterns: part 4 (unlimited buffer channels)</title>
      <link>https://blogtitle.github.io/go-advanced-concurrency-patterns-part-4-unlimited-buffer-channels/</link>
      <pubDate>Mon, 16 Dec 2024 22:19:23 +0100</pubDate>
      
      <guid>https://blogtitle.github.io/go-advanced-concurrency-patterns-part-4-unlimited-buffer-channels/</guid>
      <description>Preface It&amp;rsquo;s been almost 6 years since I added to this series, but I thought it was time to resume working on it.
Since &amp;ldquo;perfect is the opposite of done&amp;rdquo; I thought I would talk about a simple pattern that I haven&amp;rsquo;t covered yet.
A couple of years ago I worked on a toy library to see if the new-ish generics proposal would finally allow to express some of the most common channel patterns in Go.</description>
    </item>
    
    <item>
      <title>Let&#39;s Go to Go2</title>
      <link>https://blogtitle.github.io/lets-go-to-go2/</link>
      <pubDate>Fri, 07 May 2021 09:04:30 +0200</pubDate>
      
      <guid>https://blogtitle.github.io/lets-go-to-go2/</guid>
      <description>Preface In my previous post I summarized the latest generics proposal for Go.
In this post I&amp;rsquo;m gonna use it a bit, and misuse it a lot.
The problem Sometimes I find myself writing code to run the same function in parallel with itself with different inputs, for example to process a batch of data.
This is not super complicated code, but it&amp;rsquo;s not exactly straightforward and can sometimes be tricky to get right.</description>
    </item>
    
    <item>
      <title>Go Generics</title>
      <link>https://blogtitle.github.io/go-generics/</link>
      <pubDate>Fri, 07 May 2021 05:54:36 +0200</pubDate>
      
      <guid>https://blogtitle.github.io/go-generics/</guid>
      <description>Preface Go doesn&amp;rsquo;t have generics yet, but there is a proposal that looks promising, and this post refers to that.
Here is a version of the playground you can use to try this proposal out if you want to experiment without installing any tools.
Functions Converting a slice into a channel. This is not necessarily the most useful function but it&amp;rsquo;s a good and simple example:
func chanFromSlice[T any](in []T) chan T { c := make(chan T, len(in)) for _, v := range in { c &amp;lt;- v } return c } Here you can see that this looks and feels like Go, with the only difference of the [T any] bit.</description>
    </item>
    
    <item>
      <title>Go Safe HTML</title>
      <link>https://blogtitle.github.io/go-safe-html/</link>
      <pubDate>Tue, 30 Jun 2020 13:03:31 +0200</pubDate>
      
      <guid>https://blogtitle.github.io/go-safe-html/</guid>
      <description>Disclaimer: this is not an official Google post or communication, it is just me commenting on something that is now available.
 The Google infosec team just released the Go &amp;ldquo;safehtml&amp;rdquo; package. If you are interested in making your application resilient to server-side XSS you might want to adopt it instead of &amp;ldquo;html/template&amp;rdquo;. Migration to safehtml should be quite straightforward as it is just a hardened fork of the original html/template standard package.</description>
    </item>
    
    <item>
      <title>I Am Switching to JS</title>
      <link>https://blogtitle.github.io/i-am-switching-to-js/</link>
      <pubDate>Wed, 01 Apr 2020 00:00:00 +0300</pubDate>
      
      <guid>https://blogtitle.github.io/i-am-switching-to-js/</guid>
      <description>After 5 years of using Go I am finally moving on. Go has served me well and has been the best language I could have possibly used for the longest time, but it is now the moment for me to let it Go.
Over time Go has not failed to show me its limitations and its issues, to the point where I decided to switch to something more future proof and with a more thriving community.</description>
    </item>
    
    <item>
      <title>Sneaky race conditions and granular locks</title>
      <link>https://blogtitle.github.io/sneaky-race-conditions-and-granular-locks/</link>
      <pubDate>Wed, 11 Dec 2019 09:33:58 +0100</pubDate>
      
      <guid>https://blogtitle.github.io/sneaky-race-conditions-and-granular-locks/</guid>
      <description>Race conditions are the main problem you have to care about when writing concurrent code. Go provides high level primitives that make it easier to get concurrency and parallelism right, but those are often times not enough.
This is one of the reasons why Go has a race detector. You should always run your tests and, where possible, a portion of your production fleet with -race enabled. Beware that this might still not be enough: the detector only triggers when a race manifests and not all races are detected by it.</description>
    </item>
    
    <item>
      <title>Go advanced concurrency patterns: part 3 (channels)</title>
      <link>https://blogtitle.github.io/go-advanced-concurrency-patterns-part-3-channels/</link>
      <pubDate>Thu, 05 Dec 2019 20:07:04 +0100</pubDate>
      
      <guid>https://blogtitle.github.io/go-advanced-concurrency-patterns-part-3-channels/</guid>
      <description>Edit (16 Dec 2024) This post is still here for historical reasons, but it&amp;rsquo;s now quite old.
The sync package has evolved since then and some primitives have become available.
While all the channel and select semantics have stayed the same, please consider this as a post on how to better understand channels semantics rather than documentation or replacement for the sync package.
Previous Post Today I&amp;rsquo;m going to dive into the expressive power of Go channels and the select statement.</description>
    </item>
    
    <item>
      <title>Rob&#39;n Go security pearls: Cross Site Scripting (XSS)</title>
      <link>https://blogtitle.github.io/robn-go-security-pearls-cross-site-scripting-xss/</link>
      <pubDate>Wed, 11 Sep 2019 23:23:40 +0200</pubDate>
      
      <guid>https://blogtitle.github.io/robn-go-security-pearls-cross-site-scripting-xss/</guid>
      <description>This post is part of my developer-friendly security series. You can find all other posts here.
 XSS is a vulnerability that allows attackers to run arbitrary JavaScript code in applications they shouldn&amp;rsquo;t be able to control. This can lead to complete account compromises for every victim that follows a malicious link or visits a compromised page.
There are two major families of XSS: server side and client side.</description>
    </item>
    
    <item>
      <title>Rob&#39;n Go security pearls: fundamentals</title>
      <link>https://blogtitle.github.io/robn-go-security-pearls-fundamentals/</link>
      <pubDate>Thu, 05 Sep 2019 12:25:40 +0200</pubDate>
      
      <guid>https://blogtitle.github.io/robn-go-security-pearls-fundamentals/</guid>
      <description>Welcome to this introductory series on web security. I&amp;rsquo;ll use simple snippets and hands-on examples to introduce fundamentals on the topic. Most server-side code will be in Go but you&amp;rsquo;ll be able to understand it if you know any C-like language.
This first post is about the fundamentals: URI, HTTP, TLS, HTML, escaping and cookies. If you are already familiar with those concepts please feel free to skip to the next post.</description>
    </item>
    
    <item>
      <title>Using JavaScript SharedArrayBuffers and Atomics</title>
      <link>https://blogtitle.github.io/using-javascript-sharedarraybuffers-and-atomics/</link>
      <pubDate>Fri, 22 Mar 2019 12:42:05 +0100</pubDate>
      
      <guid>https://blogtitle.github.io/using-javascript-sharedarraybuffers-and-atomics/</guid>
      <description>I&amp;rsquo;m not a big fan of JavaScript but I like parallel programming and JS has some interesting concepts of it.
In addition to the event loop I&amp;rsquo;ve recently got to know the concept of Web Workers. They are real threads that execute in parallel with the main thread, and are allowed to wait and block as much as they want.
Modern devices are going in the direction of having a lot of FPS and web developers want to maintain the user experience smooth.</description>
    </item>
    
  </channel>
</rss>