September 02, 2010

UTOSC 2010: Official hotel is Marriott Residence Inn – Sandy, Utah

If you are looking for a place to stay for UTOSC 2010, this is the place, the Marriott Residence Inn!  As with 2009, we’re trying to make it easy for those coming in from out of town to stay close by.  The Residence Inn is less than 1/2 mile from the conference venue and very close to many restaurants and nightly entertainment.

The Residence Inn Sandy provides free wireless Internet and is less than 1 mile from the SLCC campus where the conference will be taking place. In addition, they offer a free shuttle to and from the campus. More information about the hotel can be found on the Residence Inn’s website.

Residence Inn Sandy (map)
270 West 10000 South
Sandy, UT 84070
Phone: 1-801-561-5005
Fax: 1-801-561-9672

Hotel Registration

On the web

UTOSC Hotel Registration

By Phone

Call the Marriott Residence Inn at 801-561-5005. Mention UTOSC 2010 and ask for the conference rate of $89/night. The Group Code is ‘UTOUTOA’.

For additional hotel information, visit http://utosc.com and choose the  ‘lodging‘ link.

The Utah Open Source Conference 2010 is taking place from October 7-9, 2010 at the Miller Free Enterprise Center of the Salt Lake Community College.

To register for the conference, follow this link.

See you all in October!!

Twitter and the OAuthalypse: A RESTful Misfire
Fail Whale

