<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Heather Stevens</title>
    <description>The latest articles on DEV Community by Heather Stevens (@heather_veva).</description>
    <link>https://dev.to/heather_veva</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F942085%2Fd60888da-4ed1-48f2-8844-99f536ad759d.jpg</url>
      <title>DEV Community: Heather Stevens</title>
      <link>https://dev.to/heather_veva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/heather_veva"/>
    <language>en</language>
    <item>
      <title>Hatchify: The Fastest Way to Build JSON: APIs</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Fri, 22 Mar 2024 14:58:44 +0000</pubDate>
      <link>https://dev.to/bitovi/hatchify-the-fastest-way-to-build-json-apis-ih3</link>
      <guid>https://dev.to/bitovi/hatchify-the-fastest-way-to-build-json-apis-ih3</guid>
      <description>&lt;p&gt;Last week, &lt;a href="https://bitovi.com/blog/introducing-hatchify-low-code-libraries-for-react-node-and-sequelize"&gt;Bitovi Hatchify&lt;/a&gt; officially left the nest! Hatchify is a suite of low-code libraries that provides a powerful scaffold to build CRUD-heavy applications, eliminate boilerplate, and enable your team to focus on domain-specific functionality from day one. Hatchify empowers you to build admin views, dashboards, and B2B apps faster, all while retaining uncompromising flexibility.&lt;/p&gt;

&lt;p&gt;One of Hatchify’s long-term objectives is to help developers move faster across all layers of the web stack. In the initial release, we’re most proud of our backend feature set that helps get CRUD API development out of the way early. We built the fastest way to get a high-quality &lt;a href="https://jsonapi.org/"&gt;JSON: API&lt;/a&gt; implementation packed with features like &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/jsonapi/reading/filtering/README.md"&gt;advanced filtering capabilities&lt;/a&gt;, &lt;a href="https://github.com/bitovi/hatchify/tree/main/docs/jsonapi/reading/relationships"&gt;related data queries&lt;/a&gt;, and &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/jsonapi/reading/sparse-fields/README.md"&gt;specified response fields&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  APIs, Accelerated
&lt;/h2&gt;

&lt;p&gt;A high-quality CRUD API can require typing up a tedious amount of boilerplate code. The API standards, the ORM, the basic route handlers — there’s lots to do before you even have a running app to iterate on. Although code generation tools can help you get a leg up on the initial effort, they can add friction should you eventually need to modify all the generated output. By dynamically defining the backend at runtime, based on your data model, Hatchify solves the same problems as code generation without the friction of schema updates. Hatchify applications adapt to data model &amp;amp; library updates without having to revise all of the generated files.&lt;/p&gt;

&lt;p&gt;In addition to saving you time on boilerplate, the API provided by Hatchify fully implements the &lt;a href="https://jsonapi.org/"&gt;JSON: API&lt;/a&gt; specification, which stipulates solid standards to define the peculiarities of CRUD REST APIs. Get back all the time spent bike-shedding how to implement standard API features like filtering, pagination, including related data, etc. &lt;a href="https://jsonapi.org/"&gt;JSON: API&lt;/a&gt; offers consistent practices for frontend and backend developers to agree on how resources are fetched and returned. Since Hatchify provides the core of your API for you, you can count on it’s standardized functionality to give your API a consistent start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Modeling
&lt;/h2&gt;

&lt;p&gt;To save all of this time, Hatchify depends on descriptions of the data it will be serving. This data model is written in a simple TypeScript format we call Schemas. Using those descriptions, Hatchify produces a starter application that your team can begin iterating on immediately. Schemas are consumed by the Hatchify ORM, HTTP router, and frontend elements, to configure themselves appropriately for the different resources held in your database.&lt;/p&gt;

&lt;p&gt;For example, two schemas for a simple to-do list application:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvkqodwspy5se6khvjhpm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvkqodwspy5se6khvjhpm.png" alt="Image description" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From that business context, Hatchify can provide a fully functional API, a basic UI, and a React-hook interface to trivialize API access from React-based apps. The API features are showcased in the example below:&lt;/p&gt;

&lt;p&gt;We can create an API for two different resources with the ability to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do basic CRUD&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bitovi/hatchify/tree/main/docs/jsonapi/reading/filtering"&gt;Use advanced filters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Query-related data in a single request

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jsonapi.org/format/#document-compound-documents"&gt;Including normalization of related data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jsonapi.org/format/#fetching-sparse-fieldsets"&gt;Query only for specified fields&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use page or offset/limit-based &lt;a href="https://github.com/bitovi/hatchify/tree/main/docs/jsonapi/reading/paginating"&gt;pagination&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a complete devo of the above capabilities, head to our demo on &lt;a href="https://stackblitz.com/edit/bitovi-hatchify-px3uyd?file=demo.ts"&gt;StackBlitz&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now that you have the foundational CRUD structure managed, you can seamlessly transition to expanding your API capabilities with any custom endpoints you might need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flexibility First
&lt;/h2&gt;

