<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<author>
		<name>codeboje</name>
	</author>
	<title>codeboje - Guiding developers since 1869 - Guaranteed Bullshit-Free by Tag python</title>
	<updated>2024-01-04T17:03:34+01:00</updated>
	<id>https://codeboje.de/../..//</id>
		<entry>
		<title>The Ultimate Collection of Markdown Editors - Curated</title>
		<link type="text/html" href="https://codeboje.de/../../markdown-editors/" />
		<id>https://codeboje.de/../../markdown-editors/</id>
		<published>2018-05-28T22:15:01+02:00</published>
		<updated>2018-05-28T22:15:01+02:00</updated>
		<content type="html">&lt;p&gt;&lt;strong&gt;Last Update&lt;/strong&gt; May 2018&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been a long time user of Markdown now and still enjoy its simplicity. So i thought it is time to rewrite the collection and add some more information.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;#markdown-editors&#34;&gt;Yada, yada, just take me to the list&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;what-is-markdown&#34;&gt;What is Markdown?&lt;/h3&gt;
&lt;p&gt;Markdown is an easy to use markup language and is written in a plain text format. Writing in it feels very natural and with the tools around it you got a powerful helper, like a tiny wizard in your pocket :-). The main benefits are&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;natural writing, it looks and feels like plain text, here is an example  &lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# This is my first header

