input woes

Well, you can't say I didn't try. If you look at this question on AskUbuntu, you can certainly say I tried. I tried hard. I tried to exhaust every tool at my disposal to make my new Logitech T630 Ultrathin Bluetooth Touch mouse behave properly in Ubuntu. Unfortunately, it doesn't behave properly and respond to all the things it should, including suggestions from X input hacker Peter Hutterer (who I greatly thank for so generously taking random private messages from me on IRC). I think officially I'm ready to give up.

The verdict: one of three things needs to happen for this to be solved:

  1. hack the device firmware
  2. reverse engineer the non-Linux device drivers
  3. fix how the kernel deals with the mouse

Unfortunately I think part of the problem lies in the fact that the mouse is partially a keyboard. When the gestures happen, keyboard events are the result. It seems to me that this is ripe for the same multitouch treatment the Apple Magic Mouse got.

Oh well.

That's not to say I didn't learn a lot about the whole input process works. That's always helpful for the troubleshooting. Here's a brief run down:

  • First, there's a lot of utilities that have "keyboard" in the name. That doesn't mean they don't work for mice. Yeah, I know: weird.
  • It all starts at the kernel. You can see the currently registered input devices with lsinput. Like with all kernel-level commands, you'll need to sudo.
  • Input events are recorded in /dev/input/eventN where N is some integer. These events can be probed with evemu-record from the evemu-tools package.
  • The kernel registers scancodes. The keymap (accessible from input-kbd from the input-utils package) registers the keycodes (and keynames, like KEY_LEFTCTRL) that should be output in response to the scan codes.
  • Next layer up is the X server. As a general rule, your input device (no matter what kind it is) will be run by evdev (on other Linux systems without HAL, you'll use the mouse and kbd drivers), a generic input driver. Of course, you may have some device that has its own driver, but that's the exception rather than the rule.
  • Since the options of such a driver can only be modified when the server starts, we have xinput which allows us to tweak options on the fly. Don't need sudo, either.

…or at least that's how it should work.

Read and Post Comments

down with markup

<i>good</i>

Markup languages are useful for adding structure to text, such as with XML. Unfortunately, it's just too much to add a bunch of opening and closing tags for every little thing. Especially for text formatting. HTML 1 already taught us that.

*better*

So people have come up with a handy dandy little way to deal with this without having to resort to those atrocious WYSWIG editors for the forums, blogs, and wikis that they visit. They're called lightweight markup languages. All of the languages of this general type very closely resemble Setext which predates HTML. The thing that makes it neat is that it looks like you'd expect.

it's all about the data (text)

Though not the first, one of the most popular, Markdown, is used by the likes of Github, Stack Exchange, OpenStreetMap, reddit, SourceForge, and Coursera forums. While many lightweight markup languages exist for very specific purposes, like documenting programs, Markdown was created to write content and look good doing it. HTML sucks because of how difficult and terrible looking it is to include some simple formatted text.

character confusion

I use Markdown a lot. I use it for this blog. when I look at my text, it makes sense. It looks how it should. I write notes in it. I'm used to it. When I have to switch to some other markup language, it's not easy. It's not easy because, unlike HTML and other heavyweight markup languages, the lightweight markup languages use syntactic sugar. It's concise and pretty. That's why we like them. But it's not intuitive. This is a problem.

~+worst+~

This is especially a problem with wikis. There are so many different wiki markups, it's not even funny. Wikipedia has MediaWiki and the Ubuntu Wiki uses MoinMoin, to name a couple. The worst offender is the likes of trac's wiki markup which is a hybrid of a bunch of different wiki formatting tools.

not eating its own dog food

But let me get back to MoinMoin. I have a particular gripe with it. Built in Python, you would think that they would use reStructuredText, the tool built by the Python community for technical documentation, as the preferred markup language. Nope. They have their own weird thing which deviates from every other thing out there. Sure, they support reST, but they don't make it a standard. I once asked one of their developers why they have their own markup and he said that's just the way it's always been.

moin moin is African, but not Ubuntu

My major issue is that I have to use it. As someone who greatly values documentation, I am constantly adding and revising pages on the Ubuntu Wiki. I cannot tell you how many times I have the consult the documentation to remind me how MoinMoin's syntax is particularly sweetened.

There is a Markdown parser for MoinMoin but it includes the original specification's ability to include HTML, which makes it unsuitable for public wikis. Additionally, it can be used in addition to the MoinMoin markup. This makes it an unsustainable solution, since folks used to MoinMoin markup won't know what to do with the Markdown bits and vice versa.

Ubuntu has a history of building upon the shoulders of giants. Sure, they've had their cases of doing their own thing, but only in an attempt to make something better. How is MoinMoin markup making the world of lightweight markup languages better?

[Mark(down]falls)

There are some edge cases with Markdown that should be fixed. There are also some bigger issues, like no tables otuside of HTML. This is pretty common in about every other markup language. Given that it's supposed to take after plain text emails, it's surprising there isn't something like:

|| Thing || Other Thing ||
||=======||=============||
||   1   ||      2      ||
||   3   ||      4      ||

Have we not composed similar things in emails? It's a serious problem.

Comments are also missing which can be valuable thing for wikis where multiple people are working on the code, if you will.

Anchors are missing, too. They're a good thing to have when you want to reference a particular part of another document. Again, on wikis, very valuable.

We could probably fix this, but there is an enormous problem Markdown has: no specification.

fly united

Still, there is a reason why the IETF is considering making a text/markdown media type. It sees a lot of use across the web. There's no reason why it can't be used for wikis and MarkdownWiki agrees.

The unfortunate thing is that Markdown itself is without its standards. Markdown is considered to be abandonware and the various offshoots of it have gone all sorts of different directions. Babelmark 2 exists to illustrate the differences between implemnentations. It's really ridiculous. Luckily, the CommonMark project exists to make a standard. It's not there yet, but I look forward to it and its adoption by the various writing tools out there on the web.

There is an attempt to standardize wiki markup called Creole and though many wiki engines have included parts of it, it's still not necessarily the default. Which is to say there's no standard. Nothing is standard unless people accept it it.

That being said, I urge all of you to carefully consider your preferred markup language and for whatever it has that Markdown does not, make sure that piece is compatible with CommonMark and we'll can finally go sugar-free on our web writing.

Read and Post Comments

happy Haul-a-Days

Christmas tree hauling on a Haul-a-Day

Bikes are a lot like open source.

With public source code and development processes, open source software puts the power of your software into your own hands. Additionally, it creates huge communities of support, testing, and development. Once you discover the beauty of open source, you find yourself wanting to use it everywhere. It's gotten to the point with me that I've even sought out open source hardware. Eventually it gets to the point, I think, where you want everything to be open source.

Bikes put the power of transportation into your own hands. Sure, bikes are fun and good for your health, but their mechanical simplicity makes them approachable to everyone. Additionally, their remarkable efficiency and utility make them appropriate for all sorts of things beyond recreation. Once you've experienced the freedom and joy of riding to the grocery store, you want to use your bike everywhere.

Thankfully now, I truly can. Thanks to Bike Friday's new Haul-a-Day cargo bike, I can bring nearly anything with my bike. With a standard cargo capacity of 200 pounds (upgradable, too!), a mere 32 pounds, and adjustability for everyone, it's practical for nearly every situation. Did I mention it's short enough to fit on a standard bus rack, hanging up in a bike train car, and even disassemble to make taking it with you a breeze?

I've hauled a harvest of quince to share (that's no small feat, I might add!). I've taken a huge load of unwanted electronics to the local recycling center. I've taxied my daughter and all of her stuff and my stuff to school. I've carried my spare bike home with me. Most interestingly, because it is so lightweight, I mostly use it as a normal bike.

