<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AYAB Knitting</title>
    <description>The goal of the AYAB project is to provide an alternative way to control the famous Brother KH-9xx range of knitting machines using a computer</description>
    <link>http://www.ayab-knitting.com/</link>
    <atom:link href="http://www.ayab-knitting.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 13 Apr 2025 17:46:09 +0000</pubDate>
    <lastBuildDate>Sun, 13 Apr 2025 17:46:09 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>AYAB 1.0 is finally here!</title>
        <description>&lt;h1 id=&quot;ayab-10-is-finally-here&quot;&gt;AYAB 1.0 is finally here!&lt;/h1&gt;

&lt;p&gt;Our last release, 0.95, in 2019, has served the community well but now we’re back with bug fixes and some exciting new functionality.&lt;/p&gt;

&lt;p&gt;The new software is available &lt;a href=&quot;https://github.com/AllYarnsAreBeautiful/ayab-desktop/releases/latest&quot;&gt;here&lt;/a&gt;. Please go check it out and then head over to the &lt;a href=&quot;http://manual.ayab-knitting.com/1.0&quot;&gt;manual&lt;/a&gt; to get started. Note that you will have to &lt;a href=&quot;https://manual.ayab-knitting.com/1.0/installation/firmware/&quot;&gt;flash the new firmware&lt;/a&gt; to the latest 1.0 version and select your machine version in the Preferences dialog.&lt;/p&gt;

&lt;p&gt;The new software works with the existing hardware so the shield or interface that you already have should still work but if you’re using an Arduino Mega, you’ll have to migrate to an UNO R3.&lt;/p&gt;

&lt;h2 id=&quot;new-features&quot;&gt;New features:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;A preview pane of the needles your machine is selecting&lt;/li&gt;
  &lt;li&gt;The 2 second startup delay has been removed&lt;/li&gt;
  &lt;li&gt;Garter carriage support&lt;/li&gt;
  &lt;li&gt;Brother KH-270 support&lt;/li&gt;
  &lt;li&gt;Software no longer automatically flips images horizontally&lt;/li&gt;
  &lt;li&gt;A Linux Appimage is now available so users don’t have to build from source&lt;/li&gt;
  &lt;li&gt;Translations for various languages available&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;bugs-fixed-in-this-release&quot;&gt;Bugs fixed in this release:&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Desktop software installs correctly on Mac&lt;/li&gt;
  &lt;li&gt;Knitting can start on the right on most machines (excluding KH-910 and KH-950)&lt;/li&gt;
  &lt;li&gt;Lace carriage patterning issues have been fixed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run into any issues or need help getting started, come let us know in the &lt;a href=&quot;https://discord.gg/qZgzj3k2EJ&quot;&gt;#help-threads on our Discord server&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;AYAB is open source and maintained by a small army of volunteers located all over the world. All of our code, design files, and documentation is available on &lt;a href=&quot;https://github.com/AllYarnsAreBeautiful&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to contribute, come introduce yourself on &lt;a href=&quot;https://discord.gg/qZgzj3k2EJ&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We’d like to say a big thank you to all of the contributors who have made this release possible and the users who have reported bugs and discussed solutions. Without all of y’all, AYAB wouldn’t be possible.&lt;/p&gt;

&lt;hr /&gt;
</description>
        <pubDate>Mon, 10 Mar 2025 17:15:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/2025/03/10/AYAB-1.0-is-finally-here/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/2025/03/10/AYAB-1.0-is-finally-here/</guid>
        
        
      </item>
    
      <item>
        <title>AYAB v0.95 and plans for 2019</title>
        <description>&lt;p&gt;&lt;em&gt;Deutsche Version unten.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Dear AYAB Users,&lt;/p&gt;

&lt;p&gt;again, you had to wait a long time for a new version. Sorry for that.&lt;/p&gt;

&lt;p&gt;We were continuously in touch with the community and many people gave us feedback 
on the various channels.
Also, users posted issues and even contributions to our project on Github.
Thank you for all of this, we hope you still like the software!&lt;br /&gt;
We know that many of you are waiting for Garter Carriage support. We did quite some progress with that topic, but we’re definitely not done with it yet. Another topic (fixing the issues with the Mac version) demanded our full attention, so we had to put the Garter Carriage on hold for this version.&lt;/p&gt;

&lt;p&gt;Our New Years’ resolution is to make at least another release in 2019, with
major improvements in various parts of the software. Also, KG and KH-270 support are still on the roadmap. We can’t promise, so let’s 
hope for the best. Everybody who knows some Python programming is invited to 
support us and join development.&lt;/p&gt;

&lt;p&gt;Another resolution is to improve documentation, and for this reason we created 
the &lt;a href=&quot;https://github.com/AllYarnsAreBeautiful/ayab-manual&quot;&gt;ayab-manual repository on Github&lt;/a&gt;.
It’s intended to be a manual for the users on how to set the machine up, do their 
first knittings with AYAB, and do more sophisticated projects e.g. with DBJ.
Please feel free to contribute in this part of the project, especially for the 
knitting instructions.
It’s written/formatted with Markdown, and we plan to also ship an offline version of it with each upcoming release of the software.&lt;br /&gt;
The manual can be found at &lt;a href=&quot;https://manual.ayab-knitting.com&quot;&gt;manual.ayab-knitting.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, we are planning to support of multiple languages of the software. Currently, 
the only foreign language which is included is a not-so-up-to-date version of German.
We’ll provide instructions on how to contribute a translation for a new language, 
so hopefully we’ll have some more languages in the next releases.
Same is for the homepage, we’ll take measures to enable translations for it.&lt;/p&gt;

&lt;p&gt;Ok, enough on what we plan to do, here is the list of changes for the new release:&lt;/p&gt;