He is the prince of the land of fife.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;the text content is separated from the actual presentation, which simplifies the presentation of  your work in different formats, i.e., transform it to HTML, Word, PDF,  LaTeX, and more&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As I said it is plain text, and basically you could write it with any text editor on any platform. I write it on a Mac, my colleague can change it on Windows. And all with the simplest plain text editors. But when you want to transform it into HTML, you can use one of the many command line tools or an editor. And same of the editors I&amp;rsquo;ll present you now.&lt;/p&gt;
&lt;h4 id=&#34;markdown-editors&#34;&gt;Python based Markdown editors&lt;/h4&gt;
&lt;p&gt;This site has a strong history on Python, so Markdown Editors implemented in Python, get their special section.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://sourceforge.net/projects/retext/?source=dlp&#34;&gt;ReText&lt;/a&gt; Open source; written in Python and QT&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://john.nachtimwald.com/2009/08/30/niw-markdown-editor/&#34;&gt;Niw Markdown Editor&lt;/a&gt; Open source; written in Python and QT&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tam7t/markdown-editor&#34;&gt;Markdown Editor&lt;/a&gt; written in Python and QT, more a tech demo but working&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ncornette/Python-Markdown-Editor&#34;&gt;Python-Markdown-Editor&lt;/a&gt; runs a local server and you edit in a browser&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://codeboje.de/wysiwyg-markdown-editor/&#34;&gt;Markie - a WYSIWYG-Markdown editor&lt;/a&gt; Open source; written in Python and wxWidgets&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;markdown-editor-for-windows&#34;&gt;Markdown Editor for Windows&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/eduardonunesp/Anomade&#34;&gt;Anomade&lt;/a&gt; C++ and QT&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/cloose/CuteMarkEd&#34;&gt;CuteMarkEd&lt;/a&gt; C++ and QT; Open Source; Windows, Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://code.google.com/p/markdownsharp/&#34;&gt;MarkdownSharp&lt;/a&gt; Open source; C#&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.aflava.com/&#34;&gt;SmartDown&lt;/a&gt; Commercial; Windows&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://code52.org/DownmarkerWPF/&#34;&gt;MarkPad&lt;/a&gt; C#, Supports Metaweblog API&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.texts.io/&#34;&gt;Texts&lt;/a&gt; Commercial;Windows, Mac; a more visual editing as you don&amp;rsquo;t write markdown by yourself, but the editor does it in the background.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.mdcharm.com/&#34;&gt;MdCharm&lt;/a&gt; &lt;del&gt;Commercial&lt;/del&gt; Open Sourced; Windows, Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://markdownpad.com/&#34;&gt;MarkdownPad&lt;/a&gt; Free + Commercial version; Windows&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://pad.haroopress.com/&#34;&gt;Haroopad&lt;/a&gt; Freeware; Windows, Linux, Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.typora.io/&#34;&gt;Typora&lt;/a&gt; Commercial, free beta; Windows, Mac, Linux. Visual editing with a mix of writing and live preview.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://moopato.com&#34; title=&#34;create ebooks with Moopato eBook Writer&#34;&gt;Moopato eBook Writer&lt;/a&gt; Disclaimer: it is my own tool; Commercial Windows &amp;amp; Mac. Focused on distraction free writing and publishing of ebooks&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://wereturtle.github.io/ghostwriter/&#34;&gt;ghostwriter&lt;/a&gt; Open Source; Windows and Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://marxi.co/&#34;&gt;Marxico&lt;/a&gt; Online, Chrome App, Windows Client, Mac Client, Stores docs in Evernote&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.aflava.com/&#34;&gt;SmartDown II&lt;/a&gt; Commercial, Windows&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://abricotine.brrd.fr/&#34;&gt;Abricotine&lt;/a&gt; Open Source, Windows, Linux and Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://moeditor.github.io/&#34;&gt;MOEDITOR&lt;/a&gt; Open Source, Mac, Windows, Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pilemd.com/&#34;&gt;PileMd&lt;/a&gt; Free, Mac,Windows, Linux, Notes taking app&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;markdown-editor-for-linux&#34;&gt;Markdown Editor for Linux&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.typora.io/&#34;&gt;Typora&lt;/a&gt; Commercial, free beta; Windows, Mac, Linux. Visual editing with a mix of writing and live preview.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://uberwriter.wolfvollprecht.de/&#34;&gt;UberWriter&lt;/a&gt; Open source; Linux distraction free writing&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/cloose/CuteMarkEd&#34;&gt;CuteMarkEd&lt;/a&gt; C++ and QT; Open Source; Windows, Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.mdcharm.com/&#34;&gt;MdCharm&lt;/a&gt; &lt;del&gt;Commercial&lt;/del&gt; Open Sourced; Windows, Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://remarkableapp.github.io/&#34;&gt;Remarkable&lt;/a&gt; Free; Linux, Windows announced&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://wereturtle.github.io/ghostwriter/&#34;&gt;ghostwriter&lt;/a&gt; Open Source; Windows and Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://abricotine.brrd.fr/&#34;&gt;Abricotine&lt;/a&gt; Open Source, Windows, Linux and Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://moeditor.github.io/&#34;&gt;MOEDITOR&lt;/a&gt; Open Source, Mac, Windows, Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pilemd.com/&#34;&gt;PileMd&lt;/a&gt; Free, Mac,Windows, Linux, Notes taking app&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;markdown-editor-for-mac&#34;&gt;Markdown Editor for Mac&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.typora.io/&#34;&gt;Typora&lt;/a&gt; Commercial, free beta; Windows, Mac, Linux. Visual editing with a mix of writing and live preview.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://pad.haroopress.com/&#34;&gt;Haroopad&lt;/a&gt; Freeware; Windows, Linux, Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.texts.io/&#34;&gt;Texts&lt;/a&gt; Commercial;Windows, Mac; a more visual editing as you don&amp;rsquo;t write markdown by yourself, but the editor does it in the background.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://25.io/mou/&#34;&gt;Mou&lt;/a&gt; Commercial; Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://moopato.com&#34; title=&#34;create ebooks with Moopato eBook Writer&#34;&gt;Moopato eBook Writer&lt;/a&gt; Disclaimer: it is my own tool; Commercial Windows &amp;amp; Mac. Focused on distraction free writing and publishing of ebooks&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bywordapp.com/&#34;&gt;ByWword 2&lt;/a&gt; Commercial Mac, iOS&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://macdown.uranusjr.com/&#34;&gt;MacDown&lt;/a&gt; Open Source, Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://marked2app.com/&#34;&gt;Marked 2&lt;/a&gt; Commercial, Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://marxi.co/&#34;&gt;Marxico&lt;/a&gt; Online, Chrome App, Windows Client, Mac Client, Stores docs in Evernote&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://abricotine.brrd.fr/&#34;&gt;Abricotine&lt;/a&gt; Open Source, Windows, Linux and Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://textnutwriter.com/&#34;&gt;TextNut&lt;/a&gt; Freemium, Mac, iOS&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://writeapp.net/mac/&#34;&gt;Write for Mac&lt;/a&gt; Commercial, Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://moeditor.github.io/&#34;&gt;MOEDITOR&lt;/a&gt; Open Source, Mac, Windows, Linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pilemd.com/&#34;&gt;PileMd&lt;/a&gt; Free, Mac,Windows, Linux, Notes taking app&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://paragraphsapp.com/&#34;&gt;Paragraphs&lt;/a&gt; Commercial, Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.mweb.im/&#34;&gt;MWeb for Mac&lt;/a&gt; Commercial Mac, Supports Static Site Generators&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://getlightpaper.com/&#34;&gt;LightPaper&lt;/a&gt; Commercial Mac&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;markdown-editors-online-or-browser-extenions&#34;&gt;Markdown Editors Online or browser extenions&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://chrome.google.com/webstore/detail/textdown/efalomlklhakojjbdfehfkgoicablooc&#34;&gt;Textdown&lt;/a&gt; Chrome extension&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chrome.google.com/webstore/detail/stackedit/iiooodelglhkcpgbajoejffhijaclcdg&#34;&gt;StackEdit&lt;/a&gt; Chrome extension&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chrome.google.com/webstore/detail/sharebrain/bhndbblbcbjefjknokhbonfhpjbgllfk&#34;&gt;ShareBrain&lt;/a&gt; Chrome extension&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.memofon.com&#34;&gt;Memofon&lt;/a&gt; Online; Write markdown and get a mindmap&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackedit.io/&#34;&gt;StackEdit&lt;/a&gt; Open source &amp;amp; Online&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://dillinger.io/&#34;&gt;Dillinger.io&lt;/a&gt; Open source &amp;amp; Online&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://markable.in/&#34;&gt;markable&lt;/a&gt; Online &amp;amp; you need an account&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://georgeosddev.github.io/markdown-edit/&#34;&gt;Markdown Edit&lt;/a&gt; Open source &amp;amp; online&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://marxi.co/&#34;&gt;Marxico&lt;/a&gt; Online, Chrome App, Windows Client, Mac Client, Stores docs in Evernote&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you know a good one, just post it in the comments and i&amp;rsquo;ll add it.&lt;/p&gt;</content>
	</entry>
		<entry>
		<title>2d and 3d Game and Rendering Engines for Python - A Curated Collection</title>
		<link type="text/html" href="https://codeboje.de/../../2d-and-3d-game-and-rendering-engines-python/" />
		<id>https://codeboje.de/../../2d-and-3d-game-and-rendering-engines-python/</id>
		<published>2018-05-28T06:16:28+02:00</published>
		<updated>2018-05-28T06:16:28+02:00</updated>
		<content type="html">&lt;p&gt;Thanks to the nice feedback i got for &lt;a href=&#34;http://codeboje.de/2d-game-engines-python/&#34; title=&#34;2D Game Engines for Python&#34;&gt;2D Game Engines for Python&lt;/a&gt; i decided to compile a list of 2d and 3d game development possibilities with Python i found so far. It might not be complete, but i&amp;rsquo;ll maintain the list from time to time when i find new engines or get tips from you. Your feedback is generally very appreciated.&lt;/p&gt;
