Quantum Mechanic

Content tagged Gnome

Our Bodies, Our Hearts, Our Software

posted on 2016-08-23 22:10:04

I don't really keep up with the various Linux conferences that happen now and then, but I certainly follow various free software planets, which generally filter the good stuff out for me anyway.  Something that slowly made it through my filters recently was Karen Sandler's keynote address at the Australian Linux Conference, where she, unsurprisingly, talked about the importance of FOSS software.  The part that was surprising, though, and really hit home for me, was when she started talking about her internal defibrillator.

Apparently, Karen has an abnormally large heart, in the physical sense.  She is at risk of suffering what her doctors called "sudden death," which means she could simply die with no warning.  Luckily for her, there is a great treatment in the form of the internal defibrillator - a small device that can be wired directly into her heart that will issue a shock to restart her it if she suddenly, well, dies.

I'm going to take this moment to urge you to go watch the video, it's a bit long, but listening to her talk about her own heart is going to do more for you than I can manage.

For those of you not watching the video, there are two scary parts.  First - when she talks about being at risk of sudden death.  The second is the sequence building from her cardiologist not knowing much about the device he was offering to implant to the point where he hangs up on her in frustration.  His frustration came from her desire to see the code running on the device he wanted to put in her, the company's unwillingness to show her the code, and his lack of understanding about why that's important.  If you're wondering why this sort of thing is important at all, it's because this machine is wired to her heart.

What we put into our bodies...

When we go out to dinner somewhere, we expect to be told what's in our food if we ask, we expect to know what's in the drugs we take, so why shouldn't we expect access to what's in the devices implanted in our bodies?

Let me phrase it another way.  A company makes an electric heart that you need because yours was stabbed like Jean-Luc Picard was in Star Trek.  You get it and want to know what makes you tick, and they tell you that your heart is their intellectual property and you're not allowed to know how it works. Furthermore, you're not allowed to modify it, open it up, or see its source code.  There's a well-known bug in it?  There's a firmware update?  You might not get it if it doesn't make money for the company.  You want to install it yourself?  That might be illegal depending on the time of year and what phase the moon is in.

When Karen told her story, her concerns were that she couldn't check the logic of her device, herself, nor could she have a friend or consumer-advocacy group do it.  Four years ago, when I started writing this, that was where the story ended.

Things that come out of our bodies

A few weeks ago, I came across this article, which I thought might be a bout Karen, again.  I opened it, hoping to read more about her and, hopefully, what progress she had made.  Instead, I learned about a brave, new person taking up this baton, because the same problems were still around.  It turned out that, on top of Karen's original concerns, people were now taking data from Marie Moe's device and refusing to give her access to it.

At first, as I read that they were collecting the data, I hoped it was available to her.  Wouldn't that be cool?  I could make graphs of my heart rate, if I had that data.  But they seemed to think that the data was theirs.  Her doctor seemed to be too busy to help her get at it either, which isn't surprising.  To me, this feels like going into the doctor to get the results of your blood work and being told, "I can't show you the numbers, but your cholesterol is fine.  The company owns your iron levels, but you aren't anemic."

There's an old maxim that is often forgotten or ignored that you don't own anything you can't take apart.  Warranties are nice, but when farmers can't repair their own tractors you start to see why user serviceable parts, even skilled- or trained-user serviceable parts are important.  In a world where any data that's collected is often sold and firmware updates come twice a year and stop as soon as the new model comes out.  People with implants are at an ever greater risk of losing control of their body parts RoboCop-style.  Malfunctions happen, and a thriving, open community is a great way of keeping the process more transparent and hopeful for everyone.  I would hate to have a malfunctioning defibrilator in my chest and have nowhere to turn, once the company tells me it's outside warranty or the like.

End of the SoC

posted on 2010-08-20 22:16:00

Next week I'll be heading back up to school, and the Summer of Code is now at an end. This summer was a challenge for me - dealing with a program as sophisticated as gnome shell coming mostly from a hobbiyist background was really daunting. I learned a lot, and I certainly hope to contribute more, but I wanted to take advantage of the community on planet.gnome.org and ask a few questions of the people who are infinitely more productive than I was:

1 - When do you hack? I know I tend to do my best work in evenings, but sometimes that isn't available. What conditions do you all work best under?