Yesterday was the OAuthalypse--the day when Twitter stopped accepting HTTP Basic authorizations on theis API. I had a few apps break--like almost everything I've done with Twitter. To get them back working I'll have to spend some time on each moving them over to OAuth. For some that won't be hard--they're already using a library that supports OAuth. For others it will be more work. All of them are single user apps (like the UtahPolitics retweeter and so will use the OAuth single token pattern.

The reason for moving to OAuth is so that apps won't need to ask users for their Twitter password or store it anymore. Twitter had a bad experience with this and that led to the decision to go nuclear on usernames and passwords on their API. This is a clear win for delegated authorization protocols like OAuth and the more capable ones that are surely to follow. What's more it trains users to use a delegated authorization scheme. I love it.

But what's curious about the move is that in everycase (except the retweeter) my apps are not updating information. These are read-only apps that simply read a friend timeline for a partcular user. I can't figure out why any authorization is needed at all. Since who I follow is public information, it would be simple enough to reconstruct my friend timeline from available information. My theory is that Twitter uses authentication on read-only data as a substitute for a poorly designed API. That is, they use the authentication as a substitute for merely allowing me to specify whose timeline I want to see.

This is classic REST stuff and it seems that Twitter got it wrong. Thousands of apps are failing today because Twitter requires them to authorize when they don't really need to. Am I wrong?

Tags: twitter oauth identity rest

Utah Open Source Conference 2010

Welcome to September, my how time flies. We only have a month to finish preparing for UTOSC, and you only have a month to register!

The price is our standard $70, but there are plenty of discount codes available. If you are a member of any Local User Group (LUG) then you can get a code for up to half off!

A quick word to potential sponsors: UTOSC is the premier event in the Mountain West to capture the attention of hundreds of IT professionals, as well as active hobbyists and some very loyal customers. Please contact me for more information about sponsoring UTOSC.

Remember, register now! http://2010.utosc.com

September 01, 2010

Ramadan – Week Three

My second week of experiencing Ramadan is already documented, this is week three.

When studying Anthropology in higher education, you learn in your first class the necessity of “participant observation“. This is defined as getting involved with the group you wish to study. In other words, rather than sitting on the sidelines, just watching the group, if you really want to learn what the culture is about, what they do day-to-day, what their emotions are how they speak, etc, you need to roll up your sleeves, and get your hands dirty. You need to participate in the culture you’re studying if you want to get a true, grounded study of the culture. You clean when they clean. You dance when they dance. You cry when they cry. So, that is what I have done with Ramadan. I have attended mosque more than once. I have gone out of my way to associate with Muslims. I have read the Qur’an. I have familiarized myself with the language and customs during Ramadan. While it would be much more effective if I was in a nation predominantly Islam, I’m doing the best I can here.

Now, I ask: is participant observation “extreme”?

On two different occasions this week, I was told that what I was doing was considered “extreme”. One later apologized, recognizing that what I’m doing is just trying to increase the religious tolerance of the American public, and that this person could learn a thing or two from my example. However, the other person did not apologize, and continues to spread the view that engaging in a religious activity other than your own is “extreme”.

On both cases, a discussion ensued about the philosophies and politics of participating in activities in a religion other than your own. The first, who later apologized, ended quickly when I mentioned anthropology and “participatory observation”. The second discussion brought up a fundamental belief in my church, then questioned if I was breaking that belief.

You see, as Mormons, we have temples all over the world. However, only people who have led good, clean, repentant lives, being called “worthy”, can enter the temple. There is an interview with your local church authorities that determines your worthiness. In that interview, a question is asked if you affiliate with or belong to a group that teaches opposing views of the LDS Church. If you do, then you are not worthy to enter the temple. So, it was suggested that by participating in Ramadan, I’m affiliating with a religion that goes directly against the teachings of the LDS Church. Now, of course I don’t agree. After reading the Qur’an three times, and on my fourth time currently; after studying the people and their beliefs and actions, I am confident that I am participating with a religion that has many, many similar teachings as my religion.

Anyway, I won’t go into any more detail about the discussion than that. However, I do want to know that if participating in a religion other than your own is considered “extreme”. What do you think? I don’t see what’s extreme about fasting for a full month. I don’t see what is extreme about reading a holy book. I don’t see what is extreme about making friends. So, I pose the question to you. Discuss it in the comments if you wish.

Here’s how the week went for me:

  • 15 Ramadan- School is proving to be somewhat of a challenge while fasting. Not due to lack of energy or starvation, but because I can see everyone around campus enjoying their soda pop, pizza, hamburger, fries, grilled chicken, etc. And with it being the first week of school, there are booths setup everywhere handing out free donuts, candy, drinks, etc. Not only the sights, but the smells. Oh, the smells. It’s really, really hard to resist temptation, and get a bite to eat. But, so far, I’ve remained strong.
  • 16 Ramadan- I met someone on the public transit today who noticed me reading the Qur’an. He asked if I was Muslim, as he didn’t know any Caucasian Muslims. I told him I wasn’t, then proceeded to explain to him what I was doing and why. It was a good conversation, and he had a great deal of respect for me doing it. When it came time to break the fast at sunset, I had my standard peanut butter and jelly sandwich with chips and drink.
  • 17 Ramadan- I was to meet up with a study group for math at school, but no one showed. I got to the school around 08:00, and stayed until about 18:00. I noticed that as the day got later, I was struggling keeping my focus of solving some math problems. I recognized that this might be a problem for getting good grades on my homework. Thankfully, I really will only have a problem with this on Saturdays, and there is only one Saturday left during Ramadan.
  • 18 Ramadan- Went to a family function that my grandparents call “The 5th Sunday Ice Cream Social”. Aunts, uncles, cousins, kids, grandkids, etc all show up. My grandfather makes the ice cream, and everyone is encouraged to bring a treat of some kind. So, there are cookies, ice cream, brownies, and other treats. It was hard to not have any, and it sparked some conversations with my cousins and aunts and uncles. My grandmother made me pigs-in-a-blanket, with mixed vegetables and tomatoes with whole milk for breaking my fast at sunset. After which, I quickly had as much ice cream and cookies as I could handle, and even brought many home.
  • 19 Ramadan- I was caught today chewing gum by a fellow Muslim student in one of my math classes. She informed my that chewing gum was breaking the fast. I quickly spit it out, now knowing about that. I told her that I was concerned about my bad smelling breath, but she reassured me that because I’m fasting and resisting temptation to break my fast, my breath smells sweet to God. I felt bad, as I’m a big gum chewer, and have been chewing gum probably every day.
  • 20 Ramadan- About a week ago, a good wind came through and blew over part of my fence, and destroyed some of my retaining wall. So, I had a contractor come over and look at it and give me a bid. He asked if I wanted some sunflower seeds, and I declined. He teased me that they weren’t poisoned, so I explained to him why I declined, due to my fasting. Then a long conversation ensued about having religious tolerance. He too held a great deal of respect for me for what I was doing. Two positive experiences this week advocating religious tolerance for Islam.
  • 21 Ramadan- Nothing fascinating today. Went to school, went to work. I was offered pretzels by a school-mate, but when I declined, he remembered why I declined (I had already discussed with him about Ramadan). He was impressed that I’ve made it this far. I am too. I never thought I would make it three weeks of straight fasting. Only one week left to go, and I’ll be planning of having a big Eid ul-Fitr with my family. We’re planning a pot-luck, inviting brothers, sisters, parents, step-parents and in-laws. It should be a lot of fun to celebrate ending the month. I also found out that the University of Utah will be holding Iftar on Friday at campus. I plan on attending.
Simplifying Content Development and Delivery: Using The Wiki

One of the great benefits of being here on campus and working with such quality instructors is the collaboration that goes on.  If one of us has a great idea to better the teaching experience, we like to share. 

Christer Edwards, one of our instructors, recently shared his secret for creating and deploying his content.  He uses a wiki.  Now, I’ve heard of wikis, and I’ve played around with some in the past, but I’ve never really gotten into it.  The markup is different, and I wasn’t sure if I wanted to take the time to learn it if I found I didn’t like it.  So, I waited.

Then Christer showed me the S5 plugin for his DokuWiki page. For those of you who are not familiar with S5, is it an implementation of presentation software, but is run from the web using XHTML, Javascript, and CSS.  And it looks great.  It’s simple and easy to use to create a quick presentation, and you can display it from anywhere you have Internet access.   That is what got me thinking. 

See, I really want to simplify the way I show my presentations.  I want to have them easy to get to, easy to deploy, and simple to set up.  I don’t want to worry about plugins, software versions, or anything like that.  Just a quick and easy way to get information on the screen.  and S5 makes that possible.  And, as it is essentially a website, you can embed video, audio, just about anything in the page, and it works. 

Does it take the place of just about everything in a presentation?  Not really.  It doesn’t have some of the cool animations, the ability to make presenterless presentations, etc.  But that’s not really that important for classroom slides.  It’s all about the content, the discussion, and getting the information out there. 

So, I gave it a try.  I first installed DokuWiki on my website (a very easy install, I might add), and installed the S5 plugin.  I’m currently transferring the content in my SEO slides to the wiki, and the presentation looks great.  I still need to settle on a template for the slides, but that’s something that can be done at any time, after the presentation has been made.  That’s what I like about this plugin, it breaks things up.

But, you can’t just use a Wiki for slide shows, it would be kind of a waste, right?  The wiki needs to be so much more, providing tools that will help with development.  This is where it gets interesting. 

I’ve been thinking a lot about project management, as course development for new content seems to drag.  I wanted something to help me break the project into pieces.  I’ve been told that Agile Project Management is a great way to work if it’s implemented well, and a very good friend of mine, Joseph Hall of powerwhisk.com told me how he has implemented it with a wiki.  Eager to give it a try, I started looking for plugins for various wikis to find one I like. 

Well, as luck would have it, DokuWiki has a plugin called AV Task Box.  Basically it’s a text box that will add task information like the Title of the task, the priority, the estimated time it would take to complete the task, the amount of progress one has made on the task, to whom the task is assigned, and a description of the task for usage.  The syntax is easy to use, and if you keep all tasks on a main Task page, everyone can see which task is for whom, how far along they are, and when they can expect a task to be completed. 

I love it, and use it already for my course development (as of yesterday).  It helps me gauge the time I need to dedicate to a task, and I can keep myself on task easier with the box sitting there waiting to be updated. 

So, for the past couple of days I have been teaching myself how to use the wiki format.  A couple of other plugins I got were the Note plugin and the ODT plugin.  Note puts in a cool formatted note within the text that does not show in the slides (very handy).  The ODT plugin let me put a button on the bottom of the page to export that page to an Open Document file.

And one more thing..  I want to be able to edit this on the fly.  It is the web, after all.  I should be able to edit it from any web-enabled device, like my iPhone or iPad.  And I can, unlike other Wiki software I’ve looked at in the past.  I can access the Wiki from both my iOS devices and edit pages without a problem. The only thing left is to get the slide show working with gestures on the iPad, and it will be perfect.  I’m currently looking into that now. 

So that’s my experience with Wikis, and why I’ve started using it for just about everything from note taking to project management.  I can definitely see why they were so popular. 

Thermal Reactor > Fast Reactor: August CTO Breakfast Notes

“We can build self-controlling reactors.”

YouTube - Thorium Remix 2009 - LFTR in 25 Minutes
http://www.youtube.com/watch?v=EHdRJqi__Z8

The Liquid Fluoride Thorium Reactor: What Fusion Wanted To Be
http://www.youtube.com/watch?v=AHs2Ugxo7-8


Kynetx Demo from Sam Curren – Holy Personal Data Stores!


UTOSC (Utah Open Source Conference) 2010 - October 7-9, 2010
http://utosc.com/


The Future of UI
http://blog.ted.com/2010/06/01/drive_3d_data_w/


AppInventor
http://appinventor.googlelabs.com/about/


Blue Ant T1 Bluetooth Headset – Scott Lemon is converted to this headset model.
http://www.myblueant.com/products/headsets/t1/index.php#video


Swype text input for Android phones – heavily endorsed by Sam.
http://swypeinc.com/

Hope to see you at the next CTO Breakfast!

My experience updating ubuntu servers

I had a contract to update three linux servers at various locations for my client. Each server presented a different set of issues.

Ubuntu has really made these updates easy with the do-release-upgrade command, part of the update-manager-core package. Running the command does pretty well everything for you, and all you have to do is follow a couple of on-screen instructions.

The first server to update was a public webserver. It sits in the datacenter at Xmission, and houses several websites, a database server, and some dns services. This was on ubuntu 8.04, and I was migrating it to 10.04. I logged in from my house via SSH, ran the do-release-upgrade command and we were off to the races. I rebooted afterwards, and waited about 5 minutes. Sure enough I can even SSH back into the box. Then I realize that the upgrade removed my MTA and Database server as part of cleaning up unused packages. Really seems silly to me that is would do that. Thankfully just installing the database was enough, all the databases and users, etc. were still there. Then a fight with apache to actually read the virtualhosts and serve them right. I don’t know what I changed, but it worked.

The second was a backup server onsite. It was at ubuntu 9.04, but with two release upgrades I was running strong on the LTS. Everything else just seemed to work, so that was an easy done.

Last machine was an internal webserver, running some intercompany webapps. It also served as a MTA for the office, allowing copy machines to send mail. It has been the real pain. Upgraded remotely via ssh and it never came back after the reboot. When I physically got to the machine to check it out it was saying something I have never seen before. Grub was complaining that it couldn’t find /dev/mapper/root-device and would drop me to a busybox shell. But I could see /dev/mapper/root-device from the shell. I fought with this for a while. After something like 100 restarts I got the bright idea and just typed ‘exit’ at the busybox shell. Guess what!!! The machine started fine! I have no idea what the machines damage is, but from now on I just type exit when restarting the machine. Thankfully the server doesn’t restart very often, in fact, this update was the first time in 1 1/2 years that I have restarted it. But my trial was not over then. Last large issue was the /etc/network/interfaces file. It kept the old file, but then would not work right. Weirdest symptoms, I could get to the machine fine from 2 of our 5 subnets and the computer could not get to the outside world. I fought with it a while and finally just disabled one of the interfaces and renamed some of the alias’ and away we ran.

I guess the moral of the story is, no server update ever goes smooth. Thankfully I am done for two years.

August 31, 2010

Newsbeuter, Mutt and Google

I just discovered Newsbeuter supports synchronization with Google Reader. Not only your read/unread feed items, but you can also share and star items in Newsbeuter as you can in the Google Reader interface. This blog post is documenting how. Further, by using Buzz, you can also comment on your shared items, and others. I’ll cover that as well.

First, I like the command line. I like minimalist function and design. It’s always pulled me in. So, this solution is a command line solution. With that said, the command line doesn’t work well for viewing images, does it? This can be problematic for RSS feeds. I understand this. However, since using Newsbeuter for the time I have, I’ve found that I read a lot of blogs that are 100% images, and when push comes to shove, it’s adding a lot of noise to my RSS signal. As a result, I’ve removed a great deal of those feeds, and haven’t missed them. Again, going back to minimalism, I read fewer feeds now, and the signal is much, much higher. However, the link to the RSS feed is in the post itself, so you can follow the link from Newsbeuter to the browser of your choice if you wish. This will be the minority of the time for myself.

Second, this solution is not only using Newsbeuter, but also Mutt. Really, any mail client will work, but I like Mutt, so I’ll be using it in the solution here. Further, we’ll be tying Reader and Buzz together to make a few things work. But, everyone hates Buzz, right? Well, I don’t. I love the tight integration it has with Gmail and with Reader. Yeah, the design is lacking, that’s for sure. And some of the keystrokes are completely bass-ackwards compared to reader, and can cause problems with Gmail. However, because of the integration, and the reply-by-mail feature, which we’ll take advantage of here, you’ll find you won’t miss your Google Reader much (unless you absolutely have to view images in your feeds).

With that said, let’s begin. First, you need to install Newsbeuter 2.2 or greater and an mail client (Mutt, as already mentioned, will be used here). After installing Newsbeuter, you need to configure it to sync with your Google Reader account. Here’s what I set in my ~/.newsbeuter/config:

# setup google reader sync support
urls-source "googlereader"
googlereader-login "username@gmail.com"
googlereader-password "my-password"
googlereader-flag-share "S"
googlereader-flag-star "s"

Make sure you read the documentation about the Google Reader support. Now, fire up Newsbeuter. After authenticating, you will notice that it has populated your feeds, and you can start pulling down the updates to unread items. Here’s a screenshot of my Newsbeuter “home”:

You now have access to your starred items, your shared items, popular items and people that you follow (what others are sharing), but not the comments. That’s okay, we’ll cover how to get access to that in a second. However, if you have access to your starred items and shared items, how do you share or star an item in Newsbeuter? This is done through flags. Newsbeuter has a flagging system that allows a custom categorization of feeds by the user. The flag must be a letter, ether uppercase or lowercase, A-Z and a-z. You set the flag by pressing “Ctrl-e”, then entering the flag you wish to set. Now, you’ll notice that in my config, I have two options that are for flags: “googlereader-flag-share” and “googlereader-flag-star”. If I press “S” for my flag, then it will share the item. If I press “s” for my flag, then it will star the item. Test it, then log into the Google Reader interface to see it work.

Now, when I would share items, they usually were shared with a comment to encourage discussion with those who are following me (or anyone who can read the shared item). However, in Newsbeuter, there is no way to comment on a flagged item directly. Further, when you read items that your friends share, and they have comments with them, how do you add your own commentary? Well, I have a solution, but it doesn’t involve Newsbeuter. Rather, it requires that you use Buzz and an email client.

With Buzz, you can add your Google Reader shared items as a connected page. This means that whenever you share an item on Reader, it will show up as a new item in Buzz. Further, Buzz will send you an email of all the items you’ve posted to your wall, as well as your items that have been commented on. When you receive the email, the body of the message might be something like this (text copied and pasted from Mutt):

Date: Tue, 31 Aug 2010 13:59:49 -0700 (PDT)
From: Aaron Toponce <z12dhj4psprvstctz23vcxg5wleozbfi104@gmail.com>
To: Aaron Toponce <aaron.toponce@gmail.com>
Subject: Buzz from Aaron Toponce

[-- Autoview using /usr/bin/elinks -force-html -dump ''/tmp/mutt.html'' --]
   [1]Aaron Toponce – Google Reader   Aug 31, 2010
   [2]Man Already Knows Everything He Needs To Know About Muslims - [3]Aaron
   Toponce's Friends' Facebook Links
   [4]Man Already Knows Everything He Needs To Know About Muslims
   Source: [5]www.theonion.com
   [6][IMG]
   SALINA, KS—Local man Scott Gentries told reporters Wednesday that his
   deliberately limited grasp of Islamic history and culture was still more
   than sufficient to shape his views of the entire Muslim world.
       I seem to recall that in earlier times it was only the court jester
   who could get away with speaking unwelcome truth to power. Perhaps that is
   why comedy often forces us to see things about ourselves we don't want to
   see.
   –––––
   Reply to this email to add a comment to this post.
   Link to this post:

http://www.google.com/buzz/115784859563110525602/BaqgGreVqdT/Man-Already-Knows-Everything-He-Needs-To-Know

References

   Visible links
   1. http://www.google.com/profiles/aaron.toponce
   2. http://www.facebook.com/profile.php?id=1068226280&v=wall&story_fbid=124010764315178
   3. http://www.facebook.com/posted.php
   4. http://www.theonion.com/articles/man-already-knows-everything-he-needs-to-know-abou,17990/
   5. http://www.theonion.com/
   6. http://www.theonion.com/articles/man-already-knows-everything-he-needs-to-know-abou,17990/

Notice the “From” address. It’s a long unique string that gives you access to comment on the post directly. As mentioned in the email, all you have to do is reply to the email, adding your commentary, and it will be posted as a comment on the shared item. You’re actually commenting on a Buzz post, not a Reader post, however, because you tied Reader and Buzz together, they become one and the same. Also, Buzz is smart enough to strip signatures and attachments from the reply, so your email signature and S/MIME PGP attachment will also be stripped. Just make sure you trim your email appropriately, so you’re not adding anything irrelevant to your comment (trim everything out of your reply).

Go back to Reader, pull up the shared item, and notice your comment on the post. Of course, you can comment on others shared items by sharing it first (the “S” flag for me), then replying to the mail sent from Buzz. When Buzz gives the ability to be notified of everything that your friends are posting, then you shouldn’t have to share it also. However, I usually reshare what others have shared, so this isn’t a show-stopper for me, even if it is less than perfect.

UPDATE: I forgot to mention Newsbeuter’s tagging feature. In Google Reader, I have separated my feeds into folders. However, when I sync with Reader, it seems all my feeds are in one massive “river of news”. I don’t like this, and wish the folders were preserved. Well, with Newsbeuter, it is through tags. When in the main window, press “t” and it will take you to your “tags”, or folders as Reader would call it. At which point, you can read only what specific topic you’re interested in. However, I do know that Google Reader supports tagging beyond their folders. I don’t know of a way to apply Reader tags inside Newsbeuter.

Remote Terminal Data Pushes (okay, okay– polling)

Maybe you have a giant warehouse and you’d like some large LCD monitors around the shipping lines which have the orders listed for all to see. You’d like these LCDs to update frequently and to be specific to each shipping line.

What to do? Well, there is meta-refresh every second, but that’s flickery and lame. Let’s get the javascript prototype library to update divs based on the location selected in a dropdown list:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>LCD Terminal Somewhere</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js"></script>
<body>
<script>
                var url = 'get_content.php';
                var pars = 'location=1';
                var myAjax = new Ajax.PeriodicalUpdater(
                        'placeholder',
                        url,
                        {
                                method: 'post',  //use post or IE will cache(with get)
                                parameters: pars,
                                frequency: 2
                        });
</script>
</head>
<body>
<h2>Terminal Display</h2><i>(content refreshes every two seconds)</i><br />
   <div id="placeholder" style="width:600px; height: 300px; border-width: .1em;border-style: solid;border-color: #000;">Lorum Ipsum</div>
<p><p><p>
<form>
<label for="myLocation">Change Location: </label><select name="myLocation" id="myLocation" onchange="pars='location='+this.options[this.selectedIndex].value; myAjax.options.parameters = pars.toQueryParams();">
<option value="1">Line 1</option>
<option value="2">Lines 2 and 3</option>
<option value="3">Reception</option>
<option value="4">Break Room</option>
</select>
</form>
 
</body>
</html>

And here is get_content.php

<?php
switch($_REQUEST['location'])
{
        case 1:
	        echo("<h2>Some custom data for Line 1</h2>");
	        break;
        case 2:
	        echo("<h2>Custom datagrid for Lines 2 and 3</h2>");
	        break;
        case 3:
	        echo("<h2>This would be displayed on the receptionist LCD</h2>");
	        break;
        case 4:
	        echo("<h2>Content for the break room</h2>");
	        break;
}
print("<p><p><div align=\"right\">Last Updated: ");
print strftime('%c');
print("</div>");
Free, as in Fear

I have plenty of better things to do than blog right this moment, but having been in the midst of events that generated an inordinate amount of FUD, I just couldn’t contain myself.

NEWSFLASH: AN OPEN SOURCE CLOUD FRAMEWORK ACCEPTS CODE

OpenStack Nova has not stopped supporting anything. Rackspace hasn’t done anything but start contributing code to support their APIs. Considering that Rackspace is actually spending real money to support the project, that seems entirely reasonable. (PROTIP: If a community is going to use an Open Source project to interact with your product, you might want to consider a strategic investment in making that experience a good one. Just Sayin’)

THERE WAS NO STATEMENT, NO CODE, NOTHING WHATSOEVER THAT INDICATED OPENSTACK WOULD REMOVE SUPPORT FOR AWS APIS.

This whole thing started when James Watters (@wattersjames, last seen preparing himself for VMWorld with a platter of carnitas) asked the people at the Silicon Valley Cloud Computing meetup on OpenStack to settle a bet he had with Simon Wardley (@swardley) about the AWS APIs. In passing, it was noted that Nova would support the Rackspace API, but at no time was there any indication that the project would remove the existing AWS support.

@wattersjames proceeded to banter with @swardley in the twitterz, hilarity ensued, and now we are here. (+1 evil genius points to James)

OMFGWTFBBQ, Rackspace is going to implement their APIs in an open source project that they have devoted resources towards. The Clouds are falling.

Aside from people just getting their facts straight because it is the responsible thing to do, OpenStack is far and away one of the most open ‘open source’ projects by design, and definitely when compared with other open source cloud frameworks.

There is a reason there are ~150 people in #openstack on IRC. There is a reason people are submitting patches.

This isn’t because of Rackspace. This is because of how the community has been engaged and the promise of a truly open cloud framework.

There are two other things worth noting for people who haven’t followed this story and can’t be bothered to get the facts straight. First, there are other entities involved in OpenStack, not the least of which is NASA. Maybe you have heard of NASA? I don’t think NASA is in this beholden to Rackspace. OpenStack will evolve in the direction that is a combination of the collective utility of the community and whoever chooses to actually contribute code. Which brings me to the second point, code wins. If you think something should work a certain way, prove it with code.

Next time someone wants to talk about changes in an open source project like OpenStack, please include the revisions and/or patches.

The whole cloud API discussion is ridiculous anyway. All the APIs should be different in a few years. If we are really moving the cloud thing forward, they will be.

Seriously, is there anything left to debate?

Go build something.


August 30, 2010

Come to Kynetx Developer Day
Kynetx

In the past Kynetx has held two Kynetx Impact conferences, one last fall and one last spring. Kynetx Impact exceeded my expectations both times with lots of people and energy. But holding a conference of that size is, frankly, a lot of work for a small team. Consequently, we've decided to move to an annual schedule with Kynetx Impact, holding the conference once a year in the spring. At the same time, we didn't want to lose the ability to contact and work with developers, so we've created Kynetx Developer Days. The first Kynetx Developer Day will be held in our Utah office on September 18, 2010. (Register here...it's free!)

