<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Thomas Seeley - javascript</title><id>https://www.tseeley.com/tags/javascript/atom.xml</id><updated>2024-11-10T00:00:00+00:00</updated><generator>tseeley.com</generator><link href="https://www.tseeley.com/tags/javascript/atom.xml" rel="self" type="application/atom+xml"/><link href="https://www.tseeley.com" rel="alternate" type="text/html"/><subtitle>Posts about software and making things.</subtitle><entry><title>Hello, Membrane</title><id>https://www.tseeley.com/posts/hello-membrane/</id><updated>2024-11-10T00:00:00+00:00</updated><author><name>Thomas Seeley</name></author><link href="https://www.tseeley.com/posts/hello-membrane/" rel="alternate" type="text/html"/><published>2024-11-10T00:00:00+00:00</published><content type="html">
&lt;p&gt;It’s been a busy, exciting past few months. I joined &lt;a href=&quot;http://membrane.io/&quot;&gt;membrane.io&lt;/a&gt; as an intern in September, and I’m having a great time making improvements to the platform and building things in user space.&lt;/p&gt;
&lt;section id=&quot;Whats-Membrane&quot;&gt;
&lt;h2&gt;&lt;a class=&quot;heading-anchor&quot; href=&quot;#Whats-Membrane&quot;&gt;What’s Membrane?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Membrane is a serverless platform for developing JavaScript/TypeScript programs.&lt;/p&gt;
&lt;p&gt;Every program you create in your Membrane workspace becomes part of your graph, and the programs can connect to each other through this graph.&lt;/p&gt;
&lt;video controls width=&quot;100%&quot; src=&quot;https://docs.membrane.io/videos/add-connections.mp4#t=0.1&quot;&gt;&lt;/video&gt;
&lt;p&gt;There are a few key things that set Membrane apart from other serverless platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Programs have built-in state - no need to set up a database
&lt;/li&gt;
&lt;li&gt;
Everything gets logged before it happens - if it’s not in the logs, it didn’t happen
&lt;/li&gt;
&lt;li&gt;
Each program gets an email address - handle incoming emails by exporting an &lt;code&gt;email&lt;/code&gt; function
&lt;/li&gt;
&lt;li&gt;
Each program gets its own endpoint - handle HTTP requests by exporting an &lt;code&gt;endpoint&lt;/code&gt; function
&lt;/li&gt;
&lt;li&gt;
Programs can use other programs as building blocks through graph connections
&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id=&quot;What-Ive-Been-Working-On&quot;&gt;
&lt;h2&gt;&lt;a class=&quot;heading-anchor&quot; href=&quot;#What-Ive-Been-Working-On&quot;&gt;What I’ve Been Working On.&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Most of my time has been spent on Membrane’s API drivers. Drivers let you interact with external APIs through Membrane’s graph.&lt;/p&gt;
&lt;p&gt;I’ve been improving existing drivers like &lt;a href=&quot;https://www.membrane.io/share/membrane/discord&quot;&gt;Discord&lt;/a&gt; and &lt;a href=&quot;https://www.membrane.io/share/membrane/anthropic&quot;&gt;Anthropic&lt;/a&gt; and building a &lt;a href=&quot;https://membrane.io/share/iamseeley/driver-generator&quot;&gt;tool&lt;/a&gt; to generate new ones. The more drivers on Membrane, the more useful tools and automations we can build!&lt;/p&gt;
&lt;p&gt;A driver exposes API endpoints as nodes (fields, actions, events) that you can reference in your graph with a simple syntax.&lt;/p&gt;
&lt;p&gt;For example, &lt;code&gt;github:users.one(name:&quot;membrane-io&quot;)&lt;/code&gt; tells Membrane to get a specific GitHub user - but here’s what’s cool: even though that API call returns all of the user’s data, you can selectively reference just the pieces you need in other programs, like if we want to get their avatar: &lt;code&gt;github:users.one(name:&quot;membrane-io&quot;).avatar_url&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;Other Projects and Improvements:&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Implemented type inference for Membrane &lt;code&gt;state&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
Dynamic OG images for the changelog, packages, and docs
&lt;/li&gt;
&lt;li&gt;
Made a driver for the Membrane API: &lt;a href=&quot;https://www.membrane.io/share/iamseeley/mem&quot;&gt;mem&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I’m excited to start building more drivers and example tools/automations :).&lt;/p&gt;
&lt;p&gt;If you’d like to learn more about Membrane check these out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;https://notes.just-be.dev/Membrane%2C+A+Living+Computational+Environment&quot;&gt;Justin Bennett: Membrane, A Living Computational Environment&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;https://www.devtools.fm/episode/46&quot;&gt;Juan Campa - devtoolsFM episode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;https://www.membrane.io/blog/changelog-0.9&quot;&gt;Membrane Changelog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;https://docs.membrane.io/getting-started/intro/&quot;&gt;Membrane Docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And join the &lt;a href=&quot;https://discord.gg/gBK9xP3z&quot;&gt;Discord&lt;/a&gt;!&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;Want-to-Help-Shape-Membrane&quot;&gt;
&lt;h2&gt;&lt;a class=&quot;heading-anchor&quot; href=&quot;#Want-to-Help-Shape-Membrane&quot;&gt;Want to Help Shape Membrane?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We’re looking for developers to try out Membrane and share their feedback!&lt;/p&gt;
&lt;p&gt;If you’re interested in participating in user interviews, reach out to me at &lt;a href=&quot;mailto:thomas@membrane.io&quot;&gt;thomas@membrane.io&lt;/a&gt;. We’d love to hear your thoughts and help you get started building tools for yourself or for your company.&lt;/p&gt;
&lt;aside&gt;Be on the lookout for some updates coming to Membrane...soon you&apos;ll be able to create UIs with the programs on your graph!&lt;/aside&gt;
&lt;/section&gt;

&lt;hr&gt;
&lt;p&gt;&lt;code&gt;membrane&lt;/code&gt; &lt;code&gt;javascript&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.tseeley.com/about/&quot;&gt;Thomas Seeley&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bsky.app/profile/tseeley.com&quot;&gt;@tseeley.com on Bluesky&lt;/a&gt;, &lt;a href=&quot;https://mastodon.social/@iamseeley&quot;&gt;@iamseeley on Mastodon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;larr; &lt;a href=&quot;https://www.tseeley.com/posts/inferring-state-types/&quot;&gt;Inferring types from usage&lt;/a&gt; · &lt;a href=&quot;https://www.tseeley.com/posts/maze-playground/&quot;&gt;Maze Playground&lt;/a&gt; &amp;rarr;&lt;/p&gt;
</content></entry></feed>