<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Author</title>
    <description>The latest articles on DEV Community by Author (@theholyspirit).</description>
    <link>https://dev.to/theholyspirit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1639037%2Feabf70bd-f2af-4829-ae90-79f2a2a676e1.png</url>
      <title>DEV Community: Author</title>
      <link>https://dev.to/theholyspirit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/theholyspirit"/>
    <language>en</language>
    <item>
      <title>The HTML I Wish I Had</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Wed, 23 Oct 2024 13:33:00 +0000</pubDate>
      <link>https://dev.to/theholyspirit/the-html-i-wish-i-had-23cp</link>
      <guid>https://dev.to/theholyspirit/the-html-i-wish-i-had-23cp</guid>
      <description>&lt;p&gt;HTML5 innovated in the wrong direction. At some level, I am a contientious thinker, and respect that any step forward is fine. Yet, and further, the decision for semantic tags is awful.&lt;/p&gt;

&lt;p&gt;That's Right! I Went Political On That One! ⭐&lt;/p&gt;

&lt;p&gt;Semantic elements must have been thought of by a non-HTML developer. The written experience is not valuable, and the true 100% for real, non-marketing jargon value add for HTML5 semantic elements is ZERO.&lt;/p&gt;

&lt;p&gt;The conspicuous factor about the addition of these elements is &lt;em&gt;that someone made the decision in the first place.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For the record, there is absolutely and undoubtedly zero value added for the human reader of an HTML page when  is used instead of . The readers of the elements are web scraping utilities, i.e. software. The key player in this regard is Google.

&lt;/p&gt;
&lt;p&gt;An entire major spec was invented just for Google. That actually happened, and the world needs to recognize that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did you know?&lt;/strong&gt; HTML5 is more than just semantic elements. Find out more and become an HTML Developer with &lt;a href="https://alexason.com/product/html-a-practical-handbook/" rel="noopener noreferrer"&gt;HTML Handbook&lt;/a&gt;, available at my company &lt;a href="https://alexason.com/product/html-a-practical-handbook/" rel="noopener noreferrer"&gt;alexason.com&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  HTML Should Be For People
&lt;/h2&gt;

&lt;p&gt;Any innovation should be for people. The end result should be human happiness. The driving goal percentage of the population affected &lt;em&gt;toward&lt;/em&gt; happiness. This is how maximum good can be accomplished.&lt;/p&gt;

&lt;p&gt;Most people believe it is reasonable for an organization to have a scope of population whom the responsiblility of "toward happiness" applies. While at my company we refute the claim, we can continue to examine HTML with that idea in mind.&lt;/p&gt;

&lt;p&gt;In the context of HTML, the percentage of population affected is &lt;em&gt;a lot&lt;/em&gt;. The technical term for this may even be considered "the inhabited earth." Any &lt;em&gt;living&lt;/em&gt; user of the internet receives downstream decisions of WHATWG, the working group which defines HTML.&lt;/p&gt;

&lt;p&gt;That working group did no justice for the human audience in the decision for semantic elements. It does nothing for the human readers. It makes the experience more wordy, complicated, and by the DevEx tradition of classifying coginitive load as &lt;em&gt;undesirable,&lt;/em&gt; these additional elements make the experience &lt;em&gt;worse.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I expect to hear a thought which goes, "But, but... accessibility!" I'll be clear. Accessibility is not optional, it is a requirement. I expect to hear that contending thought because a good HTML Developer has that in mind. Yet here is the pill to swallow: Semantic elements do nothing for accessibility. A Screen Reader (a screen reader is simply a web scraper) &lt;em&gt;may&lt;/em&gt; implement some understanding of the elements, but it may not! Further, it's 2024, and there is no standardization in this regard. Moreover, the algorithms of what to do with the information must necessarily vary between developers, and the information of what the human reader &lt;em&gt;wants to know about the page&lt;/em&gt; must also vary!&lt;/p&gt;

&lt;p&gt;Semantic elements were only a step toward complication for the benefit of very few. WHATWG started as a company of "major" players in the internet biz, and it's clear their priorities were skewed. It is valuable technology for companies who's business model is web scraping, not for accessibility, but for content aggregation (i.e. search engines).&lt;/p&gt;

&lt;p&gt;HTML should be for people. Human experience and the betterment in that area (generally, not financially), should be the goal of any major innovation with the effective reach of HTML. Instead we got technology to answer the question "How can this subsection be characterized?"&lt;/p&gt;

&lt;p&gt;Better stated, it's a Secret Answer because &lt;strong&gt;no living thing reads the answer to that question.&lt;/strong&gt; A business entity is not a living thing. A web scraper is not a living thing. Only a software writer is aware it's there, and as stated, the effect of this addition to the spec is an increase of cognitive load and &lt;em&gt;worsening&lt;/em&gt; of experience.&lt;/p&gt;

&lt;p&gt;Great 🙂&lt;/p&gt;


