Day 3: Return to the mountain

Part of a series on my journalism faculty-led program through Italy and Greece.

Today we travelled to a few mountain (relatively) towns in Sicily. Ignoring some of the tourist-y stuff, it really reminded me of Esino Lario. The streets, buildings, and elevation gain were all pretty similar.

I got to do a bit of hiking (and just get out of the tourist trap!) when we climbed up a few hundred steps to the top of a peak where there was a monastary (I think, OpenStreetMap wasn't very clear). The view was beautiful, and the hike was totally worth it. We were only two minutes late meeting up with the group - mostly because we saw a lemon tree and were trying to figure out how to grab one even though the tree was three feet above us (we never did in the end).

We had lunch at a, um, interesting restaurant. I'll leave it at that. The food was great, I love trying out all the different types of pizza here. The crust seemed a lot thicker than the pizzas I had in Rome though.

We walked through a few more towns, and even though our van driver was acting as our tour guide, I had fun trying to read the Italian Wikipedia articles for churches and monuments we saw. Spoiler alert: I just looked at the pictures, I didn't understand 95% of the words.

Oh, and the bar in Godfather 2, and the church they got married? We visited both of those. There was a small statue honoring Francis Ford Coppola, which I submitted to OpenStreetMap.

At the end of the day, we went back to Catania and had dinner at an Irish Pub. Coincidentally, England was playing in the World Cup at that time - it was a nail biter to watch until the very end.

Tomorrow we will be going out into Catania and getting interviews and gathering other source material to use in our video assignments.

Day 2: Maintaining eye contact

Part of a series on my journalism faculty-led program through Italy and Greece.

Today was just a travel day - we're now in Catania, Sicily. It feels like Italy, but a lot more laid back than Rome. I think I would be pretty laid back too if I lived on an Island.

Our plane

Our plane was named after Mozart? Neat.

Since most of our day was taken up by traveling, moving hotels, etc., we didn't have any specific class events today, so a few of us went out exploring after dinner. We walked through most of the tourist areas, and came to the square with the historical buildings of the University of Catania. There were some collaborative art projects happening, as well as one where it looked like people were just staring at each other. My friend and I went closer, and saw the signs (paraphrased, because I forgot to take a picture):

"Are real human connections dead?" "Spend a minute of uninterrupted eye contact"

There were some empty cardboard seats on the floor, so we sat down, and gave it a shot. One set of people next to us looked like they were having a staring contest, and another couple on the other side were deeply looking into each others souls to the point that it seemed like they were engaged in the most PDA I've ever seen with the least amount of touching.

We set a timer for a minute and started talking. After 10 seconds of talking, my eyes seemed to naturally gaze away - I'd have to consiously force them back. Most of the in depth conversations I have happen online, where there is no eye contact that needs maintaining - so this was pretty different. The timer for a minute went off, but since we were in the middle of our conversation, we kept going for about ten minutes (before we realized we needed to meet back up with our other friend!).

I learned a lot of new things about my friend (we have a lot of things in common!) in those ten minutes, which I doubt I would have ever learned or even asked about throughout our trip together. I also learned a bit about myself - I can maintain eye contact for ten minutes, but it takes a conscious effort. I would not say that "real human connections are dead", but I would question whether eye contact is a relevant indicator. I wonder if anyone has done proper research in this area, like having subjects have a conversation without mandatory eye contact, and then with, and see the effect on recall of conversation topics, as well as emotional feelings throughout the conversation. Something for another day :-)

Day 1: Visiting a migrant camp in Rome

As part of earning my journalism degree at San Jose State, we're required to study abroad. I'm currently on a faculty-led program (FLP) to Italy and Greece to interview migrants and refugees, conduct interviews, document their situation, and gain real world reporting experience. I will try to blog daily for the next three weeks...we'll see if it lasts!

Our trip started in Rome, Italy. Day 0 was meeting at our hotel, getting dinner together, and then enjoying some gelato. The next morning we visited the Colosseum and a few other tourist attractions before the main event for the day: visiting a camp where migrants were staying. Unfortunately, that's all I can write about for now, as I am still working on a full story to publish about our experience at the camp.

In the evening a few of us went to a rally that was protesting the murder of an immigrant, who was a union leader defending workers rights (at least, that's my understanding). There was also the issue of the anti-immigration views of the minister of internal afairs. Aside from not understanding most of what was being said since it was in Italian, I also struggled since there was no article on Unione Sindacale di Base on Wikipedia. It would be great if someone could write one!

Sign at the rally

Take from the rich, and give to the poor! registration now open is now open for hosting free software projects, providing git hosting, issue trackers, and basic wiki functionality. It runs the free software Gogs: "a painless self-hosted Git service".

You're welcome to host any freely licensed projects on

I've been running for two years now, mainly using it to host personal projects and things a few friends asked for. I think others will find a friendly git hosting service useful. Nearly all of my major projects can be found on, whether they are the canonical repository, or just a mirror (automatically sychronizing about every 10 minutes).

In terms of privacy, you will need to confirm your email before being able to join the site. I collect minimal server logs, and only use IP address information for anti-abuse measures. Mail is handled by FastMail. You should be able to delete your data at any time. Backups are currently running weekly, but I can increase frequency if usage/demand increases.

If you're comfortable with your current git host, feel free to set up a mirror! Git is a great distributed protocol, and mirroring helps increase the right to fork.

If you have any questions, you can contact me on Mastodon, email, IRC, or the support tracker.

Introducing CoverMe: find the most called MediaWiki code lacking test coverage

CoverMe, hosted on Wikimedia Toolforge

Test coverage is a useful metric, but it can be difficult to figure out exactly where to start. That's where CoverMe is useful - it sorts functions by how often they're called on Wikimedia production servers, and then displays their coverage status.


Try it out! You can filter by Git repository and entry point (index.php, load.php, etc.). So if you look at the api.php entry point, you'll see mostly API related code. If I look at the Linter extension, I can see that the RecordLintJob::run is well covered, while ApiRecordLint::run is not covered at all. If some extensions simply aren't called that frequently, there might not be any function call data at all.

The function call data comes from the daily Xenon logs that are used for profiling FlameGraphs, and the CI test coverage data. CoverMe fetches updated data on the hour if it's available.

The source code is published on Phabricator and licensed under the AGPL v3, or any later version.

New tool: Wikimedia APT browser

I've created a new tool to make it easier for humans to browse Wikimedia's APT repository: Wikimedia's servers run Debian (Ubuntu is nearly phased out), and for the most part use the standard packages that Debian provides. But in some cases we use software that isn't in the official Debian repositories, and distribute it via our own APT repository.

For a while now I've been working on different things where it's helpful for me to be able to see which packages are provided for each Debian version. I was unable to find any existing, reusable HTML browsers for APT repositories (most people seem to use the commandline tools), so I quickly wrote my own.

Introducing the Wikimedia APT browser. It's a short (less than 100 lines) Python and Flask application that reads from the Package/Release files that APT uses, and presents them in a simple HTML page. You can see the different versions of Debian and Ubuntu that are supported, the different sections in each one, and then the packages and their versions.

There's nothing really Wikimedia-specific about this, it would be trivial to remove the Wikimedia branding and turn it into something general if people are interested.

The source code is published on Phabricator and licensed under the AGPL v3, or any later version.