I Use This!
Very High Activity

News

Analyzed about 3 hours ago. based on code collected 1 day ago.
Posted over 9 years ago by Chris Heilmann
Yesterday evening I went to Hybrid and Future Web Meetup at JayWay in Stockholm, Sweden. The three hour meetup was an informal meeting with 3 speakers, great catering and drinks and some very interesting topics: Andreas Hassellöf of Nordnet ... [More] and Gustaf Nilsson Kotte of Jayway showed how they built the Nordnet banking app in a hybrid way. The interesting parts here to me where that they used Angular for the main app but native controls for the navigation elements of the UI to get the highest possible fidelity. They also created a messaging bus between the different parts using a pub/sub model for local storage. They are right now trying to find ways to open source their findings and I would love to see that get out. The other, very interesting part of this talk was how they used Crosswalk to inject a more modern Chromium into legacy Android devices to get much better performance. Anders Janmyr was next with a solid overview and live demo of Firefox OS app creation, distribution and debugging. Anders works for Jayway on Sony projects and it was interesting to see someone not from Mozilla or mobile partners talk about the topic I normally cover. I closed the evening with a kind of preview of one of my sessions at Øredev tomorrow. In it, I talk about “modern” browser features that to me should be a “given” but got forgotten as we promised them too early to developers and legacy browsers did not support them. The slides are on Slideshare. The unedited, raw screencast of my presentation is on YouTube (I say that because I made some mistakes in it – for example I bollocksed up the child selector explanation and one code example was missing a property): This was the first time Jayway ran an event like this and I thoroughly enjoyed it. A good “after work” experience. Moar! [Less]
Posted over 9 years ago by Ruben Martin [:Nukeador]
October has been an amazing month full of a lot of activities from our fellow Reps. For that reason this month we have two Reps of the month, congratulations! Robert Sayles Robbie has been leading volunteers at MozFest for the second year, he is the ... [More] personification of what Reps can do, be and influence. Robbie was one of the hardest working Reps at MozFest. His help at MozFest was above and beyond, there were about 50% less volunteers than expected and he was obviously on top of that, with a smile – always. Jefferson Duran While we had a lot of Reps attending MozFest in London this year, there were others doing an amazing work on their home countries as well. During September and October, Jeff has been traveling around Colombia hosting webmaker parties non-stop. It’s just amazing the amount of work that he has been putting into making this happen to teach students and people around his country how to be a Maker. Don’t forget to congratulate them on Discourse! [Less]
Posted over 9 years ago by glob
the following changes have been pushed to bugzilla.mozilla.org: [1090175] The size check for input<select>s on show_bug.cgi doesn’t take into account is_active</select> [1088253] GET REST calls should allow arbitrary URL parameters to be ... [More] passed in addition the values in the path [1092037] add the ability for administrators to limit the number of emails sent to a user per minute and hour [1092949] bugmail failing with “utf8 “\x82″ does not map to Unicode at /usr/lib64/perl5/Encode.pm line 174″ [1090427] Login form lacks CSRF protection [1091149] Use of uninitialized value in string ne warnings from BugmailFilter extensiom [1083876] create a bugzilla template for whitelist applications [1093450] Sort by vote isn’t sorting correctly note: there was an issue with sending of encrypted email to recipients with s/mime keys. this resulted in a large backlog of emails which was cleared following today’s push. discuss these changes on mozilla.tools.bmo.Filed under: bmo, mozilla [Less]
Posted over 9 years ago by sheppy
I love working at Mozilla. I love the rapid progress we’re making in building a better Web for the future. I love that the documentation I help to produce makes it possible not only for current experts to use technology to create new things, but for ... [More] kids to turn into the experts of the future. I love that, as I describe what I do to children, I teach programmers how to program new things. I love the amazing amount of stuff there is to work on. I love the variety and the fun assortment of things to choose from as I look for the next thing to write about. I love working in an organization where individual achievement can be had while at the same time being a team player, striving not to rake in dollars for the company, but to make the world a better place through technology and knowledge exchange. It’s frustrating how fast things are changing. It’s frustrating to finish documentation for a technology only to almost immediately discover that this technology is about to be deprecated. It’s frustrating to know that the software and APIs we create can be used by bad people to do bad things if we make mistakes. It’s frustrating that my job keeps me from having as much free time as I’d like to have to work on my own projects. It’s frustrating that I’m constantly on the brink of being totally overwhelmed by the frighteningly long list of things that need to be done. It’s frustrating knowing that my priorities will change before the end of each day. It’s frustrating how often something newly urgent comes up that needs to be dealt with right away. It’s frustrating that no matter how hard I try, there are always people I’m never quite able to reach, or whom I simply can’t interface with for some reason. There’s a lot to be frustrated about as a Mozillian. But being part of this wild, crazy adventure in software engineering (or, in my case, developer documentation) is (so far, at least!) worth the frustration. I love being a Mozillian. [Less]
Posted over 9 years ago
As a server side developer, I don’t run into IE-specific errors very often. Last month, I ran into a very specific error, which is spectacular by itself. IE8 does not like downloads with cache control headers. The client has plenty of IE8 users and ... [More] preferred we serve over HTTP for IE8 so that the site worked for sure. Nginx has a very handy module called ngx_http_browser_module to help! All that I needed to do was less than 10 lines of Nginx config. location / { # every browser is to be considered modern modern_browser unlisted; # these particular browsers are ancient ancient_browser "MSIE 6.0" "MSIE 7.0" "MSIE 8.0"; # redirect to HTTP if ancient if ($ancient_browser) { return 301 http://$server_name$request_uri; } # handle requests that are not redirected proxy_pass http://127.0.0.1:8080; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; } Yet another day I’m surprised by Nginx :) [Less]
Posted over 9 years ago by ariestiyansyah
Wohoooo, november is coming and task for application curation board at Mozilla Marketplace is ready, last month (October) we are working on featured apps for specific theme like Action Game, Relaxing Apps and Seasonal shopping application, and all ... [More] nominated apps already featured in october. Have you visited Marketplace lately to app nominations in the spotlight? We just refreshed the ever-present “Great Games” collection. And a lot of apps populate the recent “Productivity” and “Creativity” collections, this time we are move move and move to prepare next month featured application on Firefox Marketplace aaaaandddd…. The November task are : Joshua Smith recommended we do a “Winter Games” collection. This is a good idea! “Holiday Apps” collection, this can be any kind of app related to December holidays (aka Christmas, Hannukah). This could be games, religious apps, or anything else related to the festive season. “Strategy Games” should comprise games that focus specifically on the strategy genre, such as turn-based strategy games, war games, board games, etc. I realize all games require a certain level of strategy, but in this case we’re talking about specific games where the primary emphasis is strategy, as opposed to action or puzzle games which may require elements of strategy. OK that’s all the task for this month, we are try to serve better featured apps on Firefox Marketplace cheers and let’s do something wonderful for Open Web. The post November Task Application Curation Board is Ready appeared first on oonlab. [Less]
Posted over 9 years ago by Karl Dubost
The Message In my ephemeral inconsequent blurbs of expressions, I recently tweeted: There is a little bit inside me which is dying when I notice a Web agency releasing a new site without a proper Web optimization. Action. Reaction. Alexa took me by ... [More] surprise. @karlpro sounds like the beginning of a blog post And there is this deep feeling that I should have just shut up and probably not write this. But oh well. So let's see if I can make my life more miserable. The Trigger The tweet was triggered by a Web agency releasing their new Web site. Beautiful design, typography, responsive and even for your own bonus points of geekiness. Baked and not fried, which basically means that it is managed in a system which creates static pages. Cool thing. I navigate the site and it seems all cool. Curious as I am, I started to look under the hood. Opened the browser developer tools, and wandered to the Network Panel. Oops. A homepage with plenty of images and assets which is reaching 2 Mb and has no caching at all. Zero. Here you can insert a deep feeling of sadness sinking in. Yeah I know Halloween was so last week, but you know. The Ugly: Web Agencies Priorities And Skills Alexa's message helped me to go a bit further and go over my sadness. What I think was important to me was not necessary understood by people releasing this Web site. I know the people behind this Web site. They are nice persons with excellent skills in design and typography applied to the Web. They have developed an excellence, an expertise in it. And what I could see was not necessary visible to them. The same way you can be listening a piece of music and not grasp certain subtleties because you have not been educated to do so (my case). I would probably miss an incongruity in typography or imbalance in the layout. It's one of the issues realities with our business. We are not omniscient and specifically in the context of Web agencies. The issue is even more acute for small Web agencies. Put together a group of friends having shared core of interests and sensibility, decide to start a business around your skills, et voilà you get a Web agency which starts delivering "interactive paper online" or a "performing hypermedia engine" or an "accessible transcript of a story". Some Web agencies will focus on layout, some on Web mechanics, some on accessibility, and all of them will further entrench their competencies into the core set they have developed. It takes a lot of efforts, translations, education to understand the other aspects of a project. And that costs money which is sometimes not good for the business, specifically for small Web agencies. The Web ecosystem being very tolerant on mistakes (and it's partly why it is so resilient), sometimes a Web site is just really beautiful paper pushed from one place to another under the form of bits using HTTP (the transport) without really using HTTP (the protocol). I'm not necessary sure on how to deal with this issue or even have the start of an idea for solving it. But there is a little voice inside me, that people should sometimes reduce their expectations of excellence on some parts of the project to leave room (time and money) to address the other parts. There are things in our daily life which seem obvious and becomes less so on the Web. Do I want to make the perfect layout for my shop window with beautiful lettering and colors so my customers are attracted by 10 fold? Or do I want to spend all my time on studying the entrance so it is large enough for wheelchairs, that the opening time is written in braille on the door and so on? Or do I want to spend all my time on using the best materials for having a solid and perfect built architecture? Obviously, none of each, but some of all these. We better understand these choices. We grasp them because they are physical. We need to have a better understanding at integrated design. One where we understand that a Web project is made of a lot of small things. Leave room for other things than your core competencies. Postface Now, do I contact my friend in this Web agency to explain how to fix it? Choose your own pain. Choose you own battle. We will see. Otsukare. [Less]
Posted over 9 years ago by Nicholas Nethercote
If you record every heap allocation and re-allocation done by Firefox you find some interesting things. In particular, you find some sub-optimal buffer growth strategies that cause a lot of heap churn. Think about a data structure that involves a ... [More] contiguous, growable buffer, such as a string or a vector. If you append to it and it doesn’t have enough space for the appended elements, you need to allocate a new buffer, copy the old contents to the new buffer, and then free the old buffer. realloc() is usually used for this, because it does these three steps for you. The crucial question: when you have to grow a buffer, how much do you grow it? One obvious answer is “just enough for the new elements”. That might seem  space-efficient at first glance, but if you have to repeatedly grow the buffer it can quickly turn bad. Consider a simple but not outrageous example. Imagine you have a buffer that starts out 1 byte long and you add single bytes to it until it is 1 MiB long. If you use the “just-enough” strategy you’ll cumulatively allocate this much memory: 1 + 2 + 3 + … + 1,048,575 + 1,048,576 = 549,756,338,176 bytes Ouch. O(n2) behaviour really hurts when n gets big enough. Of course the peak memory usage won’t be nearly this high, but all those reallocations and copying will be slow. In practice it won’t be this bad because heap allocators round up requests, e.g. if you ask for 123 bytes you’ll likely get something larger like 128 bytes. The allocator used by Firefox (an old, extensively-modified version of jemalloc) rounds up all requests between 4 KiB and 1 MiB to the nearest multiple of 4 KiB. So you’ll actually allocate approximately this much memory: 4,096 + 8,192 + 12,288 + … + 1,044,480 + 1,048,576 = 134,742,016 bytes (This ignores the sub-4 KiB allocations, which in total are negligible.) Much better. And if you’re lucky the OS’s virtual memory system will do some magic with page tables to make the copying cheap. But still, it’s a lot of churn. A strategy that is usually better is exponential growth. Doubling the buffer each time is the simplest strategy: 4,096 + 8,192 + 16,384 + 32,768 + 65,536 + 131,072 + 262,144 + 524,288 + 1,048,576 = 2,093,056 bytes That’s more like it; the cumulative size is just under twice the final size, and the series is short enough now to write it out in full, which is nice — calls to malloc() and realloc() aren’t that cheap because they typically require acquiring a lock. I particularly like the doubling strategy because it’s simple and it also avoids wasting usable space due to slop. Recently I’ve converted “just enough” growth strategies to exponential growth strategies in XDRBuffer and nsTArray, and I also found a case in SQLite that Richard Hipp has fixed. These pieces of code now match numerous places that already used exponential growth: pldhash, JS::HashTable, mozilla::Vector, JSString, nsString, and pdf.js. Pleasingly, the nsTArray conversion had a clear positive effect. Not only did the exponential growth strategy reduce the amount of heap churn and the number of realloc() calls, it also reduced heap fragmentation: the “heap-overhead” part of the purple measurement on AWSY (a.k.a. “RSS: After TP5, tabs closed [+30s, forced GC]“) dropped by 4.3 MiB! This makes sense if you think about it: an allocator can fulfil power-of-two requests like 64 KiB, 128 KiB, and 256 KiB with less waste than it can awkward requests like 244 KiB, 248 KiB, 252 KiB, etc. So, if you know of some more code in Firefox that uses a non-exponential growth strategy for a buffer, please fix it, or let me know so I can look at it. Thank you. [Less]
Posted over 9 years ago by [email protected] (Robert)
A paper presents some results of cross-browser testing of HTML5 video. This sort of work is very helpful since it draws attention away from browser vendor PR efforts and towards the sort of issues that really impact Web developers, with actionable ... [More] data. Having said that, it's also very interesting to compare how browsers fare on correctness benchmarks designed without a browser-vendor axe to grind. Gecko usually does very well on such benchmarks and this one is no exception. If you read through the paper, we get almost everything right except a few event-firing issues (that I don't understand yet), more so than the other browsers. Of course no test suite is perfect, and this one misses the massive Chrome canplaythrough bug: Chrome doesn't really implement canplaythrough at all. It simply fires canplaythrough immediately after canplay in all circumstances. That's still causing problems for other browsers which implement canplaythrough properly, since some Web sites have been written to depend on canplaythrough always firing immediately. Still, this is good work and I'd like to see more like it. [Less]
Posted over 9 years ago by gerv
Try not to let humans do what machines could do instead. As a rule of thumb, automating a common task is worth at least ten times the effort a developer would spend doing that task manually one time. For very frequent or very complex tasks, that ratio could easily go up to twenty or even higher. — Karl Fogel, Producing Open Source Software