&lt;h2&gt;
  
  
  HTML For People
&lt;/h2&gt;

&lt;p&gt;Let it be known that I think HTML5 and CSS3 are fantastic! CSS &lt;em&gt;alone&lt;/em&gt; continues to be one of the most powerful rendering engines globally.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/aaco/embed/Exqavye?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;So what &lt;em&gt;would&lt;/em&gt; be an improvement for HTML? In my book, the answer to that question will improve 1) developer happiness, and 2) have an valuable impact for screen readers &lt;em&gt;without&lt;/em&gt; the need for further regulation of the screen readers!&lt;/p&gt;

&lt;p&gt;I'm gonna drop some ideas here, and if you're interested swing by my company's working group.&lt;/p&gt;

&lt;p&gt;Automatic content translation! Format dimension coersion! &lt;a href="https://codepen.io/ivorjetski/pen/wvbqqRd" rel="noopener noreferrer"&gt;Whatever this button is!&lt;/a&gt;!&lt;/p&gt;




&lt;p&gt;This Is The Whole Enchilada Version Of A Three-Part Series!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/theholyspirit/the-html-innovation-1glb"&gt;The HTML Innovation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-2-10ki"&gt;HTML Should Be For People&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-3-3a4k"&gt;HTML For People&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Leave a message with how you'd make HTML Better for Experience!&lt;/p&gt;

&lt;p&gt;If you're interested in making Hypertext Applications for the purpose of Human Happiness, come to the party at Salvation! &lt;a href="https://salvationco.mn.co" rel="noopener noreferrer"&gt;Salvation Company&lt;/a&gt;, where We Are Saved. Oh, and I hear the author of that HTML Handbook is a member at I'm sure there a sharable manuscript in the member library!&lt;/p&gt;



</description>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>Installing A Font On Windows</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Sun, 29 Sep 2024 13:39:00 +0000</pubDate>
      <link>https://dev.to/theholyspirit/installing-a-font-on-windows-2f3o</link>
      <guid>https://dev.to/theholyspirit/installing-a-font-on-windows-2f3o</guid>
      <description>&lt;p&gt;For web development and design, a general understanding of font and and user experience of font is required for designing a visual interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did you know?&lt;/strong&gt; Most Barcodes, while not human-legible, are implemented and written using a standard font definition. See the tidbit at the end to check out some barcode fonts.&lt;/p&gt;

&lt;p&gt;Installing a font is very simple. Here's a quick three step process.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Locate the font you wish to install. Here's a playful display font, &lt;a href="https://www.dafont.com/loki-cola.font?text=Loki+Cola" rel="noopener noreferrer"&gt;Loki Cola.&lt;/a&gt; Download the zip file, extract it, and locate the .ttf file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Right-click the file and select "Install" from the context menu. If you'd like to install it for all users, select "Install for all users."&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it really! The font is now available as a system font.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open up a &lt;em&gt;new&lt;/em&gt; window of the program where you'd like to use the font, for example Microsoft Word, and the font is available for selection. Note that most programs load systems fonts on program boot-up, so you will need to close previously open instances of the program, and open a new window.&lt;/li&gt;
&lt;/ol&gt;

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




&lt;p&gt;For Product Software Tips Like This, Be Sure to Follow This &lt;a href="https://dev.to/theholyspirit"&gt;Dev Account!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tidbit:&lt;/strong&gt; Here's how to write &lt;a href="https://www.dafont.com/search.php?q=barcode&amp;amp;text=LoremIpsum" rel="noopener noreferrer"&gt;LoremIpsum in Barcode!&lt;/a&gt; Try scanning the code with a barcode scanner 🤖&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>ui</category>
    </item>
    <item>
      <title>The HTML I Wish I Had (pt. 3)</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Sat, 28 Sep 2024 13:25:00 +0000</pubDate>
      <link>https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-3-3a4k</link>
      <guid>https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-3-3a4k</guid>
      <description>&lt;h2&gt;
  
  
  HTML For People
&lt;/h2&gt;

&lt;p&gt;Let it be known that I think HTML5 and CSS3 are fantastic! CSS &lt;em&gt;alone&lt;/em&gt; continues to be one of the most powerful rendering engines globally.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/aaco/embed/Exqavye?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;So what &lt;em&gt;would&lt;/em&gt; be an improvement for HTML? In my book, the answer to that question will improve 1) developer happiness, and 2) have an valuable impact for screen readers &lt;em&gt;without&lt;/em&gt; the need for further regulation of the screen readers!&lt;/p&gt;

&lt;p&gt;I'm gonna drop some ideas here, and if you're interested swing by my company's working group.&lt;/p&gt;

&lt;p&gt;Automatic content translation! Format dimension coersion! &lt;a href="https://codepen.io/ivorjetski/pen/wvbqqRd" rel="noopener noreferrer"&gt;Whatever this button is!&lt;/a&gt;!&lt;/p&gt;




