<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programming Archives - Dennis Bottaro</title>
	<atom:link href="https://www.dennisbottaro.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dennisbottaro.com/category/programming/</link>
	<description>Animal Lover, Programmer, Musician &#38; Photographer</description>
	<lastBuildDate>Thu, 24 Apr 2025 19:32:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>PyCharm 2024 UI Update</title>
		<link>https://www.dennisbottaro.com/pycharm-2024-ui-update/</link>
		
		<dc:creator><![CDATA[dbottaro]]></dc:creator>
		<pubDate>Wed, 18 Dec 2024 23:34:29 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<guid isPermaLink="false">https://www.dennisbottaro.com/?p=604</guid>

					<description><![CDATA[<p>Oh no&#8230; I had been running Pycharm 2023.1.3 for quite a while without paying any attention to the available updates&#8230; I hopped in to add a quick feature to my IT ticketing system and noticed the updates and clicked on it. This __this__ happened&#8230; I almost shit a brick in horror and wondered if I&#8230; </p>
<p>The post <a href="https://www.dennisbottaro.com/pycharm-2024-ui-update/">PyCharm 2024 UI Update</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Oh no&#8230;</h2>



<p>I had been running Pycharm 2023.1.3 for quite a while without paying any attention to the available updates&#8230;  I hopped in to add a quick feature to my IT ticketing system and noticed the updates and clicked on it.</p>



<p>This __this__ happened&#8230;</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="557" src="https://www.dennisbottaro.com/wp-content/uploads/2024/12/pycharm-became-vscode-1024x557.png" alt="" class="wp-image-607" srcset="https://www.dennisbottaro.com/wp-content/uploads/2024/12/pycharm-became-vscode-1024x557.png 1024w, https://www.dennisbottaro.com/wp-content/uploads/2024/12/pycharm-became-vscode-300x163.png 300w, https://www.dennisbottaro.com/wp-content/uploads/2024/12/pycharm-became-vscode-768x418.png 768w, https://www.dennisbottaro.com/wp-content/uploads/2024/12/pycharm-became-vscode-1536x835.png 1536w, https://www.dennisbottaro.com/wp-content/uploads/2024/12/pycharm-became-vscode.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>I almost shit a brick in horror and wondered if I had inadvertently started VS Code.  I tried to go about my mission of adding a simple feature then got disgusted when I had to fight the UI to close a webpage preview of a template.</p>



<h3 class="wp-block-heading">Google to the Rescue!</h3>



<p>I hunted about on Google for a bit then happened across the <a href="https://plugins.jetbrains.com/plugin/24468-classic-ui/">JetBrains Classic UI plugin</a>.  Once installed I had my familiar and powerful IDE back, not some lopped off text editor.  I even created an account on the JetBrains marketplace so I could review this plugin and ended up upvoting almost every review I listed there.  </p>



<p>I can only hope they maintain the Classic UI plugin.  If I wanted VS Code I would just use it for Free &#8212; but I prefer an actual TOOL that behaves like a professional integrated development environment.  </p>



<h2 class="wp-block-heading">VSCodification has to STOP</h2>



<p>Can we just stop the dumbing down of every user interface?  I understand the plight of the nascent end-user that is just getting taking their first steps into computing.  But for a seasoned (read that as OLD school and just plain OLD) developer it&#8217;s disheartening and disappointing to see good tools turn into kids toys.</p>
<p>The post <a href="https://www.dennisbottaro.com/pycharm-2024-ui-update/">PyCharm 2024 UI Update</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PythonAnywhere: Something went wrong :-(</title>
		<link>https://www.dennisbottaro.com/pythonanywhere-outage-may-31-2024/</link>
		
		<dc:creator><![CDATA[dbottaro]]></dc:creator>
		<pubDate>Fri, 31 May 2024 15:16:23 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<guid isPermaLink="false">https://www.dennisbottaro.com/?p=592</guid>

					<description><![CDATA[<p>Today, May31 2024, I went to load my ticket web app to create a ticket for one of my users and encountered the error: &#8220;Something went wrong&#8221; ending off with &#8220;Error Code: 504-backend.&#8221; I looked through my logs on the server and found a issues like the following: Server Log: Harakiri on Worker After checking&#8230; </p>
<p>The post <a href="https://www.dennisbottaro.com/pythonanywhere-outage-may-31-2024/">PythonAnywhere: Something went wrong :-(</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Today, May31 2024, I went to load my ticket web app to create a ticket for one of my users and encountered the error:  &#8220;Something went wrong&#8221; ending off with &#8220;Error Code: 504-backend.&#8221;</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="491" src="https://www.dennisbottaro.com/wp-content/uploads/2024/05/image-1024x491.png" alt="" class="wp-image-593" style="width:840px;height:auto" srcset="https://www.dennisbottaro.com/wp-content/uploads/2024/05/image-1024x491.png 1024w, https://www.dennisbottaro.com/wp-content/uploads/2024/05/image-300x144.png 300w, https://www.dennisbottaro.com/wp-content/uploads/2024/05/image-768x368.png 768w, https://www.dennisbottaro.com/wp-content/uploads/2024/05/image.png 1303w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">PythonAnywhere something went wrong outage May 31 2024</figcaption></figure>



<p>I looked through my logs on the server and found a issues like the following:</p>



<h2 class="wp-block-heading">Server Log: Harakiri on Worker</h2>



<pre class="wp-block-code"><code>2024-05-31 10:08:25 Fri May 31 10:08:24 2024 - *** HARAKIRI ON WORKER 1 (pid: 2, try: 1) ***
2024-05-31 10:08:25 Fri May 31 10:08:24 2024 - HARAKIRI !!! worker 1 status !!!
2024-05-31 10:08:25 Fri May 31 10:08:24 2024 - HARAKIRI &#91;core 0] 10.0.0.20 - GET / since 1717164203
2024-05-31 10:08:25 Fri May 31 10:08:24 2024 - HARAKIRI !!! end of worker 1 status !!!
2024-05-31 10:08:25 DAMN ! worker 1 (pid: 2) died, killed by signal 9 :( trying respawn ...
</code></pre>



<p>After checking my other logs I realized it&#8217;s not my application.  There is something amiss over at PythonAnywere.  Quite a few users in the forums are mentioning similar errors. &#8220;504-loadbalancer&#8221; and &#8220;504-backend&#8221; seem to be cropping up most often.</p>



<p>There is no notification of system status on the PythonAnywhere Dashboard.  This would be a nice feature to add down the road once this current outage is fixed.</p>



<p>Some chatter over on the <a href="https://x.com/pythonanywhere?lang=en">@PythonAnywere on X</a> shows that a DDOS seems to have started sometime yesterday. This could answer the question &#8220;What&#8217;s wrong over at PythonAnywhere&#8221;</p>



<h2 class="wp-block-heading">Error Log: OSError: write error</h2>



<p>My error log shows this message a couple of times.</p>



<pre class="wp-block-code"><code>2024-05-31 10:13:27,385: OSError: write error</code></pre>



<p>This is not a Django or Python problem.  Some critical infrastructure isn&#8217;t working properly over at PythonAnywhere.  </p>



<h2 class="wp-block-heading">Update: 5/31/24 11:15am</h2>



<p>My ticketing site is working.  Will check out the forums to see if anything is posted there.</p>
<p>The post <a href="https://www.dennisbottaro.com/pythonanywhere-outage-may-31-2024/">PythonAnywhere: Something went wrong :-(</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The PythonAnywhere Experience</title>
		<link>https://www.dennisbottaro.com/the-pythonanywhere-experience/</link>
		
		<dc:creator><![CDATA[dbottaro]]></dc:creator>
		<pubDate>Wed, 15 May 2024 03:51:42 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<guid isPermaLink="false">https://www.dennisbottaro.com/?p=552</guid>

					<description><![CDATA[<p>Deploying a Django 5 Application using PythonAnywhere I recently developed a simple ticket tracking system in Django for my own use to better manage requests from my team at the office. It consists of two main models User and Ticket with a TicketHistory coming one of these days. The simplicity of my models led me&#8230; </p>
<p>The post <a href="https://www.dennisbottaro.com/the-pythonanywhere-experience/">The PythonAnywhere Experience</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img decoding="async" width="1023" height="427" src="https://www.dennisbottaro.com/wp-content/uploads/2024/05/depositphotos_73943203-stock-photo-python-concept-copy.jpg" alt="" class="wp-image-554" srcset="https://www.dennisbottaro.com/wp-content/uploads/2024/05/depositphotos_73943203-stock-photo-python-concept-copy.jpg 1023w, https://www.dennisbottaro.com/wp-content/uploads/2024/05/depositphotos_73943203-stock-photo-python-concept-copy-300x125.jpg 300w, https://www.dennisbottaro.com/wp-content/uploads/2024/05/depositphotos_73943203-stock-photo-python-concept-copy-768x321.jpg 768w" sizes="(max-width: 1023px) 100vw, 1023px" /></figure>



<h2 class="wp-block-heading">Deploying a Django 5 Application using PythonAnywhere</h2>



<p>I recently developed a simple ticket tracking system in Django for my own use to better manage requests from my team at the office. It consists of two main models User and Ticket with a TicketHistory coming one of these days. The simplicity of my models led me to try using Class-Based Views for the first time and it wasn&#8217;t a bad experience coming from a few years of Function Based Views.</p>



<p>Staying focused on simplicity I wanted to see if I could host this basic site without standing up a new Ubuntu server instance along with the required NGINX and Gunicorn stack. I opted to give PythonAnywhere a try and I am quite pleased with the ease of deployment and performance even on the free tier.</p>



<h3 class="wp-block-heading">PythonAnywhere&#8217;s Killer Feature &#8211; File Persistence</h3>



<p>Before getting too far into this, I need to mention this app runs on a SQLite database.  This was a non-starter for some app hosting providers like Heroku since there was no real file persistence.  This is NOT the case with PythonAnywhere &#8211; there is a REAL live file system that is always available to your application.  </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Simply stated &#8211; you CAN use a file-based data source in your project.</p>
<cite>This Elated Developer</cite></blockquote>



<h2 class="wp-block-heading">Getting Started with PythonAnywhere</h2>



<p>I signed up for a free user account, and got straight on about getting my application up and running.</p>



<p>Out of the box, PythonAnywhere supports instant setup for Django 3.X and 4.x projects.  Being I was on the bleeding edge with Django 5.0.4 (Thanks Pycharm!) I had to go about setting up my environment manually.</p>



<h3 class="wp-block-heading">Touching the Naughty Bits</h3>



<p>I needed to create a my own virtual environment to run Django 5.  This was as easy as could be after running a few commands in their &#8220;Console&#8221; section I was pip installing my requirements.  Something PA does that I was not used to is launching virtual environments using a &#8220;workon &lt;environment&gt;&#8221; command.  I&#8217;m guessing this might be an Anaconda method of managing virtual environments, but it was a change for me from source/bin/activate that I have become used to.</p>



<p>Once getting the environment setup I needed to get my code up to the site.  Since I had yet to push my project to GitHub I needed to zip up my project directory and copy it up using their &#8220;Files&#8221; section.  Then unzip the file in the &#8220;Console&#8221; section.  After that I was a few settings changes away from rolling my app live.</p>



<p>After making need changes to my settings.py file and the website configuration file, I was up and running after a couple of failed starts due to my own path naming errors.</p>



<h2 class="wp-block-heading">Running Live and Loving It</h2>



<p>My simple ticketing system has been up and running for about a week at the time of writing this post and it&#8217;s utterly fantastic.  Performance is great, their support seems top notch, and they are very clear that there are real developers available to help you when you need it.</p>



<p>Check out <a href="http://www.pythonanywhere.com">PythonAnywhere </a>and see how it fits your needs.</p>
<p>The post <a href="https://www.dennisbottaro.com/the-pythonanywhere-experience/">The PythonAnywhere Experience</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Django File Uploads Fail</title>
		<link>https://www.dennisbottaro.com/django-file-uploads-fail/</link>
		
		<dc:creator><![CDATA[dbottaro]]></dc:creator>
		<pubDate>Wed, 07 Feb 2024 19:11:24 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<guid isPermaLink="false">https://www.dennisbottaro.com/?p=537</guid>

					<description><![CDATA[<p>While trying to add a simple &#8220;Attachments&#8221; feature to one of my applications I ran across an issue where a record with file could be added from the Django Admin, but would fail with a validation error when used in my forms. The error came down to my missing something from views.py in the form&#8230; </p>
<p>The post <a href="https://www.dennisbottaro.com/django-file-uploads-fail/">Django File Uploads Fail</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>While trying to add a simple &#8220;Attachments&#8221; feature to one of my applications I ran across an issue where a record with file could be added from the Django Admin, but would fail with a validation error when used in my forms.</p>



<p>The error came down to my missing something from views.py in the form instantiation from the POST data.</p>



<pre class="wp-block-code"><code>def handle_files(request):
  if request.method == 'POST':
    form = MyForm(request.POST, <strong><em>request.FILES</em></strong>)
    if form.is_valid():
      form.save()    </code></pre>



<p>I was missing the additional parameter for the FILES from the request object.  I ran across so many articles that didn&#8217;t show THAT, or I was just missing it, that I spent far too long on trying to solve this simple error.  </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Update</strong>: This is covered in the <a href="https://docs.djangoproject.com/en/5.0/topics/http/file-uploads/">Django documentation</a>, but somehow I managed to over look it every single time I read it.</p>
<cite>Dennis Bottaro, Harried Programmer in a Hurry</cite></blockquote>



<p>Hopefully this saves someone the time it took me to resolve this issue.</p>
<p>The post <a href="https://www.dennisbottaro.com/django-file-uploads-fail/">Django File Uploads Fail</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Django: Grouper &#8211; Show Additional Fields</title>
		<link>https://www.dennisbottaro.com/django-grouper-show-additional-fields/</link>
		
		<dc:creator><![CDATA[dbottaro]]></dc:creator>
		<pubDate>Sat, 04 Sep 2021 00:49:22 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web Design]]></category>
		<guid isPermaLink="false">http://www.dennisbottaro.com/?p=450</guid>

					<description><![CDATA[<p>In a system I&#8217;m developing that handles scheduling, I had a need to add some additional data to a report group header. I tried a few different approaches but nothing worked until I created a custom method on the model I was reporting on. This worked and got the needed data on the report, but&#8230; </p>
<p>The post <a href="https://www.dennisbottaro.com/django-grouper-show-additional-fields/">Django: Grouper &#8211; Show Additional Fields</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In a system I&#8217;m developing that handles scheduling, I had a need to add some additional data to a report group header.  I tried a few different approaches but nothing worked until I created a custom method on the model I was reporting on.  </p>



<pre class="wp-block-code"><code>class MyModel(models.Model):
    job = models.CharField()
    address = models.CharField()
    start_date = models.DateTimeField()

    def custom_group_header(self):
        return self.job + "; " + self.address</code></pre>



<p>This worked and got the needed data on the report, but seemed far too cumbersome to be the correct way.</p>



<figure class="wp-block-pullquote"><blockquote><p>I knew there had to be a better way.</p><cite>Dennis Bottaro</cite></blockquote></figure>



<h2 class="wp-block-heading">The Better Way</h2>



<p>A few days went by and I was asked to add more related data to the report group header.  I almost created yet another custom method but just knew there had to be a better way.  I googled around and came across a <a href="https://code.djangoproject.com/ticket/13452" target="_blank" rel="noreferrer noopener">Django feature suggestion</a> involving expanding a CHOICE field form the choice key to the choice value that was ultimately rejected.  But the rejection comment held the answer I was looking for.</p>



<p>By virtue of the grouper having the list objects you can ask that list for the first object and access it&#8217;s model fields.</p>



<h3 class="wp-block-heading">How to Refer to Additional Model Fields from the Grouper</h3>



<pre class="wp-block-code"><code>group.list.0.field_to_display</code></pre>



<p>So, for my next header change I did the following in the template without having to add unneeded code to the models.py file.</p>



<pre class="wp-block-code"><code>{% for job in jobs %}
	&lt;tr&gt;
		&lt;td colspan="4"&gt;&lt;strong&gt;{{ job.grouper }}&lt;/strong&gt;&lt;/td&gt;
		&lt;td colspan="2" align="right"&gt;&lt;strong&gt;Start Date: {{ job.list.0.start_date|date:"Y-m-d" }}&lt;/strong&gt;&lt;/td&gt;
	&lt;/tr&gt;
	{% for task in job.list %}
	&lt;tr&gt;
		...
	&lt;/tr&gt;
	{% endfor %}
{% endfor %}</code></pre>
<p>The post <a href="https://www.dennisbottaro.com/django-grouper-show-additional-fields/">Django: Grouper &#8211; Show Additional Fields</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Django Models Parent Child Template Rendering</title>
		<link>https://www.dennisbottaro.com/django-models-parent-child-template-rendering/</link>
		
		<dc:creator><![CDATA[dbottaro]]></dc:creator>
		<pubDate>Tue, 11 Feb 2020 21:44:55 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Web Design]]></category>
		<guid isPermaLink="false">http://www.dennisbottaro.com/?p=421</guid>

					<description><![CDATA[<p>Just a quick little tip. It took me quite a bit to time to stumble across this, as the Django documentation does not mention it. If you have a &#8216;related_name&#8217; set for a ForeignKey field on a model, USE that related_name as the MODELCHILD_SET name when trying to access related objects. Working Example Based on&#8230; </p>
<p>The post <a href="https://www.dennisbottaro.com/django-models-parent-child-template-rendering/">Django Models Parent Child Template Rendering</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Just a quick little tip. </h2>



<p>It took me quite a bit to time to stumble across this, as the Django documentation does not mention it. </p>



<p>If you have a &#8216;related_name&#8217; set for a ForeignKey field on a model, USE that related_name as the MODELCHILD_SET name when trying to access related objects.</p>



<h2 class="wp-block-heading">Working Example</h2>



<p>Based on the example Polls app in the <a href="https://docs.djangoproject.com/en/1.11/intro/tutorial01/">Writing your first Django app</a> Documentation.</p>



<pre class="wp-block-preformatted">&lt;<strong>h1</strong>&gt;{{ question.question_text }}&lt;/<strong>h1</strong>&gt;
&lt;<strong>ul</strong>&gt;
{% <strong>for</strong> choice <strong>in</strong> question.choice_set.all %}
    &lt;<strong>li</strong>&gt;{{ choice.choice_text }}&lt;/<strong>li</strong>&gt;
{% <strong>endfor</strong> %}
&lt;/<strong>ul</strong>&gt;</pre>



<p>If you have in your models, the Choice model in your models.py file.</p>



<pre class="wp-block-preformatted"><strong>from</strong> <strong>django.db</strong> <strong>import</strong> models


<strong>class</strong> <strong>Question</strong>(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


<strong>class</strong> <strong>Choice</strong>(models.Model):
    question = models.ForeignKey(Question, <strong><em>related_name='choices',</em></strong> on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)</pre>



<p>You will need to use that <strong>related_name</strong> in place of the <em>modelname_set</em> in the template to access the child objects. </p>



<p>Thus, your template would need to look like this otherwise you won&#8217;t get any objects from the ForeignKey relation.</p>



<pre class="wp-block-preformatted">&lt;<strong>h1</strong>&gt;{{ question.question_text }}&lt;/<strong>h1</strong>&gt;
&lt;<strong>ul</strong>&gt;
{% <strong>for</strong> choice <strong>in</strong> question.<strong><em>choices</em></strong>.all %}
    &lt;<strong>li</strong>&gt;{{ choice.choice_text }}&lt;/<strong>li</strong>&gt;
{% <strong>endfor</strong> %}
&lt;/<strong>ul</strong>&gt;</pre>



<p>I sure hope this helps someone scratching their head and endlessly checking their model names.</p>
<p>The post <a href="https://www.dennisbottaro.com/django-models-parent-child-template-rendering/">Django Models Parent Child Template Rendering</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Training: TalkPython.FM</title>
		<link>https://www.dennisbottaro.com/training-talkpython-fm/</link>
		
		<dc:creator><![CDATA[dbottaro]]></dc:creator>
		<pubDate>Tue, 05 Jun 2018 23:02:33 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[Training]]></category>
		<guid isPermaLink="false">http://www.dennisbottaro.com/?p=180</guid>

					<description><![CDATA[<p>I finally finished Michael Kennedy&#8216;s awesome introduction to python programming course &#8220;Python Jumpstart by Building 10 Apps&#8220;.  As a listener of both Talk Python To Me and PythonBytes podcasts, I&#8217;ve come to respect and appreciate Michael&#8217;s depth of knowledge and easy going approach to Python.  I started this course about three or four months ago&#8230; </p>
<p>The post <a href="https://www.dennisbottaro.com/training-talkpython-fm/">Training: TalkPython.FM</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I finally finished <a href="https://twitter.com/mkennedy">Michael Kennedy</a>&#8216;s awesome introduction to python programming course &#8220;<a href="https://training.talkpython.fm/courses/details/python-language-jumpstart-building-10-apps">Python Jumpstart by Building 10 Apps</a>&#8220;.  As a listener of both Talk Python To Me and <a href="https://pythonbytes.fm/">PythonBytes</a> podcasts, I&#8217;ve come to respect and appreciate Michael&#8217;s depth of knowledge and easy going approach to Python.  I started this course about three or four months ago diving in head first tearing my way through the first 9 apps, then got distracted by life.  I hopped back in the other day to tackle the final app and course round-up.</p>



<p>I have to say that this excellent python training course covers PLENTY of topics that new programmers and old-timers from other languages (like me) will use almost daily programming in Python.&nbsp; Everything from IDE selection and setup through Exception handling and Web Services are explained and put to use.</p>



<p>I highly recommend this course to anyone looking to expand their knowledge of Python.</p>
<p>The post <a href="https://www.dennisbottaro.com/training-talkpython-fm/">Training: TalkPython.FM</a> appeared first on <a href="https://www.dennisbottaro.com">Dennis Bottaro</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
