<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Fully Stacked James: A Dev Blog by Jakub Stastka]]></title><description><![CDATA[Software Developer | Python, Django, Django REST Framework | TypeScript, React, Next.js | CSS | Git | PostgreSQL | Linux Server Management]]></description><link>https://blog.stastka.org</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 18:07:54 GMT</lastBuildDate><atom:link href="https://blog.stastka.org/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Pre-GPT Text Generation: The Rise and Fall of My Personal Robotic Journalist]]></title><description><![CDATA[Before my career as a professional developer, I worked as a journalist. In the latter years of my journalism tenure, I identified numerous tasks that seemed suitable for delegation to junior staff members, or even better, complete automation. Possess...]]></description><link>https://blog.stastka.org/pre-gpt-text-generation-the-rise-and-fall-of-my-personal-robotic-journalist</link><guid isPermaLink="true">https://blog.stastka.org/pre-gpt-text-generation-the-rise-and-fall-of-my-personal-robotic-journalist</guid><category><![CDATA[AI]]></category><category><![CDATA[chatgpt]]></category><category><![CDATA[Django]]></category><category><![CDATA[Python]]></category><category><![CDATA[news]]></category><dc:creator><![CDATA[Jakub Stastka]]></dc:creator><pubDate>Mon, 24 Apr 2023 10:36:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/npxXWgQ33ZQ/upload/c561a3dd3ec447f213008c3b3226f69f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Before my career as a professional developer, I worked as a journalist. In the latter years of my journalism tenure, I identified numerous tasks that seemed suitable for delegation to junior staff members, or even better, complete automation. Possessing a background in programming and an eagerness to learn Python, I embarked on the development of a proof-of-concept for the automatic generation of news articles.</p>
<h2 id="heading-how-it-started">How It Started</h2>
<p>The objective was straightforward: utilize a CSV file containing data, from which a sophisticated script extracts predetermined sections of articles, populates variables using the CSV data, and assembles the entire article. Naturally, safeguards should be in place to ensure that within a single batch of articles, sentences are not duplicated. This elegant concept held the potential to significantly enhance the efficiency of assembling a newspaper edition.</p>
<p>My vision involved employing this process to create "service" type articles - those that inform readers about upcoming community events or generate sports-related content, for instance. It is important to note that this concept was conceived prior to the widespread availability of GPT, particularly ChatGPT, for public use.</p>
<p>Subsequently, the COVID-19 pandemic emerged, leading to a halt in community events. To adapt to this change, I considered reconfiguring the existing script to source data from a REST API rather than a CSV file. This modification would enable the creation of articles focused on the COVID-19 spread in the Czech Republic.</p>
<p>Consequently, I revamped the script to operate within a Django web application, providing users with an interactive interface. The platform not only offered up-to-date information on the pandemic's spread, hospitalization figures, and other relevant data, but also presented visual representations of trends using Chart.js. Leveraging historical data, I was able to query the database to identify the peak days for new cases, among other insights. Eventually, I integrated additional functionality, enabling my robotic journalist to post updates on Twitter.</p>
<h2 id="heading-reasons-for-retirement-of-my-robotic-journalist">Reasons for Retirement of My Robotic Journalist</h2>
<p>My digital journalist, dubbed E-Gon (in homage to the renowned Czech journalist Egon Erwin Kisch), composed nearly 550 articles on the COVID-19 situation in the Czech Republic before I deactivated the script responsible for generating the content. The primary reasons for this decision were:</p>
<ul>
<li><p>COVID-19 was no longer classified as an illness necessitating isolation, indicating that the critical need for public awareness had diminished;</p>
</li>
<li><p>The technological challenge that initially inspired the project had been resolved;</p>
</li>
<li><p>The public release of GPT-4, which could produce superior articles compared to my templated script, offered possibly infinite variety while retaining the fundamental article structure.</p>
</li>
</ul>
<p>At one point, I contemplated offering E-Gon's services to publishing houses as a cost-effective solution, providing an API for generating similar articles. However, given my extensive familiarity with the industry, I recognized that the cost of journalistic work was already low enough, and there was no immediate need to replace human labor with robotic alternatives like E-Gon or ChatGPT.</p>
<h2 id="heading-lessons-learned">Lessons Learned</h2>
<p>Undeniably, hands-on experience is crucial for mastering new skills. Reflecting upon E-Gon's development, I recognize certain design flaws in the database models. At the time, my understanding of ForeignKey was incomplete, which led to the article paragraphs being hardcoded as attributes. Consequently, any addition of new content would necessitate a database migration. Furthermore, the absence of a base model for any type of news article limited E-Gon's adaptability to cover topics beyond COVID-related articles.</p>
<p>Given my limited experience with JavaScript and its ecosystem at that time, I relied on CDN for library implementation, rather than employing Parcel or Webpack for production builds.</p>
<p>In retrospect, I would have opted for a Celery task to manage the article generation script, which would have facilitated improved monitoring. I would have also chosen Sentry for error tracking, rather than manually inspecting log files on the server.</p>
<p>Despite these challenges, I believe the project provided me with invaluable learning opportunities. While I may not renew the domain name or generate new articles, maintaining the application online feels appropriate. Completing the project from inception to deployment early in my development career has been a rewarding experience.</p>
]]></content:encoded></item></channel></rss>