Activity Not Available
I Use This!


Analyzed about 1 month ago. based on code collected about 1 month ago.
Posted 2 days ago
Does anybody have a Devo RC transmitter I can borrow for a few weeks? I need model 6, 6S, 7E, 8, 8S, 10, 12, 12S, F7 or F12E — it doesn’t actually have to work, I just need the firmware upload feature for testing various things. Please reshare/repost if you’re in any UK RC groups that could help. Thanks!
Posted 3 days ago by (Chandni Verma)
Here are my first few basic Python programs (before my first Python assignment consuming and processing perf samples). :)1)#!/usr/bin/pythoni = raw_input()print i2) #!/usr/bin/pythonT = int(raw_input())print "Range of t is", range(T)for i in ... [More] range(T):    print i    ans = 42    print "Case #%d: %d" % (i+1, ans)      3)#!/usr/bin/pythonT = int(raw_input())for i in range(T):    line = raw_input()    N, J = line.split()    N, J = int(N), int(J)    print "N = %d, J = %d" % (N, J)   4)#!/usr/bin/pythonT = int(raw_input())i = 1while i<=T:    tmp = raw_input()    N = int (tmp.split()[0])    J = int (tmp.split()[1])    print N, J    print 2**N    print 2**N-1    print bin(2**N-1)    i +=1   5)#!/usr/bin/python#program 5T = int(raw_input())i = 1while i<=T:    tmp = raw_input()    N = int (tmp.split()[0])    J = int (tmp.split()[1])    print N, J    print 2**N    print 2**N-1    print bin(2**N-1)    s = bin(2**N-1)[2:]    print int(s, 2)    print int(s, 3)    print int(s, 4)    print int(s, 10)    i+=1      6)#!/usr/bin/python  #program 6#defining functionsdef factorial(n):    ret = 1    for i in range(n):        ret *= i+1          return ret  print factorial(5)print factorial(4), factorial(3) [Less]
Posted 3 days ago
After the GNOME 3.20 cycle completed I started revamping Sysprof. More here, here, and here. The development went so smoothly that I did a 3.20 release a couple of weeks later. A primary motivation of that work was rebuilding Sysprof into a set of ... [More] libraries for building new tools. In particular, I wanted to integrate Sysprof with Builder as our profiler of choice. On my flight back from GUADEC I laid the groundwork to integrate these two projects. As of Builder 3.21.90 (released yesterday) you can now profile your project quite easily. There are  more corner cases we need to handle but I consider those incremental bugs now. Some of our upcoming work will be to integrate the Sysprof data collectors with Python and Gjs. The Gjs implementation is written, it just needs polish and integration with upstream. I think it will be fantastic once we have a compelling profiling story weather you are writing C, C++, Vala, Python, or Gjs. We’ve also expanded the architectures supported by Sysprof. So I expect by time 3.22 is released, Sysprof will support POWER8, ARM, ARM64, mips, and various others as long as you have an up to date Linux kernel. That is an important part of our future plans to support remote profiling (possibly over USB or TCP). If you’re interested in working on this, contact me! The plumbing is there, we just need someone with time and ambition to lead the charge. [Less]
Posted 3 days ago
Recently, I had to install GNU/Linux on a dozen or so machines. I didn’t want to install manually, mainly because I was too lazy, but also because the AC in the data centre is quite strong and I didn’t want to catch a cold… So I looked for some ... [More] lightweight way of automatically installing an Ubuntu or so. Fortunately, I don’t seem to be the first person to be looking for a solution, although, retrospectively, I think the tooling is still poor. I would describe my requirements as being relatively simple. I want to turn one of the to be provisioned machines on, wait, and then be able to log in via SSH. Ideally, most of the software that I want to run would already be installed. I’m fine with software the distribution ships. The installation must not require the Internet and should just work™, i.e. it should wipe the disk and not require anything special from the network which I have only little control over. I looked at tools like Foreman, Cobbler, and Ubuntu’s MAAS. But I decided against them because it doesn’t necessarily feel lightweight. Actually, Cobbler doesn’t seem to work well when run on Ubuntu. It also fails (at least for me) when being behind an evil corporate proxy. Same for MAAS. Foreman seems to be more of a machine management framework rather than a hit and run style of tool. So I went for an automated install using the official CD-ROMs. This is sub-optimal as I need to be physically present at the machines and I would have preferred a non-touch solution. Fortunately, the method can be upgrade to delivering the installation medium via TFTP/PXE. But most of the documents describing the process insist on Bind which I dislike. Also, producing an ISO is less error-prone so making that work first should be easier; so I thought. Building an ISO The first step is to mount to ISO and copy everything into a working directory. You could probably use something like isomaster, too. mkdir iso.vanilla sudo mount -oloop ubuntu.iso ./iso.vanilla mkdir sudo cp -ar ./iso.vanilla/* ./iso.vanilla/.* After you have made changes to your image, you probably want to generate a new ISO image that you can burn to CD later. sudo mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/ -o /tmp/ubuntu-16.04-myowninstall-amd64.iso -joliet-long You’d expect that image to work If you now dd it onto a pendrive, but of course it does not… At least it didn’t for me. After trying many USB creators, I eventually found that you need to call isohybrid. sudo isohybrid /tmp/ubuntu-16.04-myowninstall-amd64.iso Now you can test whether it boots with qemu: qemu-img create -f qcow2 /tmp/ubuntu.qcow2 10G qemu-system-x86_64 -m 1G -cdrom ubuntu-16.04-server-amd64.iso -hda /tmp/ubuntu-nonet.qcow2 If you want to test whether a USB image would boot, try with -usb -usbdevice disk:/tmp/ubuntu-16.04-myowninstall-amd64.iso. If it doesn’t, then you might want to check whether you have assigned enough memory to the virtual machine. I needed to give -m 1G, because the default didn’t work with the following mysterious error. It should also be possible to create a pendrive with FAT32 and to boot it on EFI machines. But my success was limited… Making Changes Now what changes do you want to make to the image to get an automated installation? First of all you want to get rid of the language selection. Rumor has it that echo en | tee isolinux/lang is sufficient, but that did not work for me. Replacing timeout values in files in the isolinux to something strictly positive worked much better for me. So edit isolinux/isolinux.cfg. If the image boots now, you don’t want the installer to ask you questions. Unfortunately, there doesn’t seem to be “fire and forget” mode which tries to install as aggressively as possible. But there are at least two mechanisms: kickstart and preseed. Ubuntu comes with a kickstart compatibility layer (kickseed). Because I didn’t know whether I’ll stick with Ubuntu, I opted for kickstart which would, at least theoretically, allow me for using Fedora later. I installed system-config-kickstart which provides a GUI for creating a kickstart file. You can then place the file in, e.g. /preseed/ks-custom.cfg next to the other preseed files. To make the installer load that file, reference it in the kernel command line in isolinux/txt.cfg, e.g. default install label install menu label ^Install Custom Ubuntu Server kernel /install/vmlinuz append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz ks=cdrom:/preseed/ks-custom.cfg DEBCONF_DEBUG=5 cdrom-detect/try-usb=false usb_storage.blacklist=yes -- Ignore the last three options for now and remember them later when we talk about issues installing from a pen drive. When you boot now, you’d expect it to “just work”. But if you are me then you’ll run into the installer asking you questions. Let’s discuss these. Multiple Network Interfaces When you have multiple NICs, the installer apparently asks you for which interface to use. That is, of course, not desirable when wanting to install without interruption. The documentation suggest to use d-i netcfg/choose_interface select auto That, however, seemed to crash the installer when I configured QEMU to use four NICs… I guess it’s this bug which, at least on my end, had been cause by my accidentally putting “eth0” instead of “auto”. It’s weird, because it worked fine with the single NIC setup. The problem, it seems, is that eth0 does not exist! It’s 2016 and we have “predictable device names” now. Except that we still have /dev/sda for the first harddisk. I wonder whether there is a name for the first NIC. Anyway, if you do want to have the eth0 scheme back, it seems to be possible by setting biosdevname=0 as kernel parameter when booting. You can test with multiple NICs and QEMU like this: sudo qemu-system-x86_64 -m 1G -boot menu=on -hda /tmp/ubuntu-nonet.qcow2 -runas $USER -usb -usbdevice disk:/tmp/ubuntu-16.04-myowninstall-amd64.iso -netdev user,id=network0 -device e1000,netdev=network0 -netdev user,id=network1 -device e1000,netdev=network1 -netdev user,id=network2 -device e1000,netdev=network2 -netdev user,id=network3 -device e1000,netdev=network3 -cdrom /tmp/ubuntu-16.04-myowninstall-amd64.iso No Internet Access When testing this with the real servers, I realised that my qemu testbed was still too ideal. The real machines can resolve names, but cannot connect to the Internet. I couldn’t build that scenario with qemu, but the following gets close: sudo qemu-system-x86_64 -m 1G -boot menu=on -hda /tmp/ubuntu-nonet.qcow2 -runas $USER -usb -usbdevice disk:/tmp/ubuntu-16.04-myowninstall-amd64.iso -netdev user,id=network0,restrict=y -device e1000,netdev=network0 -netdev user,id=network1,restrict=y -device e1000,netdev=network1 -netdev user,id=network2,restrict=y -device e1000,netdev=network2 -netdev user,id=network3,restrict=y -device e1000,netdev=network3 -cdrom /tmp/ubuntu-16.04-myowninstall-amd64.iso That, however, fails: The qemu options seem to make the built-in DHCP server to not hand out a default gateway via DHCP. The installer seems to expect that, though, and thus stalls and waits for user input. According to the documentation a netcfg/get_gateway value of "none" could be used to make it proceed. It’s not clear to me whether it’s a special none type, the string literal “none”, or the empty string. Another uncertainty is how to actually make it work from within the kickstart file, because using this debconf syntax is for preseeding, not kickstarting. I tried several things, preseed netcfg/get_gateway none preseed netcfg/get_gateway string preseed netcfg/get_gateway string preseed netcfg/get_gateway string none preseed netcfg/no_default_route boolean true The latter two seemed to worked better. You may wonder how I found that magic configuration variable. I searched for the string being displayed when it stalled and found an anonymous pastebin which carries all the configurable items. After getting over the gateway, it complained about missing nameservers. By putting preseed netcfg/get_nameservers string I could make it proceed automatically. Overwriting existing partitions When playing around you eventually get to the point where you need to retry, because something just doesn’t work. Then you change your kickseed file and try again. On the same machine you’ve just left half-installed with existing partitions and all. For a weird reason the installer mounts the partition(s), but cannot unmount them The documentation suggest that a line like preseed partman/unmount_active boolean true would be sufficient, but not so for me. And it seems to be an issue since 2014 at least. The workarounds in the bug do not work. Other sources suggested to use partman/early_command string umount -l /media || true, partman/filter_mounted boolean false, or partman/unmount_active seen true. Because it’s not entirely clear to me, who the “owner” , in terms of preseed, is. I’ve also experimented with setting, e.g. preseed --owner partman-base partman/unmount_active boolean true. It started to work when I set preseed partman/unmount_active DISKS /dev/sda and preseed --owner partman-base partman/unmount_active DISKS /dev/sda. I didn’t really believe my success and reordered the statements a bit to better understand what I was doing. I then removed the newly added statements and expected it to not work. However, it did. So I was confused. But I didn’t have the time nor the energy to follow what really was going on. I think part of the problem is also that it sometimes tries to mount the pendrive itself! Sometimes I’ve noticed how it actually installed the system onto the pendrive *sigh*. So I tried hard to make it not mount USB drives. The statements that seem to work for me are the above mentioned boot parameters (i.e. cdrom-detect/try-usb=false usb_storage.blacklist=yes) in combination with: preseed partman/unmount_active boolean true preseed --owner partman-base partman/unmount_active boolean true preseed partman/unmount_active seen true preseed --owner partman-base partman/unmount_active seen true #preseed partman/unmount_active DISKS /dev/sda #preseed --owner partman-base partman/unmount_active DISKS /dev/sda preseed partman/early_command string "umount -l /media || true" preseed --owner partman-base partman/early_command string "umount -l /media ||$ How I found that, you may ask? Enter the joy of debugging. Debugging debconf When booting with DEBCONF_DEBUG=5, you can see a lot of information in /var/log/syslog. You can see what items are queried and what it thinks the answer is. It looks somewhat like this: You can query yourself with the debconf-get tool, e.g. # debconf-get partman/unmount_active true The file /var/lib/cdebconf/questions.dat seems to hold all the possible items. In the templates.dat you can see the types and the defaults. That, however, did not really enlighten me, but only wasted my time. Without knowing much about debconf, I’ve noticed that you seem to be able to not only store true and false, but also flags like “seen”. By looking at the screenshot above I’ve noticed that it forcefully sets partman/unmount_active seen false. According to the documentation mentioned above, some code really wants this flag to be reset. So that way was not going to be successful. I noticed that the installer somehow sets the DISKS attribute to the partman/unmount_active, so I tried to put the disk in question (/dev/sda) and it seemed to work. Shipping More Software I eventually wanted to install some packages along with the system, but not through the Internet. I thought that putting some more .debs in the ISO would be as easy as copying the file into a directory. But it’s not just that easy. You also need to create the index structure Debian requires. The following worked well enough for me: cd cd pool/extras apt-get download squid-deb-proxy-client cd ../.. sudo apt-ftparchive packages ./pool/extras/ | sudo tee dists/stable/extras/binary-i386/Packages I was surprised by the i386 suffix. Although I can get over the additional apt-ftparchive, I wish it wouldn’t be necessary. Another source of annoyance is the dependencies. I couldn’t find a way to conveniently download all the dependencies of a given package. These packages can then be installed with the %packages directive: %packages @ ubuntu-server ubuntu-minimal openssh-server curl wget squid-deb-proxy-client avahi-daemon avahi-autoipd telnet nano #build-essential #htop Or via a post-install script: %post apt-get install -y squid-deb-proxy-client apt-get update apt-get install -y htop apt-get install -y glusterfs-client glusterfs-server apt-get install -y screen apt-get install -y qemu-kvm libvirt-bin Unfortunately, I can’t run squid-deb-proxy-client in the installer itself. Not only because I don’t know how to properly install the udeb, but also because it requires the dbus daemon to be run inside the to-be-installed system which proves to be difficult. I tried the following without success: preseed anna/choose_modules string squid-deb-proxy-client-udeb preseed preseed/early_command string apt-install /cdrom/pool/extras/squid-deb-proxy-client_0.8.14_all.deb %pre anna-install /cdrom/pool/extras/squid-deb-proxy-client-udeb_0.8.14_all.udeb If you happen to know how to make it work, I’d be glad to know about it. Final Thoughts Having my machines installed automatically cost me much more time than installing them manually. I expected to have tangible results much quicker than I actually did. However, now I can re-install any machine within a few minutes which may eventually amortise the investment. I’m still surprised by the fact that there is no “install it, dammit!” option for people who don’t really care about the details and just want to get something up and running. Unfortunately, it seems to be non-trivial to just save the diff of the vanilla and the new ISO The next Ubuntu release will then require me to redo the modifications. Next time, however, I will probably not use the kickseed compatibility layer and stick to the pure method. [Less]
Posted 3 days ago
I’m not really much of a traveler or outgoing in any way. So when I was invited to GUADEC, I wasn’t very sure about it. It took some encouragement from my mentor and a fellow GSoC mate to convince me. And… I’m glad I went! It was one of those ... [More] things that I could not have experienced from my comfy chair to which I reserve myself for the greater part of my day. In fact this trip makes me feel I might be wrong about social interactions not being time well spent for me (but then again I don’t exactly buckle down into ambitious projects, so you’re free to call me ignorant). This wasn’t a conference of geeky people talking geeky stuff (was it?) but a reflection of the GNOME community as a whole. Discussions involved both experienced as well as young members or interns like myself; and the place was full of developers, designers, translators and not to mention the organizers/volunteers who made sure throughout the conference that we didn’t have to worry about logistics and stuff. Oh and big thanks to you guys for the food and the vouchers. I made sure they were put to use. So in short this is how I’d summarize my experience: Going to new places and meeting people was fun. Some of the conference talks were really got me thinking. Open source is more than just making your code being open for others to see. Productivity and interest in a BoF session is directly proportional to your contribution and how much you learn. Travelling together or sharing a dinner table can spark interesting conversations. I had a peek into the vision that the members have for GNOME. I had some great time with my mentor. I don’t actually suck on the stage (I gave a lightning talk!). I’m sorry if using a list is a crappy way of documenting one’s travels. But overall I’d say this visit has given me a different outlook and confidence towards being a contributor to GNOME and the open source community in general. Thank you GNOME for sponsoring me. And another big thanks to the organizers for arranging the picnic and other lovely excursions! I’ll make sure to provide a helping hand next time. By the way… I used to think the ‘G’ was silent. [Less]
Posted 3 days ago
This post is meant to be a final self-evaluation and self-analysis of my work for gnome-boxes during the summer. The initial project idea was about implementing/fixing a bunch of SPICE-based features/bugs to/in Boxes. The list of bugs of the SPICE ... [More] component has since changed, as some new bugs have been discovered and some old ones have been closed, so I made a summary of my involvement: Tasks completed: Some of these. although have been completed from my point of view, still need my mentor’s final approval. I have published demo video screen captures of all the implemented features in my previous posts. I added a bunch of useful new help group options. I created a way for the user to be informed that a guest machine with SPICE display doesn’t have the SPICE agent installed. This was a problem before, because you had a hard time figuring if the SPICE agent is properly working in the guest or not. I made the USB redirection also available for inactive SPICE displays. I fixed a bug that was preventing GNOME-Boxes to close the windows of remote machines that were powered off from inside the guest.  (initial bug was about SPICE, but it also happened to remote machines with VNC display ). I reported and fixed a major bug, that was causing GNOME-Boxes to close entirely when powering off/pausing a live libvirt machine that had its separate window. Although the patches haven’t been accepted yet because they need more testing, my mentor told that the fix looks really good. I implemented  a better way of sending files to guests with SPICE display, alongside more visual feedback regarding the transfers. I have created loading bars which users will be able to see during one/multiple transfer and they will also have the ability to cancel transfers. In addition, an extra screen will also appear above the SPICE display which will inform the users that they are about to initiate a transfer. I made use of the already existent spice-gtk API and implemented folder sharing between the host and a guest with SPICE display. I also created patches for making it as much out-of-the-box as possible (the WebDAV channel is automatically added to local displays and spice-webdavd is automatically installed in windows/fedora). Stuff still needs to be done, which I will cover in the next section of this post. I managed to expose SPICE/VNC connections on the network. Through the help of some libvirt-gconfig API I added, the user will be able to expose connections of local displays on the network at choice. I made GNOME-Boxes able to create remote machines out of SPICE/VNC connections exposed on the network by other GNOME-Boxes clients. I added two new phases to the remote machines wizard, setup and preparation, which now test the connection and check that the user has the right credentials to access the remote machine.     Future goals: Multiple shared folders: So far I have created the UI for multiple shared folders in Boxes and  got to know a lot about how things work by implementing multiple shared folders in phodav. Marc-Andre Lureau suggested a better way of implementing multiple shared folders, by creating links to all the folders in a GNOME-Boxes private folder, which requires work only on the client part of SPICE layers. Considering that phodav will be reimplemented soon, this is definitely the best solution. Connect to remote libvirt machines using SSH So far I have done some research and came up with a solution to the problem in libvirt, by creating a SSH tunnel and providing using a method call a fd through which the connection will be possible, although I didn’t found the time to actually implement it. Challenges: spice-webdavd needs to be included and mantained in Debian/Ubuntu as a package, a task which I learned that is a lot more difficult than it appears to be . I will try to involve as much as possible to help this. I have also made a spreadsheet with links to all the patches: spreadsheet   A shout out to my mentors: Zeeshan Ali, Victor Toso, Pavel Grunt and Fabiano Fidencio for the much needed help and advices       [Less]
Posted 3 days ago
This is the first part of analysis for the usability test I recently conducted, with the purpose to uncover usability flaws of two GNOME applications: Photos and Calendar. For this part I am focusing on visualizing the results, demographics and talk ... [More] more about the methodology I used for testing. We will take a closer look on how testers performed on every task given, using a heat map. Hopefully this will create a clear picture of the testing process and help to “get to know” the participants and understand them better! Ten volunteers participated in the usability test, representing a mix of genders (slightly more men than women) and an age ranges (mostly at age 15 to 25). All participants were asked about computer usage frequency and the majority said that they use it on daily basis. Participants identified their computer expertise by choosing a level between 2-5. 1-I don’t know anything, I never use the computer 2- I don’t know a lot, I am not a frequent user 3- I know some things 4- I am pretty average 5- I am better than most   Most of the participants were not familiar with GNOME. Some of them had heard about it in the past but this was the first time using it, three of them use GNOME daily. Testers were provided a  laptop running GNOME 3.20 on Fedora 24 operating system, without any modifications that could possibly affect the participants overall experience during the test. They executed the test separately, using identical settings. I used Gnome Continuous image running on GNOME Boxes, to test with Calendar. Each participant used a separate guest  account that had been pre-loaded with the example files needed to complete the tasks. Each usability test session started with an introduction: Thank you for coming today! Just like Windows is a desktop system and MacOS is a desktop system, GNOME is a free software desktop system. And you’ll be doing a few tasks using GNOME and a few GNOME applications. I’ll give you the tasks one at a time. We aren’t “testing” you. The test is all about the software. If you have problems with part of the test, that’s okay; that’s exactly what we are trying to find. So don’t feel embarrassed if you have problems doing something and please do not feel pressured by time or anything else. If you can’t figure something out, that is perfectly okay and will still provide us with useful information for the test.  If you have any questions about the tasks I will try to answer them, but the answers and feedback should come directly from you as much as possible so I will avoid anything that would lead you to a specific choice.  Also, I’m going to take notes while you’re doing these tasks. It will help me if you talk out loud when you are doing something, so I can take notes. So if you’re looking for a Print button, just say “I’m looking for a Print button.” And move the mouse to wherever you are looking on the screen, so I can see where you’re looking. It would also be very helpful for me to do a screen-record of the testing process, so that I can go back to that later during my analysis.   After that, participants were presented with 16 scenario tasks which they were expected to complete in 40-50 minutes. All the participants managed to complete the tasks in less than 50 minutes. Photos: 1. You just got back from your trip to Thailand. You want to show your friends all the pictures that you captured there but you notice that they are all mixed with the other pictures that were previously there. To avoid the confusion you decide to create an album that contains only pictures from your trip and name it “Thailand trip”. 2. As you are showing the pictures of the album you just created, you notice a picture that you’d like to share on your social media accounts. You “favorite” that picture, in order to access it more easily later on. 3.While looking trough all the photos, you notice that two of the photos look very similar, so you decide to delete one of them. 4.After showing your friends all the pictures of the “Thailand trip” album, you revisit your “favorite” picture since you want to edit it before sharing on social media. 5.You start by cropping the picture to make it look smaller. 6.Than you want to play with colors a little bit. You want to make the picture brighter and lower its saturation but leave the contrast as it is. 7.Now you want to enhance your photo. You sharpen it a little bit and leave the denoise as it is. 8.And finally, you choose a filter named “Calistoga” as a final touch. 9.You want to apply these changes, so the photo remains as it is. 10.You really like the way that the picture turned out and you decide to set it as a “Background picture”.   Calendar: 1.You want to have all your work related activities in your calendar but you don’t want them to be mixed with other activities, since you have a lot going on lately. In order to keep your events organized you decide to create a calendar only for work related activities. Name the calendar simply “Work” and make the activities appear in purple color. 2.You have a meeting with your boss today. You want to create an event named “Meeting for work”, the meeting starts at 2:00pm until 4:00pm. Make sure to put it in the “Work” calendar that you created earlier. 3.Set a reminder 10 minutes before the meeting starts, just in case you forget that you have a meeting. 4.You plan to throw a big celebration party for your birthday next year. You want to check what day of the week will your birthday be, while wishing for Friday so everyone can show up! Check the calendar and tell me what day of the week your birthday will be in 2017. 5.You have already created an event named “GUADEC” for the GUADEC  conference you are attending next month but you forgot the exact date. Can you please search for it and then tell me the date. 6.You don’t want to move across different calendars, creating same events multiple times. So, you try to connect this calendar with google calendar (or any other online account you use).   I used Jim Hall’s heat map technique, to summarize my usability test results. I find this to be a great way to see how the users performed on each task. The heat map clarifies how easy or difficult it was for the participant to accomplish a certain task. Scenario tasks (from the usability test) are arranged in rows. Test participants (for each tester) are arranged in columns. The colored blocks represent each tester’s difficulty with each scenario task. Green blocks represent the ability of the participant to accomplish the tasks with little or no difficulty. Yellow blocks indicate the tasks that the tester had significant difficulties in accomplishing. Red blocks indicate that testers experienced extreme difficulty or where testers completed the tasks incorrectly. Black blocks indicate tasks the tester was unable to complete. (Click for a better view) Generally speaking, participants accomplished most of the tasks without difficulties. Tasks like edit a picture, change the color, enhance, apply a filter on Photos and set an alarm, search for an event on Calendar, seemed to perform really well. Participants encountered the most difficulties in creating an album in Photos and adding a new calendar, adding a new online account in Calendar. There are two tasks(marked in black) that participants were not able to accomplish, which is a small number considering the number of tasks that were completed successfully. I ordered the columns starting from beginners(left), to experienced users(right). We can notice the “Cool” rows with lots of green and yellow are dominating the right side of the heat map. This indicates the impact of the previous experience in accomplishing the tasks. Areas that describe the experienced users tasks are more likely to be areas with good usability. This is a wrap for part 1 of usability test analysis. Next up, I am coming with more details “pulled” from the heat map. What was common between the “cool” rows and why did users find these easy to do? What was common between the “hot” rows? What where the challenges and what went well? More to come soon!   [Less]
Posted 3 days ago by (Jakub Brindza)
Customisable keyboard shortcuts for PitiviGoogle Summer of Code 2016 SummaryOver the summer I have been working on customisable keyboard shortcuts for Pitivi. Below, I am including an easy-to-read and concise summary of every bit of work I have done ... [More] over the last three months.The summary of all the code I have written can be found at: work above contains these key elements: Refactor the code to use Gtk.Application.set_accels_for_action() in order to create the base for customisation. Use the Gtk.ShortcutsWindow widget to allow the user to preview the keyboard shortcuts. Refactor Pitivi’s Preferences dialog to use Gtk.StackSidebar. Add keyboard shortcuts section to the Preferences dialog with a selectable list of all the shortcuts in the application to allow customisation. Implement saving of shortcuts to an external configuration file for the case when a user changes the default shortcut settings. Implement loading of saved accelerators from the configuration file and ignore the default accelerators when this happens. Create a ShortcutsManager class dedicated to storing and handling of the accelerators. It is used for registering keyboard shortcuts in appropriate categories and their consequent management. Fully support the ShortcutsManager class with tests, mostly using the Mock library. Implement the customisation of accelerators via a separate dialog window opened after user's selection in preferences. Blog posts describing all of the aforementioned work can be found at: the very end, I would like to specifically thank Alexandru Bălut for his great mentorship, valuable pieces of advice, willing approach towards answering my questions and, most importantly, for making me a better software developer. [Less]
Posted 4 days ago by (Meg Ford)
I arrived at GUADEC a few days early to participate in the Board and AdBoard meetings. Incoming and Outgoing Board Members On my first full day in Karlsruhe the board met to slog through a long list of agenda items. We started the meeting with some ... [More] team-building exercises. In general I hate team building, but Nuritzi's exercises weren't too bad. As part of one of them I told a story about a carved table a sculptor friend recently gave me: Table with Carving of Coelacanth by Christopher Tucker After the ice breakers were done, we sat down and went through outstanding tasks on the Board's to-do list. Some of the outstanding items were re-assigned to new board members, some were closed, and some were discussed. Cosimo took the task of asking the community how we should use the Privacy funds. It's a priority for us to put the funds to use, so tomorrow during the weekly board meeting we are going to review the community's feedback and decide on next steps. Another item we discussed during the meeting was how to create a standard code of conduct for GNOME events, so we don't have to re-invent the wheel every time. Allan, Nuritzi, and I worked on first steps towards that during the second day of the Diversity BoF.On the main conference days I attended talks and a few unconferences, and met with some of the other members of the LAS GNOME team to work out the conference schedule. The local team did a fantastic job organizing the conference, and there were a lot of nice touches (like ice cream and the pool). Many of the talks were interesting, and it was nice to catch up a bit on what is happening in GNOME, and where people are interested in taking it in the future. Kudos to the GUADEC team for getting the talks uploaded so quickly. Some of my favorite talks from the conference were: We Want More Centralization, Do We? Modular UIs for Offline Content Music: State of the Union Light show at the Karlsruhe Palace After the main conference I attended the Diversity BoF. On the first day we formed a diversity working group and defined a mission statement. We spent the remaining time brainstorming around the first point of the mission statement, which is to attract newcomers from underrepresented and marginalized groups. Here is an etherpad with notes from the first day (thanks to Philip Chimento for taking notes and emailing them to participants). The second day of the BoF we focused on forming a working group for the code of conduct. Allan, Rosanna, Nuritzi, Marina, and I signed up as core members of the group, and Cosimo, Benjamin Berg, and Federico signed up as supporting members. As our first action we sent an email to the board outlining the process we want use to put together the code of conduct, including how we will solicit feedback and ideas from the community, review resources, and present drafts of the CoC to the board and to GNOME foundation members. If things go as planned, we will send an email soon to the foundation list, asking for more volunteers as well as feedback and resources from the community.As always, it was great to see everyone! Hope to see you all next GUADEC. [Less]
Posted 4 days ago
In this blog post, I will be sharing my GUADEC experience which recently held from 11-Aug-2015 to 17-Aug-2016 in Karlsruhe, Germany. I actually got to see the faces behind IRC nicks, met most of developers and people from GNOME community and also ... [More] most importantly, GUADEC helped me to meet my Google Summer of Code mentor Debarshi Ray in person which was just great. Core conference 12-14 August I attended most of the talks held during the core conference days. Some of which were too advanced to understand at this level. Hopefully down the line in future I would re-watch them (yes! talks are recorded here) and will be able to understand. But I could feel the energy in the room with the speaker presentating and answering audience questions. All in all, those were “legendary” :P BoF days: There were BoF sessions held after the core conference days. As I had already my GSoC’s project on hand, I just attended some BoF session for sometime. Rest of the time, I was focusing on my project. I would like to mention, I did attended GStreamer workshop held on 11-August-2016, given by Olivier Crête. I was able to understand fundamental concepts in GStreamer including GstElements, Object’s Factory, pipelines, bins etc. At the end, we also built a small audio-video player capable of playing any media file. The workshop was sponsored by Collabora. Olivier Crête prepared hands-on exercises which was a very effective method of learning quickly. The workshop was well-paced and I thank him for arranging the workshop. Looking forward to contribute to GStreamer. :) I met couple of “legends” of GNOME community including my mentor, Christian Hergert, Sri Ramkrishna, Carlos Soriano and many others. I went up to them and discussed various aspects of how the community works, understanding roles of Board of Members. They were happy to answer all my questions and the discussions were quite productive as I aim to continue to contribute to this wonderful community. Made couple of interesting friends I met at GUADEC, Gaurav, Amisha, Parth and Atul. We got to know about each one’s project on which they were working. We also presented our projects during intern’s lightening talk. Lastly, I would like to thank GNOME Foundation and travel-committee for helping out with my travel and accomodation expenses. It would not have been possible without them. [Less]