<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>danigm.net - hack</title><link>https://danigm.net/</link><description></description><lastBuildDate>Mon, 15 Nov 2021 00:00:00 +0100</lastBuildDate><item><title>Endless Orange Week: Hack content creators platform (2)</title><link>https://danigm.net/hack-content-creators-1.html</link><description>&lt;p&gt;The past Friday was the last day of the &lt;a href="http://danigm.net/hack-content-creators.html"&gt;Endless Orange Week&lt;/a&gt;. It was a nice
and fun experience, and even if I was not able to do as much as I wanted, we
were able to make something that "works" in the Hack project.&lt;/p&gt;
&lt;h2&gt;The Hack Quest editor&lt;/h2&gt;
&lt;p class="img"&gt;
    &lt;img src="/pictures/clubhouse-custom-quests-1.png" /&gt;
&lt;/p&gt;

&lt;p&gt;The first step to have custom quests on the Hack app was to complete the
&lt;a href="https://www.inklestudios.com/ink/"&gt;Ink language&lt;/a&gt; support. We started to work on this some time ago, but never
completed the functionality.&lt;/p&gt;
&lt;p&gt;I worked on that the first three days, updating the ink library and building
the missing pieces to be able to load quests from random paths. I've
implemented that in a way that the Hack application is able to receive a path
to a &lt;code&gt;.ink&lt;/code&gt; file, and it's able to build and run the quets.&lt;/p&gt;
&lt;p&gt;The Quests are not just the script, but they have some metadata, like title,
subtitle, description, difficulty and the card image to show on the interface.
To solve that I defined a "custom quest bundle format", that's bassically a
folder with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;questId&lt;/li&gt;
&lt;li&gt;quest.jpg&lt;/li&gt;
&lt;li&gt;metadata.json&lt;/li&gt;
&lt;li&gt;quest.ink&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I also added the functionality to import a bundle zip file and export with
the quest information.&lt;/p&gt;
&lt;p class="img"&gt;
    &lt;img src="/pictures/clubhouse-custom-quests-2.png" /&gt;
&lt;/p&gt;

&lt;p&gt;I created some command line options to use this new functionality:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;play&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ink&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;FULL_INK_FILE_PATH&lt;/span&gt;&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="n"&gt;Start&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ink&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;quest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;import&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;quest&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PATH_TO_BUNDLE_OR_INK_FILE&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="n"&gt;Import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ink&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;quest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="k"&gt;export&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;quest&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;CUSTOM_QUEST_ID&lt;/span&gt;&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;Export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;quest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;bundle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Quest creation interface and the Inky Editor&lt;/h3&gt;
&lt;p&gt;The first idea was to try to provide a full quest creation experience in the
app, but that was too much, so we decided to simplify the way to create quests
and depend on the &lt;a href="https://flathub.org/apps/details/com.inklestudios.Inky"&gt;Inky editor&lt;/a&gt; external tool. Manuel Quiñones took some time
to update the flatpak application with the latests ink version, so we can use
to create custom quests.&lt;/p&gt;
&lt;p&gt;The Inky editor provides help about the language, syntax highlighting and a
simple way to test the script, so it's a nice tool. The main problem with this
tool is that it doesn't provide a way to launch it with a file path so it's
not possible to integrate with the Hack app.&lt;/p&gt;
&lt;p class="img"&gt;
    &lt;img src="/pictures/clubhouse-custom-quests-3.png" /&gt;
&lt;/p&gt;

