<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering</loc>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
    <lastmod>2024-01-23</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1661890463319-X2IM9TI152JFQV0ATJJ0/DSC01404-1_hack_day_2022-1.jpg</image:loc>
      <image:title>Engineering Blog</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2024/1/23/enhancing-machine-learning-workflows-with-large-language-models-a-hybrid-approach</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2024-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/ff6113ae-cb04-4661-a0ee-41fb9c6a144e/LLM+as+Quality+Gate+%283%29.png</image:loc>
      <image:title>Engineering Blog - Enhancing Machine Learning Workflows with Large Language Models: A Hybrid Approach - Make it stand out</image:title>
      <image:caption>Hybrid ml workflow: Flowchart of how an existing machine learning model is augmented with a large language model to ensure quality responses in a dynamic, context-aware system</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2023/12/15/revolutionizing-proptech-with-llms</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2023-12-20</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/c1e079dc-8aa4-438c-80a8-9b98d3c5435c/Screenshot+2023-12-15+at+2.15.57+PM.png</image:loc>
      <image:title>Engineering Blog - Revolutionizing PropTech with LLMs - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2023/3/8/smart-maintenance-conversational-ai</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2023-03-09</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/4fa821c5-54ea-43c8-85b7-799371e328ec/SMA+Flow.png</image:loc>
      <image:title>Engineering Blog - Smart Maintenance Conversational AI - Make it stand out</image:title>
      <image:caption>Named entity Recognition (NER) used By Smart Maintenance to identify and categorize key information gathered from the conversation</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/9a1ca8ef-26de-4540-9b40-0da6fcec81f6/Address.png</image:loc>
      <image:title>Engineering Blog - Smart Maintenance Conversational AI - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1696304d-a9d4-404f-b252-64e7a251fb58/Issue+Description.png</image:loc>
      <image:title>Engineering Blog - Smart Maintenance Conversational AI - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/42a11df9-5a81-49cd-9822-5083af269722/Triage.png</image:loc>
      <image:title>Engineering Blog - Smart Maintenance Conversational AI - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2022/12/19/building-apis-that-delight-customers-and-developers</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-12-20</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2022/11/11/understanding-invoices-with-document-ai</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-11-14</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/2270e9a2-f02d-4efa-ad71-14a379eb5807/Frame+4+%281%29.png</image:loc>
      <image:title>Engineering Blog - Understanding Invoices with Document AI - Make it stand out</image:title>
      <image:caption>ML models tend to be over or underconfident, such that their confidence scores don’t exactly correspond to the probability that the prediction is correct. we fit additional calibration models To account for this, such that we can make consistent decisions of whether or not to show predictions. Image credit “On Calibration of Modern Neural Networks”.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/c3f914ac-9b9f-49e5-93ce-58f8c83870dd/Frame+1+%281%29.png</image:loc>
      <image:title>Engineering Blog - Understanding Invoices with Document AI - Make it stand out</image:title>
      <image:caption>Original Invoice vs OCR Information vs Labels</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/29f2cd56-bd4a-4fb1-9bc1-c15eb8ea6de9/Frame+2+%281%29.png</image:loc>
      <image:title>Engineering Blog - Understanding Invoices with Document AI - Make it stand out</image:title>
      <image:caption>We train separate Random Forest ClassifierS for fields that have a unique set of target classes for each customer.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/7e7fde1e-c572-4823-9aa0-33ca74cbcc84/Frame+3+%282%29.png</image:loc>
      <image:title>Engineering Blog - Understanding Invoices with Document AI - Make it stand out</image:title>
      <image:caption>Keeping the input and output fixed we can easily switch between Deep learning architectures to optimize metrics such as accuracy, training and inference time. This also gives us the flexibility to quickly try out new approaches as the field advances.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/3177a7df-cd4c-42ae-872f-d83ee568efc2/Smart+Bill+Entry+and+Document+AI+%40+AppFolio.png</image:loc>
      <image:title>Engineering Blog - Understanding Invoices with Document AI - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2022/8/31/lisa-conversational-ai</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-09-01</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/cc51e3c8-a91c-4dab-bf58-1b0eff39696a/DALL%C2%B7E+2022-08-30+21.03.00+-+Dog+sitting+on+a+chair+in+front+of+a+computer+with+one+paw+on+the+keyboard%2C+he+is+turning+to+the+right+to+talk+to+another+dog+next+that+sits+on+the+gr.jpg</image:loc>
      <image:title>Engineering Blog - Lisa: Conversational AI - Make it stand out</image:title>
      <image:caption>Inspired by PETER STEINER/The New Yorker magazine (1993) “On the internet, nobody knows you’re a dog.” Generated with DALL-E 2 prompt “Dog sitting on a chair in front of a computer with one paw on the keyboard. Comic style, black and white.”</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/392847c6-e641-4c78-be5e-8b5278eb8f04/Screen+Shot+2022-08-31+at+9.53.23+AM.png</image:loc>
      <image:title>Engineering Blog - Lisa: Conversational AI - Make it stand out</image:title>
      <image:caption>Galaxy Input text (top blue blob) and output response (bottom blue blob). The input text includes current inbound message (red) and conversation history (blue), and the output response includes confidence scores for each label.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/bc8a32cd-8889-4f9d-ab81-f5ba953f8e61/Screen+Shot+2022-08-31+at+9.26.02+AM.png</image:loc>
      <image:title>Engineering Blog - Lisa: Conversational AI - Make it stand out</image:title>
      <image:caption>NLP models transform the conversation history into a structured conversation state. A logic layer combines the conversation state with information from a Knowledge Base (KB) to compute the next action or response.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1ee1cc59-c960-4c2b-b17f-5dd875ff3f31/Screen+Shot+2022-08-31+at+9.39.43+AM.png</image:loc>
      <image:title>Engineering Blog - Lisa: Conversational AI - Make it stand out</image:title>
      <image:caption>Output of the SHAP explainer package for the label SET_UNIT_TYPE_BR2. It shows the importance of each word in the input relating to generating the output score for this label. The colors indicate which parts of the input the model deemed to have positive (red) and negative (blue) contributions. It mostly focuses on the words “2 bedroom” in the last prospect message, but also considers the unit types that Lisa said were available.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/478672ac-a777-4499-9485-a7eda99608a6/Screen+Shot+2022-08-31+at+9.39.21+AM.png</image:loc>
      <image:title>Engineering Blog - Lisa: Conversational AI - Make it stand out</image:title>
      <image:caption>Output of the SHAP explainer package for the label SECTION8. It shows the importance of each word in the input relating to generating the output score for this label. The colors indicate which parts of the input the model deemed to have positive (red) and negative (blue) contributions. In this case it mostly focuses on the words “accept section 8?”.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2022/8/10/lisa-inquiry-parser</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-09-01</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/8d4215f1-1865-4122-9bb5-1c70335604b6/Screen+Shot+2022-08-10+at+10.21.13+PM.png</image:loc>
      <image:title>Engineering Blog - Lisa: Parsing Inquiries with Seq2Seq Transformers - Make it stand out</image:title>
      <image:caption>The Regex Parser has close to 100% precision, but over time its recall will drop as new listing sites come online, or existing sites change their format. We continue to run the RegEx parser first and then augment it with fields from the ML parser. The parsed info is then used to create new, or update existing contacts and threads.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/4daee4f6-53b1-4fb8-8ca4-84197586ad12/transformer_self-attention_visualization.png</image:loc>
      <image:title>Engineering Blog - Lisa: Parsing Inquiries with Seq2Seq Transformers - Make it stand out</image:title>
      <image:caption>An illustration of the activations of the attention mechanism that underpins the Transformer architecture. As we are encoding the word "it", part of the attention mechanism is focusing on "The Animal", and baked a part of its representation into the encoding of that word. Source: The Illustrated Transformer.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/dd8b57b4-d931-46da-a27e-7ec3a962d7a1/Screen+Shot+2022-08-10+at+10.19.45+PM.png</image:loc>
      <image:title>Engineering Blog - Lisa: Parsing Inquiries with Seq2Seq Transformers - Make it stand out</image:title>
      <image:caption>The input sequence consisting of source domain, email subject and body (we remove URLs and HTML tags before passing it into the model) is mapped to a string that resembles natural language and is trivial to parse. We then check whether each value actually exists in the input (e.g. by regex matching phone numbers), and compute confidence scores for each field.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/eb61c210-e293-4fbe-b0cd-11fbd5ee6026/Screen+Shot+2022-08-11+at+10.49.19+AM.png</image:loc>
      <image:title>Engineering Blog - Lisa: Parsing Inquiries with Seq2Seq Transformers - Make it stand out</image:title>
      <image:caption>Sample output of the SHAP explainer package. It shows the distribution of overall importance when generating part of the phone number (substring “555” in the green circle). The colors indicate which parts of the input the model deemed to have positive (red) and negative (blue) contributions. In this case the model mainly looked at the keyword “Phone” and the phone number itself.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/7c3c41e0-5c6b-4d11-b77f-45198edb3aa1/Screen+Shot+2022-08-11+at+10.49.48+AM.png</image:loc>
      <image:title>Engineering Blog - Lisa: Parsing Inquiries with Seq2Seq Transformers - Make it stand out</image:title>
      <image:caption>Sample output of the SHAP explainer package. It shows the distribution of overall importance when generating the potential resident’s first name  (substring “Jon” in the green circle). The colors indicate which parts of the input the model deemed to have positive (red) and negative (blue) contributions. In this case the model mainly looked at the keyword(s) “first name”, “Jon” and “My name is Jon…”.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2022/7/22/appfolios-ai-leasing-assistant-lisa</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2022-08-31</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/f6740eb1-bf4b-45d1-bd7b-8d0b474c1510/Conversation+Flow.png</image:loc>
      <image:title>Engineering Blog - AppFolio’s AI Leasing Assistant, Lisa - Make it stand out</image:title>
      <image:caption>Typical flow of a leasing conversation, Blue boxes indicate steps that are automated by Lisa.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/6bfc006c-bf23-4a88-b931-790c97fa91b1/Lisa+Conversation+1.1.png</image:loc>
      <image:title>Engineering Blog - AppFolio’s AI Leasing Assistant, Lisa - Make it stand out</image:title>
      <image:caption>LISA CONVERTS THE NATURAL LANGUAGE INTO A STRUCTURED RESPONSE THAT ALLOWS THE LOGIC LAYER TO COMPUTE THE RESPONSE.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/a09861ef-4a85-4a9d-85a0-c7934f09f476/Lisa+Counteroffer.png</image:loc>
      <image:title>Engineering Blog - AppFolio’s AI Leasing Assistant, Lisa - Make it stand out</image:title>
      <image:caption>LISA PARSES THE SHOWING TIME PREFERENCE AND CAN RESPOND TO COUNTEROFFERS.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1120b7f0-f976-489a-910f-80480247e4a1/Lisa+System+Diagram.png</image:loc>
      <image:title>Engineering Blog - AppFolio’s AI Leasing Assistant, Lisa - Make it stand out</image:title>
      <image:caption>Lisa integrates with several external systems via APIs and Natural language.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2021/5/27/quality-assurance-at-appfolio-property-manager-2021</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1622185152919-BGSZFWIQAM0G0Y6F7L83/QA-logo.png</image:loc>
      <image:title>Engineering Blog - Quality Assurance at AppFolio Property Manager 2021 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1622185567675-604T5ECXJLN7F8R7J51Y/modern-agile.jpeg</image:loc>
      <image:title>Engineering Blog - Quality Assurance at AppFolio Property Manager 2021 - Make it stand out</image:title>
      <image:caption>Whatever it is, the way you tell your story online can make all the difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2020/5/4/using-code-coverage-data-to-speed-up-continuous-integration-and-reduce-costs</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-05-29</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/12/6/how-much-do-you-save-with-ruby-27-memory-compaction</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-02-14</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/11/28/how-do-i-use-rails-ruby-bench</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-01-31</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1574935277969-AQTNTB1IA8L1QOZHYV67/packer_start.png</image:loc>
      <image:title>Engineering Blog - How Do I Use Rails Ruby Bench?</image:title>
      <image:caption>Packer starts to build your image via “packer build ami.json”</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1574940207371-GCM4WWEOCCRK0YKICSEP/packer_stop.png</image:loc>
      <image:title>Engineering Blog - How Do I Use Rails Ruby Bench?</image:title>
      <image:caption>And after around an hour, you have a Packer image. It’ll print the AMI, which you’ll need.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/10/24/symboltos-returns-frozen-string-in-ruby-27</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-01-17</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/12/27/ruby-270s-rails-ruby-bench-speed-is-unchanged-from-260</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2020-01-03</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/10/15/more-fiber-benchmarking</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-12-20</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1571406465608-EW22AH83NUA9YH9OABZH/threads_multi_master.png</image:loc>
      <image:title>Engineering Blog - More Fiber Benchmarking</image:title>
      <image:caption>Y Axis is the time in seconds to process 100,000 messages with the given number of threads</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1571406559489-63WAHC9ICE74XEE8ENC1/williams_fiber_testing.png</image:loc>
      <image:title>Engineering Blog - More Fiber Benchmarking</image:title>
      <image:caption>Red and orange are the optimised version, while blue and green are the old simple one.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/7/18/jit-and-rubys-mjit</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-12-06</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1563485245034-HEURLDK8APM4DMMO43ZF/rip-1.jpg</image:loc>
      <image:title>Engineering Blog - JIT and Ruby's MJIT</image:title>
      <image:caption>Arthur Rackham explains Ruby debugging</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1563472974447-NHL7NYL4R47JZKEUS56K/compare.png</image:loc>
      <image:title>Engineering Blog - JIT and Ruby's MJIT</image:title>
      <image:caption>These numbers are from Benoit Daloze in 2016, see link above</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1563485889709-1Y2DB9PB6U6KQAP04O7P/mischief_you.jpg</image:loc>
      <image:title>Engineering Blog - JIT and Ruby's MJIT</image:title>
      <image:caption>A JIT Implementation beset by troubles</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1563485524849-5CRHY9LJCLLUPMGWR4SP/exquisite_fairy_dancing.jpg</image:loc>
      <image:title>Engineering Blog - JIT and Ruby's MJIT</image:title>
      <image:caption>A Ruby core developer tests a JIT implementation for stability</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1563485647502-B3H21WBC8ZV5NWN69YS7/rip-33.jpg</image:loc>
      <image:title>Engineering Blog - JIT and Ruby's MJIT</image:title>
      <image:caption>Making fun of Ruby for not having JIT yet</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1563485595112-S297V10G9PHTDT66GT82/ring36.jpg</image:loc>
      <image:title>Engineering Blog - JIT and Ruby's MJIT</image:title>
      <image:caption>The MJIT implementation shows early promise</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1563485697467-A41124LX9M6JN006UE1T/switch.jpg</image:loc>
      <image:title>Engineering Blog - JIT and Ruby's MJIT</image:title>
      <image:caption>Debugging JIT problems</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1563485749339-PFV8H12B25AZNLKURKI9/rackham-arthur-goblin-M00025-16.jpg</image:loc>
      <image:title>Engineering Blog - JIT and Ruby's MJIT</image:title>
      <image:caption>Telling the playfully frightened children of a once-JITless Ruby</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/11/20/rubyconf-nashville</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-11-22</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/11/13/intern-experience-at-appfolio</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-11-18</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1573693949030-AOD1M2IRW57EGRKLLYUW/MVIMG_20190724_154405.jpg</image:loc>
      <image:title>Engineering Blog - Intern Experience at Appfolio</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1573693985913-I4AH4JD7GS97AQ9VKWQK/MVIMG_20190918_130719_1.jpg</image:loc>
      <image:title>Engineering Blog - Intern Experience at Appfolio</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1573694019239-T168TKC7E053BBO4J0EQ/ciarra-thriller.jpeg</image:loc>
      <image:title>Engineering Blog - Intern Experience at Appfolio</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/7/3/rubys-roots-and-matzs-leadership</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-11-08</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/10/24/ruby-27preview2-a-quick-speed-update</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-10-25</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/7/19/how-mjit-generates-c-from-ruby-a-deep-dive</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-10-13</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/9/4/benchmark-results-threads-processes-and-fibers</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-10-27</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567582158693-55UN97D9TZ1YTEAWU9E5/t_v_f_v_p_ruby_2_6.png</image:loc>
      <image:title>Engineering Blog - Benchmark Results: Threads, Processes and Fibers</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567584555071-9GXOCT728C5VSF9MZUMS/tfp_ruby_20.png</image:loc>
      <image:title>Engineering Blog - Benchmark Results: Threads, Processes and Fibers</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567582806026-SH59ZR69IH3M0LWJL8D2/forks_by_ruby.png</image:loc>
      <image:title>Engineering Blog - Benchmark Results: Threads, Processes and Fibers</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567583215572-3NKM0HPO08GFCCYAIDTD/threads_by_ruby.png</image:loc>
      <image:title>Engineering Blog - Benchmark Results: Threads, Processes and Fibers</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567583507172-GSKECDJ3BNZKYILTRPCH/fibers_by_ruby.png</image:loc>
      <image:title>Engineering Blog - Benchmark Results: Threads, Processes and Fibers</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/9/13/benchmarking-fibers-threads-and-processes</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-09-16</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567230852223-R1D5NTFFUWKX98UNW479/concurrency_vs_parallelism.png</image:loc>
      <image:title>Engineering Blog - Benchmarking Fibers, Threads and Processes</image:title>
      <image:caption>And don’t get me started on parallelism…</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567231027728-M1OOX1LBCZ2INCZ0V005/image-asset.png</image:loc>
      <image:title>Engineering Blog - Benchmarking Fibers, Threads and Processes</image:title>
      <image:caption>It’s a nice logo, isn’t it?</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567231114815-6U1V9X36WRP2L6E8U15Q/stages-of-failure-explained.jpg</image:loc>
      <image:title>Engineering Blog - Benchmarking Fibers, Threads and Processes</image:title>
      <image:caption>If I avoid strategy and vision, I can narrow the scope of my failures. That’s the right takeaway, I’m sure of it.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567231321410-GOTGODI4BW8OIDGKMYLV/empirical_usage.png</image:loc>
      <image:title>Engineering Blog - Benchmarking Fibers, Threads and Processes</image:title>
      <image:caption>I’m starting to enjoy how tremendously bad the visual explanations of shell pipes are. Maybe that’s a form of Stockholm Syndrome?</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567231557907-YPZQ4ZUCVMMX0UFJN7J5/getty_525935645_183646.jpg</image:loc>
      <image:title>Engineering Blog - Benchmarking Fibers, Threads and Processes</image:title>
      <image:caption>In cooperative multitasking, he keeps the goofy grin on his face and switches when he feels like. In preemptive multitasking he can’t spend too long on the cellphone or the hand with the book slaps him.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1567231432199-P22HENX35FBDFMVQ8UNG/personal-success-change-your-life-keys-to-success2.jpg</image:loc>
      <image:title>Engineering Blog - Benchmarking Fibers, Threads and Processes</image:title>
      <image:caption>This guy has just gotten Ruby Fiber code to work. You can tell by the posture.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/6/25/how-ruby-encodes-references-ruby-tiny-objects-explained</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-09-06</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/6/3/wrk-does-it-matter-if-it-has-native-keepalive</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-08-16</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/6/4/where-does-rails-spend-its-time</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-07-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1560351841094-63XGIYGCBK57DLEUUZ94/Screen+Shot+2019-06-12+at+4.03.31+PM.png</image:loc>
      <image:title>Engineering Blog - Where Does Rails Spend Its Time?</image:title>
      <image:caption>This is one of those GC::PRofiler reports. You can also get it as a Ruby hash table and then dump that, which makes it a bit easier to analyze in irb later.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/3/22/ruby-27-and-the-compacting-garbage-collector</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-07-19</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/5/20/wait-why-is-system-returning-the-wrong-answer-a-ruby-debugging-story</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-07-05</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/5/20/why-is-ruby-slower-on-mac-an-early-investigation</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-06-21</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1558357945442-M6QPZE4VI967616TN8UC/image-asset.png</image:loc>
      <image:title>Engineering Blog - Why is Ruby Slower on Mac? An Early Investigation</image:title>
      <image:caption>I’ve cut out some columns you don’t care about. You’ll see the occasional line switched, but notice that only happens when the %self is very similar.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1558359540081-QTA3PVHBWUXR6NLEQVME/mactax_rubyprof_optcarrot_mac_output.png</image:loc>
      <image:title>Engineering Blog - Why is Ruby Slower on Mac? An Early Investigation</image:title>
      <image:caption>This is not Mac vs Linux, it’s Mac vs Mac on the same machine</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/5/17/jit-performance-with-a-simpler-benchmark</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-06-07</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1558105459294-A8R5PNFJAACY38RPLWEU/rails_percentiles.png</image:loc>
      <image:title>Engineering Blog - JIT Performance with a Simpler Benchmark</image:title>
      <image:caption>That thick line toward the bottom is the X axis, or “rate == 0.”</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1558106107601-YYC5BP48TT5LLVHAASV9/rack_percentiles.png</image:loc>
      <image:title>Engineering Blog - JIT Performance with a Simpler Benchmark</image:title>
      <image:caption>JIT is still slower than non-JIT, but it’s getting closer. These numbers are much higher because a raw Rack “hello, world” route is very fast compared to Rails.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/4/27/measuring-rails-overhead</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-05-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556547213632-TCDSSK62XSZR9BVRWUJB/RSB_StaticRouteSingleBG.png</image:loc>
      <image:title>Engineering Blog - Measuring Rails Overhead</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556547506447-PZWGAZZNJVSXRBR126PW/RSB_RackStaticRouteSingleBG.png</image:loc>
      <image:title>Engineering Blog - Measuring Rails Overhead</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556547835819-YQ0ZXJT1EY5IVRUGGWMH/iters_sec_formula.png</image:loc>
      <image:title>Engineering Blog - Measuring Rails Overhead</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556547933444-7RX42HWKWVXMYW407QZ1/RailsTimePerRequestBG.png</image:loc>
      <image:title>Engineering Blog - Measuring Rails Overhead</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/5/14/using-machine-learning-to-improve-the-maintenance-experience-for-residents</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871066816-MR6MRAAXLRP5MCMFTK2E/request+example.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871111883-NGHJKPE1CH44MR5R368X/NLP+preprocessing.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871154527-XUGCMFWAK3W8UGDA5K4J/contradicting+labels.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871272631-JWD8MFAEJLH1V8V495U1/confusion+matrix.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871303265-DIREYFQ1D0HK6X2NLRH4/confusing+pairs.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871343428-9AQAV81ZFPRPOSQCILO5/three+branches.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871685936-5I96J6SPHA2Q0E08FLL3/tsne+mcc.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
      <image:caption>Pretrained Word2Vec MCC examples</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871564826-3BZ19MOQXUU1JCLAKFYI/tSNE+MINST.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
      <image:caption>Maaten, L.V., &amp; Hinton, G.E. (2008). Visualizing Data using t-SNE.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871968615-RIMNFIYJ37XYGJ40S2V5/corrected+prediction.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557871882637-XHU7IHW9MSHWG9S1WY39/confidence-error_rate.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
      <image:caption>error rate to confidence level</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557872013277-ZVMD1FK3CWW4A70P98PL/clustering+unknown.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1557872064591-TAU1F8DKBF8HAAWN53R2/BERT+performance.png</image:loc>
      <image:title>Engineering Blog - Using Machine Learning to Improve the Maintenance Experience for Residents</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/4/11/a-simpler-rails-benchmark-puma-and-concurrency</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-06-04</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1555042378425-WU0KY641YSSUYRDOF2RG/multiversion_puma_concurrency.png</image:loc>
      <image:title>Engineering Blog - A Simpler Rails Benchmark, Puma and Concurrency</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556398046649-9C8JJPPINC4FNVHAUCI8/Concurrency41ComparisonBG.png</image:loc>
      <image:title>Engineering Blog - A Simpler Rails Benchmark, Puma and Concurrency</image:title>
      <image:caption>The Ruby versions go 2.0 to 2.6, left to right.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556398103637-R84LBRT7CO3IO2K79XQS/Concurrency48ThreadsComparisonBG.png</image:loc>
      <image:title>Engineering Blog - A Simpler Rails Benchmark, Puma and Concurrency</image:title>
      <image:caption>Kinda looks like “just save your threads and stay home,” doesn’t it?</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556398316397-L3Y9D9QRBLMG653L9R79/Concurrency814ThreadsComparisonBG.png</image:loc>
      <image:title>Engineering Blog - A Simpler Rails Benchmark, Puma and Concurrency</image:title>
      <image:caption>The Triumphant hero shot: a case where 4 threads are… well, maybe marginally better than 1. Barely. Also, this was the final graph. You can CMD-W any time from here on out.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/4/21/wrk-it-my-experiences-load-testing-with-an-interesting-new-tool</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-04-26</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556239642937-182FDW6E9IYZFCFQKKEX/pommie-sm.gif</image:loc>
      <image:title>Engineering Blog - WRK It! My Experiences Load-Testing with an Interesting New Tool</image:title>
      <image:caption>Siege uses a cute dog logo, though.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1556239465308-B6NJC1ZU6J7ER9VW8XYR/made_with_wrk.png</image:loc>
      <image:title>Engineering Blog - WRK It! My Experiences Load-Testing with an Interesting New Tool</image:title>
      <image:caption>A Slide from my RubyKaigi talk - wrk was used to collect the data.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/1/18/benchmarking-ruby-app-servers-badly</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-04-12</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1547827042856-PJLVMUCM1X4UZCHITII9/image-asset.png</image:loc>
      <image:title>Engineering Blog - Learn by Benchmarking Ruby App Servers Badly</image:title>
      <image:caption>You can click to enlarge the image, but it’s still pretty visually busy.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1547828525561-JK5EPQBU43DGXVB3E9YS/RackSimpleAppThroughput.png</image:loc>
      <image:title>Engineering Blog - Learn by Benchmarking Ruby App Servers Badly</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1548180329811-WUPD9TTILYCYWRAH775R/Screen+Shot+2019-01-22+at+10.05.12+AM.png</image:loc>
      <image:title>Engineering Blog - Learn by Benchmarking Ruby App Servers Badly</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1548180411059-TDCARWC7CTVPOV5ZFIT7/Screen+Shot+2019-01-22+at+10.06.32+AM.png</image:loc>
      <image:title>Engineering Blog - Learn by Benchmarking Ruby App Servers Badly</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/3/7/ruby-speed-roundup-20-through-26</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-03-29</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1551993862614-S5EYERW6FSU03RJMLZ53/disc15_throughputs+smaller.png</image:loc>
      <image:title>Engineering Blog - Rails Ruby Bench Speed Roundup, 2.0 Through 2.6</image:title>
      <image:caption>That’s a decent increase between 2.0.0 and 2.3.4.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1551997767832-LGLG49JJQZTIAPF394YW/Screen+Shot+2019-03-07+at+12.28.58+PM.png</image:loc>
      <image:title>Engineering Blog - Rails Ruby Bench Speed Roundup, 2.0 Through 2.6</image:title>
      <image:caption>Yeah, it’s in a different color scheme. Sorry.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1552001814180-AECWDIUS7YJUC4WF4WO1/Screen+Shot+2019-03-07+at+1.36.28+PM.png</image:loc>
      <image:title>Engineering Blog - Rails Ruby Bench Speed Roundup, 2.0 Through 2.6</image:title>
      <image:caption>Note that the Y axis starts at 140 - this is to check details, NOT get a reasonable overview.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/2/25/benchmarking-hongli-lais-new-patch-for-ruby-memory-savings</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-03-15</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1551374606687-U5CVP4QZW4X1OZQM2ILY/hongli_graph.png</image:loc>
      <image:title>Engineering Blog - Benchmarking Hongli Lai's New Patch for Ruby Memory Savings</image:title>
      <image:caption>The Y axis is requests/second over the 30k requests. The X axis is Rand(0.0, 1.0). The Y axis does not start at zero, so this is not a huge difference.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/2/20/ruby-register-transfer-language-but-how-fast-is-it-on-rails</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-03-01</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1550683268262-ZBYJMM6QSV7S3S8P9PEI/rtl_vs_26.png</image:loc>
      <image:title>Engineering Blog - Ruby Register Transfer Language - But How Fast Is It on Rails?</image:title>
      <image:caption>Hard to tell those top two apart, isn’t it?</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1550683419547-B2R47L0ZS2VAIYMQ7C53/rtl_vs_26_closer.png</image:loc>
      <image:title>Engineering Blog - Ruby Register Transfer Language - But How Fast Is It on Rails?</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/1/7/microbenchmarks-vs-macrobenchmarks-ie-whats-a-microbenchmark</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-02-15</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1548447886752-VOBY6P1LJ12F497ZMSRP/2019-microbenchmarks.png</image:loc>
      <image:title>Engineering Blog - Microbenchmarks vs Macrobenchmarks (i.e. What's a Microbenchmark?)</image:title>
      <image:caption>Sometimes you need to measure a few Rubies…</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1547096701285-4C9YJEH2XZQ54KPOKRMY/image-asset.png</image:loc>
      <image:title>Engineering Blog - Microbenchmarks vs Macrobenchmarks (i.e. What's a Microbenchmark?)</image:title>
      <image:caption>Sometimes a tiny, specific magnifier is the right tool</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1547146349179-OLKHIRO6O7IP5KIR30DZ/2019-microbenchmarks-macro.png</image:loc>
      <image:title>Engineering Blog - Microbenchmarks vs Macrobenchmarks (i.e. What's a Microbenchmark?)</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/1/3/test-rubys-speed-with-rails-and-rack-hello-world-apps</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-02-01</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1546556664508-4POD0I4Q79F0AJFY3AON/Screen+Shot+2019-01-03+at+2.35.58+PM.png</image:loc>
      <image:title>Engineering Blog - Test Ruby's Speed with Rails and Rack "Hello, World" Apps</image:title>
      <image:caption>None of this uses JIT for this benchmark. You should expect JIT to be a bit slower than no JIT on 2.6 for Rails, though.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1546556853918-L9PD5IID2BS0INV2NC2T/Screen+Shot+2019-01-03+at+2.39.06+PM.png</image:loc>
      <image:title>Engineering Blog - Test Ruby's Speed with Rails and Rack "Hello, World" Apps</image:title>
      <image:caption>The Y axis here is requests/second. But keep in mind this is 100% single-thread single-CPU. We could have much higher throughput with some concurrency.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/12/20/a-short-speed-history-of-rails-and-rack-hello-world</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-01-18</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1545425857225-3OCYF6MKFAAK3NBRJW4A/Screen+Shot+2018-12-21+at+12.57.14+PM.png</image:loc>
      <image:title>Engineering Blog - A Short Speed History of Rails "Hello, World"</image:title>
      <image:caption>Ah yes, the old “fast fast fast oh god no” pattern.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1545425796558-SIWXVA19UMOCMWUVRH6G/Screen+Shot+2018-12-21+at+12.56.15+PM.png</image:loc>
      <image:title>Engineering Blog - A Short Speed History of Rails "Hello, World"</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1545426470892-8VFKXS0WSJGVGQXAW7Y8/Screen+Shot+2018-12-21+at+1.06.50+PM.png</image:loc>
      <image:title>Engineering Blog - A Short Speed History of Rails "Hello, World"</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1545426474790-XLNL0N1FC26WM118UO8M/Screen+Shot+2018-12-21+at+1.07.08+PM.png</image:loc>
      <image:title>Engineering Blog - A Short Speed History of Rails "Hello, World"</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1545427148345-UABBUNUAVYR7SW0HR7DF/Screen+Shot+2018-12-21+at+1.06.50+PM.png</image:loc>
      <image:title>Engineering Blog - A Short Speed History of Rails "Hello, World"</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1545427171776-RTFP7EFXH1VSHMCVSC97/Screen+Shot+2018-12-21+at+1.19.14+PM.png</image:loc>
      <image:title>Engineering Blog - A Short Speed History of Rails "Hello, World"</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2019/1/4/how-fast-is-the-released-ruby-260</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2019-01-04</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1546020718532-4RZEOE1XKKG8RPFFV4XJ/Screen+Shot+2018-12-28+at+9.03.25+AM.png</image:loc>
      <image:title>Engineering Blog - How Fast is the Released Ruby 2.6.0?</image:title>
      <image:caption>You may get deja vu if you looked at the rc1 and rc2 graphs.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/12/13/a-short-update-how-fast-is-ruby-260rc1</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-12-18</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1544722990208-I0QYYLOJG6UHJQG99S9G/Screen+Shot+2018-12-13+at+9.34.14+AM.png</image:loc>
      <image:title>Engineering Blog - A Short Update: How Fast is Ruby 2.6.0rc1?</image:title>
      <image:caption>Check the Y axis - 2.5 is 5%+ faster than 2.4, but 2.6 and 2.5 are nearly identical… Unless you turn on JIT.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1545152304032-5KMXVM1KHNMVMT44J6Z6/Screen+Shot+2018-12-18+at+6.00.08+AM.png</image:loc>
      <image:title>Engineering Blog - A Short Update: How Fast is Ruby 2.6.0rc1?</image:title>
      <image:caption>You’ll note that 2.5.0 and 2.6.0 switched places at the bottom - but they’re both still within the margin of error. If that’s an actual speed difference at all, it’s a very small one.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/12/10/multiple-gemfiles-multiple-ruby-versions-one-rails-version</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-12-11</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/11/28/how-fast-is-ruby-260preview3-for-discourse</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-12-04</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1543516540092-YF32UE6LLXLSKB6GSQTC/Screen+Shot+2018-11-29+at+10.35.15+AM.png</image:loc>
      <image:title>Engineering Blog - How Fast is Ruby 2.6.0preview3 for Discourse?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1543517542682-MPC5ZVTIA384Q711OWEE/Screen+Shot+2018-11-29+at+10.51.51+AM.png</image:loc>
      <image:title>Engineering Blog - How Fast is Ruby 2.6.0preview3 for Discourse?</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/11/26/bundler-is-built-into-ruby-260preview3</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-11-27</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/11/19/rubyconf-los-angeles-and-ruby-3x3</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-11-20</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1542672894335-PVCC3736ZUWU9ELZDVND/2018-11-11+21.34.03.jpg</image:loc>
      <image:title>Engineering Blog - Ruby 3x3 and RubyConf Los Angeles</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1542672894882-PL3ZOJW20FNZIA10N25N/2018-11-12+11.58.25.jpg</image:loc>
      <image:title>Engineering Blog - Ruby 3x3 and RubyConf Los Angeles</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1542672984178-AZ3MO2Q33QK5HYFEQUFC/2018-11-12+13.04.13.jpg</image:loc>
      <image:title>Engineering Blog - Ruby 3x3 and RubyConf Los Angeles</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1542672984728-WIHBOZK56WY2OI4AXO70/2018-11-13+07.36.40.jpg</image:loc>
      <image:title>Engineering Blog - Ruby 3x3 and RubyConf Los Angeles</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1542673256645-4C8KNGB414FX0NWZR48R/settling_in.png</image:loc>
      <image:title>Engineering Blog - Ruby 3x3 and RubyConf Los Angeles</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1542673270016-LEITHK11BKLFZOU8KCUR/2018-11-14+10.22.10.jpg</image:loc>
      <image:title>Engineering Blog - Ruby 3x3 and RubyConf Los Angeles</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/11/2/rubyconf-malaysia-and-getting-the-most-from-a-distant-conference</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-11-09</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541193446653-CDVDFZGAOXSSZ5SHM7BF/viney_towers.png</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
      <image:caption>Kuala Lumpur is a city of gigantic, awe-inspiring buildings. The constant construction goes way above where most cities stop, vertically speaking. Also, click on any other image in this post for bigger pics.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541192720519-0PP0WN934NFPB691E4DF/2018-10-23+19.17.33.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541192720810-0IH6GLS35RHL7DQUBJBQ/2018-10-23+19.17.36.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541192726407-4A5BP4GQDXVHSKK2MH6Z/2018-10-23+19.48.14.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541192806114-OKIBATXOZQ1G4SSRJD6E/2018-10-26+13.53.54.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541192836953-BNAJTFOL1AHDITN50SPJ/2018-10-25+16.24.14.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541192848070-NKUX1OH74N5PL2V1XCTL/2018-10-25+11.02.56.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541192894485-FJC73MVN1YEK3X5NZKIP/2018-10-25+11.08.05.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541192989988-RGHU4KMBCJYID2XRQBMD/2018-10-27+07.52.16.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541193021114-I4NKZ6V30UAQ3B2D9ORH/2018-10-27+08.11.24.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541193133819-RMOYNU8QDREX9SP3KB27/2018-10-27+09.16.53.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1541193156449-HK4DK77IV99Y9QKTFE72/2018-10-27+08.29.23.jpg</image:loc>
      <image:title>Engineering Blog - RubyConf Malaysia and Getting the Most from a Distant Conference</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/10/19/qa-at-appfolio</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-10-23</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1539930318477-M00HPSI5ZNNNHEQOT4AF/questionmarkcake+%281%29.jpg</image:loc>
      <image:title>Engineering Blog - QA at Appfolio</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1539930442328-YZ0X82PXVCG9N0XNVA9H/payinf.JPG</image:loc>
      <image:title>Engineering Blog - QA at Appfolio</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1539931298126-RSEXBWSDI8PVTX62NCOK/team12.jpg</image:loc>
      <image:title>Engineering Blog - QA at Appfolio</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1539931357668-O61M28BAER9Z0AWM5MZW/losd.JPG</image:loc>
      <image:title>Engineering Blog - QA at Appfolio</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1539931465712-HAAFLOUSEBE3JKXK0FZC/team13.jpg</image:loc>
      <image:title>Engineering Blog - QA at Appfolio</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1539932032465-8Y69N55AN2FDIJM3ATLW/appfcake.jpg</image:loc>
      <image:title>Engineering Blog - QA at Appfolio</image:title>
      <image:caption>thanks for the cake Gary!</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/10/9/traveling-ruby-conversation</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-10-09</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/10/2/ruby-method-lookup-rubyvmstat-and-global-state</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-10-19</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/8/9/rubys-main-object-does-what</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-08-24</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/8/8/a-tale-of-two-objects</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-08-17</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/8/6/does-actioncable-smell-like-rails</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-08-10</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1533582413228-P4CDR79V9IT01BJK7KT8/twitter_99_notifications.png</image:loc>
      <image:title>Engineering Blog - Does ActionCable Smell Like Rails?</image:title>
      <image:caption>See that "99+" up there? For you to know how many notifications are waiting, Twitter has to tell your browser somehow.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/8/6/how-can-i-use-ruby-26-jit</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-08-06</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/7/24/performance-math-and-where-to-find-it</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-07-26</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1532451576313-FUABW1X8VHQOFQWJF0QE/mountain_dew_bottle.png</image:loc>
      <image:title>Engineering Blog - Can I Use Ten 10% Speedups to Make Ruby Instant?</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/7/18/rubys-global-method-cache</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-07-20</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/6/27/rubykaigi</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-07-17</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/7/9/finding-the-right-engineers-for-the-job</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1531160920365-HT4FARYSEXJ0KFQ3REM8/IMG_9036+%281%29.jpg</image:loc>
      <image:title>Engineering Blog - Finding the right engineers for the job</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1531161064413-THIHGY5I2XQ16LH2K2H0/chart1.jpg</image:loc>
      <image:title>Engineering Blog - Finding the right engineers for the job</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/6/27/ruby-memory-environment-variables-simpler-than-they-look</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-07-02</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/5/25/upgrading-rails-4-controller-tests-to-rails-5</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-05-30</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/5/4/mf0io5nsvdcbp5kzjvkfczsfdyshaf</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-05-07</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/4/23/ruby-haskell-culture-is-what-you-dont-say</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-04-30</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/4/20/ruby-coordinators-and-process-groups-for-worker-processes</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-04-23</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/4/16/programming-in-paradise</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1523925228236-71HRT5TSMSQY6Z9CKQ17/sunrise</image:loc>
      <image:title>Engineering Blog - Programming in Paradise</image:title>
      <image:caption>January sunrise over the Pacific Ocean in Santa Barbara, CA (2018)</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1523925476536-HHPO6IT4KJMB7S732F48/sunset</image:loc>
      <image:title>Engineering Blog - Programming in Paradise</image:title>
      <image:caption>November sunset over the Pacific Ocean in Santa Barbara, CA (2017)</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/4/3/ruby-26-and-ahead-of-time-compilation</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-04-09</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/4/2/rails-ruby-bench-what-and-why</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-04-03</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/3/6/ruby-26-preview-1-timing-jit</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-03-19</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1521057631636-3WOPX10SAQEFQCWCFBD3/Full+runs+bar+graph.png</image:loc>
      <image:title>Engineering Blog - Ruby 2.6 preview 1: Timing JIT</image:title>
      <image:caption>I like the rainbow thing this graph has going. It's pretty. But commenters are right that it could be much clearer.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1521058280811-IYELR8JXWMY4XXKIU7QR/Line+graph+CDF+requests.png</image:loc>
      <image:title>Engineering Blog - Ruby 2.6 preview 1: Timing JIT</image:title>
      <image:caption>I don't feel like this is as pretty. There are things I could do to improve it, obviously. But the biggest problem is that it's hard to estimate the total area between the curves in a wide, shallow graph like this. But I agree - this is an improvement.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1521058607865-R0Q08UG1ZUXWSJEPZDDC/Line+Graph+CDF+Full+Runs.png</image:loc>
      <image:title>Engineering Blog - Ruby 2.6 preview 1: Timing JIT</image:title>
      <image:caption>This makes you appreciate the buttery smoothness of the version with far too many points, doesn't it? 18,000 points sounds like a lot when I write it, but it's not really that huge.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/2/1/benchmarking-rubys-heap-malloc-tcmalloc-jemalloc</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-10-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1518118213589-Z4EBG5OXHR5HU2X3YLT9/jemalloc_tcmalloc_full_runs.png</image:loc>
      <image:title>Engineering Blog - Benchmarking Ruby's Heap: malloc, tcmalloc, jemalloc</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/2/4/how-fast-is-ruby-250</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-02-06</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1517810952731-K1JSMOEWO7FDGTFJBK5A/ruby_243_vs_ruby_250.png</image:loc>
      <image:title>Engineering Blog - How Fast is Ruby 2.5.0?</image:title>
      <image:caption>Yup, those bars on the right are shorter.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/1/2/how-ruby-uses-memory</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-02-02</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/1/4/rails-ruby-bench-cruby-and-meltdownspectre</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-01-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1515095912249-EVNFYTKB0EQELYEPHPSY/code_meltdown_spectre_2.jpg</image:loc>
      <image:title>Engineering Blog - How Much Does Meltdown/Spectre Patching Slow Down a Big Rails App?</image:title>
      <image:caption>If I ever become a major security vulnerability, I'm gonna hold a small, picturesque stick just like the "Spectre" ghost.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1516752190150-KYWAYS4BUUI56GCE846N/meltdown_vuln_checker.png</image:loc>
      <image:title>Engineering Blog - How Much Does Meltdown/Spectre Patching Slow Down a Big Rails App?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1516753929487-R2P4IL0CDUT3XPEHKITD/Screen+Shot+2018-01-23+at+4.28.56+PM.png</image:loc>
      <image:title>Engineering Blog - How Much Does Meltdown/Spectre Patching Slow Down a Big Rails App?</image:title>
      <image:caption>There's a bit of a drop in the middle, but not much. And the right (patched) results are just as fast as pre-patch.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2018/1/3/quickie-building-ruby-with-memory-profiling</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-01-04</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/12/28/ruby-and-nested-exceptions</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-01-03</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/12/28/cruby-mri-jruby-rubyspec-rubinius-yarv-a-little-bit-of-ruby-naming</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2018-01-02</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/12/26/ruby-3-and-jit-where-when-and-how-fast</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-12-26</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1514317422906-HFSWUIH6E5F10GFRQN46/compiling.png</image:loc>
      <image:title>Engineering Blog - Ruby 3 and JIT: Where, When and How Fast?</image:title>
      <image:caption>Alas, JIT removes this excuse. I recommend that you claim you're debugging the AoT settings. Or claim you're running ETL scripts. That works too.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1514317566206-52Q9G8C6DQKVBQAH0AI4/optcarrot+benchmarks.png</image:loc>
      <image:title>Engineering Blog - Ruby 3 and JIT: Where, When and How Fast?</image:title>
      <image:caption>These numbers aren't terribly recent. And the MJIT and YARV-MJIT numbers are still changing too fast to mean much. Soon!</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1514317724827-BBGEM7WH97LUOYKCE850/matz_tweet.png</image:loc>
      <image:title>Engineering Blog - Ruby 3 and JIT: Where, When and How Fast?</image:title>
      <image:caption>From this tweet.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/12/4/hows-progress-on-ruby-3x3</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-12-06</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/11/29/how-much-faster-is-ruby-250-preview-1</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-12-04</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1511997443831-7V5EYCRCEHAW9T557OY8/Discourse+Req+Times+by+Ruby+Version</image:loc>
      <image:title>Engineering Blog - How Much Faster is Ruby 2.5.0 Preview 1?</image:title>
      <image:caption>Those bars on the right are all very slightly smaller. That's obvious at first glance, right?</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/11/2/do-random-seeds-matter</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-11-15</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1509657418817-S2F3B990EJK3O7ATM1OV/rand_seed_4_runtimes.png</image:loc>
      <image:title>Engineering Blog - Do Random Seeds Matter?</image:title>
      <image:caption>Primarily this picture says "the author likes pastels."</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1509657550580-7ICC2N5MABCZ61238OTU/rand_seed_4_runtimes_closeup.png</image:loc>
      <image:title>Engineering Blog - Do Random Seeds Matter?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1509657680763-SKI36TLJD4PESMHJ7NHS/throughput_comparison.png</image:loc>
      <image:title>Engineering Blog - Do Random Seeds Matter?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1509657835237-EQL0NXVMSP9A3JWHDFJJ/throughput_with_4_diff_seeds.png</image:loc>
      <image:title>Engineering Blog - Do Random Seeds Matter?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1510762133231-OXGCY2L7FI56FE9BUS3Q/Screen+Shot+2017-11-15+at+10.08.22+AM.png</image:loc>
      <image:title>Engineering Blog - Do Random Seeds Matter?</image:title>
      <image:caption>You can see a little noise in the results, but it's basically telling the same story. Again, the Ruby 2.4.1 results are weird because of the Discourse version mismatch.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/10/4/joining-us-from-rubykaigi</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-10-06</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/9/22/optcarrot-an-excellent-cpu-benchmark-for-ruby-3x3</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-09-25</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1506117201371-W4LYHIDB4X8DH3AO1JC3/NES.jpg</image:loc>
      <image:title>Engineering Blog - OptCarrot: An Excellent CPU Benchmark for Ruby 3x3</image:title>
      <image:caption>And original NES. most of you are probably too young to remember these.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1506118235373-VHO24UY993A67Y394MHD/LanMaster.gif</image:loc>
      <image:title>Engineering Blog - OptCarrot: An Excellent CPU Benchmark for Ruby 3x3</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1506118138841-6EWPAV5OF1VMMLNDTLB5/benchmark-optimized.png</image:loc>
      <image:title>Engineering Blog - OptCarrot: An Excellent CPU Benchmark for Ruby 3x3</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1506122448566-ZWO0N7KQSCERUS4DL7D0/2006-03-26_pigeons.jpg</image:loc>
      <image:title>Engineering Blog - OptCarrot: An Excellent CPU Benchmark for Ruby 3x3</image:title>
      <image:caption>I miss PartiallyClips. It's been finished for years now.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/8/21/rails-and-discourse-startup-times</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-09-06</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1503337032145-ZQFFA8EJPHBF5E6E1ZJA/discourse_startup_times.png</image:loc>
      <image:title>Engineering Blog - Rails and Discourse Startup Times</image:title>
      <image:caption>Discourse startup times get better by increasing Ruby version, and by Discourse version.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/6/28/improving-the-bundle-size-of-reactstrap-from-295kb-to-84kb</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-06-28</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1498683246642-JAR470C21ZED6KBZLILD/reactstrap-4.3.0-umd-source-map.html</image:loc>
      <image:title>Engineering Blog - Improving the bundle size of Reactstrap from 295kB to 84kB</image:title>
      <image:caption>Treemap visualization of the Reactstrap 4.3.0 UMD bundle - interactive HTML page</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/6/11/a-story-of-engineering-passion-and-ruby-hash-tables</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-06-20</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1496249343134-G1XM1LB58H07YVMW0SCU/image-asset.png</image:loc>
      <image:title>Engineering Blog - A Story of Passion and Hash Tables</image:title>
      <image:caption>Speed versus table size of different hash tables, from Koichi's report.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1496949291985-XT6EQ289DE8C3WZFY03O/image-asset.png</image:loc>
      <image:title>Engineering Blog - A Story of Passion and Hash Tables</image:title>
      <image:caption>Yes, all the right-hand bars are a little lower at every percentile. No, not much lower. so: new-style hash tables improve each request, but not by a huge amount.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1496949706966-D1JQU5V0BRFJM4NQCKVJ/image-asset.png</image:loc>
      <image:title>Engineering Blog - A Story of Passion and Hash Tables</image:title>
      <image:caption>This is how long it takes for 100 consecutive requests. The per-request speedup adds up. These are the shortest, median and longest times to process 100 requests during a benchmark run. Left side are old-style closed addressing hash results, right are open-addressing.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/5/24/how-is-ruby-different-in-japan</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-06-15</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1497404353626-IOX4T6MQ8KVE9QH4SYAA/zzak-matsue.jpg</image:loc>
      <image:title>Engineering Blog - How is Ruby Different in Japan?</image:title>
      <image:caption>The Photogenic Zachary Scott and a billboard for "Ruby City Matsue" in Shimane Prefecture, Japan</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1497404519126-YCXC6Q86Z5S31ODGFFOX/image-asset.png</image:loc>
      <image:title>Engineering Blog - How is Ruby Different in Japan?</image:title>
      <image:caption>The Ruby Association, from Google's Street view</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/5/22/rails-speed-with-ruby-240-and-discourse-180</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-05-24</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1495583042147-N1F77DLDZF0TU522TN2R/image-asset.png</image:loc>
      <image:title>Engineering Blog - Rails Speed with Ruby 2.4.0 and Current Discourse</image:title>
      <image:caption>I'm seeing roughly 10%-15% lower time-per-run between runs. from Ruby 2.0.0 to 2.3.4 was about A 30% speedup, so an extra 10% or 15% on top of that isn't bad.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1495583070396-0CRCDWKD5C5TMNE93G2U/Screen+Shot+2017-05-23+at+4.09.41+PM.png</image:loc>
      <image:title>Engineering Blog - Rails Speed with Ruby 2.4.0 and Current Discourse</image:title>
      <image:caption>This is also around 10% to 15% speedup. It's based on exactly the same numbers, so that's no surprise.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1495586345649-QLNRWZQKQ514AVVBIKGM/image-asset.png</image:loc>
      <image:title>Engineering Blog - Rails Speed with Ruby 2.4.0 and Current Discourse</image:title>
      <image:caption>As with earlier transitions, everything slow speeds up. You can't see sub-median requests here, but 1) they're very fast and 2) they speed up, but only a little. Ruby 2.3.4 is on the left, ruby head-of-master is on the right.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/5/12/has-ruby-helped-rails-performance-other-than-garbage-collection</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-05-15</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1494611772753-JM0KIUJ98G3YBRPD55DT/image-asset.png</image:loc>
      <image:title>Engineering Blog - Besides GC, Has Ruby 2.3 Helped Rails Performance?</image:title>
      <image:caption>Without garbage collection, the 50th-percentile (blue) and 99th-percentile (green) request are within about a factor of two - not bad.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1494611954020-95Z8IDJ9R05F55YF7KGB/image-asset.png</image:loc>
      <image:title>Engineering Blog - Besides GC, Has Ruby 2.3 Helped Rails Performance?</image:title>
      <image:caption>This is a very small sample size, but adding together 1500 requests/sample gives you some stability. There's not a lot of run-to-run variability. Note the vertical scale - these change by around 30%, not 5x.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1494615211160-KVICHM7C15X6VJ7L5HFM/indiv_req_with_gc.png</image:loc>
      <image:title>Engineering Blog - Besides GC, Has Ruby 2.3 Helped Rails Performance?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1494615216743-59O8NCTRPWT7O5NH1997/indiv_req_no_gc.png</image:loc>
      <image:title>Engineering Blog - Besides GC, Has Ruby 2.3 Helped Rails Performance?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1494615222323-XSQUENH8BAWE3YBMJ18Q/thread_time_with_gc.png</image:loc>
      <image:title>Engineering Blog - Besides GC, Has Ruby 2.3 Helped Rails Performance?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1494615227412-2ER12ANJ6K5CZ0QP2CL2/thread_times_no_gc.png</image:loc>
      <image:title>Engineering Blog - Besides GC, Has Ruby 2.3 Helped Rails Performance?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1494617128192-8W48TAYJ4239UK59EXNH/image-asset.png</image:loc>
      <image:title>Engineering Blog - Besides GC, Has Ruby 2.3 Helped Rails Performance?</image:title>
      <image:caption>Again, the numbers on the left and right are different setups. They're very apples-to-oranges. You're just looking for "oh, the median request improves over 30% with GC, and not at all without it."</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/5/2/what-about-warmup</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-05-03</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1493842769045-WOWBO10NZC1B1QRL1PPN/image-asset.png</image:loc>
      <image:title>Engineering Blog - What About Warmup?</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1493843341109-1MMMNERH7KYUEYT7FBWX/image-asset.png</image:loc>
      <image:title>Engineering Blog - What About Warmup?</image:title>
      <image:caption>Please look at the vertical axis labels - this difference is significant, but not nearly as big as it looks.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/4/21/view-models-form-objects-presenters-and-helpers-oh-my</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-05-02</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/4/14/comparing-ruby-speed-differences</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-05-02</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492633349576-3Q0882RFGL6P6EL7WJ87/image-asset.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
      <image:caption>Individual request times - later Ruby versions are faster by a roughly constant factor.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492633472436-58BRBTZI9TC3Q2HDIF1P/image-asset.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
      <image:caption>Each column here averages 50 individual requests. So there's less variation, but lots of slow, steady improvement.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492190100693-1C5XOWSE4TK43TU3SXVT/discourse_categories_admin.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492190100717-1I7K9HDT2UT2B6BLFNM7/discourse_categories.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492190100856-V5JOT6AQJ7D2I4SVQH0N/discourse_home_admin.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492190100978-B3DIEKU5K1LQH5XFB4J1/discourse_home.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492190101056-WA27J4T7UBRVN72NMAVX/discourse_mem_usage.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492190101127-L2NNX3ZVCE278E8Q2ZYQ/discourse_topic_admin.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1492190101250-2I76KLMR2TGEN6UL67Z0/discourse_topic.png</image:loc>
      <image:title>Engineering Blog - Comparing Rails Performance by Ruby Version</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/3/22/rails-benchmarking-puma-and-multiprocess</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-04-05</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1491427821262-IGNAO6TNZGHYUORAVJMP/image-asset.png</image:loc>
      <image:title>Engineering Blog - Rails Benchmarking: Puma and MultiProcess</image:title>
      <image:caption>Performance by number of Puma threads and processes, and by load-testing threads.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/2/27/ruby-rubygems-and-bundler</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-03-13</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/3/1/rails-benchmarking-and-a-public-ami</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-03-03</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/1/31/the-benchmark-and-the-rails</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-04-03</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2017/1/9/you-yes-you-can-speak-at-a-conference</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-01-31</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/11/14/rvm-errors-with-latest-ruby</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-01-27</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1479162390056-B7XW2IGW1YPHLKK4RZ4K/image-asset.png</image:loc>
      <image:title>Engineering Blog - RVM Errors with Latest Ruby?</image:title>
      <image:caption>Screenshot of the problem here - see below for cut-and-pasteable output.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/10/18/using-rvm-with-locally-built-ruby</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-01-03</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/12/8/benchmarking-rails</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2017-01-20</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/10/14/diving-into-japanese-for-ruby</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-10-21</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1476805891467-BB4RE30B5T6K520LY0CN/image-asset.png</image:loc>
      <image:title>Engineering Blog - Diving into Japanese for Ruby</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1476806124668-YACGFHMM2TNBGREKBE4B/image-asset.png</image:loc>
      <image:title>Engineering Blog - Diving into Japanese for Ruby</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1476806222876-SUDQP9UOQP96UBRLSXH0/image-asset.png</image:loc>
      <image:title>Engineering Blog - Diving into Japanese for Ruby</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/9/9/tales-from-an-internship-solving-a-race-condition-in-twilio-usage</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-09-10</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/8/22/internships-at-appfolio</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-08-22</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/8/8/abprof-an-accurate-statistical-profiling-harness</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-08-19</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/7/18/profiling-ruby-like-an-ab-tester</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-08-11</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/7/19/speed-up-ruby-by-7-or-more</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-08-04</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/6/22/using-gperftools-on-the-mri-ruby-interpreter-in-mac-os-x</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-07-18</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466619564955-PWKFUBEW3BZ37SW84663/image-asset.png</image:loc>
      <image:title>Engineering Blog - Using GPerfTools on MRI Ruby in Mac OS X</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466619378768-FHPU3PO49APW874VOL57/image-asset.png</image:loc>
      <image:title>Engineering Blog - Using GPerfTools on MRI Ruby in Mac OS X</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466621464845-GDVQG4MULNAFEDEVZGUI/image-asset.png</image:loc>
      <image:title>Engineering Blog - Using GPerfTools on MRI Ruby in Mac OS X</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466619812259-0FEISMCY1B4JN1MHDHC7/image-asset.png</image:loc>
      <image:title>Engineering Blog - Using GPerfTools on MRI Ruby in Mac OS X</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/6/21/configuring-the-ruby-source-code-for-profiling-and-everything-else</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-07-06</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466538623551-JCOZU28KDJHQK3GTPNXN/image-asset.png</image:loc>
      <image:title>Engineering Blog - Configuring the Ruby Source Code for Profiling... And Everything Else</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466538643906-1S4XSOIR0MVEUXRVKEQV/image-asset.png</image:loc>
      <image:title>Engineering Blog - Configuring the Ruby Source Code for Profiling... And Everything Else</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466539394475-UDBPYKB40MBPIITRKT3G/image-asset.png</image:loc>
      <image:title>Engineering Blog - Configuring the Ruby Source Code for Profiling... And Everything Else</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/6/17/configuring-ruby-on-macos-with-openssl</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-06-21</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466436964840-S6WLHMMOUI8BKLR5R2ZP/image-asset.png</image:loc>
      <image:title>Engineering Blog - Configuring Ruby on MacOS with OpenSSL</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1466435861193-E5FS262KVAXTJJ4TL5QP/image-asset.png</image:loc>
      <image:title>Engineering Blog - Configuring Ruby on MacOS with OpenSSL</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/6/10/a-little-ruby-land-profiling-with-stackprof</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-06-17</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1465833200743-DMNJXK3TWNN0CO0JQ02F/image-asset.png</image:loc>
      <image:title>Engineering Blog - A Little Ruby-Land Profiling with StackProf</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/6/7/git-bisect-to-find-a-ruby-regression</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2016-06-09</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2016/6/3/ruby-fellow-hired</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2015/11/18/ruby-3x3</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1447890953356-NJQ73I7O59SWKSRJGCKO/RubyConf+2015+keynote.png</image:loc>
      <image:title>Engineering Blog - Ruby 3x3: Ruby 3 will be 3 times faster</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2015/11/16/thinking-about-innovation</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2015/09/04/its-a-wiring-problem</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2014/08/20/a-composition-regarding-inheritance</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2014/03/17/my-experience-with-mob-programming</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2014-03-17</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2013/06/17/ruby-mixins-activesupportconcern</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2013-06-17</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2013/02/12/discovery-of-a-mysql-bug</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2012/11/19/dont-make-your-users-wait-for-gc</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2025-03-28</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2012/11/16/css-architecture</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2012-11-16</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/2012/10/11/hello-world</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
    <lastmod>2015-11-18</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/category/Uncategorized</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/CSS</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/Architecture</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/upgrade</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/Sass</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/technology</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/machine+learning</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/MCC</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/ruby</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/data+science</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/passenger</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/rails</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/JavaScript</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/appfolio-engineering/tag/Open+source</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/about-appfolio</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2015-10-26</lastmod>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/contact</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2022-08-30</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/562ea223e4b0e0b9dab0b930/1661890463319-X2IM9TI152JFQV0ATJJ0/DSC01404-1_hack_day_2022-1.jpg</image:loc>
      <image:title>Contact Us</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/home</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2021-01-11</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/52a74d9ae4b0253945d2aee9/1391287286405-92Z4A4R3T2ZSZAKNVS9V/image-asset.jpeg</image:loc>
      <image:title>Home - Transient</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/52a74d9ae4b0253945d2aee9/1535394848185-CGDDU4QCIRSO4U1270H3/image-asset.jpeg</image:loc>
      <image:title>Home - About</image:title>
      <image:caption>Find out about our organization, mission, our methods, and the results of our decades of advocacy.</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/52a74d9ae4b0253945d2aee9/1535394867157-MTQAOAQPKWQ68DDY1HTW/tumblr_mn8b8sLRb61rkz363o1_1280.jpg</image:loc>
      <image:title>Home - Take Action</image:title>
      <image:caption>Ready to take the next step? You can become a contributor to our cause, or participate yourself.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/home-five</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2025-05-12</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5016d42984ae3ecc9e018d91/1367253773714-6NVU4334MGX2B40TBI21/5209625883_4f8813122b_o.jpg</image:loc>
      <image:title>Home</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5016d42984ae3ecc9e018d91/1378396575576-WWVC5LANBM46L7K383I0/designed_by_expanded_gallery2.jpg</image:loc>
      <image:title>Home</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5016d42984ae3ecc9e018d91/1378396536086-5BRLY4GBP2MVGO7ISYON/6999613744_d33c3828ed_o.jpg</image:loc>
      <image:title>Home</image:title>
      <image:caption>Photo Credit: ms.akr</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5016d42984ae3ecc9e018d91/1378396455304-F60B5S8EZCPQ1LLLUP3W/ventotene.jpg</image:loc>
      <image:title>Home</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/read-me-five</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2025-05-12</lastmod>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5016d42984ae3ecc9e018d91/1376686207692-LRO3OMT4KGTOS9Q8WIRN/gBO0wXUBOBY-QkPZm8Lvg-I-ifill_2048.jpg</image:loc>
      <image:title>Read Me</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5016d42984ae3ecc9e018d91/1376581849029-XMY0369BNE3M724R2LNA/51b7353be4b049e6ffb2caaf.png</image:loc>
      <image:title>Read Me</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5016d42984ae3ecc9e018d91/1378827958933-4PFZPMQ2B5002HIZNKCA/BeeHive+%2820130910%29.jpg</image:loc>
      <image:title>Read Me</image:title>
    </image:image>
    <image:image>
      <image:loc>https://images.squarespace-cdn.com/content/v1/5016d42984ae3ecc9e018d91/1376581850041-71T9N2T854LTY451D3G4/51b75f4be4b0b1ab92015ea0.png</image:loc>
      <image:title>Read Me</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://engineering.appfolio.com/page-2</loc>
    <changefreq>daily</changefreq>
    <priority>0.75</priority>
    <lastmod>2025-05-12</lastmod>
  </url>
</urlset>