2 - What's your toolset? I use emacs for writing and keep a terminal (or many in terminator [thanks, RainCT!]) open. Sometimes I feel like it's really awkward switching between things.

3 - How do you best communicate? I spent a lot of time on IRC, but since I was in Germany, sometimes it was hard to overlap with the folks of RedHat who were on US working hours. It was easy to fall out of touch.

Feel free to answer any or all, if you feel like answering at all.

Also, importantly, thanks to Marina for keeping me more in line than I could have managed myself.

Finally, I'd like to thank the gnome foundation for funding my stay in the Hauge, I was really impressed with the gnome community at GUADEC.

Message Tray Week 5

posted on 2010-07-02 22:57:00

With the end of most of my classes here, it's gotten a lot easier to sit down for long stretches of time to work on coding. I forgot about the report last week, which is sad because my first commit made it into gnome-shell: "Fix missing semicolon in source title commit" I know, I'm pretty amazing.
While that was a pretty small thing, my second patch also landed during the last week, bringing icon buttons to the land of notifications. Gnome shell's notification service now advertises a 'x-gnome-icon-buttons' capability, so if you pass it actions with id's that match icons, you get a pretty icon button. This brought up the question of symbolic icons and I now have on my plate to implement a means of attempting to load them in g-s. I miss working in C, so, that will be a nice break from the rather unstructured world of javascript.

Since I'm most familiar with rhythmbox, I've been implementing things that interact with it, and along those lines I've been working on a patch for displaying background images in notifications. Part of working on that ended up being working on a patch to change how rhythmbox sends cover artwork and trying to make g-s's notification service's icon and image handling follow the notification spec more closely.

I am also still trapped in xembed hell, trying to deal with status icons, and making them play nicely in the message tray. They are resisting me quite successfully, but, well, I'll keep trying.

Last but not least, I've found a programming rhythm. I'm starting to develop habits of how many terminals I have open while coding, and my git patterns (branch, add, commit, add, commit --amend, etc). That's been pretty neat for me, since I haven't programmed this seriously before outside of crystal lattice simulations.

Gnome Shell Message Tray Week 4

posted on 2010-06-20 20:20:00

This week, as with any learning experience, I've really learned how little I know. As I mentioned last, week, I've moved non system status icons down into the message tray in my local branch and I've been trying to rework the system around that. This brought quite a few design points forward including. The message tray, as it is, was not really designed around the icons being important objects, they don't have a real way of keeping track of which notifications are theirs, and most of the management code for notifications and sources is in the message tray object itself. What this means for me, is that I need to revamp how sources and the message tray interact.

It's also posed a number of smaller problems that push my limits. In one case, I have to try and get accurate hover information from an object that contains an xwindow (the status icon). So I get hover signals from the box the window is in, and the window itself. It takes me back to electronics (I'm a physicist, not a computer scientist) and I'm trying to implement a switch debouncer at the moment to solve the problem.

I really don't have much to show for this week, between being sick and spending a lot of time writing notes to myself about how to redesign things. This past week and the next are finals here, so I've been a little busy with that too. Once most of my classes stop this week, I hope I'll have time to work on things during the weekdays, when most of the helpful inhabitants of #gnome-shell are around.

I would add, though, that while I don't have anything really new to show, I have learned that in most cases it's best to just jump in and write something that you think might work, rather than labor over not being sure how to do something. Half the time it at least partially works and you figure out how to move forward.

Gnome Shell Week 3

posted on 2010-06-12 02:12:00

Working on something that is almost entirely visual presentation, I've been trying to have screenshots every week. This week I'm excited to demo what I'm currently hacking on, which is splitting the icons out of the status bar up top and moving the non-system ones down.

Every time I try a new programming language, I have to learn how to interpret what the compiler/interpreter says when I do something wrong. Today was a lot of figuring out what I was doing wrong with signals. I'm still learning to deal with some facets of Javascript, like its complete indifference as to whether you've defined a function of variable. I've mistyped variable names a number of times, only to have functionality that depended on them not work because JS didn't care that it had never seen that variable name before. Sometimes I find it frustrating how free-form it can all be. Sometimes with the magic gir I also don't know quite how it all works.

