| CARVIEW |
Select Language
HTTP/2 200
server: nginx
date: Fri, 16 Jan 2026 00:09:33 GMT
content-type: text/xml; charset=utf-8
vary: Accept-Encoding
x-rid: 3c49ec519be5e0327f3a6365b3b9f782
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
strict-transport-security: max-age=15552001
x-tumblr-user: justtesting
x-robots-tag: noindex
cache-control: max-age=600
x-ua-compatible: IE=Edge,chrome=1
x-ua-device: desktop
vary: X-UA-Device, Accept
x-nc: HIT
content-encoding: gzip
Welcome to the blog of Manuel M T Chakravarty. I am a computer scientist with a background in programming languages, parallel programming, distributed systems, and cryptography. My current research is mostly at the intersection of programming languages and cryptography with applications to permissionless blockchains. I am also a software developer who is passionate about functional programming. I develop for macOS, iOS, and Linux. I am the principal developer of Haskell for Mac, a unique programming environment for the Haskell programming language that facilitates learning and experimenting with code. I am mostly developing in Swift and Haskell. Check out some of my technical talks (some have video links).
You can find me on Bluesky (@TacticalGrace.justtesting.org), Twitter (@TacticalGrace), GitHub, and LinkedIn. Just Testing Tumblr (3.0; @justtesting) https://justtesting.org/Applicative code —the IDE for functional programming— is now in beta and sports a Bluesky account to… <p class="npf_link" data-npf='{"type":"link","url":"https://bsky.app/profile/code.applicative.co","display_url":"https://bsky.app/profile/code.applicative.co","title":"Applicative Code (@code.applicative.co)","description":"IDE for functional programming on macOS • currently in beta\n\nInterested in beta testing? Just DM an email address for a TestFlight invitatio","site_name":"Bluesky Social","poster":[{"media_key":"c6306ee705c50209c4d403719b84d426:8fa5472861e047bb-d2","type":"image/jpeg","width":3000,"height":1000}]}'><a href="https://bsky.app/profile/code.applicative.co" target="_blank">Applicative Code (@code.applicative.co)</a></p><p>Applicative code —the IDE for functional programming— is now in beta and sports a Bluesky account to follow!</p> https://justtesting.org/post/798919160051728384https://justtesting.org/post/798919160051728384 Fri, 31 Oct 2025 12:04:43 +0100 agda haskell swift haskellformac applicative Functional data structures in Swift <p class="npf_link" data-npf='{"type":"link","url":"https://media.ccc.de/v/bob11-2025-functional-data-structures-in-swift-chakravarty","display_url":"https://media.ccc.de/v/bob11-2025-functional-data-structures-in-swift-chakravarty","title":"Functional data structures in Swift","description":"One of the intriguing features of Swift is its distinction between value types and reference types. Conceptually, value types are always ...","site_name":"media.ccc.de","poster":[{"media_key":"feb1147522709315d258e031ba5a1bf7:cd00dd68ce7bbabb-68","type":"image/jpeg","width":2560,"height":1440}]}'><a href="https://media.ccc.de/v/bob11-2025-functional-data-structures-in-swift-chakravarty" target="_blank">Functional data structures in Swift</a></p><p>One of the intriguing features of Swift is its distinction between value types and reference types. Conceptually, value types are always copied in assignments and passed-by-value in function calls — i.e., they are semantically immutable. In contrast, for reference types, Swift only copies a pointer to an object on an assignment and they are being passed-by-reference to functions. If such an object gets mutated, it changes for for all references. While most languages feature both value and reference types, Swift is unique in that (1) it makes it easy to define and use both flavours of types and (2) it supports fine-grained mutability control.</p><p>For large values, such as arrays, frequent copying carries a significant performance penalty. Hence, the Swift compiler goes to great length to avoid copying whenever it is safe. For large values, this effectively boils down to a copy-on-write strategy, where a large value is only copied when it actually is being mutated (on one code path). Swift facilitates for user-defined value types to also adopt this copy-on-write strategy.</p><p>In this talk, I will explain the semantic difference between value and reference types, and I will illustrate how this facilitates safe and robust coding practices in Swift. Moreover, I will explain how the copy-on-write strategy for large values works and how it interacts with Swift’s memory management system. Finally, I will demonstrate how you can define your own copy-on-write large value types.</p> https://justtesting.org/post/792687742449516544https://justtesting.org/post/792687742449516544 Sat, 23 Aug 2025 18:19:00 +0200 swift mutability functional programming copy-on-write Functional Programming in Swift <p class="npf_link" data-npf='{"type":"link","url":"https://media.ccc.de/v/bob11-2024-functional-programming-in-swift-chakravarty","display_url":"https://media.ccc.de/v/bob11-2024-functional-programming-in-swift-chakravarty","title":"Functional Programming in Swift","description":"When people talk about functional programming in modern multi-paradigm languages, they usually mention Rust, Scala, or Kotlin. You rarely...","site_name":"media.ccc.de","poster":[{"media_key":"9d8b7052891142a63999948f4cdb8db5:aa164e8b7c1333f0-a3","type":"image/jpeg","width":1920,"height":1080}]}'><a href="https://media.ccc.de/v/bob11-2024-functional-programming-in-swift-chakravarty" target="_blank">Functional Programming in Swift</a></p><p>When people talk about functional programming in modern multi-paradigm languages, they usually mention Rust, Scala, or Kotlin. You rarely hear Swift being mentioned. This is odd, as one might argue that, of these languages, Swift places the strongest emphasis on functional programming.</p><p>In this talk, I will explain the core functional programming features of Swift, including its expressive type system, value types, and mutability control. Furthermore, I will discuss how Swift’s language design is influenced by the desire to create a language that addresses the whole spectrum from low-level systems programming up to high-level applications with sophisticated graphical user interfaces. Beyond the core language itself, functional programming also permeates Swift’s rich ecosystem of libraries. To support this point, I will outline some FP-inspired core libraries, covering concepts from functional data structures over functional reactive programming to declarative user interfaces.</p><p>Finally, I will briefly summarise practical considerations for using Swift in your own projects. This includes the cross-platform toolchain, the package manager, and interoperability with other languages.</p> https://justtesting.org/post/771863410698747904https://justtesting.org/post/771863410698747904 Sun, 05 Jan 2025 20:45:10 +0100 functional programming swift mutability types Custom native assets on Cardano explained <figure class="tmblr-full tmblr-embed" data-provider="youtube" data-url="https://www.youtube.com/watch?v=MpWeg6Fg0t8&t=1120s" data-orig-width="356" data-orig-height="200"><iframe width="356" height="200" id="youtube_iframe" src="https://www.youtube.com/embed/MpWeg6Fg0t8?feature=oembed&enablejsapi=1&origin=https://safe.txmblr.com&wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>In this talk from the Cardano 2020 Virtual Summit, I am explaining the design of the custom native asset functionality of Cardano (starting at 18:40min). This is based on the work published in the following two research papers at ISoLA 2020: <a href="https://iohk.io/en/research/library/papers/utxoma-utxo-with-multi-asset-support/">UTXOma: UTXO with Multi-Asset Support</a> and <a href="https://iohk.io/en/research/library/papers/native-custom-tokens-in-the-extended-utxo-model/">Native Custom Tokens in the Extended UTXO Model</a>. Custom native assets are supported on the Cardano mainnet since the Mary hardfork that happened in March 2021.</p> https://justtesting.org/post/651432479236964352https://justtesting.org/post/651432479236964352 Mon, 17 May 2021 14:27:04 +0200 Cardano custom-assets utxo tokens Youtube This is the video of the keynote talk “Blockchains are functional” that I delivered at the ACM… <figure class="tmblr-full tmblr-embed" data-provider="youtube" data-url="https://www.youtube.com/watch?v=zXy4kxUlUmY&list=PLyrlk8Xaylp4EuohGj90SbJOcmEwrS-ZO&index=20" data-orig-width="356" data-orig-height="200"><iframe width="356" height="200" id="youtube_iframe" src="https://www.youtube.com/embed/zXy4kxUlUmY?feature=oembed&enablejsapi=1&origin=https://safe.txmblr.com&wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>This is the video of the keynote talk “Blockchains are functional” that I delivered at the <a href="https://href.li/?https://icfp19.sigplan.org">ACM SIGPLAN International Conference on Functional Programming 2019</a>. Here is the abstract:</p><blockquote class="npf_indented"><p>Functional programming and blockchains are a match made in heaven! The immutable and reproducible nature of distributed ledgers is mirrored in the semantic foundation of functional programming. Moreover, the concurrent and distributed operation calls for a programming model that carefully controls shared mutable state and side effects. Finally, the high financial stakes often associated with blockchains suggest the need for high assurance software and formal methods.</p></blockquote><blockquote class="npf_indented"><p>Nevertheless, most existing blockchains favour an object-oriented, imperative approach in both their implementation as well as in the contract programming layer that provides user-defined custom functionality on top of the basic ledger. On the one hand, this might appear surprising, given that it is widely understood that this style of programming is particularly risky in concurrent and distributed systems. On the other hand, blockchains are still in their infancy and little research has been conducted into associated programming language technology.</p></blockquote><blockquote class="npf_indented"><p>In this talk, I explain the connection between blockchains and functional programming as well as highlight several areas where functional programming, type systems, and formal methods have the potential to advance the state of the art. Overall, I argue that blockchains are not just a well-suited application area for functional programming techniques, but that they also provide fertile ground for future research. I illustrate this with evidence from the research-driven development of the Cardano blockchain and its contract programming platform, Plutus. Cardano and Plutus are implemented in Haskell and Rust, and the development process includes semi-formal specifications together with the use of Agda, Coq, and Isabelle to formalise key components.</p></blockquote> https://justtesting.org/post/648901404358033408https://justtesting.org/post/648901404358033408 Mon, 19 Apr 2021 15:56:43 +0200 blockchains functional programming haskell cardano plutus Youtube Extending Bitcoin-style Ledgers <p>In the Plutus & Marlowe team at <a href="https://iohk.io">IOHK</a>, we developed an extension to Bitcoin-style UTxO ledgers that we are calling the <em>Extended UTxO Model</em> and that significantly extends the contract scripting capabilities of such ledgers. On top of that new, more powerful ledger model, we developed a domain-specific language for financial contracts, called <em>Marlowe</em>. We have got two papers at the <a href="https://fc20.ifca.ai/wtsc/cfp.html">4th Workshop on Trusted Smart Contracts</a> where we describe both the Extended UTxO Model and Marlowe. Check out the preprints: <a href="https://iohk.io/en/research/library/papers/the-extended-utxo-model">The Extended UTxO Model</a> and <a href="https://iohk.io/en/research/library/papers/marloweimplementing-and-analysing-financial-contracts-on-blockchain/">Marlowe: implementing and analysing financial contracts on blockchain</a>.</p> https://justtesting.org/post/190520054836https://justtesting.org/post/190520054836 Tue, 28 Jan 2020 22:03:01 +0100 utxo plutus marlowe blockchain haskell financial contracts Functional Blockchain Contracts <p>Check out the <a href="https://iohk.io/en/research/library/papers/functional-blockchain-contracts/">draft of the paper</a> describing the principles underlying Plutus Platform. Here the abstract:</p>
<blockquote>
<p>Distributed cryptographic ledgers —aka blockchains —should be a functional programmer’s dream. Their aim is immutability: once a block has been added to the chain it should not be altered or removed. The seminal blockchain, Bitcoin, uses a graph-based model that is purely functional in nature. But Bitcoin has limited support for smart contracts and distributed applications. The seminal smart-contract platform, Ethereum, uses an imperative and object-oriented model of accounts. Ethereum has been subject to numerous exploits, often linked to its use of shared mutable state by way of its imperative and object-oriented features in a concurrent and distributed system. Coding a distributed application for Ethereum requires two languages: Javascript to run off-chain, which submits transaction written in Solidity to run on-chain.</p>
<p>This paper describes Plutus Platform, a functional blockchain smart contract system for coding distributed applications on top of the Cardano blockchain. Most blockchain programming platforms depend on a custom language, such as Ethereum’s Solidity, but Plutus is provided as a set of libraries for Haskell. Both off-chain and on-chain code are written in Haskell: off-chain code using the Plutus library, and on-chain code in a subset of Haskell using Template Haskell. On-chain code is compiled to a tiny functional language called Plutus Core, which is System Fω with iso-recursive types and suitable primitives.</p>
<p>Plutus and Cardano are available open source, and Plutus Playground provides a web-based IDE that enables users to try out the system and to develop simple applications.</p>
</blockquote> https://justtesting.org/post/186788963306https://justtesting.org/post/186788963306 Mon, 05 Aug 2019 12:34:45 +0200 functional programming smart contracts cardano haskell plutus My talk “Rethinking Blockchain Contract Development”... <iframe width="400" height="225" id="youtube_iframe" src="https://www.youtube.com/embed/RGJ4FvsUQzo?feature=oembed&enablejsapi=1&origin=https://safe.txmblr.com&wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Manuel M T Chakravarty - Keynote - Rethinking Blockchain Contract Development | Lambda Days 19"></iframe><br/><br/><p>My talk “Rethinking Blockchain Contract Development” from <a href="https://www.lambdadays.org/lambdadays2019">Lambda Days 2019</a>, where I outline why blockchains and functional programming are a good fit and how we are exploiting that in the development of Plutus Platform — the contract layer on top of the Cardano proof-of-stake blockchain. I am also discussing the research-driven development methodology around Cardano.</p> https://justtesting.org/post/186068191456https://justtesting.org/post/186068191456 Fri, 05 Jul 2019 11:53:37 +0200 lambdadays blockchain haskell functionalprogramming cardano plutus This is a video interview, where I am talking about what I see... <br/><br/><p>This is a video interview, where I am talking about what I see as the value proposition of functional programming, functional programming in industry, and how the <a href="https://lambdajam.yowconference.com.au">YOW! Lambda Jam</a> conference helps developers to get the most out of functional programming.</p> https://justtesting.org/post/184688053961https://justtesting.org/post/184688053961 Mon, 06 May 2019 13:57:20 +0200 functional programming haskell ylj Why functional programming? Why blockchains? What is the... <iframe width="400" height="225" id="youtube_iframe" src="https://www.youtube.com/embed/uZL9SBNfS-0?feature=oembed&enablejsapi=1&origin=https://safe.txmblr.com&wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="IOHK PlutusFest 2018 | IOHK Language Architect - Manuel Chakravarty Interview"></iframe><br/><br/><p>Why functional programming? Why blockchains? What is the architecture of the Plutus Platform for contract development and why is it based on Haskell? These are some of the questions that I am trying to answer in this video interview.</p> https://justtesting.org/post/181921024941https://justtesting.org/post/181921024941 Fri, 11 Jan 2019 11:40:42 +0100 plutus haskell blockchain functional programming cardano Learning Dutch <p>About six weeks ago, I moved from Sydney, Australia, to Utrecht in the Netherlands. Naturally, I started to learn Dutch.(*)</p>
<p>This post is mainly a summary of the things I found helpful so far. Apparently, the Netherlands is becoming an increasingly popular expat destination (<em>cough</em> Brexit <em>cough</em>), so this might be useful to some.</p>
<p>I quickly discovered that, even after living in an English-speaking country for many years, as a German native speaker, learning Dutch from the perspective of German is much easier than going via English (although, fluency in English obviously also helps). The first obstacle here is that it is a lot easier to find a good Dutch-English (electronic) dictionary than a Dutch-German one — for instance, my macOS and iOS devices already come with a Dutch-English dictionary that I can hook into the system look-up service with a click (or tap). The best Dutch-German dictionary that I could find so far is <a href="https://www.uitmuntend.de/">uitmuntend</a> — thanks to <a href="https://twitter.com/chriseidhof">Chris Eidhof</a> for that very useful recommendation. Its creator also runs the super informative <a href="https://forum.buurtaal.de">buurtaal forum</a>.</p>
<p>As a starting point, I found the <a href="https://www.mondly.com">mondly</a> app quite useful. It encourages a daily routine and quickly builds up a basic vocabulary and set of common expressions. It’s not cheap, but light years ahead of other iOS apps I checked out.</p>
<p>The next step for me was to make a habit out of trying to decipher Dutch websites and to refrain from clicking on the English language option. Whether that is the daily whether forecast, a news item, or the instructions for opening a bank account, it is a slow process, but there is no substitute for constant practice.</p>
<p>As a stepping stone, comic books (especially those for kids) are of course a great choice. (I would have never learnt Japanese without a huge stack of manga.)</p>
<p>To practice listening comprehsion and to get into more complex vocabulary and casual language, I really like to watch <a href="https://www.vpro.nl/zondag-met-lubach">Zondag met Lubach</a> — thanks to <a href="https://twitter.com/gckeller">Gabi</a> who got me to watch the show with her. The show is very entertaining, focused around one topic with recurring vocabluary, and you can get all past shows online. (On YouTube, to get started, you can also get English subtitles for many episodes and Dutch subtitles when you start to get the hang of it and to more easily look up words.)</p>
<p>And then, there is speaking. Unfortunately, I know of no better way than to repeatedly and publicly embarrass yourself to make progress here. People won’t understand you, you will say silly things, and you will fail to understand their response. Over and over again.</p>
<p>But it is all worth it for the moments of success. For instance, when you leave a shop for the first time without the Dutch shop assistant having felt the need to switch to English. Tot ziens!</p>
<hr>
<p>(*) Everybody here switches to fluent English in a heartbeat when they realise that you don’t understand them, but to me, assuming residency in a country obliges me to learn the local language. (I have never been able to relate to that expat lifestyle, where you stay in that bubble of like-minded foreigners.)</p> https://justtesting.org/post/177144181001https://justtesting.org/post/177144181001 Sun, 19 Aug 2018 01:18:22 +0200 dutch Applied Functional Programming Summer School in Utrecht <p>If you like to get a thorough introduction to functional programming in Haskell, check out the <a href="https://uu-afp.github.io">Applied Functional Programming Summer School</a>, which is 27-31 August in Utrecht, Netherlands. It is part of Utrecht University’s <a href="https://www.utrechtsummerschool.nl/">summer school program</a> and will have <a href="https://www.cse.chalmers.se/~koen/">Koen Classen</a>, <a href="https://www.cse.unsw.edu.au/~keller/">Gabriele Keller</a>, and myself as <a href="https://uu-afp.github.io/lecturers.html">guest lecturers</a>.</p> https://justtesting.org/post/173023203461https://justtesting.org/post/173023203461 Tue, 17 Apr 2018 09:46:18 +0200 uu-afp haskell functional programming This is the video of the Sydney instance of my YOW! Night tour... <br/><br/><p>This is the video of the <a href="https://nights.yowconference.com.au/archive-2018/yow-night-2018-sydney-manuel-chakravarty-mar-6/">Sydney instance of my YOW! Night tour</a> this month, talking about “Demystifying functional programming and what that means for learning & teaching” — i.e., teaching FP to the early majority of adopters (<a href="https://nights.yowconference.com.au/archive-2018/yow-night-2018-sydney-manuel-chakravarty-mar-6/">slides</a>).</p> https://justtesting.org/post/172261465456https://justtesting.org/post/172261465456 Mon, 26 Mar 2018 05:44:04 +0200 Demystifying functional programming and what that means for learning & teaching <p>In March, I will talk about <a href="https://nights.yowconference.com.au/upcoming/yow-night-2018-sydney-manuel-chakravarty-mar-6/">Demystifying functional programming and what that means for learning & teaching</a> in four different cities: March 6 – Sydney / March 8 – Melbourne / March 13 – Perth / March 22 – Brisbane. This talk will outline the thinking behind my <a href="https://lambdajam.yowconference.com.au/proposal/?id=5922">Welcome to FP</a> workshop at <a href="https://lambdajam.yowconference.com.au">YOW! Lambda Jam 2018</a>, which will be a general introduction to functional programming.</p> https://justtesting.org/post/171433042036https://justtesting.org/post/171433042036 Fri, 02 Mar 2018 02:47:04 +0100 talk FP teaching & learning PLT engineers needed! <p>Do you know how to write FP compilers? Would you like to design & implement next-generation, functional(!) smart contract languages with Phil Wadler and myself? Check out <a href="https://mail.haskell.org/pipermail/haskell/2018-February/025348.html">Phil’s post</a> and the <a href="https://iohk.io/careers/#op-235152-functional-compiler-engineer-">IOHK job ad</a>.</p> https://justtesting.org/post/170815271396https://justtesting.org/post/170815271396 Tue, 13 Feb 2018 01:44:46 +0100 jobs haskell blockchain cardano plutus compilers Here is the video of my Functional Conf 2017 talk Haskell... <iframe width="400" height="225" id="youtube_iframe" src="https://www.youtube.com/embed/kd8mlbN0Mws?feature=oembed&enablejsapi=1&origin=https://safe.txmblr.com&wmode=opaque" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Haskell SpriteKit- a Purely Functional API by Manuel Chakravarty at FnConf17"></iframe><br/><br/><p>Here is the video of my <a href="https://functionalconf.com">Functional Conf 2017</a> talk <a href="https://functionalconf.com/proposal.html?id=3939">Haskell SpriteKit — a Purely Functional API for a Stateful Animation System and Physics Engine</a>. In this talk, I am explaining how to wrap an OOish game engine API based on a mutable scene graph into a purely functional API based on an immutable algebraic data type.</p> https://justtesting.org/post/168174539581https://justtesting.org/post/168174539581 Mon, 04 Dec 2017 06:23:31 +0100 FnConf haskell functional programming graphics games SpriteKit Functional Conf <p>This coming weekend, I will present <a href="https://functionalconf.com/proposal.html?id=3939">Haskell SpriteKit — a Purely Functional API for a Stateful Animation System and Physics Engine</a> as well as a workshop on <a href="https://functionalconf.com/proposal.html?id=4054">Functional Programming in Swift</a> at <a href="https://functionalconf.com/">Functional Conf</a> in Bangalore.</p> https://justtesting.org/post/167510227471https://justtesting.org/post/167510227471 Wed, 15 Nov 2017 07:06:40 +0100 conference functional programming Two months back, I gave my talk “Do-It-Yourself Functional... <br/><br/><p>Two months back, I gave my talk “Do-It-Yourself Functional Reactive Programming” at the <a href="https://www.sydneycocoaheads.com">Sydney CocoaHeads meetup</a>. I am explaining what FRP is all about, how to easily implement an FRP library in Swift, and how to use it in an iPhone app.</p> https://justtesting.org/post/164441753196https://justtesting.org/post/164441753196 Mon, 21 Aug 2017 13:36:23 +0200 Moving On <p>I am excited about my new role at <a href="https://tweag.io/">Tweag I/O</a>! Curious why? Read why <a href="https://www.tweag.io/posts/2017-08-01-chak-joins-tweag.html">I am a functional programming evangelist</a>.</p> https://justtesting.org/post/164271721631https://justtesting.org/post/164271721631 Thu, 17 Aug 2017 02:14:18 +0200 fp Keynote: Do-It-Yourself Functional Reactive Programming | SkillsCast
| 30th March 2017 <a href="https://skillsmatter.com/skillscasts/9610-keynote-do-it-yourself-functional-reactive-programming">Keynote: Do-It-Yourself Functional Reactive Programming | SkillsCast
| 30th March 2017</a>: <p>A video of my iOSCon 2017 talk, where I develop a basic FRP system in Swift, is now online.</p> https://justtesting.org/post/159438617081https://justtesting.org/post/159438617081 Tue, 11 Apr 2017 05:13:33 +0200 iOSCon Swift FRP