At Kynetx Dev Day, you'll find tracks for beginning KRL programmers as well as more advanced topics for experienced KRL developers. The full agenda is available online. We'll be announcing and teaching people how to use some cool new features, including how to use Kynetx with email and telephony services like Twilleo via webhooks. But there's more...

Last Friday we gave a demonstration of the power of Kynetx to orchestrate multiple services (Web, email, telephony, and so on) in pursuit of the end-user's purpose. In this case we showed how an email from a person's radiologist suggesting they need neck surgery based on their MRI results could kick-off a whole series of interactions and tasks. Our demo showed how a dozen individual, small, simple cooperating KRL applications could automate the interactions to significantly reduce the user's cognitive load.

Not only will we be showing the latest version of that demo at the Sept 18th Dev Day, but we'll be teaching about the techniques necessary to build those kind of compelling experiences. You don't want to miss it.

And for those who can't be in Utah on Sept 18th, one of the reasons for moving to the simpler format for our fall event was to be able to spread them around more. We plan on conducting similar Kynetx Dev Days in other locations in the coming months. Stay tuned for more information...

In the meantime, register for the Sept 18th event if you'd like to come. It's free. We'd love to have you.

Tags: kynetx developers krl

Come to Internet Identity Workshop East Next Week
IIW

The East Coast edition of the Internet Identity Workshop (IIW) will happen next week on Thursday and Friday (Sept 9-10) at the Josaphine Butler Parks Center in Washington DC. The theme for this edition of IIW is Open Identity for Open Government. You can register online. Late registration fees kick in after Friday, so register now.

Tags: identity events iiw

Fixing Windows MBR with Linux LiveCD

I ran into an interesting snag the other day. I had a hard drive that was not showing up and therefore the system would not boot. I really found this odd, because it showed up to the bios, and all hardware tests said the drive was fine, so I thought I would try and run a FIXMBR on the drive to see if that was the problem. Now, here is where the snag comes up. Normally I would take my Windows installation disk, and once running I would use the ‘recovery console’ to run the command and be done with it. But the Windows disk would not start. It would hang on the ‘Inspecting your systems hardware configuration.’ So, I needed the Windows Recover Console, to run the command, but I couldn’t get the console . . . and the whole things crashes down.

I then found http://www.arsgeek.com/2008/01/15/how-to-fix-your-windows-mbr-with-an-ubuntu-livecd/ . I thought to myself, how perfect is that? I know that the ubuntu disk will run, and then I can perform the changes I need and away we go.

Some changes since the writing of my reference article. The ms-sys package is no longer in the repositories. If you go to their website you can download source and do a quick make, make-install.

After you have done that the rest is easy peazy. Once again, linux saves the day.

August 28, 2010

UTOSC 2010 Registration now open!

The Utah Open Source Conference 2010, held October 7-9, 2010 is excited to open registration for the conference.

Visit http://attend.utosc.com to register.

Discount codes are available in many places, including twitter and identi.ca (follow the user @utos).  We also provide promo codes to Local User Groups, our sponsors, exhibitors and UTOS core team members.

With over over 50 conference presentations and several events — including:

Ignite Salt Lake and LaunchUP — UTOSC 2010 has tons of exciting, educational and fun presentations, events and much, much more.

We are also looking for volunteers! If you are interested in volunteering at the Utah Open Source Conference 2010, please send an email to enlist@utos.org.

To see the presentations and activities at Utah Open Source Conference, visit http://utosc.com.

Get registered today! Visit http://attend.utosc.com.  See you in October!

August 26, 2010

Ramadan – Week Two

My first week of experiencing Ramadan is already documented, this is week two.

This week was the week that school started for fall semester at my local university. I’m a bit nervous being able to keep my energy high all day long after going from class to class at school, so it will be interesting to see how this plays out the last few weeks. Also, I’ve been very diligent on keeping up my pace to get through the Qur’an by 27 Ramadan. Some days are light reading, other days are heavier reading, but I’m still ahead of schedule, so that’s good should I have a day or two that I forget or can’t get to it.