&lt;p&gt;This is Part 3 of a 3-part series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sept. 25:&lt;/strong&gt; &lt;a href="https://dev.to/theholyspirit/the-html-innovation-1glb"&gt;The HTML Innovation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sept. 27:&lt;/strong&gt; &lt;a href="https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-2-10ki"&gt;HTML Should Be For People&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sept 28:&lt;/strong&gt; &lt;a href="https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-3-3a4k"&gt;HTML For People&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Leave a message with how you'd make HTML Better for Experience!&lt;/p&gt;

&lt;p&gt;If you're interested in making Hypertext Applications for the purpose of Human Happiness, come to the party at Salvation! &lt;a href="https://salvationco.mn.co" rel="noopener noreferrer"&gt;Salvation Company&lt;/a&gt;, where We Are Saved. Oh, and I hear the author of that HTML Handbook is a member at I'm sure there is a sharable manuscript in the member library!&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>The HTML I Wish I Had (pt. 2)</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Fri, 27 Sep 2024 13:28:00 +0000</pubDate>
      <link>https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-2-10ki</link>
      <guid>https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-2-10ki</guid>
      <description>&lt;h2&gt;
  
  
  HTML Should Be For People
&lt;/h2&gt;

&lt;p&gt;Any innovation should be for people. The end result should be human happiness. The driving goal percentage of the population affected &lt;em&gt;toward&lt;/em&gt; happiness. This is how maximum good can be accomplished.&lt;/p&gt;

&lt;p&gt;Most people believe it is reasonable for an organization to have a scope of population whom the responsiblility of "toward happiness" applies. While at my company we refute the claim, we can continue to examine HTML with that idea in mind.&lt;/p&gt;

&lt;p&gt;In the context of HTML, the percentage of population affected is &lt;em&gt;a lot&lt;/em&gt;. The technical term for this may even be considered "the inhabited earth." Any &lt;em&gt;living&lt;/em&gt; user of the internet receives downstream decisions of WHATWG, the working group which defines HTML.&lt;/p&gt;

&lt;p&gt;That working group did no justice for the human audience in the decision for semantic elements. It does nothing for the human readers. It makes the experience more wordy, complicated, and by the DevEx tradition of classifying coginitive load as &lt;em&gt;undesirable,&lt;/em&gt; these additional elements make the experience &lt;em&gt;worse.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I expect to hear a thought which goes, "But, but... accessibility!" I'll be clear. Accessibility is not optional, it is a requirement. I expect to hear that contending thought because a good HTML Developer has that in mind. Yet here is the pill to swallow: Semantic elements do nothing for accessibility. A Screen Reader (a screen reader is simply a web scraper) &lt;em&gt;may&lt;/em&gt; implement some understanding of the elements, but it may not! Further, it's 2024, and there is no standardization in this regard. Moreover, the algorithms of what to do with the information must necessarily vary between developers, and the information of what the human reader &lt;em&gt;wants to know about the page&lt;/em&gt; must also vary!&lt;/p&gt;

&lt;p&gt;Semantic elements were only a step toward complication for the benefit of very few. WHATWG started as a company of "major" players in the internet biz, and it's clear their priorities were skewed. It is valuable technology for companies who's business model is web scraping, not for accessibility, but for content aggregation (i.e. search engines).&lt;/p&gt;

&lt;p&gt;HTML should be for people. Human experience and the betterment in that area (generally, not financially), should be the goal of any major innovation with the effective reach of HTML. Instead we got technology to answer the question "How can this subsection be characterized?"&lt;/p&gt;

&lt;p&gt;Better stated, it's a Secret Answer because &lt;strong&gt;no living thing reads the answer to that question.&lt;/strong&gt; A business entity is not a living thing. A web scraper is not a living thing. Only a software writer is aware it's there, and as stated, the effect of this addition to the spec is an increase of cognitive load and &lt;em&gt;worsening&lt;/em&gt; of experience.&lt;/p&gt;

&lt;p&gt;Great 🙂&lt;/p&gt;




&lt;p&gt;This is Part 2 of a 3-part series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sept. 25:&lt;/strong&gt; &lt;a href="https://dev.to/theholyspirit/the-html-innovation-1glb"&gt;The HTML Innovation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sept. 27:&lt;/strong&gt; &lt;a href="https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-2-10ki"&gt;HTML Should Be For People&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sept 28:&lt;/strong&gt; &lt;a href="https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-3-3a4k"&gt;HTML For People&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Leave a message with how you'd make HTML Better for Experience!&lt;/p&gt;

