<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Alloy on Hillel Wayne</title>
    <link>https://www.hillelwayne.com/tags/alloy/</link>
    <description>Recent content in Alloy on Hillel Wayne</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 10 Apr 2024 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://www.hillelwayne.com/tags/alloy/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Don&#39;t let Alloy facts make your specs a fiction</title>
      <link>https://www.hillelwayne.com/post/alloy-facts/</link>
      <pubDate>Wed, 10 Apr 2024 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/alloy-facts/</guid>
      <description>I&amp;rsquo;ve recently done a lot of work in Alloy and it&amp;rsquo;s got me thinking about a common specification pitfall. Everything in the main post applies to all formal specifications, everything in dropdowns is for experienced Alloy users.
Consider a simple model of a dependency tree. We have a set of top-level dependencies for our program, which have their own dependencies, etc. We can model it this way in Alloy:</description>
    </item>
    
    <item>
      <title>Alloy 6: it&#39;s about Time</title>
      <link>https://www.hillelwayne.com/post/alloy6/</link>
      <pubDate>Mon, 29 Nov 2021 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/alloy6/</guid>
      <description>Alloy is a powerful formal specification language, but it&amp;rsquo;s historically been weak at modeling concurrency. AWS raised this as a critical issue for why they went with TLA+. Alloy writers built a lot of tricks to emulate time, but it can feel like you&amp;rsquo;re working against the language.
Alloy 6 aims to change that with built-in temporal operators. Right now it&amp;rsquo;s poorly documented, and since I maintain the alloydocs, I sat down and figured it all out.</description>
    </item>
    
    <item>
      <title>Announcing: Alloydocs</title>
      <link>https://www.hillelwayne.com/post/alloydocs/</link>
      <pubDate>Mon, 13 Apr 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/alloydocs/</guid>
      <description>tl;dr: online Alloy reference here.
If you&amp;rsquo;ve read this blog at all you probably know I&amp;rsquo;m a big fan of Alloy. It&amp;rsquo;s a simple, powerful formal method whose entire syntax fits in just two pages. You can learn it in a day and be productive in two. And it can be used to model everything from package management to database migrations to authorization systems.
Two years ago I was invited to the Workshop on the Future of Alloy.</description>
    </item>
    
    <item>
      <title>Formally Modeling Database Migrations</title>
      <link>https://www.hillelwayne.com/post/formally-modeling-migrations/</link>
      <pubDate>Wed, 09 Oct 2019 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/formally-modeling-migrations/</guid>
      <description>Most of my formal methods examples deal with concurrency, because time is evil and I hate it. While FM is very effective for that, it gives people a limited sense of how flexible these tools are. One of the most common questions I get from people is
 Formal methods looks really useful for distributed systems, but I&amp;rsquo;m not making a distributed system. Is FM still useful for me?</description>
    </item>
    
    <item>
      <title>Solving Knights and Knaves with Alloy</title>
      <link>https://www.hillelwayne.com/post/knights-knaves/</link>
      <pubDate>Mon, 11 Feb 2019 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/knights-knaves/</guid>
      <description>There&amp;rsquo;s a famous logic puzzle, originally from Raymond Smullyan, called a &amp;ldquo;Knights and Knaves&amp;rdquo; puzzle. We have a set of people, all of whom are either a Knight or a Knave. Knights only make true statements, and Knaves only make false statements. Usually the goal of the puzzle is to find out who is what. For example, if we have two people, A and B, and A says &amp;ldquo;both of us are knaves&amp;rdquo;, we know A is a knave and B is a knight.</description>
    </item>
    
    <item>
      <title>Formally Specifying UIs</title>
      <link>https://www.hillelwayne.com/formally-specifying-uis/</link>
      <pubDate>Mon, 11 Jun 2018 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/formally-specifying-uis/</guid>
      <description>Good UI is necessary to making correct software. If people have trouble using the product, they&amp;rsquo;re more likely to do the wrong thing. Personally, though, I can&amp;rsquo;t stand UI work. I don&amp;rsquo;t think it&amp;rsquo;s &amp;ldquo;beneath me&amp;rdquo; or anything, it just doesn&amp;rsquo;t quite mesh with my brain. Visuals and interfaces give me anxiety. Mad respect for the people who can handle it.
I love formal methods. Recently my friend Kevin Lynagh released Sketch.</description>
    </item>
    
    <item>
      <title>Formally Specifying a Package Manager</title>
      <link>https://www.hillelwayne.com/post/nix/</link>
      <pubDate>Fri, 16 Mar 2018 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/nix/</guid>
      <description>This post was commissioned by Graham Christensen as part of the Great Slate fundraiser. Thank you!
I wanted to help out the Great Slate fundraiser and donated two technical essays of the purchaser&amp;rsquo;s choice. Graham bought one and asked for
 Something that has to do with Nix or NixOS
 This was a bit of a challenge, given that I didn&amp;rsquo;t even know what Nix was. I had never used it and still haven&amp;rsquo;t, nor can I use it for the near future, because my only computer right now is a Windows box.</description>
    </item>
    
    <item>
      <title>Proving Games are Winnable with Alloy</title>
      <link>https://www.hillelwayne.com/alloy-randomizer/</link>
      <pubDate>Mon, 15 Jan 2018 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/alloy-randomizer/</guid>
      <description>One of my vices is watching Link to the Past Randomizer games. This gist is it&amp;rsquo;s a regular Zelda game except all of the items in chests are randomized. A chest that normally has bombs might have a critical item, while the chest that&amp;rsquo;s supposed to have the moon pearl might only have 10 rupees. People use randomizers to run races, since you can&amp;rsquo;t just memorize the &amp;ldquo;correct&amp;rdquo; path through the game.</description>
    </item>
    
  </channel>
</rss>