Comin’ round the mountain.On Thursday, I’ll be driving to FUDCon in Blacksburg, VA. FUDCon in North America is an event I look forward to attending annually even though I’m not neck-deep in Fedora as often these days. I used to love going to the international FUDCons as well, and I’m thrilled to see those events being planned in advance on a regular basis. I get to drive to this particular event, because it happened to end up only about 4.5 hours drive from where I live. That suits me fine, because I got a new car (warning: Flash) I can’t wait to take on its first long trip. Weather should be fair for this time of year, I hear. I also got some new vanity plates that will touch the hearts of Linux geeks, but probably elicit only head scratching from others. However, this post is about more than my car, as much as I like that topic! I wanted to say a couple things about what I’m planning to do at FUDCon. First, I plan to spend some time with the Fedora Insight crew on Friday night and on Sunday morning. I want to see the feature sets the amazing Peter Borsa has been working on, and hopefully we can make some progress on streamlining deployment so other people can help. We’ll also be working on Sunday with a designer (cross fingers!) to design an interface for a project/events calendar. Unfortunately, I’m leaving Sunday afternoon to get home that night, but I will try to provide a ride out of town to the airport for anyone whose schedule matches up. By the way, you may want to check out the travel planning page if you need to arrange rides. The other thing I’m planning is an open workshop on Saturday on Drupal internals. I still haven’t decided whether this is best done as a workshop vs. BarCamp. I’m interested to know how many people really would show up — which means it might be good for me to pitch this at BarCamp. If there’s very little interest, I can spend the day learning instead of blowing hot air. But if it turns out people are interested, I have some books and materials I’m bringing with me that I can recommend too. As usual, I will be taking on the role of “person with meager skills who managed to scramble onto the first plateau with help, and wants to pass it on.” (It worked for PyGTK, maybe it will work here too!) Thankfully Peter will be on hand, and I trust he won’t let me get away with horrible errors. There’s an enormous list of proposed hackfests and workshops on the wiki page. That’s fantastic, and it means we’re going to have a very content-rich conference as usual. I also see the General Schedule on the wiki is quite bare. I believe the organizers are encouraging talk owners to try to schedule in advance — at least when it comes to the hackfests and workshops. My understanding is that these form an outgrowth of the BarCamp — essentially widening the schedule for Saturday. That means there will be a lot to choose from, so I hope everyone brings not just their thinking caps but also their voices and appropriate input devices to participate. UPDATE: Robyn has a great FUDCon blog post on scheduling. Go read it. Now. I’m looking forward to seeing a bunch of my Fedora friends there, and of course celebrate at the ever-entertaining FUDPub event. Remember, though, that Sunday starts early, so don’t go overboard! The statute of limitations has expired on my one FUDCon event that was a little too entertaining, so I’m allowed to revert to schoolmarm mode now. But seriously, there’s so much to do and see at FUDCon that I’m sure people will put the priority on content and collaboration as always. Hope I see you there! |
Wireless at FUDCon Blacksburg.In case you hadn’t seen it elsewhere, and you are attending FUDCon in Blacksburg, there is a pre-registration available for wireless. All attendees are asked to follow these instructions to grab a guest wireless account — before they show up! Usually I’d have a much better entry for my first post of 2012, but I was really pressed for time. I’ll try and do better next post. Until then, you’ll have to just say hello to my beefy friend. |
Installing Fedora 16 with web self service.My main workhorse station — my ThinkPad x220 — has been on Fedora 16 since before the Beta release. But today since I have a calendar free of meetings, I thought I would move my gigantic workstation to F16 as well. However, the workstation has a gigantic hard disk and contains a partial Fedora mirror. I didn’t want to move all that stuff to another station for purposes of installation, and I wanted to do a faster installation than the network would allow (even with a 10-15 Mbps and a relatively fast local Fedora mirror on the Internet at UVa or Virginia Tech), so I decided to see if I could use its own storage from which to do the installation. Obviously it was very important for me in this situation to choose a Custom disk layout. I needed to make sure not to inadvertently wipe out the partition where my Fedora mirror material was stored. I carefully selected the appropriate options there. Then came the hard part — having my station serve its own content to itself. I completed the installation steps up to the package selection. At this point the Anaconda installer only wants to see HTTP/HTTPS or FTP repositories for installation. So what I decided to do was to set up a minimal Apache web server to serve out content already on the hard disk to the installation program. I decided to only do an installation from the base repository for the original release, and then I’d yum update first thing after booting the new installation. How’d I do that? Using the shell environment Anaconda provides for utility and debugging. If you hit Ctrl+Alt+F2 you can get the virtual console that holds a bash shell. Once there, you can either use rpm2cpio or manual copies to bring in the necessary content, since the installer environment is a highly stripped down Fedora installation. I did it somewhat manually, identifying a couple necessary libraries from apr and apr-util first by running ldd on the httpd binary, then bringing in httpd stuff and testing with the following command line until things worked: httpd -e debug -X As a result the package installation took about 3 minutes instead of 45 or more over the Internet connection (and well over an hour if I’d had to move all the mirror data around first). I wouldn’t recommend this method unless you’re fairly comfortable with running Web servers already. And again, all of this is a highly unusual case where I was putting silly demands on the installer. But hopefully this is a nice illustration of why there’s always another way to skin a cat using Fedora. Or maybe it’s just a “stupid pet trick.” Either way, now that it’s memorialized I may be able to find this info next time I want to try this. I’ll combine this with the information in a previous post to finish my installation shortly. |
Holiday break 2011-2012.I’m not sure whether anyone still gives out (or even needs) these kinds of notifications, but I thought I would mention the upcoming holiday closing at Red Hat. Every year the company tries to make sure there are at least a few days employees can be gone and not worry about catching up to their co-workers when they come back. So for some time between about December 24 and January 1, the entire company is closed, except for UPDATE: The above failed to mention that “essential” includes our entire awesome support organization, who remain on duty for our customers all the time! The reason I’m posting about this isn’t to say how nice Red Hat is as a company (even though generally it is), or how much I like vacation time (even though I do). Rather, I wanted to make sure the Fedora community is aware that many Red Hat employees will probably take advantage of the holiday closing to visit family or take vacation to places without Internet access. As a result, some people might not be around as much as usual over the holidays. Personally, I’ll be around somewhat this year, because my family lives fairly close by and I have no long-term vacation scheduled. But I do intend to make some shorter, one-day family trips, so it will certainly be a reduced presence from usual. My goal is for this advance notice to give you some time to figure out if you have any expectations for before the holidays, or work you want to reschedule for afterward instead, or perhaps you want to accomplish some things when fewer people are going to be distracting you! Whatever your goals, I hope the holiday season will bring you some time for them, and that you’ll enjoy 2012 all the more for it. |
Enrichment day 4.This week was the last enrichment class for my group of fifth graders. As I reported in the last installment, the syllabus ended up changing a bit to adapt for the unexpected difficulty of some of the concepts. Variables in particular were difficult, but eventually the students started to understand them pretty well. This week built on variables to teach the concepts of conditionals and loops, using the if and while statements in Python. It was at this point that I could tell that most of the students had really grasped the concept. One of our exercises was to follow the logic of a simple counting/printing loop. The kids seemed to like putting themselves in the role of the computer. It was also at this point that the kids started to understand the power of booleans (True and False). We tried a number of additional comparisons to understand cases where conditions evaluated to each. The emphasis on True and False paid off in the section where we discussed conditionals and loops because we could pay more attention to the actual branching operation, as opposed to getting stuck on figuring out why the branch happened. This week I also discovered what I think was a good way to increase the idea of collaboration in the class. Obviously there wasn’t time to check every child’s work at every step of the way. But I could make things easier and less pressured on the kids by rotating a “look and see” duty around the class. Since the class was relatively small (only six kids), I could have all of them gather around one person’s console to see the results of a program or exercise. We could even figure out what went wrong together in some cases. Hopefully this removed a little of the pressure of having the instructor point out something that was wrong — a friend could point it out and even help fix it. Of course, it wouldn’t be a last class without some bonus for the kids! Thanks to the fine people at the Fedora Project, I had stickers, temporary tattoos, and buttons for the kids, which they loved. They also got to take their Fedora Live USB keys home, which several of them had been waiting for since the first class. Speaking of keys, I sent home an information sheet for the parents to go with the keys, so they’d understand what was on it, how to use it, and where to find more information and help. The keys also had two complete electronic books (both CC BY-SA licensed, check them out here and here) included that are specifically aimed at teaching Python to kids, so if the kids want to go further they can. A couple of the students demonstrated really serious aptitude, so I think chances were good the class ignited the imagination of a future computer genius! I’ve posted the last lesson (and miscellaneous resources) in my fedorapeople space, and as with previous lessons, it’s all licensed as CC BY-SA 3.0 so it can be reused by others. I hope you got something out of reading about the class. I had a great time teaching it and I think the kids enjoyed it too. Thanks again to my employer, Red Hat, for lending me a few hours this month to give back to some kids in my community. |
Enrichment days 2 and 3.I’m sorry I got behind in posting about the enrichment class last week. After week 1 went so well, I thought I’d easily be able to post updates weekly, but alas, it was not to be. However, this wasn’t just because of other workload. The week 2 class actually didn’t go as quickly as the week 1 class. The lesson plan I thought would be light enough to cover in one session has actually taken up the hours for both weeks 2 and 3. I’ve posted the lesson in my Fedora People space. It turns out that one of the most difficult things for the kids to grasp has been return values. That is, understanding that when you run a function in Python, a value is often generated as a result. Python can either do something with it, or not. This is deeply tied to understanding the usefulness (if not the concept) of variables as a way of holding on to those results for later use. This concept is inherently difficult for fifth graders who haven’t yet been exposed to concepts of algebra or the unknown. Math and science up to this point in their education are decidedly concrete, and focus strictly on known quantities. I underestimated the difficulty of introducing the concept of an unknown, indeterminate object like a variable. Fortunately, Python has made it simple for the kids to try smaller steps on their way to understanding this concept. Python’s particular style of input/output at the interpreter allows them to see how return values are generated. Then it becomes a matter of understanding the concept of variables, and assigning that return value to a variable. This is not as easy as it sounds for fifth-graders, but by the middle of week 3′s class light bulbs were switching on! Regardless of the difficulty of the class, the students in general have loved the class, and are excited when they show up each day. I wish I had more time with them, but alas, the class only lasts for four weeks. We have one more class coming up on the Monday afternoon after Thanksgiving. Based on the experience thus far, I expect we’ll spend the majority of the last class on conditionals, and understanding the if statement. Courtesy of the Fedora Project, I have some wonderful swag items to give out which I think the kids will love, like buttons, stickers, and temporary tattoos. Also I plan to give them their Live USB keys, as well as a note for their parents on what the keys contain and information on how to use them. I will try like mad to have a blog post up sooner after next week’s class! |
Enrichment day 1.Yesterday was day 1 of the enrichment class I’m teaching at my daughter’s elementary school. The class is elementary computer programming using Python, and has a total of six students, all fifth-graders. Actually, the first class only had five, because one went home on the bus by accident instead of staying at school for the extra class. The first day is never the best day, because there are a lot of introductory things to get out of the way. In our case, I needed to show the kids some essentials for how to open programs, write and save files, find them again, and start up the Python program. This might sound really easy to you and me, but for fifth graders one needs to adjust the expectations. Not every child is comfortable with a keyboard, for example, and I couldn’t assume that every child had ever typed a document before just because my child had. As it turns out, we really needed every minute of class to cover our material, which made me glad I didn’t overschedule the tasks in the class. We started with some basic information about what software is and why it’s important — that without software computers are basically as dumb as a box of hair. The kids enjoyed this explanation; I demonstrated the difference between instructions for computers and humans by having one of the students walk down to the end of the room and back. I didn’t explain to him, of course, how to get up from his chair step by step, push his chair in, turn to the left, put one foot in front of the other, etc., etc. So that made a great example for how computers have to be told everything explicitly. This made it easier, later in the class, to have the kids understand why the computer gave them an error in certain examples I set up. I was impressed with how quickly the kids picked up the GNOME 3 interface, even though it’s somewhat different than the computers they’re probably used to. Most of them figured out the overview and how to find applications very quickly — so I had to get them back on track once they found the games! They also had no problem moving, resizing, and closing windows. The computers in the school lab need to be powered off at night according to school policy. It was a little tricky to show the kids how to shut down the systems, but other than that the transition was pretty smooth for most of them. One child was uncomfortable enough at the computer that I suspect she hadn’t much experience at all. She seemed worried about doing things wrong or breaking the computer, so I tried to go a little out of my way to give her some positive feedback and tell her she was doing a good job! We got all the way through the ending exercise, which was to let the kids fire up Python 3 and have the computer do some math problems for them. I even managed to tie into one of the kids’ current math lessons, which is on order of operations. They were really impressed the computer knew how to do their homework for them! I’ve put the day 1 labs in my Fedora People space in case you’re interested in seeing what we covered. I would also be remiss if I failed to thank my employer, Red Hat, for giving me the flexibility to take on this extramural project. |
Note for Fedora 16 early testers.If you’re like me and you couldn’t wait to see Fedora 16 in its pre-release state, you take on the risk of any pre-release. Sometimes things are broken, or break during the fixing process, with the goal of making everything more awesome in its final form. Today I ran into such a problem, and I wanted to share it. Hopefully this problem should be fixed in the final release; I’ve already filed a bug for this issue and it’s been resolved in a later package. Currently the Fedora 16 updates-testing version of selinux-policy* packages is 3.10.0-43.fc16. This policy doesn’t adequately cover some file locations used by systemd to handle passphrases on LUKS encrypted file systems. If you use encrypted file systems (at least as provided by the Fedora installer) and usually type your passphrase during the boot process, you’ll probably be affected. The plymouth loader won’t get the request to display the passphrase, and you won’t be able to enter it. So systemd will timeout waiting for the ability to mount those file systems, and your boot will fail with a maintenance prompt. If you want to get past this problem, provide your root password and then enter the following commands:
This will present the necessary prompt at the console (once per file system), and then try to boot to the default target again. To fix the problem, once you’ve booted successfully, downgrade the affected packages:
That should get you back the 3.10.0-40.fc16 packages, which don’t encompass checks on the affected systemd files and therefore don’t produce the errors. As I mentioned, this has already been fixed and new testing updates should be out shortly. I wanted to make this particular problem visible since it does actually prevent booting an installable configuration right now, since I know many intrepid testers may run across this blog on our Planet. |
Enrichment class.Lately, as an extramural project I’ve been preparing an enrichment class I’ll be teaching at my kids’ elementary school in November. The class is for fifth graders, a very light introduction to software and programming concepts. The kids elect their enrichment class, which is a fantastic way to put together an audience because you know they’ll already be interested in the subject. The classes are held for one hour each Monday after school for four weeks — so there are four hours of class in total. The first question was, would we use a language? I felt strongly the answer was yes, because I wanted the kids to have a hands-on learning experience. In addition, I believe fast feedback is very important for younger kids. It helps them feel more confident while they get comfortable with the material. So it was important to pick a language that was interpreted. I ultimately decided on Python, not just because I’m comfortable with it and it meets the criteria, but also because it’s widely in use running things the kids have heard of (Google, Facebook, NASA), widely recognized as a good first language for learning, and is eminently readable for any of the kids who decide to pursue it further after class is over. Of course I plan to spend a couple minutes to explain to them the awesomeness of free software, and how they can share it with others. I hope that’s a tiny nugget of learning they can take away even if they never touch Python again. I also knew I’d need some good self-directed learning resources for kids in this age group, so they could keep going when class ends. There are at least two good books out there the kids can use if they want to continue on their own: Both these books are available for Python 3, which is what I’ll be using for the class. I’ll be providing electronic copies of both for the kids to enjoy and learn more later. Now, how would I make Python available for the kids? As it turns out, the school has brand-new HP desktop machines that were purchased this past year, and the resulting lab is completely homogeneous. This is fantastic because it means I have to worry a lot less about a student having a problem specific to their computer. If things work OK on one, they should be OK for all, modulo some low risk of sudden hardware problems. But this didn’t mean I can necessarily install Python on all the computers. Nor would I want the kids to go through that process; it would be a waste of time as well as frought with all sorts of chances for human error that would lessen the learning experience. Although I have full support from the school administration, that doesn’t mean I should be installing stuff on their computers’ hard disks, or putting the onus on the computer resource teacher to do it. Obviously, what I needed was a bootable operating system that wouldn’t touch the lab systems’ hard drives. This called for a Fedora Live USB key! I decided to go with Fedora 15 since the class is coming up before the release date of Fedora 16. And thanks to the livecd-tools package, and the spin-kickstarts repository on Fedora Hosted, this was relatively easy to handle as well. With a couple quick customizations, I could provide the kids with a safe, friendly, and powerful environment in which to learn. After creating this boffo live image, I needed to try it out at the actual lab environment. I did that this afternoon, just as school was letting out for the kids, since the lab was free. There were no problems at all — the free software X video drivers worked spectacularly, NetworkManager connected kids to the classroom network with zero fuss, and the new GNOME 3 environment was ready to use. I tried a number of lab systems and gloriously, they were all configured homogeneously as well. The systems were even set to boot from USB first; all I have to do is make the keys, and before class, just insert them and power on! I know I shouldn’t be elated that the software works just like it should, but I still love to think about how far we’ve come from the days when Linux could only be used by tinkerers. And of course I have to give huge props to all the people who work on the kernel and plumbing, GNOME 3, and Python. Without their hard work there’s no way I could provide the class to the kids. And the best part is, the zero cost and freedom of Fedora means all the kids can keep the keys and continue learning even after class ends. I also want to thank Máirín Duffy for the inspiration, and her thoughts as I started putting the class together. She ran an amazing Inkscape class for some young people not long ago, which you should definitely check out! Just as Máirín did, I’m going to provide all my materials under a Creative Commons license, and blogging the class progress here. I can’t promise to provide lots of photos to go along with everything (terminals make dull subjects!), but I hope it’ll be fun and maybe even interesting to read. |
Installing Fedora 16 pre-release.I’m a little late this cycle to move my laptop to the Fedora pre-release. (Note the web site doesn’t yet feature the Fedora 16 Beta — that should change next Monday around 10:00 US Eastern time.) I had tried some Live USBs along the way and they were generally looking great, but before now I hadn’t had the spare time to do the installation and test to make sure my various workflow bits were all working normally. Today I finally took the plunge. Unfortunately, there was one problem standing in my way — an Anaconda bug that pops up in certain pre-existing LVM configurations. Fortunately, the always beneficent Dave Lehman from the Anaconda team had kindly provided an update image for Anaconda that addresses the bug. He even reminds people in the bug how to use it live off the Web with an installation. That was really helpful for me, because it should be noted I’m actually installing from the current development/16 tree, and not the Fedora 16 Beta RC4, which was declared gold yesterday. So the problem I ran into isn’t likely to happen to other people. The update fixing this problem is in the Beta, but because Dave published this image I could simply install from my local pre-F16 mirror. Which I proceeded to do. The installation was completely unremarkable aside from this bug, with no extra surprises. I do know that the Anaconda team is working very hard with Máirín Duffy on a UI overhaul. That’s supposed to see the light of day in the next release, Fedora 17. For now we’ll have to content ourselves with the existing UI and things just working as always… ho hum! After the installation completed, I rebooted. Weirdly the boot seemed a bit faster than it was before, particularly getting from GRUB to the point where I enter a passphrase for my encrypted filesystems. That could easily be some subjective bias, but hey, I was happy anyway. I went through firstboot, provided my user information, and after the SELinux labels and permissions were checked and restored and I finished firstboot, I got the new login screen. The background picture with the little submarine is really sweet. Last release, Fedora 15 featured the standard GNOME 3 background in the default install, as a tip of the hat to a major milestone release for GNOME. This release, the Fedora Design team was back in action and did a nice job on a stylish background that’s interesting without overwhelming the desktop. And of course, it’s in several fetching shades of blue, my favorite color for many reasons. But the login dialog itself, part of GNOME 3.2, is also really swank! With smooth animation and fading, it now feels so much more polished from the very beginning of the signon process. I know there are lots of other improvements and cool stuff in GNOME 3.2 and I can’t wait to explore them. I did run into some errors when I logged in, such as the “sad GNOME” even though the interface seemed to work fine. But it’s important to note when I installed, I didn’t include the latest updates of everything in the Beta, so it’s likely I’m seeing problems that are already resolved. I ran an update on the system shortly thereafter to get the latest packages from the updates-testing repository, and I also did a sudo touch /.autorelabel to make sure all the SELinux labels were restored properly on the system, and rebooted. As a result the problems I saw simply vanished. For now, suffice it to say that I think people will be fairly impressed with the Fedora 16 Beta and can take the opportunity to report bugs as they find them. The most important part of having a free software release that’s done transparently is that it allows you to become part of the process. If you run into a bug, it really helps when you report it. It can be frustrating when something doesn’t work, but it’s important to remember a lot of people are working on this software as part of a gift culture. So help them out in return by politely reporting bugs and, if you have just a little more time to spare on top, work with them to test the solution to resolve it. Your gift will help countless others, just as developers’ gifts help you and me. Enjoy your weekend! |