&lt;p&gt;If you're interested in making Hypertext Applications for the purpose of Human Happiness, come to the party at Salvation! &lt;a href="https://salvationco.mn.co" rel="noopener noreferrer"&gt;Salvation Company&lt;/a&gt;, where We Are Saved. Oh, and I hear the author of that HTML Handbook is a member at I'm sure there is a sharable manuscript in the member library!&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>Parsing XML</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Fri, 27 Sep 2024 09:55:20 +0000</pubDate>
      <link>https://dev.to/theholyspirit/parsing-xml-5fil</link>
      <guid>https://dev.to/theholyspirit/parsing-xml-5fil</guid>
      <description>&lt;p&gt;HTML is the most common markup language for web development. HTML is a superset of XML, which is to say it is an extension of the XML specification. What is cool about this fact is that web browsers, in their ability to render HTML, actually come with XML parsers, and have XML parsing capabilities under the hood.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Think About XML At All
&lt;/h2&gt;

&lt;p&gt;HTML is the ubiquitous markup language of internet developers. The audience of this blog, software engineers, likely only has need for HTML. Yet, my Media Company deals with many authors of the non-technical variety, and I have got to say... Authors think about their content wayyy differently than HTML gives credit for.&lt;/p&gt;

&lt;p&gt;The beauty of XML is its &lt;em&gt;generic&lt;/em&gt; stucture which allows for custom parsing and handling. This flexibiliy has been beautifully exemplified in HTML, but the use case of &lt;em&gt;allowing custom definitions&lt;/em&gt; is better handled by XML.&lt;/p&gt;

&lt;p&gt;XML is a data-carrying language. HTML is an extension of that language that comes with standardized graphical-user interface rendering. To see what I mean by this, open an XML file in a browser. &lt;a href="https://alexason.com/uploads/library.xml" rel="noopener noreferrer"&gt;https://alexason.com/uploads/library.xml&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you will see, modern browsers render the file complete with element tags. But also take note that the browser recognizes the datatype, and applies special formatting. In this way, XML is more like JSON.&lt;/p&gt;




&lt;h2&gt;
  
  
  Parsing XML
&lt;/h2&gt;

&lt;p&gt;While not native to browser rendering agents, it's possible to parse XML using the browser API's DOMParser.&lt;/p&gt;

&lt;p&gt;
  See a gist of this is action
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;xmlString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
  &amp;lt;story&amp;gt;
    &amp;lt;styles&amp;gt;
      &amp;lt;titleStyle&amp;gt;
        &amp;lt;color&amp;gt;#4A90E2&amp;lt;/color&amp;gt;
      &amp;lt;/titleStyle&amp;gt;
      &amp;lt;paragraphStyle&amp;gt;
        &amp;lt;color&amp;gt;#333333&amp;lt;/color&amp;gt;
      &amp;lt;/paragraphStyle&amp;gt;
    &amp;lt;/styles&amp;gt;
    &amp;lt;title&amp;gt;Elena and the Embrace of Holiness&amp;lt;/title&amp;gt;
    &amp;lt;paragraph&amp;gt;In the heart of the village, where the sun kissed the earth...&amp;lt;/paragraph&amp;gt;
    &amp;lt;!-- More paragraphs here --&amp;gt;
  &amp;lt;/story&amp;gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;parser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DOMParser&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;xmlDocument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parseFromString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;xmlString&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/xml&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;parserError&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;xmlDoc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;parsererror&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;parserError&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Handle error&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Error parsing XML:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;parserError&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Successfully parsed the XML&lt;/span&gt;
  &lt;span class="c1"&gt;// XML Document contains a document&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Parsed XML Document:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;xmlDocument&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;xmlDocument&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;titleColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;xmlDocument&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;color&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;




&lt;h2&gt;
  
  
  Real Use Case
&lt;/h2&gt;

&lt;p&gt;The example shown demonstrates what is possible with XML, yet the use case of rendering and styling content is better handled by HTML. While the format, &lt;em&gt;resembles&lt;/em&gt; HTML, using XML as HTML must not be the best case of XML.&lt;/p&gt;

&lt;p&gt;My HTML Developer I know, Israel, writes XML like this. He uses the data format to recreate HTML, then uses JavaScript to make it HTML. While this is possible given the flexibility of XML, if the &lt;em&gt;only&lt;/em&gt; use case is for the browser, I'll tell you what I tell Israel: "Just write HTML!"&lt;/p&gt;

&lt;p&gt;Join Israel and the HTML Devs at &lt;a href="https://salvationco.mn.co" rel="noopener noreferrer"&gt;Salvation.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where to use XML&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;XML is a great format for intermediate representation. As mentioned, the immediate use case of my company is translating many different Author's (book authors, manuscript writers) representation of their work into a standardized format. The task is to turn Word documents, PDFs, plaintext, and spoken words into some similar data format.&lt;/p&gt;

&lt;p&gt;XML &lt;em&gt;could&lt;/em&gt; do that, and is exactly used as such in software programs such as Calibre and Manuskript.&lt;/p&gt;




&lt;p&gt;This has been a look at XML. It is a widely-recognized format, compatible with many readers and conversion tools. Given it's ease of parsing, W3C recommendation, and ubiquity, XML is a safe language for indefinite data storage.&lt;/p&gt;