&lt;p&gt;So at the end, the Quest creation dialog is just a way to define the metadata
and to select the Quest ink files from your filesystem. How the ink script is
created is a decision to make for the content creator.&lt;/p&gt;
&lt;h3&gt;The future&lt;/h3&gt;
&lt;p&gt;We've no time to complete all we wanted to do, and I didn't create a new
release, so this new functionality is still not there. But we'll try to do a
release soon.&lt;/p&gt;
&lt;p&gt;Simon is working on some interface improvements and also on a new tutorial
Quest, so we can introduce the Custom Quest creation tool in the same app.&lt;/p&gt;
&lt;h2&gt;The Character editor&lt;/h2&gt;
&lt;p&gt;The other part of this week planning was the character editor. Joana did a
really nice work designing the application, the initial assets and the user
experience, but I had not too much time to work on the implementation.  So I
spent just one day working on this.&lt;/p&gt;
&lt;p&gt;The main idea was to create a new independent app, and then provide a way to
integrate with the Hack application and the custom Quest creation dialog. And
it'll be a simple application so maybe it could be useful or interesting for
other people, it's a fun way to play around and create random faces.&lt;/p&gt;
&lt;p class="img"&gt;
    &lt;img src="/pictures/avatar-creator-1.png" /&gt;
&lt;/p&gt;

&lt;p&gt;We just created the application &lt;a href="https://github.com/endlessm/avatar-creator/"&gt;Avatar Creator&lt;/a&gt;. I created a simple python
Gtk4 application and worked a bit on the basic functionality. So right now it
loads a list of svg assets and provide the 3x3 grid. You can click on a grid
cell and then choose what basic image should go there.&lt;/p&gt;
&lt;p class="img"&gt;
    &lt;img src="/pictures/avatar-creator-2.png" /&gt;
&lt;/p&gt;

&lt;p&gt;I added the initial set of basic images, created by Joana, to create this funny
robot faces, but the format is simple enough to extend with different "avatar
libraries" in the future.&lt;/p&gt;
&lt;p&gt;Right now it's also possible to export to png, so the app is functional, but it
needs a bit more work.&lt;/p&gt;
&lt;p&gt;My idea is to work a bit more in the following weeks, when I have some time, on
weekends or holidays and at some point, publish it in flathub. And lets see if
there are more developers interested on this app so it can grow.&lt;/p&gt;
&lt;p&gt;The application is simple enough to be a good place for GNOME newcomers and it's
also a fun project to work on. A simple toy app to create faces that could
have some potential, some future ideas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"Smart" random faces generator&lt;/li&gt;
&lt;li&gt;Configurable grid: Maybe is interesting to make it bigger or smaller to play
   around&lt;/li&gt;
&lt;li&gt;Programmed simple base image manipulations, like rotation, mirror, color&lt;/li&gt;
&lt;li&gt;Animation creation, maybe be able to export to gif&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Endless Orange Week experience&lt;/h2&gt;
&lt;p&gt;This week was a really nice experience, because we were working in a "personal"
chosen project, that we liked and without the day to day meetings, times
schedules and other related work stuff.&lt;/p&gt;
&lt;p&gt;But that was not all. In Endless we've different teams that work mostly
isolated, because we're working on different fields, we've some overlapping,
but we work day to day as small teams, and this week we were all using the same
slack channel to show our progress, and it was nice.&lt;/p&gt;
&lt;p&gt;Maybe now that we're not a big organization with a lot of workers, we can do
something like this more often, it's always good to know more about other
coworkers and to learn something that maybe it's not related with your main
project, but it could be interesting.&lt;/p&gt;
&lt;p&gt;I'm really happy that we did this Endless Orange Week, it's sad that it ended
too soon, I'm waiting to learn from my coworkers what amazing things they do
during this week and I'm looking forward the next year Orange Week!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">danigm</dc:creator><pubDate>Mon, 15 Nov 2021 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:danigm.net,2021-11-15:/hack-content-creators-1.html</guid><category>blog</category><category>hack</category><category>endless</category><category>orangeweek</category><category>work</category><category>gnome</category><category>software</category></item><item><title>Endless Orange Week: Hack content creators platform</title><link>https://danigm.net/hack-content-creators.html</link><description>&lt;p&gt;This week (Nov 8 – 12) I am participating in Endless Orange Week, a program
where the entire &lt;a href="https://www.endlessos.org/"&gt;Endless&lt;/a&gt; team engages in projects designed to grow our
collective learning related to our skills, work and mission.&lt;/p&gt;
&lt;p&gt;We propose a project, that could be anything, and then work during the whole
week, without distraction. I've choosed to work on the &lt;a href="https://www.hack-computer.com/"&gt;Hack project&lt;/a&gt;, that's a
really nice project that needs some love, because since the past year, we have
&lt;a href="https://www.endlessos.org/key"&gt;other priorities&lt;/a&gt;, so there's no time to improve the Hack app.&lt;/p&gt;
&lt;p class="img"&gt;
    &lt;a href="/pictures/clubhouse.png"&gt;
        &lt;img src="/pictures/clubhouse.png" /&gt;
    &lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;The project: Hack content creators platform&lt;/h2&gt;
