John O'Duinn: RelEngCon 2014 registration is now open! |
In case you missed the announcements, RelEngConf 2014 is officially now open for registrations. This follows the inaugural and wildly successful Release Engineering conference , held in San Francisco on 20may2013, as part of ICSE 2013. More background here.
Last year’s event was great. The mixture of attendees and speakers, from academia and battle-hardened industry, made for some riveting topics. So I already had high expectations for this year… no pressure on the organizers! Then I heard this years will be held in Google HQ MountainView, and feature opening keynotes from Chuck Rossi (RelEng, Facebook, click for linkedin profile), and Dinah McNutt (RelEng, Google, click for linkedin profile). Looks like RelEngConf 2014 is already lining up to be special also.
If you build software delivery pipelines for your company, or if you work in a software company that has software delivery needs, I recommend you follow @relengcon, block off April 11th, 2014 on your calendar and book now. It will be well worth your time.
See you there!
John.
http://oduinn.com/blog/2014/03/08/relengcon-2014-registration-is-now-open/
|
James Long: Open-Sourcing My Gambit Scheme iOS Game from 2010 |
Back in 2009-2010, I got Gambit Scheme running on iOS and decided to build a game with it. The result was Farmaggedon, a stupid game where you blow up farm animals to avoid being hit by them.
I blogged about my progress working with Scheme on iOS back then and evidently a lot of people were inspired by it. This was the main blog post, in addition to a bunch of videos. Recently another iOS game was featured on Hacker News that was written in Gambit Scheme, and it inspired me to dredge up the source of my game and completely open source it and talk about it.
I used to work with Lang Martin and Ben Weaver at a small webdev shop right out of college. They were a little older than me and far more technically grounded than I was at the time. Occasionally I would hear "lisp" and "scheme" murmured around the office while trying to focus on my C++ game engine side project, and I thought they were just trying to sound cool.
Boy was my mind about to be blown. Eventually we all decided to play around with Scheme and see if we could use it internally. I knew nothing about it, but I tried to keep up with the conversation and more often than not ended up saying foolish things. Tired of feeling out of my depth, I committed to studying Scheme and it still influences me to this day. This is why it's so important to surround yourself with people smarter than you. I got lucky.
Fast-forward a few years later, I was feeling burned out at my job and decided to quit and try freelancing. I set aside the first few months to try and make an iOS game (this was right around the time iOS was exploding). Having fallen in love with Scheme, I endeavoured to make a game with Scheme and prove that it can be practical and performant, as well as making you more productive.
And so I made Farmageddon.
Enough talking, here's the source. You're looking at a completely unfiltered, raw project. Everything I was thinking of is in there somewhere. You're also looking at the messiest project with the worst code, ever.
I was so na"ive back then. Set aside a couple months to build a game from scratch, including porting a whole language to a completely new platform? Are you kidding me?
I ported Gambit Scheme to iOS, which basically just means cross-compiling with the right options and writing the necessary FFIs. The actual port wasn't too much work, which was exciting but dangerous because it blinded me to the fact that I would have to build everything myself. Not only was I lacking an OpenGL rendering library, I didn't even have access to the OpenGL API. I had to write an FFI for that. (Actually, I wrote a Scheme program that parsed C++ header files and auto-extracted it.)
Additionally, I created sounds, 3d models, game mechanics, user interfaces, and a basic 3d engine. See all the resources here. I did hire a local designer to make some really cool gritty nuclear farm graphics for the game, but everything else I did myself. Which is why the game is terrible.
Regardless of how badly Farmageddon failed commercially, it was one of the most transformative experiences of my life. I learned tons about project scope, marketing, games, and a lot of other stuff. But even more, I got to experience working in a minimal but powerful language that I could shape to my needs, with a REPL/debugger always there to incrementally play with things.
It wasn't just continuations, green threads, macros, records, and tail-call optimizations that made me a better programmer. It was the idea of incremental development, where you could always redefine a function at run-time to try something new, or inspect and change any data structure. We've come close to that with browser devtools, but the experience still isn't quite what it should be.
So if you haven't aready, you really should learn a Lisp. Personally I like Gambit, but Chicken and Racket are really good too. Clojure is great too, just a different flavor because it's not a minimal Scheme. It doesn't matter. Learn one of them.
These are some videos I made showing off the real-time REPL and debugger. The first two were the most popular.
There are a few other ones as well.
The code is incredibly messy, but I feel warm and nostalgic looking at it. There are a few interesting things to point out about it.
Most of the Obj-C code is in src/app
. The entry point is in main.m which initializes and configures the Gambit virtual machine. EAGLView.mm
is where most of the code lies to interact with the iOS UI.
The main entry point for Scheme is in src/init.scm
. At that bottom of the file are two FFI functions: c-init
and c-render
. Those are exposed as init
and render
at the C level and the Obj-C code calls into them.
All of the FFIs are in src/ffi
. I think I wrote most of them by hand, and auto-generated a few of them. What's need about Gambit is that you can embed any kind of C/C++/Obj-C code. For example, here is the FFI for invoking methods in the iOS view for changing the UI. The scheme methods embed Obj-C code straight into them. You can see more of this in the iOS FFI which lets me allocate native iOS data structures. Lastly, you can see my attempts at optimizations by converting Scheme vectors into native C arrays.
The main game loop is in farmageddon.scm
. Most of the work is in the various screens, like level.scm
which renders and updates the main game.
The main component of the game engine is in src/lib/scene.scm
. I used Gambit's native record types and wrote a macro to generate fields that dynamically dispatched of the type for making game entities.
All of my tests were simply top-level Scheme code that I live evaluated when the game was running. No automation for me!
Gambit has a powerul cooperative threading system, and I used it extensively. The game and sound system each had a thread and would send messages to the main thread for changing the game state. Each level had a thread running to fire off events at random intervals, and I could simply call thread-sleep!
to wait for a certain period. Note that these aren't real threads, just cooperative so it was all safe.
The remote debugger is in the emacs
directory and my Emacs integration was called grime. Since I had a live REPL to my game in Emacs, I even wrote helper functions in Emacs to change game state and bound them to keys so I could quickly invoke them.
There's a lot more in there, and like I said it's very messy. But there's a lot of gems in there too. I hope it continues to inspire others.
http://jlongster.com/Open-Sourcing-My-Gambit-Scheme-iOS-Game-from-2010
|
Selena Deckelmann: Weekly Feminist Work in Tech by Mozillians roundup – Week of March 3, 2014 |
We have a ton of individual work done by MoFo and MoCo employees related to feminism, feminist activism and the larger technology community. So much is happening, I can barely keep track!
I’ve reached out to a few people I work with to get some highlights and spread the word about interesting projects we’re all working on. If you are a Mozillian and occasionally or regularly work on feminist issues in the tech community, please let me know! My plan is to ping people every Friday morning and post a blog post about what’s happened in the last week.
Without further ado:
Dispatch from me, Selena Deckelmann:
Dispatch from Liz Henry:
Dispatch from Lukas Blakk:
Dispatch from Larissa Shapiro:
Anything else that’s come up in the last week, or that you’d like Mozillians to know about? Let me know in the comments!
|
Ben Hearsum: This week in Mozilla RelEng – March 7th, 2014 |
Major Highlights:
Completed work (resolution is ‘FIXED’):
In progress work (unresolved and not assigned to nobody):
http://hearsum.ca/blog/this-week-in-mozilla-releng-march-7th-2014/
|
Ludovic Hirlimann: Thunderbird 28.0b1 is out and why you should care |
We’ve just released another beta of Thunderbird. We are now in the middle of the release cycle until the next major version is released to our millions of daily users. (we’ve fixed 200+ bugs since the last major release (version 24)). We currently have less than 1% of our users - using the beta and that’s not enough to catch regressions - because Thunderbird offers mail, newsgroups and rss feeds we can’t cover the usage of our user base. Also many companies out there sell extensions for spam filtering, for virus protection and so forth. The QA community just doesn’t have the time to try all these and run these with Thunderbird betas to find issues.
And that’s where you dear reader can help. How you might ask well here is a list of examples of how you can help :
If you find issues let us know either thru bugzilla or thru the support forums, so we can try to address them.
ps the current download page says English only because of a bug in our build infrastructure for windows. Linux and Mac builds are available localized.
|
Al Billings: TrustyCon Videos Available |
TrustyCon 2014 (maybe the only one ever) happened the other week as a competitor to the RSA convention because of perceived RSA collaboration with the NSA and all of the kerfuffle around the NSA and surveillance this last year. As they say on their site, “We welcome all security researchers, practitioners and citizens who are interested in discussing the technical, legal and ethical underpinnings of a stronger social contract between users and technology.”
The event sold out quickly so I was unable to attend. Helpfully, it was livestreamed, making it available to everyone and the resulting video was put up on youtube. Unfortunately, this video is one, ginormous, seven hour video. I don’t know about you but I like my viewing in smaller chunks. I also tend to listen to talks and presentations, especially when there is no strong visual component, by saving the audio portion of it to my huffduffer account and listening to the resulting feed as a podcast.
I took it on myself to do a quick and dirty slice and dice on the seven plus hour video. It isn’t perfect (I’m a program manager, not a video editor!) but it works. I’ve uploaded the resulting videos to my youtube channel in order to not destroy any servers I own. You can find the playlist of them all here but I’ve also included the videos embedded below.
Additionally, I extracted the audio from each of these files and put an audio collection up on the Internet Archive, for people like me who just want to listen to them.
TrustyCon 2014 - Opening Remarks
TrustyCon 2014 - The Talk I Was Going to Give at RSA
TrustyCon 2014 - The Laws and Ethics of Trustworthy Technology
TrustyCon 2014 - Joseph Menn Interviews Bruce Schneier
TrustyCon 2014 - Securing SecureDrop
TrustyCon 2014 - New Frontiers in Cryptography
TrustyCon 2014 - Trusted Computing Tech and Government Implants
TrustyCon 2014 - Community Immunity
TrustyCon 2014 - Redesigning NSA Programs to Protect Privacy
TrustyCon 2014 - Thank You and Goodbye
http://feedproxy.google.com/~r/InPursuitOfMysteries/Mozilla/~3/ESUhUPvaOD4/
|
Jim Chen: Fennec App Not Responding (ANR) Dashboard |
Over the last few months, I've been working on an improved App Not Responding (ANR) dashboard for Fennec, which is now hosted at telemetry.mozilla.org/hang/anr. With the help of many people, I'm glad to say that the dashboard is now mature enough to be a useful tool for Fennec developers.
The idea of ANR/hang reporting is similar to crash reporting — every time the Fennec UI becomes unresponsive for more than five seconds, Android would show an “App Not Responding” dialog; the ANR Reporter detects this condition and collects these information about the hang:
The ANR Reporter is enabled on Nightly and Aurora builds only, and if the user has not opted out of telemetry, the collected information is sent back to Mozilla, where the data are aggregated and presented through the ANR Dashboard. Because the debug logs may contain private information, they are not processed and are only available internally, within Mozilla.
The ANR Dashboard presents weekly aggregated data collected through the ANR reporter. Use the drop-down list at the top of the page to choose a week to display.
Data for each week are then grouped by certain parameters from ANR reports. The default grouping is “appName”, and because ANR reports are specific to Fennec, you only see one column in the top hangs chart labeled “Fennec”. However, if you choose to group by, for example, “memsize”, you will see many columns in the chart, with each column representing a different device memory size seen from ANR reports.
Each column in the top hangs chart shows the number of hangs, and each column is further divided into blocks, each representing a different hang. Hover over the blocks to see the hang stack and the number of hangs. This example shows 8 hangs with that signature occurred on devices with 768MB of memory over the past week.
Colors are preserved across columns, so the same colored blocks all represent the same hang. The blue blocks at the bottom represent all hangs outside of the top 10 list.
To the right of the top hangs chart is the distributions chart. It shows how different parameters are distributed for all hangs. Hover over each block to see details. This example shows 36% of all hangs occurred on devices running Android API level 15 (corresponding to Android 4.0.3-4.0.4 Ice Cream Sandwich) over the past week.
The distributions chart can also be narrowed down to specific groups. This would let us find out, for example, on devices having 1GB of memory, what is the percentage of hangs occurring on the Nightly update channel.
Clicking on a block in the top hangs chart bring up a Hang Report. The hang report is specific to the column that you clicked on. For example, if you are grouping by “memsize”, clicking on a hang in the “1G” column will give you one hang report and clicking on the same hang in the “2G” column will give you a different hang report. Switch grouping to “appName” if you want to ignore groups — in that case there is only one column, “Fennec”.
The hang report also contains a distributions chart specific to the hang. The example above shows that 14% of this hang occurred on Nexus 7 devices.
In addition, the hang report contains a builds chart that shows the frequency of occurrence for different builds. This example shows there was one hang from build 20140224030203 on the 30.0a1 branch over the past week. The chart can be very useful when verifying that a hang has been fixed in newer builds.
Last but not least, the hang report contains stacks from the hang. The stacks in the hang report are more detailed than the stack shown on the main page. You can also look at stacks from other threads — useful for finding deadlocks!
When comparing the volume of hangs, a higher number can mean two things — the side with higher number is more likely to hang, or the side with higher number has more usage. For example, if we are comparing hangs between devices A and B, and A has a higher number of hangs. It is possible that A is more prone to hanging; however, it is also possible that A simply has more users and therefore more chances for hangs to occur.
To provide better comparisons, the ANR Dashboard has a normalization feature that tries to account for usage. Once “Normalize” is enabled at the top of the dashboard, all hang numbers in the dashboard will be divided by usage as measured by reported uptime. Instead of displaying the raw number of hangs, the top hangs chart will display the number of hangs per one thousand user-hours. For example, 10 hangs per 1k user-hour means, on average, 1000 users each using Fennec for one hour will experience 10 hangs combined; or equivalently, one user using Fennec for 1000 hours will experience 10 hangs total. The distributions chart is also updated to reflect usage.
As a demonstration, the image below shows un-normalized hangs grouped by device memory size. There is no clear trend among the different values.
The image below shows normalized hangs based on the same data. In this case, it is clear that, once usage is accounted for, higher device memory size generally corresponds to lower number of hangs. Note that the “unknown” column became hidden because there is not enough usage data for devices with “unknown” memory size.
At the moment, I think uptime is the best available measurement for usage. Hopefully there will be a better metric in the future to provide more accurate results. Or let me know if it already exists!
http://www.jnchen.com/blog/2014/03/fennec-app-not-responding-dashboard
|
Jess Klein: Designing BadgeKit |
![]() |
We did user testing with members of the Hive in Brooklyn. |
http://jessicaklein.blogspot.com/2014/03/on-designing-badgekit.html
|
Peter Bengtsson: Github Pull Request Triage tool |
Last week I built a little tools called github-pr-triage. It's a single page app that sits on top of the wonderful GitHub API v3.
Its goal is to try to get an overview of what needs to happen next to open pull requests. Or rather, what needs to happen next to get it closed. Or rather, who needs to act next to get it closed.
It's very common, at least in my team, that someone puts up a pull request, asks someone to review it and then walks away from it. She then doesn't notice that perhaps the integrated test runner fails on it and the reviewer is thinking to herself "I'll review the code once the tests don't fail" and all of a sudden the ball is not in anybody's court. Or someone makes a comment on a pull request that the author of the pull requests misses in her firehose of email notifictions. Now she doesn't know that the comment means that the ball is back in her court.
Ultimately, the responsibility lies with the author of the pull request to pester and nag till it gets landed or closed but oftentimes the ball is in someone elses court and hopefully this tool makes that clearer.
Here's an example instance: https://prs.paas.allizom.org/mozilla/socorro
Currently you can use prs.paas.allizom.org for any public Github repo but if too many projects eat up all the API rate limits we have I might need to narrow it down to use mozilla repos. Or, you can simply host your own. It's just a simple Flask server
I'm getting more and more productive with Angular but I still consider myself a beginner. Saying that also buys me insurance when you laugh at my code.
So it's a single page app that uses HTML5 pushState
and an angular $routeProvider
to make different URLs.
The server simply acts as a proxy for making queries to api.github.com
and bugzilla.mozilla.org/rest
and the reason for that is for caching.
Every API request you make through this proxy gets cached for 10 minutes. But here's the clever part. Every time it fetches actual remote data it stores it in two caches. One for 10 minutes and one for 24 hours. And when it stores it for 24 hours it also stores its last ETag so that I can make conditional requests. The advantage of that is you quickly know if the data hasn't changed and more importantly it doesn't count against you in the rate limiter.
|
Pierros Papadeas: Contribution Activity Metrics – Early attempts and fails |
As we examined with the intro post, the need for contribution activity metrics for different contribution areas in Mozilla has been high. It was only logical that many attempts were made to address this issue, mainly on the area-level (and not in Mozilla-wide level). Almost all of them had zero interaction between each other, and there was a general lack of vision for an holistic approach to the problem.
After one of our initial gatherings as the (then meta-) Community Building Team, a couple of people brainstormed together a possible solution to our problem. Together with Josh Matthews, Giorgos Logiotatidis, Ricky Rosario and Liz Henry a new approach was born. Enter project Blackhole!
Project Blackhole was a collaborative effort to develop and maintain an infrastructure of gathering and serving raw contribution data within Mozilla. We created a data architecture and flow together with a data Schema and specification to describe contribution activities for the first time in Mozilla. The project went far enough (thanks to Josh) to create a working prototype for back-end and front-end.
What went right:
Having a single project to drive multiple metrics efforts forward got people engaged. Everyone saw the value of de-duplicating efforts and tapping into that as a resource. Also during the process of designing and testing it we were able to self-identify as a group of people that share interest and commitment towards a common goal. Most of those people went on to become active members of the Systems and Data Working Group. Finally, we ended up with a common language and descriptions around contribution activities, a really valuable asset to have for the future of cross-project tracking.
What went wrong:
Building *anything* from scratch can be hard. Really hard. First, everyone (rightfully) questions the need to build something instead of re-using what is out there. Once you get everyone on board, development and deployment resources are hard to find especially on a short notice. On top of that Blackhole’s architecture *seemed* logical enough in theory, but was never tested in scale so everyone involved was not 100% sure that our architecture would survive stress tests and the scale of Mozilla’s contribution ecosystem.
PRO TIP: Changing the project name does not help. We went from “Blackhole” to “Wormhole” (and back to “Blackhole”?), to better reflect the proposed data flow (data would not disappear forever!) and people got confused. Really confused. Which is obviously something that is not helpful during conversations. Pick a name, and stick to it!
Lack of a team dedicated to it and inability to get the project listed as a personal goal of people (or teams), halted any progress leading us to a fearsome dead-end.
What we learned:
As with most failures, this one was also really valuable. We learned that:
A way forward?
Having those lessons learned from the process, we sat down last December as a group and re-aligned. We addressed all 5 issues and now we are ready to move forward. And the name of it? Baloo. Stay tuned for more info on our next detailed post
|
Andrew Halberstadt: Add more mach to your B2G |
tl;dr - It is possible to add more mach to your B2G repo! To get started, install pip:
$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py -O - | python
Install b2g-commands:
$ pip install b2g-commands
To play around with it, cd to your B2G repo and run:
$ git pull # make sure repo is up to date $ ./mach help # see all available commands $ ./mach help# see additional info about a command
Most people who spend the majority of their time working within mozilla-central have probably been acquainted with mach. In case you aren't acquainted, mach is a generic command dispatching tool. It is possible to write scripts called 'mach targets' which get registered with mach core and transformed into commands. Mach targets in mozilla-central have access to all sorts of powerful hooks into the build and test infrastructure which allow them to do some really cool things, such as bootstrapping your environment, running builds and tests, and generating diagnostics.
A contributor (kyr0) and I have been working on a side project called b2g-commands to start bringing some of that awesomeness to B2G. At the moment b2g-commands wraps most of the major B2G shell scripts, and provides some brand new ones as well. Here is a summary of its current features:
I feel it's important to re-iterate, that this is *not* a replacement for the current build system. You can have b2g-commands installed and still keep your existing workflows if desired. Also important to note is that there's a good chance you'll find bugs (especially related to the bootstrap command on varying platforms), or arguments missing from your favourite commands. In this case please don't hesitate to contact me or file an issue. Or, even better, submit a pull request!
If the feature set feels a bit underwhelming, that's because this is just a first iteration. I think there is a lot of potential here to add some really useful things. Unfortunately, this is just a side project I've been working on and I don't have as much time to devote to it as I would like. So I encourage you to submit pull requests (or at least submit an issue) for any additional functionality you would like to see. In general I'll be very open to adding new features.
In the end, because this module lives outside the build system, it will only ever be able to wrap existing commands or create new ones from scratch. This means it will be somewhat limited in what it is capable of providing. The targets in this module don't have the same low-level hooks into the B2G and gaia repos like the targets for desktop do into gecko. My hope is that if a certain feature in this module turns out to be especially useful and/or widely used it'll get merged into the B2G repo and be available by default.
Eventually my hope is that we implement some deeper mach integration into the various B2G repos (especially gaia) which would allow us to create even more powerful commands. I guess time will tell.
|
Christian Heilmann: Translating marketing texts for speaking – an experiment |
As part of the workweek I am currently at I set a goal to give a brownbag on “writing for speaking”. The reasons is that some of the training materials for the Mobile World Congress I recorded were great marketing/press materials but quite a pain to speak into a camera reading them from a teleprompter.
For the record: the original text is a good press release or marketing article. It is succinct, it is full of great soundbites and it brings the message across. It is just not easy to deliver. To show the issues and explain what that kind of wording can come across as I took the script apart. I explained paragraph by paragraph what the problems are and proposed a replacement that is more developer communication friendly. You can see the result on GitHub:
http://codepo8.github.io/marketing-translation/
The result is an easier to deliver text with less confusion. Here’s a recording of it to compare.
I will follow this up with some more materials on simpler communication for speaking soon.
http://christianheilmann.com/2014/03/06/translating-marketing-texts-for-speaking-an-experiment/
|
Lawrence Mandel: Lawrence Mandel Joins Mozilla Release Management |
I’m excited to share that I am stepping into a new role with Mozilla as manager of the Release Management team. Below is an e-mail that my friend and manager Sheila Mooney sent to Mozilla employees last week announcing this change.
Date: Fri, 28 Feb 2014 11:19:07 -0800 (PST) From: Sheila Mooney To: team Mozilla Subject: Changes in Release Management All, I am happy to share some changes I am making to my team. Effective immediately, Lawrence Mandel will be moving into the role of Manager of the Release Management team. With the Release Managers in tight collaboration with the Project/Program Managers, we can think beyond just keeping the trains running on time and tighten our focus on quality, metrics and process to ensure we are shipping the best possible products to our users. Lawrence's experience inside and outside Mozilla aligns closely with these goals and I am very excited to see what he does with this role! Lawrence will be transitioning many of his current project management responsibilities to others in my team in order to focus fully on this new challenge. The Web Compatibility Engineers will continue to report to him and Chris Peterson will report to me directly. Please join me in congratulating Lawrence on his new opportunity! Cheers, Sheila
http://lawrencemandel.com/2014/03/06/lawrence-mandel-joins-mozilla-release-management/
|
Byron Jones: happy bmo push day! |
the following changes have been pushed to bugzilla.mozilla.org:
discuss these changes on mozilla.tools.bmo.
http://globau.wordpress.com/2014/03/06/happy-bmo-push-day-79/
|
Taras Glek: More & Faster C-I for Less on AWS |
Amazon ondemand nodes are fantastic for rapid iteration, but using them in production is expensive naivety. It is expensive for Amazon to maintain spare capacity to allow customers to launch any of the wide variety of nodes they offer ondemand. Forecasing demand at Amazon scale can’t be easy. As a result, Amazon recommends that customers buy reserves with an upfront payment then pay a discounted rate after. This is brilliant as it shifts the capacity-planning burden to each customer. This would net us a 60% discount if we we could forecast our AWS usage perfectly.
Fortunately Amazon also has a spot-pricing model. Spot prices can be 70-90% lower than ondemand (we’ve also seen them 50% higher). The downside is that Amazon can kill these nodes at any point and node availability is limited compared to ondemand. Given that Amazon competition can’t match spot prices, Amazon might be selling their unused ondemand capacity at cost. I doubt that anyone smaller than Amazon can maintain their own hardware with salaried ops for less than Amazon’s spot prices.
we spent 2014 retrofitting our continuous integration architecture to cope with failure so we can run more of our workload on spot nodes.
On our January AWS bill we were 30% more cost-efficient. This was accomplished late in the month, we managed to have the bill not go up to cope with a higher-than-ever load. For February we were aiming to drop the bill to under $80K. The following is a summary of where we are.
Amazon S3 is cheap, fast and robust. EC2 is incredibly flexible. Both are great for quickly iterating on cool ideas. Unfortunately most of our infrastructure runs on physical machines. We need to improve our non-elastic inhouse capacity with what we learned in the cloud:
Cloud APIs make cost-oriented architectures fun. Batch nature of c-i is a great match for spot.
In general, spot is a brilliant design pattern, I intend to implement spot workloads on our own infra. It’s too bad other cloud vendors do not offer anything comparable.
http://taras.glek.net/blog/2014/03/05/more-and-faster-c-i-for-less-on-aws/
|
Dave Townsend: Developer Tools meet-up in Portland |
Two weeks ago the developer tools teams and a few others met in the Portland office for a very successful week of discussions and hacking. The first day was about setting the stage for the week and working out what everyone was going to work on. Dave Camp kicked us off with a review of the last six months in developer tools and talked about what is going to be important for us to focus on in 2014. We then had a little more in-depth information from each of the teams. After lunch a set of lightning talks went over some projects and ideas that people had been working on recently.
After that everyone got started prototyping new ideas, hacking on features and fixing bugs. The amount of work that happens at these meet-ups is always mind-blowing and this week was no exception, even one of our contributors got in on the action. Here is a list of the things that the team demoed on Friday:
This only covers the work demoed on Friday, a whole lot more went on during the week as a big reason for doing these meet-ups is so that groups can split off to have important discussions. We had Darrin Henein on hand to help out with UX designs for some of the tools and Kyle Huey joined us for a couple of days to help work out the final kinks in the plan for debugging workers. Lot’s of work went on to iron out some of the kinks in the new add-on SDK widgets for Australis, there were discussions about memory and performance tools as well as some talk about how to simplify child processes for Firefox OS and electrolysis.
Of course there was also ample time in the evenings for the teams to socialise. One of the downsides of being a globally distributed team is that getting to know one another and building close working relationships can be difficult over electronic forms of communication so we find that it’s very important to all come together in one place to meet face to face. We’re all looking forward to doing it again in about six months time.
http://www.oxymoronical.com/blog/2014/03/Developer-Tools-meet-up-in-Portland
|
Brian R. Bondy: Investing in our community through Code Firefox |
Mozilla 2014 Goal
As Deb Cohen (VP, Chief of People) said:
Our goal this year is to find new ways for people to become part of us.
This year we have a very aggressive goal, for all of us to look inside our teams, our work, our organization, and create some of these pathways.
What is Code Firefox?
The Code Firefox site (@codefirefox), is a new video and exercise framework which is highly inspired by Khan Academy. Its purpose is for on-boarding contributors and sharpening the skills of existing community members.
People learn differently. Providing different ways to consume information is crucial to growing Mozilla. For many people, Code Firefox provides an easier, and more consumable approach to learning how to contribute to Mozilla.
Would you like to start contributing patches to Mozilla? Start here
Testimonial
One prime example of Code Firefox's usefulness is of a new contributor who joined last month, and actively uses Code Firefox. He has already submitted 18 patches.
In a personal email Anuj Agarwal (Student at Vellore Institute of Technology) writes:
Just for fun, here is the patch I got reviewed today! And it was made possible only because of your tutorials. Thank you!
Code Firefox statistics
The site has not been promoted yet, but it already has:
What has Code Firefox accomplished?
51 videos, 3 exercises focused mostly on on-boarding new Firefox developers
Videos are captioned
Ability to track watched videos and completed exercises when logged in
Exercise framework that parses code and gives immediate feedback and experience
Videos and Exercises are accessible and searchable through tags
Where is the Code Firefox site going? (Code Firefox Goals)
Opening up the ability to post videos to other people
Ability to create different "Outline tracks", for example, a QA track.
More video and exercise content being added, initially for Firefox OS and Desktop
Integrate with Mozilla Open Badges
Working more closely with Student Ambassadors
Implement a point system
Interoperability with Mozillians in creative ways
Implementing hints for exercises
Highlights of benefits gained by Mozilla from the site
Brings in new contributors
Retains new and existing contributors
Sharpens skills of existing members of our community
Code Firefox uses and promotes Persona
Code Firefox will use and promotes Open Badges
Will train employees with advanced skills with advanced tracks
Media coverage of Code Firefox so far
Some people have taken the time to write about Code Firefox:
What our community is saying
Robert O'Callahan (Distinguished Engineer):
In all my years with Mozilla I've never seen such an exciting effort to engage new Firefox contributors. Well done!
Josh Matthews (Community Engagement Lead):
To me, Code Firefox's value lies in the clear, forthright instruction provided, along with the bite-sized nature of the lessons, which provides a counterpoint to the existing long-winded and slightly overwhelming textual documentation. I have interacted with countless potential volunteers over the past several years, and there is a non-trivial segment of the population that immediately looks for instructional videos to aid in understanding. In addition, perhaps counter-intuitively, video explanations are often preferred by non-native English speakers as a visual reference to aid in comprehension, and I'm often asked at events whether these exist for Firefox development.
Chris Peterson (Engineering Program Manager):
Facebook has its infamous bootcamp for new employees. Code Firefox should be required watching, end-to-end, for all new Mozilla engineers. Even non-engineers can benefit from the introductory videos. Given the positive community response and patches to prove it, Brian has shown that this e-learning format works. More than just lessons, Brian has built Code Firefox as a platform. I would love to see other Mozilla teams contribute videos for their feature areas. Even within Mozilla we have some technology silos that could learn from each other.
Lukas Blakk (Senior Release Manager):
Getting into Open Source contribution is not always a clear path. In my experience, it took me 4 different attempts (MDN, Sumo, QA, AMO) before I found my path for a deeper dive and got 'hooked' on contributing to Mozilla. These videos and the technical mentorship they provide is already proving to be a valuable resource for engaging new coders and that is an area that can be hardest for a newcomer to break into alone since we are now such a legacy project. Fortunately Code Firefox is also a budding online community and that ensures no one is ever truly alone as they move up in their learning. Having someone (or several people) getting to focus more time on this particular pathway will ensure more robust community surrounds our software products and makes what we give back a product that is a reflection of that wider community. Win-win.
Jared Wein (Firefox Engineer):
Code Firefox is an amazing site that is full of detailed, finely-crafted videos that guide interested people from being Firefox users to Firefox contributors. It is an invaluable tool and one that I wished was around when I was just getting started contributing to Firefox. Projects the size of Firefox can be very daunting and scary to newcomers. The tutorials on the site bring a level of comfort not found in many other places, and walk people through steps at a pace that they can handle. Before they know it they are knee deep in a great community of people who are working together to make Firefox and the Internet a better place for everyone.
David Boswell (Community Engagement Lead):
Code Firefox and other efforts to help support coding contributors are crucial to growing and empowering new members of the Mozilla community.
Kamil Jozwiak (QA Engineer):
Code Firefox has helped me out tremendously while I was contributing to Mozilla. It helped me complete my first patch and it's an amazing resource to sharpen your skills. I'm a Code Firefox lifer and visit the site on a daily basis to see if anything new has been added. I really believe in this project and I know from first hand experience how powerful this resource can be in helping people interested in the Mozilla mission.
Rodrigo Silveira (Firefox Engineer):
Getting started with contributing to any code base can be daunting. Code Firefox videos are presented in such a friendly way that makes contributing to Firefox a lot more approachable. Being able to learn through video at your own pace is convenient too, you can get from zero to landing patches much faster. I liked it so much I had to help translate it so more people could benefit.
Marco Mucci (Engineering Program Manager):
Part of wanting to make a difference is learning how to make one. Code Firefox is the tool of choice for learning how to contribute to Mozilla.
Samuel Foster
@codefirefox has grown into a great resource for lifting you over the learning curve involved in making firefox awesomer. Nice work.
David Bolter:
If you want to watch video tutorials on how to hack on Firefox, follow @codefirefox.
Mark Finkle:
The Module Owner and Becoming A Reviewer videos on @codefirefox are awesome: http://codefirefox.com/#reviewing-code
Till Schneidereit:
This really is fantastic - I wish I'd had something like these videos when I started contributing.
Margaret Leibovic:
I know I'm late to the party, but @codefirefox is seriously awesome. Great work by @brianbondy!
Lucas Rocha:
If you've been considering contributing to Firefox, @codefirefox is definitely a good start. Big thanks @brianbondy! http://buff.ly/18LSSZZ
Asa Dotzler:
Mozillian @brianbondy has started publishing video tutorials on Firefox hacking. http://codefirefox.com/videos Follow @codefirefox for updates.
Christian Heilmann:
Superb framework to create code tests by @brianbondy https://github.com/bbondy
Mozilla Pakistan:
@codefirefox.com now supports accounts via @MozillaPersona You can track which videos you’ve watched too - pic.twitter.com/I4EizTAzbk
Mozilla India:
Becoming a Mozilla contributor is now even more easy. http://codefirefox.com/ site aim to outline the process... http://fb.me/1ChAz9qPE
Ian Elliot:
Other open source projects could also benefit from the same sort of idea - are you listening Linus?
Alessio Placitelli:
Thank you @brianbondy for both http://codefirefox.com and http://goo.gl/bybZKK ! Very helpful for new #Firefox contributors!
Jennie Rose Halperin:
http://codefirefox.com/ wanna get deep with your code? totally digging this @mozilla
Azeem Arshad:
codefirefox.com/ these videos are awesome. setting up firefox dev setup is pretty easy
Rodrigo Ludgero:
Do the right thing. Some lessons to be learned. http://codefirefox.com/ I thought it was a great initiative. #codefirefox @codefirefox
serge2k:
This is awesome, and I wish more projects would do it.
iamleppert:
+1 for whoever's idea this was. We need more guides like this that ask that answer the basic questions on just dev process and work flows. Let's make it easier for people to contribute!
Thaddee Tyl:
@FremyCompany I agree. I think the http://codefirefox.com/ project is our best bet. Not sure if Chrome could have that (let alone Opera, IE…)
Michael Mahemoff:
Encouraging open source contributions, done right by Moz at http://CodeFirefox.com
суперсолэ:
(now a serious tweet) If you're interested in contributing to Firefox, this is a fantastic site: http://codefirefox.com
Ashley Myers:
OMG. This is so awesome. Videos on how the heck to actually contribute to Firefox: http://codefirefox.com cc/ @codefirefox
Mike Rogers:
Decided over my Xmas break I'm going to try and contribute to Firefox somehow http://codefirefox.com
Dongie Agnir:
@codefirefox Just wanted to let you know your website is an excellent resource! Please keep up the great work!
Brian Graham:
This is awesome. I wish this existed when I wrote my first #FireFox patch.
Swarnava Sengupta:
Thank you @codefirefox for such a great collection! Hope it will produce more developer all around the world! :)
Mike Evans:
@angelinamagnum I like the style of @codefirefox, allows someone to get up to speed in an easy to digest manner. so more of that please :)
Michael Kohler:
That's how I did my first patches! RT @codefirefox: [...]feature from start to finish, without knowing the code
Would you like to create Code Firefox videos?
Please contact me at bbondy[at]gmail.com if you'd like to make a series of videos on Code Firefox for your area of expertise.
|
Joel Maher: quick tip – when all else fails – “reseat” |
While chatting with dminor the other day he mentioned his camera stopped working and after a reboot there was no mention of the camera hardware in the logs or via dmesg. His conclusion, the camera was not working. Since I have the same hardware and run Ubuntu 13.10 as he does he wanted a sanity check. My only suggestion was to turn off the computer, unplug it and take the battery out, wait 30 seconds then reassemble and power on.
Hey my suggestion worked and now dminor has a working camera again.
This general concept of reseating hardware is something that is easily forgotten, yet is so effective.
http://elvis314.wordpress.com/2014/03/05/quick-tip-when-all-else-fails-reseat/
|
Dave Huseby: Hacking B2G: Building with Distcc |
http://blog.linuxprogrammer.org/Hacking%20B2G%3A%20Building%20with%20Distcc.html
|
Soledad Penades: Failproof AJAX requests in Firefox OS |
The app type has to be at least privileged. No, web (hosted) apps won’t work with different domains if CORS is not enabled there.
Add the systemXHR permission too, or your XMLHttpRequests to domains without CORS enabled will instafail.
Example of the syntax for these two things in the manifest:
{
"type": "privileged",
"permissions": {
"systemXHR": {
"description": "Allows loading remote content"
}
}
}
The magic word being the mozSystem property:
request = new XMLHttpRequest({ mozSystem: true });
You should now be able to use the request in the usual way. Remember to add an error handler in case it fails!
We are using these superfailproof requests in our privileged app template to load definitions from MDN. Have a look!
http://soledadpenades.com/2014/03/05/failproof-ajax-requests-in-firefox-os/
|