&lt;p&gt;Wow, I first created this list on 26th August 2008. It&amp;rsquo;s almost ten years now and still going.&lt;/p&gt;
&lt;p&gt;Last update on May 2018&lt;/p&gt;
&lt;h3 id=&#34;2d-game-and-rendering-engines&#34;&gt;2D Game and Rendering engines:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://arcade.academy/&#34;&gt;Python Arcade&lt;/a&gt; Arcade is built on top of Pyglet and OpenGL&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pygame.org&#34; title=&#34;pygame - python game development&#34;&gt;PyGame&lt;/a&gt; Python binding for sdl and more&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pyglet.org&#34; title=&#34;pyglet: a cross-platform windowing and multimedia library for Python&#34;&gt;pyglet&lt;/a&gt; 2D games with opengl. No external dependencies, besides python of course ;-) Uses OpenGL&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.farbs.org/pycap.html&#34; title=&#34;Pycap wraps the sweet sweet PopCap Game Framework in a super friendly high level python interface.&#34;&gt;Pycap&lt;/a&gt; The PopCap Game Framework for Python&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.suda-chen.biz/?page_id=9&#34;&gt;SpriteCraft&lt;/a&gt; Small game engine with python bindings&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://ika.sourceforge.net&#34; title=&#34;ika&#34;&gt;ika&lt;/a&gt; RPG game engine with python scripting&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://fifengine.de&#34; title=&#34;open source 2d game development framework&#34;&gt;FIFEngine&lt;/a&gt; platform independent game engine with python scripting&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://cocos2d.org&#34; title=&#34;cocos2d is a framework for building 2D games, demos, and other graphical/interactive applications.&#34;&gt;cocos2d&lt;/a&gt; framework for 2d game and graphical/interactive applications; uses pyglet&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://scirra.com/&#34; title=&#34;Construct&#34;&gt;Construct&lt;/a&gt; Gamebuilder like tool which supports Scripting in python, uses directx - windows only&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.marishco.com/&#34; title=&#34;marishco&#34;&gt;marishco&lt;/a&gt; A 2D casual game framework (DirectX &amp;amp; OpenGL).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pilas-engine.com.ar/&#34; title=&#34;Pilas game engine&#34;&gt;Pilas&lt;/a&gt; full game engine based on pygame; with editor gui (spanish only docs)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kivy.org&#34;&gt;kivy&lt;/a&gt; UI lib for creating apps and games, supports 2d and 3d, apps run on Linux, Windows, OS X, Android and iOS, MIT&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tile-and-sprite-engines-for-pygame-and-pyglet&#34;&gt;Tile and Sprite engines for Pygame and pyglet&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pygame.org/project/108/&#34; title=&#34;PGU - Phil&#39;s pyGame Utilities&#34;&gt;PGU - Phil&amp;rsquo;s pyGame Utilities&lt;/a&gt; supports isometric and hex too&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pygame.org/project/511/&#34; title=&#34;Waldi Tile Engine&#34;&gt;Waldi Tile Engine&lt;/a&gt; simple tile engines with sprite support (incl. animation) and collision detection. stores map in xml&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://matthewmarshall.org/projects/rabbyt/&#34; title=&#34;Rabbyt: a fast sprite library for Python&#34;&gt;Rabbyt&lt;/a&gt; fast sprite engine, can use either pygame or pyglet&lt;/li&gt;
&lt;li&gt;Spryte is a sprite enigne for pyglet and can be found in their svn&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3d-game-and-rendering-engines&#34;&gt;3D Game and Rendering engines&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://pyopengl.sourceforge.net/&#34; title=&#34;PyOpenGL&#34;&gt;PyOpenGL&lt;/a&gt; pure binding to opengl&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://python-ogre.org/&#34; title=&#34;Ogre 3D graphics for python&#34;&gt;Python-Ogre&lt;/a&gt; Ogre 3D for python, supports various libs like ODE too&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://panda3d.org/&#34; title=&#34;Panda3D&#34;&gt;Panda3D&lt;/a&gt; full game engine in C++ with python integration&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://opensvn.csie.org/traccgi/pyrr&#34; title=&#34;Pyrr - Python irrlicht binding&#34;&gt;Pyrr&lt;/a&gt; binding to the irrlicht engine&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://wiki.blender.org/index.php/BSoD/Introduction_to_the_Game_Engine&#34; title=&#34;Blender Game Engine&#34;&gt;Blender Game Engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://home.gna.org/oomadness/en/soya/&#34; title=&#34;Soya 3D&#34;&gt;Soya 3D&lt;/a&gt; object oriented &amp;ldquo;high level&amp;rdquo; 3D engine for Python&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.delta3d.org&#34; title=&#34;Delta3D&#34;&gt;Delta3D&lt;/a&gt; Open Source Game and Simulation engine with python scripting&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.crystalspace3d.org/main/PyCrystal&#34; title=&#34;PyCrystal&#34;&gt;PyCrystal&lt;/a&gt; binding for Crystal Space&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.sylphis3d.com/&#34; title=&#34;Sylphis3D&#34;&gt;Sylphis3D&lt;/a&gt; commercial game engine with &lt;a href=&#34;http://devnet.sylphis3d.com/&#34; title=&#34;Sylphis3D devnet&#34;&gt;GPL version available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pyglet.org&#34; title=&#34;pyglet: a cross-platform windowing and multimedia library for Python&#34;&gt;pyglet&lt;/a&gt; Uses OpenGL and can therefor do 3D too&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://scirra.com/&#34; title=&#34;Construct&#34;&gt;Construct&lt;/a&gt; Gamebuilder like tool which supports Scripting in python, uses directx - windows only&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pysoy.org/&#34; title=&#34;PySoy 3D game engine&#34;&gt;PySoy&lt;/a&gt; 3D game engine based on C/python. AGPLv3&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://sourceforge.net/projects/trenchcube/&#34; title=&#34;Eden&#34;&gt;Eden&lt;/a&gt; Eden is a high-level wrapper and extender for the Panda 3D rendering engine. BSD/LGPL&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kivy.org&#34;&gt;kivy&lt;/a&gt; UI lib for creating apps and games, supports 2d and 3d, apps run on Linux, Windows, OS X, Android and iOS, MIT&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jr-garcia/Engendro3D&#34;&gt;Engendro3D&lt;/a&gt; OpenGL 3D Game Engine for Python, LGPL and Work in Progress&lt;/li&gt;
&lt;/ul&gt;</content>
	</entry>
		<entry>
		<title>Review: Python Hunting Book</title>
		<link type="text/html" href="https://codeboje.de/../../review-python-hunting-book/" />
		<id>https://codeboje.de/../../review-python-hunting-book/</id>
		<published>2017-07-28T21:10:13+02:00</published>
		<updated>2017-07-28T21:10:13+02:00</updated>
		<content type="html">&lt;p&gt;I recently stumbled up on a book about game programming with PyGame for beginners. Even I am not the target audience it did catch my attention and my desire to play a bit again with game development and Python. And I had a fantastic time so far :-)&lt;/p&gt;