Other people in the community of users have used theirs most for hauling kids (it's a nice alternative to a mini-van!), but there have also been such unique things as generating electricity and showing movies. In fact, those very ideas can now be yours with the Haul-a-Day Kickstarter campaign, along with everything from handmade cards to t-shirts.

We have turned to crowdfunding as a way to integrate the community into the development process and to allow for greater capacity to really stimulate major production. We manufacture in the domestic United States and that is great for our local economy but is not without its challenges. This boost will allow us to really propel the project forward. We met our goal a long time ago, but we're very close to meeting our 3rd stretch goal which will allow us to finish some oft-requested developments, including a trailer bike attachment and an electric assist option. Please contribute anything you can, even $1, as it's going to a good cause!

We don't necessarily have the bike design open sourced, but I believe that Bike Friday is a lot like any other open source community. It's full of users more than happy to volunteer their time to help others. It has an inviting and passionate group of project contributors (even though they all may work for the parent dcompany). It doesn't hide behind some corporate image, but is a real workplace of real people, where you can talk to someone, and where humble hoensty and transparency is a norm. Finally, it listens to its users, who often make their own modifications and experiments and document them for us.

We are also a company that values open source software, using FreeBSD and Ubuntu servers and Kubuntu on most of our workstations. Thunderbird, Firefox, and LibreOffice are all common applications we use on a daily basis.

Indeed, we know that open source can save the world. Bikes can, too. Now what if we put two and two together? What about an open source hardware electric bike kit? Or an open source mobile application that keeps track of your cadence? I'm shocked this isn't out there yet.

Actually, there are a number of open source bike things out there (to name a few):

What's your open source bike idea?

Read and Post Comments

unicorns und Unicode

Certainly you've all noticed by now that Ubuntu Utopic Unicorn has been out for a while. If you haven't it doesn't have a ton of exciting changes relative to the previous release, but it's got some nice little fixes to add on to an otherwise stellar release. It's also not so exciting because there's a lot of effort towards making big changes. Two examples that come to mind are Unity 8 for Ubuntu, Plasma 5 for Kubuntu and LXQt for Lubuntu, to mention a few.

I'm happy to announce that the neat little origami unicorn logo that Canonical came up with for the release (like in Blade Runner) is now available in t-shirt form for both men and women.

It may be interesting to know that despite often referring to a rare item, unicorns are not exactly so special in the open source world. For example, there's Unicorn, the Ruby HTTP server or its port, Green Unicorn aka gunicorn. Or there's the validating Unicorn of the W3C. There's even the unique UDP flooding/DoS utility, UDP Unicorn.

This comparison to rarity has found its way into some more sardonic circles of the open source world. For example there's the Unicorn Law—that if you are a woman in open source, you will eventually give a talk about being a woman in open source. Or consider the Unicorn Model of Open Source—that hoardes of developers and testers are constantly working on open source and problems will be fixed nearly immediately.

One thing that is soon not to be rare on your favorite device is an actual unicorn. Emoji, that is. According to the recent report on Unicode Emoji, there should be a Unicorn Face by the middle of next year in Unicode 8.

Unicode is the "universal character set" that allows the world's languages and many non-textual glyphs to be represented. For example, without Unicode, I'd have to use three periods (...) instead of the actual ellipsis character (…). Or if I wanted to indicate a change in text flow with more strength than a comma but but less than a period, I might use an em dash (—) rather than two en dashes (--). In a more complex example, I might be taking a class on logic and need to use symbols like therefore (∴), not (¬), if and only if (⇔), xor (⊕), for any (∀), etc. For example, I can say there exists a number in the set of natural numbers where the number is even like so: ∃ n ∈ ℕ: n is even. This is simply not possible without Unicode.

Similarly, other languages can be represented. How could one better greet Laotians than through their own language? Without Unicode I wouldn't be able to even say ສະບາຍດີ. Or maybe you've gotten into an altercation in Iceland? Það var misskilningur, of course. Certainly, there's no better way to greet someone in Arabic than السلام عليكم.

But text is not the only way we communicate with one another. In fact, the use of graphical glyphs is so common in Japan, it inspired the Unicode Consortium to inclulde them into the character set. Now you can even reference the Philip K. Dick book that inspired Blade Runner entirely with emoji: 📱💭⚡🐑❓.

It's gone as far as even being able to present diversity through Unicode!

That being said, there's a lot of work to be done when it comes to missing glyphs in fonts. If you're interested in font design, I encourage you to check out Design With FontForge for everything you need to know about font design, as well as the open source tool you need to do it in Linux. Once you've got that figured out, you can start by contributing to existing fonts on the Open Font Library.

Speaking of fonts, the one called Ubuntu has pretty darn good Unicode support, but it is not exhaustive as they might suggest. I recommend the Adobe open source fonts, in particular Source Sans Pro, which is employed here. For the really bleeding edge emoji, I use EmojiSymbols, much to my chagrin, as it comes with rather restrictive licensing. There's Phantom Open Emoji but I struggle to call it open and it's not complete, either. If someone knows of another solution, please let me know!

Now if only there was a "heaven" glyph…

Read and Post Comments

learn anything linux

If there's anything I learned from hack.summit() (more on that soon), it's that we need more mentorship opportunities. The Ubuntu community informally offers mentorship opportunities, but with the loss of the Ubuntu Beginners Team, the amount of mentorship, I believe, has declined. Without a formal and inviting place, I think a lot of people are left to kind of figure it out on their own. With so many documents being written to a more higher level of user, I think we really lose potential contributors.

With the goal of having Linux users also be Linux contributors, a band of friends and I (mostly from the Lubuntu Team) have put together a new project we call Linux Padawan. You might remember that padawans were apprentices to the Jedi Masters in Star Wars. So we seek to unite masters with padawans to be mentored in their learning and contributors to their respective community.

Note that wording. Linux Padawan is distro-agnostic. There are certainly many of us who are from various parts of the Ubuntu community, but not all of us are. Additionally, we don't want to shut the door on people who are not or may not be interested in joining the Ubuntu community. Of course, we'll continue to invite them in. ☺

I've set myself up there with the following areas of expertise: testing & bug squashing, community, programming, Lubuntu, BSD (yes, we're even going to support BSD!). If you need mentoring on any of these, please let me know.

I really want to focus my efforts on programming, though. I'm not the world's greatest programmer (yet), but I know enough that I can help foster people to become programmers. hack.summit() focused on how we need mentorship in programming. I couldn't agree more. Learning how to program is relatively easy. Taking that to the next level and actually making a contribution is a whole different story.

To that end, over the past couple of days, I have developed a fairly general introduction to the subject, with plenty of links. Please take a look at that here and let me know if you know of any other resources that can be added.

Most of all, I encourage you to consider learning programming. It's not as scary as it seems. Additionally, learning some of the tools and processes that programmers use can help you to successfully contribute to things like documentation. An exmaple is the Ubuntu Server Guide which is "programmed" in XML and whose development happens on Launchpad.

I guess I'm taking this a little farther than the Hour of Code which happens next week. I don't just want to contribute an hour to get kids into programming. Instead, I'd like to donate whatever time I need to help everyone find the resources they need to contribute code to open source projects. How can you refuse that offer?

Read and Post Comments

« Previous Page -- Next Page »