Posts tagged english

Creating EnyoJS apps with Yeoman

js, english
EnyoJS Logo

EnyoJS Logo

What is Enyo JS

Enyo JS is a framework for building native-quality HTML5 apps that run everywhere! It begun its life in HP webOS (my favorite system ever) and was released as an open source project in the aftermath of the fiasco.

What is known as Enyo 1.0 is tied closely to webOS (a.k.a. a webkit based system). The Enyo team decided that with the open source release they should rewrite Enyo from the scratch to be compatible with other systems thus Enyo 2.x was born.

The current release is Enyo JS 2.4.0 and it is a gorgeous release sporting bindings, mvc, components, and more.

I will write more about Enyo JS as soon as I can but lets try to give you readers a glimpse of what it is all about.

Enyo is about components. Its about building reusable/shareable code into self contained components that may contain other components. Your app is a collection of these components structured in a elegant way.

I could go on for hours on why Enyo is a very elegant system but let me just give you one reason: Enyo JS core libraries and components are built in Enyo JS so if you know how to use the framework you can debug it, also if you read the framework source code you become a better Enyo coder.

You can check A Tour of Enyo to get a quick look at its features

There is a quick tutorial available at github wiki for enyojs/enyo and its very easy to follow.

A Free Agent at MozFest 2014

mozilla, mozfest, english
MozFest

MozFest

It has been some days since I’ve been back from the amazing Mozilla Festival and its time to post about all the amazing things I’ve seen and done over there. This event was probably the most engaging “tech” event I’ve ever been. The whole mindset of sessions and facilitators is something that we should replicate all around the globe. In my humble opinion this event represents the best of the Mozilla mission and spirit and in these brief words I will try to explain a bit of my wonderful experience over there.

A Free Agent (or being a bit lost)

I am a Mozilla Rep and love working on Web related stuff. I’ve been to many events around the globe but this was my first MozFest. This event is very different than all other events I’ve been to and part of my experience was shapped by how I got there.

MozReps making their scary face

MozReps making their scary face

There was an application form for Mozilla Reps that were interested in going to the event. I’ve filled it. There was also a public call for sessions and I’ve submit my proposal about teching how to run Mozilla Appmaker on a Raspberry Pi. My session was reject but my trip was approved. So in essence, I was going but I had no idea what I was going to do there.

A new FirefoxOS book about Game Development

![Book Cover](/img/old//images/gsoc/book_cover.jpg)

A new book focused on Game Development

I am almost reaching the point where I can almost release the book. My idea is to release it as an early unfinished preview and allow readers to send feedback and enjoy it while I am still building it.

The Google Summer of Code is all about open source creations and its my belief that open source should also be open development so by releasing this book in early form I am able to invite you all to contribute to it.

Some toughts regarding the Firefox OS Tablet Keyboard

In this brief article I will expose my impressions about the keyboard used in the current Firefox OS version used in tablets. Please be aware that these tablets are reference designs used to improve Firefox OS in tablet form factor. What we see and discuss here is not what the final product will be.

This article is for the benefit of the Tablet Contribution Program run by Mozilla. This project aims to improve Firefox OS for tablet usage. An initial run of reference designs were seeded to many contributors who are bringing back improvements.

Since we’re Mozilla, we do everything in the open and thats why this article is published here and not on some private walled garden.

Let the Games Begin! (or GSOC 2014 starts)

mozilla, gsoc, gamedev, english
Playful Red Pandas

Playful Red Pandas

I’ve been accepted in Google Summer of Code 2014 as a student working with Mozilla.

My project (that can be seen here) is about creating game samples, an ebook and some reusable libraries to aid game developers working with Firefox OS.

My mentor is Soledad Penadés who is fantastic and builds awesome stuff at Mozilla. Check out her creations at 5013. I am pretty happy with this match because I will learn tons of stuff. :-)

Why games?

Games count for 50% of the app usage on mobile devices. Let that sink for a bit… Of all app categories, games count for half of the usage and all the other types of app share the remaining fifty percent. Games are so important that many developers distinguish between games and non-games application as being from different realms. No one places spreadsheets app and project management apps in different realms but people think of games as something so broad, so large, that it deserves its own category.

If games are so important for mobile platforms then it makes sense that we have great tools and documentation to aid new developers in becoming game developers. The fact is that even though we do have lots of documentation, it is all spread multiple MDN pages and wiki links and personal blogs. We lack a comprehensive collection of knowledge that can be easily followed, understood and shared by new developers.

If a game developer wants to learn something about Firefox OS itself then he can just browse MDN Game Development Zone for the information he needs. New developers that want to become game developers have no easy path to follow.

To solve this we’re going to build a set of resources that when used together will teach new developers how to develop 2D casual games for Firefox OS.

Lets see what we’re going to build…

Thinking about EME/DRM

mozilla, firefox, drm, english

I think people on the interwebs are confusing the smoke for the fire.

For those that haven’t read how the new EME/DRM stuff will work: Firefox will have a sandbox to run the binary blob. The blob will not come installed on Firefox. The blob will not have access to the hardware or be able to fingerprint you. The sandbox is open source and can be compiled separate from Firefox so that people who want to make sure their sandbox has not been tampered by NSA/MAFIAA will be able to do so.