&lt;p&gt;The Hack application is a "Quest" launcher, and each Quest is an interactive
learning experience, a guided introduction to some technology or topic.&lt;/p&gt;
&lt;p&gt;Quests are just python scripts, with a simple library to expose messages to the
user, ask questions, or wait for desktop events, like launch an application,
focus an application, etc. And all these Quests are inside the application, and
are created by the Hack team and released with a new Hack app flatpak.&lt;/p&gt;
&lt;p&gt;The main idea of the project is to provide a simple Quest editor to allow any
Hack user to create and share their our Quests.&lt;/p&gt;
&lt;p&gt;To have this Hack content creators platform we'll need:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To simplify the way we create Quests, instead of a python script, we'll uses
   a Domain Specific Language, called &lt;a href="https://www.inklestudios.com/ink/"&gt;Ink&lt;/a&gt;. We started to work on this, but
   we never ended the support.&lt;/li&gt;
&lt;li&gt;To create the interface to be able to import and export custom Quests, that
   could be zip bundles, with the Ink script and some images.&lt;/li&gt;
&lt;li&gt;To create the interface to write the actual Quests and save or bundle.&lt;/li&gt;
&lt;li&gt;Create some introductory Quest to explain "how to create your own Quests!".&lt;/li&gt;
&lt;li&gt;Create an character editor, to be able to "design" new characters for Quests.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;The Quest editor&lt;/h3&gt;
&lt;p&gt;The Quests will be written using the Ink language, and there's &lt;a href="https://flathub.org/apps/details/com.inklestudios.Inky"&gt;something done before&lt;/a&gt;.
The first idea is to just provide a text editor and some helpful information
about the format, and maybe a button to validate. But if there's time we can
use something advanced or even integrate the &lt;a href="https://flathub.org/apps/details/com.inklestudios.Inky"&gt;Inky&lt;/a&gt; editor.&lt;/p&gt;
&lt;h3&gt;The Character editor&lt;/h3&gt;
&lt;p&gt;Each Quest has a main character, and we've five in the Hack app right now, but
it could be great to be able to define new ones for custom Quests. That's the
idea of this part of the project.&lt;/p&gt;
&lt;p&gt;The initial idea is to have a library of character parts to combine, and the
editor will allow the user to combine this parts and maybe change colors, to be
able to create unique characters for your Quests.&lt;/p&gt;
&lt;h3&gt;The Team&lt;/h3&gt;
&lt;p&gt;I'm not working alone in this "side" project during the Endless Orange Week,
Simon Schampijer and Joana Filizola will be working on this too, so this is a
big task but we've a great team. Let's see how far we are able to go during
just one week.&lt;/p&gt;
&lt;h3&gt;The impact&lt;/h3&gt;
&lt;p&gt;This is just a project to try to keep alive more time the Hack application,
without a lot of effort or a whole team behind it. We are not able to put more
content there periodically, so if there's a way to create new content easily
and (maybe in the future) a way to publish, it'll be possible to create a
community around the project.&lt;/p&gt;
&lt;p&gt;And we have also new possibilities, in the near future, we can add some Hack
content to the Endless Key, and using the Ink language, so this editor could
help to bring more content there easily.&lt;/p&gt;
&lt;p&gt;And the final piece, the Character editor, could be an independent application,
a nice simple application that could be used to create your character for your
profile photo, or to generate random character pics.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">danigm</dc:creator><pubDate>Mon, 08 Nov 2021 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:danigm.net,2021-11-08:/hack-content-creators.html</guid><category>blog</category><category>hack</category><category>endless</category><category>orangeweek</category><category>work</category><category>gnome</category><category>software</category></item><item><title>I'm a hacker</title><link>https://danigm.net/endless.html</link><description>&lt;h2&gt;I've the strength of the one that fails, trains and returns&lt;/h2&gt;
&lt;p&gt;Some time ago I wrote &lt;a href="http://danigm.net/gnome-gtk-developer.html"&gt;about my interview process&lt;/a&gt; trying to get a job at
GNOME. After this blog post was published in the GNOME planet, I received a lot
of comments from the &lt;em&gt;Great&lt;/em&gt; GNOME community.&lt;/p&gt;
&lt;p&gt;This guided me to take a look to the companies that was looking for GNOME
developers and after some interviews I finally get an offer to work on
&lt;a href="https://endlessos.com/"&gt;Endless&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All the process was online, I've been working from home since 2011 and I want
to continue like this. I'm living in Málaga, the south of Spain and I was
looking for a remote job.&lt;/p&gt;
&lt;p&gt;I've a very nice interview process, talking with developers that I knew about
from their contributions to free software and these interviews weren't
technical, that's a good thing about the free software contribution and
the community, if someone wants to know my technical skills, he only need to
look to my gitlab or github and he will find a lot of code. These interviews
were personal and with some management questions, to know if I'll fit in the
team and the company.&lt;/p&gt;
&lt;p&gt;I did the interview to work directly on the Endless OS, in the desktop team,
but after some interviews I ended in other team, working with the Endless OS
and all GNOME technology, but in the &lt;a href="https://hack-computer.com/"&gt;Hack Computer&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The hack computer&lt;/h2&gt;
&lt;p&gt;The hack computer is an educational project. The main idea is to provide a
fully functional computer for kids to be their first personal computer and also
provide a way to teach kids to &lt;em&gt;hack&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The computer is a usual laptop, with an Endless OS running, and with some extra
applications that try to guide kids to explore, modify and finally hack the
computer learning in the process about GNU/Linux, the code and that any part
of your software can be hacked to make it better, an introduction to the
free software and the great world of open source code that you can modify to
learn, play or simply because you can.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/SN7tC4XnGko" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;The way to guide kids to learn is like a video game, with characters that will
appears in your desktop and will guide you with tips and challenges and after
each quest completed the kid will learn something, playing with his computer.&lt;/p&gt;
&lt;p&gt;If you like this and want to collaborate, &lt;a href="https://jobs.lever.co/endless"&gt;we're hiring&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Endless OS&lt;/h2&gt;
&lt;p&gt;The hack computer is built on top of the Endless OS. Endless OS is based on
debian and the desktop is a modified gnome shell, but it's not the usual debian
derivative, it's based on &lt;a href="https://ostree.readthedocs.io/en/latest/"&gt;OSTree&lt;/a&gt;. The main difference is that the root
filesystem is read only and updates are managed with ostree, that's like a git
repository.&lt;/p&gt;
&lt;p&gt;This kind of Operating System is easier to maintain, because the user &lt;em&gt;can't&lt;/em&gt;
modify the base system, so this means that he was unable to &lt;em&gt;break it&lt;/em&gt;. All user
applications are installed via flatpak, so are &lt;em&gt;independent&lt;/em&gt; of the &lt;em&gt;OS&lt;/em&gt;
version and because of flathub you can install latests version of apps without
the need to update the full operating system.&lt;/p&gt;
&lt;p&gt;This is the way that &lt;a href="https://silverblue.fedoraproject.org/"&gt;Fedora SilverBlue&lt;/a&gt; is trying to follow and is a &lt;em&gt;new&lt;/em&gt;
way to build and distribute GNU/Linux.&lt;/p&gt;
&lt;p class="img"&gt;
    &lt;a href="/pictures/hack-mount-tree.png"&gt;
        &lt;img src="/pictures/hack-mount-tree.png" /&gt;
    &lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;The end of an Era&lt;/h2&gt;
