According to a survey conducted by Black Duck Software and North Bridge Venture Partners Open source software is taking over the software world. (I read it in this NetworkWorld article.) To be fair, there were only 800 participants in the survey, which means that there were millions who were not polled, but the trends revealed are a little different than they've been in the past. As an open-source user I tend to agree with the conclusions.
In the past, cost was cited as the number one reason for choosing open-source. I absolutely agree with the idea of not paying a lot of money for something that is freely available from other sources. However, I wouldn't say that I only do free software. There are open projects that I support with subscriptions and donations. I'm finding that I'm sending money to them more and more because their work really makes a difference to me and I want to see it continue. Somehow I don't get that same feeling when I buy something from a giant company. (Though I am very fond of some giant companies—you understand, right?) Regardless, cost is no longer the number one reason the surveyed people are choosing open-source.
The next ideal for open-source software that had bubbled up in the past is no vendor lock-in. I can appreciate this. We've heard the story of the poor Apple customer who had his life erased because of a policy whoopsie. Another recent article shows how someone lost everything they had connected with Google. I use the Google tools a lot for my personal things, so this was especially chilling. Openness helps prevent you from having your information and functionality held hostage by a company because their license changes, or their price structure changes, or they get themselves into financial or legal trouble and shut down. Yet this was no longer cited as the top reason to use open-source software.
What was the top reason in this last survey? Quality! Those surveyed said that they found open-source software to be of better quality than the commercial alternatives. I have found this to be the case myself. It did take me a little time to get used to some of the ins and outs of using open-source. I had to learn how to learn and where to find help. It was a real struggle in the beginning and I'm not sure why I stuck with it, other than I was fascinated by this concept of community computing. It reminded me more of Star Trek and I'm just geeky enough to want that. Of course, it's much easier for someone coming into things today. Ubuntu Linux installs using magic as opposed to compiling everything from scratch like I did with my first Slackware installation. Social tools, particularly Wikis, have made a difference in the availability and quality of the information... and there are demos on just about anything you would care to do.
I really do believe that open-source software is ultimately of better quality than what is available commercially. I think it's because they are free from some of the compromises which take place in the commercial world. I've been involved with situations where money wasn't available for some particular aspect of a project so it was dropped... forever. Resources are applied to what will make the most money and the "good enough" criterion is economical. It fits with the three-legged project stool: You can have it fast; you can have it cheap; you can have it high quality. Pick two!
Commercial software, by necessity, tends to come in under the cheap and fast model. Competition demands that. Open-source tends to follow the cheap and high-quality model. As long as people are curious and willing to spend time with a problem, the open-source project will get resource long after the commercial one was defunded. I have this sort of fantasy that commercial vendors will begin a mode similar to what is done with pharmaceuticals. The product is designed and sold, but after a period of time it goes open, like drugs becoming generic. I know that Adobe has done this with some of their technologies. Star Office, which became OpenOffice.org (which begat LibreOffice) is not exactly that story, but in the same vein. Tesseract, and optical character recognition (OCR) engine has an interesting story. If you think about it, letting projects go open can have some real benefit. People who like the product get to continue using it while the company gets to divest itself of supporting this legacy item. It could be a beautiful thing.
I wonder what sorts of nostalgic things would come back if they were opened. For example, today I should be receiving my Atari Flashback 3, a chance to relive all of those games that I couldn't afford when I was a kid. That's pretty cool. I wonder what would happen if the Atari APIs were republished and opened up with a mechanism to let people create new games which could be downloaded onto they console. Wouldn't it be interesting to see what today's thinking might do with that technology and what sort of creativity would come from today's perspective on yesterday's limitations. It would be a niche for sure and not a way to make money, but that's just the sort of thing that open-source is for.
Anyway... I'm intrigued by the survey. It reflects what I've thought for years so it makes me feel very sage. Here is a slide show of the survey results
I got the title of this article as a question through a private Facebook message. I decided that this is probably something that a lot of people are thinking about, so I figured I'd post my thoughts here. (I've also been very sparse at writing here so hopefully this will get me back on track.) My thoughts on this are not specific to code but about skill-building in general. I'll talk about code, but I'll also talk about other technical areas where I hear people say that they want to grow.
"How can I improve my coding skills?"
The short answer is simply "Write more code." That's not a very satisfying answer, though. My own immediate response to an answer like that would probably be something like "If I could do that then I wouldn't have asked the question." So, how do you get passed the obstacles? How do you grow in something where you feel you need improvement.
Surely the first step must be to understand what you think needs improving. What is the difference between what you can do and what you want to do? Do you have a goal? A role model? I don't think that you can get anywhere if you don't know where you want to go.
People act like setting goals is easy, but it's really not. Often our goals are vague or open-ended. In fact, "improve my programming skills" is both vague and open-ended! So how do we narrow that down?
What are goals?
Setting reasonable goals is one of the key secrets to achieving just about anything. You set a destination and you go there. Yet how do you tell the difference between an achievable goal and just a wish. I've repeatedly heard that the best way to set goals is to use the S.M.A.R.T. system. The letters stand for:
S - Specific... Identify a particular thing that you want to do
M - Measurable... Have some way of determining if you have accomplished your task
A - Attainable... Do something that is within your resources
R - Relevant... Make sure that it fits with what you want to achieve
T - Time-bound... Give yourself a time limit to get it done
These aren't hard and fast rules, but they are good guidelines for keeping you directed. So, how would we apply this to "improving programming skills"?
Specific - What skills do you want to improve? Do you want to learn a particular language? Do you want to work with a particular kind of application? Your overall goal may have subgoals depending on your current skill set. It's a great goal to want to program on-line video games, but if you have no coding or network experience then you have some foundations to build. It is likely that you have a pyramid of goals that have to be achieved in order to reach your final destination.
Measurable - What are you going to set as your test for each goal? For programming, it makes sense that your goals would include writing specific functions and applications which build toward your overall goal.
Attainable - What resources do you have at your disposal? If your goal is to be a master mainframe programmer but you don't have any way to access a mainframe you are going to get frustrated. Start with things that you can do. The open source world has made this easier than ever to learn technologies without having to buy expensive hardware and software. Your circumstances might allow you to gain access to other resources by simply asking, or bartering. It's true that what you need for your goal may not be easy, and you shouldn't always go for the low-hanging fruit, but if it does not seem possible for you to do something then that's not really a goal. It's a desire waiting to become a goal.
Relevant - How will this activity help you accomplish your goal? This makes more sense for sub-goals in your pyramid. Will learning PHP really help you with embedded system programming? Will developing your drawing skills really help you create a phone app? Sometimes our goals will take us into strange places that really are useful in ways that we hadn't anticipated. Other times we distract ourselves by shiny things that just seem interesting at the time. It doesn't mean that you shouldn't be multifaceted with lots of varied interests, but your curiosity can drive you off-track. If you feel you are struggling too much with your goal you may have a lot of irrelevant things that need to be set aside for a while.
Time-bound - When will I do this? I can attest that the things that I have to do with deadlines usually get done while the things "I mean to do some day" wait. Setting a time goal will help you keep on track. If you are like me, you curse the clock and the calendar a little and would rather play with ideas and technologies. However, that won't help you get it done. Set some time constraints on your goals and you'll be better off.
I think it's also important to remember that you may will fail in some of your goals as you move forward. You'll try something that is beyond your skills and have to back up a little. This is all part of the process. You cannot give up because of a failure here and there. Persistence and refactoring your path as you go is what will bring you success.
Where do I start?
As I said above, this is a great time to be in technology if you want to learn. More options are available less expensively than ever before. The Internet also provides a lot of ways to interact with others who share your interest to share resources and knowledge. Even if your interests are very specialized, odds are that you will find some group that shares them. This is important to deal with they nay-sayers who try to talk you out of your goals.
I would begin by finding something that was a model for my goal. For example, if I wanted to be a game programmer, I'd start looking at games that I liked and looking behind the scenes into the people who made them happen. You will likely find a blog or something where they have talked about what they think is important to their work. You'll also find various sites that recommend the sorts of skills that you need for a particular industry. Get a feel for what you need to learn and start putting together a picture of what you need to do. Write this stuff down! Don't just ponder it, but lay out written goals and plans for what you want to do. You'll forget pieces otherwise. This is a serious project. It's your future. Put together the same kind of material that you would to explain this to your boss, but do it for your own benefit.
Once you have an idea of what you want to achieve, then start building your subgoals. If you are doing video games you should probably learn something about C/C++. If you are focused on Mobile games then you might need to be more focused on Java. You might need to collaborate with people who have other skills, such as a graphic artist or musician. This may require to you become more social.
I would also recommend that you look at open-source projects that are relevant to what you want to learn. One of the nice things about these projects is they usually need work done and they are happy to have contributions. You don't have to build an entire application yourself, which can be hard, and you get to write code which will be reviewed by others. Even if your code isn't accepted as the final solution in the project, the experience you gain by trying is equal to what you would have doing exercises in a classroom. You also might make a real difference to the project with your contribution, which will be highly motivating. You can find repositories of open-source projects on sourceforge, github, ourproject.org and any number of other sites.
Also remember that many projects need contributions besides just coding. You might be able to contribute something where you are more skilled, such as editing documentation while you become socially connected with people who have the skills you want to learn. It's a lot easier for me to give my time to someone who is helping me do something I find difficult than someone who feels like my knowledge is theirs for the taking. Become a contributing part of a team in whatever way you can and resources will open up to you.
Not just programming
The question I addressed was improving programming skills, but I think these ideas are relevant to improving just about any technology skill... and probably non-technology skills as well. As our world has more and more chaos because there are more and more resources with more and more choices it is difficult to follow a simple proscribed path. An emerging skill is the ability to become our own teachers, to determine our own curriculum and to find our own resources. Technology is moving pretty fast and it takes a lot of effort to put together a series of classes and get it through the approval process for a University program. The ability to set your own goals and plan to achieve them will keep you agile, even when you have left the University far behind you.
I haven't been writing so much over the last few weeks. There are good reasons for it, but nothing that would particularly interest my average reader. Rest to say that I am living in interesting times. There's nothing really bad going on, but interesting nonetheless.
There are a few things I'm tinkering with that I'll share later. Today I came across Simon Phipps' article, Vert.x's journey teaches invaluable governance lesson. Essentially, Vert.x is a project that provides a framework running on a Java Virtual Machine that lets you write polyglot applications. You can write your code in a number of different languages and even mix and match code. (You've heard of Spanglish?)
That is interesting unto itself and worth looking at... especially in these days where there are many different applications requirements and disciplines that all really need to mesh together.
The most interesting bit in this case is how the project reached a point where it needed an independent home, separate from any specific commercial interest which could continue to keep the project open. They chose the Eclipse Project as a home over Apache, primarily because Eclipse has a very business-friendly background. (Certainly Apache has worked with applications that have significant business interest, but in this case Eclipse edged out a little.)
I don'thave much to add to Simon's article. It's worth a read, especially by those who view open-source development as some sort of lawless software wasteland.
Soon I'll tell you some of what I've been discovering about the OpenShot video editor. I just may start using this for some things. (Though I still think Cinerella is pretty cool.)
From: Scam Mail
DO YOU NEED A LOAN, IF YES REPLY FOR MORE INFO.
At least they are honest about scamming you.
IBM Linux on POWER
I think Linux and the POWER architecture are an outstanding combination. I would really like to see a new POWER laptop to load Linux on. (Apple used to be a good source for that until they decided to go Intel.) POWER servers are competitive in price with el-cheapo models, especially when you factor in consolidating services into a single box. I came across this video which talks about Linux on POWER.
Steve Southworth is funny
Steve Southworth posted this picture with the caption: "The original camera phone."
New VoltDB article in developerWorks/opensource
How many databases do we need exactly? When are we going to have enough? If you have a shop where you are able to support a single database, say DB2, then that's great! However, it's likely that you need to have flexibility in your database, either because you can't always get what you need from the administrators, or you are dealing with customers who have varying situations, or some other unexpected situation that you can't predict. It's always good to have more tools in your toolbox. Talke a look at VoltDB and play with it. Here's what author, Simon Buckle, had to say about his article:
"Having problems scaling your relational database? Thinking about switching to a NoSQL datastore in order to scale but you need your data to be consistent at all times? These are the kind of tradeoffs that you would normally have to consider when deciding whether to go down one route or the other but it is possible to have both scalability and data consistency. Introducing VoltDB.
"VoltDB is an in-memory database written in Java with the scalability of NoSQL data stores, but without the consistency problem; it is ACID compliant. VoltDB is queried using SQL, so it will be familiar to those who have worked with relational databases before. This article will cover the basics of how to install VoltDB and how to use it, so you can integrate it into your application(s). Finally, it will also discuss VoltCache, a scalable key-value store with a memcached compatible API built using VoltDB."
The VoltDB developers tout their project as revolutionizing your application design methodology to get things out fast! Check it out, play with it and you'll be the smartest one in the room when someone brings it up!
Open Source alternatives
Ages back, I wrote a popular blog entry called "Start your learning with Open Source." It must have struck some sort of a chord because it's gotten more than 15K hits since 2009. One of the most common conversations I have with people about open-source software is about subsitutes for the current software that they are using. I reference a few sources in that blog entry, but there is also an evolving Wiki in the Real World Open Source community with a list of open source software. You'll find some handy suggestions in there. You can also add your own. It's just getting started, so we've barely scratched the surface. Take a look and contribute.
Don't forget that there is a discussion board there as well where you can bring up your questions and problems. Have another place where you do those discussions? Tell me where and I'll add them to the bookmarks or feeds in the community.
Today I got another one of those InfoWorld articles with one of those sensational titles called "Beware these open source lock-in schemes". I had to take a look. The open-source world has really come a long way. I remember when telling people a product was open-source would be a cause for immediate argument and accusation. Now there are businesses and governments who are looking for open-source as a requirement. As is always the case, people are stepping forward to take advantage of that interest in somewhat nefarious ways.
There has been a lot of information floating around about the "hidden costs of using open source", as though there were no hidden costs to using any technology. It's true. Any piece of open-source software will make demands of you. You will need to understand it. You will need to spend time making it work the way that you want. You will need to make sure that others who use it also know what they need. I have never bought a piece of technology that came with someone who prevented me complicating my life with it through either improper use or making mistakes.
The whole point of working with open-source from my perspective is leaving your options open. Right now I'm using Ubuntu, but it's not my only Linux option. I have run other distributions in the past and may run others in the future, but it's my choice. Linux is at the core of all of them and the software that is important to me runs on all of them. They keep me because they serve my needs, not because I'm too invested to move.
In the article, Simon Phipps mentions the "four freedoms" of open source, which should be protected in any choice that you make. These freedoms are fundamental and important. I'm quoting them here from the GNU philosophy page with my own comments:
The freedom to run the program, for any purpose (freedom 0).
Have you read the license agreements for many of the things that you use? Most of us don't and when we do we shrug our shoulders and click "Agree" anyway because there is work to be done. You will become amazed by some of the things hidden in license agreements about what yoiu may and may not do with the software and what they may do to you if they decide that you have violated those terms. (There is a South Park episode that parodies this, but I will not point you there. You will have to search for "south park humancentipad" and find it on your own because it is terribly rude.) I don't say that people who license software to you should not be able limit its usage with a license. It's entirely up to them. However, you should know that there is an arena of software that does not impose such limitations. It's really your choice.
The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
Invention stands on the shoulders of previous inventions. It's the way of humanity. Because of the compiled nature of software it imposes a barrier to this sort of learning and development. Again, there is nothing wrong with hiding the true nature of software, but there is something wonderful about leaving it in a way that you can take it apart and learn from it.
The freedom to redistribute copies so you can help your neighbor (freedom 2).
Sharing things that help us has also been a large part of human experience. Think of all the things that are a part of our world that were shared so long ago that we can't imagine a time where people didn't do it. I'm talking about things like making beer, irrigation, use of simple machines... It is natural to want to share best practices with others. Open source software encourages this sort of sharing so that good ideas get spread around, freely.
The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
This gets to the "improvement" concept that I mentioned before. If I have a great idea for improving a commercial product, but the owners of that product don't wish to incorporate it, that's the end of it. I could go create a competing product, but I would really need to be invested in my idea for that. If I share my idea openly about how to modify the commercial product they can sue me for violating their license agreement. (See how all of this fits neatly together.) With open source, I can contribute a simple idea and share it with whomever I wish. Many projects have unofficial patches that anyone can apply to affect the function of the software. Sometimes these ideas are incorporated into the core, but they don't need to be.
So, there you have the four freedoms... the hidden benefits of open-source software. These are the reasons why open-source matters. It's true that these freedoms come with a little bit of effort to make the most use of them. They can introduce a certain level of chaos into your technical life which you will occasionally have to manage... but I'll bet that you do those kinds of things already and call it the "cost of doing business". Think about it.
Things around developerWorks
Tuesday is publishing day on developerWorks, so here are a few items that you might have missed, but shouldn't:
Ian Shields has been doing updates to his series on the Linux certification tests. His latest refurbish is "Plan Linux hard disk layout and partitions". I've worked with Ian behind the scenes at IBM for a while and his shares my perspective on being a repetitive voice in support of Linux and open source in the work place. In any meeting on new things it was always a contest to see which one of us would be the first to ask "will it work on Linux". Ian is the real deal and you can learn a lot from his articles whether you plan to take the LPI test or not.
Over in the Real World Linux community, Himanshu Arora has put up a nice blog entitled "Zsh - The new Linux/Unix shell everyone's talking about". Zsh has actually been around for a while but it's worth learning more about. One of the interesting features of a Linux/UNIX environment is that you have choices for your command-line environment. I normally use BASH, but there are times when another is helpful, especially in scripting. Since you can tell a script which environment it should run you can pick your favorite to type in but have the others whenever you wish.
I was at an event this weekend. It was a non-technical event with a group of artists. One of them had designed something which could be customized and had a DVD showing exactly how to recreate what he was doing. On the DVD he included a PhotoShop template that would automatically remix an image into the necessary pattern. Then he said something remarkable. He said that he also had templates for GIMP, the open-source graphic program and that he could make those available to anyone who preferred the free software. The next run of the DVD will include the GIMP template as well.
This was not a group of techies who were all about open-source. This was just a guy, an artistic guy who used some technology to create his work. He had an open-source solution. This is one of the first times that I have encountered this in "the wild". That's really execellent! I bought a DVD just to show my enthusiasm. I'll probably even play with his technique.
Open source and Linux are spreading beyond their traditional boundaries. I don't get so much in the way of hostility when I announce myself as a Linux user anymore. Progress!
Himashu Arora has been contributing a lot to the Real World Linux and Open Source Communities here on developerWorks. The other day he contributed this commercial by Red Hat with an interesting message about how things that once seemed impossible happen over time if the are real.
You should also take a look at his latest articles:
I recently had a call with some people who are interested in
contributing to the Real World Open Source and Real World Linux communities here one
developerWorks! Yay! I would like to see a lot more input by people in
these places. As a part of that conversation they requested me to
outline my recommendations for people new to writing in this
environment. I decided that this might be of interest to the general
public, so I'm posting here rather than privately through email.
Writing in developerWorks is not like having your own Wordpress or
other blog. You can do a good deal of customization to make it fit your
own preferences, but you will need to fit into the overall
developerWorks framework. This framework may change around you, so the
general rule of thumb is "Keep It Super Simple". Your content is what
is most important here, not any bells and whistles that you might add,
so write things that do well with plain, clean HTML. I prefer to do my
writing in an HTML editor, actually. I tend to use Kompozer, an
open-source editor. Unfortunately, development on this project seems to
have stalled out, but it's still my favorite editor. It produces clean
HTML with no muss or fuss and allows me to easily put something
together which I can just paste into place. You can use any editor that
you choose which can save HTML. However, bear these things in mind:
Don't use a lot of styles and parameters on the HTML. Sometimes
you need to, but keep it to a minimum. This will make your article
behave better when it's published.
Be cautious about what comes out of a word processor. When I
write something in LibreOffice and them paste it into the blog there is
a lot of hidden style information that ends up in the HTML. This is
ugly and bulky and will do weird things to your entries. Be prepared to
clean up anything that you do.
Including images is good, but you will be working with a simpler
subset of formatting options. You will also need to upload your image
to the developerWorks server or reference the link externally.
Posting audio and video is good, but remember that this can
sometimes be unpredictable. For example, when posting a YouTube video,
you must use the old-school <object>
code rather than a simpler <iframe>.
Someday this may change, but for now it is necessary. Some embeds
simply will not work.
The included HTML editor is decent, but a little thin for me. I
have two browser plugins that I use to help me write entries that I
have not pre-written in Kompozer.
Write Area - This plugin will give you a
fuller editor that you can invoke in any text area with a right-click.
It provides more formatting options for links and images. Unfortunately
it does not include a spell checker, though. so be sure to double-check
your work. I use this a lot! (I'm using it now). It's been a real help
to get around any site that has a limited window in which to write.
It's free for Firefox. I'm sure that people with other browser
preference will find similar add-ons. I'm just telling you what I use.
Scribefire - This plugin provides more than
just an editor. It is a blog management system, allowing you to work
with various blogs on different sites. It will give me a list of the
blogs that I use and let me edit or create a new entry for any of them.
This can be handy, but it sometimes does some strange things with more
advanced formatting. (Remember, I said to keep it simple?) Another
feature is that it will allow me to simultaneously publish the same
thing on multiple blogs at once. I did run into one issue, which I
mentioned in a previous post. Do not use the '#' symbol in your article
titles with Scribefire. This caused it to get lost when trying to
agregate my existing entries. That was very frustrating for quite a
while until I tracked down the issue.
There are other blogging tools which are compatible with
developerWorks, but these are the ones that I generally use.
Any pictures that you want to use need to either live on the system
or be linked with the URL. For some content, especially copywrited
content, I just link to it. That saves some of the usage hassles and
acts as an automatic credit to the owner. For example, Dilbert cartoons
are a great thing to include from time to time and they have a simple
method for linking to their content.
If you're going to do things like this, you should expect to have
to tweak the HTML from time to time. Sometimes developerWorks seems to
alter things that are not entered through the raw HTML view. (That's
the <h> button in your toolbar if you are using the default blog
editor.) HTML is nothing to be afraid of, and many of you are technical
people anyway, so you should feel comfortable with it.
For some pictures, though, it's best to upload them. If you are
using the default editor, uploading is automatic. You click the icon to
insert a picture and it gives you a chance to upload your picture. I
will often use this step just to get the picture up and then go into
Write Area to manipulate it and make it look nice with the article.
Add image tool.
You can also upload an image file directly. Select the Settings
link, next to New Entry. On the Create & Edit tab you'll
find File Uploads. You can manage everything here. Note that
this interface acts much like old-school FTP, so you can't overwrite
If you need to change something you need to delete it and then
upload the new one. That provides a window where the file may not
exist, but it's pretty quick.
Copy the link for an existing file and you can use a conventional <img>
tag to include it.
Bookmarking major links
I quickly got annoyed by some of the steps to getting to areas like
file management. They are easy to find, but require a number of
clicks to get there. This was easily remedied with a few book
marks. I have bookmarks set up for my main blog and the entries
page. These reside in a folder on my bookmark toolbar, so it's
pretty easy to jump right to the spot I want. If I did more file
management I'd probably set up a bookmark for it as well, but it's just
as easy to go to the entries page and then click over to files.
(Two quick clicks versus three slow ones.) It seems like such a
silly thing, but it really helped me a lot.
Contributing to the Real World communities
That should get you started with basic blogging. If there are
questions that I have raised rather than answered I'll be happy to
address them. You can email
me or comment here. I may make this a living document and update it
rather than writing additional chapters. I've set up the Real World Open Source and Real World Linux communities so that any member
can draft an article. Simply become a member and start one. When you
submit it, I'll be notified and can release it. Feel free to use this
to post a great topical discovery or idea without taking on the burden
of maintaining your own blog. If you decide to start your own, let me
know and I'll follow it.
Computer security fascinates me. I freely admit that I don't have the chops that many do about cracking into or securing syststems, but I do alright for myself... on securing systems, that is. I'm certainly not claiming in any way that I spend time engaged in any activity that could be construed as subversive or illegal... Dang! Awkward...
Of course, this is the situation one gets into when taking an interest in the "dark arts" of computing. People assume that you are claiming to be some sort of criminal mastermind or something when actually you are simply fascinated by the nature of how bad guys do things. Just as someone who likes to watch true crime documentaries on TV is not necessarily using it to plan their weekend, many people interested in "Black Hat" hacking are not looking to lead the next charge of Anonymous. So, it is likely that if you had an interest in attending the recent Black Hat 2012 conference in Las Vegas that it was hard to make a strong connection between that and what you are paid to do. That's OK. Though the event is over, there is a reasonable archive of confernce material on the web site, including papers, presentations and even some source code! (Use at your own risk.) There's not much in the way of video from the site right now, but a YouTube search brings up material-- though most of it is from Black Hat 2012 in Europe. I'm guessing, though, that techniques and vulnerabilities don't change much by crossing the ocean, so you can probably get a lot from them.
I'll keep my eyes open and try to report additional material as I find it.
IP Law Talk
The other day I was reading about a patent license agreement between a major software company and a minor company for an undisclosed amount regarding undisclosed patents. The story was non-news, unless you're into corporate celebrity, but the discussion had some interesting thoughts expressed. At least they tried to be interesting. They ultimately turned into the sort of juvenile brawl that such discussions do because everyone is out to win. The part of the discussion that really caught my attention was why a company might not want to disclose their patents. Since Linux and Open Source software frequently comes under fire for allegedly violating patents this is interesting to me. The conversation is often along these lines:
Patent holding company: The villainous developers of these open-source projects are stealing our IP and violating our patents and they must pay.
open source developers: Uhhh... we don't think we are.
Patent holding company: Oh, yes you are. In fact we have been striking numerous deals with people who agree that this is a violation.
open source developers: Wow, you really do seem to be making deals with people. Maybe there is something to this. What patents are we violating so that we can fix that?
Crickets: (chirp) (chirp) (chirp)
OK... that wasn't completely fair and read more like a Dilbert cartoon, but I hope you see the fun side of it. It seems to me that if my goal was to prevent people from infringing on my intellectual property that I would want to proclaim loudly and strongly what was being stolen from me so they could and would cease and desist. That doesn't seem to be the way that it works out for some reason. There are non-disclosure agreements (NDAs), behind-the scenes business, announcements that are simultaneously widespread and secretive. It can be very confusing.
Well, it turns out that a new community has formed on trying to understand and relate to Intellectual Property Law. It's your chance to ask your questions and voice your own experiences with people who deal with this every day. It's called IP Law Talk, and should be a fascinating place. I wonder if they know about this weird patent slide show.
Has the Command Line outstayed its welcome?
This is the question asked by a Linux Insider story. I'm going to apologize for being a little prejudiced here, but I just don't understand someone who is technical who wants to do everything with a mouse. Even when I'm supporting Windows I will jump into the command line to get information because I can get information faster by typing "ipconfig /all" than I can browsing around with the mouse. I use icon-based launchers and I find them very handy. I recently talked about how I use them to keep my Firefox identities clear. However, there are some things that I can just flat do more efficiently using the command line. I can then combine those things into a script which I can place under an icon if I so desire. Macro recordings of mouse movements just don't seem to have the same capabilities.
I know that many people get nervous about the command line. They don't type well. They don't have the commands memorized. It can be frustrating until you get used to it. But there is a heavy price for a graphical interface in system resources which could and should be used for other things if the interface is only rarely required.
I hope that you aren't afraid of the command line. If you'd like to explore it in Linux there's a nice tutorial as part of our Learn Linux 101 series. Windows folks can look at this site. You don't have to use it all the time (though I admit that I do). It's nice to have it around, though for when the other tools aren't working. As an example, when I've had some program take over my graphical interface, it's nice to be able to switch to a command session to see what's happening and kill the offending processes. I've been able to use ssh from my phone to connect to my laptop when the keyboard wasn't responding and fix things without having to reboot. Is that geeky? You bet! But that skill comes in handy when you're dealing with bigger problems.
There has been some controversy about comments by Valve co-founder, Gabe Newell, calling Windows 8 a "catastrophe" and saying that Linux was part of Valve's future strategy. (Don't take my word for it. See the story by the BBC.) I admit that I haven't had as much time for games for a while, and when I do I am more likely to want to play a "human contact" game with dice and faces rather than having more computer time. However, it's no secret that Linux has been woefully thin in the gaming area. This is ironic, because I think that the tools and libraries available to Linux could make it an outstanding platform for media and gaming. It's just not where game creators focus.
Perhaps something like the Steam platform working more with Linux will make a difference. Of course, this is a future play. Steam has announced enthusiasm but not a release for Linux. It could get pretty interesting, though. While browsing through the gaming world I found that Steam is looking to Linux. Another site, Good Old Games, does not support Linux now, but might respond to interest, especially if it works well for Steam.
I did find a site, Desura, which already supports Linux. I downloaded a few of their free games to test and just might go for some of the paid titles as well. As entertainment becomes more network and browser based the native platform should matter less and less. I'm intersted to see what has happened. If anyone is already using Desura and knows games I should check out, let me know!
Today I was looking over an interesting article called "Great open source map tools for Web developers". Look, I'm taking off my IBM hat and setting it way over there. Now it's just you and me with no major corporations to bother us or be represented in any way.
When you work in a company that does a lot of technology, with a lot of research, it's pretty difficult to deal with anything that isn't being explored somewhere. Some of these things become major projects and money centers, others are tinkered with and then set aside for the next interesting thing. So there can be a sort of love/hate relationship with companies like Google, who also do a lot of tinkering with various technology areas. One day a tool is OK to explore, the next day "Das ist verboten!" This can really be unfortunate when you have something that you're trying to do which has to either be thrown away or completely rethought. Yet when you're dealing with something like mapping, aren't you forced to go to someplace like Bing and Google who can afford to put satellites in the air and do massive data collection? Well... not necessarily.
As it turns out, governments and other public entities do massive data collection as well, and their information belongs to the public. It's true that some of it may not be as up-to-date or as rich as a private entity can do, but it is freely available. And it turns out that there are a number of open source projects that are tapping these public data sources, and finding interesting ways to tap into them. If I was a betting man, I would say that your odds of being shut off from an open-source resource are better than that of "the competition". It's also remarkably easy to find things like weather data from the National Oceanic and Atmospheric Administration and community-supported street data (Say! I can see my office from here!). Here is a source for open data catalogs around the world, which pointed me to this specific list for Texas, among others.
Obviously, along with the data, there are APIs available as well. All of this can be mashed up in interesting ways. Here's an example where Open Street Map data was used to create an interactive map of countries. As you mouse over the countries you get information about the name of the country. Clicking the country takes you to data for that area. Obviously, one needs to consider the source of information, and there are situations where you need the accountability of a paid resource, but spend some time exploring these open data pits to mine. You find a good fit for your needs, and supporting these efforts helps ensure that they continue.
If you are keeping score, we have a coupld of new items in the Open Source and Linux sites today.
In Linux, "Accelerate to Green IT - A practical guide to application migration and re-hosting" has been a significant effort by a team inside of IBM to share their observations about server consolidation based on their real experience. This is good stuff, and the kind of information that only comes from experience. Their approach is to help you identify the "low-hanging fruit" for server consolidation and to have realistic expectations for where the complexity may lie. I think that server consolidation is a fascinating area. In some ways it makes me wish I was still involved in levels of system administration where I could give it a shot. This article will likely not answer all of your questions about what to expect, but it will get you thinking, and thinking is one of the keys to success.
In Open Source is a fun article, "Building Ruby extensions in C++ using Rice: Add new programming extensions in Ruby", an examination on how to use RICE (Ruby Interface for C++ Extensions) to combine the goodness of C++ with that of Ruby. It provides more ways to use the right tool for the job and allows you to tap into the power of C without having to do everything there. I like this sort of mashed-up approach to programming. Yes, it can add some complexity, but it's worthwhile if it keeps you in control of your performance or other critical elements. It's more tools for your toolbox.
NOTE: As of February 2013 I am no longer the editor for Linux and Open Source on developerWorks. Don't worry! I didn't get fired or anything. I got rolled into a new team which draws upon all the skills I applied on developerWorks as well as exercising some of my other capabilities. It's an exciting challenge. As a result, this wish list is not necessarily the most current guide of what you should be writing. I'm going to leave it up, though, as a snapshot in time. I'll keep blogging and sharing. It actually may be easier to do now in my new role!
People ask me what kind of articles I'm looking for in the Open Source Zone on developerWorks. This is meant to be a permanent home for my thoughts on what I'm seeking in the way of articles with a little better explanation than I can offer on the basic developerWorks wish list
. Rather than just a bullet list, I'm going to try to get you inside my head so that you're working toward the idea, with your own new information and discoveries, rather than just trying to write to spec. Consider this your guide for what I'm seeking. I'll update here when I have new information. I recommend that you subscribe to the feed for this article so that you keep up to date. When you know you're ready to write, review the guidelines in the developerWorks Author Resources and then submit your content.
Right now in Open Source, I'm looking specifically for articles that cover tools and techniques that work across platforms. In particular, I'm trying to identify things that compliment the IBM product set and leave room for integration. In some cases they will simply be useful tools that people could be using. In other cases there will be specific ways to tie into the project's functionality using APIs and pull its functionality into an application.
For example, Blender (http://blender.org) is an open source 3D animation and compositing application that can do Hollywood quality rendering. I'm sure that there are some pretty creative ways to use their APIs to do things that would make for some pretty impressive functionality. There are many more projects that lend themselves to this.
Along with tools, I'm interested in development techniques for PHP and other open paradigms (Did I just use that word?). That would include Android development, C-code and anything else that is being used, or could be used to generate open-source software. I'm not really looking for opinion pieces ("Why this software/tool/technique is the best!"). There's plenty of that out there. I'm looking for things that will help a developer/IT professional wrap their head around a technology and begin to use it.
Security is becoming a hot topic. Cracking tools are on the rise and we hear about more and more break-ins each day. (Makes you wonder about the ones we don't hear!) Also, people are begining to work with data across environments in ways that they never did before. They want to work on their laptops, tablets and phones whenever they want and whereever they want. This provides a number of security challenges which have to be addressed. The open-source world has been interested in security for some time and there are some great tools and techniques available, but many people have never heard of them. Relevant topics would include encryption, authentication, malware and virus detection, tampering detection, automated defences, cracking forensics, firewalling and other ways of hardening systems and software across platforms.
Another aspect of the increasingly mobile and interconnected lifestyle is more focus on virtualization. Some of us have used these techniques for a while and are used to the idea of dealing with resources that we can't put our hands on. For many, this is a mind-blowing concept, but one that is imperitive if they are going to be successful in a world that includes mobile and cloud computing. KVM has come a long way. (Remember when KVM was about keyboards and monitors?) There are other tools for emulating hardware and virtualizing storage and other environments that people need to see. Relevant topics would include tools to virtualize environments, best development practices for working with virtualized environments, security and monitoring techniques, automation, resource management and more.
Another side effect of our growing web of data is the need to store it all. People need to store more information and access it quickly. It needs to be secured, backed up and authenticated. People need to be able to access it from any device that they choose in any environment that they choose. This is another area where Open source has been working for a while and there are a number of tools and techniques available. Relevant topics would include storage formats, tools for securing, authenticating and sharing data, backup methods, techniques for compressing and transmitting/receiving data.
Social business is becoming a big deal and there are increasing demands on developers to build social elements into applications. OpenSocial has been working for some time on tools and techniques for all of social media with an eye to compatibility across applications and platforms. The future of social business would be brighter if applications pursued an open path rather than a bunch of competing proprietary methods. Relevant topics would be an introduction to what developers need to know about social applications, the tools and APIs that are available and best practices for developing compatible applications.
When you go to Amazon, Netflix, Facebook, Google+ and any number of online stores and communities, there are engines that suggest items/people/information that you might like based on what you read, buy and rate. There are several players in this arena, including easyrec and Apache Mohout. As this sort of personalization is becoming more common, developers are going to be looking for solutions that they can experiment with and implement. Relevant articles would explain the key elements of such engines and help developers code their first examples.
Open source lifestyle
Another aspect that I want to cover is the lifestyle of using open source. There are fundamental ideas that one needs to grasp to be successful in the open source world. From the R & D side, you need to be willing to do your own installations, maybe compile some code and do some digging through forums and such to be successful. Knowledge of resources like Sourceforge (http://sourceforge.net) and basic tools like the GCC compiler (http://gcc.gnu.org/) are probably necessary. You should also have knowledge about the best ways to find what you're looking for. Skill with the query language on the search engine of your choice is probably helpful.
Once you decide to bring a piece of software into "production," you'll need a different classification of information to help the less adventuresome. Quality tutorials, books and even professional training may be necessary. You might want to connect with a professional company who provides support on open-source products. Knowing your way around this world will help you be successful.
Information which helps users make good decisions about open source and integrating projects into a commercial environment are helpful. I would like to tell the story of how particular open-source technologies successfully fit into commercial environments and make a real difference. Stories built on personal experience are a plus.
Many people freeze when moving to Open Source because they just don't know how to get from here to there. They've always done it a certain way, and the change frightens them. Showing clear migration steps between the old commercial way and the new open source way will be very helpful to get people to try it. Again, if you have saved a ton of money and time by moving to an open source tool or technique, this is a way to share that success and lead others.
Developing for OS compatibility
When your application can live in its own world you don't really need to consider standards or popular modalities. However, if you want to integrate with the open source world, those things matter. I've seen many commercial Linux projects falter in the beginning because they chose funky proprietary ways of installing their products and working with the environment rather than doing it the "Linux way." Helping developers understand the best practices for working with an open source environment will help them to save some pain and have more success in the beginning.
The bullet list
If none of that has fired up your imagination, and you are looking for a list of topics, here are some things I'm looking for. Bear in mind that this is not comprehensive and will probably change constantly.:
developing Eclipse plug-ins
using Eclipse with C++/Java/XML/PHP
Eclipse Mylyn - task and application lifecycle management (ALM) framework for Eclipse
I just wanted to take some time to say thank you to all the people in the open-source world who make it possible for me to do so much with my little computer. Maintaining a project is a largely thankless task, with the greatest reward being to have what you want in the way that you want it. I respect your skill and appreciate your willingness to give it as a gift to everyone.
Here are projects that I use nearly daily that I would like to highlight. If you have worked on any of these projects, you have my deepest gratitude:
Linux - This changed everything and let me escape the world that dictated how my computing must be.
libreoffice - It's had many names, but the newest direction of this open office suite continues to be a great resource. I use it constantly and get a lot of work done.
Firefox - It's not the only browser that I use, but I still enjoy Firefox a great deal. The plugability is just so extensible. I even have multiple profiles so I can flavor the configuration to the task.
Pidgin - This little utility lets me keep up with multiple streams of communication in a single interface. It's so convenient!
Thunderbird - Simply a wonderful email application that gets better and better as it goes.
Audacity - An amazing audio editing application that let's me do some very interesting things with music and other sound editing. I get very professional results with this and I couldn't be more grateful.
Cinelerra - Some day there may be a great multi-platform, nonlinear, video editing suite. It may be that when it arrives I will use it. In the mean time, I've been very impressed with what Cinelerra can do. It's Linux-only right now (without jumping through some major hoops), but, say! I run Linux, so that's not a problem!
GIMP - I once used GIMP to repair a photo where a prominent member of a local group had his fly opened. I have been consistently impressed with what can be done with this amazing piece of software.
Inkscape - When I do posters, signs and even business cards I use Inkscape. It's ability to scale everything and fit text exactly the way that I want it has made it so useful.
Scribus - I haven't used Scribus as much, but when the project demands it, it sure makes a difference.
Image Magick - A utility that lets me batch process graphics with ease. Wonderful!
Android - I am writing to you now through the magic of Android, as it lets my laptop borrow its Internet connection.
Joomla - A wonderful, PHP-based content manager that helps me maintain some web sites that I could otherwise never have the time.
Wordpress - Likewise, a great way to help me get information up and out on the Internet in my free time.
These are by no means all of the only things that I use, but I will use almost all of these today. Thanks to all of you who make it possible, whether you are a developer, a tester or an evangelist.
I've been getting news here and there about the parting thoughts of Microsoft's software chief, Ray Ozzie. He wrote a blog entry which appears to see the future as not wrapped up on a PC. I'm still chewing on this one.
My general view of Open Source is that it should take on the things that are so fundamental that they should belong to everyone, or things that are ignored because they can't be sufficiently monetized. (Obviously Open Source moves beyond that scope, and shall as long as there are technical enthusiasts who want to make things better for the sake of having them be better.) As devices like smart phones, and things we haven't even imagined yet, become a part of our daily lives, the landscape changes. Trying to hold onto the old paradigms (did I just use that word?) becomes unreasonable. Things keep moving forward.
Perhaps we really are entering a stage of computing where the hardware and the specific applications become less important than the integration and accessibility. I'd like to believe that Open Source can play a huge role in this by providing a sort of neutral space where everyone can play without having to "lose." Companies could roll their expertise and service into popular and effective projects. This doesn't mean that people won't pay for anything anymore. Many of us choose to pay for service or packaging or expertise in areas where we could probably do it ourselves. Technology will be no different.
I have no grand insights here. Like I said, I'm still chewing on this. It's very interesting, though. Very interesting.
I've used OpenOffice.org since it was known as Star Office. (That's
been a while.) When it was absorbed into the Sun umbrella, I wasn't
sure what to expect, but Sun seemed to be a pretty good steward of the
project, even creating a plugin to allow Microsoft Office to read and
write Open Document Format (ODF) files. Then Oracle bought Sun. Again
I wasn't sure what to expect. However, all became clear pretty quickly
when Oracle began charging
for the free plugin for MS Office. Things have continued to change
since April and I'm honestly not sure about the current status of the
plugin. It's obvious, however, that Oracle is going to handle these
Now what do I do? Then, I found out about The Document
Foundation. (This is not to be confused with the Open
Document Foundation.) The Document Foundation is to OpenOffice.org
what the Mozilla Foundation was to Netscape. It is a shift to a
vendor-neutral body that is picking up the code of OpenOffice.org and
moving it forward without the entanglements. They are hoping that
Oracle will release the name OpenOffice.org for consistency, but in the
mean time they are going with the name Libre Office. I've installed it
and it works just fine. So far it's dealt with all of my existing
documents and done everything that I expected. I'm having trouble with
one gadget that I use to translate developerWorks submissions from a
Word Processing template into our XML format, but that will get figured
out over time.
What excites me about this is that it's a demonstration of what open
projects are all about. I think it's great when companies take
advantage of Open Source and contribute to projects. But open means
open for everyone. That freedom means that projects can't be hidden or
held back as long as there are people who are interested in using them
and doing the work to keep them going. My hat is off to people like
Richard Stallman and Linus Torvalds who helped drive the vision that
you could make things and set them free. It really is working.
If you're nervous about that Oracle stamp on OpenOffice.org, go grab
and check it out. It's in a transitional stage right now, so the logo
is a little chunky for the moment, but all of this will quickly clean
up. You might even consider being a contributor.
Poor, Fragmented Android - Not!
For a while, I've watched with amusement about this phrase
"fragmented" being applied to Android. Since I've been a Linux user
for years, I'm already accustomed to the idea of many contributors and
many options available. I thought that the response by Andy Rubin,
creator of Android, was beautiful and elegant:
If you type in the code within the quotes, it will download and
build the android kernel on your system. (There are a few
prerequisites, but if you already compile code you probably have them
installed, especially on Linux.) I tried it and it worked. I'm
running a 32-bit version of Linux right now because I was tired of
wrestling with some applications, so the compile stopped at one point
complaining about my environment, but it was clearly going through.
Again, the point is clear. Anyone can get hold of this. Anyone can do
something with it.
I have an Android phone and I've been very pleased with everything
it does. I especially appreciate the flexibility. I think it would
make a great platform for a tablet or other devices that need a limited
interface. With Linux at its heart it would also be extremely
adaptable to various kinds of integration. Imagine all of your devices
talking easily to each other through open protocols! It would be a
beautiful thing. If what we get with "fragmentation" is easy
integration and easy porting of applications to multiple environments
then I'm all for it. Frag me!
Adding Emblems to Media
I'm a big fan of Creative Commons media. I listen to a lot of it.
I have projects that I do where I need to play music, and I appreciate
having a source of good music that composers have designed to be
shared. However, I have to keep track of which piece of media I can
use for what. I keep lists and usually there is a note somewhere about
the license for that music, but that can be a pain. I try to keep them
separated into folders, but that doesn't always work.
In the Gnome desktop there is something called an "emblem" in the
file browser. It's a little visual tag that you can apply to a file.
I took the common symbols for the various Creative Commons Licenses and
saved them as emblems. Now, I can tag a file with the right emblem and
see at a glance what the license is.
Here are the emblems I created:
cc-nd (no derivatives)
cc-nc (no commercial use)
And here is an example of these in use:
Your file browser might have a way to add emblems. In mine I went
into Edit, Backgrounds and Emblems, and selected Emblems on the left
side. It showed me existing emblems and allowed me to add my own:
It's a great way to mark my file and make sure that I use the right
media for the right purpose. The emblem is specific to my system, and
would not transfer if I copied the file elsewhere... but maybe someday
there will be a standard for this.
I moved to a smart phone within the last year. In the past I hadn't
really needed one. When I went somewhere I typically had my laptop
with me, so I usually hid behind that. However, as my role became more
and more driven by general email and Internet access rather than
specific proprietary programs I realized that I wanted to have more
access and functionality without lugging the computer around all the
time. If you know me at all, you know I'm a Linux nut, so I naturally
gravitated toward an Android phone. I love it. The openness suits me
and I get to use my curiosity and ability to tinker to my advantage.
Apparently I'm not the only one who sees advantages to Android. If
Gartner is correct, Android will overtake the other options and become
the dominant mobile operating system. I think that the openness is the
Mild tangient: I'm not a big cook, but I enjoy cooking when I can.
The only cooking show that has managed to grab me is Good Eats
Brown. Why? Because where most cooking shows are about watching
someone else cook, Good Eats is about me cooking. Each episode
explores a cooking concept and explains to me how and why it works. He
gets into the science of cooking so I know why doing certain things to
food makes it taste better. I leave with tools and techniques to help
me cook rather than just a pretty picture and a link to recipes that I
will never look up. One of Alton's key concepts is that nothing in
your kitchen should only do one thing. Therefore he prefers something
conventional, like a steel mixing bowl, to a gadget, like an electric
popcorn popper. The more flexible the tool, the better it is in the
Back now: Open environments like Linux and Android have that same
flexibility that I like. They can be set up to do one thing very well,
but they still have the functionality to do other things as well. They
foster a multi-functional approach rather than a "gadget approach."
Ultimately as more and more of our devices talk to each other, having
open standards and flexibility is going to be much better than
"duct-taping" everything together. I'm really anxious to see where all
of this goes. If Android dominates the phone market it will also
dominate the market for other devices like DVRs, smart TVs, smart
appliences and vehicles (not to be confused with the Smart Car which is
a strange, freakish thing). This could all get very interesting.
Other ways to learn
I got a tweet today from opensourceway. It was a presentation from the TED conference that
explored the idea of children learning without teachers. Basically a
gentleman made a computer available to kids on the street in India,
with no instructions and no supervision to see what they would do. The
results are amazing and call questions on many of my presuppositions
about learning. If I'ved done this correctly you can just view it
below. If not you can find it at the source.
A few interesting stories today. The first one, while not very deep and more of a sort of op-ed piece talks about Oracle's apparent battling with open source. It's called "Shuttleworth: Oracle dooms its prospects in open source business." Oracle has made some interesting choices as the new stewards-- yes stewards! -- of the open-source projects they received with Sun. Another, "Jailbreakers Smell Trouble in New Apple Security Patent," speculates about how some of the new patents that Apple has filed may have more to do with giving them a way to catch iPhone jailbreakers than enhanced user security.
It will be interesting to see how all of this plays out. What I see is an increased interest by many technology consumers in openness. Just as the era of the PC created a world which was unfettered from the rule of the system administrator the next age of computing will allow a tech-savvy user to have more freedom and flexibility with their equipment... provided that they are permitted. We are going to discover soon how much of your technology that you actually own. Imagine if you bought a car but were not permitted to outfit it with whatever enhancements that you desired to go faster, be safer or just look funky. Imagine being prohibited from cannibalizing your old electronics or motor parts to create your own toys, tools and inventions. I can see voiding the warranty and refusing to support a device which had been altered... but surely when I pay that much money for a piece of hardware I should be able to tinker with it. I'm hoping that the response to these sorts of things will be for consumers to go to technologies where they are not subject to such controls. We'll see. Likewise, if Oracle continues to tighten their grip on their open-source projects I hope that many do what has happened in the past when an open-source project has started to turn away from its community responsibilities: they'll turn to another option which is still open.
I agree that these companies are well within their rights to protect their property. However, if your need for protection exceeds the desire of the consumer to put up with your restrictions they will go elsewhere. Like I said... I can't wait to see what happens next.
On the other hand, there are a couple of interesting looks at where openness is blossoming. Here is an article, "What would persuade you to ditch Windows for Ubuntu 10.04?," which says what I've said for some time: Linux is ready for you if you want it. It's a nice description of the things that Ubuntu has done to make themselves friendly enough to by my choice as a daily work environment as well as the choice for people I have helped migrate from Windows to Linux. It's all just going to get better and better.
Finally, there is movement in an area where you would expect openness to be unwelcome: the military. I've seen a few articles lately about how the military is finding advantages to open-source tools. Do a little searching and you'll find them easily. This makes sense to me. Most of the guys I have met who are truly dangerous don't wish for a lot of fancy James Bond gadgets if they get into trouble. They just want a nice sharp pencil. I think that soldiers are discovering that there is an advantage to having transparency to the technology that they use when lives are on the line. It will be interesting to see where all that goes as well.
Enough for now. I wish I had a great tag line to leave you with... but I don't.
Alas! LinuxCon has begun and I'm stuck here, up to my-- well... never you mind! I'm just not there this year. However, conventions about opensource things are increasingly friendly to virtual participation, so maybe I'll be able to look in a little.
Today I already saw an interesting area on Open Source Education. I will continue to say that I think that good use of open source technologies in any school curriculum will go a long way to making kids smarter and more in-tune to technology. Why? Because open source is about technology! it's about how things work and why they work. It's the technological equivalent to those little plastic models that showed you the transparent person with all the guts showing. OK... maybe it's not that graphic... but the skin is certainly pretty easy to peal back.
Right now I haven't seen a lot of education in primary schooling which teaches kids how to enjoy getting into what makes technology happen. I think they get exposed to some commercial tools, but does that really teach what they need? Linux and open source software create an environment where kids can work with any aspect of the infrastructure, from basic program usage to development to security to... I've said it all before! I just can't believe that there aren't more teachers out there who are excited about technology helping their students to do cool stuff. Maybe there are many and I just don't hear about them. Even so, it shouldn't be pockets of experimentation it should be a core value. Open source environments allow you to dissect technology like a frog. It provides complete transparency down to any level that you want to explore. Any children who get a grounding like that are going to skyrocket ahead.
Maybe it's a money thing. Maybe the issue is that funding and free products all go together and a system that centered learning on an open-source environment would have to give up a lot. Maybe there's pressure not to go there by... er... "Them!" (Giant ants?) I really don't understand.
I will say that the availability of open-source software gave me learning opportunities that I never would have had otherwise. I still go and tinker with different technologies because it's so easy to get a basic start with things that are open. That knowledge allowed me once to secure a lab so tightly that we upset the security people (because they couldn't scan it to tell us whether or not it was safe). I want kids and up-and-comers to have that same joy of learning, discovery and exploration that I enjoy. I hope it becomes more available-- or should I say permitted.
Linux Hype vs. Reality Dang! While I was scribbling on the stuff above this story from opensource.com came up about a panel discussion on the perception and reality of Linux today. Wow! I would have loved to have been in that room! Check it out! Bottom line, Linux is not going anywhere and there is nothing really stopping you from putting to work for you now... if you really want to...
How's your second Life? I know that Second Life is not as fully buzzword compliant as it used to be, but I wandered back in to look around and realized that there is some cool stuff there. For example, I attended a live concert with some good music and then had a wonderful conversation with someone about life the universe and everything. Second Life can be a diverting way to interact with people. So, I'm proposing an experiment. I have staked out a location on IBM's property: You can reach it by going here: http://slurl.com/secondlife/IBM%20Business%20Center/68/164/32. This is not my official office. (I'm not actually important enough to have my own designated space in IBM's land. *sigh*) However, it looked like the sort of place that a group of people could sit around and talk about stuff. So, I'm going to try to find a spot on my calendar where I can go and hang out there and anyone who wants to join me is welcome. We can talk about living the open-source lifestyle. If you go there now you'll probably find me sleeping. Feel free to tap me for a friend request. My user name is "Cmwalden Newman" in the weird language of SL.
I read an interesting article by Art Seavey called "Planning ahead for a new breed of 'public' spaces." It discusses the concept of government computing in contrast to public spaces, such as park land, city hall and other physical places that are manged by government.
This is an excellent way to think about government computing. What sort of limitations would you tolerate on being able to access public spaces? We do tolerate a fee when going into a State or federal park. I don't think that I would tolerate one for a local municipal park. I expect government services to be available to me, in my language, during predictable times. I expect to be able to transact my business without having to go through a middle-man of any kind. I expect my interaction with government to be dictated more by my vote than the services of a vendor. In fact, if there was a vendor standing in between me and my government I would find that intolerable.
Right now governments are struggling to find ways to take advantage of technology. I think for the most part there is a desire to maintain the good elements of public resources while using technology to overcome the inconveniences of driving to a physical location and standing in line or having to sort through the bureaucracy to find the individual who can answer a question. However, many of these institutions are relying on the advice and products of vendors, many of whom are still locked into a model that demands data be locked up in their own proprietary solution. This really should not be acceptable for government data. We should demand open standards on data for government, so that the technology can feasibly last as long as the need for the data. I think that we should also demand a good level of open source in the code so that it is easy for people to integrate with these solutions and for agencies to interact.
This openness should extend to the handling of people's identities. Identities should be under the control of the owner, not assigned by the government. I've stated before that there are good technologies allowing an individual to establish their own key for interacting with various entities. I still like this solution. It may be appropriate for me to use a single key to interact with government, but they should not demand that I also use that key to interact with other businesses. The goal should be to clearly and accurately establish my identity for the safety of everyone I'm doing business with... not establish an unstoppable tracking mechanism whereby everyone can follow my daily activities.
Of course, you may have different views and requirements. That's the thing about the public. It's full of individuals and their own needs and perspectives. Your needs must be considered as well. Take some time to think about what is being done to create a virtual public space for you. Are you paying attention to what is being done? Are you giving the same attention that you would with the physical equivalent. Are you looking out for your rights and demanding that they be considered or are you just going with the flow because it's technology?
Just a quick one today: One of the problems that open source software has in gaining traction is that it's not plastered through magazines, billboards and television commercials. Be snide about it if you want, but most open source projects are about getting the software right in-spite of the lack of commercial resources. The result is that a lot of very worthy projects escape people's notice. Awards can help that. Award events generate news. People want to learn more about an "award winning project." Yet, in true open source tradition, many of these awards are not chosen by a panel of the elite. They are chosen by the people.
Take a moment and add your voice to the upcoming Open Source For America (OSFA) awards. The nomination form is available to anyone. There are three categories that you can nominate: Individual Contribution, Open Source Project and Open Source Government Deployment.
The open source movement is a meritocracy. Help your favorites gain the recognition that they deserve.
If you are a Firefox user, you may have heard about the vulnerability
discovered which could allow malicious web sites to steal passwords that
you have stored in your password safe. You didn't know that? It could
suck. I don't have the details, but you can get a hint in the
description of the session "Breaking Browsers: Hacking Auto-Complete" at
Blackhat conference. (That's were security-conscious people get
together and talk about bad-guy stuff.)
The upshot is that after this conference, the precise method for doing
this will be out in the open, and there may be a lot of enterprising
hooligans who immediately make use of it. Get your passwords out of
Firefox now! I found a handy tool that
will look pull the passwords from your local repository and help you
dump it into another format before you clear them out of Firefox. I
know that sounds alarming, but you save it to your local system and run
it from there. (It will warn you if you try to run it from the
Internet.) It will show you a list of your passwords and let you copy
them into another file. I dumped them into a spreadsheet. (ODS format, of course!)
So... what to do with this file. I don't feel much better having a
spreadsheet laying around on my system with passwords to everything.
True, it's much less likely that someone will poke around on my file
system than that people will mess with my browser... but it's still not
a good idea. It's time to crank up the encrypted file space!
I've talked from time to time about working with encrypted file
systems, but not much beyond that. But now it's pretty urgent and I
want to make sure that I have an easy-to-use space available right now
for this and other sensitive information for which I need better
habits. I know that encryption sounds hard, but it's really not that
bad. There's a lovely open-source, multi-platform tool called TrueCrypt that makes this all pretty easy to handle. Don't think encryption will make that much of a difference? Take a peek at this article
on how long it takes to break passwords of varying complexity. Good
encryption with a good password will likely surpass the attention span or statute of limitations for most situations.
How easy was this to do? I installed TrueCrypt, which took a few
minutes of downloading and script-running. I fired up the program
which, incidentally, had a nice GUI. I created a 1GB volume which
resides as a file on my file system. It's formatted internally just
like a file system and it mounts that way too. I could easily have put
it on a flash drive if I wanted to. TrueCrypt also supports encrypting
partitions. Now I have a moderately safe repository that I can save my
spreadsheet into. I can mount it when I need to and not have to do
anything too weird with it. I can also keep multiple things in it,
consolidating my secured items. In Linux, and Mac OSX as well, I
think, it's easy to make a relative pointer to a file. That means that
I can take some key configuration and data files and store them in my
encrypted area, but allow the applications to deal with them as though
they were standard. I can explain that in more detail if someone is
interested. There is probably a way to do that in Windows by now, but I just don't know what it is. Maybe someone can fill us in.
So, I'm sorry to bear the news. I rather like the convenience of
the password safe... but it's just not safe right now. And don't feel
that putting Firefox's password file in your encrypted volume will
help. The problem is that Firefox will give up your password if it's
asked in the right way. We need to make sure that Firefox doesn't know
the password. Ultimately I'm sure this will be fixed. Then it may be
safe to go back. There are also other password safe tools that might
be helpful... but for now, I think I'm going to go with the
old-fashioned copy and paste approach with the spread sheet.
I hope that all of you will take this stuff seriously and give TrueCrypt a try.
We really do need to start taking personal responsibility for securing
our communications. Government is too slow and to clumsy to do it for
us (not to mention that they don't want anything to be secured from them).
Manufacturers have too many points of view to accomodate to make it
automatic. It has to be the right solution for you. Start with this
and before you know it I bet you'll be asking me about encrypting your
I was catching up on my slashdot
articles and found an interesting
note about a major computer manufacturer (hint: you'll find out who
it is if you follow the links) who has been dancing in and out of the closet issue about
supporting Linux as a viable option for users. Their latest round has
boiled things down between Windows and Ubuntu. They have made the
following conclusions about which choice you should make:
You are already using WINDOWS programs
(e.g. Microsoft Office, ITunes etc) and want to continue using them
You are familiar with WINDOWS and do
not want to learn new programs for email, word processing etc
You are new to using computers
You do not plan to use Microsoft
You are interested in open source
It's hard to argue with the points that if your
computing is largely wrapped in Windows proprietary software that you
should be using Windows. It's also hard to argue with the idea that you
should use Ubuntu
if you are interested in open source programming. I guess where I
disagree is that idea that Windows is the best starting place for
people who are new to computers.
I've been away from Windows for a while. I can
never completely escape it, because people I know who have Windows
still ask me for help with problems. I have noticed that as things have
passed through Window XP, then Vista then Windows 7 (Vista 2.0) that I
have more and more difficulty keeping up with how to configure things.
I can always find the answers with a quick web search, but the point is
that I have to look it up. If it was truly easy and intuitive then it
would naturally lead me to the answers. So, why would starting with
Windows put a new user at an advantage?
If you are new to computing then you don't have
any expectations. You are learning technologies from the beginning. At
that point I don't see that either system would make any difference to
you. Sure, you might have more Windows users to throw rocks at-- I mean
more Windows users within a stones' throw to help you out... but you
might also know a few people who use Linux. Ubuntu has an easy install,
an almost magical way of finding and installing software. The default
settings are all pretty reasonable for a typical user. It's designed to
connect you to the Internet and get you browsing with no special
software loads or changes.
In addition, someone new to computers would have
access to tools for art design, media editing, programming, security,
and any number of other interests. All they have to hit the button and
it's theirs. True, the applications may not be the most common
commercial editions of these tools, but this person is new. They are
trying to learn how technologies work. How better to introduce them
than to provide freely available resources that will let them
experiment. As an example, I'll give GIMP
(which has a
very nice article in the Open Source zone right now). GIMP stands
for the Gnu Image Manipulation Program. It's an editor that provides
enormous capabilities to edit photos and other pixel-based graphics
which you would use on the web and in documents. It rivals Adobe
Photoshop in its functions and I have actually used tutorials that were
written for Photoshop to learn skills in GIMP. Someone learning about
pixel-editing can learn a great deal with this tool and put out results
that are usable by anyone. (GIMP supports a ridiculous number of
graphic formats.) There are many other applications that are similar.
I really want to challenge this last point. In
fact, I think that someone new to computers who starts with Linux will
fail to develop a number of bad habits that seem to occur with people
who grow up with Windows. They'll find community assistance early on.
(The Ubuntu help forums are very friendly and usually provide
tutorial-quality answers for solving problems.) They'll learn that
there are options available for software and that they can and should
make choices when they select a tool. They'll grow with their curiosity
rather than be driven by fear that they may or may not be licensed
correctly for what they are doing.
I know many will disagree with me, but I'd love a
chance to take a group of kids and raise them through a Linux program
versus a Windows curriculum. I think the Linux kids will have a broader
more creative view of technology and will dive into a community-drive,
open, global world. I think they'll be people who look for solutions
rather than waiting for answers. It could be a beautiful thing.