&lt;p&gt;If you're interested in tools for data science and storage, be sure to &lt;a href="https://dev.to/theholyspirit"&gt;Follow this Dev.to&lt;/a&gt;. Add a reaction 💖 for more content like this.&lt;/p&gt;

&lt;p&gt;A&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>html</category>
      <category>programming</category>
    </item>
    <item>
      <title>The HTML Innovation</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Wed, 25 Sep 2024 13:30:13 +0000</pubDate>
      <link>https://dev.to/theholyspirit/the-html-innovation-1glb</link>
      <guid>https://dev.to/theholyspirit/the-html-innovation-1glb</guid>
      <description>&lt;p&gt;HTML5 innovated in the wrong direction. At some level, I am a contientious thinker, and respect that any step forward is fine. Yet, and further, the decision for semantic tags is awful.&lt;/p&gt;

&lt;p&gt;That's Right! I Went Political On That One! ⭐&lt;/p&gt;

&lt;p&gt;Semantic elements must have been thought of by a non-HTML developer. The written experience is not valuable, and the true 100% for real, non-marketing jargon value add for HTML5 semantic elements is ZERO.&lt;/p&gt;

&lt;p&gt;The conspicuous factor about the addition of these elements is &lt;em&gt;that someone made the decision in the first place.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For the record, there is absolutely and undoubtedly zero value added for the human reader of an HTML page when &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt; is used instead of &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;. The readers of the elements are web scraping utilities, i.e. software. The key player in this regard is Google.&lt;/p&gt;

&lt;p&gt;An entire major spec was invented just for Google. That actually happened, and the world needs to recognize that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did you know?&lt;/strong&gt; HTML5 is more than just semantic elements. Find out more and become an HTML Developer with &lt;a href="https://alexason.com/product/html-a-practical-handbook/" rel="noopener noreferrer"&gt;HTML Handbook&lt;/a&gt;, available at my company &lt;a href="https://alexason.com/product/html-a-practical-handbook/" rel="noopener noreferrer"&gt;alexason.com&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;This is Part 1 of a 3-part series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sept. 25:&lt;/strong&gt; The HTML Innovation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sept. 27:&lt;/strong&gt; &lt;a href="https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-2-10ki"&gt;HTML Should Be For People&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sept. 28:&lt;/strong&gt; &lt;a href="https://dev.to/theholyspirit/the-html-i-wish-i-had-pt-3-3a4k"&gt;HTML For People&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Leave a message with how you'd make HTML Better for Experience!&lt;/p&gt;

&lt;p&gt;If you're interested in making Hypertext Applications for the purpose of Human Happiness, come to the party at Salvation! &lt;a href="https://salvationco.mn.co" rel="noopener noreferrer"&gt;Salvation Company&lt;/a&gt;, where We Are Saved. Oh, and I hear the author of that HTML Handbook is a member at I'm sure there is a sharable manuscript in the member library!&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
      <category>ui</category>
    </item>
    <item>
      <title>Medium.com API in Python</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Fri, 20 Sep 2024 13:00:00 +0000</pubDate>
      <link>https://dev.to/theholyspirit/mediumcom-api-in-python-1kjn</link>
      <guid>https://dev.to/theholyspirit/mediumcom-api-in-python-1kjn</guid>
      <description>&lt;p&gt;Medium.com has a little known API that does a few things. Here are the things it can do!&lt;/p&gt;




&lt;p&gt;I initially got started researching Medium's interface to make a library which would sync and syndicate articles. The very initial use case was pulling articles &lt;em&gt;from&lt;/em&gt; Medium, yet such a functionality isn't available on their documented API. A secondary use case is to syndicate articles &lt;em&gt;to&lt;/em&gt; Medium, which is indeed available via a simple HTTP request (go figure!). It's quite a curious API.&lt;/p&gt;

