Friday, March 1
Time for Yahoo to understand who they are
If you have any exposure at all to the tech world you are more than likely familiar with the bombshell dropped by the CEO of Yahoo calling all their remote workers back to the office. As someone who has spent the last 5 years of his life working remote, this hits me close to home... literally. As I read the articles and comments to those articles it is absolutely clear to me that the average person neither understands the challenges, nor advantages of working from home.
I could make several compelling arguments for remote work stretching from making good on work-life-balance, to getting away from office distractions, to workspace costs to the company, to environmental impact from highway traffic both on infrastructure and in emissions/carbon footprint. However, all of those arguments miss the fundamental point, as Ms. Mayer is missing the point.
Working from home is a benefit, and a valuable one. In this age of troubling economics with people out of work, the tech industry has really not encountered much of this downturn. Some large companies have downsized, but much of that is an ongoing process of removing unproductive workers from their ranks. In general there are still far fewer qualified candidates than there are open positions. Great technology companies require great talent. There are some people who are unwilling or unable to move from where they live, where their children go to school, and where their families, churches, and support systems exist. Nonetheless, they are talented individuals who can be significant contributors to organizations.
To be quite honest, Yahoo is not the technology destination they were 15 years ago. They need all the help they can get to acquire top talent. A benefit like working from home is probably much more valuable to them than face time. They would be better off improving their telepresence capability than ending the program altogether.
The bottom line is, an unethical worker who will cheat the company on time is unethical whether they are in the office or out. Someone who is a bad communicator does not necessarily get better face to face. It remains to be seen how this will impact Yahoo as a company and if they will indeed lose some of their top talent because of it. However, it is important for any company considering similar moves in the wake of this announcement to have a firm understanding of who they are. A justification like, "this is how Google works" is missing a very important piece of the puzzle... you are not Google. Google the search engine company had to jump through a lot of hoops to become Google the technical destination employer. Just copying their behaviors isn't magically going to get you back to relevancy. You need smart, talented people to get you there. Cutting valued benefits isn't a very good way to go about that.
Tuesday, December 25
Fixing Flash for Chrome on Mac
Yes, I am now and have been for the past 3 months a semi-proud Mac owner. The details of that is for another post, but the bottom line is, I had a horrific crash on my laptop and finally recognized what several people have told me for years. Linux is great, Ubuntu is great. But when something you need breaks because of hardware and you can't bill time, it's not just the fact that you aren't making money, you're losing it.
Of course, cutting through the "It just works" mantra, we find many places where it just doesn't work, one of those being Flash on Chrome. It's broken... and when I say broken, I mean I don't want to pretend I am deaf because there's never any sound in the video, videos skip or fail to load altogether, etc... aka, broken.
And for the record, it was broken for a lot of stuff in Ubuntu as well, with the same results. Luckily, the fix is the same, you simply need to tell Chrome which Flash plugin to use.
Open a new Chrome window and in the address/search area, type chrome://plugins/
On the right side near the top, click on "Details" link to expand the details on each plugin.
Scroll down to find the Adobe Flash Player and find the one where the type is PPAPI(out-of-process). This is most likely to be the PepperFlash plugin. Click "disable".
Now just reload any page you had open previously and you should now have sound and any other issues you might be experiencing with flash should clear up.
Of course, cutting through the "It just works" mantra, we find many places where it just doesn't work, one of those being Flash on Chrome. It's broken... and when I say broken, I mean I don't want to pretend I am deaf because there's never any sound in the video, videos skip or fail to load altogether, etc... aka, broken.
And for the record, it was broken for a lot of stuff in Ubuntu as well, with the same results. Luckily, the fix is the same, you simply need to tell Chrome which Flash plugin to use.
Open a new Chrome window and in the address/search area, type chrome://plugins/
On the right side near the top, click on "Details" link to expand the details on each plugin.
Scroll down to find the Adobe Flash Player and find the one where the type is PPAPI(out-of-process). This is most likely to be the PepperFlash plugin. Click "disable".
Now just reload any page you had open previously and you should now have sound and any other issues you might be experiencing with flash should clear up.
Sunday, August 19
Stop spammers from using your Google Apps domain
Lately I've been getting a lot of return mail from accounts that were sent mail from spammers using my domain. It's annoying and somewhat frustrating, especially if it is your business domain because you run the risk of being blacklisted. Here are a couple of simple ways you can prevent this on a standard Google Apps account using Enom for domain registration.
Sender Policy Framework - This is an open standard that specifies which servers are allowed to send mail that a receiving server can validate messages against. This can be set up fairly simply in your admin control panel. To do this:
Sender Policy Framework - This is an open standard that specifies which servers are allowed to send mail that a receiving server can validate messages against. This can be set up fairly simply in your admin control panel. To do this:
- Go to your domain control panel and click on "Domain Settings" and then on the "Domain names" tab. From here, click on the "Advanced DNS Settings" which will give you a login to the domain settings with Enom.
- Under "Host Records", click the Edit button and add a new TXT record with the following values
- Host Name: @
- Address: v=spf1 include:_spf.google.com ~all
- Record Type: TXT
This publishes the information that any mail not sent from an included domain should be rejected.
DomainKeys Identified Mail - This adds a signature in the email headers that allows association of a domain name to an email message. It prevents spammers from forging the source address of their messages which allows other spam filtering to be more effective. To implement this with your apps domain, go to the domain control panel and click on "Advanced tools". At or near the bottom is a heading called "Authenticate email" with a link to a DKIM setup. This is a fairly simple automated setup or you can set your own up manually if you know what you are doing.
Wednesday, May 23
Installing Spree from scratch on Ubuntu 12.04
Spree is a comparatively new addition to the options in the open-source eCommerce world. Based on Ruby on Rails, it has a certain allure, especially with developers eager to get into RoR. Here's a quick way to get it running on Ubuntu.
Next, especially if you had Ruby already installed, you'll want to set it as the default in the alternatives system. The galternatives package makes this simple. However, make sure you update gem to the 1.9 version or your gems will install in the wrong place.
For more info on customizing Spree, visit http://guides.spreecommerce.com/
First, unlike previous versions of Ubuntu, you need to do nothing to get a recent version of Ruby. First you will need to install the latest version. Along with it we'll include some extras that you'll need to make things go smoothly as you install the gems.
sudo apt-get install ruby1.9.1-full galternatives libxml2 libxml2-dev libxml2-doc libxml2-utils sqlite3 libsqlite3-dev libxslt1.1 libxslt1-dev
Next, especially if you had Ruby already installed, you'll want to set it as the default in the alternatives system. The galternatives package makes this simple. However, make sure you update gem to the 1.9 version or your gems will install in the wrong place.
Once you have the the proper ruby packages installed and configured, you can use the gem system to do the rest.
sudo gem install sqlite3 -v '1.3.6'
sudo gem install rails
sudo gem install spree
Finally, create your new store. The -A argument on the spree bundle install accepts all prompts, which should create an admin user spree@example.com/spree123.
rails new my_store
spree install my_store -A
cd my_store
rails s
You can now see your storefront at http://localhost:3000 and the admin environment at http://localhost:3000/admin
Please feel free to post any comments or corrections to this guide in the comments.
For more info on customizing Spree, visit http://guides.spreecommerce.com/
Wednesday, March 28
Recycling your smartphone
Got an old android phone around that you can't sell and just sits in a box of cast-off old tech? Do you have a wireless router and a Skype account? Did you know you can skip the $80 for a Skype phone, reuse your old smartphone, and continue to have the convenience of a mobile email, game playing device?
You don't need to be a super hacker or anything... in fact the steps are actually deceptively simple with one small hitch. Most of the software provided by your wireless phone companies will not allow you the freedom to make phone calls through Skype. So you may have to root your phone. Luckily rooting these days is typically pretty easy. It usually goes something like:
1. Download a rom and save it to your sd card
2. Reboot your phone in recovery mode
3. Factory reset the data(hopefully you have backed everything up already)
4. Wipe all caches
5. Install the rom from the sd card
For me, I decided to double the pleasure and try out Ice Cream Sandwich(who the heck came up with that name?), the newest version of Android. Let me tell you, it is a fantastic upgrade. And why not try your hand at the rooting process? The impact of bricking the phone is gone and you get a chance to try out something different than the typically boring versions of Android you get from the phone company.
So, now that you have a version of Android on your phone that doesn't restrict Skype functionality(and puts a fresh face on your old phone), it's time to turn it into a real working phone. As a side note, you can do this with other voip software, provided that they have an android application. I simply chose to do it with Skype.
Step 1 of course is to install Skype(or alternative voip software)
Step 2. If you have a skype account that can make outgoing and incoming phone calls to a land line, try making a phone call to someone through the phone's regular dialer. It will offer skype as a method of calling, choose "set as default". This will allow you to use the dialing interface you are used to and one that interacts with your phone better than just using skype.
Step 3. If you don't have a call out or skypein number, you can easily open the skype application and view your contacts, make voice calls, etc.
And that's really it. All told, with rooting the phone and all this whole process should take about an hour and you'll have a phone that hooks up to the wifi in your house and something that just about anyone can use like a regular cell phone to make Skype calls.
You don't need to be a super hacker or anything... in fact the steps are actually deceptively simple with one small hitch. Most of the software provided by your wireless phone companies will not allow you the freedom to make phone calls through Skype. So you may have to root your phone. Luckily rooting these days is typically pretty easy. It usually goes something like:
1. Download a rom and save it to your sd card
2. Reboot your phone in recovery mode
3. Factory reset the data(hopefully you have backed everything up already)
4. Wipe all caches
5. Install the rom from the sd card
For me, I decided to double the pleasure and try out Ice Cream Sandwich(who the heck came up with that name?), the newest version of Android. Let me tell you, it is a fantastic upgrade. And why not try your hand at the rooting process? The impact of bricking the phone is gone and you get a chance to try out something different than the typically boring versions of Android you get from the phone company.
So, now that you have a version of Android on your phone that doesn't restrict Skype functionality(and puts a fresh face on your old phone), it's time to turn it into a real working phone. As a side note, you can do this with other voip software, provided that they have an android application. I simply chose to do it with Skype.
Step 1 of course is to install Skype(or alternative voip software)
Step 2. If you have a skype account that can make outgoing and incoming phone calls to a land line, try making a phone call to someone through the phone's regular dialer. It will offer skype as a method of calling, choose "set as default". This will allow you to use the dialing interface you are used to and one that interacts with your phone better than just using skype.
Step 3. If you don't have a call out or skypein number, you can easily open the skype application and view your contacts, make voice calls, etc.
And that's really it. All told, with rooting the phone and all this whole process should take about an hour and you'll have a phone that hooks up to the wifi in your house and something that just about anyone can use like a regular cell phone to make Skype calls.
Sunday, March 4
SVN and GIT cheat sheet
If you're reading this, you don't need to be convinced of how awesome GIT is. This is actually the cheat sheet I use when I need a GIT command. Hope it helps you as much as it helps me when my memory fails.
Cloning
... more to come here
git-svn and clone
Cloning an svn repository where there is only one project with the standard layout(repo_url/[tags trunk branches]):
git svn clone --stdlayout [http(s)|svn]://repo_url local_name
Cloning an svn repo that is deeper in the svn tree
git svn clone --stdlayout --no-minimize-url --stdlayout [http(s)|svn]://repo_url local_name
Branch and merge
Working with branches
Push local branch to new remote branch
git push origin newbranch
Track a remote branch with a new local branch
git branch --track localbranch_name origin/remotebranch_name
Associate your local master branch to a remote master
git remote add origin repourlReferences:
Friday, August 26
Why story points are a more accurate estimating unit than hours
If you've been a developer for very long you've more than likely been on the project that is over due, over budget, and is nowhere close to being done. There is no light at the end of the tunnel, the client is mad, management is mad, tempers are short, and no one is having very much fun.
I'm not going to pretend I have the answer to that. If I did I'd be writing a book instead of a blog and all my code would be written for fun and curiosity because I wouldn't need to write code for a living anymore. However, I have a suggestion for where the problem lies, and that is in estimation.
There are lots of ways to be wrong during the estimation process... it's a lot easier to be wrong than right. I think those reasons have been covered ad nauseum. You know the least about the project in the beginning, you don't know if the client has described their needs correctly, you aren't sure the client even knows their needs or has the ability to articulate them and, above all, you don't know what you don't know. For the most part, that stuff is given and there's very little you can do about it.
Many software companies try to use past performance on similar features to indicate future results. However, in general past performance on a feature has very little to do with future results unless the problems are identical. Most people are familiar with the concept that sometimes it's the last 5% of the work that takes 90% of the time. So we know and accept that small differences in functionality can make huge differences in development time.
There are several reasons agile projects succeed where waterfall projects fail, first is adaptability. It's easy to succeed when you simply modify the definition of success to fit into what you can accomplish given other constraints. However, one could also say the definition of success is usually wrong from the beginning so hopefully it moves correctly to a more realistic definition.
Second is brutal honesty as early as possible... and this is probably where most agile projects that fail fall apart. Being brutally honest with clients is not very easy and no one's idea of a good time.... let alone doing it before anyone else perceives it as a problem. The logic enters in that "maybe I can fix this before anyone notices it was a problem". 63 hours later in a task that was supposed to last 8, you are forced to admit that your attempts have failed. The difference is that now you have reached the same result and there are 10-12 other tasks that have suffered because of it. So you try to work extra to catch up causing more problems in your ability to perform professionally as well as in your personal responsibilities to your family and to yourself.
How does that have anything to do with story points as an estimation tool? The answer is, honesty matters. Not that developers are being intentionally deceptive, but we have a tendency to estimate the best case or what we think is the worst case. No matter how honest a developer tries to be in giving an hours estimate, there is always a tendency for the thought to lodge in the back of his mind that they have to give a number of hours that is acceptable rather than the number of hours he actually thinks the work is going to take. In addition, especially in the beginning of the project or in the estimation process, the tasks are so large that most just throw a rock in the general direction and call it good because there's no way they can get enough detail to respond with an estimate in time to be considered unless they do.
Estimating in points is an estimation of complexity... something that a developer probably has a better concept of than how many hours it will take to do something she has never done before. If you think about the estimate in hours, the normal conclusion is, "If you've done it before, this time it will take less time to finish". However, complexity does not change based on the number of times you have done something. In fact, an estimate of complexity becomes more accurate with repetition. Past experience may have an impact on velocity or it may not, it all depends on the impact of the slight changes, but those should be factored in during the estimation of complexity.
The best part about estimating in points is, historical performance CAN be a valid input. We can say that, in general, our teams finish x points per week(velocity). This allows us to develop a timeline based on average velocity that is more accurate than using past performance by feature. How can I make that assertion? Because quite simply, even similar functionality is still different. So creating a one page checkout for an e-commerce site is not necessarily going to take even a similar amount of time across different projects. Since points apply to overall complexity, not to individual features, the sample set is larger so you have more data to draw on and you can develop a better average.
The idea is to get an average baseline that is more accurate so you deliver on time and within budget or recognize that you are off your timeline earlier, allowing you to set customer expectations properly. The more you can expand your sample set, the greater your chances of achieving an accurate average. By using a point system, you have a unit of measure that stretches across many different projects with different functionality. The result is a wider cross section and more data from which to base your timeline estimates. While I do not propose that this as the magic answer to the problem of inaccurate estimates, I do believe it is a way to be more accurate. When paired with other agile principles such as brutal honesty and adaptability, you are in a better position to succeed in your project as a whole while maintaining happier customers and a happy, well balanced staff.
I'm not going to pretend I have the answer to that. If I did I'd be writing a book instead of a blog and all my code would be written for fun and curiosity because I wouldn't need to write code for a living anymore. However, I have a suggestion for where the problem lies, and that is in estimation.
There are lots of ways to be wrong during the estimation process... it's a lot easier to be wrong than right. I think those reasons have been covered ad nauseum. You know the least about the project in the beginning, you don't know if the client has described their needs correctly, you aren't sure the client even knows their needs or has the ability to articulate them and, above all, you don't know what you don't know. For the most part, that stuff is given and there's very little you can do about it.
Many software companies try to use past performance on similar features to indicate future results. However, in general past performance on a feature has very little to do with future results unless the problems are identical. Most people are familiar with the concept that sometimes it's the last 5% of the work that takes 90% of the time. So we know and accept that small differences in functionality can make huge differences in development time.
There are several reasons agile projects succeed where waterfall projects fail, first is adaptability. It's easy to succeed when you simply modify the definition of success to fit into what you can accomplish given other constraints. However, one could also say the definition of success is usually wrong from the beginning so hopefully it moves correctly to a more realistic definition.
Second is brutal honesty as early as possible... and this is probably where most agile projects that fail fall apart. Being brutally honest with clients is not very easy and no one's idea of a good time.... let alone doing it before anyone else perceives it as a problem. The logic enters in that "maybe I can fix this before anyone notices it was a problem". 63 hours later in a task that was supposed to last 8, you are forced to admit that your attempts have failed. The difference is that now you have reached the same result and there are 10-12 other tasks that have suffered because of it. So you try to work extra to catch up causing more problems in your ability to perform professionally as well as in your personal responsibilities to your family and to yourself.
How does that have anything to do with story points as an estimation tool? The answer is, honesty matters. Not that developers are being intentionally deceptive, but we have a tendency to estimate the best case or what we think is the worst case. No matter how honest a developer tries to be in giving an hours estimate, there is always a tendency for the thought to lodge in the back of his mind that they have to give a number of hours that is acceptable rather than the number of hours he actually thinks the work is going to take. In addition, especially in the beginning of the project or in the estimation process, the tasks are so large that most just throw a rock in the general direction and call it good because there's no way they can get enough detail to respond with an estimate in time to be considered unless they do.
Estimating in points is an estimation of complexity... something that a developer probably has a better concept of than how many hours it will take to do something she has never done before. If you think about the estimate in hours, the normal conclusion is, "If you've done it before, this time it will take less time to finish". However, complexity does not change based on the number of times you have done something. In fact, an estimate of complexity becomes more accurate with repetition. Past experience may have an impact on velocity or it may not, it all depends on the impact of the slight changes, but those should be factored in during the estimation of complexity.
The best part about estimating in points is, historical performance CAN be a valid input. We can say that, in general, our teams finish x points per week(velocity). This allows us to develop a timeline based on average velocity that is more accurate than using past performance by feature. How can I make that assertion? Because quite simply, even similar functionality is still different. So creating a one page checkout for an e-commerce site is not necessarily going to take even a similar amount of time across different projects. Since points apply to overall complexity, not to individual features, the sample set is larger so you have more data to draw on and you can develop a better average.
The idea is to get an average baseline that is more accurate so you deliver on time and within budget or recognize that you are off your timeline earlier, allowing you to set customer expectations properly. The more you can expand your sample set, the greater your chances of achieving an accurate average. By using a point system, you have a unit of measure that stretches across many different projects with different functionality. The result is a wider cross section and more data from which to base your timeline estimates. While I do not propose that this as the magic answer to the problem of inaccurate estimates, I do believe it is a way to be more accurate. When paired with other agile principles such as brutal honesty and adaptability, you are in a better position to succeed in your project as a whole while maintaining happier customers and a happy, well balanced staff.
Related articles
- Algorithmically Estimating Developer Time (leftnode.com)
- When Do You Say A Development Task Is Really Done? (regulargeek.com)
- Make Agile Work for You in TFS 2010 (onestopdotnet.wordpress.com)
- Measuring Business Value (herdingcats.typepad.com)
Thursday, August 25
x2x beats synergy in a 2 computer configuration
I have used synergy for years so when my laptop is on my desk I can easily use one keyboard to control both my desktop and laptop. However, either through recent changes in X windows or changes in synergy, I often have issues where left clicking and keyboard operations are simply broken.
Enter x2x. There are a number of limitations, not the least of which is an inability to share clipboard and you are limited to 2 computers. The clipboard is a slight limitation, but I've never had a need for more than 3 or 4 displays and two computers can easily keep up with that requirement.
The most important things to me are speed and stability and I get both of those with x2x. I also don't need start software on both machines to make it work, ssh does all of that for me. However, I do need to have x2x installed on both machines. On Ubuntu that's s simple command:
Next, on the computer that is sharing the keyboard and mouse(the from machine), execute this command:
If you have set up key authentication, this will automatically log you in and start the session. If you specify -east like I did and you move your mouse off the right side of the screen, it will now show up on the host that you specified. I have not had the opportunity to do so yet, but at some point I will try it the opposite direction, specifying -from instead of -to in order to see if I can make this work every time I turn my laptop on and my desktop is available on the network. You can do this with a simple startup script that does a single ping to a machine on the network and returns the result. Theoretically(as I said I haven't tested yet) this should work.
EDIT: Confirmed, the code above works quite well. Set that up as a startup script in Gnome and it will automatically share mouse and keyboard whenever you start up the machines on the same network.
Enter x2x. There are a number of limitations, not the least of which is an inability to share clipboard and you are limited to 2 computers. The clipboard is a slight limitation, but I've never had a need for more than 3 or 4 displays and two computers can easily keep up with that requirement.
The most important things to me are speed and stability and I get both of those with x2x. I also don't need start software on both machines to make it work, ssh does all of that for me. However, I do need to have x2x installed on both machines. On Ubuntu that's s simple command:
sudo apt-get install x2x
Next, on the computer that is sharing the keyboard and mouse(the from machine), execute this command:
ssh -XC user@host x2x -east -to :0.0
If you have set up key authentication, this will automatically log you in and start the session. If you specify -east like I did and you move your mouse off the right side of the screen, it will now show up on the host that you specified. I have not had the opportunity to do so yet, but at some point I will try it the opposite direction, specifying -from instead of -to in order to see if I can make this work every time I turn my laptop on and my desktop is available on the network. You can do this with a simple startup script that does a single ping to a machine on the network and returns the result. Theoretically(as I said I haven't tested yet) this should work.
ping -c 1 host
result=$?
if [ 0 -eq $result ]; then
ssh -XC user@host x2x -west -from :0.0
fi
Wednesday, March 30
ActiveInbox makes Gmail perfect
I am a huge fan of GMail. I use it for almost everything and I have since it really was in beta. I use it for personal mail, I've set up my whole family on it for their mail, and I even use it as a viewer for my mail at work. They aren't cheap, they'd buy me Outlook, but besides the fact that they don't make an Outlook for Linux, I like GMail's tools better. Google has it's hooks in me for sure. However, the addition of a one browser extension makes Gmail everything it wasn't before. That extension is ActiveInbox.
If you haven't tried it before, ActiveInbox add a GTD workflow that those of us who fight with their inbox every day a little bit of clarity of mind. You have all the tools. Quick labels for status, you get context, references, and some tools like a quick view on emails(no loading the email in a new page, the mail comes up lightbox style), and in the Plus product($2 / month) you get killer features like tickler/deadlines and notes on emails, which is something I've wanted forever and never had a good option.
When you add these tools to the newer tools like multiple inboxes and Smart Labels, it really gives you the tools to get your inbox to zero quickly and accurately without having to do a lot of manual sorting and archiving. That's the real killer part about it, because everyone starts with a plan, but unless that plan is easy to implement or you have the discipline of a Marine, the plan eventually falls apart and the inbox goes back to chaos.
If you haven't tried it before, ActiveInbox add a GTD workflow that those of us who fight with their inbox every day a little bit of clarity of mind. You have all the tools. Quick labels for status, you get context, references, and some tools like a quick view on emails(no loading the email in a new page, the mail comes up lightbox style), and in the Plus product($2 / month) you get killer features like tickler/deadlines and notes on emails, which is something I've wanted forever and never had a good option.
When you add these tools to the newer tools like multiple inboxes and Smart Labels, it really gives you the tools to get your inbox to zero quickly and accurately without having to do a lot of manual sorting and archiving. That's the real killer part about it, because everyone starts with a plan, but unless that plan is easy to implement or you have the discipline of a Marine, the plan eventually falls apart and the inbox goes back to chaos.
Related articles
- 10 Essential Tricks To Keep Your Inbox Neat And Tidy (businessinsider.com)
- Gmail Unveils Another Weapon Against Email Overload: Smart Labels (techcrunch.com)
- Press & Buzz | Better Gmail. Turn Gmail into a productivity powerhouse with ActiveInbox (activeinboxhq.com)
- Keep Track of Sent Email Status with a "Waiting For" Label in Gmail [Gmail Tip] (lifehacker.com)
- ActiveInbox for Gmail help with project management (creativebits.org)
Thursday, March 24
Perl 9 from the wife's perspective
In case you missed the not-so-recent interview on linuxformat.com, there was a fantastic and hilarious response from Gloria Wall(Larry Wall's wife) that I thought could be highlighted.
LXF: You said that Perl 6 was your one chance to break backwards compatibility. Do you think Perl 9 might be the same thing again?
GW: There's not going to be a Perl 9.
Larry went on to talk about how Perl might get to a major release 9, but the way I picture that in my head is my wife responding to a question like that about something I was working on that had consumed a major portion of my life. To me, that is some funny stuff... in the spirit of "Wife says no, Apple says yes".
Wednesday, March 16
There's no going back now - A.K.A my newfound love for git
I have toyed with version control systems for years now, seeking a way to have a single process that can accommodate the way I need to work with version control for different projects and applications. I have done my time with sccs, CVS, SVN, ClearCase, and so on. I've also had a brief affair with bazaar. But so far I think I've found the one to settle down with... and that is git.
My requirements are pretty simple. As a developer, I want simple things to be simple and hard things to be possible. I want to work with SVN because that's what everyone usually uses. But I want the ability to commit and revert locally before sending it all to the central repository. I also want to check it all in at once... there's no reason to check in the entire history of my experiments. What I check into the the central repo should be a clean change. My version control should do it's job and stay out of the way while exposing enough features to me that I can make up for mistakes and share my code efficiently.
As an admin, I want the freedom to be able to pick exactly what goes into a deployment branch. If feature a, b, and c were planned for a release but c is lagging behind and won't make it, I want the ability to just get a and b. Git gives me that fairly easily. It also allows me to make up for the shortcomings of other version control systems. For instance, the cherry pick feature allows me to pick up individual commits and pull them into another branch. Git makes working with branches very simple and while I'm not terribly proficient with it yet(i.e. I still have to do a lot of google searching to get what I want), I have yet to run into a way that I want to manage my files that I could not do in git.
As an end user, and this really seals the deal, I have a need that I've always wanted to manage with version control and that is, store other data... OpenOffice documents, notes, etc... the stuff that goes in your "Documents" directory. I can also do that with git and the file compression makes it easy to put my documents on a shared drive so I have it on all my machines, it's always backed up, always available, and always up to date.
In short, if you're thinking of evaluating version control systems, I suggest trying git as your first option. You may end up trying out others but my guess is you'll like git enough for it to be your vcs of choice as well.
My requirements are pretty simple. As a developer, I want simple things to be simple and hard things to be possible. I want to work with SVN because that's what everyone usually uses. But I want the ability to commit and revert locally before sending it all to the central repository. I also want to check it all in at once... there's no reason to check in the entire history of my experiments. What I check into the the central repo should be a clean change. My version control should do it's job and stay out of the way while exposing enough features to me that I can make up for mistakes and share my code efficiently.
As an admin, I want the freedom to be able to pick exactly what goes into a deployment branch. If feature a, b, and c were planned for a release but c is lagging behind and won't make it, I want the ability to just get a and b. Git gives me that fairly easily. It also allows me to make up for the shortcomings of other version control systems. For instance, the cherry pick feature allows me to pick up individual commits and pull them into another branch. Git makes working with branches very simple and while I'm not terribly proficient with it yet(i.e. I still have to do a lot of google searching to get what I want), I have yet to run into a way that I want to manage my files that I could not do in git.
As an end user, and this really seals the deal, I have a need that I've always wanted to manage with version control and that is, store other data... OpenOffice documents, notes, etc... the stuff that goes in your "Documents" directory. I can also do that with git and the file compression makes it easy to put my documents on a shared drive so I have it on all my machines, it's always backed up, always available, and always up to date.
In short, if you're thinking of evaluating version control systems, I suggest trying git as your first option. You may end up trying out others but my guess is you'll like git enough for it to be your vcs of choice as well.
Labels:
Concurrent Versions System,
Git,
GitHub,
Revision control,
Source code
Thursday, January 6
How to extract ISBN from PDF e-books
Here's a super simple script to extract the majority of US/English ISBN numbers from a pdf file in Linux. The dependency, if you don't already have it is pdftk... but if you do anything with pdf files, you probably have it. If you need to look for other formats or you have suggestions for improving the script, please feel free to comment.
for file in $(ls)
do
echo --- $file
pdftk $file output - uncompress | grep -o "\([0-9]\{3\}-\)\?[0-9]-[0-9]\{3,5\}-[0-9]\{3,5\}-[0-9X]"
done
Make sure you remove spaces first though because they really leave a mark with this script. You can do that like this:http://techgurulive.com/2008/09/22/how-to-remove-spaces-from-filenames-linux/
for file in $(ls)
do
echo --- $file
pdftk $file output - uncompress | grep -o "\([0-9]\{3\}-\)\?[0-9]-[0-9]\{3,5\}-[0-9]\{3,5\}-[0-9X]"
done
Make sure you remove spaces first though because they really leave a mark with this script. You can do that like this:http://techgurulive.com/2008/09/22/how-to-remove-spaces-from-filenames-linux/
Monday, December 20
A mono-free Ubuntu desktop
An interesting thing turned up with the latest release of Ubuntu. The replacement of f-spot with shotwell along with the ppa for Synapse has freed me from my mono dependency. Previously there was no way I was giving up gnome-do and I have a love-hate relationship with f-spot. However, since I couldn't find anything I liked better, f-spot it is.
Now, no one is going to confuse me with RMS as far as free software goes. I am not necessarily dumping mono because of any free software concerns. I am all for making money if you can off writing software, and I don't ascribe to the idea that software is knowledge that should be shared with everyone. In my opinion, software is knowledge applied, which inherently makes it the intellectual property of the person or people who applied it. The thing that makes open source software so practical and, by nature free, is the fact that many people collaborate, so many that you either need to form some type of organization out of the contributors if you are going to make the software proprietary, or you open source and give it away because it just isn't worth the trouble to determine ownership share and so on. That's a decision that is solely the developers and shouldn't be anyone's business in terms of pressure to make it open or closed.
That being said, the practical nature of open source usually means a better product for a number of reasons, not the least of which are artificial timelines and resource limitations that software companies are hampered with. Don't get me wrong at all, I love open source software; I love the collaboration, I love the fact that it's a way to reduce cost for businesses, and I love the fact that such good software is available. Lets face it, there are a large number of small businesses around the world who simply couldn't compete without open source software. I just don't like the idea that the community can enforce it's sometimes artificially moralistic sentiment that software should be free... which is usually formed by people who just want software for free(as in beer) and don't give a rip about freedom(as in speech).
So why do I care about getting rid of mono at all? I just don't like useless crap on my machine. One of these days I'll get around to writing the article on why C# was a stupid idea and basically a redundant language but, in essence, I have seen mono in the past as a means to an end, one of those means being real interaction with an exchange server. However, hasn't become a reality and I don't think it will be. So right now, aside from the two programs I have needed it for in the past, mono is mostly useless to me.
Anyway, since I did the update from 10.04 to 10.10 and I have been heavily reliant on gnome-do mono came along for the ride. However, a recent article I read on Synapse made me realize that, with the addition of Shotwell, I have replacements for all the mono-dependent software on my machine. So out with Tomboy, F-Spot, and Gnome-do. In with GNote, Shotwell, and Synapse. So far so good. I don't find that I'm missing much if anything and it feels good to keep my system clean.
Wednesday, October 13
Why does agile need a label?
The agile manifesto is so much simpler. Value individuals and interactions, working software is the number one goal, customer collaboration and response to change.... these are the concepts that so eloquently described the essence of the movement. Yet, it didn't take long for people to define what those meant in terms of processes with tools that helped implement the processes. It didn't take long for people to start saying, "This is how agile will work, it can't work that way." or "You MUST have a stand up meeting" and "You must use story cards only on white 3x5 index cards that must be pinned, not stapled, glued, or otherwise fastened to a bulletin board with exposed cork only and no one can do anything if they aren't told to do so by the index card and if you use software that's a tool and that's not agile."
What we're missing here is that many of these practices were already being done in a somewhat disorganized way because they worked. Having a colleague look at a problem with you was just called "helping" before it had the term "pair programming". Talking to a customer to refine requirements during the development process was just being complete and paying attention to detail before it became a part of a process.
It would have been amazing to be in the room when the authors of the Agile Manifesto were defining these things, but they weren't discovering new territory. They were defining and simplifying to the concepts that, in their experience, made the difference between successful and failed projects. At least that's my impression of the Agile Manifesto having not actually been in the room. :)
Do what works. If you want to label something as agile, that's it. It means at the end of a period of time you have to spend some time evaluating if your choices worked or not, but it's a lot better than having people roll their eyes and perform a task because it's required of them, not because it does something valuable.
Related articles
- Manifesto for Half-Arsed Agile Software Development (halfarsedagilemanifesto.org)
- Agile, Agile, Everywhere? (theproductologist.com)
Saturday, October 9
A way for Linux to succeed as a gaming platform
If there's one thing where I have to concede the superiority of Windows to Linux, it is in the gaming world. Not because DirectX is so much better than OpenGL or because the engines are better or anything fundamental to technology. It's a 100% business decision, no one is willing to spend millions of extra dollars in game development, possibly to the detriment of gameplay, for the game to be cross-platform for the 1% of their population it will serve. It's the same reason a lot of software and native hardware drivers are not available for Linux. In most cases, the open source community writes the drivers they need for hardware and the projects are small enough that most hardware ends up getting support by people who need to do it in order to make their equipment work. However, for large, complex software such as big title games, it's tough for open source developers to product equivalent products. So for the most part, the gaming landscape for linux pretty much stinks.
There are a few major issues. The number of different distributions is one of them. With differences in dependencies and the fractured nature of the way linux is distributed, it is tough for a gaming vendor to predict all the different dependencies available to them. There needs to be an abstraction layer that takes care of all this, but such an abstraction layer could definitely hinder performance.
Another issue is cohesiveness. Just as there are lots of different dependencies on different distributions, there are lots of different choices as far as window and display managers.
There is, however, a way for Linux to succeed as a gaming platform and that's for hardware vendors like Nvidia and ATI to use the open source nature of Linux to their advantage and write their own "console" that runs on Linux. They have already started doing this in a lot of the quick-boot media only distros that ship with some laptops. You may be familiar with these if you have a computer where you can pop in a DVD and bring up a player without booting the entire operating system. These players are often embedded into the chipsets and, more often than not, there's a Linux kernel running somewhere under the covers there. Why not take that idea and give users a way to suspend their currently running session(regardless of hardware) to disk, and reboot their system in the "console" giving the user the opportunity to install and run gaming software titles. This could work regardless of operating system, provide gaming vendors with the same consistency they now get with DirectX on Windows, give users nearly bare-metal performance since the system is devoting almost all its resources to the gaming environment with no interruption for overhead from OS services, and give all users access to the full gambit of gaming titles regardless of operating system they are using.
I know what you're going to say, technically this is not gaming on Linux in the same way you may have thought about it previously. But it is using the Linux kernel to provide a working system for a hardware vendor to work from that already provides a massive amount of hardware support, is low on resource consumption, inherently secure, and proven to work well in environments where optimum performance is a must. It's already proven that it can work as a quick booting, media environment on numerous PCs, and everyone knows that the fact that it is open source means that game developers can optimize their code to the environment rather than having to guess at how Windows is doing something behind the scenes.
There are a few major issues. The number of different distributions is one of them. With differences in dependencies and the fractured nature of the way linux is distributed, it is tough for a gaming vendor to predict all the different dependencies available to them. There needs to be an abstraction layer that takes care of all this, but such an abstraction layer could definitely hinder performance.
Another issue is cohesiveness. Just as there are lots of different dependencies on different distributions, there are lots of different choices as far as window and display managers.
There is, however, a way for Linux to succeed as a gaming platform and that's for hardware vendors like Nvidia and ATI to use the open source nature of Linux to their advantage and write their own "console" that runs on Linux. They have already started doing this in a lot of the quick-boot media only distros that ship with some laptops. You may be familiar with these if you have a computer where you can pop in a DVD and bring up a player without booting the entire operating system. These players are often embedded into the chipsets and, more often than not, there's a Linux kernel running somewhere under the covers there. Why not take that idea and give users a way to suspend their currently running session(regardless of hardware) to disk, and reboot their system in the "console" giving the user the opportunity to install and run gaming software titles. This could work regardless of operating system, provide gaming vendors with the same consistency they now get with DirectX on Windows, give users nearly bare-metal performance since the system is devoting almost all its resources to the gaming environment with no interruption for overhead from OS services, and give all users access to the full gambit of gaming titles regardless of operating system they are using.
I know what you're going to say, technically this is not gaming on Linux in the same way you may have thought about it previously. But it is using the Linux kernel to provide a working system for a hardware vendor to work from that already provides a massive amount of hardware support, is low on resource consumption, inherently secure, and proven to work well in environments where optimum performance is a must. It's already proven that it can work as a quick booting, media environment on numerous PCs, and everyone knows that the fact that it is open source means that game developers can optimize their code to the environment rather than having to guess at how Windows is doing something behind the scenes.
Sunday, August 8
Did I do *anything* today?
Ever get to the end of your day and ask yourself that question? I often have that sinking feeling that I just got nothing done because I have nothing to show for it. I may have spent the day doing useful things like helping a colleague accomplish a task or giving direction or helping with sales, but if there's nothing to show for it at the end it's tough to know what just happened.
In the windows world there are apps like "RescueTime" that monitor your environment and tell you what you've been doing... but that I know of, there is nothing like that for Linux. That is, until now.
http://github.com/lightsaber/Script-Central/blob/master/incubator/worklog.sh
The amazing thing is, I could do it all in a shell script of less than 100 lines. It gets a little hack-ish in that I have to depend on the dbus api from gnome-screensaver, but it's a fairly accurate way to do it. Anyway, if it's something you've been wanting for linux, give it a shot and see if i does what you are looking for.
** Disclaimer: This app will record what you are looking at if it is reported by xprops or dbus. It does not log keystrokes and does not send any information off to me or anyone else. That said, I am not responsible if this script logs you doing something you weren't supposed to be doing nor the ramifications of that action. I use it to monitor the way I spend my time while on my computer. If your wife catches you watching porn that is 100% your fault.
In the windows world there are apps like "RescueTime" that monitor your environment and tell you what you've been doing... but that I know of, there is nothing like that for Linux. That is, until now.
http://github.com/lightsaber/Script-Central/blob/master/incubator/worklog.sh
The amazing thing is, I could do it all in a shell script of less than 100 lines. It gets a little hack-ish in that I have to depend on the dbus api from gnome-screensaver, but it's a fairly accurate way to do it. Anyway, if it's something you've been wanting for linux, give it a shot and see if i does what you are looking for.
** Disclaimer: This app will record what you are looking at if it is reported by xprops or dbus. It does not log keystrokes and does not send any information off to me or anyone else. That said, I am not responsible if this script logs you doing something you weren't supposed to be doing nor the ramifications of that action. I use it to monitor the way I spend my time while on my computer. If your wife catches you watching porn that is 100% your fault.
Thursday, June 17
How to set up Exchange synchronization with Gmail
For many of us, we prefer the tools in Gmail to the tools in a client like Outlook. I love the organization tools in Gmail and the fact that I can pull up my full email environment anywhere. A a linux user, Microsoft's web interface doesn't work nearly as well as it does in IE, a fact which I am more than prepared to live with given the fact that I like the way Gmail automatically and more intelligently threads conversations and much better search functionality.
Before starting this process, it would be helpful to get the POP3 and SMTP hosts, ports, and any special login information from your Exchange administrator.
First, set up the ability to pull your exchange mail into your Gmail account. You can do this from the Settings > Accounts page in Gmail.
If you are already an Exchange user and like to use features like rules and search folders, you can very easily replicate that functionality in Gmail. Gmail calls rules "Filters". You can create new filters either by clicking "Create a filter" in the minuscule print next to the search box. Your other option is to select messages like the ones you want to create a filter for, go to the "More Actions" drop down, and select "Filter messages like these". Unlike Outlook, you won't get as nice of a wizard to walk you through the steps, but it's still fairly easy. Gmail uses Operators or special keywords you can use in your searches to increase the accuracy of your searches. These are helpful in both filters and Quick Links, Google's answer for search folders.
Quick Links are a "Labs" feature or something that Google is actively developing. There are many useful Labs features that will make it easier for you to make the switch from Exchange to Gmail. Basically, Quick Links allow you to turn any search you do in mail into a Search folder or something you can access again with one click. Once you enable the Quick Links gadget, return to your inbox and, if you need a search that only returns unread mail in your inbox, search for: "label:unread in:inbox". If that search returns what you're looking for, click "Add Quick Link" and you will always be able to return to this query without the need to retype it.
Other labs features that are useful in this setup are:
Hopefully you'll find these suggestions useful in making the transition from Outlook to Gmail.
Before starting this process, it would be helpful to get the POP3 and SMTP hosts, ports, and any special login information from your Exchange administrator.
First, set up the ability to pull your exchange mail into your Gmail account. You can do this from the Settings > Accounts page in Gmail.
- Click on "Add a mail account you own"
- Enter fill out the form. You may need help from your exchange admin for the values you'll need.
- If you are going to get your Gmail and Exchange mail in the same place, accept the option to automatically label incoming mail from that account.
- Where possible, it is a good idea to use SSL when retrieving mail
- Leaving a copy of the message on the Exchange server is a good backup in case your gmail account isn't working properly or you want to go back to using Exchange/Outlook at some point in the future. You need to make sure you follow your company's record retention schedule and you don't allow your inbox to go over it's limit.
- Next you will be asked if you want to send mail from this address. Answer yes and click on "Next Step"
- Follow the prompts. When it comes to the selection for "Send mail through your SMTP server", select "Send through
's SMTP server". You may need to get the following information from your Exchange admin: - SMTP Server:
Port:
- Username:
- Password:
- Click "Add Account"
If you are already an Exchange user and like to use features like rules and search folders, you can very easily replicate that functionality in Gmail. Gmail calls rules "Filters". You can create new filters either by clicking "Create a filter" in the minuscule print next to the search box. Your other option is to select messages like the ones you want to create a filter for, go to the "More Actions" drop down, and select "Filter messages like these". Unlike Outlook, you won't get as nice of a wizard to walk you through the steps, but it's still fairly easy. Gmail uses Operators or special keywords you can use in your searches to increase the accuracy of your searches. These are helpful in both filters and Quick Links, Google's answer for search folders.
Quick Links are a "Labs" feature or something that Google is actively developing. There are many useful Labs features that will make it easier for you to make the switch from Exchange to Gmail. Basically, Quick Links allow you to turn any search you do in mail into a Search folder or something you can access again with one click. Once you enable the Quick Links gadget, return to your inbox and, if you need a search that only returns unread mail in your inbox, search for: "label:unread in:inbox". If that search returns what you're looking for, click "Add Quick Link" and you will always be able to return to this query without the need to retype it.
Other labs features that are useful in this setup are:
- Canned Responses - You can use these to send out frequently used messages as well as create auto-responders that work off filters.
- "Don't forget Bob" - If you often send mails to the same groups of people, Google this extension will automatically remind you if you suddenly leave one person in the group out.
- Google Calendar Gadget - Adds a more PIM/Outlook type feel by giving you a view of your calendar agenda side by side with your mail.
- Mail Goggles - We've all sent an email we wish we could have back. Whether we typed it up while we are tired, angry, or otherwise incapacitated, having a clear head while communicating with others is a good thing unless you like collecting unemployment. Goggles makes sure you are operating with a clear head when you send mail.
- Refresh POP accounts - Google doesn't offer a schedule to recheck your pop accounts so your inbox may not always be right in sync with your Exchange email. This extension causes the refresh link to also check your pop accounts.
- Undo Send - Somewhat like "Mail Goggles" but a little less demanding. If you tend to hit the Send button a little too aggressively, this is a good extension for you. It essentially holds onto your mail for a few seconds before actually sending it, allowing you to cancel the send if you notice something wrong. This is the extension you wish you had for your mouth when you say something, realize your mistake mid sentence, and wish you could pull it all back.
- "Got the wrong Bob?" - Makes sure you're sending mail to the right person when names are similar. The algorithm is based off your groups of often mailed people so it will most likely work better the more you use it.
Hopefully you'll find these suggestions useful in making the transition from Outlook to Gmail.
Tuesday, June 8
The devil you know...
For all of my chest beating and pontificating about how much Verizon sucks and how awesome the Evo 4G is and so on... last Sunday I went out and bought a Droid Incredible... selling myself and my family to Big Red for 2 more years.
The shame. Don't get me wrong. I still hate Verizon Wireless. I just don't hate them enough to pay $200 more in up front fees and $40 more per month in service fees for services I will rarely, if ever, use.
Strike 1, as I've mentioned, I live in a rural area. 4G won't be here for a while, I'm not spending $480 per phone($10 service fee x 2 phones x 24 month contract) for service I might get once or twice a week when I have to go back to civilization.
Strike 2, my parents are never... ever... EVER going to use data. Yet if I wanted the unlimited data plan, I was going to have to pay an extra $10 per phone in service fees for each of their phones because they share with me. The whole idea of that is, they don't have to pay all the extra overhead for service and they get a cell phone in case of emergency.
Strike 3, well, when I played with the Evo, my first impression was, "Wow, this is the coolest phone I have ever seen!" And to be honest, that is still my impression. It blows every single phone made for the US market off the planet. However, if signal is king then service offering is queen. A cool phone is just a concubine... used until the next cool thing comes along. Price is only the deciding factor when two services are equal or at least mostly equal. As phone companies continue to find new and better ways to keep people from using services they haven't paid for, my question to them is... WHY? Why do you do this? The mobile hotspot was one of the key features I wanted in the Evo and then Sprint decided to upcharge it... significantly. That makes the Evo like a world champion sprinter with his legs tied together. They say, "Hey, we'll untie his legs for you if you pay us an extra $30 a month." Uh... no. I'll untie his legs myself and when he's done I'll beat you with his gold medal.
Let me be clear Sprint... if you're reading this... which you probably aren't but it makes me feel better to say it publicly... you lost $500 in equipment fees, and customer that would have been paying about $150 a month for service because of your stupid $30 up-charge. You, the reader, at this point may say, "Well, it's only $30, why don't you just pay for it if you want it." The answer is, and I mean this in the kindest possible way, "BECAUSE I'VE ALREADY FRIGGIN PAID FOR IT!!!". I'm paying $200 for a phone that has this capability built in. I am buying an unlimited data plan. At the risk of assuming you understand the meaning of the word "unlimited", why do you nickel and dime people because they are going to use a different device. Again, it's what Verizon does that makes me hate them.
So, rather than pay the extra money and move to a service provider who does all the same things I hate about my current provider, I decided to save a tiny bit of money, get a very good phone(HTC Incredible), and stick with the devil I know.
Oh, and one more time just for posterity... I still hate you Verizon.
The shame. Don't get me wrong. I still hate Verizon Wireless. I just don't hate them enough to pay $200 more in up front fees and $40 more per month in service fees for services I will rarely, if ever, use.
Strike 1, as I've mentioned, I live in a rural area. 4G won't be here for a while, I'm not spending $480 per phone($10 service fee x 2 phones x 24 month contract) for service I might get once or twice a week when I have to go back to civilization.
Strike 2, my parents are never... ever... EVER going to use data. Yet if I wanted the unlimited data plan, I was going to have to pay an extra $10 per phone in service fees for each of their phones because they share with me. The whole idea of that is, they don't have to pay all the extra overhead for service and they get a cell phone in case of emergency.
Strike 3, well, when I played with the Evo, my first impression was, "Wow, this is the coolest phone I have ever seen!" And to be honest, that is still my impression. It blows every single phone made for the US market off the planet. However, if signal is king then service offering is queen. A cool phone is just a concubine... used until the next cool thing comes along. Price is only the deciding factor when two services are equal or at least mostly equal. As phone companies continue to find new and better ways to keep people from using services they haven't paid for, my question to them is... WHY? Why do you do this? The mobile hotspot was one of the key features I wanted in the Evo and then Sprint decided to upcharge it... significantly. That makes the Evo like a world champion sprinter with his legs tied together. They say, "Hey, we'll untie his legs for you if you pay us an extra $30 a month." Uh... no. I'll untie his legs myself and when he's done I'll beat you with his gold medal.
Let me be clear Sprint... if you're reading this... which you probably aren't but it makes me feel better to say it publicly... you lost $500 in equipment fees, and customer that would have been paying about $150 a month for service because of your stupid $30 up-charge. You, the reader, at this point may say, "Well, it's only $30, why don't you just pay for it if you want it." The answer is, and I mean this in the kindest possible way, "BECAUSE I'VE ALREADY FRIGGIN PAID FOR IT!!!". I'm paying $200 for a phone that has this capability built in. I am buying an unlimited data plan. At the risk of assuming you understand the meaning of the word "unlimited", why do you nickel and dime people because they are going to use a different device. Again, it's what Verizon does that makes me hate them.
So, rather than pay the extra money and move to a service provider who does all the same things I hate about my current provider, I decided to save a tiny bit of money, get a very good phone(HTC Incredible), and stick with the devil I know.
Oh, and one more time just for posterity... I still hate you Verizon.
Saturday, May 22
Google TV ... SWEET!
So I can get a web browser and online tv content and my photos and audio all in one thing. Thats so AWESOME!
Well, it would have been in 2005 anyway.
The fact that you can already do this on PS3, MythTV, Apple TV, Boxee, Windows Media Center, and a number of open source projects, one has to wonder, "What's the point?" The only benefit I see is that Google has the power to bring in the networks and cable TV. Otherwise, already done very well and this is a really blah announcement.
I would love for someone to show me how I'm missing the big picture and how this revolutionizes TV. But from what I saw in their little video, it didn't seem like they were doing much if anything more than Boxee.
Well, it would have been in 2005 anyway.
The fact that you can already do this on PS3, MythTV, Apple TV, Boxee, Windows Media Center, and a number of open source projects, one has to wonder, "What's the point?" The only benefit I see is that Google has the power to bring in the networks and cable TV. Otherwise, already done very well and this is a really blah announcement.
I would love for someone to show me how I'm missing the big picture and how this revolutionizes TV. But from what I saw in their little video, it didn't seem like they were doing much if anything more than Boxee.
Thursday, May 20
Block selection in Eclipse Helios M7 - FINALLY!
If you are used to having block selection in editors like vi, jEdit, TextPad and so on, it's probably been grating on you for years that you can't use those tools in Eclipse. Those days are over... block selection is here. To toggle it on, use Shift+Alt+a. Vwrapper doesn't yet work with shift+v but I'm sure that's just an update away. Finally, some real text editing tools in Eclipse!
Subscribe to:
Posts (Atom)