By the end of this week, I’m half way through. I’ve now fasted more days consecutively in two weeks than I do in an entire year with my religion. My motivation is strong, and I’m sure I can finish. Also, my cold that I had the previous week is subsiding, so I have more strength and less pain going throughout the day.

Lastly, I’ve been shocked by the anti-Islam and anti-Muslim comments that I’ve received from people close to me or who I have a great deal of respect for, even if our political or philosophical views don’t align very well. I’ve heard comments calling Islam a religion of hate and a religion of terror. I’ve heard comments that Muhammad was a false prophet, and will likely spend his afterlife in Hell. I’ve heard comments that being around Muslims makes them feel uncomfortable for their own safety, because they could be terrorist moles. I’ve heard that the Qur’an endorses murder and terrorism. I’ve heard that Islam is totalitarian, communist, and the perfect religion to build an army of Satan. I’ve heard all sorts of despicable things about these people, and it makes me sick.

Of course, many of these comments are directed to the fact that an Islamic community center will be built 2 blocks away form Ground Zero, in New York City, New York. So, I guess my timing to participate in Ramadan, and raise awareness for their religion, even though I’m Christian myself, couldn’t have been better timed. However, the prejudiced and racist comments that I’ve endured, and the videos I’ve seen, have brought to my attention the naive, ignorant, and belligerent hate that people can have, of which I have never before seen. I grieve for the American people and their “holier than thou” ideals.

Anyway, here’s how my week went physically.

  • 8 Ramadan- The cold is progressing, but really, nothing to report here. I just have sinus congestion, headaches and a sore throat. Even though I shouldn’t be fasting while I’m sick, this cold isn’t bothering me enough to justify ending the fast. So, I’m sticking with it. At least until school starts back up again on 12 Ramadan.
  • 9 Ramadan- I went to an amusement park with my family today. We got there around 11:30 in the morning, and stayed until 11:00 at night. Temperature was around one hundred degrees Fahrenheit. So, by around 2:00 pm, I was physically exhausted and completely dehydrated. My energy was gone, I was weak and started to get dizzy. I took my health more seriously than the fast, and broke the fast for a couple quarts of water. After rehydrating, I was able to keep my energy level up the remainder of the day until sunset, and eat. The toughest part, was around 6:00 pm, there was a dinner for families supporting adoption (our daughter is adopted). They had sandwhiches, chips, drinks, and cookies. Even though I had broken the fast and had water, I was only doing it for my health, and not for breaking the fast, so I still felt like I was fasting. So, I refrained from eating what looked like a great dinner. At sunset, I finally broke the fast for ending the day, and had a burger, fries and drink.
  • 10 Ramadan- Went to another family reunion, and of course, there was a smorgos board of food- three picnic tables worth. Sloppy Joes, chips, Jello salad, pasta salad, brownies, cookies, juice, root beer, and on, and on, and on. And, of course, I can’t eat any of it. I told my wife that this is three very tempting and solid meals that I resisted eating during the month of Ramadan. I could have eaten very well the past couple of weeks, but I resisted.
  • 11 Ramadan- Today felt like a standard “Fast Sunday” that we have once per month in our religion, so it didn’t really feel any different. Wasn’t a hard day, wasn’t really an easy day either. However, I am 1/2 way through reading the Qur’an. I’m trying to keep the pace to finish by 27 Ramadan. I think I’m on target.
  • 12 Ramadan- First day of school at my local university, and I forgot to wear my topi. I really want to raise awareness for Islam, so I’m a bit upset that I didn’t put it on before leaving out the door. Also, I was a bit nervous at first that I would run out of energy quickly going from class to class, and I wouldn’t have the energy to carry me throughout the day, but I did just fine. I went to a local cafe for dinner.
  • 13 Ramadan- I only had an apple, banana and a glass of milk for the meal at sunrise. Needless to say, I was starving very early in the day, and I didn’t have much energy to carry me throughout the day. I quickly learned that was not a wise choice. :) My wife made parmigiana chicken for dinner with onions and carrots. It was very good..
  • 14 Ramadan- This time, I corrected my opening meal with some Grape Nuts (grains, oats, cracked wheat, high in fiber, etc) and yogurt, along with milk and orange juice. I had a much better time getting through the day. I had plenty of energy and didn’t really get hungry until about 8 hours later. Also, I went to the grocery store, and bought some wheat bread, peanut butter (crunchy, of course), strawberry jam and vitamin water for my late dinners at work before heading home. That worked well. Lastly, my cold is subsiding. Finally.
Alfresco: Permissions Web Scripts

A couple of months back I was asked to write a couple of web scripts to help one of our customers to be able to check and modify permissions for content/spaces in the Alfresco repository.  I’ve finally had the chance to spend sometime testing and now writing about them.

The core of the web scripts was quick to write.  The fun (more time consuming) part was working with exception handling in javascipt.  I know tons of fun right!  There are few different ways to use exception handling based on which version of Alfresco you are using.  The customer is on Enterprise 3.1 and I wanted to make sure that the web scripts also worked on the more current releases of Alfresco as well.  A change (re: addition) was made in Enterprise 3.2.1 and Community 3.3 to help simplify exception handeling.  I’ll talk about exception handling and these differences in a follow up post.  For now let’s talk about these new web scripts.

permissions GET

The first web script returns all of the permissions for a specified node.

The URL used is /alfresco/service/permissions/{store_type}/{store_id}/{id}

Where

store_type: The type of store you want to query, ex: workspace

store_id: The ID of the store you want to query, ex: SpacesStore

id: The UUID of the node, ex: aed218e8-df44-4865-84cd-0105252f4993

The above values are joined together to form the nodeRef.

If the node is not found a 404 error will be returned, any missing URI parameters will result in a 400 error and if you don’t have permission to view the node you will get a 401 error.

The web script will return a JSON object that looks like the following:

 { "permissions": [
"ALLOWED;user1;Coordinator",
"ALLOWED;user2;Coordinator"
] ,
"inherit": false }

The return object lists the permissions in a triplet for that node. The permissions triplet follow this format:

[ALLOWED|DENIED];[USERNAME|GROUPNAME];PERMISSION

It also returns a boolean value indicating if some permissions are inherited from the parent node.

The above example shows two permissions are assigned to the node: the Coordinator permission is given to user1 and user2 on this node. Permissions are not inherited from the parent node.

permissions POST

This web script enables you to modify the permissions for a given node

It is called through the same URL as the above web script but as a POST instead of a get: /alfresco/service/permissions/{store_type}/{store_id}/{id}

Again, if the node is not found a 404 error will be returned, any missing URI parameters will result in a 400 error and if you don’t have permission to modify the node, you will get a 401 error.

You must also pass a JSON object containing the permissions that are being changed, deleted or added.

{ permissions: [
"REMOVE;user3;All",
"REMOVE;user2;All",
"ADD;user4;Coordinator",
"ADD;GROUP_usergroup1;Consumer"
] ,
"inherit": false }

The above example uses the following triplet to define a permission

[ADD|REMOVE];[USERNAME|GROUPNAME];PERMISSION

Where the values are defined as:

ADD | REMOVE: Do you want to add or remove the permission for this user/group? Any other value passed will result in a 400 error.

USERNAME | GROUPNAME: The user or group you want the permission to be added or removed for. Group names must be prefixed by GROUP_. Unknown users or groups will result in a 400 error.

PERMISSION: The supported permissions options are defined in
org.alfresco.service.cmr.security.PermissionService or through custom extension to the permission model. Unknown permissions will result in a 400 error.

The object can also contain an optional inherit permission value to specifying if the permissions for this node should be inherited from the parent node. Without the inherit option, the current value for the node is maintained. Inherited permissions can not be removed from a node.

The return format is the same as the return format of the permissions GET web script above.

This web script is also transactional: any errors will result in the node being returned to the state before the call was made. (The exception handling in the controller was added for these conditions.)

These scripts can be installed as an AMP.  The code and AMPs are hosted in the alfresco-permissions-webscripts project on Google Code.  The code is available for either pre-3.2.1 (starting with 3.1) or 3.2.1 to 3.3.1.  These are all Enterprise releases numbers.  The web scripts have been tested against these releases.  There may not be any need to modify the web scripts for Community releases (except for the min and max version numbers in the module.properties file).  Pre community 3.3 should use the pre 3.2.1 release.  No community releases have been tested. (If you try these on a community releases, please comment either here or in the Google Code Project.)

In a follow up post, I’ll cover exception handling with JavaScript.

WordCamp 2010: This weekend at University of Utah

I’m attending, are you?

Sign up today and I’ll see you there.

Cheers,

Herlo

August 25, 2010

PHP ping and DNS lookup

here’s a handy utility script so you can check pings and DNS from a remote server though a web browser

<html>
<body>
<form action="ping.php">
IP address<input type="input" name="ipaddr" />
or
hostname<input type="input" name="host" />
<input type="submit" />
</form>
<?php
function ping($host) {
    exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
    return $res;
  }
 
if (isset($_REQUEST['ipaddr'])&&$_REQUEST['ipaddr']!='')
{
        if(preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$_REQUEST['ipaddr']))
        {
                echo("<pre>");print_r(ping($_REQUEST['ipaddr']));echo("</pre>");
        }
        else { echo("ip address not valid");}
}
if (isset($_REQUEST['host'])&&$_REQUEST['host']!='')
{
        if (preg_match('/^([a-z0-9][a-z0-9-]{0,62}\.)+([a-z]{2,4})$/',$_REQUEST['host']))
        {
                $result = dns_get_record($_REQUEST['host']);
                echo("<pre>");print_r($result);echo("</pre>");
        }
        else { echo("host name not valid");}
}
?>

August 24, 2010

CTO Breakfast this Thursday: The Once and Future Web
CTO Breakfast

The CTO Breakfast will happen this Thursday at 8am in the cafeteria at Novell's Provo Campus. As usual, we'll talk tech; so bring interesting topics you'd like to discuss.

Anyone interested in how information technology is used to build products or run companies. Despite it's name, you don't have to be a CTO to attend--just interested in technology, where it's headed, and the problems of starting and building a high-tech business in Utah.

There's a calendar of upcoming CTO Breakfast events if you'd like to subscribe.

At this CTO Breakfast, Sam will have a special demo of some cool ideas we've been working on at Kynetx that foreshadows the future Web and the role personal data can play. This will blow your mind.

Tags: cto breakfast utah events

Mono Accessibility 2.1 Released