&lt;h3 id=&quot;firmware-arduino&quot;&gt;Firmware (Arduino)&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Reduced carriage turn around time (#246)&lt;/li&gt;
  &lt;li&gt;Allowing some backwards carriage movement without advancing to the next row (#244)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;gui&quot;&gt;GUI&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Fixing macOS installation (at least macOS 10.12 (Sierra) is required to run AYAB) (#253)&lt;/li&gt;
  &lt;li&gt;Patterns with an odd number of stitches get centered on green 1 (#245)&lt;/li&gt;
  &lt;li&gt;Fixed lace patterns: 8-29, 8-30, 8-31, 9-32, 10-33, 10-34, 10-35, 10-36 (#249)&lt;/li&gt;
  &lt;li&gt;Writing date and time to the log (#259)&lt;/li&gt;
  &lt;li&gt;Added Middle-Color-Twice Ribber mode (see &lt;a href=&quot;https://manual.ayab-knitting.com&quot;&gt;AYAB Manual&lt;/a&gt;) (#239)&lt;/li&gt;
  &lt;li&gt;Added Heart of Pluto Ribber mode (see &lt;a href=&quot;https://manual.ayab-knitting.com&quot;&gt;AYAB Manual&lt;/a&gt;)(#271)&lt;/li&gt;
  &lt;li&gt;Showing number of completed repeats in GUI (#248)&lt;/li&gt;
  &lt;li&gt;Showing current color in GUI (#226)&lt;/li&gt;
  &lt;li&gt;Fixing crash when pattern is outside left edge (#280)&lt;/li&gt;
  &lt;li&gt;Displaying row number larger (#225)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;known-issues&quot;&gt;Known Issues&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;macOS: the “Knit” button remains grey (but is usable) (#282)&lt;/li&gt;
  &lt;li&gt;Windows: Occasional crashes after clicking “configure” (#283)&lt;/li&gt;
  &lt;li&gt;Windows: Installation of v0.95 into a folder containing v0.9 files leads to a
broken installation (#288)&lt;/li&gt;
  &lt;li&gt;Windows: Uninstalling the AYAB removes everything contained in the program 
folder (e.g. custom pattern files and the log file) (#287)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;important-notes&quot;&gt;Important Notes:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;The Windows version works on Windows 10 and Windows 7&lt;/li&gt;
  &lt;li&gt;The macOS version requires at least 10.12 (Sierra).&lt;/li&gt;
  &lt;li&gt;There is a new Arduino Firmware version (v0.95). Please flash it to the Arduino before knitting with the new GUI version!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A big thanks goes out to the many helping hands which contributed to this version directly and indirectly, especially to duncan-d and Adrienne for the two new DBJ modes!&lt;/p&gt;

&lt;p&gt;As always:
&lt;strong&gt;Have fun with the new version!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your AYAB Team&lt;/strong&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Liebe AYAB UserInnen,&lt;/p&gt;

&lt;p&gt;ihr musstet wieder ziemlich lange auf eine neue Version warten, sorry dafür.&lt;/p&gt;

&lt;p&gt;Wir waren durchgehend mit der Community in Kontakt und viele Leute haben uns Rückmeldungen gegeben. Außerdem haben uns  einige Fehlermeldungen, Verbesserungswünsche und sogar Softwareverbesserungen auf Github erreicht.
Vielen Dank für all das, wir hoffen ihr hattet weiterhin Spaß mit der Software!
Wir wissen, dass einige auf die Unterstützung des Garter Carriage (KG) warten. Wir haben einige Fortschritte damit gemacht, aber es ist leider nocht nicht fertig. Die Behebung der Probleme mit der Mac Version war wichtiger, deshalb musste der KG für diese Version leider zurückgestellt werden.&lt;/p&gt;

&lt;p&gt;Unser Vorsatz für das neue Jahr ist, mindestens noch eine weitere Version der Sofware zu machen.
Diese weiteren Versionen sollen dann grundsätzliche Verbesserungen in weiten Teilen der Software beinhalten. 
Auch sind zum Beispiel noch die Unterstützung von KG-Schlitten und dem Modell KH-270 auf unserem Plan.
Wir können wie immer nichts versprechen, hoffen aber das Beste.
Wer sich ein bisschen mit Python auskennt, ist herzlich eingeladen uns dabei zu unterstützen.&lt;/p&gt;

&lt;p&gt;Ein weiterer Vorsatz ist die Dokumentation der Software zu verbessern. Für diesen Zweck haben wir das &lt;a href=&quot;https://github.com/AllYarnsAreBeautiful/ayab-manual&quot;&gt;ayab-manual Repository auf Github&lt;/a&gt; erstellt. Es ist dafür vorgesehen, ein Benutzerhandbuch mit für die ersten Schritte, aber auch für fortgeschrittene Techniken wie DBJ zu werden. Auch dafür brauchen wir viele helfende Hände. Es ist in Markdown formatiert und wir wollen auch eine offline Version mit den nächsten Releases mitliefern.&lt;br /&gt;
Das Manual ist unter &lt;a href=&quot;https://manual.ayab-knitting.com&quot;&gt;manual.ayab-knitting.com&lt;/a&gt; erreichbar.&lt;/p&gt;

&lt;p&gt;Außerdem wollen wir die Software mehrsprachig gestalten. 
Aktuell gibt es nur eine deutsche/denglische Version (die nicht auf dem letzten Stand ist).
Wir werden eine Anleitung erstellen wie man bei der Übersetzung mithelfen kann, und hoffen bald noch weitere Sprachen anbieten zu können.
Das selbe gilt für die Homepage, auch dort wollen wir weitere Sprachen anbieten können.&lt;/p&gt;

&lt;p&gt;Ok genug über unsere Vorsätze, hier die Liste der Änderungen für die neue Version:&lt;/p&gt;

&lt;h3 id=&quot;firmware-arduino-1&quot;&gt;Firmware (Arduino)&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Umkehrzeit am Ende einer Reihe reduziert (#246)&lt;/li&gt;
  &lt;li&gt;Erlauben von etwas Rückwärtsbewegung des Schlittens ohne in die nächste Reihe zu springen(#244)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;gui-1&quot;&gt;GUI&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;macOS Installation repariert (#253)&lt;/li&gt;
  &lt;li&gt;Muster mit ungerader Breite werden an Nadel Grün 1 zentriert (#245)&lt;/li&gt;
  &lt;li&gt;Folgende Lochmuster korrigiert: 8-29, 8-30, 8-31, 9-32, 10-33, 10-34, 10-35, 10-36 (#249)&lt;/li&gt;
  &lt;li&gt;Datum und Uhrzeit werden in die Logdatei geschrieben (#259)&lt;/li&gt;
  &lt;li&gt;Middle-Color-Twice DBJ Modus hinzugefügt (siehe &lt;a href=&quot;https://manual.ayab-knitting.com&quot;&gt;AYAB Manual&lt;/a&gt;) (#239)&lt;/li&gt;
  &lt;li&gt;Heart of Pluto DBJ Modus hinzugefügt (siehe &lt;a href=&quot;https://manual.ayab-knitting.com&quot;&gt;AYAB Manual&lt;/a&gt;)(#271)&lt;/li&gt;
  &lt;li&gt;Anzahl der kompletten Musterwiederholungen im Endlosmodus wird angezeigt (#248)&lt;/li&gt;
  &lt;li&gt;Aktuelle Farbe wird angezeigt (#226)&lt;/li&gt;
  &lt;li&gt;Behebung von Abstürzen wenn das Muster links herausragt (#280)&lt;/li&gt;
  &lt;li&gt;Größere Darstellung der aktuellen Reihe (#225)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;bekannte-fehler&quot;&gt;Bekannte Fehler&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;macOS: the “Knit” button remains grey (but is usable) (#282)&lt;/li&gt;
  &lt;li&gt;Windows: Occasional crashes after clicking “configure” (#283)&lt;/li&gt;
  &lt;li&gt;Windows: Installation of v0.95 into a folder containing v0.9 files leads to a
broken installation (#288)&lt;/li&gt;
  &lt;li&gt;Windows: Uninstalling the AYAB removes everything contained in the program 
folder (e.g. custom pattern files and the log file) (#287)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;wichtige-hinweise&quot;&gt;Wichtige Hinweise&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Die Windows Version funktioniert auf Windows 10 und Windows 7.&lt;/li&gt;
  &lt;li&gt;Für die macOS Version wird mindestens 10.12 (Sierra) benötigt.&lt;/li&gt;
  &lt;li&gt;Es gibt eine neue Arduino Firmware (v0.95). Bitte spielt diese auf euren Arduino bevor ihr strickt!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ein großer Dank geht an die vielen HelferInnen die an dieser Version direkt und indirekt mitgewirkt haben, insbesondere an duncan-d und Adrienne für die beiden neuen DBJ Modi!&lt;/p&gt;

&lt;p&gt;Wir wünschen viel Spaß mit der neuen Version!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Viele Grüße,
euer AYAB Team&lt;/strong&gt;&lt;/p&gt;

&lt;hr /&gt;
</description>
        <pubDate>Wed, 30 Jan 2019 19:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/2019/01/30/AYAB-v0.95/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/2019/01/30/AYAB-v0.95/</guid>
        
        
      </item>
    
      <item>
        <title>AYAB v0.9</title>
        <description>&lt;p&gt;&lt;em&gt;Deutsche Version unten.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Dear AYAB Users,&lt;/p&gt;

&lt;p&gt;after over 2.5 years there is finally a new version of the AYAB software!&lt;/p&gt;

&lt;p&gt;It’s a bugfix-release, that means it fixes mostly known issues and no additional features are introduced.
This is necessary to get more stability in the software and to have solid foundation for future developments.&lt;/p&gt;

&lt;p&gt;We’re still trying to improve the documentation, feel free to contribute!&lt;/p&gt;

&lt;p&gt;Here’s the list of changes:&lt;/p&gt;

&lt;h3 id=&quot;firmware-arduino&quot;&gt;Firmware (Arduino)&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;New end beep&lt;/li&gt;
  &lt;li&gt;Fixing accidential double selection of last row (in every knitting mode)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;gui&quot;&gt;GUI&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;OSX App Bundle&lt;/li&gt;
  &lt;li&gt;Added KH910 and custom patterns&lt;/li&gt;
  &lt;li&gt;Automatically maximising window on startup&lt;/li&gt;
  &lt;li&gt;Changing filename of logfile to ayab_log.txt&lt;/li&gt;
  &lt;li&gt;Showing filename in statusbar&lt;/li&gt;
  &lt;li&gt;Removed progress bar&lt;/li&gt;
  &lt;li&gt;Making user notification when using incompatible firmware more verbose&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;fixes&quot;&gt;Fixes&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;check for valid number of colors in single and circular mode&lt;/li&gt;
  &lt;li&gt;improved image file dialogue&lt;/li&gt;
  &lt;li&gt;fix ABBA pattern in 2 color ribber infinite mode&lt;/li&gt;
  &lt;li&gt;fixing circular knitting&lt;/li&gt;
  &lt;li&gt;handling spaces in file paths&lt;/li&gt;
  &lt;li&gt;fixing multicolor ribber knitting&lt;/li&gt;
  &lt;li&gt;fixing start row in ribber infinite knitting&lt;/li&gt;
  &lt;li&gt;fixing image rotation&lt;/li&gt;
  &lt;li&gt;fix automatic setting of start/stop needle for odd image widths&lt;/li&gt;
  &lt;li&gt;fixing start line spinbox range&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;important-notes&quot;&gt;Important Notes:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;The installation under Windows happens now with a setup, that means it can be installed and uninstalled like any other program. No manual copying from the zip file is necessary anymore.&lt;/li&gt;
  &lt;li&gt;The installation under Mac OSX may take a long time. Please be patient and do not cancel the installation.&lt;/li&gt;
  &lt;li&gt;There is a new Arduino Firmware version (v0.9). Please flash it to the Arduino before knitting the first time!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A big thanks goes out to the many helping hands which contributed to this version directly and indirectly:
Adrienne, Kirstin, Nico, derChris, Windell, andz, chris and the many users in the various forums and 
communities who supplied us with bug reports and feature requests.&lt;/p&gt;

&lt;p&gt;For the upcoming version, we will work on new features, such as KH-270 support and vertical rapport repetition.
If you want to contribute, feel free to contact us!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have fun with the new version!&lt;/strong&gt;
&lt;a href=&quot;/ayab-software/&quot;&gt;Get it here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your AYAB Team&lt;/strong&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Liebe AYAB User,&lt;/p&gt;

&lt;p&gt;nach über 2.5 Jahren gibt es nun endlich wieder eine neue Version der AYAB Software!&lt;/p&gt;

&lt;p&gt;Es handelt sich um ein Bugfix-Release, d.h. es werden hauptsächlich Fehler behoben 
und keine neuen Funktionen eingeführt. Dafür ist hinter den Kulissen einiges geschehen und verbessert worden.
Dies ist nötig um etwas mehr Stabilität in die Software zu bringen und somit eine solide 
Basis für Weiterentwicklungen zu schaffen.&lt;/p&gt;

&lt;p&gt;Wir versuchen weiterhin, die Dokumentation zu verbessern - tragt gerne dazu bei!&lt;/p&gt;

&lt;p&gt;Hier die Liste der eingeflossenen Änderungen:&lt;/p&gt;

&lt;h3 id=&quot;firmware-arduino-1&quot;&gt;Firmware (Arduino)&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Neuer Piepton bei Ende des Musters&lt;/li&gt;
  &lt;li&gt;Fehlerhafte zweifache Selektion beim Ende des Musters behoben (in jedem Strickmodus)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;oberfläche-gui&quot;&gt;Oberfläche (GUI)&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Verbesserte Mac OSX Unterstützung&lt;/li&gt;
  &lt;li&gt;Original KH-910 Muster hinzugefügt&lt;/li&gt;
  &lt;li&gt;Fenster wird beim Start automatisch maximiert&lt;/li&gt;
  &lt;li&gt;Name der Logdatei in ayab_log.txt geändert&lt;/li&gt;
  &lt;li&gt;Dateiname wird in der Statusleiste angezeigt&lt;/li&gt;
  &lt;li&gt;Fortschrittsleiste entfernt&lt;/li&gt;
  &lt;li&gt;Meldung bei inkompatibler Arduino-Firmware Version verständlicher&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;behobene-fehler&quot;&gt;Behobene Fehler&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Überprüfung auf erlaubte Anzahl der Farben in Einzelbett und Circular Modus&lt;/li&gt;
  &lt;li&gt;Verbesserter “Datei öffnen” Dialog&lt;/li&gt;
  &lt;li&gt;2-Farben Doppelbett-Endlosmodus repariert&lt;/li&gt;
  &lt;li&gt;Circular Modus repariert&lt;/li&gt;
  &lt;li&gt;Leerzeichen in Pfaden und Dateinamen erlaubt&lt;/li&gt;
  &lt;li&gt;Mehrfarb Doppelbett repariert&lt;/li&gt;
  &lt;li&gt;Startzeile in Doppelbett Endlosmodus repariert&lt;/li&gt;
  &lt;li&gt;Bild rotieren repariert&lt;/li&gt;
  &lt;li&gt;Automatisches setzen der Start-Stopp Nadeln bei ungeraden Bildbreiten repariert&lt;/li&gt;
  &lt;li&gt;Startzeilenbereichsauswahl repariert&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;wichtige-hinweise&quot;&gt;Wichtige Hinweise:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Die Installation unter Windows geschieht nun mit einem Setup, d.h. die Software kann nun wie von anderen Programmen gewohnt installiert und deinstalliert werden. Kein manuelles kopieren der Dateien mehr nötig.&lt;/li&gt;
  &lt;li&gt;Die Installation unter Mac OSX kann unter Umständen sehr lange dauern. Bitte Geduld haben und nicht vorschnell abbrechen!&lt;/li&gt;
  &lt;li&gt;Es gibt eine neue Arduino Firmware (v0.9). Bitte spielt diese auf euren Arduino bevor ihr strickt!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ein großer Dank geht an die vielen Helfer die an dieser Version direkt und indirekt mitgewirkt haben:
Adrienne, Kirstin, Nico, derChris, Windell, andz, chris und die vielen User in den diversen 
Foren und Communities die uns mit Fehlermeldungen und Verbesserungsvorschlägen versorgen.&lt;/p&gt;

&lt;p&gt;Sofern mit dieser Version alles in Ordnung ist machen wir uns über den Winter hinweg an ein paar neue 
Funktionen wie KH-270 Unterstützung, vertikaler Musterwiederholung etc.
Mithilfe bei der Entwicklung ist immer gerne gesehen!&lt;/p&gt;

&lt;p&gt;Wir wünschen viel Spaß mit der neuen Version!
Feedback und Fehlermeldungen können über die gewohnten Wege gemeldet werden.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/ayab-software/&quot;&gt;Hier geht’s zur neuen Version&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Viele Grüße,
euer AYAB Team&lt;/strong&gt;&lt;/p&gt;

&lt;hr /&gt;
</description>
        <pubDate>Sat, 02 Sep 2017 12:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/2017/09/02/AYAB-v0.90/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/2017/09/02/AYAB-v0.90/</guid>
        
        
      </item>
    
      <item>
        <title>Introducing the AYAB Interface</title>
        <description>&lt;h3 id=&quot;deutsche-version-unterhalb-der-englischen&quot;&gt;Deutsche Version unterhalb der englischen.&lt;/h3&gt;

&lt;p&gt;Dear AYAB Users,&lt;/p&gt;

&lt;p&gt;After a long break, we now have great news for you.&lt;/p&gt;

&lt;p&gt;Thanks to OpenSource hardware, the AYAB-Shield was adapted and further developed by the well-known &lt;a href=&quot;http://www.evilmadscientist.com/&quot;&gt;Evil Mad Scientist Laboratories&lt;/a&gt; in the USA. This has resulted in the new AYAB-Interface.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/ayab_interface.jpg&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The AYAB-Interface has some new features compared to the AYAB-Shield:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Integrated controller - NO Arduino is needed anymore&lt;/li&gt;
  &lt;li&gt;External plug-in power supply for the machine supply - This also allows machines with defective capacitor / power supply or Japanese 110V machines to be used without modifications.&lt;/li&gt;
  &lt;li&gt;Flat design - The flat design allows the Interface to be fully integrated into the machine without milling holes in the housing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition, a stable metal cover can be ordered from the beginning of 2017.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/housing.jpg&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This gives the construction a high value and has less “basic character”.&lt;/p&gt;

&lt;p&gt;Of course, the AYAB interface also remains under an OpenSource license, the case will also be available for 3D printing.&lt;/p&gt;

&lt;p&gt;Furthermore, the AYAB interface is 100% software compatible with the AYAB-Shield. No software change is necessary and the functionality is the same for both versions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ATTENTION:&lt;/strong&gt; The interface can currently only be ordered directly from the USA. This means that for european users a plug-in power supply is required in addition to the possibly import turnover tax! Available e.g. at &lt;a href=&quot;https://www.amazon.de/dp/B00HVA9GPW/&quot;&gt;Amazon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition, a new section was introduced specifically for the support of the new hardware in the &lt;a href=&quot;http://forum.evilmadscientist.com/categories/ayab-all-yarns-are-beautiful&quot;&gt;EMSL-Forum&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, we will not be able to produce any further AYAB shields of the previous design. Some residual stocks are still available at shop.thinkstack.de .&lt;/p&gt;

&lt;p&gt;Otherwise, thanks to the detailed bug reports from the community, we are currently working intensively on the software version 0.9. This will have fixed some known bugs and will probably appear later this year.&lt;/p&gt;

&lt;p&gt;Best wishes,
Your AYAB team&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Liebe AYAB Benutzer,&lt;/p&gt;

&lt;p&gt;nach einer längeren Pause haben wir nun wieder großartige Neuigkeiten für euch.&lt;/p&gt;

&lt;p&gt;Dank OpenSource Hardware wurde das AYAB-Shield von dem bekannten Maker-Shop &lt;a href=&quot;http://www.evilmadscientist.com/&quot;&gt;Evil Mad Scientist Laboratories&lt;/a&gt; in den USA adaptiert und weiterentwickelt. Daraus ist das neue AYAB-Interface entstanden.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/ayab_interface.jpg&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Das AYAB-Interface hat gegenüber dem AYAB-Shield einige Neuerungen aufzuweisen:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Integrierter Controller - KEIN Arduino ist mehr zusätzlich nötig&lt;/li&gt;
  &lt;li&gt;Externes Steckernetzteil für die Maschinenversorgung - Dadurch können auch Maschinen mit defektem Kondensator/Netzteil oder Japanische 110V Maschinen ohne Umbauten verwendet werden.&lt;/li&gt;
  &lt;li&gt;Flache Bauform - Durch den flachen Aufbau kann das Interface komplett in die Maschine Integriert werden, ohne Löcher in das Gehäuse zu fräsen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zusätzlich kann ab Anfang 2017 eine stabile Abdeckung aus Metall bestellt werden. So bekommt der Aufbau eine hohe Wertigkeit und besitzt weniger “Bastelcharakter”.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/housing.jpg&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Natürlich bleibt auch das AYAB-Interface unter einer OpenSource Lizenz, ebenso wie das Gehäuse, welches auch zum 3D-Druck bereitstehen wird.&lt;/p&gt;

&lt;p&gt;Des Weiteren ist das AYAB-Interface 100% Softwarekompatibel zum AYAB-Shield. Es ist keine Softwareumstellung nötig und der Funktionsumfang ist bei beiden Varianten der Selbe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACHTUNG:&lt;/strong&gt; Das Interface kann derzeit nur aus den USA direkt bestellt werden. Das bedeuted, dass neben evtl. anfallender Einfuhrumsatzsteuer auch ein Europäisches Steckernetzteil benötigt wird! Erhältlich z.B. bei &lt;a href=&quot;https://www.amazon.de/dp/B00HVA9GPW/&quot;&gt;Amazon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desweiteren wurde speziell für den Support der neuen Hardware im &lt;a href=&quot;http://forum.evilmadscientist.com/categories/ayab-all-yarns-are-beautiful&quot;&gt;EMSL-Forum&lt;/a&gt; eine neue Rubrik eingeführt (Englisch).&lt;/p&gt;

&lt;p&gt;Wir werden leider aus Zeitgründen vorerst keine weiteren AYAB-Shields der bisheringen Bauart mehr produzieren können. Einige Restbestände sind noch unter shop.thinkstack.de erhältlich.&lt;/p&gt;

&lt;p&gt;Ansonsten wird, dank der ausführlichen Fehlerberichte aus der Community, derzeit intensiv an der Softwareversion 0.9 gearbeitet. Diese wird einige bekannte Fehler behoben haben und voraussichtlich noch dieses Jahr erscheinen.&lt;/p&gt;

&lt;p&gt;Viele Grüße,
euer AYAB Team&lt;/p&gt;

&lt;hr /&gt;

</description>
        <pubDate>Sat, 26 Nov 2016 00:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/2016/11/26/Interface/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/2016/11/26/Interface/</guid>
        
        
      </item>
    
      <item>
        <title>Google Summer of Code 2016 Blogpost 13 - Involving to the end-user</title>
        <description>&lt;p&gt;The &lt;a href=&quot;http://fossasia.github.io/kniteditor&quot;&gt;Knit Editor&lt;/a&gt; software aims to be installable and usable by end-users. In the whole summer of code, we focused on development and code documentation from the perspective of a developer. In this blog post we will discuss how the Knit Editor is presented to the end user. So, you reading this blog: Please comment with your thoughts on the sketches.&lt;/p&gt;

&lt;p&gt;Currently, a site is in the making that shall present the Knit Editor software as is state of the art. The inspiration came from the &lt;a href=&quot;https://www.youtube.com/watch?v=uKpfO331DY4&quot;&gt;talk by Tracy Osborn at PyCon 2016: “Web Design for Non Designers”&lt;/a&gt;. The site is currently in the making at &lt;a href=&quot;http://fossasia.github.io/kniteditor&quot;&gt;fossasia.github.io/kniteditor&lt;/a&gt;. If you click on the following images, you get redirected to the implementation of the concept.&lt;/p&gt;

&lt;h3 id=&quot;the-main-page&quot;&gt;The Main Page&lt;/h3&gt;

&lt;p&gt;First thing that comes into view is the download button. This leads to the download site. Then, wen can see three popular use-cases of the knit editor. At the bottom, new developers can see that they can contribute.&lt;/p&gt;

&lt;p&gt;End users are knitters of all ages. As tested with my mom, they expect the language to be at the top-right of the page.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/P1040128-1.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Both, the download and the start developing button are highlighted in a different color to make certain that they are an action the user is expected to perform.&lt;/p&gt;

&lt;p&gt;When you access the site you get automatically redirected to your browsers configured language.&lt;/p&gt;

&lt;h3 id=&quot;the-download-site&quot;&gt;The Download Site&lt;/h3&gt;

&lt;p&gt;When you click the download button on the main page, you reach the download site. Depending on the operating system information the browser sends, your download starts automatically, below, this is  sketched for Windows.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/P1040129-1.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Next to the download page, you may want to find other versions of the software or not. This is to be evaluated. Maybe a slightly less visible button is right for that or it can be left out. Usually, no-one uses the old software.&lt;/p&gt;

&lt;p&gt;At the bottom, you can see that there is a predecessor of the software which is called “AYAB-Apparat”. Some people may expect to find this software, too.&lt;/p&gt;

&lt;h3 id=&quot;the-developer-site&quot;&gt;The Developer Site&lt;/h3&gt;

&lt;p&gt;If you clicked “Start Developing” on the main page, you will be confronted with the site for development.&lt;/p&gt;

&lt;p&gt;There are two ways main flavors of contributing. Either you translate or you write program code. Therefore, we have two buttons that skip to the corresponding sections.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/P1040130-1.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At the bottom, you can see that there are tutorials on how to set up the environment for development. Videos for this can be found under this &lt;a href=&quot;https://www.youtube.com/playlist?list=PL_bQhtrnWFA8skye4GpQ2Y8kEHxLwQKHY&quot;&gt;Youtube playlist&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;

&lt;p&gt;At the end of GSoC we should document the code. Since we did documentation-driven development, there was already a focus on the developers from the start. End-user involvement fell short during the development phase. “Documentation is the way of informing people.” – this is something I learned from a &lt;a href=&quot;http://niccokunzmann.github.io/blog/2016-06-10/Documentation-Driven-Development&quot;&gt;talk&lt;/a&gt;. Thus, I create the new site for the knit editor as a documentation about the project fit for non-developers.&lt;/p&gt;

&lt;p&gt;— Nicco Kunzmann&lt;/p&gt;
</description>
        <pubDate>Tue, 23 Aug 2016 00:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/fossasia/2016/08/23/GSOC-blogpost-13/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/fossasia/2016/08/23/GSOC-blogpost-13/</guid>
        
        
        <category>FOSSASIA</category>
        
      </item>
    
      <item>
        <title>Google Summer of Code 2016 Blogpost 12 - Introducing new Developers to Your Project</title>
        <description>&lt;p&gt;You may want to introduce new developers into your project. This is either to get help or to allow the community to guide the project. In this blog post, I want to present how I believe an introduction can be designed.&lt;/p&gt;

&lt;h3 id=&quot;1-a-landing-page&quot;&gt;(1) A Landing Page&lt;/h3&gt;

&lt;p&gt;For the knitting projects, I have designed a landing page, &lt;a href=&quot;https://knitting.fossasia.org/&quot;&gt;knitting.fossasia.org&lt;/a&gt;. It features all related projects with links to documentation and source code as well as a short summary what it is about. You can read more about the landing page in this &lt;a href=&quot;http://blog.fossasia.org/new-landing-page-for-fossasia-knitting-projects/&quot;&gt;blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The idea is to to add short snippets of information that allow new developers to explore all available options to enter the projects. This may be contact information, documentation and videos.&lt;/p&gt;

&lt;h3 id=&quot;2-setup-instructions&quot;&gt;(2) Setup Instructions&lt;/h3&gt;

&lt;p&gt;Especially for the projects I worked on, I created a introduction videos on how to set up your development environment. This could have been in text form, too.&lt;/p&gt;

&lt;p&gt;The problem for new developers is often that the start takes a long time. Instead of focusing on the issue they would like to solve, it sometimes takes several hours to set up the environment with lots of possibilities to make mistakes.&lt;/p&gt;

&lt;p&gt;In order to speed up the development environment setup, you can provide additional information. The CoderDojo Zen platform has its own &lt;a href=&quot;https://github.coderdojo.com/&quot;&gt;landing page for new developers&lt;/a&gt; and a &lt;a href=&quot;https://github.com/CoderDojo/cp-local-development&quot;&gt;description of the steps&lt;/a&gt; to take to setup the development environment. In the case of the knitting projects, we have &lt;a href=&quot;https://www.youtube.com/playlist?list=PL_bQhtrnWFA8skye4GpQ2Y8kEHxLwQKHY&quot;&gt;YouTube video tutorials&lt;/a&gt; which show the necessary steps.&lt;/p&gt;

&lt;h3 id=&quot;3-introduction-events&quot;&gt;(3) Introduction Events&lt;/h3&gt;

&lt;p&gt;You can participate in events to show your projects to other people.&lt;/p&gt;

&lt;p&gt;With the knitting projects, we will participate at the Maker &lt;a href=&quot;http://maker-faire.de/berlin/&quot;&gt;Faire Berlin 2016&lt;/a&gt;.There may be local user groups where you can present the work and the learnings from them.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://codein.withgoogle.com/&quot;&gt;Google Code-In&lt;/a&gt; is an excellent opportunity to allow new young developers to add code to your projects and document them. You can apply as a mentor and add tasks. A first task for beginners may be to get the project running on their computer. Another task could then be to either use it in a special way and document it or to solve an issue which is easy enough.&lt;/p&gt;

&lt;p&gt;In the following &lt;a href=&quot;https://summerofcode.withgoogle.com/&quot;&gt;Google Summer of Code&lt;/a&gt; your project can be used again. You can apply as a mentor for your project and help other students to work on what you left behind.&lt;/p&gt;

&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;

&lt;p&gt;I listed some ways I will perform to get the projects I worked on into the community. I hope they may have been an inspiration for other people who read this. If you like to contribute new ways, you can comment ☺&lt;/p&gt;

&lt;p&gt;— Nicco Kunzmann&lt;/p&gt;
</description>
        <pubDate>Sun, 21 Aug 2016 00:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/fossasia/2016/08/21/GSOC-blogpost-12/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/fossasia/2016/08/21/GSOC-blogpost-12/</guid>
        
        
        <category>FOSSASIA</category>
        
      </item>
    
      <item>
        <title>Google Summer of Code 2016 Blogpost 11 - AYABInterface – a Python Module for the AYAB shield</title>
        <description>&lt;p&gt;In the Google Summer of Code effort on knitting machines with &lt;a href=&quot;http://ayab-knitting.com/&quot;&gt;AYAB&lt;/a&gt;, we created the &lt;a href=&quot;https://pypi.python.org/pypi/AYABInterface/0.0.7&quot;&gt;AYABInterface&lt;/a&gt; module. This module allows us to control machines like the Brother KH-910. &lt;a href=&quot;http://blog.fossasia.org/kniteditor-first-success/&quot;&gt;Click here&lt;/a&gt; to see it in action.&lt;/p&gt;

&lt;p&gt;The development process for small changes worked like this:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Talk about uncertainty in the &lt;a href=&quot;https://github.com/AllYarnsAreBeautiful/ayab-desktop/issues/17&quot;&gt;issue&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Write the &lt;a href=&quot;http://ayabinterface.readthedocs.io/en/latest/communication/index.html&quot;&gt;specification&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Write the &lt;a href=&quot;https://github.com/fossasia/AYABInterface/tree/master/AYABInterface/communication/test&quot;&gt;tests&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Write the &lt;a href=&quot;https://github.com/fossasia/AYABInterface/tree/master/AYABInterface/communication&quot;&gt;code&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Of cause these steps were mixed but the objective is clear to first specify and then let the implementation follow.&lt;/p&gt;

&lt;p&gt;From my perspective this made sure that other people can implement this protocol, too. After all, it should be specific enough now, to write source code for it.&lt;/p&gt;

&lt;p&gt;The underlying Communication relies on a byte stream to communicate. This abstracts from the serial protocol and enables us to plug in e.g. sockets if someone wants to communicate via WIFI or LAN.&lt;/p&gt;

&lt;p&gt;The communication walks through several states. They are documented in the states module. Here you can see an overview over the different states:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://pythonhosted.org/AYABInterface/_static/CommunicationStateDiagram.html&quot;&gt;
     &lt;img src=&quot;/assets/posts/CommunicationStateDiagram.png&quot; width=&quot;400&quot; /&gt;
 &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you click it, you are redirected to an interactive documentation web page where you can click the different states and messages to view their implementation.&lt;/p&gt;

&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;

&lt;p&gt;After all, communication is important, not only between the shield and the computer but also for the developers. Since the Shield is around for a while, this protocol is now documented in a way that allows us to use it also for other applications. A specification driven implementation allows us both:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;a complete specification where we know what is possible to implement&lt;/li&gt;
  &lt;li&gt;an implementation that follows the specification and as such is exchangeable and a reference for other library developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;— Nicco Kunzmann&lt;/p&gt;
</description>
        <pubDate>Fri, 12 Aug 2016 00:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/fossasia/2016/08/12/GSOC-blogpost-11/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/fossasia/2016/08/12/GSOC-blogpost-11/</guid>
        
        
        <category>FOSSASIA</category>
        
      </item>
    
      <item>
        <title>Google Summer of Code 2016 Blogpost 10 - Deploying a Kivy Application with PyInstaller for Mac OSX with Travis CI to Github</title>
        <description>&lt;p&gt;With AYAB we are working on an editor which also has the ability to control a knitting machine. Here is the progress we made: one can control the needles and get some instructions on what to do:&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/38JN2JdNnMY&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h3 id=&quot;views-of-the-editor&quot;&gt;Views of the Editor&lt;/h3&gt;

&lt;p&gt;The editor has several view. To begin with, you can either load or save patterns as knitting patterns or images:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/1.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is the incomplete editor view, where you are able to add and remove instructions and rows and build your knit work:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/2.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Once, your pattern is done, you go over to the knit settings. Currently, there is only one ability to knit, knitting with the AYAB hack. You can choose your machine type and the connection and start knitting.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/3.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After you started knitting, you see the pattern which you want to knit.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/4.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Right next to the pattern, you can see the instructions for you. You can follow these to create the knit peace.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/5.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can also open the settings menu by pressing F1. There you can choose your language:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/6.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;At the current state, all this is rather sketchy. The basics work. For the best user experience, there is still a lot to do.&lt;/p&gt;

&lt;p&gt;— Nicco Kunzmann&lt;/p&gt;
</description>
        <pubDate>Tue, 09 Aug 2016 00:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/fossasia/2016/08/09/GSOC-blogpost-10/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/fossasia/2016/08/09/GSOC-blogpost-10/</guid>
        
        
        <category>FOSSASIA</category>
        
      </item>
    
      <item>
        <title>Google Summer of Code 2016 Blogpost 9 - Deploying a Kivy Application with PyInstaller for Mac OSX with Travis CI to Github</title>
        <description>&lt;p&gt;In this sprint for the &lt;a href=&quot;https://pypi.python.org/pypi/kniteditor&quot;&gt;kniteditor library&lt;/a&gt; we focused on automatic deployment for Windows and Mac. The idea: whenever a tag is pushed to Github, a new travis build is triggered. The new built app is uploaded to Github as an “.dmg” file.&lt;/p&gt;

&lt;h3 id=&quot;travis&quot;&gt;Travis&lt;/h3&gt;

&lt;p&gt;Travis is configured with the “.travis.yml” file which you can see here:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;language&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;python&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# see https://docs.travis-ci.com/user/multi-os/&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;matrix&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;linux&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;python&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;3.4&lt;/span&gt;
    &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;osx&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;language&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;generic&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;allow_failures&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;osx&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;if [ &quot;$TRAVIS_OS_NAME&quot; == &quot;osx&quot;   ] ; then   mac-build/install.sh ; fi&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;if [ &quot;$TRAVIS_OS_NAME&quot; == &quot;osx&quot;   ] ; then   mac-build/test.sh ; fi&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;before_deploy&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;if [ &quot;$TRAVIS_OS_NAME&quot; == &quot;osx&quot;   ] ; then cp mac-build/dist/KnitEditor.dmg /Users/travis/KnitEditor.dmg ; fi&lt;/span&gt;

&lt;span class=&quot;na&quot;&gt;deploy&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# see https://docs.travis-ci.com/user/deployment/releases/&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;provider&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;releases&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;api_key&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;secure&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;v18ZcrXkIMgyb7mIrKWJYCXMpBmIGYWXhKul4/PL/TVpxtg2f/zfg08qHju7mWnAZYApjTV/EjOwWCtqn/hm2CfPFo=&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/Users/travis/KnitEditor.dmg&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;tags&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;true&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;condition&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;$TRAVIS_OS_NAME&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;osx&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;repo&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;AllYarnsAreBeautiful/kniteditor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note that it builds both Linux and OSX. Thus, for each step one must distinguish. Here, only the OSX parts are shown. These steps are executed:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Installation. The app and dmg files are built.&lt;/li&gt;
  &lt;li&gt;Testing. The tests are shipped with the app in our case. This allows us to execute them at many more locations – where the user is.&lt;/li&gt;
  &lt;li&gt;Before Deploy. Somehow Travis did not manage to upload from the original location. Maybe it was a bug. Thus, a absolute path was created for the use in (4).&lt;/li&gt;
  &lt;li&gt;Deployment to github. In this case we use an API key. One could also use a password.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Installation:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# execute with --user to pip install in the user home&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;HERE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;dirname&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$0&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HERE&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

brew update

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# install python3&quot;&lt;/span&gt;
brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;python3
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Python version: &quot;&lt;/span&gt;
python3 &lt;span class=&quot;nt&quot;&gt;--version&lt;/span&gt;
python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--upgrade&lt;/span&gt; pip

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# install pygame&quot;&lt;/span&gt;
python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip uninstall &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; pygame &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# locally compiled pygame version&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# see https://bitbucket.org/pygame/pygame/issues/82/homebrew-on-leopard-fails-to-install#comment-636765&lt;/span&gt;
brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;sdl sdl_image sdl_mixer sdl_ttf portmidi
brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;mercurial &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;true
&lt;/span&gt;python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; hg+http://bitbucket.org/pygame/pygame

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# install kivy dependencies&quot;&lt;/span&gt;
brew &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# install requirements&quot;&lt;/span&gt;
python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-I&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;Cython&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;==&lt;/span&gt;0.23 &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
                       &lt;span class=&quot;nt&quot;&gt;--install-option&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;--no-cython-compile&quot;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;USE_OSX_FRAMEWORKS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;0 python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; kivy
python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip uninstall &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;Cython&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;==&lt;/span&gt;0.23
python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; ../requirements.txt
python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; ../test-requirements.txt
python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; PyInstaller

./build.sh &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The first step is to update brew. It cost me 4 hours to find this bug, 2 hours to work around it before. If brew is not updated, Python 3.4 is installed instead of Python 3.5.&lt;/p&gt;

&lt;p&gt;Then, Python, Pygame as the window provider for Kivy is installed, and the other requirements. It goes on with the build step. While installation is executed once on a personal Mac, the build step is executed several times, when the source code is changed.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# execute with --user to make pip install in the user home&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;HERE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;dirname&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$0&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;USER&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HERE&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ..

  &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# removing old installation of kniteditor&quot;&lt;/span&gt;
  python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip uninstall &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; kniteditor &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;true

  echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# build the distribution&quot;&lt;/span&gt;
  python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; wheel
  python3 setup.py sdist &lt;span class=&quot;nt&quot;&gt;--formats&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;zip
  python3 setup.py bdist_wheel
  python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip uninstall &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; wheel

  &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# install the current version from the build&quot;&lt;/span&gt;
  python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--upgrade&lt;/span&gt; dist/kniteditor-&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;linux-build/package_version&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;.zip

  &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# install test requirements&quot;&lt;/span&gt;
  python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$USER&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--upgrade&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; test-requirements.txt
&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# build the app&quot;&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# see https://pythonhosted.org/PyInstaller/usage.html&lt;/span&gt;
python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; PyInstaller &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; KnitEditor.spec

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;# create the .dmg file&quot;&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# see http://stackoverflow.com/a/367826/1320237&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;KNITEDITOR_DMG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;pwd&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/dist/KnitEditor.dmg&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$KNITEDITOR_DMG&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
hdiutil create &lt;span class=&quot;nt&quot;&gt;-srcfolder&lt;/span&gt; dist/KnitEditor.app &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$KNITEDITOR_DMG&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;The installer can be found in &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$KNITEDITOR_DMG&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;.&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In the first steps we install the kniteditor from the built “sdist”  zip file. This way we can uninstall it with pip. Also, the dependencies are installed. Then, PyInstaller is invoked with a spec and then the .dmg file is created.&lt;/p&gt;

&lt;p&gt;The spec looks like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# -*- mode: python -*-

import sys
site_packages = [path for path in sys.path if path.rstrip(&quot;/\\&quot;).endswith(&apos;site-packages&apos;)]
print(&quot;site_packages:&quot;, site_packages)

from kivy.tools.packaging.pyinstaller_hooks import get_deps_all, \
    hookspath, runtime_hooks

block_cipher = None

added_files = [(site_packages_, &quot;.&quot;) for site_packages_ in site_packages]

kwargs = get_deps_all()
kwargs[&quot;datas&quot;] = added_files
kwargs[&quot;hiddenimports&quot;] += [&apos;queue&apos;, &apos;unittest&apos;, &apos;unittest.mock&apos;]


a = Analysis([&apos;_KnitEditor.py&apos;],
             pathex=[],
             binaries=None,
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             hookspath=hookspath(),
             runtime_hooks=runtime_hooks(),
             **kwargs)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name=&apos;KnitEditorX&apos;,
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name=&apos;KnitEditor&apos;)
app = BUNDLE(coll,
             name=&apos;KnitEditor.app&apos;,
             icon=None,
             bundle_identifier=&quot;com.ayab-knitting.KnitEditor&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note, that all files in all site-packages are included. This way, we do not need to cope with missing modules. Also, there are three different names for&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;the entry script “_KnitEditor.py”&lt;/li&gt;
  &lt;li&gt;the executable “KnitEditorX”&lt;/li&gt;
  &lt;li&gt;the library “kniteditor”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While on the command line, OSX is case sensitive, it is not sensitive on the file system. Thus, if one of the names is the same, we can get errors durig the PyInstaller build.&lt;/p&gt;

&lt;h3 id=&quot;lessons-learned&quot;&gt;Lessons learned&lt;/h3&gt;

&lt;p&gt;Do “brew update” on travis.&lt;/p&gt;

&lt;p&gt;Use absolute paths for deployment on Mac OSX travis.&lt;/p&gt;

&lt;p&gt;Never use the same names in PyInstaller for the main script, a library and the executable. Otherwise you get a “not a directory” or “not a file” error.&lt;/p&gt;

&lt;p&gt;Travis OSX build max out from time to time. It is much faster to have a Mac computer there, to create the scripts.&lt;/p&gt;

&lt;p&gt;— Nicco Kunzmann&lt;/p&gt;
</description>
        <pubDate>Thu, 21 Jul 2016 00:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/fossasia/2016/07/21/GSOC-blogpost-09/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/fossasia/2016/07/21/GSOC-blogpost-09/</guid>
        
        
        <category>FOSSASIA</category>
        
      </item>
    
      <item>
        <title>Google Summer of Code 2016 Blogpost 8 - The new AYABInterface module</title>
        <description>&lt;p&gt;One create knit work with knitting machines and the AYAB shield. Therefore, the computer communicates with the machine. This communication shall be done, in the future, with this new library, the &lt;a href=&quot;https://pypi.python.org/pypi/AYABInterface&quot;&gt;AYABInterface&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are some design decisions:&lt;/p&gt;

&lt;h3 id=&quot;complete-vs-incomplete&quot;&gt;Complete vs. Incomplete&lt;/h3&gt;

&lt;p&gt;The idea is to have the AYAB seperated from the knittingpattern format. The knittingpattern format is an incomplete format that can be extended for any use case.  In contrast, the AYAB machine has a complete instruction set. The knittingpattern format is a means to transform these formats into different complete instruction sets. They should be convertible but not mixed.&lt;/p&gt;

&lt;h3 id=&quot;desciptive-vs-imperative&quot;&gt;Desciptive vs. Imperative&lt;/h3&gt;

&lt;p&gt;The idea is to be able to pass the format to the AYABInterface as a description. As much knowledge about the behavior is capsuled in the AYABInterface module. With this striving, we are less prone to intermix concerns across the applications.&lt;/p&gt;

&lt;h3 id=&quot;responsibilty-driven-design&quot;&gt;Responsibilty Driven Design&lt;/h3&gt;

&lt;p&gt;I see these separated responsibilities:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A communication part focusing on the protocol to talk and the messages sent across the wire. It is an interpreter of the protocol, transforming it from bytes to objects.&lt;/li&gt;
  &lt;li&gt;A configuration that is passed to the interface&lt;/li&gt;
  &lt;li&gt;Different Machines types supported.&lt;/li&gt;
  &lt;li&gt;Actions the user shall perform.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;different-representations&quot;&gt;Different Representations&lt;/h3&gt;

&lt;p&gt;I see these representations:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Commands are transferred across the wire. (PySerial)&lt;/li&gt;
  &lt;li&gt;For each movement of a carriage, the needles are used and put into a new position, B or D. (communication)&lt;/li&gt;
  &lt;li&gt;We would like to knit a list of rows with different colors. (interface)&lt;/li&gt;
  &lt;li&gt;Holes can be described by a list of orders in which meshes are moved to other locations, i.e. on needle 1 we can find mesh 1, on needle 2 we find mesh 2 first and then mesh 3, so mesh 2 and mesh 3 are knit together in the following step&lt;/li&gt;
  &lt;li&gt;The knitting pattern format.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;actions-and-information-for-the-user&quot;&gt;Actions and Information for the User&lt;/h3&gt;

&lt;p&gt;The user should be informed about actions to take. These actions should not be in the form of text but rather in the form of an object that represents the action, i.e. [“move”, “this carriage”, “from right to left”]. This way, they can be adequately represented in the UI and translated somewhere central in the UI.&lt;/p&gt;

&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;

&lt;p&gt;The new design separates concerns and allows testing. The bridge between the machine and the knittnigpattern format are primitive, descriptive objects such as lists and integers.&lt;/p&gt;

&lt;p&gt;— Nicco Kunzmann&lt;/p&gt;
</description>
        <pubDate>Thu, 21 Jul 2016 00:00:00 +0000</pubDate>
        <link>http://www.ayab-knitting.com/fossasia/2016/07/21/GSOC-blogpost-08/</link>
        <guid isPermaLink="true">http://www.ayab-knitting.com/fossasia/2016/07/21/GSOC-blogpost-08/</guid>
        
        
        <category>FOSSASIA</category>
        
      </item>
    
  </channel>
</rss>