Cool things I learned this week:
  • git-bz is awesome, helpful and makes it less likely that I post the same patch to two bugs...
  • git in general really suits my work-on-five-things-at-once (dis)organization style
  • If given a kiwi in a German cafeteria, I will proceed to make a mess
Fun things are afoot in the message tray. Now that the icons are down there, it's time to really start tying things together. Marina has also said there are design improvements in the works.

Gnome Shell Message Tray - Week 2

posted on 2010-06-05 19:55:00

The story of my work on the message tray this week can be summed up in two words - "more pictures." I've been trying to replicate the music player mockup we have by getting the previous and next icons into the notifications and getting the album art into the background. This has resulted in two branches I'm working on at the moment. One is my attempt to add an optional background image to notifications in general. This has been (and continues to be) a lesson in the shell toolkit of widgets. I'm still not entirely sure how they all work together, and some of them have unexpected interactions (or lack thereof). My other branch, which is doing its job nicely, implements icon buttons as part of normal libnotify notifications. Without asking applications to add more info to notifications, I made the code that haddles the actions sent in the notification check to see if the action key corresponds to a stock icon, if it does, icon button! This means I've patched my copy of rhythmbox to send the next action as 'media-playback-next' or something like that, but I hope that is an easy and relatively non-invasive way to make the notifications more interesting with minimal effort.

While trying to implement things for the message tray, it's been interesting seeing how the pro designers think about it. At first it was a bit frustrating when marina was insisting on sticking to the notification spec and not jumping right into writing mini dbus applications for every program, but I think I'm starting to realize the value of all that. She also has the uncanny ability to pop up in IRC when I least expect her.

This past week, while I have gotten some things working, I've made quite a mess of some code, and still need to polish things off. I don't tend to have lots of time right now because classes are still in full swing for me, so these weekends are my best work time.

In the coming week, I'd love to see the status icons moving down to the message tray, once I've finished these bits up. I feel like that's an important part in seeing how this all will fit together, but the project is still pretty fluid, as people who follow development will know, and we'll see where those up top think I'm best put to use in the coming week.

Gnome Shell Message Tray

posted on 2010-05-28 22:50:00

Hello everyone! I'm one of the lucky GSoC students for this year, and while a post of mine already showed up, this is the first one I've intended to be here. My programming history has been on and off - my first language was qbasic back when we still had computers with green screens in my school, and I'd try and write star wars games with just terminal I/O. Since my first language was qbasic, I went for another basic variant for the second and that was the utterly horrible Visual Basic, which effectively took me out of programming for the next five or six years and to this day I have trouble trusting Glade because of the setbacks those visual basic drag and drop windows caused me.

This first week of official coding, I started by playing with ways of implementing more useful/newer versions of what we know as status icons. In later revisions of the shell, only system-specific icons will get to keep their coveted places at the top of the screen, and the rest of the programs that try and use passive notification will be banished to the lower right hand corner, where I get to try and make them better.
Here you can see the fruits of three hours of banging my head against gjs's dbus interface. This may or may not bear any resemblance to how the tray icons will eventually look. This week was spent trying to figure out the best way to deal with status icons. We want to integrate the notifications and more functionality - like in-tray IM for telepathy - into the system and so it's difficult to decide whether to try and add more information to the libnotify popups or to implement lots of app-specific sources.
Hopefully in the next week, the non-system notification icons will get moved down to the tray and I can start figuring out how to get their notifications to them and play with libnotify. At this point the project is very much figuring out how things should work.

Also in the exciting news category is that I get to go to GUADEC, which will be my first conference of any kind, I think. I'm looking forward to it, and it conveniently coincides with the end of my time studying here in Freiburg. Thanks to the GNOME travel folks who'll be helping me be there!

Google Summer of Code 2010

posted on 2010-05-22 18:55:00

So I've started working in ernest on Gnome Shell as of about today. I've been accepted into Google's Summer of Code program, to get paid by the nice Google folks for a few months to work on OSS, which I wanted to do anyway. It's been interesting getting started. As with any new project, there are a million new things to learn - like javascript, dbus, etc. Javascript is confusing me a little because it looks a lot like C, but kinda feels more like lisp. I keep wanting to write tiny functions to do everything. I think I've also started thinking about predicate-style functions a few times too. So far, I haven't gotten anything working properly, but hopefully I'll fix that soon. It's Pfingstferien here in Germany, so I'll have a week to practice and get started on something.

