February 11, 2008
Types as Comments
Steve Yegge is at it again. This time he’s taking on modeling:
Well, we also know that static types are just metadata. They’re a specialized kind of comment targeted at two kinds of readers: programmers and compilers. Static types tell a story about the computation, presumably to help both reader groups understand the intent of the program. But the static types can be thrown away at runtime, because in the end they’re just stylized comments. They’re like pedigree paperwork: it might make a certain insecure personality type happier about their dog, but the dog certainly doesn’t care.
If static types are comments, then I think we can conclude that people who rely too much on static types, people who really love the static modeling process, are n00bs.From Stevey’s Blog Rants: Portrait of a N00b
Referenced Mon Feb 11 2008 17:02:45 GMT-0700 (MST)
Yeah, it’s a long one—but it’s worth the read if you’re interested in programming language design, programming language choice, types, or modeling. It’s especially nice if you’re a dynamic language aficionado since it will make you feel vindicated!
Posted on 5:08 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
programming
java
lisp
perl
Unit Testing in Scheme
I put together a mini-lecture on unit testing in Scheme for my CS330 class. It’s not a complete introduction, just a tutorial on getting started. If you have suggestions on using SchemeUnit, I’d love to hear them.
Students in CS330 submit their assignments to an autograder. They sometimes try to use the autograder as a test harness with bad results.
I think there are some distinct advantages to students using unit testing in preparing their assignments:
- Unit tests separate tests from the code. It’s cleaner and easier to manage.
- They can write tests before they code. This forces them to think about the functionality and boundary conditions before they begin
- Tests are easier to share. Unless the assignment were specifically about testing, I encourage students to share their tests for assignments as an aid to communal understanding of the problem.
On the last point, while I’m happy to have them share tests, I don’t want to provide them. I want them to get experience in writing tests. Discussing tests with other students is a great way for them to learn.
Posted on 12:08 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
cs330
scheme
programming
testing
February 8, 2008
Universal Housing Anyone?
Dave says:
But there are some things we can change, and if you have a heart, and think about it, I don’t see how anyone could be against universal health care and still sleep at night.From Debating health care in 2008 (Scripting News)
Referenced Fri Feb 08 2008 19:26:56 GMT-0700 (MST)
I respect Dave, but it’s precisely this kind of partisan debate that’s lead to stalemate for decades on this and other important issues. The implication of this statement is that if you’re not for universal health care, then you’re not compassionate. If we give you the benefit of the doubt, you’re just not thinking about it.
Sorry, that’s just not true. The truth of the matter is that it’s not a matter of compassion, but a matter of what you believe the right approach to solving the problem is.
I could change the statement slightly and say:
But there are some things we can change, and if you have a heart, and think about it, I don’t see how anyone could be against universal housing and still sleep at night.
Do you buy it? Does everyone have the right to a certain level of housing regardless of choices they’ve made? How many square feet? Two bathrooms? What about a cable connection? Maybe you do believe this, but we aren’t having a debate about it. Why?
Because it’s not nearly as broken as the health care system. I wholeheartedly acknowledge that the current health care system has some huge problems. But I also believe that it does a lot of things right. Solving the problems without breaking what’s good is a task that has stumped the best that we’ve been able to throw at it.
Some people believe that the answer is to make it a universal right and have the government pay for it. I see a few problems with this:
- I don’t think it will solve the problems, just treat the symptom of inadequate access
- I don’t believe that getting the government involved in anything as complex as health care can be good for society
Conservative philosophy tends to hold property rights in higher regard than liberal philosophy. I’m not being pejorative—I think that’s an accurate assessment. Liberal solutions to problems tend to sacrifice property rights for a future utopia (give us your tax dollars now and health care will be better in the future—we promise).
Interestingly, if we change the debate, you see that there are rights liberals hold more dearly than conservatives—like the right to free speech. Conservatives are more likely to be willing to sacrifice speech rights for social good (witness the debate over Internet pornography). There is no social ill sufficient to trump the right to free speech for a true liberal.
The problem is that liberals label conservatives “greedy” because they value property rights. Conservatives label liberals “immoral” because they want to protect free speech. These kinds of Rovean (I like that word) tricks of taking a strength and turning it into a weakness through misdirection and misinformation don’t solve problems. If we’re going to solve knotty problems like health care, then we need to get past tricks and discuss solutions we can all support.
So, it’s not that I’m not empathethic to the plight of people who can’t get health care. It’s that I don’t believe in the promised future Utopia that the code word “universal health care” represents anymore than I believe in the “universal housing” or even “universal access” to the extent those concepts are defined by government programs. In short, I’m unwilling to take a multi-billion dollar gamble. Thanks just the same.
Posted on 7:53 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
politics
Starting a High Tech Business: Getting Started
I’m starting a new business called Kynetx. As I go through some of the things I do, I’m planning to blog them. The whole series will be here. This is the ninth installment. You may find my efforts instructive. Or you may know a better way—if so, please let me know!
Today I got a cold call at my office that essentially went like this: “I read you blog and would like to tell you my business idea and get your opinion on it.” I said that I had a few minutes to listen and so the guy launched into a description.
Actually, that’s not quite accurate. The first thing he did was say that he didn’t think that I’d want to sign an NDA and that he wasn’t inclined to ask for one. Good thing. When people ask me to sign an NDA, I always say “no.” Like I’m going to keep track of dozens, even hundreds of NDAs and who said what when. There’s not enough time in the world. So, he was right and scored points with me right off.
His idea was an interesting one, if I’m being honest and I told him a few places where it intersected with some other trends I saw and thought were important. He then asked “how do I get started?”
My first instinct was to tell him to build a demo, but then I remembered something even more fundamental than that.
I asked what his background was. “Media,” he says. Uh oh. Not that there’s anything with media types, but how’s he going to build a demo. I told him he needed a CTO and why.
“Can you recommend some people who might be my CTO?” he asked. Nope. I can’t. I asked him if he thought he’d see much action from a list of folks I recommended he call and asked for money. He understood that this wasn’t the best way to raise money; when you’re asking people for an investment, they need to trust you—especially at this stage. That’s why friends and family are the most likely investors in your early stage start up (if you don’t have a plane to sell).
I explained that anyone he asks to work with him on his idea will be making a huge investment of time and commitment—especially on the margin. They need to trust you. They need to feel your passion for the idea. They need to believe that spending the next three to six years with you 14 hours a day will be fun.
This is why successful founding teams have usually worked with each in the past, gone to school with each other, or are otherwise friends. That’s not always the case, but it often is. Collaborations among strangers just aren’t likely to happen without a pretty significant bonding first.
Every founding team needs to have a technical member. I’ve seen more ideas killed by ignorance of this fact than I care to remember. I told my newfound friend to look to his friends, co-workers, and old classmates to see if he couldn’t find someone to be the technical yang to his marketing yin.
Once he’s got the technical founder, he can get a demo working—that will make people believe it’s real. After that, you’re on your way.
Posted on 5:01 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
kynetx
startup
Idaho Kicks Utah's Butt
Wow! Thanks to Roland Smith for pointing me at Idaho’s road reports site. It’s built on Google Maps and totally kicks Utah’s butt. Lots more information on almost every road in the state. Very nice.
Posted on 7:40 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
utah
egovernment
February 7, 2008
CommuterLink Is Looking Pretty Tired
My daughter called me from Heber this afternoon to tell me she’d be late getting home because Highway 189 through Provo Canyon was closed. I went out to the Internet to try and find out what was going on and was pretty disappointed.
The primary site for road conditions is CommuterLink, run by the Utah Department of Transportation. When this site launched with much fanfare in 2001, just in time for the Olympics, it was state of the art. Now it’s looking pretty tired. I found my self wishing they’d just used Google maps. In fact, for traffic information, that’s what I do since Google maps gets the traffic data, but they don’t show road closures.
I tried googling provo canyon avalanche and found this nice little news article from news.utah.gov. Only one small problem—can you tell which day this is for? I can’t. It’s not even encoded in the URL. Argh.
The CommuterLink site is a good example of why it’s hard for government to build Web applications. Web applications are products and as such they require constant update in a world where there’s no reward for doing the work. A better option for government is to be the provider of data and let the private sector build the applications.
As for my daughter, I sent her home through Parley’s canyon and Salt Lake. She was headed to Draper anyway tonight, so no lost time and a certain outcome on the road. Provo Canyon’s still closed as far as I can tell from clicking the Emergency Alerts button (which for some strange reason returns PDF…huh?!?)
Posted on 9:13 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
egovernment
utah
February 6, 2008
MacBook Air SSD - Uncertain Performance Gain
One of the things that interested me about the Mac Book Air with the solid state drive was the hope that it might give better performance than a standard HDD and even better battery life.
According to this review from Ars Technica, the performance gains mixed:
[T]he summary is: the SSD does worse in sequential disk tests and writing in general, but spanks the HDD in random disk tests and reading from the disk.From No spin: Ars reviews the MacBook Air with solid state drive
Referenced Wed Feb 06 2008 20:58:53 GMT-0700 (MST)
What does that translate into?
- Booting is no faster
- Exporting a Quicktime movie is slower
- Building software is faster
- Unzipping an archive is faster
Most applications won’t seem much different. In short: don’t spend the $1300 in hopes of getting increased performance. You won’t see much.
Posted on 9:06 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
apple
osx
gear
February 5, 2008
Change, Motherhood, and Apple Pie
When I worked at Naval Reactors, we had a shorthand for statements no one could argue with. Someone would say something and someone else would just say “motherhood.” Everyone understood the shorthand: what you just said is like motherhood and apple pie. Everyone’s for it.
If you haven’t seen it, this video will make you laugh (and serve as an intro for this post):
Change is an easy thing for a politician to sell because we all want change. Hardly anyone you meet is satisfied with the government. We all want it to be different and so, saying your for change is like saying your for motherhood and apple pie. Who isn’t?
There’s only one catch. We all want a different kind of change. Not just Demos and Repubs, but every single person wants something different changed. Next time your favorite candidate says “change” try to double click on what kind of change they’re talking about. Chances are you won’t get very far. None of the major candidates are being specific about “change.”
“But what about Iraq?”, you might ask. Certainly, lots of folks are for getting out of Iraq and at least some of the candidates are for that kind of change, aren’t they. Yeah, they’re saying it, but it’s a red herring. Mark my words—none of the candidates in the running, even Obama—will pull out of Iraq once they’re responsible for the mess that will be left. They’ll all stay and try to clean it up. They don’t want that train wreck to be part of their legacy. Hopefully they’ll have better ideas than the current administration about what to do.
Change is the pablum of political discourse. Easy to promise and no one can call you one it when you don’t deliver. What matters are real proposals. Where are they?
Posted on 5:47 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
politics
February 4, 2008
Top Ten IT Conversations Shows for January 2008
Here are the top ten shows (ordered by number of downloads) on IT Conversations for January 2008.
- Billy Hoffman - Technometria: Ajax Security (No rating yet)
More and more Web sites are being rewritten as Ajax applications and traditional desktop software is rapidly moving to the Web via Ajax. But, often, this transition is being made with reckless disregard for security. Ajax developers desperately need guidance on securing their applications. Billy Hoffman, co-author of Ajax Security, joins Phil and Scott to discuss the book.
- CTO Panel - Technometria (No rating yet)
Phil regularly holds a meeting that he calls the CTO Breakfast. It is an opportunity for people who work in technology to discuss current issues. In this episode, Phil holds an online version of the meeting. The group review such topics as the recently released Amazon SimpleDB, MIT's open courseware project, and how LinkedIn just open their site to developers. They also discuss the status of open source social networking and the problems of monetization. The group finishes with their predictions for early 2008.
- Neil Giarratana - Jon Udell’s Interviews with Innovators (No rating yet)
Neil Giarratana, president of a small web software firm called Lucidus, is bucking a demographic trend. According to the United Nations, 2007 was the tipping point for world urbanization, and migration to big cities is expected to be a huge continuing trend in the 21st century. But Neil moved from Fairfax, VA to Keene, NH to combine high-tech business with small-town New England life.
- Brian Murray - Retooling HarperCollins for the 21st Century (No rating yet)
In a keynote presentation from the 2007 O'Reilly Tools of Change for Publishing Conference, Brian Murray, Group President for HarperCollins Publishers, provides a textbook business strategy analysis of dealing with rapid change. During his presentation, Murray provides details of the 6 step process HarperCollins used to react to the dramatic changes in the publishing industry.
- Jyri Engestrom - Ambient Storytelling (No rating yet)
From the start, phones have been a point-to-point communication method: pick up the receiver, dial a number, hope for an answer. Jyri Engestrom's microblogging app, Jaiku, changes all that by interfacing your mobile phone with pervasive internet connectivity. What we get is a handset that is used increasingly less for calling and more for sharing what you're doing, where you're going, who you're with, and the photo you just took. These microposts broadcast a river of rich presence information about you: from one-on-one to many-to-many.
- John Kao - Tech Nation (Rating: 5.00)
Dr. Moira Gunn speaks with John Kao, the former Harvard Business School professor who believes America is losing its innovative edge.
- Stuart Smolkin - Business Preparedness Lessons from Katrina (No rating yet)
When Hurricane Katrina hit New Orleans, Stuart Smolkin's conveyor belt manufacturing company, Intralox, had no disaster plan in place. Although central operations weren't decimated, the company had to deal with the disruption of electricity, phones, and computer systems in order to organize evacuated employees into recovery teams. How did Intralox handle this challenge and get running in a mere 30 days? Smolkin offers lessons on preparedness for businesses faced with disruption.
- Tim O’Reilly - Open Source on the O’Reilly Radar (Rating: 3.25)
The O'Reilly Media founder and CEO presents one of his regular Radar updates, with the focus this time squarely on open source software. The world in which open source now operates is very different from the world in which it started. O'Reilly believes that the problems of scaling caused by the growth of the web and large on-line applications means we need to examine the freedoms we associate with open source in a new light. It's more important than ever that we rediscover the freedoms we care about and learn how to protect them in new and more relevant ways.
- Giovanni Gallucci - Conversations on ROI ideas Social Media and Social Networking Systems (No rating yet)
In this talk, Giovanni Gallucci, a search engine optimization and social media expert, a speaker, blogger and co-founder of Dexterity Media, spills out the secrets of a successful online marketing philosophy that leverages the communal strength of social networks such as MySpace, Facebook, etc. He contrasts social media against traditional marketing by providing case studies of companies that succeeded as well as those that've failed at it.
- Scott Kveton - Technometria: OpenIDDevCamp (Rating: 4.50)
OpenIDDevCamp was a gathering to develop web-based applications that use OpenID. Attendees included web designers, developers and testers all working together over the weekend to enable OpenID on their sites or just learn more about this technology. Scott joined Phil to discus the event as well as the OpenID concept.
Posted on 3:14 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
itconversations
technometria
podcast
February 1, 2008
ActionStreams: Follow Me Around the Net
Adding your IT Conversations profile to Action Streams (click to enlarge) |
The more you use sites on the Web for keeping track of our online lives and sharing things with friends, the more you’d like to have a place on your blog to gather them all together. I’ve had my del.icio.us feeds on my blog for a long time. I also used to put my tweets on my blog. I experimented with a Flickr widget and gave it up.
Now Mark Paschal has released a plugin for Movable Type called Action Streams that does that all nicely. There are dozens of services that you can add. I’ve included all that I use. You can see the result on the right side of this page under the “What I’m Doing” heading.
I also created a page about what I’m doing around the net that’s an expanded version of the sidebar.
Mark has made it easy to add services. I created a plugin to add my personal program queue from IT Conversations in about 15 minutes. If you’d like to do the same, I’ve made a tarball and some instructions. Now whenever I add a program to my personal program queue, it will show up on my homepage automatically. I like automatic.
Posted on 9:12 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
blogging
movabletype
itconversations
TripIt Is My New Best Friend!
If you travel and haven’t yet heard of TripIt, you’re going to be sooo excited! TripIt is a site that keeps track of your travel. But unlike many other sites that promise to help you with your travel, this one is so easy and useful, you’ll actually use it.
Here’s what you do: when you get an itinerary from the airline or a hotel, just email it to plans@tripit.com. You’re done.
When you email your first item to TripIt, they’ll create an account for you and send you a confirmation email. Click the link and you’re in. I was amazed to find the hotel and airline reservations for my upcoming trip to San Diego were there, cataloged and turned into a very nice looking itinerary that included Google maps, addresses, click able links and anything else I’d need.
TripIt didn’t understand the conference registration email I sent, but they stored it as a note and I moved it to the San Diego trip with two clicks. Easy as can be and now it’s all together.
TripIt includes some social features so you can collaborate on a trip with others. I played around with that a bit and also logged in from my iPhone since that’s where I’d be wanting most to get to it from when I’m on the road. I was a little disappointed with that. There doesn’t seem to be any special support for mobile devices. Another feature I’d love to see is an iCalendar view of the trips so they can be added to Google Calendar, iCal, etc.
Even with those missing features, this is a very cool application. Believe me, your assistant doesn’t make itineraries this nice.
Update: Jay informs me via a comment that there is an iCal link. I was looking on the itinerary page, but it’s on the page that lists your itinerary. That’s so cool. I subscribed to my TripIt calendar and now all that stuff shows up on my calendar just because I forwarded the emails to TripIt. Nice. Very nice.
Posted on 5:33 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
travel
web
I'm on Interviews with Innovators
A while back Jon Udell interviewed me for his Interviews with Innovators podcast. We talked about reputation.
Posted on 10:32 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
itconversations
reputation
identity
Emacs and Butterflies
This xkcd cartoon on what real programmers use to edit is the funniest thing I’ve seen in a long time. Of course, I use emacs—always have and always will.
Posted on 10:11 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
emacs
humor
January 31, 2008
Starting a High Tech Business: The Rude Dog Demo and Working Code
I’m starting a new business called Kynetx. As I go through some of the things I do, I’m planning to blog them. The whole series will be here. This is the eighth installment. You may find my efforts instructive. Or you may know a better way—if so, please let me know!
I have a friend who has a way with words and has started his share of high-tech businesses. I asked him his advice on getting started and Dan said “Welp, you gotta get yourself a rude dog demo!”
What he meant is that you can’t just start a business with an idea. You’ve got to have something to show people. The demo doesn’t have to be too pretty (that’s the “rude dog” part) but it does have to demonstrate your idea and your ability to execute it.
For some applications, you might get by with a PowerPoint mock-up of your UI, but I believe that to raise serious money for a high-tech company, you need to have working code. Nothing else will do.
Paul Alstrom, a friend of mine, who’s also one of the managing partners of vSpring Capital talks about nailing and scaling. VCs don’t won’t give you money to “nail” your idea (although angels might). VCs want to put money into proven ideas that need capital to scale. The more you have that shows your idea is solid, the closer you are to securing capital.
Working code has heft. It turns ideas into action. Code makes ideas come alive. Try telling someone about your idea. Then show them a demo. Watch what happens to their eyes. I love how the lights go on when someone can see something work.
Working code also instills discipline in the founding team and forces you to “get real.” Once you sit down, start cutting code, and making things work, you suddenly start finding holes in your original idea and ways to improve it even more.
This was written about open source projects, but I think it applies to start-ups as well:
The best way to start an open source project is with code. Working code. Hack away at home on weekends, maybe get a couple of friends to help you out, and don’t go public until you have something to show people that does something interesting, and that other people can use to build more interesting stuff on top of. You need this for a bunch of different reasons: it establishes the original contributor’s bona fides in the open-source meritocracy, it shortcuts all sorts of damaging debates about coding styles and architecture that can stop a project before it starts, and so on.
Most importantly, though: working code attracts people who want to code. Design documents attract people who want to talk about coding. I’ve seen what happens on projects that start with no code and a commitment to produce a design. Some of the procession of UML diagrams were really well put together, but that’s about the extent of it.
From The Fishbowl: Finding Discord in Harmony
Referenced Thu Jan 31 2008 21:52:29 GMT-0700 (MST)
Working code gives the rest of the people on your team something to use for leverage in their thinking. Seeing things come to life is a sure way to spark ideas.
What if you don’t know how to code? Then you need a founder who does. See my earlier post on why you need a CTO. If you don’t have founders who can cut code, you have no business starting a high-tech business. That may sound harsh, but I believe it’s true.
The hard part of producing “working code” is defining “working.” How close to production does it need to be? For a “rude dog demo” not very. It’s probably more important that the UI be pretty than the guts be complete. It may be running on your laptop and need a month of work to get ready for production. That’s OK for the demo part.
Eventually you have two choices: throw it away and build the real thing or morph what you’ve got into the real thing. For Kynetx, I’ve designed the engine so that all the pieces are there, including a plug-in architecture, and the difference between the production version and the demo version is filling in the holes rather than rewriting what’s already done. That took more work, but we wanted to progress from “rude dog demo” to “alpha customer ready” pretty quickly.
I’m here to tell you: nothing made Kynetx seem more real than having code we could call our own. Ideas are not assets, but code is. And assets are ultimately what you leverage to make any high-tech business work.
Posted on 10:03 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
startup
kynetx
programming
cto
January 30, 2008
Arc Is Released
Paul Graham has released Arc, his new language.
Arc is still a work in progress. We’ve done little more than take a snapshot of the code and put it online. I spent a fews days cleaning up inconsistencies, but it’s still in the semi-finished state most software is, full of hacks and note-to-self comments about fixing them.From Arc’s Out
Referenced Wed Jan 30 2008 16:21:31 GMT-0700 (MST)
Paul mentions Arc in a number of his essays:
- The Hundred-Year Language
- http://www.paulgraham.com/noop.html
- http://www.paulgraham.com/progbot.html
- Some Work on Arc
- Arc
Paul wrote HackerNews in Arc as a “big project” to shake out the bugs and design issues.
Arc runs on top of mzscheme and is decidedly Lispy. What did you expect from the guy who wrote two of the leading books on Lisp and is one of it’s biggest champions.
I think it’s very cool that programming languages continue to be developed and that new ideas keep popping out of the woodwork. Many people are surprised by this, but programming languages are not technologies. They are notations—notations that can come alive and animate bits and atoms. There will always be a need for new and better notations.
Posted on 4:40 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
programming+langauges
scheme
lisp
programming
cs330
January 29, 2008
Ping vs Sun
A few days ago, someone at Sun made a video that poked some fun at Ping Identity (disclosure, I’m on their advisory board—I think—it’s been a long time). Ping fired back with a humorous video of their own. Heck, if they both keep acting like this, the world’s going to have to pay attention to federation, just for entertainment value alone!
Posted on 1:55 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
video
humor
identity
federation
Putting ICE on Your Cell
A great tip from David Stephenson: Keep ICE in Your Cell Phone! Basically the idea is simple, put “in case of emergency” contacts into your phone’s contact list as ICE-1, ICE-2, etc. That way, emergency responders can look in your cell phone to find out who to contact. Of course, they have to know to do this, so we need to get a critical mass of people doing it and get a little traction. I’m in.
Posted on 10:05 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
emergency+preparedness
mobile
January 28, 2008
Time for Fry's in Utah
Now that CompUSA is closing, there are no decent places in Utah to buy electronics. Not that CompUSA was a dream store by any means, but at least it was something. There’s BestBuy and Circuit City, but they’re not the same—they just don’t have a good assortment of disks, video cards, cases, memory, etc.
Scott Lemon has begun a campaign to convince Fry’s Electronics to open a store in Utah. He’s proposing we send them emails asking them to locate a store here. Here’s the message:
To: feedback@frys.com; service@outpost.com; press@outpost.com
Subject: Open a Fry’s Electronics in Utah
Body: I am writing to you to request that you consider opening a Fry’s Electronic store here in Utah. I am part of a large and growing community of people who can appreciate the value that your store could bring to our state. With the closure of CompUSA, we are now left with no real source for electronic and technology products. The Utah population is continuing to grow, and many large retailers - like Ikea - are moving into the state. Please consider our state as a great location for the next Fry’s Electronics store that you open, and feel free to contact me if there is anything I can do to support your efforts to open here.
Or, if you’re lazy, just click this link:
Click here for the Fry’s Electronics in Utah e-mail message!You probably ought to personalize it a little. :-)
Posted on 3:55 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
utah
January 24, 2008
CTO Breakfast Report for January
Scott Lemon shows off his XO Laptop (click to enlarge) |
We started off this morning discussing AsteriskNow, an easy install of the Asterisk VoIP system. Scott Lemon and I talked to Jared Smith a while back on that. Apparently it’s pretty easy to set up and get working. Scott claims 3 hours start to finish.
I brought up ProQuo, a service that aims to stop junk mail. I signed up on Halloween and I’ve got to say I’ve noticed a real drop in the amount of junk mail I get. Score one for us!
Scott brought his XO laptop and so did Bruce. This was the first time either one had had their laptop near another one. They found each other and established a mesh network that we could see from other Wi-Fi devices. We experimented with seeing whether they’d see each other or not. They’re little, light, and pretty cute.
XO
Laptop (click to enlarge) |
There’s a 1Gb solid state drive. The keyboard is too small for my large hands. The software seems a little crude. With software updates available, getting the hardware right seems like the highest priority.
We got into a discussion of the impact that putting lots of these into developing countries is likely to have. The Hole in the Wall PC has some lessons. I think it will pull gappers into the core. That’s good.
I brought up my Christmas hacking project of building a family information center from an old iMac. It’s gone well. The kids have taken to it and use it all the time. One of the things we like best on it is FlickrFan.
I’d asked Scott to give a short demo on writing Facebook applications. The whole thing is based on Facebook making Restful callbacks to an application you write. There are tons of configuration options and FBML (Facebook markup language) let’s you give your applications a Facebook look and feel. The development libraries Facebook provides (in various language flavors) provide good interfaces to their data and services. It was a good demo and writing FB apps seems quite easy.
Posted on 10:56 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
cto
breakfast
events
asterisk
xolaptop
facebook
January 23, 2008
Utah Election and Caucus Information
Utah Capitol Building (click to enlarge) |
Utah will participate in the Super Tuesday presidential primary on February 5th (as do 23 other states). Then on March 25th, we’ll hold the regular statewide caucus meetings to elect delegates to the state conventions later in the year. I’m Republican Precinct Chair for Lindon 4. I’ll let you know where the caucus meeting will be held when I have that information. In the meantime, here’s some important dates:
- Jan 29 - Last day for walk-in registration - Last minute voter registration is available for the new voter to register in person at the County Elections office located at 100 E Center, Suite 3100 in Provo. Hours: Monday - Friday, 8 a.m. - 5 p.m. If you’re not registered yet, there’s still a few days left.
-
Jan 22 - Feb 1 - Early Voting - There are two locations in Utah County (other counties call he Elections Office at 801-851-8128):
- Utah County Building, 100 E Center St Rm. L900 (basement level), Provo Hours: Now - Feb 1st Weekdays 8 - 5 p.m.
- American Fork Library, 64 S 100 E, American Fork Hours: Now - Jan 31st 3 -7 p.m. and Feb 1st 12 - 5 p.m.
Any registered voter may vote at either of these locations during the Early Voting period. To be eligible to Early Vote you must show a picture ID. Having to show ID is stupid, but I don’t make the rules.
-
Feb 5 - Presidential Primary - Click for election locations. If you have any questions you may call the Elections Office at 801-851-8128.
-
Mar 25 - Statewide Republican Party Caucuses - Statewide caucuses on Tuesday, March 25 at 7 p.m. The election of a delegate is the first step in the partisan election process in Utah.
The delegates elected in a precinct will hold the power to vote on behalf of the approximately 1250 voters in their precinct at the statewide party conventions in May. If enough citizens don’t turn out, a few “special interest” people end up controlling the vote for delegates — if special interest people become the delegates, they won’t represent the interests of the majority of the precinct. Please come.
Precinct boundaries have changed in some areas, please check your registration cards sent to you to verify your new precinct information. If you have any questions about your precinct boundaries, call the Elections Office 801-851-8128 or check online.
In Utah, where the Republican candidate wins 80-90% of the time, participating in the process to choose the candidate is extremely important. If you just show up and vote in November, you’re not really doing much. Be part of the process.
Posted on 8:56 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
utah
politics
January 22, 2008
CTO Breakfast on Thursday!
This Thursday is the CTO Breakfast! We’ve got a few really cool things lined up:
- Scott Lemon is going to give a short tutorial on writing Facebook applications
- Scott also is going to bring his XO Laptop (one laptop per child)
OK, so basically, it’s the Scott Lemon show. But I’m sure it will lead to plenty of good discussion. So come prepared to learn and to talk about the cool things you’ve seen since last we met.
The breakfast is at the Novell Cafeteria (Building G). It’s not as far as you think! Really. I promise. Try it and see. You can find directions here.
The meetings begin at 8am and generally last until 9:30 or so. Here are the future dates:
- Feb 28 (Thursday)
- Mar 27 (Thursday)
- Apr 17 (Thursday)
- May 30 (Friday)
There’s a Google calendar of the CTO Breakfast for your convenience.
Posted on 9:45 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
cto
breakfast
utah
events
xolaptop
facebook
Managing Spotlight and Memory Usage
Over the weekend, I reloaded Leopard. If you remember, I was forced to upgrade to Leopard by a bad Tiger update a few months ago. My preferred method of upgrading is to wipe the disk, do a fresh install, and then restore my applications and personal files from backup. Due to the circumstances of the situation I was in, I didn’t get to do that. I decided that the three day weekend presented the perfect opportunity.
The install and restore went fine and I was soon running a squeaky fresh copy of Leopard.
I’m in the habit of running Activity Monitor to see where the CPU and memory are being used and I noticed that mds, the utility that manages Spotlight, was taking almost 250Mb of RAM. Now, I don’t use Spotlight enough to justify it taking one quarter of a Gig of memory, so I investigated. Here’s what I did.
First, since I’d just reinstalled, I decided to blow away the old index and do a new one. I did this at the terminal:
bash> sudo mdutil -i off /Volumes/Windley bash> sudo mdutil -E /Volumes/Windley bash> sudo mdutil -i on /Volumes/Windley
The first command turns indexing off for a given volume—in this case my boot volume. The last command turns it back on. The middle command erases the index for the named volume. As soon as I issued the last command, the system started rebuilding the index. That took a few hours.
Once the index was rebuilt, I restarted mds with the following commands:
bash> sudo launchctl unload \\
/System/Library/LaunchDaemons/com.apple.metadata.mds.plist
bash> sudo launchctl load \\
/System/Library/LaunchDaemons/com.apple.metadata.mds.plist
When mds restarted it didn’t use much memory at all. Each call to Spotlight increased its memory usage, but it’s no where near 250Mb. I’ve noticed that OSX applications tend to hold memory until another application needs it, so sometimes you can look full, but still have plenty of memory.
mds is fluctuating between 30 and 100Mb now. That’s still a lot of memory for something I rarely use, but it’s manageable. If you want to completely disable Spotlight in Leopard, add the -w switch to the launchctl unload command in the last code block to write the configuration back out to disk. Then don’t run the launchctl load command. That turns off mds completely.
As an aside, the reason I don’t use Spotlight much is because I love Quicksilver. Here’s a brief tutorial on Quicksilver.
Posted on 8:35 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
osx
gear
January 18, 2008
Perl Testing
I didn’t grow up in an era where testing was as well though of as it is now. When I learned to program, you ran a few tests after the fact and threw it over the wall to the QA department. Not very politically correct in today’s software engineering world.
As a result, I understand the value of testing and support the idea intellectually, but I don’t have the discipline.
Recently I was faced with the problem of building code that translated a domain specific language (KRL) back and forth between three different representations:
The textual representation is what people read and write. The JSON representation is what machines (other programs) will read and write. The abstract syntax (a Perl data structure) is what will be interpreted.
I quickly realized that getting this right—and convincing myself of that—would require something more than some ad hoc testing. So, I decided to mechanize.
I knew that Perl had testing facilities—anyone who’s built a library has seen that. So, I had to figure out how they worked. I found these resources handy:
- Test::Tutorial - the basics
- An Introduction to Testing - some more advanced things, like Test::More that helped specifically with what I needed to do
- Automated testing with Perl
- Large Project Testing with Perl (PDF) - for the project stuff
Here’s what I did:
- Wrote a collection of test programs in KRL. These can be expanded as needed, as I think of things to test.
- Built a test script for running each of those programs through a round trip through the parser and pretty printer. If the text matches (modulo whitespace) it’s OK
- Built another test script for running each of these programs through a round trip all the way to the JSON representation and back.
I also added test scripts for each module in the system as well as a few scripts to check for developer issues—thanks to petdance (PDF).
I used the petdance smoke script to run all the tests in Test::Harness. I modified the petdance rule.t script to check for Perl programming best practices like always having use strict at the front of every Perl program in the collection.
I also wrote a use.t script that goes through the entire collection of Perl modules and programs, gathers a unique list of every library they use, and then checks for availability on the current machine.
Now, I can flesh out this framework with other tests as they come to me or I run into problems. It feels good.
Posted on 3:21 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
testing
programming
perl
kynetx
January 17, 2008
Passing on the Macbook Air
A number of people have given various objections to the Macbook Air (MBA): small drive, no firewire, no ethernet port, and so on. I can live with all of those. I’d get one primarily for travel, so I don’t mind the small drive. I’ve been using disks over 801.11N with my MBP for months and won’t miss an ethernet or firewire port. Further, I’m intrigued by the solid state drive.
So, the MBA looks like the perfect travel machine with one exception: there’s no 3G card. Huh!?! Further, because there’s no Express/34 slot, I can’t use the card I already have. I’d have to go get one of those USB soap-on-a-rope aircards. Ugh!
Now, if I could tether to my iPhone and use the network from there—I’d be OK. But, alas, you can’t do that without jailbreaking the iPhone. So, for now, I’m passing on the MBA.
Posted on 11:39 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
osx
gear
Kynetx Making Progress
I now have evidence that Kynetx is gaining momentum: I got my first call from an Indian “business process outsourcer” today asking if we had any programming work we wanted to outsource. They answer, by the way, is no.
While I do believe that there is a role for outsourced programming and many places where it works very well, I don’t foresee Kynetx doing much because of how I like to work. I build “two-pizza” teams—a programming team that you can feed lunch to with only two pizzas and I like my programmers close by. I think there is much to be gained by building small, high-culture teams and I’m willing to pay for that.
Posted on 8:34 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
kynetx
bpo
outsourcing
January 16, 2008
Scheme and Ruby
Duane Johnson pointed me to a very interesting discussion on Y Combinator about the differences between Scheme and Ruby. This is an excellent discussion—not a flame war—that I found enlightening. The summary, if you don’t want to read the discussion thread:
- Ruby closures are more complex
- Macros, macros, macros…
Can’t say enough about macros. Every language besides Lisp and it’s close relatives trade macros for complex syntax. Maybe that’s a good trade-off, maybe not. Nevertheless, it is a trade-off. You can’t have the full power of macros without simple (abstract) syntax that’s exposed to the programmer.
Now, that I’ve said that, I wonder if IO’s impressive reflection can do the same. Someone more enlightened than I tell me: what can’t be done with reflection that can be done with macros?
I do believe that using reflection is more complex than using macros. It reminds me of poking a stick in a black box to flip a switch.
Posted on 2:16 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
programming
cs330
scheme
ruby
Colorado Abandoning Electronic Voting
Colorado will decide to abandon electronic voting in the upcoming election. I believe that ten years hence no state will support electronic voting—specifically, I think that direct-record voting machines (DRE) will be gone. The opportunities for undetectable fraud (even with reasonably large audits) in small elections are too large and cannot be solved by applying technology.
Posted on 10:01 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
egovernment
voting
security
January 15, 2008
One Good Reason to Love the iPhone
Some people wonder why I love my iPhone. I’ll give you one simple reason: In all the years I’ve owned mobile phones, not one ever got better as it aged. The iPhone has gotten better three times now and promises to do so in the future. Today’s bump added pseudo-GPS capability (which seems to work surprisingly well), a user-manageable home page, and multiple SMS recipients.
As an aside, my update wasn’t seamless. After it tried the first time, it told me I had to do a restore. That worked fine, restoring the software to the latest version and then syncing my contacts, music, and so on from iTunes. Be sure you sync before you upgrade. If you have, then a restore is no big deal—just takes a little longer.
Posted on 7:18 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
iphone
apple
mobile
Google Apps for the iPhone: Much Improved
Apple
iPhone (click to enlarge) |
Since yesterday’s announcement that Google had released an iPhone-ready look and feel for it’s Google Apps, I’ve been playing with GMail and Google Reader quite a bit on the iPhone. This is a much improved experience. I’m impressed. The apps are responsive and function well on the reduced real estate of the iPhone screen.
Because GMail pre-loads recent messages, clicking on a message to read it brings it up nearly instantaneously. The address fields also auto-complete. I could see myself using GMail on the iPhone instead of the built in Mail application and getting along very nicely.
Reader still isn’t my favorite way to read news. I’ve used NetNewsWire on the Mac for a long time and have a style of reading news that Reader just doesn’t seem to support. Still, it’s snappy and clean on the iPhone and that’s a real plus.
Posted on 8:36 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
iphone
apple
google
Clips Are Back!
In the old days, you could reference a section of audio in an IT Conversations program using a handy tool that Doug Kaye created. Jon Udell was among the most frequent users of that service, but others, including yours truly, used it as well.
Then, IT Conversations started auto assembling so that the show always had fresh sponsorship promos in every show—even those from long ago. The problem is that this created variable length intros and so the excerpt, which was measured from the start of the MP3 file moved around. Not good.
Doug has fix that with a new technique: basing the excerpt timing on the start of the show body. Of course this means that the MP3 file has to care metadata about when the body starts. Doug’s done that using EXTO frames inside the MP3 file. Doug’s documented the process. Anyone who needs to tag variable length MP3 files will be interested.
For those not interested in the details, here’s how you create a URL that points to a portion of an IT Conversations show:
- Go to the show’s detail page
- Click the “excerpt” link
- Enter the start and stop times
The start and stop times are relative to the beginning of the show body. You’ll have to calculate that yourself just find the start and stop times on your player and then find the start of the body and subtract it. Enter the resulting times in the form and you’re good. From then on, the excerpts will be right no matter how the intro changes. This excerpt FAQ will help with anything I’ve missed.
Posted on 8:28 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
itconversations
January 14, 2008
Some Major CS Conferences in Utah Coming Up
There are a number of major technical events coming up in Salt Lake City in February. It is not often that premier computer science research conferences come to Salt Lake City, as opposed to Boston, Austin, Seattle, or the Bay Area. John Carter am the General Chair of the HPCA conference and got the IEEE to locate it here. Also convinced PPoPP to co-locate their conference here. All of the events below, except the Organick Lectures, will be at the Marriott City Center in SLC (next to Gallivan Plaza downtown).
- Feb 16-20: 14th International Symposium on High Performance Computer Architecture. HPCA is one of the premier computer architecture research conferences.
- Feb 20-23: 13th ACM SIGPLAN Symposium on Principles and Practices of Parallel Programming. PPoPP is one of the premier research conferences focused on parallel programming and parallel systems.
- Feb 20-21: The University of Utah will be hosting its annual Organick Memorial Lecture series. This year’s speaker is Dr. Fran Allen, IBM Fellow Emeritus and this year’s ACM Turing Award winner.
There are a number of interesting tutorials and workshops associated with HPCA or PPoPP:
- Feb 16: 12th Workshop on the Interaction between Compilers and Computer Architectures (INTERACT-12) * Feb 16: Tutorial on Architectural Implications of Multiple Clock Domains Multiple Voltage Domains and Dynamic Voltage-Frequency Scaling (MCD/MVD/DVFS)
- Feb 17: 11th Workshop on Computer Architecture Evaluation using Commercial Workloads (CAECW-11)
- Feb 17: 1st International Workshop on Storage and I/O Virtualization, Performance, Energy, Evaluation and Dependability (SPEED 2008)
- Feb 17: 2nd Workshop on Computer Architecture Research Directions (CARD-2007)
- Feb 17: Tutorial: Power Management Solutions for Computer Systems
- Feb 17: Tutorial: High-Speed Network Architectures for Clusters: Designs and Trends
- Feb 23: 3rd ACM SIGPLAN Workshop on Transactional Computing (TRANSACT 2008)
- Feb 23: Tutorial: Parallel File Systems and I/O Middleware for Extreme-Scale Platforms
There will be a joint luncheon of HPCA and PPoPP on Feb 20th at which Fran Allen will be speaking. At least for now, only people registered for the conference are invited.
Posted on 1:25 PM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
utah
events
conferences
Xen and Multiple Networks
Last Friday I asked a question about how to set up a network in Xen with a machine attached between a public and private network, like you might use in a firewall or load balancing situation. I want to be able to mimic real world networking situation in Xen for experimentation and modeling purposes.
There were numerous replies and I’m grateful for all the help. In the end, Steve Fulling (he’s not as pointy haired as you though) came up with a pretty simple solution.
To use virt-install to create a bridged, public machine, you’d do something like this:
virt-install --paravirt --vcpus=1 --name $1 --ram 500 \\
--file /var/lib/xen/images/${1}.img
--network=bridge:eth0 \\
--file-size 10 --nographics \\
--location http://192.168.1.150/fedora8-i386
To use virt-install to create a private machine, you’d do something like this:
virt-install --paravirt --vcpus=1 --name $1 --ram 500 \\
--file /var/lib/xen/images/${1}.img
--network=network:default \\
--file-size 10 --nographics \\
--location http://192.168.1.150/fedora8-i386
The trick to getting a machine on both is to issue two —network commands:
virt-install --paravirt --vcpus=1 --name $1 --ram 500 \\
--file /var/lib/xen/images/${1}.img \\
--network=bridge:eth0 --network=network:default \\
--file-size 10 --nographics \\
--location http://192.168.1.150/fedora8-i386
There are other, more complex scenarios. For example, you might want to create multiple VLANs, etc. I found these resources helpful:
Posted on 10:55 AM |
Comments () |
Recommend
| Print
Add to del.icio.us
| digg
| Yahoo! MyWeb
Related:
xen
virtualization
networking
kynetx