&lt;p&gt;The full docs are &lt;a href="https://github.com/Medium/medium-api-docs" rel="noopener noreferrer"&gt;on Github.&lt;/a&gt; Medium developers no longer maintain it, but it is still open for use. Here's what it can do.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="n"&gt;access_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer MEDIUMINTEGRATIONTOKENHERE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;base_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.medium.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;access_token&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_current_user&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/me&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_user_publications&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/users/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/publications&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_publication_contributors&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pub_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/publications/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;pub_id&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/contributors&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;author_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# data = {
&lt;/span&gt;    &lt;span class="c1"&gt;# title,           (required) This is only used for SEO listing. You should also include the title in the content field. &amp;lt;100 chars
&lt;/span&gt;    &lt;span class="c1"&gt;# contentFormat,   (required) HTML or Markdown
&lt;/span&gt;    &lt;span class="c1"&gt;# content,         (required) Valid html or markdown of the article
&lt;/span&gt;    &lt;span class="c1"&gt;# canonicalUrl,    Original URL if the content was published elsewhere first
&lt;/span&gt;    &lt;span class="c1"&gt;# tags,            Only three tags will be counted. &amp;lt; 25 chars
&lt;/span&gt;    &lt;span class="c1"&gt;# publishStatus,   Must be “public”, “draft”, or “unlisted”. Public
&lt;/span&gt;    &lt;span class="c1"&gt;# license,         Valid values are “all-rights-reserved”, “cc-40-by”, “cc-40-by-sa”, “cc-40-by-nd”, “cc-40-by-nc”, “cc-40-by-nc-nd”, “cc-40-by-nc-sa”, “cc-40-zero”, “public-domain” Default: “all-rights-reserved”
&lt;/span&gt;    &lt;span class="c1"&gt;# notifyFollowers, Boolean
&lt;/span&gt;    &lt;span class="c1"&gt;# }
&lt;/span&gt;    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/users/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;author_id&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/posts&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;content_type&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# image, in this case, should be a file on-disk
&lt;/span&gt;    &lt;span class="c1"&gt;# content_type must be one of 'image/jpeg', 'image/png', 'image/gif', or 'image/tiff'
&lt;/span&gt;    &lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;image&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;content_type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;# 'image': ('symbol.png', open('symbol.png', 'rb'), 'image/png')
&lt;/span&gt;    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/images&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's all! The public API is no longer maintained, but it is still open, and it is still possible to get an Integration Token in one's &lt;a href="https://medium.com/me/settings/security" rel="noopener noreferrer"&gt;Medium Settings.&lt;/a&gt; Grab an integration token, replace &lt;code&gt;MEDIUMINTEGRATIONTOKENHERE&lt;/code&gt;, and invoke those functions today.&lt;/p&gt;




&lt;p&gt;A couple of other options exist for getting one's own articles from Medium. First, is to use the RSS feed functionality. The response from the RSS endpoint is XML, so most developers pipe the raw response through some RSS-to-JSON functionality (see: the first NPM library I ever made 👶, &lt;a href="https://www.npmjs.com/package/medium-post-parser" rel="noopener noreferrer"&gt;medium-post-parser&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Another option is to request a data download of all of one's Medium information via email. It is non-trivial to make this method purely automated, nevertheless if retrieving a .zip file from an email fits into one's workflow, it is surely a possiblity! You can request a .zip file containing HTML files of your Medium posts and drafts, info that you have shared on your profile, stories you’ve clapped on, and more in Medium Settings.&lt;/p&gt;

&lt;p&gt;Next, I'll be investigating &lt;a href="https://github.com/rnag/medium-sdk-ts" rel="noopener noreferrer"&gt;this typescript library&lt;/a&gt; which promises to solve the post retrieval shortcoming of the API.&lt;/p&gt;

&lt;p&gt;A&lt;/p&gt;

&lt;p&gt;FYI... This many tabs will be saved if you just copy the code!&lt;/p&gt;

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

&lt;p&gt;Find the Author on X, &lt;a href="https://x.com/theholyspiritcc" rel="noopener noreferrer"&gt;@theholyspiritcc&lt;/a&gt;.&lt;br&gt;
Coffees are accepted! &lt;a href="//buymeacoffee.com/AlexaAnderson"&gt;BuyMeACoffee&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>api</category>
      <category>contentwriting</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Em and Rem: What's the Difference?</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Thu, 19 Sep 2024 03:27:15 +0000</pubDate>
      <link>https://dev.to/theholyspirit/em-and-rem-whats-the-difference-iol</link>
      <guid>https://dev.to/theholyspirit/em-and-rem-whats-the-difference-iol</guid>
      <description>&lt;p&gt;Synopsis: Both rem and em are units of size in CSS. Rem is the font-size of the &lt;strong&gt;r&lt;/strong&gt;oot element. Em is the font-size of the local context.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The em unit&lt;/strong&gt; is borrowed from the world of printed typography, and it is a unit that allows setting the font-size of an element relative to the nearest declared font-size in its component hierarchy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The rem unit&lt;/strong&gt;, short for root em, always references the font-size value of the root element, the &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; element. If the &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; element doesn’t have a specified font-size, the browser default of 16px is used.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/aaco/embed/ExBqgWj?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Both of these units can be used for any sized attribute, such as margin and line-height. If so, rem maintains its consistent definition. Em, on the other hand, references the element's own font-size.&lt;/p&gt;




&lt;h2&gt;
  
  
  Developer's Take
&lt;/h2&gt;

&lt;p&gt;I admit I used em a lot more in the code I've written, but after learning this, rem is more intuitive and reliable than em! I will be using rem from this time onward, unless I specifically want to take into account the sizing in the localized context.&lt;/p&gt;