We just released our first 2.x series update this week.  This release brings a 127 bug fixes.

Over the last several months a fair amount of attention has been paid to improving at-spi2 as well.  For those that don’t know what at-spi2 is its the next generation of Assistive Technology Service Provider Interface.  The new at-spi2 using dbus in an effort to remove corba and bonobo from the gnome stack.

A huge benefit of this work is that kde will be able to use it without pulling in a bunch of gnome dependencies allowing for a clean desktop independent accessibility infrastructure.

Some release details:

  • Improved compatibility with AT-SPI2, including fixes and performance.
  • More compatibility with Silverlight Accessibility for UIA Clients.
  • Caching improvements in UIA Client API.
  • Support for custom providers and client-side providers.

As well as where you can find the packages:

For more details – The UIA Team Blog

I Want to be a Network Engineer

For most of my information technology career I’ve been primarily in a desktop support role. While this has been rewarding in some aspects, I can’t help but want to move into a more advanced technical role. In recent years I’ve taken on more server administration responsibilities, but to me this is essentially the same as desktop support. You have a computer that runs applications that needs to be properly configured and maintained to preform its assigned task. Some people find this area of IT fun and challenging, I on the other hand find this mundane and unstimulating. I want to work in an area of IT that I find fun and exciting. I want to be a Network Engineer!

How I’m going to accomplish my goal

I believe the best way to accomplish my goal is to learn as much as I can about networking and to gain as much experience as possible. I know this sound cliche, but let’s face it this is the only way to accomplish my goal. I’ve recently begun studying for the CCNA certification, but I don’t plan on stopping there. I hope to one day become an expert in some aspect of the field of networking. Gaining experience is going to be a little more difficult, but fortunately I have a job that offers plenty of opportunity to learn and experiment with different routing and switching technologies. Also I hope to be able to gain some experience outside of work as well. One of the guys at work has been working the past couple of years on the SCinet committee for the annual International Conference for High Performance Computing, Networking, Storage and Analysis. I’m hoping he can put in a good word for me to be able to join the team next year. One of these days I would like to really cut my teeth in networking by working for the University’s NOC. From there the sky’s the limit.

August 22, 2010

hackUTOS2: Pictures tell the whole story!

Just yesterday, at TenX Networks, we held ‘hackUTOS2, the return of the hack’!  We had some really good hacking and fun.  Lot’s of peanuts, green frisbees and good food.

A very large thank you goes out to the gang at TenX Networks for making the space available and providing lunch and drinks.

So here’s the pictures from the event, held on August 21, 2010:

Plans for hackUTOS3 are targeted for November/December 2010.  If you know of a venue or wish to help run an implementation of hackUTOS in your area, please let us know with a comment!

Cheers,

Clint

August 20, 2010

First Month on the Job – A Retrospective

It’s been just over a month since I started as the new Fedora Project Leader. I’m new to Red Hat as well — so in some way, it feels like I’m starting at two new jobs at the same time. Since so many people have asked me how things are going, I thought I’d share a bit about my thoughts so far.

My first experience as the new FPL was to spend two days in Raleigh, North Carolina at the Red Hat offices for new employee orientation.  Besides the normal busy work of filling out forms and learning about company policies, I got to spend some time meeting key individuals and teams within Red Hat.  I walked away from the meetings thoroughly convinced that Red Hat has a good grasp on the “open source way”, and really tries hard to help new employees grasp that.  That’s not to say there aren’t disagreements about the details, but it’s awfully nice to work for a company that values outside collaboration.  (I’ve been blessed to work for two such companies in the past few years — lucky me!)

After my two days in Raleigh, I immediately flew to Chile for the FUDCon Santiago conference.  You can read back through my blog posts for the details.  In short, it was wonderful to meet so many dedicated Fedora collaborators in Latin America.  There’s obviously lots of room for improvement on how the Fedora leaders communicate and interact with community groups around the world, but I hope we’re on the right track.  If nothing else, I hope my trip to Chile helped to strengthen the trust between the LATAM collaborators and the Fedora leaders.

After my trip to Chile, I went to the FISL conference in Porto Alegre, Brazil.  We had a fantastic booth and lots of excitement around Fedora.  I gave a presentation on the relationship between Fedora and Red Hat, and showed examples of how Fedora works with upstream communities.  Again, you can read my previous blog posts for more details.

Since I’ve returned from Brazil, I’ve been working hard to learn my way around the FPL position, and start building working relationships inside of Red Hat.  Paul Frields (the former FPL) has done a great job of mentoring me as I get up to speed in all my responsibilities, and a lot of other great people in the community have helped me as well.  I have been very pleased to find that Red Hat really honors Fedora as a stand-alone community and project. I can assure you there have been no secret directives or special things I’ve been told I must make Fedora do. (Before working for Red Hat, I too heard the urban legends about Red Hat is some kind of puppet master pulling all the strings that make Fedora work.) In short, Red Hat has placed a lot of trust in Fedora (and specifically in the FPL), but understands that it’s important for Fedora to be organic in the way it that it evolves, and also understands that you can’t fake that.

Some of the most common questions I get asked are “What’s the first thing you’re going to change in Fedora?” and “What’s your grand vision for Fedora?”, and my response it usually “Can I get back to you on that?”  It’s not that I’m trying to dodge the question — it’s simply that I need a bit more time to listen to the Fedora community, articulate my vision, get some buy-in so that I’m not championing for things that nobody else believes in, and so forth.  If you have items you think I should address, I’m happy to hear your input.  In the meantime, let me leave you with this little snippet I wrote up a while ago.  It’s still a bit rough around the edges, but I think it shows a bit of my vision of Fedora:

I believe in a Fedora Project where technology enthusiasts work together in a collaborative manner to:

  • develop, integrate, and share free and open source software, and be a good example to others to highlight the advantages of the free/open-source development model
  • allow people to communicate easily with the project, and create a friendly atmosphere where collaboration is encouraged and ideas are valued
  • provide the technical tools for people to work in an easy and efficient manner
  • be a creative space for the development of future technologies
  • build meaningful and productive relationships with upstream projects and downstream distributions and end users

I plan to have a more articulate version of my vision ready to present at FUDCon Zurich in September.

hackUTOS 2.0 is just one day away

hackUTOS 2.0 is this Saturday, August 21, 2010 from 10am to 4pm (9am
for early birds and 5pm for late birds) and is sponsored and hosted by
TenX Networks.

If you don’t already know, hackUTOS isn’t all about programming.

  • It’s about working on a project that you otherwise may not have time.
  • It’s about learning a new technology by joining others
  • It’s about networking with other smart people who like to create stuff
  • It’s about junk food during up to 8 hours of hacking on your favorite stuff!
  • It’s about being able to sit in a corner and focus on your project without interruption
  • It’s about providing the best open source software hacking space

Some of the projects that came out of last hackUTOS (1.0):

  • ConMan – an ongoing project for conference management
  • Metasploit – penetration testing applicationWheresmysoda.com — a site dedicated to providing locations or best
  • price of your favorite soda

TenX networks has some awesome space out by the airport.  They’ve been out there for a few years with a huge space!  The gang there is
really, really excited to meet everyone who will be at hackUTOS 2.0.

Come on down this Saturday and hang out with other geeks.  We’ll provide you space to hack, snacks, lunch and plenty of projects to
come and learn!

Saturday, August 21, 10am-4pm (early bird and late bird is open from 9-5)
TenX Networks (map)
4855 Wiley Post Way
Salt Lake City, UT 84116

See you all there!

Clint

Ramadan – Week One

I mentioned that I wanted to participate in Ramadan, even though I’m Mormon. This is my first week of doing so.

So, the first week of Ramadan has been a good one for me. There have been times when I have struggled with fasting, and there have been times when it wasn’t such a big deal. Ramadan started August 12th for North America. The following Saturday, I decided to attend the Khadeeja Islamic Center in West Valley and listen to Tarawih. It was an awesome event to participate in, even if I don’t understand Arabic, and didn’t understand some of the motions that they were doing at the time. It started at 22:30 and went until roughly 00:15. Here’s more of a detailed rundown of what I have experienced during my first week:

  • 1 Ramadan- I prepared well by eating a good breakfast at sunrise. It was full of fruit and dairy high in proteins and fats. Had a little carbohydrates as well. Didn’t really start getting hungry until about 8 hours later, which I thought was pretty good. Because I’m used to fasting for 24 hours on the first Sunday of every month, this wasn’t a big deal. I was a bit nervous about getting the shakes, as I usually get them when I fast. At sunset, I had a balanced meal with grains, vegetables and more fruit.
  • 2 Ramadan- I prepared just as well this morning, by eating a balanced breakfast, full of proteins and fats to help carry me through the day. However, I got hungry a bit earlier than the day before. But, the hunger pains subsided early, and I was fine, although without energy, for the rest of the day. Thanks to my wife, I again had a good mean at sunset that balanced what I didn’t eat that morning.
  • 3 Ramadan- This has been the hardest day for me. First, I didn’t get a full night’s rest. I only slept about 4 hours, as I didn’t retire early the night before. Then, I didn’t eat a very balanced breakfast, and as a result, got hungry much earlier than the previous two days. As a result, I was very tempted to break my fast, and eat early. I held on, although I was completely drained of energy by the end of the day. Part of the problem was going to a family reunion for my wife’s side of the family, where several tables of food was laid out. I resisted and held true to fast. By sunset, I was more eager to have a good meal than previous days. I never did get the shakes
  • 4 Ramadan- I must have been close to someone with a cold, because I woke up with a sore throat, a runny nose, and a pounding headache. I debated taking cold medicine. Would that break the fast? I held on as long as I could, but I gave in and took two DayQuil pills to relieve the pressure, pains and general crap that you deal with when having the common cold. I also visited my mother, but forgot to take a meal with me for sunset. So I ate chocolate cake and cookies to tide me over until I could get home and have roast, potatoes and carrots.
  • 5 Ramadan- I debating quitting this day. I thought to myself that I’ve gone further than many people would in their entire lives. The temptation from Satan to break the fast and eat was very strong. Further, I can tell that by me fasting, I’m putting my family at a bit of odds, as they eat without me, and I without them. Fortunately, my wife told me she supports me in my decision to keep going, and helped me to be strong. I remade my committment to hold true to the fast for the entire month, and set temptation aside.
  • 6 Ramadan- This day was probably the easiest during the week. I never really got hungry, at least not where I really noticed it. Nothing eventful happened today. Although, I did have to mow the lawn and trim the weeds before sunset. I did notice that I didn’t have a lot of energy, so it was a bit difficult to keep the physical labor going, knowing that it had to be done.
  • 7 Ramadan- Another hard day physically for me fasting. I definitely have a cold, so I make sure to take medicine in the morning before starting the fast. Then when breaking the fast I night, I take more cold medicine. Hopefully, I can kick it. However, despite not being in top shape, I met a lady from Egypt who was Muslim. She’s attending the University of Utah this fall to study comparative literature. She just arrived last Saturday, and was getting her final paperwork ready for the fall semester. It was good to talk with her. I’ve read more than 1/3 of the Qur’an- well ahead of schedule to finish by 27 Ramadan. So far this week, I haven’t gotten the shakes.