&lt;p&gt;If eventually you find your API requires functionality beyond what Hatchify can provide, our modular approach to building the framework allows you to continue using whatever portions make sense for your uses case. The ORM, HTTP router, request parsing/serialization can all be used independently. We designed Hatchify to provide enough functionality for most apps while providing an easy transition for those who eventually want more control.&lt;/p&gt;

&lt;p&gt;Bitovi is committed to keeping Hatchify free and open-source. We believe good software should be accessible to everyone, and we’ll never charge you to use Hatchify.&lt;/p&gt;

&lt;p&gt;Our team works to support Hatchify in all modern JS/TS web applications environments, and integrate with all application (meta)frameworks. We are currently working on integration guides for Next.js, Remix and Astro. Our goal is to maintain extensive guides on how we at Bitovi (and the community) have adapted Hatchify for different usages. If you are interested in how Hatchify might work with your existing or prospective web technology stack, say “hi!” in our Discord and we can investigate that together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Leaving The Nest
&lt;/h2&gt;

&lt;p&gt;Hatchify is taking flight and we’re excited for devs to get back all the time they were going to spend writing CRUD API boilerplate. Our current roadmap includes:&lt;/p&gt;

&lt;p&gt;Schema-driven form builder to easily create and edit data&lt;br&gt;
Authorization support&lt;br&gt;
Data migrations&lt;br&gt;
More documentation improvements &amp;amp; integration guides&lt;br&gt;
If there’s something you’d like to see, let us know on Github!&lt;/p&gt;

&lt;p&gt;We want to make every dev more efficient - writing schemas in the morning, and building the important parts of their app by lunch. We hope that you’ll be one of the first. Find out more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read our &lt;a href="https://github.com/bitovi/hatchify/blob/main/README.md"&gt;Getting Started Guide&lt;/a&gt; and &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/api-documentation.md"&gt;API Docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Get help and support on &lt;a href="https://discord.gg/JZcxKEMa5e"&gt;Bitovi’s Discord&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Follow Bitovi on &lt;a href="https://www.linkedin.com/company/3153182"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://twitter.com/bitovi"&gt;Twitter&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

&lt;p&gt;🐣 Nils &amp;amp; The Hatchify Team&lt;/p&gt;

</description>
      <category>api</category>
      <category>opensource</category>
      <category>react</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Introducing Hatchify: Low-code libraries for React, Node, and Sequelize</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Wed, 13 Mar 2024 18:50:01 +0000</pubDate>
      <link>https://dev.to/bitovi/introducing-hatchify-low-code-libraries-for-react-node-and-sequelize-4i9i</link>
      <guid>https://dev.to/bitovi/introducing-hatchify-low-code-libraries-for-react-node-and-sequelize-4i9i</guid>
      <description>&lt;p&gt;We are pleased to announce Hatchify - a tool that helps developers build React, NodeJS, and Sequelize apps swiftly. Hatchify provides the speed of a low-code development while enabling complete customization in the patterns familiar to React and Node developers.&lt;/p&gt;

&lt;p&gt;If you are starting a new project, check out our &lt;a href="https://github.com/bitovi/hatchify/blob/main/README.md"&gt;Getting Started Guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Hatchify and what does it do?
&lt;/h2&gt;