View content from 2009-03-16 04:17:00, 2009-03-21 04:36:00, 2009-04-02 02:00:00, 2009-04-04 01:48:00, 2009-06-25 19:43:00, 2009-07-09 19:15:00, 2009-07-09 19:44:00, 2009-07-20 23:25:00, 2009-07-21 16:57:00, 2009-08-05 05:44:00, 2009-08-05 10:28:00, 2009-08-12 07:11:00, 2009-08-23 02:05:00, 2009-08-23 04:30:00, 2009-10-30 08:02:00, 2009-11-08 06:59:00, 2009-12-04 01:17:00, 2010-05-22 18:55:00, 2010-05-28 22:50:00, 2010-06-05 19:55:00, 2010-06-12 02:12:00, 2010-06-20 20:20:00, 2010-07-02 22:57:00, 2010-08-20 22:16:00, 2010-09-02 02:07:00, 2011-01-07 10:35:30, 2011-01-07 11:17:53, 2011-01-13 06:48:47, 2011-01-24 02:52:06, 2011-01-31 02:41:34, 2011-02-13 23:09:09, 2011-03-23 05:59:11, 2011-04-06 01:33:19, 2011-04-24 22:15:24, 2011-04-24 22:51:30, 2011-06-06 22:36:07, 2011-06-16 02:27:10, 2011-06-30 01:26:18, 2011-07-31 23:10:35, 2011-08-17 04:15:14, 2011-09-11 17:13:48, 2011-10-01 15:55:35, 2011-11-02 15:14:47, 2011-11-08 01:49:00, 2011-11-29 23:28:27, 2011-11-29 23:30:17, 2011-11-30 06:58:06, 2011-12-08 02:41:21, 2012-01-17 17:27:10, 2012-01-20 16:59:54, 2012-01-31 17:26:17, 2012-02-07 15:46:44, 2012-02-10 17:15:32, 2012-03-03 18:35:25, 2012-03-30 02:45:19, 2012-04-23 21:44:13, 2012-07-13 16:39:31, 2012-07-13 16:56:55, 2012-07-17 01:15:15, 2012-08-21 22:12:00, 2012-08-22 21:26:44, 2012-09-19 15:35:27, 2012-11-15 21:27:40, 2012-11-15 21:28:49, 2012-11-26 09:40:14, 2012-11-30 22:05:50, 2013-02-22 20:37:08, 2013-03-08 08:50:26, 2013-03-16 21:41:50, 2013-04-06 06:50:15, 2013-04-15 04:18:48, 2013-04-15 20:27:06, 2013-04-23 20:43:29, 2013-04-30 20:39:31, 2013-06-14 00:17:17, 2013-06-18 16:45:24, 2013-07-08 10:33:06, 2013-07-25 05:00:00, 2013-09-05 14:07:31, 2013-09-25 15:31:00, 2013-09-26 15:35:00, 2013-11-12 15:49:00, 2014-01-04 01:46:27, 2014-02-02 21:48:41, 2014-02-24 02:55:00, 2014-03-05 18:42:00, 2014-07-22 00:46:00, 2014-11-11 14:15:00, 2014-11-13 16:33:00, 2014-11-21 22:17:00, 2014-12-01 20:30:00, 2014-12-05 17:57:00, 2014-12-16 19:53:00, 2015-01-13 18:28:00, 2015-02-12 22:12:00, 2015-07-11 23:54:00, 2015-07-12 00:22:00, 2015-10-18 22:57:35, 2015-10-19 00:32:40, 2015-11-28 19:01:47, 2015-11-29 17:03:00, 2015-12-06 03:02:00, 2015-12-10 13:34:00, 2016-01-03 17:45:00, 2016-01-03 17:56:00, 2016-01-16 20:43:00, 2016-05-10 01:41:00, 2016-05-12 02:01:00, 2016-05-15 14:32:00, 2016-08-01 13:15:00, 2016-08-22 22:05:00, 2016-08-23 22:10:04, 2016-10-26 17:33:48, 2016-11-26 01:36, 2016-12-05 14:42:00, 2016-12-05 19:31:00, 2017-02-03 18:00