Identica’s Unwritten Rules

I guess now that I’ve published this post, the rules are written down, even if they are still unofficial. However, with that said, I’d like to address a few things with the popular microblogging service Identi.ca.

I’ve been actively involved with the service since July 2, 2008, which means I’ve been on the service now for three years. In my opinion, it has trumped Twitter by leaps and bounds in terms of features. But, with these features has come uncharted territory, much of which is getting heavily abused. After being involved with the service as much as I have, I’d like to address some points that I would think should be common etiquette when using Identi.ca. All of these items have to do with group tags, or the ability to send messages to a group that you belong to using the exclamation point “!”.

DON’TS

  1. Don’t use group tags on “retweets/redents”. When “retweeting/redenting”, strip any and all group tags from the post, and replace them with the hashtag “#”. Nothing is more annoying than seeing the same post posted to the group six, seven or eight times. Once is enough. Further, navigating to http://identi.ca/tag/foo will show all posts about “foo”, both hashtags and group tags.
  2. Don’t post off-topic with group tags. When sending a message to a group, make sure it meets the groups rules for staying on topic. Don’t abuse the tag, because you think it’s semi-related to the topic at hand. In other words, don’t send messages to the Linux group and the Arch Linux group, when the post is entirely about Arch Linux. Chances are high most people in the Arch Linux group are in the Linux group as well.
  3. Don’t abuse the number of group tags. We all know that GNU and Linux are married at the hip, but that doesn’t mean every post to the Linux group needs to go to the GNU group as well. When you start adding three, four and five group tags to your post, you’re just spamming as many groups as you can, to reach the widest audience, when the fact remains that many people are likely already in most of the groups your spamming. Try to keep your group tags to one or two. Any more than that is just spam, it’s annoying and I for one will block you, especially if you’re a repeat offender.
  4. Don’t use the group tag if the person you’re in conversation with is not using it. Use the hashtag “#” instead. The problem with only one party using the group tag, is half of the conversation is available to the group, and if the conversation is highly active, it’s considered spam. If a reply thread has been carrying on during a discussion, people can navigate to the web interface, click the “in context” link and read the relevant discussion. There is no need to keep sending your replies to the group. However, if everyone in the discussion is using the group tag, then feel free to keep it going.
  5. Don’t use the group tag and the hashtag for the same word in a single post. You only need to use the tag once. Using the group tag again or using a hashtag on the some word as the group tag doesn’t provide any extra functionality. When people navigate their browsers to http://identi.ca/tag/foo, or click on the hashtag “#foo”, they will see “foo” group tags and hashtags. So, having it once in your post will reveal it to that query. Any additional tagging on the same word in the same post is just silly.

DOS

  1. Do use group tags to post relevant questions, stories, links or HOWTOS from the Internet. It’s always great to see a good article that I didn’t have in my RSS feeds that someone posts, and is usually worth of a “retweet/redent”.
  2. Do use group tags interweaved with your post. In other words, while appending group tags at the end of your post is fine, using them as words in your post is even better. Same can be said for hashtags. Make them work with you in the post, rather than anchors at the end.
  3. Do use the group tag sparingly. While you might be a member of the “listening” group, and your posts are strictly on topic, sending listening updates every 5 minutes might start to piss people off, and you could get blocked, and/or removed from the group.
  4. Do use the recycle unicode symbol for “retweets/redents”. Although nothing to do with group tags per se, lots of posts to group tags are reposted. Using “RT” or “RD” is sooooo 2006 Twitter. Using U+2672 ♲, U+267A ♺ and U+267B ♻ seem to be most common. Plus, it saves you a character in your 140 character limit.

I’m certainly no expert on microblogging, nor am I any authority on Identi.ca. However, I have noticed that when these unwritten rules are violated, it usually ends up in pissed off people and a less-than-pleasant experience.

hackUTOS 2.0: Food, what to eat?

We’re all set to HACK at TenX Networks this Saturday for hackUTOS 2.0.  If you haven’t been before, one of the nice things we do is provide a nice lunch.  This time it’s deli sandwiches for everyone who’s been hacking.  We’ll also provide drinks and snacks throughout the day.

On Friday, I’ll be heading out to the grocery store to pick up snacks, drinks and the like for everyone to eat while they hack.  I’ll likely pick up some normal hacking event snacks, caffeine, sugar, chips and the like, but what kind of snacks would you like at #hackUTOS – A Code Festival?

Take a moment to comment and list a few things you’d like to EAT while you hack :)

DON”T FORGET TO ADD YOUR PROJECT to the projects page.

Cheers,

Clint

August 19, 2010

Zend Framework Quickstart

For our August meeting, Utahcon will present a quickstart to the Zend Framework. Every PHP developer should have a firm grasp on a framework as they make light work of heavy projects. The Zend Framework is a great example of what a framework should be; both light and flexible while offering a good structure and strict MVC environment. This presentation will be a walk through and Q&A on the Zend Framework Quickstart, as well as a quick lesson on using Zend_Captcha.

Utahcon is a world renowned PHP developer having worked for companies like Overstock.com, SOS Staffing, GrabTakeout.com, Code Greene and more! Utahcon has been developing in PHP for over 10 years, and still considers himself to be a noob. Join us for a lot of fun and entertainment (possibly at Utahcon’s expense).

Come early for good seatings. We expect the afterparty to be at Applebees at the Gateway again, unless there’s a majority in favor of switching it up.

planet larry needs a new home

Alright, so in my quest to move forward with my life, I'm going to be discarding certain projects that I really haven't been making a priority.  Planet Larry is one of those.  I've always thought that the idea of a planet feed for a Linux distribution's user base is a good one, but it's just never become a priority for me and so it's suffered where it could have really taken off and done well.  I'm hoping the next owner will be a better steward.

So, if you are sincerely interested in running it, shoot me an email at beandog at gentoo dot org and I'll let you know everything that's involved (hint: not much).

Edit: I should add, this doesn't require being a Gentoo developer.  The Planet was never an officially sanctioned Gentoo project, and it was never intended to be.  Anyone with the ganas can run it. :)

Edit: Thanks to all the people who have offered to help.  I'll say the same thing I said to all of them: I'm going to wait a few more days to see who else steps up and has ideas for the site.  Also, no, I haven't decided what to do with Znurt for now.  I don't have any plans of giving up ownership yet.

Resource Website

The other day I had an HP laptop with some problems. I sent it back, using their HP care stuff. I was pleasantly surprised with how fast they shipped everything, at their expence, and got everything back to me. But as I started the machine they didn’t have the wireless driver installed. Using their website they said that I had to have a broadcom card, and so I installed their provided drivers. Unfortunately, it wasn’t a broadcom card. They were wrong. All I had was the Vendor ID and Hardware ID.

After some searching I found http://www.pcidatabase.com/ . This website can just search by Vendor ID or Hardware ID and give you the information that you need to get stuff fixed. I have used it a couple of times and found it very helpful.

Cloning Debian System Packages

Just over the past couple of weeks, I have done a few Debian GNU/Linux installations for various people, including myself. I am a minimalist. I like to have installed on my system only exactly what I specify. However, I’m also a realist, and know that Debian has likely chosen sane defaults in the installer when choosing whether or not to install the Desktop or Laptop selections. For servers, I do only a base install, then install OpenSSH, and whatever else is necessary for the server.

So, when installing on a desktop or laptop, I’m slightly annoyed by the default package sets that are installed. I understand why they’re chosen, and I’m definitely not arguing with the decisions made, however, some of the packages just aren’t for me. So, on my wiki, I’ve been documenting what should be installed and removed on every Debian GNU/Linux installation I make. As soon as the install finishes, I’ll login to the system, pull up my wiki, and copy and paste the following commands as root (trying to keep the horizontal scrolling in your browser to a minimum):

# aptitude install abiword apt-file checkconfig chromium-browser clusterssh deborphan flashplugin-nonfree git-core \
gmrun gnumeric htop network-manager openbox openssh-server python-docutils rst2pdf screen tango-icon-theme \
vim vim-gnome xfce4 xfce4-icon-theme xfce4-terminal xscreensaver-data-extra zsh zsh-doc
# aptitude purge dasher gnome-accessibility gnome-accessibility-themes gnome-mag gnome-orca gok nano \
openoffice.org{,-base,-base-core,-calc,-common,-core,-draw,-emailmerge,-evolution,-filter-binfilter,-filter-mobiledev} \
openoffice.org{-gcj,-gnome,-gtk,-help-en-us,-impress,-java-common,-math,-officebean,-style-galaxy,-style-tango,-thesaurus-en-us,-writer} \
xserver-xorg-input-{all,synaptics,wacom} xserver-xorg-video-{all,apm,ark,ati,chips,cirrus,fbdev,i128,i740,intel,mach64,mga,neomagic} \
xserver-xorg-video-{noveau,nv,openchrome,r128,radeon,radeonhd,rendition,s3,s3virge,savage,siliconmotion,sis,sisusb,tdfx,trident,tseng,v4l,voodoo}

First, I will identify which xserver-xorg-video driver I’ll need for the hardware I’m installing to, and remove that from the purge, even though the VESA driver always works just fine for me, as I’m certainly no gamer, and it’s never let me down in my desire to power any video card at any resolution and frequency I’ve encountered. I’ll also leave the Synaptics driver in place when installing to a laptop.

Second, I realize that this isn’t for everybody. Most people won’t care about having OpenOffice.org or the GNOME accessibility packages installed. I don’t need them, they free up hard drive space for me, and when running updates, downloads are much faster. So, this works for me.

Lastly, I have a hard time deciding between using GNOME and Openbox for my default desktop. I like the GDM for logging in, and I like the power management features that GNOME brings to the table. However, I like the minimalist approach to Openbox, and its configuration capabilities. I login to both from time-to-time, just in case you noticed that I’m installing Openbox, but also removing GNOME packages that would only come from a default GNOME install.