&lt;p&gt;Hatchify is a collection of JavaScript libraries for the frontend and backend that takes a data schema and builds commonly needed functionality (like services and grids) while allowing customization later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa6wiar1zkqxicym6qsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa6wiar1zkqxicym6qsq.png" alt="Image description" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To use Hatchify, define your app's data schemas as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const Schemas = {
  Todo: {
    attributes: {
      name: string({ required: true }),
      dueDate: dateonly(),
      ...
    },
    relationships: {
      user: belongsTo("User"),
    },
  }
  User: {
    attributes: {
      name: string({ required: true }),
    },
    relationships: {
      todos: hasMany("Todo"),
    },
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a schema, Hatchify creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sequelize object-relational-mapping (ORM) classes&lt;/li&gt;
&lt;li&gt;Flexible REST services&lt;/li&gt;
&lt;li&gt;Frontend models&lt;/li&gt;
&lt;li&gt;Frontend components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next sections detail how you’d use these parts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sequelize ORM classes
&lt;/h3&gt;

&lt;p&gt;hatchifyKoa(schemas).orm.models provides Sequelize classes you can use to query and manipulate the database directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const hatchedKoa = hatchifyKoa(schemas);
const Todo = hatchedKoa.orm.models.Todo;

await Todo.getList({where: {name: "Learn Hatchify"}})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Access to the underlying ORM allows you to weave in custom behavior such as advanced validation, while still keeping the benefits of the rest of the toolchain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flexible REST services
&lt;/h3&gt;

&lt;p&gt;hatchifyKoa(schemas).middleware provides a flexible and expressive REST API, letting you &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/jsonapi/reading/filtering/README.md"&gt;filter&lt;/a&gt;, &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/jsonapi/reading/paginating/README.md#learn-how-to-paginate-data"&gt;paginate&lt;/a&gt;, &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/jsonapi/reading/sorting/README.md"&gt;sort&lt;/a&gt;, &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/jsonapi/reading/sparse-fields/README.md"&gt;specify specific fields&lt;/a&gt;, and even &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/jsonapi/reading/relationships/README.md"&gt;include data across tables&lt;/a&gt;!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/todos
  ?include=user
  &amp;amp;fields[User]=name
  &amp;amp;filter[user.name][$ilike]=%Joe%
  &amp;amp;page[limit]=10
  &amp;amp;page[offset]=0
  &amp;amp;sort=dueDate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Frontend model layer
&lt;/h3&gt;

&lt;p&gt;hatchifyReact(schema).model creates React data models and hooks, with full TypeScript support. The React data model can take advantage of filtering, relationships, and pagination - everything the service layer provides. The hooks also update automatically when there are changes (stale-while-revalidate for the win).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [joesTodos, joesTodosState] = hatchedReact.model.Todo.useAll({
  include: ["user"],
  fields: { "User": ["name"] },
  filter: { "user.name": { $ilike: "Joe%" } },
  page: { limit: 10, offset: 0 },
  sort: ['dueDate'],
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;hatchifyReact(schema).components includes a data grid that supports filtering, pagination, and sorting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n6mdu0030d5xy9p7lxq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n6mdu0030d5xy9p7lxq.gif" alt="Image description" width="770" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Hatchify team's next major step is adding components to create and edit data.&lt;/p&gt;

&lt;h2&gt;
  
  
  What problem is Hatchify solving?
&lt;/h2&gt;

&lt;p&gt;Hatchify is trying to fill a gap between low-code solutions and CRUD generators.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtg960gue4pi7426a154.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtg960gue4pi7426a154.png" alt="breakdown of code levels" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The set-up of a new project can be complex and cumbersome. This gets in the way of agile development, where there is working software to review, adjust, and iterate from.&lt;/p&gt;

&lt;p&gt;While there are many code generators and templates to bootstrap a new project, once you start customizing the app or updating the data model, you’re on your own. You have to make those customizations manually, often in multiple different places. You can’t keep experiencing the benefits of the code generator.&lt;/p&gt;

&lt;p&gt;Therefore, Hatchify is trying to solve 3 problems simultaneously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable rapid creation of prototype applications&lt;/li&gt;
&lt;li&gt;Enable complete customization of the application&lt;/li&gt;
&lt;li&gt;Continually providing value while customizing or adding new features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means Hatchify is not a code generator or a limiting low-code tool. Instead, it’s a bunch of libraries that you can use whole or in part to match your needs.&lt;/p&gt;

&lt;p&gt;At the start of the project, a simple schema will provide you with a working app. An app where you can have conversations with the customer; and designers and developers can begin to iterate.&lt;/p&gt;

&lt;p&gt;When you make changes, you can rewrite just the parts you need to change. The rest of the app can still be updated like a low-code tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is it for?
&lt;/h2&gt;

&lt;p&gt;Hatchify is for products that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have CRUD-type behavior&lt;/li&gt;
&lt;li&gt;Anticipate a lot of customization&lt;/li&gt;
&lt;li&gt;Are built on NodeJS, REST, and React&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hatchify can’t fully compete with a low-code tool yet. You’ll have to build functionality like forms and authorization yourself. But, Hatchify provides a lot of value connecting (with strong TypeScript support) the frontend data layer all the way to the backend model layer and back:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmkmrp0hr67wvy0c0bu02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmkmrp0hr67wvy0c0bu02.png" alt="Image description" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is using it?
&lt;/h2&gt;

&lt;p&gt;We’re using Hatchify at &lt;a href="https://www.bitovi.com/"&gt;Bitovi&lt;/a&gt; for all new application development (where Node and React are the stack). We partnered with &lt;a href="https://kleartrust.com/"&gt;KlearTrust&lt;/a&gt;, a leader in Health IT, to develop Hatchify.&lt;/p&gt;

&lt;p&gt;KlearTrust had a good understanding of their data model and needed to quickly validate their designs, while simultaneously building a production application. You can see the sortable and filterable Hatchify DataGrid below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffehlvk5ek559mhwjaynt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffehlvk5ek559mhwjaynt.png" alt="Image description" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using Hatchify, KlearTrust was able to accelerate its development of the full application, providing a straightforward UI (built atop the DataGrid) to manage a reasonably complex data model. You can see Andy Schriever, Senior Vice President of KlearTrust, share his thoughts on using Hatchify.&lt;/p&gt;

&lt;p&gt;YouTube: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/HNf2SiRxtZk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;We’re hopeful you will check out Hatchify and find it as useful as KlearTrust has!&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;Our goal is to make Hatchify the swiftest way to build custom CRUD apps (or the swiftest way to build the CRUD elements of larger apps). Pending &lt;a href="https://github.com/bitovi/hatchify/issues"&gt;community feedback&lt;/a&gt;, we plan to add the following features immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Forms to create and edit data&lt;/li&gt;
&lt;li&gt;CRUD authorization support&lt;/li&gt;
&lt;li&gt;Data migrations&lt;/li&gt;
&lt;li&gt;Continued documentation improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there’s something you’d like to see, let us know on &lt;a href="https://github.com/bitovi/hatchify"&gt;Github&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;To get started on Hatchify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read our &lt;a href="https://github.com/bitovi/hatchify/blob/main/README.md"&gt;Getting Started Guide&lt;/a&gt; and &lt;a href="https://github.com/bitovi/hatchify/blob/main/docs/api-documentation.md"&gt;API Docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Get help and support on &lt;a href="https://discord.gg/JZcxKEMa5e"&gt;Bitovi’s Discord&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Follow Bitovi on &lt;a href="https://www.linkedin.com/company/3153182"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://twitter.com/bitovi"&gt;X&lt;/a&gt; for updates as they happen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks! &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hatchify Team&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>sql</category>
      <category>node</category>
    </item>
    <item>
      <title>Web Accessibility Matters</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Tue, 07 Nov 2023 17:12:25 +0000</pubDate>
      <link>https://dev.to/heather_veva/web-accessibility-matters-3chi</link>
      <guid>https://dev.to/heather_veva/web-accessibility-matters-3chi</guid>
      <description>&lt;p&gt;Would you intentionally isolate 15% of your customer-base?&lt;/p&gt;

&lt;p&gt;If you aren’t using accessibility best practices on your website - you’re doing exactly that.&lt;/p&gt;

&lt;p&gt;15% of the population - roughly 1 billion people - according to the World Health Organization, are living with a disability. People with inhibited motor functions may use key strokes to get around online, rather than a mouse. Users who are visually impaired may use a screen reader. If a website doesn’t have accessibility built into their code, these tools are rendered useless.&lt;/p&gt;

&lt;p&gt;What’s more, according to a 2021 PEW study, 23% of people with disabilities said they almost never go online. Why? Because the internet isn’t built with them in mind.&lt;/p&gt;

&lt;p&gt;You might be thinking, but there are laws about accessibility compliance, right? While the Web Content Accessibility Guidelines (WCAG) and Section 508 have linked up to improve accessibility across the web, section 508 does not apply to private company’s websites, unless they receive federal funds or are under contract with a federal agency. This leaves nearly 90% of websites non-compliant with &lt;a href="https://abilitynet.org.uk/news-blogs/inaccessible-websites-keep-disabled-people-out-work-abilitynet-tells-government-taskforce"&gt;basic accessibility guidelines&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So how can we do better?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you work in software, invest in resources for your devs to learn about accessibility standards and best practices.&lt;br&gt;
You can view a free checklist of the &lt;a href="https://www.w3.org/TR/2006/WD-WCAG20-20060427/appendixB.html"&gt;WCAG guidelines&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make accessibility an expectation from the start. This can save you time and money down the line and it ensures everyone who wants to access your site can do so successfully.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid relying on AI &amp;amp; overlays. Most AI tools are works in progress and while there may be uses for them in the future, right now they aren’t as good as traditional, hard-coded accessibility methods.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overlays claim to be quick tool for making your website WCAG compliant. Adding one line of code to your website sounds like a no brainer - don’t fall for the marketing. These overlays can conflict with screen readers, making it even more difficult for users with disabilities to navigate your site.&lt;/p&gt;

&lt;p&gt;Haben Girma, a Disability Justice Lawyer, gives a wonderful &lt;a href="https://www.youtube.com/watch?v=R12Z1Sp-u4U&amp;amp;t=50s"&gt;overview&lt;/a&gt; of why relying on AI and overlays prevents people with disabilities from interacting with your site effectively.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ask real users with disabilities to test your site. There is no substitute for asking people who depend on accessibility to let you know what works and what doesn’t.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, if walking through resources and checklists alone feels overwhelming or you want more insight into the business value accessibility can give you-attend a free, virtual web accessibility training on Thursday, November 16th at 11am CT.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Register for the workshop here: &lt;a href="https://www.bitovi.com/events/accessibility-training"&gt;https://www.bitovi.com/events/accessibility-training&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Will you and your company prioritize accessibility?&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>workshop</category>
      <category>webaccessibility</category>
      <category>html</category>
    </item>
    <item>
      <title>Docker 101: A Developer's Guide to Containerization &amp; Beyond</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Mon, 07 Aug 2023 17:22:16 +0000</pubDate>
      <link>https://dev.to/heather_veva/docker-101-a-developers-guide-to-containerization-beyond-10ma</link>
      <guid>https://dev.to/heather_veva/docker-101-a-developers-guide-to-containerization-beyond-10ma</guid>
      <description>&lt;p&gt;In the midst of the ever changing landscape of software development, the need for efficient and reliable deployment processes has never been greater. &lt;/p&gt;

&lt;p&gt;Developers are continually seeking tools that streamline the deployment workflow. Enter Docker—a powerful containerization platform that revolutionizes the way software is built, shipped, and executed. But in order to harness its power, we need to take a deep dive into Docker and explore what it does and how to use it.&lt;/p&gt;

&lt;p&gt;Enter Bitovi’s Learn Docker training. In just two and a half hours you can go from interested to expert in one of the leading containerization tools available. &lt;/p&gt;

&lt;p&gt;Now, let’s take a closer look at some of Docker’s key elements. &lt;/p&gt;

&lt;p&gt;At its core, Docker is an open-source platform that enables developers to create, deploy, and manage applications in lightweight, self-sufficient containers. Unlike traditional virtual machines, containers don't require a full operating system, making them faster to start, lighter in terms of resource usage, and more portable across different environments.&lt;/p&gt;

&lt;p&gt;To start using Docker, you must first install Docker on your machine. Docker provides comprehensive installation guides for various operating systems, such as Linux, macOS, and Windows. Once it’s installed, it’s time to start containerizing!&lt;/p&gt;

&lt;p&gt;Docker is comprised of three technologies which make it possible to containerize and customize an application: Dockerfile, images, and containers.&lt;/p&gt;

&lt;p&gt;A Dockerfile is a text file that contains instructions for building a Docker image. It defines the application's environment, installs dependencies, and sets up the necessary configurations.&lt;/p&gt;

&lt;p&gt;Docker images are the building blocks of containers. An image is a collection of root filesystem changes and their execution parameters. &lt;/p&gt;

&lt;p&gt;Containers are instances of Docker images that can be executed on any system running the Docker platform. A Docker container consists of a Docker image, an execution environment, and a set of standard instructions. &lt;/p&gt;

&lt;p&gt;A Dockerfile and its subsequent images and containers define a standard way to ship software, ensuring consistency and reproducibility.&lt;/p&gt;

&lt;p&gt;For developers working on multi-container applications, Docker Compose is a powerful tool. It allows defining and managing multi-container applications with a simple YAML file, automating the setup of complex environments.&lt;/p&gt;

&lt;p&gt;With Docker, developers can streamline their development workflows, increase deployment efficiency, and foster collaboration between teams. Embracing containerization empowers software developers with the tools to create consistent and scalable environments across different stages of the application lifecycle. Mastering Docker enables a developer to elevate their DevOps skills and become more efficient overall.&lt;/p&gt;




&lt;h3&gt;
  
  
  Ready to Learn More?
&lt;/h3&gt;

&lt;p&gt;Bitovi is a software consulting firm offering a free training on Docker!&lt;/p&gt;

&lt;p&gt;Here's what you can expect from the training:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look into Docker's architecture&lt;/li&gt;
&lt;li&gt;Build a simple Node.js app to use throughout the course&lt;/li&gt;
&lt;li&gt;Optimize an image for production&lt;/li&gt;
&lt;li&gt;Streamline local development workflows&lt;/li&gt;
&lt;li&gt;Form a full stack application using docker-compose&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the time we wrap, you'll have built a simple Node API and containerized it to run with Docker. No experience with Node or Docker is required!&lt;/p&gt;

&lt;p&gt;Even if you are frontend focused, understanding Docker will make you a more efficient and well rounded dev.&lt;/p&gt;

&lt;p&gt;Sound interesting? Find all the details and register (for free) here: &lt;a href="https://www.bitovi.com/en/docker-training"&gt;https://www.bitovi.com/en/docker-training&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>docker</category>
      <category>containers</category>
      <category>devops</category>
    </item>
    <item>
      <title>Chicago JavaScript Meetup</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Thu, 06 Jul 2023 17:43:27 +0000</pubDate>
      <link>https://dev.to/heather_veva/chicago-javascript-meetup-423d</link>
      <guid>https://dev.to/heather_veva/chicago-javascript-meetup-423d</guid>
      <description>&lt;h2&gt;
  
  
  In person Chicago meetup happening on Tuesday, July 18th at 5:30pm.
&lt;/h2&gt;

&lt;p&gt;We're hosting a summer bash for Chicago-area devs interested in networking, eating pizza, and engaging with a technical talk on serverless, specifically geared towards JS devs. &lt;em&gt;All levels of developers are always welcome.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Details
&lt;/h3&gt;

&lt;p&gt;Seasoned developer, Ross Gerbasi, is joining us in July to talk through the concept of Serverless from a JS developer's perspective - with a focus on Serverless Stacks. &lt;/p&gt;

&lt;p&gt;We will look at how we got here, why Serverless technologies have become so popular as well as modern tools to help JS developers focus on getting their ideas out reliably and quickly. There is also a 90% chance of live coding with a 50% chance of success, so pretty good odds if you ask me.&lt;/p&gt;

&lt;p&gt;The event will be held at 8th Light's offices at 25 E Washington St #509 on Tuesday, July 18th and starts at 5:30pm. Pizza, snacks, beer, and wine will be provided. &lt;/p&gt;

&lt;p&gt;Come join us!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read more details, join ChicagoJS, &amp;amp; RSVP to this meetup&lt;/strong&gt; 👉 &lt;a href="https://www.meetup.com/js-chi/events/288524148/"&gt;https://www.meetup.com/js-chi/events/288524148/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>eventsinyourcity</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Build Components Without a Framework: What You Need To Know About Web Components</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Mon, 05 Jun 2023 13:48:59 +0000</pubDate>
      <link>https://dev.to/heather_veva/build-components-without-a-framework-what-you-need-to-know-about-web-components-3ebn</link>
      <guid>https://dev.to/heather_veva/build-components-without-a-framework-what-you-need-to-know-about-web-components-3ebn</guid>
      <description>&lt;p&gt;&lt;strong&gt;TLDR:&lt;/strong&gt; Sometimes, we all need a little more flexibility. Web components are a set of APIs provided by modern web browsers that allow developers to create reusable UI components. Web components can be an advantageous technology to leverage because they are self-contained - meaning they don't rely on external libraries or frameworks. They also provide a way to encapsulate styles and behavior, making it easier to build and maintain complex UIs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89k9m9rrzsvi38315suq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89k9m9rrzsvi38315suq.jpg" alt="Morpheus meme that states what if I told you you can build components without frameworks" width="642" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Web Components?
&lt;/h2&gt;

&lt;p&gt;Let’s say your company’s website is already up and running- all you need to do is add a component or two. Maybe the site is built in a CMS like WordPress or Squarespace, and you want to jazz it up with  JavaScript without overhauling the entire thing. What you want is a custom HTML tag, one that won’t interfere with the code that’s already there. This is where web components come in. &lt;/p&gt;

&lt;p&gt;Web components allow for the encapsulation of CSS and JavaScript within a custom tag. That custom tag is reusable and framework agnostic, meaning once it’s built in vanilla JavaScript, you can tweak it and recycle it across a variety of projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  A (Very) Brief History of Web Components
&lt;/h2&gt;

&lt;p&gt;In 2011, Alex Russell, a then-senior software engineer at Google, gave a talk at the Fronteers Conference in Amsterdam. In that talk, Russell acknowledged the waning power of Internet Explorer and the rising popularity of Chrome and introduced web components. &lt;/p&gt;

&lt;p&gt;In the beginning, using a web component required a polyfill—another technology that ensured cross-browser compatibility. And in 2013, Google created a stopgap with the web component library Polymer. This library was built to provide a set of features that made it easier and faster to create custom elements, as well as to assist developers with polyfill selection. &lt;/p&gt;

&lt;p&gt;Now, however, browsers have native compatibility. Chrome and Safari developed native implementation of web components in 2016, Firefox followed in 2018, and Edge rounded out the pack in 2020. &lt;/p&gt;

&lt;p&gt;Web components no longer require a polyfill to work in any major browser, making them an excellent way to build reusable components in JavaScript. Polymer is now in maintenance mode (although YouTube still relies on it heavily), and Lit is the preferred library for building web components, among myriad other options.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Battle Between Frameworks &amp;amp; Web Components
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Web components sound great and all, but don’t frameworks do all the componentization for me?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Over the last twenty years, JavaScript frameworks like Angular, React, Vue, and Svelte have paved the way for component-based development, making it easier to build organized, scalable applications. While web components fought for native browser compatibility, JavaScript frameworks made component-based architecture more seamless than ever. As a result, entire ecosystems were built around JavaScript frameworks. &lt;/p&gt;

&lt;p&gt;But web components haven’t disappeared. They’re in use on sites such as Salesforce, GitHub, Google Play, and YouTube. YouTube is built almost entirely with web components because of the site’s heavy user interactivity and complexity. Web components help ensure YouTube has fast runtimes because, when built on top of browser APIs and web standards, the JavaScript footprint of the design system is way lighter—which is key for site performance.&lt;/p&gt;

&lt;p&gt;Web components are also more versatile than frameworks. Not only are they interchangeable between frameworks because of their compatibility with a variety of tech stacks, but they also offer cross-platform development and ensure brand consistency. Since web components focus on doing a singular function well, they allow us to break up a complex web app into reusable pieces that will look and function the same. &lt;/p&gt;

&lt;p&gt;Web components can be used in one-off circumstances to spruce up an existing website—adding a banner, an interactive checklist, or an audio player. But they can also be used to build entire websites. So while frameworks need JavaScript, JavaScript doesn’t need frameworks. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Stuff
&lt;/h2&gt;

&lt;p&gt;Web components are custom HTML elements with dedicated UI, style, and logic. They utilize a set of technologies to create a standard component model, which lays the foundation for the encapsulation and interoperability of components. In short, web components combine the simplicity of HTML with the power of JavaScript.&lt;/p&gt;

&lt;p&gt;Web components are a mix of four web standards: custom elements, shadow DOM, ES modules, and HTML templates.&lt;/p&gt;

&lt;p&gt;Custom elements make it possible to create new tags by extending HTML and attributing unique style and logic only to that new element.&lt;/p&gt;

&lt;p&gt;The shadow DOM keeps web component attributes segmented from the main DOM. The shadow DOM hides the internal markup of the component from other scripts, meaning global CSS and JavaScript will not affect the element. This technology makes web components reusable, enhancing the value of a well-constructed web component. The shadow DOM is also optional. While the technology is available to protect your web component from global styles, it isn’t required, so if you’re looking for the web component to inherit styles from your CSS, that option is still on the table. &lt;/p&gt;

&lt;p&gt;ES modules are a function of JavaScript itself and have contributed to the usability of web components across browsers. This technology provides a mechanism for splitting up JavaScript programs into separate modules that can be imported when needed.&lt;/p&gt;

&lt;p&gt;The HTML template tag is used to populate the shadow DOM of a web component. The template tag can be id-ed with your web components' name and content, and style can be added directly between the opening and closing template tag. This ensures that the contents of the template tag are hidden from the DOM and will only be rendered when called on by JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Wrap Up
&lt;/h2&gt;

&lt;p&gt;With their versatility and lightweight nature, web components are an important tool to have in your developer toolbox - so don’t forget about them. &lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to Learn More?
&lt;/h2&gt;

&lt;p&gt;Bitovi is a software consulting firm offering a free training on web components! &lt;/p&gt;

&lt;p&gt;We’ll cover the basics of web components, including how to create custom elements, how to use templates to define the structure of your components, and how to use events to communicate between components. We’ll also delve into more advanced topics like using Shadow DOM to encapsulate styles and using slots to allow for more flexible content.&lt;/p&gt;

&lt;p&gt;This is a great resource for anyone looking to learn about web components and level up their frontend development skills. &lt;/p&gt;

&lt;p&gt;Sound interesting? Find all the details and register (for free) here: &lt;a href="https://www.meetup.com/js-chi/events/293573432/?_xtd=gatlbWFpbF9jbGlja9oAJGE3NTcxMGQwLTU2ZjMtNDM2NS05NWFhLTk1ZmRlYmZmZmZlMQ%253D%253D"&gt;https://www.meetup.com/js-chi/events/293573432/?_xtd=gatlbWFpbF9jbGlja9oAJGE3NTcxMGQwLTU2ZjMtNDM2NS05NWFhLTk1ZmRlYmZmZmZlMQ%253D%253D&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webcomponents</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Data Reveals Interesting New Insight Into How Leadership Styles Impact the Quality of Projects</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Mon, 14 Nov 2022 19:58:11 +0000</pubDate>
      <link>https://dev.to/heather_veva/data-reveals-interesting-new-insight-into-how-leadership-styles-impact-the-quality-of-projects-597d</link>
      <guid>https://dev.to/heather_veva/data-reveals-interesting-new-insight-into-how-leadership-styles-impact-the-quality-of-projects-597d</guid>
      <description>&lt;p&gt;Join us on December 7th at 11am CT as we discuss a modernized approach to technical project management. We'll breakdown the do’s and do not's with three experienced developers and team leads. &lt;/p&gt;

&lt;p&gt;Register HERE: &lt;a href="https://my.demio.com/ref/afxjbwFFofGQ5jY1"&gt;https://my.demio.com/ref/afxjbwFFofGQ5jY1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>projectmanagement</category>
      <category>productivity</category>
      <category>webinar</category>
    </item>
    <item>
      <title>DevOps Webinar: Let's Talk Pipeline Runners</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Tue, 18 Oct 2022 13:50:43 +0000</pubDate>
      <link>https://dev.to/heather_veva/devops-webinar-lets-talk-pipeline-runners-4oh1</link>
      <guid>https://dev.to/heather_veva/devops-webinar-lets-talk-pipeline-runners-4oh1</guid>
      <description>&lt;p&gt;📌Join DevOps experts on November 2nd at 11am CT to discuss the tools they're using and weigh the pros and cons of the most popular Pipeline Runners available.&lt;/p&gt;

&lt;p&gt;👉 Be sure your seat is saved! &lt;a href="https://my.demio.com/ref/P1vnTtR1cOvEHVTz"&gt;https://my.demio.com/ref/P1vnTtR1cOvEHVTz&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Seeking Speakers for *virtual* ChicagoJS Meetup</title>
      <dc:creator>Heather Stevens</dc:creator>
      <pubDate>Wed, 12 Oct 2022 20:29:19 +0000</pubDate>
      <link>https://dev.to/heather_veva/seeking-speakers-for-virtual-chicagojs-meetup-27n8</link>
      <guid>https://dev.to/heather_veva/seeking-speakers-for-virtual-chicagojs-meetup-27n8</guid>
      <description>&lt;h1&gt;
  
  
  Chicago JavaScript meetup is looking for speakers!
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;If you have a talk related to any JavaScript framework, tools, or techniques, we would love to hear from you. Giving a talk is a great opportunity to help others, find friends with similar interests, get hired and get selected as a speaker at world-class conferences&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We focus on JavaScript themes for presentations, but the subject of the talk is up to you!&lt;br&gt;
Potential topics might include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GraphQL&lt;/li&gt;
&lt;li&gt;Webpack&lt;/li&gt;
&lt;li&gt;Front-end workflow&lt;/li&gt;
&lt;li&gt;React/Redux/Redux-saga&lt;/li&gt;
&lt;li&gt;Typescript&lt;/li&gt;
&lt;li&gt;Angular 5&lt;/li&gt;
&lt;li&gt;Progressive web app&lt;/li&gt;
&lt;li&gt;JavaScript performance&lt;/li&gt;
&lt;li&gt;npm vs yarn vs Turbo to package your app&lt;/li&gt;
&lt;li&gt;Functional programming in JS&lt;/li&gt;
&lt;li&gt;JavaScript app architecture&lt;/li&gt;
&lt;li&gt;Vue JS&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Where&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Virtual! Speak from the comfort of your own home. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;When&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The second to last Tuesday of each month from 5:30pm - 6:30pm CT&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upcoming Dates&lt;/strong&gt;: November 15, 2022 - December 13, 2022&lt;/p&gt;

&lt;p&gt;To check out a full list of our upcoming meetups, visit us &lt;a href="https://www.meetup.com/js-chi/events/"&gt;https://www.meetup.com/js-chi/events/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
  </channel>
</rss>