If you don’t use services that use DRM such as Netflix, Hulu and Amazon then your Firefox will still be free from the evil binary DRM blob. If you decide to utilize such services then you authorize (explicit user action, like press a button and there is a message) the installation of the binary blob at the time you try to use the said services.

“As plugins today, the CDM itself will be distributed by Adobe and will not be included in Firefox. The browser will download the CDM from Adobe and activate it based on user consent.” — Andreas Gal, Mozilla CEO in Reconciling Mozilla’s Mission and W3C EME

If you’re among the group that is against DRM on the web then instead of going into flamewars and hatred about Firefox having the EME spec you should just stop using DRM enabled services and show them where your convictions are. If on the other hand you want to consume said content then you will have the only open source sandbox that protects you agains hardware access and fingerprinting. Firefox still the best alternative even with EME/DRM.

Mozilla at Campus Party Brasil 2014

Mozilla at Campus Party

Mozilla at Campus Party

This year we took 15 people (Volunteers + Staff) to Campus Party Brasil which is probably the largest tech event/gathering in the world with eight thousand people camping at the venue and an unknown number of people floating at the expo area. Even though this event was organized at the nick of time, it was one of our best events ever. We had numerous activities planed among them 3 talks at the normal schedule (a.k.a. during the day), 5 talks during community schedules (a.k.a. so late it is almost day again), 1 workshop and 1 hackathon.

These activities were all great but they were not our main mission at Campus Party for we had a secret plan in our mind…

DB Lib Goes Open Source with GPL

livecode, english

DB Lib is a minimalistic database library for LiveCode that works on Desktop and Mobile and allows you to build database-savvy apps without writing SQL directly. For example consider the following code:

dbWhere "country", "Brazil" put dbGet("contacts") into tDataA set the dgdata of control "contacts" to tDataA

It picks all records from the contacts table that have the country field equals to Brazil and set a datagrid to it. It’s very easy to use. A more involved example:

on mouseUp -- assemble array put dbCardToArray("contacts") into tDataA -- check if we're adding a new record -- or updating an existing one. -- -- this check depends on the record id being present. if field "id" is empty then get dbInsert("contacts", tDataA) if it is not a number then answer error it else answer "New Record Saved" end if go card "contact list" else dbWhere "id", field "id" get dbUpdate("contacts", tDataA) if it is not a number then answer error it else answer "Record Updated" end if go card "contact list" end if end mouseUp

In this code first we pick the data from a card using dbCardToArray(), a function that magically picks data from fields, buttons and other controls, and assemble an array that is used to insert or update a given record depending on the presence of an id field.

This is just a quick glimpse of what you can do with DB Lib. It is basically a ORM for LiveCode.

A simple publisher/subscriber library for LiveCode

livecode, english

This is a simple library I made to use in a game we’re making where we needed a way for objects to interact with each other without hard coded object references. This pattern is known as the publisher/subscriber pattern or the observer pattern.

In this pattern objects can register themselves as listeners for specific events. Once an object triggers an event, all objects that we’re listening for such event will receive a callback message. You can use this pattern to allow controls to react to events in your program without the need to hard code dispatch/send messages. A good example is a progress bar that listens for a message that is triggered by a download operation. The download routine would trigger this message without the knowledge of the progress bar, it is just broadcasting it like: “hey, I am downloading something” and the progress bar will listen for this broadcast and react to it. The code could be like:

on openCard put the long id of scrollbar "progress" into tTarget addEventListener "downloadProgress", "downloadProgressCallback", tTarget libURLSetStatusCallback "urlstatus" load URL myURL with message "downloadComplete" end openCard on urlstatus pURL, pStatus switch item 1 of pStatus case "loading" put 0 into tDataA["start"] put item 3 of pStatus into tDataA["end"] put item 2 of pStatus into tDataA["progress"] trigger "downloadProgress", tDataA break end switch end urlstatus on downloadComplete ## this is just cosmetic to guarantee that ## the progress bar goes to 100% once the download ## is completed. put 0 into tDataA["start"] put 100 tDataA["end"] put 100 into tDataA["progress"] trigger "downloadProgress", tDataA end downloadComplete

In the given scrollbar script:

on downloadProgressCallback pDataA set the startValue of me to pDataA["start"] set the endValue of me to pDataA["end"] set the thumbpos of me to pDataA["progress"] end downloadProgressCallback

This way we can change the UI that reacts to the download without touching the urlstatus message implementation. We could have many controls listening for the downloadProgress event. Also check out how both the urlstatus message and the downloadComplete message trigger the downloadProgress event. None of these messages have any prior knowledge of whom is receiving this event and nothing is hardcoded.

Using such patterns, you can decouple your user interface from the inner workings of your application easier than before. In our little game we have stuff such as objects broadcasting events like “exploded” and “died” so that other objects can react. Since in games you tend to create and destroy objects at runtime a lot, this library makes our life easier.

This library is released in the public domain. Use it as you see fit, can’t sue me. To download this library, use the link on the sidebar (or link below if you’re using a mobile device).