I’ve gotten tired of executing this on every install, and wondered if there was something more I could do. So, I mentioned my frustration on Identi.ca, not really looking for a reply, but one came through at any event (thread here). The reply was to use DPKG to get a list of the software that is installed when I’m finished with my install and purge, then use that list during the next install.

So, how to do this? Well, after you have your system installed the way you want, with all the packages installed and purged to suit your needs, run the following command:

$ dpkg --get-selections \* > packages.txt

You now have a text file with all the packages that are installed on your system. So, when doing a fresh Debian install at a later date, it’s trivial to get these packages installed, so I don’t have to do the install and purge copy/paste that I was doing before. After installing only the base, and nothing more, login to the system, copy the packages.txt file you created via SCP or some other method to the filesystem, and run the following commands (as root):

# apt-get update
# dpkg --set-selections  packages.txt
# apt-get -u dselect-upgrade

You now have your system installed with exactly the packages you want installed, and nothing more. Not only that, but the latest version as well. No need to update after you login (Windows, you could learn something here).

To me, this is beautiful. This is a simplistic way to clone a Debian system, without using utilities like Norton Ghost or CloneZilla, either though both have their place in administration. I just love the simplicity and elegance of this. To me, this makes administration fun. When I can solve simple problems with core system tools, I'm a happy admin.

Long live Debian.

back to school

So, I decided to stop whining about how I never like any of my jobs, and actually do something about it.  I'm going back to school!  Woo hoo!

The short version of the story is that I never wanted to get into IT as a job market, it just kinda happened, and I stayed here longer than I should have.  My real passion in life is doing service, working with people, helping them out, actually making a change in the world.  I don't really feel like I'm getting that right now.

I'm going back to school this fall semester, to my old college now turned univeristy, Utah Valley University in Orem, Utah.  Wootsie. :)   I love their mascot, too. I  just think it looks cool.

I'm going to be studying psychology, and maybe sociology as well.  I haven't decided yet.  For now, I'm only certain about a few things: I am tired of working in IT, I love psychology, and I want to do something else.

What's been happening over a number of years, though, is I have been pretty much indifferent to the fact that I am unhappy in my career.  I enjoy working with computers, to a degree .. I find them interesting all the things you can do with them, and I get excited about some projects (mostly mine).  But the stamina is just not there all the time, and it's frequently hard for me to get through a day's work.  I'm just not that into it.

For years I've been telling myself I want to do something different, and as a result, I've jumped from job to job which allows me to pick up another different skill set, and make things interesting ... kind of rekindle the passion again.  What I was really excited about though, was the chance to learn new technologies and ways of doing stuff in a different job.  And I've been really lucky in that regard.  Each one of my jobs has been very different from the past one, and so I've gotten a good mix of exposure to lots of different stuff.  I am definitely a jack of all trades.

What got me started thinking about school again, though, was that I finally realized the other week that I spend all my free time learning about two things: theology and psychology.  And I spend almost all my free time doing community service as well.  I believe that the field you should follow is probably indicated by the areas of study your mind drifts to when you have nothing else to focus on.  So, that's pretty much exactly what I'm doing.

Career-wise, I have no idea what I want to do ... and I'm not bothered by that in the least, nor am I interested in finding out.  Again, there's a few things I'm certain about, and one is that I want to get back into school.  I've always been fascinated by psychology, and every class I've taken in it so far, I've aced with very little effort.  For me, in college, that actually means something.  Comparatively, I think I've flunked Math 090 five times.

I am really excited to start school.  I'm going to go slowly, so I can adapt to the transition.  If I create too heavy a load, it will tax my enthusiasm and make me wanna quit (there's a lot more to that, suffice it to say, I know myself pretty well).  Next semester, I dunno what I'm gonna do.  What I would love to do is work part-time and go to school and take more credits, but with my financial situation, that probably ain't gonna happen.  That's okay though, I'm happy to make any progress at the moment.

The other thing I'm excited about is that I've signed up for an LDS Institute class as well, at the University of Utah.  I live in Salt Lake, so that's about a ten-minute drive from where I live, if that.  I signed up for an early morning class that covers just the Book of Isaiah.  I'm stoked.

As far as my computer-related hobbies go, I've decided I'm going to start cutting a lot of them out of my life, very quickly.  I've already decided to not pursue any new projects, and I'm going to cut off some I'm already maintaining and hand them over to other people ... I'll be writing more about some of that soon.  If I'm gonna be studying and putting myself back on the right path, I don't want too much stuff holding me back anymore.  A lot of the stuff has been projects that I've been wanting to get to for a long time anyway, but lost interest in, so they won't really come as a big loss for me.

Anyway, that's it.  I actually registered for school weeks ago, but I didn't wanna say anything about it until I new it was a sure thing.  That is the case now. :)   I can't wait.  I've gone down to campus a few times already, and everytime I go there, I get so recharged about life in general .. at the possibility of turning things around and heading in a new direction, one that I've wanted to pursue for years.  Good times, I tell ya. :)

August 18, 2010

Upcoming FUDCons

One of the most enjoyable parts of my job as Fedora Project Leader is to get out and interact with the people that make Fedora great.  I’m very much looking forward to rubbing shoulders with Fedora users and developers at one of the upcoming FUDCon events.  The first is FUDCon Zurich which is scheduled for September 17th, 18th, and 19th at the campus of the Swiss Federal Institute of Technology Zurich. (If you’re short on funds, you can even get free sleeping accommodations in a fallout shelter underneath the campus.)

The next FUDCon event in North America is scheduled for January 29-31 in Tempe, Arizona.

As always, both events are free of charge and open to all interested parties.  Please pre-register now if you plan to attend, so that we can accurately plan for the number of participants at each event.  Also keep in mind that all of our FUDCon locations are being chosen based on a bidding process.  If you’d like a FUDCon event in your area, please check out the Fedora wiki page on the FUDCon bidding process, and submit a proposal.  We’ve already received one proposal for FUDCon LATAM 2011, and hope to get more over the new few weeks.

If you’re coming to either FUDCon Zurich or FUDCon Tempe, I hope to have the chance to meet you and listen to your ideas.

My Experience Jailbreaking the iPad, And Why I Restored

Yesterday, I thought I would try an experiment: jailbreaking my iPad.  I had everything backed up, so I wasn’t worried about losing any data, and I was curious to see if the benefits were as good as all that acclaim jailbreaking propose.  So, I thought I would give it a try. 

I hadn’t upgraded to iOS 3.2.2, so I used jailbreakme.com to start the jailbreaking process.  It went flawlessly, and within a few minutes I was able to use the Cydia to start installing apps.  That went great, and I can understand why so many people find it so easy to jailbreak their iOS device.

So what worked well?  WinterBoard, which allows for some awesome visual effects.  Particularly I liked the ability to wash out the app icons, so while they were still there, they were not so distracting from the wallpaper.  That was awesome, and I would love to see a feature like that added to the iOS sometime in the future natively. 

Categories worked well too, as the iPad does not yet have the love of iOS 4.0, and lacks this ability.  You can also add more then 12 items to a folder, which is nice.  Of course, for it to actually work in shrinking the apps displayed, you need to reboot the device.  I’m not sure I like that, as it feels yet again like a Windows machine, and not anything like the Mac or Linux computers with which I generally work. 

Now comes the clunky bits: installing apps from Cydia.  Finding them was slightly frustrating, as searches were limited to the name of the app, and not what the app does.  And for all the intents of the developers to have cool and sexy names for their apps, they just don’t readily explain what the app actually does.  So, I had to resort to either scrolling through apps by category (which becomes unwieldy the more apps that get developed), or use the Internet. 

Once I find the app and choose to install it, It takes me to a "terminal" display, where it shows the installation, and then I generally have to restart either SpringBoard, or the device itself.  Man, it was like working on a Windows machine all over again, which is what moving to a Mac was all about. 

Then there was the instability of some of the apps, crucial apps that I wanted to have running but couldn’t, because they crashed my iPad.  I’ve NEVER crashed my iPad before, and yet jailbreaking managed to do it. 

So, are there benefits to jailbreaking an iOS device?  Sure!  Categories and Winterboard were great.  You can also install Google Voice, and a number of other apps that you can’t get in the App Store through Apple.  But is it worth it?  I found the device less reliable once it was jailbroken, and while I’m sure a little more tweaking could have fixed the reliability, I don’t have the time (or rather, I’m unwilling to devote the time to something that should just work). 

So, I reverted my iPad back and upgraded to iOS 3.2.2, losing all the jailbreak changes I made.  For me, at least, I’m OK using the standard Apple release of the iOS.  For those of you who jailbreak, I salute you for your tenacity and devotion to tinkering, but it’s just not for me.  For those of you who are perhaps less technically inclined or have more important things on your plate than trying to tweak a hack, it may not be for you. 

August 17, 2010

UTOSC 2010: Keynote speaker, Jared Smith

Jared Smith, a recognized expert in the field of Voice-over IP (VoIP) and currently the project leader for the Fedora Project, has been named keynote speaker for the Utah Open Source Conference in October.

One of the nation’s rising open source software conferences, UTOSC will be held from Oct. 7-9 at the Miller campus of Salt Lake Community College.

“We are fortunate to have a speaker of Jared Smith’s caliber address this year’s conference,” said Clint Savage, the chief executive of the Utah Open Source Foundation, which hosts the conference. “In fact, Smith leads an outstanding list of speakers who are coming to Salt Lake City for UTOSC.”

Smith will be speaking on ‘Swimming upstream: How Linux distributions help the entire community‘.

Smith, who has held a number of roles in his career including programmer and system administrator, is a published author and holds a B.S. Degree in Computer Engineering from Utah State University.

As project leader for the Fedora Project, Smith directs the operations of the Red Hat-based Linux distribution that is free and available to the public.

Nearly 60 presentations will be given in the three-day UTOSC event, and UTOSC has also released the list of presentations here: http://2010.utosc.com/presentation/schedule/

For more information on UTOSC, visit http://2010.utosc.com

MEDIA
For more information on the event, contact
Larry Cafiero / larry.cafiero@gmail.com / 831.335.7303

August 16, 2010

The Kynetx Rule Language: The First Internet Application Platform
Kynetx Logo

A while ago, someone asked, in a comment, "What's KRL?" I realized that while I had lots of snippets that explained KRL and what it could do, there's was no good place to point people who ask that question. Consequently, I put together a white paper that explains, in some technical detail, what KRL is, how it operates, and why we think it's so damn cool. The paper is The Kynetx Rule Language - The First Internet Application Platform (PDF). If that title doesn't pique your interest, maybe a few paragraphs from the intro can:

Imagine walking into Borders and having your smartphone alert you to the fact that the book you put on your Amazon wish list this morning is available right now and on sale. As another example, think about an application that gathers relevant articles from your RSS and Twitter feeds based on searches you've performed or that are related to an email you received from a friend today.

These examples show the power that can be achieved when applications can work across multiple domains and multiple protocols at the same time. We think of this as "programming the Internet" and the results are much more impressive than those achieved by building a mere Web site. There's no reason that clients in different domains, like your smartphone and Web browser, shouldn't be cooperating under your guidance to help you get things done. But to make that happen, we need new architectures and programming paradigms.

One way of viewing the Internet is as a big reactive system. When you browse, tweet, email, and so on the Internet reacts to what you're doing, or so it seems. Thus, programming the Internet requires reacting to user activities. Existing Web programs do this in a fairly ad hoc manner because most Web frameworks provide little support for managing program data and control flow across individual user interactions.

This document describes a new programming language, the Kynetx Rule Language or KRL, and the system that runs it, the Kynetx Network Service or KNS. KRL is designed for programming the Internet and makes it easy for developers to create applications, or apps, that behave like the scenarios imagined above. KRL is a programming language for building reactive systems that respond to complex scenarios across multiple Internet protocols, domains, clients, and devices.

When we invented KRL our goal was to build notational support for the hard things that Web programmers face everyday--especially on the client-side. Our mantra is "let the machine take care of the details." Linguistic expression and abstraction give programmers the tools to do amazing things without making heroic efforts.

After going over the benefits of using KRL, the paper contains a description of the primary components of what entails a new programming model for applications that work across the Internet in behalf of the user--as opposed to the typical Web program that works on a single site on behalf of the site owner. The model and services I describe form a platform for creating Internet applications. In the paper I explore in some detail the primary concepts in this new model: events and rules. I also briefly describe the architecture of the system of services that support this model. The document ends with three examples showing applications built to take advantage of this model.

The paper lays out a fairly audacious vision by describing a system for creating applications that are completely unlike your typical Web application. You can be part of that by trying out KRL today using a free account.

Tags: krl kynetx kns

BASH script to check URL for changes

Here’s a quick script I coded this morning to check a URL/URLs for changes and alert you

#!/bin/bash
HASHFILE="hashes.txt"
URLFILE="urls.txt"
EMAILADDRESS="name@example.com"
if [ -z "$1" ]
then
        echo "Usage: `basename $0` [TRAIN|CHECK]"
        echo "Create a file called urls.txt with URLS to check"
        exit 1
fi
if [[ "${1}" == "CHECK" ]]
then
        echo "CHECKING"
        if [ -f $HASHFILE ]
        then
                echo "Hash file exists. Parsing"
                while read line; do
                        URL=`echo $line |awk '{print $1}'`
                        HASH=`echo $line |awk '{print $2}'`
                        echo "Checking $URL"
                        wget $URL >& /dev/null
                        FILENAME=`basename $URL`
                        HASHVALUE=`md5sum $FILENAME|awk '{print $1}'`
                        if [[ "${HASHVALUE}" == "${HASH}" ]]; then
                                echo "NOTICE: hasn't changed"
                        else
                                echo "ALERT: [$URL] CHANGED from [$HASH] to [$HASHVALUE]"
                                PREFIX="BLOCK_"
                                BLOCKFILE=$PREFIX$FILENAME
                                if [ -f $BLOCKFILE ]
                                then
                                        echo "BLOCK FILE EXISTS. NOT EMAILING"
                                else
                                        echo "NO BLOCK FILE, EMAILING ALERT. WRITING BLOCK FILE"
                                        mail -s "ALERT: [$URL] CHANGED from [$HASH] to [$HASHVALUE]" $EMAILADDRESS </dev/null
                                        echo "$URL changed. alerted" > $BLOCKFILE
                                fi
                        fi
                        rm -f $FILENAME
                done < $HASHFILE
        else
                echo "ERROR: no hash file exists. Exiting"
                exit 1
        fi
else
        echo "TRAINING"
        if [ -f $URLFILE ]
        then
                echo "URL file exists. Parsing"
                rm -f $HASHFILE
                touch $HASHFILE
                while read line; do
                        wget $line >& /dev/null
                        FILENAME=`basename $line`
                        HASHVALUE=`md5sum $FILENAME|awk '{print $1}'`
                        echo "$line $HASHVALUE" >> $HASHFILE
                        echo "added $line to hash file"
                          rm -f $FILENAME
                done < $URLFILE
        else
                echo "ERROR: no url file exists. Exiting"
                exit 1
        fi
fi
Erin’s Whole Wheat Sandwich Bread

My adorable wife is very picky about her bread. It has to be 100% whole wheat, and the right shape for sandwiches. I'm kinda picky too, it has to taste good, have a light and soft crumb, be fun to make, and be able to wrap around my work schedule.

It's easy to make bread that satisfies some of those constraints, but it's been a long process to get everything just right. But get it right I have, and now I'm blogging it.

First, the recipe:

20 oz whole wheat flour
10 g salt

8 oz milk
7 oz water
2 oz sourdough culture
tablespoon honey
tablespoon oil or butter

Mix
Proof covered for an hour
Stretch and fold twice
Proof covered for another hour or two, until it begins to rise
Retard in the fridge overnight or up to a couple days
Stretch and fold, let rest 10 minutes
Shape (8½"x4½" pan) and let rise about 4–8 hours (depending on temperature and culture)
Bake at 375°F to an internal temperature of about 200° (adjust for altitude)

This is 75% hydration—the dough should be soft and sticky when first mixed. I could explain in detail what each of these loaded terms means (e.g. stretch and fold), but most of you are sick of hearing me prattle on about them and the rest of you can ask in the comments or search the all-knowing internet. There are helpful videos for S&F and shaping. Google for the poke test if you're not sure how to know when it's done rising.

It's sourdough, but it's not sour. It does have excellent flavor, but if you are put off by really sour bread don't worry (and if you want it, this isn't the recipe for you). It's not as light as white bread, but it is soft and not dense as whole wheat bread notoriously can be.

WARNING: Science Content!

The 8½x4½ pan size is nominally a "1 lb loaf" pan. This either means 1 lb of dough, or 1 lb of cooked bread (which means roughly 3 oz more than 1 lb of dough). Both are a far cry from the 2+ lb of dough we use here. I don't have a good explanation for this, and it makes me kind of uneasy. But this is the amount of dough it takes to get the loft my wife wants with whole wheat. Probably less would be required for white bread; the fact is whole wheat just doesn't rise as high as white bread—but don't ever let anyone tell you it must be dense or won't rise to lofty heights. Another factor is probably that my wife really likes a high mushrooming crown, and I get the impression that the professional bakers calling this pan a 1 lb loaf pan are satisfied with a squarish top loaf that crowns not far above the top of the pan. Maybe? Please enlighten me.

We grind our own flour, from white wheat. Red wheat and store bought is of course fine, it's a matter of preference. You may adjust the liquid as needed but 75% is going to be a good start for any whole wheat dough. The long life of the dough (thanks to the overnight retard and sourdough pace) gives the enzymes plenty of time to work, which gives a much more interesting and sweeter taste vs the harsh bitter whole wheat taste we all love to hate. You really will be surprised at how good it tastes.

One of the keys to whole wheat bread is to make sure it's kneaded well enough to develop the gluten. The long rise and wet dough means we don't have to do much work to achieve that (no-knead style), but if you want to throw it in your mixer and do the windowpane test, I doubt it would hurt anything.

The short initial rise (2 hours is a short time for sourdough) gets the sourdough beasties going without getting them into overdrive. It takes the dough a little while to cool to retarding temperatures once you stick it in the fridge, and so we will be well into the exponential phase. This means optimal growth after deflating and shaping (once the dough has warmed up again) which is important for good loft in sourdough. You can toy with the timing a bit, e.g. more initial proof for a shorter second proof (up to a point), or a shorter initial proof for a longer second proof (e.g. so it can proof overnight for a first-thing-in-the-morning bake). Exact timings are highly dependent on your ambient temperature and sourdough culture character.

I have a nice sourdough rhythm that I use for maintaining my start. When I use it, e.g. mix up a loaf of bread, I feed the jar 2 tablespoons of flour and water, then let it grow at room temperature about 8–12 hours. Then I feed it again and stick it in the fridge. This way it's ready to go in a few days and is live and healthy in the fridge, not old and dying. But it doesn't spend all its growing time at fridge temperatures, because every other feeding is on the counter, which is important for maintaining various desirable properties. I use the start straight out of the fridge, but you can also refresh the culture 6–8 hours before mixing your bread for extra vigor.

If you have any questions, please ask them and I'll fill in the gaps.

SLLUG meeting: Research, Writing, Typography, and Design using Linux: Wed. Aug 18, 2010
SLLUG meeting: Research, Writing, Typography, and Design using Linux: Wed. Aug 18, 2010

The August 2010 Salt Lake Linux Users Group meeting will be on Research, Writing, Typography, and Design using Linux and presented by Rob Oaks.

Topic:

A big picture introduction to research, writing, typography, and design using Linux. Why open source options are the best available and you really should be using them. Technologies Covered: Zotero, BibTeX, LaTeX, LyX, DocBook, Inkscape, Scribus.

Should be AWESOME!!! See you all there:

Time/Date:
  ----------
  Wednesday, Aug. 18, 2010
  7:10pm p.m.

  Place:
  ----------
  Room 10{1,2,3,4,5,6} (one that is not in use by a class)
  in Lower Warnock Engineering Building

Directions/Parking:

Map: [http://www.map.utah.edu/index.jsp?find=62]

Parking can be found just East of the WEB building and there is a big lot just North of the Merrill Engineering building (MEB). Parking is free after 6:00 (Based on the signs posted. Always check in case this changes.)

Special thanks go to:

  • U of U for providing the meeting room
  • Various Volunteers

Related posts:

  1. SLLUG meeting: Wed. Feb. 18, 2009: Fedora Remix: Custom distributions based upon proven designThis month, Clint Savage will be presenting on “Fedora Remix:...
  2. SLLUG meeting: Wed. Nov 18, 2009: Back to the Basics – Introduction to LinuxHello everyone! This month’s Salt Lake Linux Users Group meeting...
  3. SLLUG meeting Feb. 24, 2010: Introduction to MonoTonight’s Salt Lake Linux Users Group meeting will be an...