&lt;p&gt;TLDR: I think it is a great book for learning python and game development at the same time. The author duo does a great job in explaining the concepts involved and at the right time and pace.&lt;/p&gt;
&lt;p&gt;Disclaimer: I got a review copy for free. However, it was at my request, and my opinion is still my own.&lt;/p&gt;
&lt;h2 id=&#34;python-hunting-a-beginners-guide-to-programming-and-game-building-in-python-for-teens-tweens-and-newbies&#34;&gt;Python Hunting: A beginner&amp;rsquo;s guide to programming and game building in Python for teens, tweens and newbies.&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.amazon.com/Python-Hunting-beginners-programming-building/dp/1535196955/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1501269385&amp;amp;sr=8-1&amp;amp;keywords=python+hunting&amp;amp;linkCode=ll1&amp;amp;tag=cb2017-20&amp;amp;linkId=498a9372ccd1b005fc703da6f6accbad&#34;&gt;&lt;img alt=&#34;python hunting cover&#34; class=&#34;scale-with-grid&#34; src=&#34;https://images-na.ssl-images-amazon.com/images/I/41ZeB9m--wL._SX385_BO1,204,203,200_.jpg&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.amazon.com/Python-Hunting-beginners-programming-building/dp/1535196955/ref=as_li_ss_tl?ie=UTF8&amp;amp;qid=1501269385&amp;amp;sr=8-1&amp;amp;keywords=python+hunting&amp;amp;linkCode=ll1&amp;amp;tag=cb2017-20&amp;amp;linkId=498a9372ccd1b005fc703da6f6accbad&#34;&gt;Link to Amazon&lt;/a&gt;*&lt;/p&gt;
&lt;h2 id=&#34;this-is-for-you&#34;&gt;This is for you?&lt;/h2&gt;
&lt;p&gt;If you have never programmed before but are curious about developing your first simple games or learning Python. It&amp;rsquo;s written in a conversational style with younger folks as the readers; nonetheless, it&amp;rsquo;s even a good fit for the older (like me :-)).&lt;/p&gt;
&lt;h2 id=&#34;what-will-you-learn&#34;&gt;What will you learn?&lt;/h2&gt;
&lt;p&gt;You will start with building an animated scene of falling rain, adding a cloud and a guy with his umbrella.&lt;/p&gt;
&lt;iframe width=&#34;640&#34; height=&#34;360&#34; src=&#34;https://www.youtube-nocookie.com/embed/udAovN7ZIw4?rel=0&amp;amp;showinfo=0&#34; frameborder=&#34;0&#34; allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Shortly after, this is turned into a space invaders game.&lt;/p&gt;
&lt;iframe width=&#34;640&#34; height=&#34;360&#34; src=&#34;https://www.youtube-nocookie.com/embed/6o5L-GXo7xM?rel=0&amp;amp;showinfo=0&#34; frameborder=&#34;0&#34; allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;You&amp;rsquo;ll then develop pong, a fly catching game and last but not least a tank game. Along with developing the games step by step you&amp;rsquo;ll learn how Python works, what variables are, tuples, list and all the other stuff you need to know for developing these games. They&amp;rsquo;ll also cover some simple math; fear not, it is simple and with good explanations.&lt;/p&gt;
&lt;p&gt;Which leads me to the biggest benefit this book has. It&amp;rsquo;s way of explaining things. It&amp;rsquo;s clear, concise, with a good pace, and just in time, so you never feel overwhelmed. &lt;/p&gt;
&lt;p&gt;On the game developing side, you learn the concept of a game loop, animation, moving stuff around, collision detection and a bit more.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I love this book, and it was a fun time for me to write the first two games and I&amp;rsquo;ll definitely finish the others too. Sure, as an experienced developer I am not the target audience, but I have fun nonetheless. &lt;/p&gt;
&lt;p&gt;The explanation and teaching are great, and I recommend it to anyone interested in learning Python and/or games.&lt;/p&gt;</content>
	</entry>
		<entry>
		<title>This Problem with PySide, Py2App and Brew drove me Nuts</title>
		<link type="text/html" href="https://codeboje.de/../../pyside-crash-mac/" />
		<id>https://codeboje.de/../../pyside-crash-mac/</id>
		<published>2017-05-23T15:33:05+02:00</published>
		<updated>2017-05-23T15:33:05+02:00</updated>
		<content type="html">&lt;p&gt;I build several desktop applications using PySide. It works like a charm on Windows. However, I found a nasty bug in the Mac version which I could not reproduce on my local machine. This one drove me nuts. It was hard to analyze, I own just one Mac and do not have access to another machine. Luckily, with the help of some very long googling (guessing symptoms) and the help of a user of one of my applications, I could fix the issue. As a reminder for myself and help for you, I document it.&lt;/p&gt;