&lt;p&gt;I've been working in &lt;a href="https://wadobo.com"&gt;Wadobo&lt;/a&gt; since 2011. I created that company with two
college friends to try to continue hacking like we were hacking in the Seville
LUG &lt;a href="https://sugus.eii.us.es/"&gt;SUGUS&lt;/a&gt; and earn money from that, and we did it for a long time.&lt;/p&gt;
&lt;p class="img"&gt;
  &lt;img src="/pictures/wadobo-old-2.jpg" /&gt;
&lt;/p&gt;

&lt;p&gt;We've been working in free software projects and with free software technology,
contributing to the community as much as we can and always trying to free our
work.&lt;/p&gt;
&lt;p class="img"&gt;
  &lt;img src="/pictures/wadobo-old-1.jpg" /&gt;
&lt;/p&gt;

&lt;p&gt;We created some projects that grow up and follow its own path, like the
agora voting system, that Edulix (Eduardo Robles) converts in &lt;a href="https://nvotes.com/"&gt;nvotes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The self employment was a really good experience. I've been doing was I want
for a long time, taking time to contribute to GNOME and other projects when
I need it, because I was the one deciding what I want to do. But in the other
hand, I've been stuck in the local consultancy market for a long time.&lt;/p&gt;
&lt;p class="img"&gt;
  &lt;img src="/pictures/wadobo-old-3.jpg" /&gt;
