<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Umberto Raimondi's Blog</title>
 <link href="http://www.uraimo.com/atom.xml" rel="self"/>
 <link href="http://www.uraimo.com/"/>
 <updated>2019-04-11T00:00:00Z</updated>
 <id>https://www.uraimo.com/</id>
 <author>
   <name>Umberto Raimondi</name>
   <email>me@uraimo.com</email>
 </author>

 <entry>
   <title>A Long Overdue Update on Swift 5.0 For Raspberry Pi Zero/1/2/3</title>
   <link href="https://www.uraimo.com/2019/04/11/A-long-overdue-update-on-Swift-5-0-for-raspberry-pi-zero-1-2-3/"/>
   <updated>2019-04-11T00:00:00Z</updated>
   <id>https://www.uraimo.com/2019/04/11/A-long-overdue-update-on-Swift-5-0-for-raspberry-pi-zero-1-2-3</id>
   <summary type="html">The current status of Swift 5.0 on ARM-based boards like the Raspberry Pis.</summary>
   <content type="html">The current status of Swift 5.0 on ARM-based boards like the Raspberry Pis.</content>
 </entry>
 
 <entry>
   <title>A Big Update on Swift 4.1.2 For Raspberry Pi Zero/1/2/3</title>
   <link href="https://www.uraimo.com/2018/06/13/A-big-update-on-Swift-4-1-2-for-raspberry-pi-zero-1-2-3/"/>
   <updated>2018-06-13T00:00:00Z</updated>
   <id>https://www.uraimo.com/2018/06/13/A-big-update-on-Swift-4-1-2-for-raspberry-pi-zero-1-2-3</id>
   <summary type="html">The current status of Swift 4.1 on ARM-based boards like the Raspberry Pis.</summary>
   <content type="html">The current status of Swift 4.1 on ARM-based boards like the Raspberry Pis.</content>
 </entry>
 
 <entry>
   <title>A Small Update on Swift For Raspberry Pi Zero/1/2/3</title>
   <link href="https://www.uraimo.com/2017/09/06/A-small-update-on-Swift-for-raspberry-pi-zero-1-2-3/"/>
   <updated>2017-09-06T00:00:00Z</updated>
   <id>https://www.uraimo.com/2017/09/06/A-small-update-on-Swift-for-raspberry-pi-zero-1-2-3</id>
   <summary type="html">The current status of Swift on ARM-based boards like the Raspberry Pis.</summary>
   <content type="html">The current status of Swift on ARM-based boards like the Raspberry Pis.</content>
 </entry>
 
 <entry>
   <title>All about Concurrency in Swift - Part 2: The Future</title>
   <link href="https://www.uraimo.com/2017/07/22/all-about-concurrency-in-swift-2-the-future/"/>
   <updated>2017-07-22T00:00:00Z</updated>
   <id>https://www.uraimo.com/2017/07/22/all-about-concurrency-in-swift-2-the-future</id>
   <summary type="html">Discussions on how concurrency should be handled natively in Swift will soon start, new paradigms will be introduced and a swifty approach to concurrency will be defined. This article is an introduction to these topics, it could be useful if you plan to contribute to swift-evolution or even if you just want to experiment with something new using the recommended opensource libraries.</summary>
   <content type="html">Discussions on how concurrency should be handled natively in Swift will soon start, new paradigms will be introduced and a swifty approach to concurrency will be defined. This article is an introduction to these topics, it could be useful if you plan to contribute to swift-evolution or even if you just want to experiment with something new using the recommended opensource libraries.</content>
 </entry>
 
 <entry>
   <title>All about Concurrency in Swift - Part 1: The Present</title>
   <link href="https://www.uraimo.com/2017/05/07/all-about-concurrency-in-swift-1-the-present/"/>
   <updated>2017-05-07T00:00:00Z</updated>
   <id>https://www.uraimo.com/2017/05/07/all-about-concurrency-in-swift-1-the-present</id>
   <summary type="html">There are a few alternatives regarding how to handle concurrency from Swift, this article will discuss everything you have at your disposal right now, to prepare the ground to the next part of this series that will discuss what is likely to come next.</summary>
   <content type="html">There are a few alternatives regarding how to handle concurrency from Swift, this article will discuss everything you have at your disposal right now, to prepare the ground to the next part of this series that will discuss what is likely to come next.</content>
 </entry>
 
 <entry>
   <title>An Update on Swift 3.1.1 For Raspberry Pi Zero/1/2/3</title>
   <link href="https://www.uraimo.com/2017/05/01/An-update-on-Swift-3-1-1-for-raspberry-pi-zero-1-2-3/"/>
   <updated>2017-05-01T00:00:00Z</updated>
   <id>https://www.uraimo.com/2017/05/01/An-update-on-Swift-3-1-1-for-raspberry-pi-zero-1-2-3</id>
   <summary type="html">The current status of Swift 3.1.1 on ARM-based boards like the Raspberry Pis.</summary>
   <content type="html">The current status of Swift 3.1.1 on ARM-based boards like the Raspberry Pis.</content>
 </entry>
 
 <entry>
   <title>Building a LISP from scratch with Swift</title>
   <link href="https://www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift/"/>
   <updated>2017-02-05T00:00:00Z</updated>
   <id>https://www.uraimo.com/2017/02/05/building-a-lisp-from-scratch-with-swift</id>
   <summary type="html">This article describes how you can build a simple LISP, based on the 1978 article &lt;i&gt;'A Micro Manual For LISP - Not The Whole Truth'&lt;/i&gt; with Swift, taking advantage where possible of the features the language offers.</summary>
   <content type="html">This article describes how you can build a simple LISP, based on the 1978 article &lt;i&gt;'A Micro Manual For LISP - Not The Whole Truth'&lt;/i&gt; with Swift, taking advantage where possible of the features the language offers.</content>
 </entry>
 
 <entry>
   <title>Swift 3.0.2 For Raspberry Pi Zero/1/2/3</title>
   <link href="https://www.uraimo.com/2016/12/30/Swift-3-0-2-for-raspberrypi-zero-1-2-3/"/>
   <updated>2016-12-30T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/12/30/Swift-3-0-2-for-raspberrypi-zero-1-2-3</id>
   <summary type="html">Swift for all the Raspberry Pi boards, built on Ubuntu16.04 for RaspberryPi 2/3 and on Raspbian for the original RaspberryPis (A,B,A+,B+).</summary>
   <content type="html">Swift for all the Raspberry Pi boards, built on Ubuntu16.04 for RaspberryPi 2/3 and on Raspbian for the original RaspberryPis (A,B,A+,B+).</content>
 </entry>
 
 <entry>
   <title>Unowned or Weak? Lifetime and Performance</title>
   <link href="https://www.uraimo.com/2016/10/27/unowned-or-weak-lifetime-and-performance/"/>
   <updated>2016-10-27T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/10/27/unowned-or-weak-lifetime-and-performance</id>
   <summary type="html">While the usual explanation that when dealing with retain cycles you should choose between unowned or weak considering references lifetime is by now well known, sometimes you are still in doubt about which one you should actually use between the two and if defensively using only weak references is a good idea. This article helps you choose which one to use discussion about object lifetimes and weak references performance.</summary>
   <content type="html">While the usual explanation that when dealing with retain cycles you should choose between unowned or weak considering references lifetime is by now well known, sometimes you are still in doubt about which one you should actually use between the two and if defensively using only weak references is a good idea. This article helps you choose which one to use discussion about object lifetimes and weak references performance.</content>
 </entry>
 
 <entry>
   <title>Recursive Tail Calls and Trampolines in Swift</title>
   <link href="https://www.uraimo.com/2016/05/05/recursive-tail-calls-and-trampolines-in-swift/"/>
   <updated>2016-05-05T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/05/05/recursive-tail-calls-and-trampolines-in-swift</id>
   <summary type="html">The use of recursion can improve the overall design of your algorithms but it leaves you susceptible to stack overflows if the compiler is unable to perform specific optimizations. In this post we'll see what tail recursion and TCO are and how the use of trampolines can overcome the fact that we cannot rely on the Swift compiler performing tail call elimination.</summary>
   <content type="html">The use of recursion can improve the overall design of your algorithms but it leaves you susceptible to stack overflows if the compiler is unable to perform specific optimizations. In this post we'll see what tail recursion and TCO are and how the use of trampolines can overcome the fact that we cannot rely on the Swift compiler performing tail call elimination.</content>
 </entry>
 
 <entry>
   <title>Swift And C: Everything You Need to Know on Types, Pointers and more</title>
   <link href="https://www.uraimo.com/2016/04/07/swift-and-c-everything-you-need-to-know/"/>
   <updated>2016-04-07T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/04/07/swift-and-c-everything-you-need-to-know</id>
   <summary type="html">Now that Swift is available on Linux and other OSes, there are even more situations where you could need to interact with C code from your Swift 3 application. This article will hopefully shed some light on the most non-obvious details and give you some practical examples and tips of how to interact with C APIs like the C standard library.</summary>
   <content type="html">Now that Swift is available on Linux and other OSes, there are even more situations where you could need to interact with C code from your Swift 3 application. This article will hopefully shed some light on the most non-obvious details and give you some practical examples and tips of how to interact with C APIs like the C standard library.</content>
 </entry>
 
 <entry>
   <title>A Recap of the Swift Porting Efforts #2</title>
   <link href="https://www.uraimo.com/2016/03/11/recap-of-swift-porting-efforts-2/"/>
   <updated>2016-03-11T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/03/11/recap-of-swift-porting-efforts-2</id>
   <summary type="html">Since the first installment of this series a few established ports have received updates and a few new things have finally landed on master. Let's recap what happened in the last month on the front of porting Swift on other platforms.</summary>
   <content type="html">Since the first installment of this series a few established ports have received updates and a few new things have finally landed on master. Let's recap what happened in the last month on the front of porting Swift on other platforms.</content>
 </entry>
 
 <entry>
   <title>Swift 3.0 now available for all the ARMv6 RaspberryPi (1,Zero)</title>
   <link href="https://www.uraimo.com/2016/03/10/swift-3-available-on-armv6-raspberry-1-zero/"/>
   <updated>2016-03-10T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/03/10/swift-3-available-on-armv6-raspberry-1-zero</id>
   <summary type="html">After the Swift 2.2 binaries, you can now download Swift 3.0 compiled for ARMv6 single board computers, all models of RaspberryPi 1 and the new Zero.</summary>
   <content type="html">After the Swift 2.2 binaries, you can now download Swift 3.0 compiled for ARMv6 single board computers, all models of RaspberryPi 1 and the new Zero.</content>
 </entry>
 
 <entry>
   <title>Swift available for all the ARMv6 RaspberryPi (1,Zero)</title>
   <link href="https://www.uraimo.com/2016/02/10/swift-available-on-armv6-raspberry-1-zero/"/>
   <updated>2016-02-10T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/02/10/swift-available-on-armv6-raspberry-1-zero</id>
   <summary type="html">Swift compiled for ARMv6 single board computers, all models of RaspberryPi 1 and the new Zero.</summary>
   <content type="html">Swift compiled for ARMv6 single board computers, all models of RaspberryPi 1 and the new Zero.</content>
 </entry>
 
 <entry>
   <title>A Short Swift GYB Tutorial</title>
   <link href="https://www.uraimo.com/2016/02/09/a-short-swift-gyb-tutorial/"/>
   <updated>2016-02-09T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/02/09/a-short-swift-gyb-tutorial</id>
   <summary type="html">The GYB tool is used internally in Swift to simplify source files with many snippets of code that follow a common pattern. GYB provides some additional directives that are parsed by the tool to generate the final source files. This short tutorial describes how to use GYB in your own projects.</summary>
   <content type="html">The GYB tool is used internally in Swift to simplify source files with many snippets of code that follow a common pattern. GYB provides some additional directives that are parsed by the tool to generate the final source files. This short tutorial describes how to use GYB in your own projects.</content>
 </entry>
 
 <entry>
   <title>Dealing with Bit Sets in Swift</title>
   <link href="https://www.uraimo.com/2016/02/05/Dealing-With-Bit-Sets-In-Swift/"/>
   <updated>2016-02-05T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/02/05/Dealing-With-Bit-Sets-In-Swift</id>
   <summary type="html">Swift provides a convenient set of functionalities for fixed size integers and binary operations but you'll soon discover that in some cases the language is a bit opinionated in regard to how those operations should be performed. This post explains some of the gotchas and describe Bitter, a Swift bit manipulation library.</summary>
   <content type="html">Swift provides a convenient set of functionalities for fixed size integers and binary operations but you'll soon discover that in some cases the language is a bit opinionated in regard to how those operations should be performed. This post explains some of the gotchas and describe Bitter, a Swift bit manipulation library.</content>
 </entry>
 
 <entry>
   <title>A Recap of the Swift Porting Efforts #1</title>
   <link href="https://www.uraimo.com/2016/02/02/recap-of-swift-porting-efforts/"/>
   <updated>2016-02-02T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/02/02/recap-of-swift-porting-efforts</id>
   <summary type="html">A lot has happened since Swift was made opensource and the community is every day more involved with every aspect of the language and platform, but porting the language to other platforms is where the community really shines. This post gives an overview of all the community porting efforts underway to support ARMv7/ARMv6, Android, FreeBSD, Windows.</summary>
   <content type="html">A lot has happened since Swift was made opensource and the community is every day more involved with every aspect of the language and platform, but porting the language to other platforms is where the community really shines. This post gives an overview of all the community porting efforts underway to support ARMv7/ARMv6, Android, FreeBSD, Windows.</content>
 </entry>
 
 <entry>
   <title>10 Swift One Liners To Impress Your Friends</title>
   <link href="https://www.uraimo.com/2016/01/06/10-Swift-One-Liners-To-Impress-Your-Friends/"/>
   <updated>2016-01-06T00:00:00Z</updated>
   <id>https://www.uraimo.com/2016/01/06/10-Swift-One-Liners-To-Impress-Your-Friends</id>
   <summary type="html">Following a programming meme of a few years ago, this post presents a few Swift one liners that solve common problems following a functional approach. Will some of your friends be impressed?</summary>
   <content type="html">Following a programming meme of a few years ago, this post presents a few Swift one liners that solve common problems following a functional approach. Will some of your friends be impressed?</content>
 </entry>
 
 <entry>
   <title>Xcode 7.2 and Swift 2.1.1 Released [Updated, XCode 7.2.1]</title>
   <link href="https://www.uraimo.com/2015/12/08/XCode-7.2-and-Swift-2.1.1-released/"/>
   <updated>2015-12-08T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/12/08/XCode-7.2-and-Swift-2.1.1-released</id>
   <summary type="html">A new XCode version and a maintenance release of the Swift compiler are now available</summary>
   <content type="html">A new XCode version and a maintenance release of the Swift compiler are now available</content>
 </entry>
 
 <entry>
   <title>Swift 3.0 Upcoming Changes</title>
   <link href="https://www.uraimo.com/2015/12/03/Swift-3-upcoming-changes/"/>
   <updated>2015-12-03T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/12/03/Swift-3-upcoming-changes</id>
   <summary type="html">Swift is now finally opensource, this post introduces the features and modifications that will be available with release 3.0 of the language.</summary>
   <content type="html">Swift is now finally opensource, this post introduces the features and modifications that will be available with release 3.0 of the language.</content>
 </entry>
 
 <entry>
   <title>Experimenting with Swift 3 Sequences and Iterators</title>
   <link href="https://www.uraimo.com/2015/11/12/experimenting-with-swift-2-sequencetype-generatortype/"/>
   <updated>2015-11-12T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/11/12/experimenting-with-swift-2-sequencetype-generatortype</id>
   <summary type="html">In this article, part of a series on Swift and the functional approach, we'll explore what we need to do to build our own sequences in Swift 3, discuss the differences between finite and infinite sequences and examine what we can do with them in a few example scenarios.</summary>
   <content type="html">In this article, part of a series on Swift and the functional approach, we'll explore what we need to do to build our own sequences in Swift 3, discuss the differences between finite and infinite sequences and examine what we can do with them in a few example scenarios.</content>
 </entry>
 
 <entry>
   <title>Error Handling: From Objective-C to Swift and Back</title>
   <link href="https://www.uraimo.com/2015/11/03/error-handling-from-objective-c-to-swift-2-and-back/"/>
   <updated>2015-11-03T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/11/03/error-handling-from-objective-c-to-swift-2-and-back</id>
   <summary type="html">Swift introduces error handling constructs like do,try,catch and try?, in this, I hope, comprehensive article we'll discuss this new feature in detail, how it affects the base frameworks and how Swift modules with the new error handling can be integrated in legacy Objective-C applications.</summary>
   <content type="html">Swift introduces error handling constructs like do,try,catch and try?, in this, I hope, comprehensive article we'll discuss this new feature in detail, how it affects the base frameworks and how Swift modules with the new error handling can be integrated in legacy Objective-C applications.</content>
 </entry>
 
 <entry>
   <title>Effective Method Swizzling in Swift</title>
   <link href="https://www.uraimo.com/2015/10/23/effective-method-swizzling-with-swift/"/>
   <updated>2015-10-23T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/10/23/effective-method-swizzling-with-swift</id>
   <summary type="html">Despite the static nature of the language, it's still possible to perform method swizzling (runtime method implementation substitution) in Swift following a few simple rules.</summary>
   <content type="html">Despite the static nature of the language, it's still possible to perform method swizzling (runtime method implementation substitution) in Swift following a few simple rules.</content>
 </entry>
 
 <entry>
   <title>Swift 3: Map and FlatMap Demystified</title>
   <link href="https://www.uraimo.com/2015/10/08/Swift2-map-flatmap-demystified/"/>
   <updated>2015-10-08T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/10/08/Swift2-map-flatmap-demystified</id>
   <summary type="html">Swift is a language still slightly in flux, with new functionalities and alterations of behavior being introduced in every release. Much has already been written about the functional aspects of Swift and how to approach problems following a more functional approach.&lt;br/&gt;This short article will try to give a clear and complete explanation of how &lt;i&gt;map&lt;/i&gt; and especially &lt;i&gt;flatMap&lt;/i&gt; work for different types in Swift 2.0 and 3.0, with references to the current library headers.</summary>
   <content type="html">Swift is a language still slightly in flux, with new functionalities and alterations of behavior being introduced in every release. Much has already been written about the functional aspects of Swift and how to approach problems following a more functional approach.&lt;br/&gt;This short article will try to give a clear and complete explanation of how &lt;i&gt;map&lt;/i&gt; and especially &lt;i&gt;flatMap&lt;/i&gt; work for different types in Swift 2.0 and 3.0, with references to the current library headers.</content>
 </entry>
 
 <entry>
   <title>Swift 2.1 Function Types Conversion: Covariance and Contravariance</title>
   <link href="https://www.uraimo.com/2015/09/29/Swift2.1-Function-Types-Conversion-Covariance-Contravariance/"/>
   <updated>2015-09-29T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/09/29/Swift2.1-Function-Types-Conversion-Covariance-Contravariance</id>
   <summary type="html">With Swift 2.1 function types will support type conversion, discover covariance and contravariance and what this means for you</summary>
   <content type="html">With Swift 2.1 function types will support type conversion, discover covariance and contravariance and what this means for you</content>
 </entry>
 
 <entry>
   <title>Swift 2.1 Released</title>
   <link href="https://www.uraimo.com/2015/09/20/Swift-2.1-released/"/>
   <updated>2015-09-20T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/09/20/Swift-2.1-released</id>
   <summary type="html">The release 2.1 of Swift is now available</summary>
   <content type="html">The release 2.1 of Swift is now available</content>
 </entry>
 
 <entry>
   <title>A Brief iOS9 UIStackView Guide</title>
   <link href="https://www.uraimo.com/2015/09/08/ios9-uistackview-guide-swift/"/>
   <updated>2015-09-08T00:00:00Z</updated>
   <id>https://www.uraimo.com/2015/09/08/ios9-uistackview-guide-swift</id>
   <summary type="html">How to use the new iOS9 UIStackViews, all you need to know with a practical example project</summary>
   <content type="html">How to use the new iOS9 UIStackViews, all you need to know with a practical example project</content>
 </entry>
 
 <entry>
   <title>From VIM Theme to Pygments CSS</title>
   <link href="https://www.uraimo.com/2011/09/21/from-vim-theme-to-pygments-css/"/>
   <updated>2011-09-21T00:00:00Z</updated>
   <id>https://www.uraimo.com/2011/09/21/from-vim-theme-to-pygments-css</id>
   <summary type="html">A set of VIM themes converted to CSS to be used with Pygments</summary>
   <content type="html">A set of VIM themes converted to CSS to be used with Pygments</content>
 </entry>
 
 <entry>
   <title>First steps in Scala: Implementing Ruby's Integer.times</title>
   <link href="https://www.uraimo.com/2011/09/21/first-steps-in-scala-implementing-ruby-s-integer-times/"/>
   <updated>2011-09-21T00:00:00Z</updated>
   <id>https://www.uraimo.com/2011/09/21/first-steps-in-scala-implementing-ruby-s-integer-times</id>
   <summary type="html">Implementing Integer.times in Scala, really easy, but let's look at some of the generated code.</summary>
   <content type="html">Implementing Integer.times in Scala, really easy, but let's look at some of the generated code.</content>
 </entry>
 
 <entry>
   <title>Configuring NGINX for Jekyll on Ubuntu</title>
   <link href="https://www.uraimo.com/2011/08/10/configuring-nginx-for-jekyll-on-ubuntu/"/>
   <updated>2011-08-10T00:00:00Z</updated>
   <id>https://www.uraimo.com/2011/08/10/configuring-nginx-for-jekyll-on-ubuntu</id>
   <summary type="html">How to configure NGINX to host Jekyll on Ubuntu</summary>
   <content type="html">How to configure NGINX to host Jekyll on Ubuntu</content>
 </entry>
 
 <entry>
   <title>Upgrading the ATI drivers and configuring OpenCL in Ubuntu</title>
   <link href="https://www.uraimo.com/2010/09/06/upgrading-the-ati-drivers-and-configuring-opencl-in-ubuntu/"/>
   <updated>2010-09-06T00:00:00Z</updated>
   <id>https://www.uraimo.com/2010/09/06/upgrading-the-ati-drivers-and-configuring-opencl-in-ubuntu</id>
   <summary type="html">How to upgrade your ATI driver under Linux and verify that OpenCL is enabled and working.</summary>
   <content type="html">How to upgrade your ATI driver under Linux and verify that OpenCL is enabled and working.</content>
 </entry>
 
 <entry>
   <title>HTC Magic ADB USB driver install instructions</title>
   <link href="https://www.uraimo.com/2009/07/06/htc-magic-adb-driver-install-instructions/"/>
   <updated>2009-07-06T00:00:00Z</updated>
   <id>https://www.uraimo.com/2009/07/06/htc-magic-adb-driver-install-instructions</id>
   <summary type="html">If you diligently followed the android driver install instruction from the Android Developer site but your HTC Magic is still discovered only as an "HTC Android Phone USB Device" and an unknown device named "ADB" because the driver contained in the last SDK is not recognized, follow these steps.</summary>
   <content type="html">If you diligently followed the android driver install instruction from the Android Developer site but your HTC Magic is still discovered only as an "HTC Android Phone USB Device" and an unknown device named "ADB" because the driver contained in the last SDK is not recognized, follow these steps.</content>
 </entry>
 
</feed>