&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;p&gt;I build the application using PySide, Py2App and Python 3 on a Mac using a virtualenv. I used Brew for installing PySide and Python, and PySide was also installed inside my virutaenv.&lt;/p&gt;
&lt;p&gt;The application builds and runs fine on my machine.&lt;/p&gt;
&lt;p&gt;However, on a different Mac, the application crashed without any useful traces in the system logs.&lt;/p&gt;
&lt;p&gt;My application also writes a separate log file, but this was empty. So it seemed like the application crashed before even reaching my code.&lt;/p&gt;
&lt;p&gt;After some google and adjusting my log outputs, however, I found out that it started to execute my code and then crashed when initializing PySide.&lt;/p&gt;
&lt;p&gt;First, I thought it was just a problem on this single users machine, but I got a similar bug report which gave me some hints it might be a general problem.&lt;/p&gt;
&lt;p&gt;Now, better equipped I found the culprit after some additional googling.&lt;/p&gt;
&lt;p&gt;The application could not load the QT binaries.&lt;/p&gt;
&lt;p&gt;The problem is a combination of installing PySide and with Brew and using PySide inside a virtualenv. While building the application Py2App can&amp;rsquo;t pick up the correct library path, and the generated application includes the libraries but with an incorrect path in the Mac specific descriptors.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;otool&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-L&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&amp;lt;my-app&amp;gt;/Contents/Resources/lib/python3.4/lib-dynload/PySide/QtGui.so
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;It should list the file with &lt;em&gt;@executable_path&lt;/em&gt; and not with an absolute path only valid for your machine.&lt;/p&gt;
&lt;p&gt;In my case, the binaries were referenced by absolute paths which were of course not valid on someone else machine.&lt;/p&gt;
&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;
&lt;p&gt;I do not know who exactly is causing this issue, but the following workaround did help me.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deinstall Python and PySide&lt;/li&gt;
&lt;li&gt;Deinstall Brew&lt;/li&gt;
&lt;li&gt;Install Macport&lt;/li&gt;
&lt;li&gt;Install Python and PySide with Macport&lt;/li&gt;
&lt;li&gt;PySide is installed in the main python site-packages&lt;/li&gt;
&lt;li&gt;Create a new virutalenv and let it use the main site-packages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And then continue building the application as before. This time the lib references were fine in the application.&lt;/p&gt;
&lt;p&gt;Guess what?&lt;/p&gt;
&lt;p&gt;It worked now. Yippie.&lt;/p&gt;</content>
	</entry>
		<entry>
		<title>Integrate Your Own License Generator With Paddle</title>
		<link type="text/html" href="https://codeboje.de/../../licensegenerator-paddle/" />
		<id>https://codeboje.de/../../licensegenerator-paddle/</id>
		<published>2016-12-15T12:26:00+01:00</published>
		<updated>2016-12-15T12:26:00+01:00</updated>
		<content type="html">&lt;p&gt;Paddle is a payment processor for selling things online and specially targeting software developer and their needs. They even support trial version and license activating through their SDK. Unfortunately, last year as I started to use them for my eBook Writing Software Moopato the Windows SDK was dotnet only and not suitable for a python application (They now offer a non dotnet version too). But there was another solution I am going to show you now.&lt;/p&gt;