&lt;/p&gt;

&lt;p&gt;I'm not a business man, I'm a developer and I'm based in Spain, where there
is no money inverted in innovation or we was unable to find that money, so we
were doing django web apps for a living and spending some time in our interests
in the extra time we've. So when I found the possibility to work full time in
an innovative project, I've no choice.&lt;/p&gt;
&lt;p&gt;We'll try to continue with the &lt;strong&gt;Wadobo&lt;/strong&gt; idea, like a group of people
interested in free software and new technologies, maybe this will derive into
a Linux User Group or maybe in the future someone takes the initiative and
build a business around this again.&lt;/p&gt;
&lt;p class="img"&gt;
  &lt;img src="/pictures/wadobo-old-4.jpg" /&gt;
&lt;/p&gt;

&lt;h2&gt;Hacking&lt;/h2&gt;
&lt;p&gt;I'm really happy with this change. Endless OS and the hack computer are really
great projects with a lot of bleeding edge technology and a really great group
of people, and I'm really exited to be able to work with people all around the
world in a project with a global vision.&lt;/p&gt;
&lt;p&gt;I don't want to leave the roots I've here with my Wadobo friends and the local
community and local technology ecosystem. This is also related with the Endless
vision. Spain, and here in the south, in Andalucía, we've a technological
breach that we try to fill with free software.&lt;/p&gt;
&lt;p&gt;I'll continue working with the Seville University, because they give me a lot
and I think it's a talent pool, we only need to guide those students to the
GNOME community or to other free software communities out there, to &lt;em&gt;save&lt;/em&gt;
their souls from the privative software and the dark side.&lt;/p&gt;
&lt;p&gt;I'll continue supporting initiatives like the &lt;a href="http://concursosoftwarelibre.org/"&gt;Free Software Contest&lt;/a&gt;&lt;/p&gt;
&lt;p class="img"&gt;
  &lt;a href="http://concursosoftwarelibre.org/"&gt;
    &lt;img src="http://concursosoftwarelibre.org/1819/files/images/banners/cusl2_500x455.png" /&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;By the way, I'll be talking about rust in the Seville University the next
Tuesday 5th of March 2019, if you're in Seville, come to talk with me :D&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">danigm</dc:creator><pubDate>Sun, 17 Feb 2019 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:danigm.net,2019-02-17:/endless.html</guid><category>blog</category><category>gnome</category><category>work</category><category>endless</category><category>hack</category></item></channel></rss>