&lt;p&gt;If you're an HTML Dev, an keen on the joining the Mission of Saving the World, come join the crew at &lt;a href="//salvationco.mn.co"&gt;Salvation Company&lt;/a&gt;, where we're doing just that! Technology developments are a sure factor in doing what we're doing, and there's room for newbies and Senior Staff Architect Engineers alike! (And product managers, and designers, and techies, and students, and advisors, and mathmeticians, and...) The rooms are open; You &lt;em&gt;gotta&lt;/em&gt; stay respectful. It is salvation anyway 🙂 See ya there!&lt;/p&gt;

&lt;p&gt;A&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>html</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Minitest Assertions</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Sat, 14 Sep 2024 03:19:50 +0000</pubDate>
      <link>https://dev.to/theholyspirit/minitest-assertions-40ab</link>
      <guid>https://dev.to/theholyspirit/minitest-assertions-40ab</guid>
      <description>&lt;p&gt;Ruby on Rails 7 ships with Minitest. Here's a definitive guide to what assertions are available in Minitest 5.1.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Assertion&lt;/th&gt;
&lt;th&gt;Asserts&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert( test, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;test&lt;/code&gt; is true.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not( test, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;test&lt;/code&gt; is false.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_equal( expected, actual, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;expected == actual&lt;/code&gt; is true.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_equal( expected, actual, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;expected != actual&lt;/code&gt; is true.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_same( expected, actual, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;expected.equal?(actual)&lt;/code&gt; is true.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_same( expected, actual, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;expected.equal?(actual)&lt;/code&gt; is false.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_nil( obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj.nil?&lt;/code&gt; is true.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_nil( obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj.nil?&lt;/code&gt; is false.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_empty( obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; is &lt;code&gt;empty?&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_empty( obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; is not &lt;code&gt;empty?&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_match( regexp, string, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that a string matches the regular expression.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_no_match( regexp, string, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that a string doesn't match the regular expression.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_includes( collection, obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; is in &lt;code&gt;collection&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_includes( collection, obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; is not in &lt;code&gt;collection&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_in_delta( expected, actual, [delta], [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that the numbers &lt;code&gt;expected&lt;/code&gt; and &lt;code&gt;actual&lt;/code&gt; are within &lt;code&gt;delta&lt;/code&gt; of each other.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_in_delta( expected, actual, [delta], [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that the numbers &lt;code&gt;expected&lt;/code&gt; and &lt;code&gt;actual&lt;/code&gt; are not within &lt;code&gt;delta&lt;/code&gt; of each other.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_in_epsilon ( expected, actual, [epsilon], [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that the numbers &lt;code&gt;expected&lt;/code&gt; and &lt;code&gt;actual&lt;/code&gt; have a relative error less than &lt;code&gt;epsilon&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_in_epsilon ( expected, actual, [epsilon], [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that the numbers &lt;code&gt;expected&lt;/code&gt; and &lt;code&gt;actual&lt;/code&gt; have a relative error not less than &lt;code&gt;epsilon&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_throws( symbol, [msg] ) { block }&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that the given block throws the symbol.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_raises( exception1, exception2, ... ) { block }&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that the given block raises one of the given exceptions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_instance_of( class, obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; is an instance of &lt;code&gt;class&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_instance_of( class, obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; is not an instance of &lt;code&gt;class&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_kind_of( class, obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; is an instance of &lt;code&gt;class&lt;/code&gt; or is descending from it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_kind_of( class, obj, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; is not an instance of &lt;code&gt;class&lt;/code&gt; and is not descending from it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_respond_to( obj, symbol, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; responds to &lt;code&gt;symbol&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_respond_to( obj, symbol, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj&lt;/code&gt; does not respond to &lt;code&gt;symbol&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_operator( obj1, operator, [obj2], [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj1.operator(obj2)&lt;/code&gt; is true.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_operator( obj1, operator, [obj2], [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj1.operator(obj2)&lt;/code&gt; is false.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_predicate ( obj, predicate, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj.predicate&lt;/code&gt; is true, e.g. &lt;code&gt;assert_predicate str, :empty?&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_not_predicate ( obj, predicate, [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that &lt;code&gt;obj.predicate&lt;/code&gt; is false, e.g. &lt;code&gt;assert_not_predicate str, :empty?&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_error_reported(class) { block }&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that the error class has been reported, e.g. &lt;code&gt;assert_error_reported IOError { Rails.error.report(IOError.new("Oops")) }&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;assert_no_error_reported { block }&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts that no errors have been reported, e.g. &lt;code&gt;assert_no_error_reported { perform_service }&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;flunk( [msg] )&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asserts failure. This is useful to explicitly mark a test that isn't finished yet.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;We're writing Ruby on Rails at Salvation Co. Technologists keen on Saving The World are invited to join the innovations. &lt;a href="https://salvationco.mn.co" rel="noopener noreferrer"&gt;Salvation Company&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
      <category>testing</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Join Table</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Fri, 13 Sep 2024 00:14:30 +0000</pubDate>
      <link>https://dev.to/theholyspirit/join-table-4jk1</link>
      <guid>https://dev.to/theholyspirit/join-table-4jk1</guid>
      <description>&lt;p&gt;When modelling data for SQL, a useful tool for data engineers is the Join Table. A Join Table reduces redundancy in relational databases by defining the &lt;em&gt;relationship&lt;/em&gt; between tables as an entity. In the case of many-to-many relationships, Join Table is the best practice.&lt;/p&gt;

&lt;p&gt;Here is a simple join table written in the Ruby on Rails schema DSL (domain specific language.) The use case is a student portfolio which contains Projects, and each project is made with a number of Technologies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;create_table&lt;/span&gt; &lt;span class="s2"&gt;"projects"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;   &lt;span class="s2"&gt;"title"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;   &lt;span class="s2"&gt;"image"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;     &lt;span class="s2"&gt;"description"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;   &lt;span class="s2"&gt;"repository_url"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;   &lt;span class="s2"&gt;"demo_url"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;     &lt;span class="s2"&gt;"role"&lt;/span&gt;
 &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;create_table&lt;/span&gt; &lt;span class="s2"&gt;"projects_technologies"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;integer&lt;/span&gt;  &lt;span class="s2"&gt;"project_id"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;integer&lt;/span&gt;  &lt;span class="s2"&gt;"technology_id"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;index&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"project_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"technology_id"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s2"&gt;"index_projects_technologies_on_project_id_and_technology_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;using: :btree&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;create_table&lt;/span&gt; &lt;span class="s2"&gt;"technologies"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;   &lt;span class="s2"&gt;"name"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Join Table in this exercise is &lt;code&gt;projects_technologies&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;Comment below if you're interested in Join Tables! If you're proficient in it, Come join us at &lt;a href="https://salvationco.mn.co" rel="noopener noreferrer"&gt;Salvation!&lt;/a&gt; We're Saving The World, and making plenty of tables along the way!&lt;/p&gt;

&lt;p&gt;~ ATHS&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>softwareengineering</category>
      <category>software</category>
    </item>
    <item>
      <title>Product Owner 9/6</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Sat, 07 Sep 2024 04:00:40 +0000</pubDate>
      <link>https://dev.to/theholyspirit/product-owner-96-4g6c</link>
      <guid>https://dev.to/theholyspirit/product-owner-96-4g6c</guid>
      <description>&lt;p&gt;I'm a bit of a Product Afficianado!&lt;/p&gt;

&lt;p&gt;I cruise Product Hunt, and if you're on Product Hunt too, be sure to follow me! I'll follow back and watch for your launches!&lt;/p&gt;

&lt;p&gt;Here are some cool products, found today.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://groupcard.urbanalgorithm.com/" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrpoldcfcjrlactoxnfp.png" alt="urban algorithm" width="590" height="175"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://groupcard.urbanalgorithm.com/" rel="noopener noreferrer"&gt;Group Card Creator (no sign up!)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://videogen.io/?via=alexa" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzua9qquci6llp1t4wr5u.png" alt="VideoGen" width="506" height="429"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://videogen.io/?via=alexa" rel="noopener noreferrer"&gt;VideoGen&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.assemblyai.com/products/speech-to-text/" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqudukchvi74iwy89qk5g.png" alt="Assembly AI" width="663" height="341"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.assemblyai.com/products/speech-to-text/" rel="noopener noreferrer"&gt;Assembly AI (Speech to Text)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>product</category>
      <category>webdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>How To Announce Anything!</title>
      <dc:creator>Author</dc:creator>
      <pubDate>Sat, 07 Sep 2024 03:33:46 +0000</pubDate>
      <link>https://dev.to/theholyspirit/how-to-announce-anything-1hb7</link>
      <guid>https://dev.to/theholyspirit/how-to-announce-anything-1hb7</guid>
      <description>&lt;p&gt;Announcement General Form, A Template&lt;/p&gt;

&lt;p&gt;The Entity Announcement General Form&lt;br&gt;
Here is a template for, generally, any announcement.&lt;/p&gt;

&lt;p&gt;I have a {thing}&lt;br&gt;
The {thing} is {things name}&lt;br&gt;
The {thing} has {these attributes}&lt;br&gt;
{further significance by my estimation is this}&lt;br&gt;
{Where it can be found}&lt;/p&gt;

&lt;p&gt;In an Example:&lt;br&gt;
Hello all,&lt;br&gt;
I’m announcing the release of a book, HTML: A Plain and Simple Handbook.&lt;br&gt;
HTML Book provides a comprehensive look at the library of HTML elements next to practical example.&lt;br&gt;
It can be used as a reference for seasoned professionals. It can be used as sequential lessons for beginners.&lt;/p&gt;

&lt;p&gt;HTML: Simply Given is available at alexason.com/html-book&lt;/p&gt;

</description>
      <category>html</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