&lt;p&gt;Paddle allows a Webhook to be called when someone buys your software and whatever response the Webhook provides will be added to mail sent to your customer. This was all I needed to run my own licensing generator.&lt;/p&gt;
&lt;p&gt;On my side of the webhook, I build a simple LicenseGenerator with Flask. But let&amp;rsquo;s start with the Paddle part.&lt;/p&gt;
&lt;h2 id=&#34;paddle-webhook&#34;&gt;Paddle WebHook&lt;/h2&gt;
&lt;p&gt;Go to the Edit your Project screen, and you will see an entry called Set Webhook URL. Click on change and the following button and your ready to set up the hook.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;product.png&#34; class=&#34;scale-with-grid&#34; src=&#34;product.png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;You will need your url, and in the next step, we will build our app responding there. You can define the request method too and add custom values to the request, like customer name, customer email address or even static ones of your own like application name and version. All predefined field are described in the &lt;a href=&#34;https://paddle.com/docs/reference-using-webhooks&#34;&gt;docs - Fulfilment Webhooks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And the most important part in setting this up the first time the &amp;ldquo;Test Webhook&amp;rdquo; Button. Clicking on it will make Paddle send you a webhook request with a dummy customer.&lt;/p&gt;
&lt;h2 id=&#34;licensegenerator&#34;&gt;LicenseGenerator&lt;/h2&gt;
&lt;p&gt;When using an HTTP Post for the Webhhok, Paddle will send a form-encoded request. They also build a hash code of all field values and your secret API key (Displayed on the Webhook site) and send this hash value with the message in the field &lt;em&gt;msg_id&lt;/em&gt;. You should build that hash value too and check if the request is a valid one from Paddle.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;webhook.png&#34; class=&#34;scale-with-grid&#34; src=&#34;webhook.png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;The code is pretty straight forward. We create a simple Flask app with only one endpoint. We extract the form values we get, validate the message and if it seems to be from Paddle , we build our license key. How to implement that is up to you and your need. My version just generates the key and returns it, but you could also add it to a database or add the user to a mailing list. Your imagination is the limit.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;flask&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Flask&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;abort&lt;/span&gt;
&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;moopato.editor.license&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build_license_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_license&lt;/span&gt;
&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;hashlib&lt;/span&gt;
&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;urllib&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;api_secret&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;your API secret&amp;#39;&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;app&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Flask&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;application&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;


&lt;span class=&#34;nd&#34;&gt;@app&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;route&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;/register_license&amp;quot;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;methods&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;POST&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;GET&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_license&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;form&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;customer_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;customer_name&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;customer_email&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;customer_email&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;

    &lt;span class=&#34;c1&#34;&gt;# private fields omitted&lt;/span&gt;

    &lt;span class=&#34;n&#34;&gt;msg_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;msg_id&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;

    &lt;span class=&#34;c1&#34;&gt;# Build msg hash&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hashlib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;md5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;urllib&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;quote&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;customer_email&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_secret&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

    &lt;span class=&#34;c1&#34;&gt;#Check if codes are equal&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hexdigest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;msg_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;your license key generation here&amp;quot;&lt;/span&gt;

    &lt;span class=&#34;n&#34;&gt;abort&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;403&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content>
	</entry>
	</feed>