Sean McArthur: intel 0.4 |
I released v0.4 of intel last month, but never got around to writing up what’s new.
I started out all this logging business claiming we should console.log() all the things. intel can easily handle any libaries using console.log
. However, I started to see how frustrating it could be for libraries to be spilling logs all over stdout without being asked. dbug is a utility for libraries to provide logging, but to be quiet by default.
intel v0.4 includes the ability to play nice with dbug (and debug). You can call intel.console({ debug: someStr })
to turn on dbug in libraries matching your string. Due to how debug works, by checking an environment variable right when it is required, you’ll need to run intel.console()
before requiring any library that uses debug.
As with every release, things get faster. According to meaningless benchmarks, we’re now ~2x faster than winston. Whatever that means.
Not part of the actual release, but released at the same time, is an intel-syslog library. This provides a simple syslog handler that you can easily use in your app.
require('intel').config({
handlers: {
'syslog': {
'class': 'intel-syslog',
'address': '127.0.0.1',
'facility': 'user' //etc...
}
},
loggers: {
'myapp': {
'handlers': ['syslog']
}
}
});
I’ve created a wiki page to contain handlers such as intel-syslog that work with intel. If you create or find a library for intel, please add it to the list so we all can be happier logging things.
|
Soledad Penades: Shadow DOM in Firefox! |
Wow, this has been a nice surprise to start the year :-)
If you want to start creating shadow roots like there’s no tomorrow, you’ll need two things:
No restart was required (at least on my case), and BAM! I could start doing things such as…
var container = document.createElement('div');
container.createShadowRoot();
Worry not. Following established monkey patching traditions, I’ve created an small shim that monkey patches browsers that only implement webkitCreateShadowRoot so they can use createShadowRoot instead. Here’s WebComponentsMonkeyPatch in all its glory. Once you include it in your projects, you can start writing future-proof code today (and updating older webkit- based code to use unprefixed methods).
I have also written this simple example demonstrating how to create unprefixed Shadow Roots like there’s no tomorrow.
The umbrella bug for tracking Web Components work in Firefox is still not resolved, which means that this might not work totally as you’d expect when you get excited and start playing with this. In which case, please file bugs and help us make Firefox better ^_^
|
Nicholas Nethercote: YEINU: Your Experience Is Not Universal |
I’ve lost count of the number of times I’ve heard statements like the following.
Firefox crashes ten times a day for me. I don’t understand how anyone can use it.
There’s a simple answer: for most people it doesn’t crash ten times a day. But the person making the statement hasn’t realized that what links the first sentence to the second is an assumption — that other people’s experiences are the same. This is despite the fact that browsers are immensely complex, highly configurable, and used in many different ways on an enormous range of inputs.
(BTW, in case it’s unclear: I don’t think it’s ok for Firefox to crash ten times a day for anyone.)
My mental rebuttal to this kind of thinking is YEINU, short for “your experience is not universal”. It’s something of a past-tense dual to the well-known YMMV (“your mileage may vary”).
Although I’ve mostly thought about this in the context of browser development, it’s not hard to see how it relates to many facets of life. In particular, just this morning I was thinking about it in relation to this question on Quora and the general notion of privilege. Out of curiosity, I googled the exact phrase (using quotes), and while I got several hits on software forums (such as this and this, the latter being on a Mozilla forum), three of the five highest-ranked hits were from posts on feminist blogs (#1, #4, and #5). Interesting!
So, next time you’re puzzled by someone’s reaction to something, it might be worth considering if YEINU.
https://blog.mozilla.org/nnethercote/2014/01/02/yeinu-your-experience-is-not-universal/
|
Alex Clark: Pillow 2-3-0 is out! |
Pillow is the "friendly" PIL fork by Alex Clark and Contributors. PIL is the Python Imaging Library by Fredrik Lundh and Contributors
Since Pillow 2.0, the Pillow Team has adopted a quarterly release cycle; as such, Pillow 2.3.0 has just been released. Here's what's new in this release:
Thanks to everyone who contributed fixes to 2.3.0, especially Eric Soroos AKA "wiredfool" who is officially now "Pillow Man #2" [1].
Additionally, we've forked the PIL handbook and have included it with our documentation here: http://pillow.readthedocs.org. Special thanks to Stephen Johnson AKA "irksep" for working on this.
Lastly, I'm very grateful to Christopher Gohlke for producing Windows Egg, Exe, and Wheel distributions to accompany each source release. I suspect Christopher will produce his 2.3.0 distributions any second now at which point I will upload them to PyPI via twine.
Enjoy Pillow 2.3.0! And please report any issues you find here: https://github.com/python-imaging/Pillow/issues
[1] | In case I'm hit by a bus, Eric Soroos has the keys. |
|
Nicholas Nethercote: How I work on Mozilla code |
Most Mozilla developers have their own particular set-ups and work-flows, and over time develop various scripts, shortcuts, and habits to make their lives easier. But we rarely talk about them.
In this post I will describe various interesting aspects of how I work on Mozilla code, in the hope that (a) it will give other people useful ideas, and (b) other people will in turn give me useful ideas.
I have two machines: a quite new and very fast Linux desktop machine, on which I do 99% of my coding work, and a two-year old Macbook Pro, on which I do little coding but a lot of browsing and other non-development stuff. In theory my Linux desktop also has a Windows VM on it, though in practice that hasn’t happened yet!
I use Ubuntu on my Linux machine. I don’t really enjoy sysadmin-type stuff, so I use the most widely-used, vanilla distribution available. That way, if something goes wrong there’s a decent chance somebody else will have had the same problem.
I do most of my work on mozilla-inbound. I clone that into a “master” repository, that I leave untouched, called ws0
. Then I have nine local clones of ws0
, called ws1
..ws9
. I don’t have trouble filling the nine local clones because I usually have multiple different coding tasks in flight at any one time. Indeed, this is a necessity when dealing with the various latencies involved with development, such as compilation and local test runs (minutes), try server runs (hours), and reviews (days).
I use Mercurial queues and am quite content with them, though I am looking forward to changeset evolution becoming stable. I tried git once but didn’t like it much; the CLI is awful, the speed wasn’t noticeably better than Mercurial (and this was before I upgraded from Mercurial 1.8 to 2.7, which is much faster), and it was inconvenient to have to move patches over to a Mercurial repo before landing.
One problem I had with Mercurial queues was that I would often type hg qref patchname
when I meant hg qnew patchname
. This can lead to surprising and annoying mix-ups with patches, so I wrote a pre-hook for hg qref
— if I give it an argument that isn’t -e
or -u
, I almost certainly meant hg qnew
, so it aborts with a reminder. This has saved me some hassle on numerous occasions.
Some Mercurial extensions that I particularly like are color (colour output), progress (progress bars for slow operations), record (commit part of a change) and bzexport (upload patches to Bugzilla from the command line).
Even though I do most of my work with mozilla-inbound, pushing to try from mozilla-inbound isn’t a great idea, because every so often you’ll catch some test breakage caused by someone else’s patch and then you have to work out if it’s your fault or was pre-existing. So recently I took RyanVM’s advice and wrote a script that transplants the patch queue from a mozilla-inbound repo to a mozilla-central repo, and then pushes to try. This avoids the test bustage problem, but occasionally the patches don’t apply cleanly. In that case I just push from the mozilla-inbound repo and deal with the risk of test bustage.
I mostly use Clang, though I also sometimes use GCC. Clang is substantially faster than GCC, and its error messages are much better (though GCC’s have improved recently). Clang’s generated code is slightly worse (~5–10% slower), but that’s not much of an issue for me while developing. In fact, faster compilation time is important enough that my most common build configuration has the following line:
ac_add_options --enable-optimize='-O0' # worse code, but faster builds
Last time I measured (which was before unified builds were introduced) this shaved a couple of minutes off build times, as compared to a vanilla --enable-optimize
build.
I have a lot of mozconfig files. I switch frequently between different kinds of builds, so much so that all my custom short-cut commands (e.g. for building and running the browser) have a mandatory argument that specifies the relevant mozconfig. As a result, the mozconfig names I use are much shorter than the default names. For example, the following is a selection of some of my more commonly-used mozconfigs for desktop Firefox.
Although I never do 32-bit browser builds, I do sometimes do 32-bit JS shell builds, so the ’64' isn’t entirely redundant!
I have a script called mmq
that I use to build the browser. I invoke it like this:
mmq o64
The argument is the mozconfig/objdir name. This script invokes the build and redirects the output to an errors.err
file (for use with quickfix, see below). Once compilation finishes, the script also does some hacky grepping to reprint the first five compilation errors, if they exist, once compilation finishes. I do this to make it easier to find the errors — sometimes they get swamped by the subsequent output. (My use of Quickfix has made this feature less important than it once was, though it’s still a good thing to have.)
I have multiple profiles.
default
: used for my normal browsing.dev
: my standard development profile.dev2
: a second development profile, mostly used if I already am using the dev
profile in another browser invocation.e10s
: a profile with Electrolysis enabled.I have a script called ff
with which I start Firefox like the following.
ff o64 dev
The first argument is the mozconfig, and the second is the profile. Much of the time, this invokes Firefox in the usual way, e.g.:
o64/dist/bin/firefox -P dev -no-remote
However, this script knows about my mozconfigs and it automatically does more elaborate invocations when necessary, e.g. for DMD (which requires the setting of some environment variables). I also wrote it so that I can tack on gdb
as a third argument and it’ll run under GDB.
I use a 2x2 virtual desktop layout.
In each of the top-left and bottom-left screens I have three xterms — a full-height one on the left side in which I do editing, and two half-height ones on the right side in which I invoke builds, hg commands, and sundry other stuff.
In the top-right screen I have Firefox open for general use.
In the bottom-right screen I have a Chatzilla window open.
I use Vim. This is largely due to path dependence; it’s what they taught in my introductory programming classes at university, and I’ve happily used it ever since. My setup isn’t particularly advanced, and most of it isn’t worth writing about. However, I have done a few things that I think are worth mentioning.
Tags are fantastic — they let you jump immediately to the definition of a function/type/macro. I use ctags and I have an alias for the following command.
ctags -R --langmap=C:.c.h.cpp.idl --languages=C --exclude='*dist\/include*' --exclude='*[od]32/*' --exclude='*[od]64/*'
I have to re-run this command periodically to keep up with changes to the codebase. Fortunately, it only takes about 5 seconds on my fast SSD. (My old machine with a mechanical HD took much longer). The coverage isn’t perfect but it’s good enough, and the specification of .idl files in the –langmap option was a recent tweak I made that improved coverage quite a bit.
I now use quickfix, which is a special mode to speed up the edit-compile-edit cycle. The commands I use to build Firefox redirect the output to a special file, and if there are any compile errors, I use Vim’s quickfix command to quickly jump to their locations. This saves enormous amounts of manual file and line traversal — I can’t recommend it highly enough.
In order to use quickfix you need to tell Vim what the syntax of the compile errors is. I have the following command in my .vimrc for this.
" Multiple entries (separated by commas): " - compile (%f:%l:%c) errors for different levels of file nesting " - linker (%f:%l) errors for different levels of file nesting set efm=../../../../../%f:%l:%c:\ error:\ %m,../../../../%f:%l:%c:\ error:\ %m,../../../%f:%l:%c:\ error:\ %m,../../%f:%l:%c:\ error:\ %m,../%f:%l:%c:\ error:\ %m,%f:%l:%c:\ error:\ %m,../../../../../%f:%l:\ error:\ %m,../../../../%f:%l:\ error:\ %m,../../../%f:%l:\ error:\ %m,../../%f:%l:\ error:\ %m,../%f:%l:\ error:\ %m,%f:%l:\ error:\ %m
This isn’t pretty, but it works well for Mozilla code. Then it’s just a matter of doing :cf to load the new errors file (which also takes me to the first error) and then :cn/:cp to move forward and backward through the list. Occasionally I get an error in a header file that is present in the objdir and the matching fails, and so I have to navigate to that file manually, but this is rare enough that I haven’t bothered trying to fix it properly.
One nice thing about quickfix is that it lets me start fixing errors before compilation has finished! As soon as I see the first error message I can do :cf. This means I have to re-do :cf and skip over the already-fixed errors if more errors occur later, but this is still often a win.
If you use Vim, work on Mozilla C++ code, and don’t use it, you should set it up right now. There are many additional commands and options, but what I’ve written above is enough to get you started, and covers 95% of my usage. (In case you’re curious, the :cnf, :cpf, :copen and :cclose commands cover the other 5%.)
I also set up Vim’s :grep command for use with Firefox. I put the following script in ~/bin/.
#! /bin/sh pattern=$1; if [ -z "$pattern" ]; then echo "usage: $FUNCNAME"; return 1; fi; grep -n -r -s \ --exclude-dir="*[od]32*" \ --exclude-dir="*[od]64*" \ --exclude-dir=".hg*" \ --exclude-dir=".svn*" \ --include="*.cpp" \ --include="*.h" \ --include="*.c" \ --include="*.idl" \ --include="*.html" \ --include="*.xul" \ --include="*.js" \ --include="*.jsm" \ "$pattern"
It does a recursive grep for a pattern through various kinds of source files, ignoring my objdirs and repository directories. To use it, I just type “:grep
I can also use that script from the command line, which is useful when I want to see all the matches at once, rather than stepping through them one at a time in Vim.
This line in my .vimrc tells Vim to highlight any trailing whitespace in red.
highlight ExtraWhitespace ctermbg=red guibg=red autocmd BufWinEnter *.{c,cc,cpp,h,py,js,idl} match ExtraWhitespace /\s\+$/ autocmd InsertEnter *.{c,cc,cpp,h,py,js,idl} match ExtraWhitespace /\s\+\%#\@[Update: I accidentally omitted the final four lines of this when I first published this post.]
The good thing about this is that I now never submit patches with trailing whitespace. The bad thing is that I can see where other people have left behind trailing whitespace
![]()
Ctrl-P
Finally, I installed the Ctrl-P plugin, which aims to speed up the opening of files by letting you type in portions of the file’s path. This is potentially quite useful for Mozilla code, where the directory nesting can get quite deep. However, Ctrl-P has been less of a win than I hoped, for two reasons.
First, it’s quite slow, even on my very fast desktop with its very fast SSD. While typing, there are often pauses of hundreds of milliseconds after each keystroke, which is annoying.
Second, I find it too eager to find matches. If you type a sequence of characters, it will match against any file that has those characters present in that order, no matter how many other characters separate them, and it will do so case-insensitively. This might work well for some people, but if I’m opening a file such as
content/base/src/nsContentUtils.cpp
, I always end up typing just the filename in full. By the time I’ve typed “nsContentU” ideally it would be down to the two files in the repository that match that exact string. But instead I get the following.> widget/tests/window_composition_text_querycontent.xul > dom/interfaces/base/nsIQueryContentEventResult.idl > dom/base/nsQueryContentEventResult.cpp > dom/base/nsQueryContentEventResult.h > content/base/public/nsIContentSecurityPolicy.idl > content/base/public/nsContentCreatorFunctions.h > dom/interfaces/base/nsIContentURIGrouper.idl > content/base/public/nsContentPolicyUtils.h > content/base/src/nsContentUtils.cpp > content/base/public/nsContentUtils.hI wish I could say “case-insensitive exact matches, please”, but I don’t think that’s possible. As a result, I don’t use Ctrl-P that much, though it’s still occasionally useful if I want to open a file for which I know the name but not the path — it’s faster for that than dropping back to a shell and using
find
.Conclusion
That’s everything of note that I can think of right now. Please feel free to steal as many ideas as you wish from this post.
I haven’t given full details for a lot of the things I mentioned above. I’m happy to give more details (e.g. what various scripts look like) if people are interested.
Finally, I encourage other developers to write posts like this one explaining how they work on Mozilla code. Thanks!
https://blog.mozilla.org/nnethercote/2014/01/02/how-i-work-on-mozilla-code/
|
Matej Cepl: Happy New Year! |
What true hackers do on the New Year Eve? Of course, they hack! And apparently Stephan Tetzels is the one. During the festivities he achieved something which I frankly haven’t believed be possible just few months ago: he allowed me to create this screenshot of my Firefox OS phone (that’s the beginning of Luke 2, for improved effect in the Czech translation from the 16th century)
Thank you very much and happy new year everybody!
|
Lucas Rocha: Reconnecting |
I’m just back from a well deserved 2-week vacation in Salvador—the city where I was born and raised. While in Brazil, I managed to stay (mostly) offline. I intentionally left all my gadgetry at home. No laptop, no tablet. Only an old-ish smartphone with no data connection.
Offline breaks are very refreshing. They give you perspective. I feel we, from tech circles, are always too distracted, too busy, too close to these things.
Stepping back is important. Idle time is as important as productive time. The world already has enough bullshit. Let’s not make it worse.
Here’s to a more thoughtful, mindful, and meaningful online experience for all of us. Happy new year!
|
Will Kahn-Greene: Blog update: December 31st, 2013 |
A few weeks ago, a friend of mine started a site called Nethack-a-day. It's fantastic---a Nethack game with color commentary one turn at a time. If you like Nethack, but haven't seen it, you're missing out.
As he was setting it up, he was looking at various systems he could build it with. I sort of wanted to say, "Yo, just use Pyblosxom." because I was pretty familiar with it (I spent the better part of 9 years maintaining it) and I knew it did 80% of what he needed. But I hesitated because I've been on the fence about switching to something else for a while now.
Then I committed a critical mistake. I said, "You know, Pyblosxom would be great for this, but how about I fix a handful of things first that'll make it easier to deal with." A handful of things turned into a massive overhaul of Pyblosxom ripping out a lot of the technical debt that had been accruing for years, re-imagining some of the bits I was never happy with and tweaking some things just because it seemed like a good idea at the time.
Thus was born Douglas.
Douglas resembles many of the static site blog generator systems written in Python that exist. That suggests it was a dumb idea to go and write it, but it has three compelling aspects that I think made it worth my time:
Right now it's in an alpha state: the test suite doesn't cover enough of the software; the docs are mediocre and in some cases are filled with outright lies; there are a handful of issues; and there's still a bunch of technical debt and some architectural decisions that sucked and are increasingly difficult to work around.
Regardless, about a month, 102 commits and 9980 insertions and 22828 deletions later, I'm now switching my blog over to my new system. And that's how I'm going to end 2013.
|
Benjamin Kerensa: A New Year with More Connections |
This year has been wonderful for me; with many opportunities to connect with some of the most brilliant people in the world while having discussions surrounding moving the open web forward and evangelizing products like Firefox and Firefox OS.
For me, there have been so many examples that I could offer of events or experiences this year that were touching. But I think nothing has been as exciting as my experience at Mozilla Summit, where I got to hear Mitchell Baker speak so passionately about the values Mozilla believes in.
This year has been fast paced for me and nearly every month this year, I was traveling somewhere or organizing an event. While this meant withdrawing from some projects, I have historically had very large contributions too. It also gave me an opportunity to contribute in my new role on the Firefox Release Management Team and to expand into other areas I really wanted to dive into.
In December, I got to travel to San Francisco to take part in Mozilla’s Community Building Team Work Week where I got to meet Mitchell Baker and have dinner with her and many other awesome Mozillians. This also presented an opportunity to see familiar faces again and, most important, help build a roadmap for community building in Mozilla for 2014.
One of the things I really look forward to doing in 2014 is making more connections with users of free and open source software and making more connections to open source projects by contributing to projects I have not yet contributed to. I’m proud to say that in 2013 I had contributed to 40+ Open Source projects which is a pretty incredible way to diversify the time I spend on Open Source.
Even more impressive, I gave talks at three major universities in 2013 which was really a neat experience because I’m a big advocate for Open Source being more heavily adopted in all levels of academia. My biggest hope for 2014 is to see continued increase in adoption of Free and Open Source Software by people worldwide who have not typically used it. I also hope to see OpenStack, Ubuntu and Mozilla continue to grow as they are all three communities that I love.
In closing, I want to wish all of my readers a Happy New Year and I hope to make a connection with you in 2014!
http://feedproxy.google.com/~r/BenjaminKerensaDotComMozilla/~3/iT2lrhJ9yo4/new-year-connections
|
Brian King: Roundup Of Recent Firefox OS Launches in Europe |
2013 was an intense but extremely rewarding year for Mozilla. The personal highlight for me was seeing Firefox OS phones go on sale. Something that I’ve been spending much of my time on is working with our local communities to support them in their launch activities. We’ve wrapped up what we called our Wave 2 launches of Firefox OS (Wave 1 finished at the end of Summer). Read the official blog posts — Part 1 and Part 2. I want to say a few words and share some media about the Wave 2 launches in Europe, specifically Hungary, Greece, Serbia, and Italy.
Starting with the last country out of the gate in 2014, the Italian community moved quickly on tight deadlines and rose to the occasion. Led my longtime Mozillian Francesco Lodolo, they participated in sales training with Telecom Italia (TIM), led promotional activities, and celebrated the coming of Firefox OS. Kudos to Carlo Frinolli in Rome for pulling off some great events during the debut weekend. First up was a street promotion to raise awareness outside a busy TIM store. Then there was a hackathon to raise awareness among web developers and get more apps, followed later by a party for everyone.
Can’t see the video? Follow this link.I’m looking forward to seeing what else we can pull off together in 2014.
Many communities have already been working on Firefox OS for months beforehand, including Italy and Greece when 25+ App Days were held around the world in January. Greece put together a strong team, with a mix of experienced Mozillians and relatively new faces to tackle all Go To Market (GTM) activities (Comms, Dev Outreach, Social Media, Marketing, and Sales Training). In a collaboration between Cosmote, Mozilla, and other partners, Greece put on another app day in Athens just after launch. It was a day of hacking, talking about Firefox OS, and celebrating. The community was once again out in force helping in every way they could.
The team is now actively working with Cosmote to find other opportunities to amplify the Firefox OS message in the new year.
Telenor Srbija and Telenor Montenegro were early to embrace Firefox OS both in engaging with developers and with working with our community. Months before release they were running competitions to get apps into marketplace. As a result, Serbia has a high number of quality apps relevant to the local market. The community has been active in sales training, social media, support, and more.
Not resting on their laurels, the team plan to do a series of events into the New Year. First up was a street action in Subotica. By the numbers: 25 Mozillians, 1300+ pictures taken, 2500 shares + 60000 views (Faceboook competition page), 8+ hours on the street, 1 street mural, and 1 Fox.
Last but certainly not least is Hungary. Hungary was in the unique position of being a market with two carriers releasing Firefox OS – T-Mobile and Telenor. Doing double duty in some areas, our community rose to the occasion and indeed was the most active community of all judging by number of events alone. The tireless efforts in this area were led by Marketing Lead Kami, with support from the rest of the team in all the other GTM focus areas. Around launch time there were HQ Days, In-store events, Phone conferences, and a concerted effort to win the hearts and minds of local developers which culminated in a workshop on 23 November.
Developers, developers. Attendees at the Firefox OS Workshop in Budapest. Picture by Mozilla Hungary
And we’re not finished yet. Hungary will keep going in 2014. At the end of January, watch out for a big event!
If you have read this far, please take a moment to catch your breath and reflect on all the great work that Mozillians have done. I really couldn’t cover everything here, but I hope it gives you some idea of the passion and dedication of our communities. Look for more in 2014. Mozilla is mobile and we’re in this for the long haul. This was just the beginning.
Related articles
http://brian.kingsonline.net/talk/2013/12/roundup-of-recent-firefox-os-launches-in-europe/
|
Konstantinos Antonakoglou: 2013 in review powered by WordPress |
The WordPress.com stats helper monkeys prepared a cute annual report for this blog for 2013 For 2014 I’ve bought tickets for FOSDEM 2014 to represent Sopler and share what cool things can happen with it.
Right now, I’m taking a look at Mozilla’s version of the l10n.js library in order to localise Sopler (at least on FirefoxOS).
Well, that’s it! Have a great 2014! By the way, for this year, the 3-years-in-a-row champion is again “My Fedora 15 tweaks for an SSD” (ok, it accumulates all previous years but nevertheless it still gets views). I guess they’ve become even more popular! (both Fedora and SSDs).
PS. A weird thing to say but, if anybody works for a new wave/post-punk/indie rock record label, comment or PM me! I got good news for you from Wonky Doll and the Echo.
Click here to see the complete report.
http://antonakoglou.com/2013/12/31/2013-in-review-powered-by-wordpress/
|
Brendan Eich: OpenH264 on Github |
Sorry, I missed the chance to post a timely follow-up to Cisco’s H.264 Good News: as mentioned on the RTCWeb IETF mailing list, Cisco on the 9th of December released the OpenH264 codec on Github.
Warning: code cleanup in progress (e.g., following RTP correctly in Gecko glue code), do not expect interoperable results in the Firefoxes yet. Please check issues and send PRs. Thanks.
/be
|
Alex Clark: New Year's Python Meme 2014 |
Tarek Ziad'e's New Year's Python Meme
This year we have a tie between two must-have packaging-related utilities:
Both of these utilities help you make better Python packages, and I regularly use them in my packages via a Makefile like this:
test: check-manifest flake8 *.py pyroma python setup.py sdist python setup.py test viewdoc
Good times! And better packages.
I didn't program much in 2013 but when I did, I tried to write tests too. Check out the following projects to see how I did:
Pillow. Fork author and project lead. Aside from a working PIL, the most exciting thing about Pillow for me is my Gittip funding and working with the Pillow Team which includes most notably Eric Soroos and Christopher Gohlke.
This year I cut back to reading only the following feeds, consumed via Feedly:
I wish there was some "Python to JavaScript bridge software". It's not the complexities of JavaScript that keep me from learning it, it's that I don't have any reason to obsess over it. Plone gave me that opportunity with Python, but not JavaScript (yet). Once that happens, I'm sure I'll be as proficient in JavaScript as I am currently in Python (which is enough to get by).
Want to participate? Copy/paste/answer the questions below then tweet your entry with the #2014pythonmeme hash tag:
New Year's Python Meme ====================== What’s the coolest Python application, framework or library you discovered this year? ---------------------------------------------------------------------------------------- What new programming technique did you learn this year? ---------------------------------------------------------------------------------------- Which open source project did you contribute to the most this year? What did you do? ---------------------------------------------------------------------------------------- Which Python blogs, websites, or mailing lists did you read the most this year? ---------------------------------------------------------------------------------------- What are the top three things you want to learn next year? ---------------------------------------------------------------------------------------- What is the top software, application or library you wish someone would write next year? ----------------------------------------------------------------------------------------
http://blog.aclark.net/2013/12/30/new-years-python-meme-2014/
|
John O'Duinn: Mitchell Baker and Firefox 27.0 beta2 |
Just before the holiday break, Mitchell and I sat down together to fulfill a long standing promise I made years ago: to have Mitchell start a Firefox release herself.
After starting Mozilla just over 15 years ago, and dealing with all aspects of running a large organization, Mitchell finally kicked off a Firefox release herself last week – for the very first time. Specifically, she was going to start the official release automation for Firefox 27.0 beta2 and Fennec 27.0 beta2.
Timing was tricky. We didn’t want to disrupt the usual beta release cadence, especially just before the holidays. And Mitchell only had 25 minutes free between meetings, so we spent a few minutes saying hi, getting settled, and then we jumped right into the details.
To kick off Firefox and Fennec releases, there are only a handful of fields a human has to fill in for each product. They are (almost) all fairly self-evident, and a good number of the fields are populated by picking-from-a-list, so we made fast progress. The “Gimme a Firefox” and “Gimme a Fennec” buttons caused a laugh!
8 minutes is all it took.
That 8 minutes included the time to explain what each field did, what value should go into each of the various fields, and why. We even took the time to re-verify everything. After all, this was not just a “demo”… this was real. Mozilla shipped this Firefox 27.0b2 and Fennec 27.0b2 to all our real-live beta users before closing down for the holiday break.
Because it was so quick, we had spare time to chat about how much the infrastructure has improved since the Directors meeting in Building S 6.5 years ago when this promise was originally made. Obviously, there’s plenty of complexity involved in shipping a product release – the daily bug triage meetings about what fixes should/shouldn’t be included in a release, the actual landing of code fixes by developers, the manual spot-checking by QA, the press and PR coordination, the list goes on… – but the fact that such a “simple” user interface could trigger release automation running a couple of hundred compute hours across many machines to reliably ship products to millions of users is a note-worthy measure of Mozilla’s Release Engineering infrastructure. Mitchell was suitably impressed!
And then Mitchell left, with a wave and a smile, a few minutes early for her next meeting, while the various Release Engineering systems sprang into life generating builds, localization repacks, and updates for all our users.
We took this photo afterwards to commemorate the event! Thank you, Mitchell!
http://oduinn.com/blog/2013/12/29/mitchell-baker-and-firefox-27-0-beta2/
|
Iacopo Benesperi: New Year, New Life (a.k.a. Moving to Australia) |
I don’t write very much on this blog and I don’t like to dirt the Planet with my personal life, but this can have an impact on my participation to Mozilla, so here I am.
At the very beginning of the new year I’ll start my Ph.D. studies in Melbourne, Australia. This is a big move, since I’ll be away from both Italy and Europe in general, although it’ll be for just three years. I don’t plan for this move to change anything in my committment to Mozilla and the work I’m doing, apart from the fact that I won’t be able to organise and participate to events in Italy and I’ll probably have some problems coming to Mozcamps in Europe.
Besides these two things, I’ll continue my translation work and my work in the Mozilla Italia community. What I will be able to do on the other side, I hope, is to strengthen Mozilla’s presence in Australia. Melbourne is a big city with two important universities and I’m sure there will be plenty of occasions to organise interesting activities in town.
I don’t know how many Mozillians there are in Australia but I’d love to get in touch with you all guys if you’re reading me, especially if you’re from Melbourne. If you’ve never see them, I’ll bring a Firefox OS phone with me so you can play with it. I’m also planning to make it my main phone there, so I’ll be able to help with QA and bug reporting coming from a daily usage.
I also hope that, when I’ll have settled down, I’ll be able to help any Mozillian who’d like to come visiting or organising something.
Since it’s the 30th of December already (at least here in Italy), let me wish you all a happy new year!
http://www.iacchi.org/blog/2013/12/30/new-year-new-life-a-k-a-moving-to-australia/
|
William Duyck: CTA: What did Mozilla in 2013 look like to you?! |
So this is just a quick shout out to all those within the Mozilla community who need an excuse to flex their video editing skills.
Google, and many others are showing us what the world looked like in 2013 from their perspectives… I’m interested in seeing what the Mozilla view-point would be. What were the wins, the fails? The highs, the lows?
With just a few days of 2013 left it the time to reflect on the year gone, and think forward to the year starting. Let’s send 2013 off with a video tribute like many others do.
Bonus points of doing it in Popcorn Maker.
Here are some of the videos that I’ve found to be interesting reflections on 2013 (from YouTube).
http://blog.wduyck.com/2013/12/cta-what-did-mozilla-in-2013-look-like-to-you/
|
Kat Braybrooke: Well, London - this is it. 4 years, 2 visas, 84 passport... |
Well, London - this is it.
4 years, 2 visas, 84 passport stamps, 5 million bus rides, 1 master’s degree, 2 jobs, 7 Kieran Hebden sets, 9 superior flatmates, 2 stolen phones, 8 wonderful best friends and 1 great love later, I’ve had to leave you for the green shores of Vancouver [and a new Mozilla office!]. This isn’t the end though. It’s another beginning. And I’ll be back. With massive amounts of gratitude, I now look towards the trees.
*[With one more very big hug to the many beautiful folk who left wonderful messages of support, encouragement and love on Facebook, Twitter and email over the transition. You have honoured me beyond words.]
|
Ricky Rosario: support.mozilla.org (SUMO) +dev in 2013 |
This is my first and last blog post for 2013!
Whewww, 2013 has been another splendid year for SUMO and the SUMO/INPUT Engineering team. We did lose (and missed a ton) our manager, James Socol, early in the year and I took over the managerial duties for the team, but the core dev team stayed intact.
Here are some metrics about what our platform, team and community was up to in 2013:
Willkg wrote a blog post with that contains a lot more metrics specific to our development (bugs filed, bugs resolved, commits, major projects, etc.). Go check it out!
I wanted to highlight a few things he mentioned:
In 2011, we had 19 people who contributed code changes.
In 2012, we had 23 people.
In 2013, we had 32 people.
YAY!
Like 2011 and 2012, we resolved more bugs than we created in 2013. That's three years in a row! I've never seen that happen on a project I work on.
WOOT!
Input also had a great year in 2013. Check out willkg's blog post about it.
2013 was a great year for the SUMO platform. We finetuned the KB information architecture work we began in 2012 and simplified all of the landing pages (home, product, topic). In 2014, I am hoping we can make the Support Forum as awesome as the KB is today.
In addition to making the KB awesomer... The Support Forums now support more locales than just English. We now send HTML and localized emails! We added Open Badges! We switched to YouTube for videos. We improved search for locales. We made deployments better. We implemented persona (not enabled yet). We implementated escalation of questions to the helpdesk. We added lots of new and improved dashboards and tools for contributors and community managers. At the same time, we made lots of backend and infrastructure improvements that make the site more stable and resilient and our code more awesome.
As a testament to the awesomeness of the platform, new products have come to us to be their support platform. We are now the support site for Webmaker and will be adding Open Badges and Thunderbird early in 2014.
Thanks to the amazing awesome splendid dev team, the SUMO staff and the community for an awesome 2013!
http://rickyrosario.com/blog/support-mozilla-org-sumo-dev-2013/
|