Showing posts with label technology. Show all posts
Showing posts with label technology. Show all posts

Monday, March 25, 2013

Creating a New App (step 1)

I decided I’d walk through creating a new app to replace one I’ve used for years on my iPhone that no longer appears to be maintained. The app in question is called GasBag which as near as I can tell stopped being updated in 2009 (see: http://blog.jam-code.com/).

 

I could just write a quick and dirty web app to store my mileage, but I figured I’d approach this as an exercise in building an iOS application with a design first approach.

 

At a high level, what I want is an app that easily captures my mileage, and allows me to save that information somewhere that won’t get destroyed. There are a number of features that GasBag had that I liked (for instance being able to send an email with my mileage information), and a number that it doesn’t have that would be nice (like allowing me to use it for multiple cars, or to do some data capture from a gas station receipt).

 

Monday, February 25, 2013

Eventbrite Calendar Feed

Screen Shot 2013-02-25 at 9.16.20 AMI volunteer and provide technical support for a few non-profits, one of which is the Project Management Institute San Francisco Bay Area Chapter (http://www.pmi-sfbac.org) where I serve as the VP of Operations and CGO.

One of the moves I made in my first year with them was to migrate our event calendar to Eventbrite and Meetup. One of the gaps I found with Eventbrite is that it doesn’t have a way to provide a feed of events that can be used to update an external calendar, so I embarked on a little programming effort to create one.

Most calendar programs allow you to pull external events using the iCalendar (ics) format, and Eventbrite actually has a pretty decent API to allow you to pull the events, so I decided to write a simple PHP script to allow me generate an iCalendar feed.

Screen Shot 2013-02-25 at 8.47.53 AMThis started as a simple one-off for PMI-SFBAC, but has turned into an open source project at https://code.google.com/p/eventbrite-ics/

Looking at the code, you can see it’s pretty basic, just a few PHP classes, some unit tests, Netbeans project and data.

Once the code was working, I used the iCalendar validator at http://severinghaus.org/projects/icv/ to make sure the results are good, and (at least for PMI-SFBAC) they are.

Eventually this results in a URL that I used as a feed into the All-in-One Calendar from Time.ly which lets me show events on my site’s calendar along with any other iCalendar feeds I choose to add.

Screen Shot 2013-02-25 at 8.59.20 AMTo configure the All-in-One calendar, I just go to the Events in the WordPress admin panel, and add the feed.

After I add the feed I click the “Refresh” button to make sure the events show up on my calendar immediately. The events then get updated on a periodic basis (daily by default), and should keep you up to date.

Screen Shot 2013-02-25 at 9.06.58 AMAnother use I put this feed to is to add the Eventbrite calendar to my Google Calendar.  I have a calendar feed from Meetup, and several of my friends so that I can quickly see what is going on that day.

The same basic idea for Google Calendar: you go to your Google Calendar, click the drop down on “Other Calendars” and choose “Add by URL”.

This gives you a nice view of events so that when you are scheduling things you can see what’s coming up that you might be interested in.

For those of you poor souls still using Outlook, the same feed can be used there as well see: http://office.microsoft.com/en-us/outlook-help/view-and-subscribe-to-internet-calendars-HA010167325.aspx

 

 

Wednesday, January 30, 2013

Changing a Web Site to use hosted WordPress

I got an email from my friend Athens who had just relaunched her web site at http://www.athenskconsulting.com/ but was now having problems with email.

The first thing I did was to run over to the MX Toolbox site to see what was going on with her servers. A quick look and saw that her mail servers were pointing to mail.athenskconsulting.com, which resolved back to her WordPress blog.

Before she pointed everything to her WordPress site, everything had been working. Unfortunately, the directions at http://en.support.wordpress.com/domains/map-existing-domain/ had given her some unfortunate information, that really weren’t accurate for what she was trying to do.

Her DNS and email were previously hosted at GoDaddy (along with her old web site), and all she was really trying to do was to get her company URL to point at the blog site that she’d set up on WordPress. The instructions I mentioned before give a way to accomplish that, by repointing the domain DNS servers to be the ones that WordPress provides.

The unfortunate thing about that approach is that in order for this transition to happen smoothly, you have to transfer all of your DNS records into the WordPress settings so that things like your mail server will continue to work (following the instructions at http://en.support.wordpress.com/domains/custom-dns/

Now this might be OK if you are a geek and know what MX and CName records should look like, but typing in a DNS file in the format that WordPress expects it is much more difficult than using the GoDaddy DNS control panel (which helps prevent you from making mistakes).

I got on the phone with her, and the first thing I had her do was to switch her DNS servers back to GoDaddy. This is done by going to the Domain Manager page in GoDaddy and looking for the section that says “Name Servers”.

Screen Shot 2013-01-30 at 4.10.04 PM
Clicking on the link that says “Set Nameservers” brings up a dialog that allows you to set the DNS (which had been set to the WordPress servers per the instructions mentioned previously):

Screen Shot 2013-01-30 at 4.10.23 PM

 

This of course fixed the mail problem (along with other URL’s), but broke her web site again (which I expected it would).

We then clicked the “Launch” link on the same Domain Manager page by looking for the section that says “DNS Manager”:

Screen Shot 2013-01-30 at 4.05.29 PM

 

This brings up the actual DNS zone editor that I talked about previously. Now the first thing you should do is to back up the zone records by using the import/export button on the DNS manager:

Screen Shot 2013-01-30 at 4.17.11 PM

This gives you the basic information that you might have needed if were you going to follow the instructions on the WordPress site. It creates a text version of the information of the DNS Zone records in a standard format.

But unless you really need to move off GoDaddy for some reason, you don’t want to do that. Instead, you just need to set up a wildcard CNAME record for the WordPress blog, and make sure to remove any old A records that might be pointing to the wrong place.

So for Athens, we needed to delete all of her “A” records (since she no longer has a physical server), and add a CName that looked like:

wildcard

And once DNS propogated, she was up and running again at http://www.athenskconsulting.com/

A quick trip back to the MX Toolbox site to check and her mail servers are now pointing back to GoDaddy again:

Screen Shot 2013-01-30 at 4.46.18 PM

Clicking the link that says “ns lookup” shows that the domain is now using the GoDaddy DNS servers again:

Screen Shot 2013-01-30 at 4.46.26 PM

The one other thing I do to make sure things are working is a DNS propogation check (http://www.whatsmydns.net/), which shows which servers will resolve the host and which don’t.
Screen Shot 2013-01-30 at 4.55.21 PM

All the little green checkmarks mean everything is happy all around the world, and now everybody is resolving her site properly.

So in summary: if somebody tells you to change your DNS servers, think first and see if an alias will work better …

Saturday, January 12, 2013

JPA and Maven and multiple persistence units

I needed to convert an existing Netbeans build to use Maven in order to stabilize the code and support Test Driven Development.

Generally this was a fairly simple process: just move all the source files and resources to the right folders in a new Maven project, and add the dependencies.

Everything was going swimmingly until I ran my first tests and got this really lovely set of errors that didn’t really tell me what was going on:

javax.annotation.processing.FilerException: Attempt to recreate a file for type com.omnistools.GaclAcl_

Now at this point I normally just do a few Google searches and find out how somebody else has solved this problem, but I really wasn’t having any luck at all finding an answer.

I did run across a couple of posts that mentioned seeing this error when using multiple persistence units in the persistence.xml.

Now my project does have a persistence unit for testing outside GlassFish (my chosen EJB container), so my first thought was to move that PU to the “right” place for my tests. So I copied the persistence.xml from src/main/resources/META-INF to the src/test/resources/META-INF and changed them so there was only one PU in each.

Well, that seemed to work for a minute, no more exception on the compile step. But now I had a new problem: I was getting an error that the PU couldn’t be found:

Tests in error:
testinsertTrackingCustomerUnFixed(com.omnistools.service.util.CompanyCustomerTrackingTest): No Persistence provider for EntityManager named ProjectTest-ejbPU
testinsertTrackingWithoutCustomerUnFixed(com.omnistools.service.util.CompanyCustomerTrackingTest): No Persistence provider for EntityManager named ProjectTest-ejbPU
testinsertTrackingCustomerFixed(com.omnistools.service.util.CompanyCustomerTrackingTest): No Persistence provider for EntityManager named ProjectTest-ejbPU
testinsertTrackingWithoutCustomerFixed(com.omnistools.service.util.CompanyCustomerTrackingTest): No Persistence provider for EntityManager named ProjectTest-ejbPU

So doing a bit of digging, it appears that the persistence.xml only gets copied once and only from the src/main/resources/META-INF folder.

I must have tried a thousand different permutations and combinations until I realized that I could have an ugly workaround that is not ideal.

The issue is that if both have the “exclude-unlisted-classes” set to true, the javac compiler tries to recreate the annotation classes during the compiler:compile and of course fails on the second PU because the classes have already been created.

So to get this to work, I set the “exclude-unlisted-classes” to false for one of the PU’s, which gets me the generated meta classes, and the tests fail (because the PU doesn’t include the required entities).

I then flip the flag back to true, and run the build again. Since the classes have already been compiled, the compile:compile doesn’t run, and the tests can succeed.

And then finally, I run across a bug report on the NetBeans site: http://netbeans.org/bugzilla/show_bug.cgi?id=183779. Now this bug talked about setting some compiler flags (in particular -proc:none which tells the compiler not to generate meta classes).

Workaround was proc:none to the javac compiler args as described here: http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html

        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-compiler-plugin</artifactId>            <version>2.3.2</version>            <configuration>                <source>1.7</source>                <target>1.7</target>                <compilerArguments>                    <endorseddirs>${endorsed.dir}</endorseddirs>                    <proc:none/>                    <Xlint/>                    <Xlint:-path/>                    <verbose />                </compilerArguments>                <showDeprecation>true</showDeprecation>            </configuration>        </plugin>

Now my Maven build works like a charm. Both persistence units are defined in my persistence.xml, and both have the “exclude-unlisted-classes” set to false, and not only do my tests work, but the deployment is now successful as well.

Thursday, December 6, 2012

Java 7 and Mac OS X

After getting my new Mac Mini pretty well set up with my development tools, I started playing with Amazon AWS. When trying to connect to one of my instances using their built in tool, Firefox bailed and I was presented with a prompt asking me if I wanted to install Java:

To open “Firefox,” you need a Java SE 6 runtime. Would you like to install one now?

Now this message looked very official, and I’d seen it before when starting up something on a new Mac that required Java, but since I’d already installed the latest JDK I was thoroughly confused. I thought, “OK, maybe you didn’t install Java after all”

So I popped open a terminal and

mini:~ robweaver$ java -version
java version “1.7.0_09″
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode.

OK, so that’s not it – so I changed browsers and tried the browser check at http://javatester.org again, only to get the same results …

Ouch – so I dug around a bit, and couldn’t find anything about how to fix it. And in fact the little bit I did find only confirmed that the browser plugin was active and the right version.

So finally I decided to punt and just let it install – Clicking the button to to let it start ran a package that looked like it was installing something, and when it was done another trip to javatester.org showed that somehow the plugin had been fixed and was now giving me the right version of Java in all my browsers.

Java Version tester

The only thing I can guess is that there was something that had to be set up on first use, but it did give me a start when being asked to install Java SE 6. Fortunately, whatever it did, it didn’t muck with my JVM and I’ll just have to hope that it didn’t break anything elsewhere.

 

Wednesday, December 5, 2012

Adding Missing PHP library on Mac OS X Mountain Lion (10.8)

I’m doing some work on a project that is using PHP, and have been working on setting up some continuous integration build scripts to make sure that we have a shot at catching errors before they make their way to production.

Recently some unit tests were added for the “forgot password” code, which uses the mcrypt libraries which are not installed by default on Mac OSX, so I was seeing this error:

Call to undefined function mcrypt_get_iv_size()

So some quick Google searches, and I found a couple of blogs with “how to” install the library (links at the end of this post), and proceeded to get this done.

First step was to download the mcrypt from SourceForge at http://sourceforge.net/project/showfiles.php?group_id=87941

Once I had the file, I opened a command prompt and ran:

tar xvfz libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/

Next I ran configure, setting the appropriate flags for my envirionment (note – I didn’t do this for the other configures, probably would have been a good idea):

MACOSX_DEPLOYMENT_TARGET=10.8 CFLAGS=’-O3 -fno-common -arch i386 -arch x86_64′ LDFLAGS=’-O3 -arch i386 -arch x86_64′ CXXFLAGS=’-O3 -fno-common -arch i386 -arch x86_64′ ./configure –disable-dependency-tracking

This sets up the make file, so you can run the next two commands:

make -j6

sudo make install

Next to make the PHP library, I needed the PHP source files, so I went out and grabbed PHP 5.3.15 (since that’s the version I have when I run php -version) by going to http://us3.php.net/get/php-5.3.15.tar.bz2/from/a/mirror. Note that you can simply change the version number in that URL to get the version you need.

Once I had that I did the following:

tar xvfz php-5.3.15.tar.bz2
cd php-5.3.15/ext/mcrypt
/usr/bin/phpize

This of course gave me an error about autoconf not being installed:

Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.

From there I installed autoconf by doing the following:

curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
tar xvfz autoconf-latest.tar.gz
cd autoconf-2.69/
./configure
make
sudo make install

Then back to the php mcrypt folder and reran the phpize step to and finish building:

/usr/bin/phpize
./configure
make
sudo make install

Finally an edit to the php.ini file which was simply to add the extension:

extension=”/usr/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so”

And of course a quick restart of Apache and the extension shows up and I can run my unit tests successfully.

Related posts:

http://www.coolestguyplanettech.com/how-to-install-mcrypt-for-php-on-mac-osx-lion-10-7-development-server/

http://michaelgracie.com/2011/07/21/plugging-mcrypt-into-php-on-mac-os-x-lion-10-7/

Wednesday, November 28, 2012

Installing Doxygen on Mac OS X

Just a quick note – I was guided toward doxygen, which is a tool that does source code documentation. It has a DMG installer, that includes an executable to run doxygen with a wizard.

But since my purpose was to run doxygen in an Ant build script, I needed to install the command line version.

I simply looked inside the application, and was able to see that the executable was in /Applications/Doxygen.app/Contents/Resources/

Adding a symbolic link to /usr/local/bin (which is in my PATH) did the trick:

sudo ln -s /Applications/Doxygen.app/Contents/Resources/doxygen /usr/local/bin

Monday, October 1, 2012

Using Firebug and jQuerify to Filter a Page

I love Firebug, and I’m getting so I understand jQuery pretty well.

I often drop into the console and type in jQuery commands to figure out how to get things to happen on a page. For example, I was looking at a really long page of search results from Taleo that lists out all of my submissions for jobs at CACI. The problem is, that it shows the fully active submissions with the inactive ones, so it’s not very useful for figuring out what I need to follow up on.

So it occurred to me that if I could just write a couple lines of jQuery to look for the items that include “Active” in them, I could reduce this list in a way that would be meaningful for me.

So the first thing I did was go look at the page HTML to figure out whether there was something on the page I could use to separate out each row on the search page.

 

 

 

I fired up Firebug by right clicking on one of the items and choosing “Inspect in Firebug”.

 

 

 

 

 

 

 

 

 

 

This starts up Firebug (if it isn’t already showing) and took me to the part of the HTML that I was looking for:

 

 

 

 

 

 

So now I knew I needed to look for something that had a class of “iconcontentpanel” that contained the text “Active”.  I decided to outline it with a green dashed line, so my jQuery looked like:

$(".iconcontentpanel:contains('Active')").css('border','3px dotted green');

So I flipped over to the Console in Firebug and tried running that:

 

 

 

 

 

But that gave me an error since there is no jQuery on the original page. But there’s this nifty little thing in the console that says “jQuerify”, and clicking that injects jQuery into the page:

 

 

 

 

 

 

So now that jQuery is available, running the script again gives me what I was looking for:

 

 

 

 

 

 

 

And of course I can add even more jQuery to strip out unwanted parts of the page, change format, etc, leaving me something that is more  actionable:

Monday, July 25, 2011

Mac OS X Lion (Look Ma, No DVD)

I updated to OS X Lion a couple of days ago, and for the most part it was a smooth transition.

This is the first upgrade where Apple is using their App Store concept to distribute the OS, so it was a bit scary to hit “Purchase” and watch nothing happen for half an hour while Mac OS X 10.7 downloaded in the background.

There’s no real indication of anything going on unless you happen upon the “Purchase” tab in the App Store App (seems a bit redundant, doesn’t it?):

App Store purchased items
After the long download, there was a typical OS install (well maybe not that typical, since it just worked) that ran for nearly an hour. Once that was done there were a couple of minor housekeeping items (like loading Java again separately for some reason), but all in all not much looked different than before.

I was happily exploring features like “Launchpad” and “Mission Control“, when I stumbled on a weird problem. My mouse wheel was scrolling the browser in reverse. That is, it was working in the more natural direction: scrolling the wheel up moved the text upward, and down moved things down.

At first I thought I had some weird virus, but when I upgraded my other Mac, I found the same issue. So I did a couple of quick searches on the Apple site, and found some mentions of the issue.

Apparently somebody at Apple decided the way things scroll has been backward all this time, and made the mouse default the other direction. There were some how-to fix it, but they showed screen shots from a Mac with an Apple mouse, which has a few more settings than what I saw:

Default Mouse Settings

While set this way, moving the mouse wheel up made the scroll bar go down, which was confusing to me, since that was what I always thought the wheel was tied to. But it did make the text scroll in the direction of the mouse wheel.

After a very short period, I got used to scrolling that way, but soon realized I’d be in trouble if I had to go to a Windows machine, so I simply unchecked the “when using gestures to scroll or navigate move content in the direction of finger movement” and I was back to “normal”.

Mouse settings

I’m sure at some point I’ll probably be sorry (like when I get an actual touch-screen Mac), but hopefully by then Apple will have a setting that will just make my mouse act like it does in Windows, and allow touch to act the way it should.

And then after all that, there is no DVD, no physical device in case something crashes. The theory is there’s a recovery partition (just like the old PC days), so you don’t need that.

Me being the old IT guy, I don’t trust that, so the next time I downloaded the Lion upgrade, I burned a DVD. The store will let you download the purchase again, but 4Gb still takes a long time, so media is king.

Friday, March 11, 2011

Microsoft tries to Think Different

I got an email from Microsoft today (Office Insider) that included an article about how to add a calendar to Outlook that would give you the March Madness schedule in Outlook as an example of publicly shared calendars.

Publicly shared calendars are nothing new, they’ve been around for years: Apple created the webcal URI to access iCalendar files using WebDAV (over HTTP) for iCal.

So I figured Microsoft probably wouldn’t have reinvented the wheel here and tried clicking the link in the article to see if it would fire up iCal.

webcals dialog box

Turns out that the URI in the link was very slightly different than a standard iCalendar, so instead of the normal “webcal://” it starts with “webcals://”, which interestingly enough tried to fire up Outlook (in my Windows virtual machine).

Luckily this URI isn’t yet associated with a particular app, so I was able to click on the “Choose an Application” button and pick the iCal application.

Once iCal is chosen, the dialog box shows both Microsoft Outlook and iCal:after choosing iCal

After choosing the iCal application, and clicking “OK”, iCal fires up with a dialog asking you to enter the URL of the calendar you wish to subscribe to, with the URI from the web page showing:

iCal URL entry

Now clicking “Subscribe” of course doesn’t work, since iCal has no idea what to do with “webcals” as a URL.

So to fix this, you have to modify the URI to be either “webcal://” or “http://”  (turns out “https://” works as well).

So even though the URI is not quite the standard webcal one, it is possible to open as a web calendar with iCal, and the same trick works for Google Calendar. Just copy the URI from the link in the page (webcals://calendars.office.microsoft.com/pubcalstorage/9rc05lhz2204226/2011_NCAA_March_Madness_Calendar_Calendar.ics) by right clicking and copying the link:

copy link location

Going to my Google calendar, I then click the little “Add” button at the bottom of the “Other Calendars” area, and choose “Add by URL”.

This brings up the dialog box that lets me add the calendar, and I paste in the URL I copied before, and just edit the first part to be “https”:Add Calendar by URL

Since it’s already a public calendar, I didn’t check that box, although I’m thinking that makes it a public calendar on Google, which might make it easy to find with Google.  At any rate, now the calendar shows up for me both on iCal and Google (obviously it would work in Outlook as well had I followed the original link).

Google calendar with March MadnessiCal with March Madness

Tuesday, February 8, 2011

Where did my space go ?

The other day I got a notification from the Plesk control panel for Carticipate telling me that the user account was about to expire. I logged into Plesk only to find out that the disk on the VPS was full.

Now this was really confusing, since the entire Carticipate system consists of a web2py install, on Linux with a fairly small MySQL database, and the VPS had 20 gigabytes of disk space.

I looked around and found that there were three full backups each about 14Gb, with several incremental backups of a gig or so. Thinking this was the issue, I deleted all but the latest backup.

Well apparently, those backups are stored somewhere not on the server, so that made no difference to the space problem. So I did the next natural thing which was to look for big log files, clear out /tmp, and anything that might be causing the problem. I only managed to clear out a few megabytes of space.

I dug around some more and found a lot of files under the /root directory that seemed to be related to updating Plesk. Since that’s provided as part of my 1and1 VPS service, I called the support number to see whether they could help me figure out where my space had gone. Unfortunately, for the first time, they were not very helpful, suggesting that I needed to research and find out where the big files were on my system.

After some frustrating arguing with the support guy, where I pointed out that I couldn’t get support from Plesk, only they could, I finally gave up and went to my old stand by of Google.

First a quick search to find where the mysterious gigabytes of space were being consumed. First I did a quick “find” command with:

find . -size +20M -exec du -h {} ;

Going to a few of these folders and running “du -hs” gave me the folders that seemed to have a lot of files in them and were eating up a lot of space.

A few more searches on the Parallels site, and found a couple more references telling me that these were both OK to clean out.

The /root/psa folder is where Plesk was configured to download updates, and apparently it doesn’t clean out those folders after the update is successful.

The other folder is where all the dumps from the local backups get placed, and that was the primary problem area. The /var/lib/psa/dumps folder was over 14Gb of the 20Gb, so cleaning that out got me started again.

Looking at the dump directory, it appears to have daily dumps of all of the Plesk stuff going back forever, so this may happen again, but for now, my VPS backup is down to a much more reasonable 2Gb.

Monday, December 13, 2010

Version problems? To the Cloud !

JetBlue Airways logo Category:Airline logos
Image via Wikipedia

I was on my way home from a business trip and wanted to print my boarding pass. Most hotels have a PC set up that is primarily for that purpose, and this one was no different.

The PC they provide is set up so that it wipes itself every time somebody logs in, which in theory protects you from somebody eavesdropping and/or stealing your information. The down side to this approach is that you’re stuck with whatever they decide is the right version of software to work with.

The problem (for me) came in because I was flying JetBlue. Now I love JetBlue, but they (for some unknown reason) use Flash in the page to print out your boarding pass.

You’d think this wouldn’t really be much of a problem, since I’m sure they probably have some sophisticated check that will catch if the browser doesn’t have Flash and redirect you.

… Except …

The PC did have Flash loaded, but the JetBlue page wanted a higher version installed than was on the machine. So the browser helpfully asked if I wanted to upgrade, which I said “yes” to, only to find that the generic login doesn’t have install permissions (surprise, surprise).

So I asked the desk to help, but they had even more locked down machines, so I figured I’d just have to punt.

Until I remembered that I had my Mac with me. I went to my room, ran through printing the boarding pass from the JetBlue site straight to PDF. Then I uploaded the PDF to my Google Docs.

Back down to the hotel computer, log into my Google Docs, open the PDF and presto – the boarding pass is printed !

Bottom line is that by relying on Google to connect me, I was able to get what I needed in spite of the software incompatibility. Once again I’m loving the cloud (and Google Apps).

Thursday, August 26, 2010

Problems with connecting at a hotel …

When traveling and trying to use the hard wire at a hotel, you may find that the provided Ethernet cable won’t work. This is because hotels typically have a very outdated infrastructure and are still running at 10Mbps.

Most new computers are set with network speed set to auto detect, but this relies on the hardware being able to handle that detection, which older, cheaper network boxes aren’t able to do.

In the lower right corner of your screen, you should see your network icon that will look something like:

The network connection is the one that looks like a pair of computer screens ().

The ).

When you are connected to a hard-wire, the tray should look something like:

The icon for the network connection will flash as network activity occurs.

If you don’t see the icon for the Ethernet connection, right click on the one for the Wi-Fi to get the context menu and choose “Open Network Connections”:

This will bring you to the network connections, which will list all of the available network options that have been configured on your machine:

If the connection shows “Limited Connectivity” instead of “Connected”, you most likely don’t have an IP address.

Right clicking on the “Local Area Connection” (or whichever one is associated with your Ethernet card) will give you a similar context menu that should let you check your connection by choosing “Status”.

This will show you a more detailed status of the connection:

You can try clicking the “Repair” button to force the connection to restart, but this typically won’t work in the hotel scenario. So going back to our context menu for the Ethernet connection, choose “Properties”:

This will bring up the property sheet for the connection:

Click on the “Configure” button next to the adapter to get to the settings. This will bring up the properties:

Go to the “Advanced” tab to change the link speed to 10Mbps:

Click “OK” and the adapter should reset and you’ll be good to go.

Sunday, August 22, 2010

Facebook Annoyances …

I’ve been busy, so I haven’t logged into Facebook for a while now. I ran into somebody who said to send them a friend request, so I pulled up my Facebook app on my iPhone and ran through the process of logging in there.

I hadn’t used that app for a really long time, and like most iPhone apps, you have to start over once it upgrades, so that didn’t surprise me.

What did catch me by surprise was what happened when I tried logging on from my Mac later that day. First thing that happened was I got an unfamiliar screen that said I had logged in from a location I hadn’t used before:

Facebook login problem

OK, fine – seems like they’re trying to protect me, so I guess I can deal with this – but why they think I’m logging in from a different location is a bit off. So I’m expecting some sort of confirmation of identity, which would be fine. So next comes the usual Captcha to make sure I’m not a machine:

Facebook captcha

I type in the phrase, and get to the next screen, where the first surprise happens, apparently to identify myself I’m going to have to recognize people tagged in photos:

Facebook identify instructions

I’m a little worried now, since I don’t spend a lot of time looking at photos from my friends, and I’ve seen a LOT of photos from the ones I do know that don’t really look like the person to begin with. But it looks like this is the only option.

So I start trying to identify the photos, and the very first one I see is a picture of a cow and calf … Hmm, this is going to be hard. Obviously none of my friends are cows, so it must be pulling from somebody’s picture album. Of course I only know about 20 people who might post a picture of their livestock, and probably the same number that might think a calf was cute enough to take a picture of.

So I skip that one, and try again – now I get a picture of somebody celebrating. It’s a picture of people in their 20′s, so I’m thinking either an old photo, or one of my younger friends, but I don’t recognize any of them. Two down and no luck. At this point I even try looking at photos on the iPhone (which for some reason still works), no luck, so this is skip number two ….

Next I get what is obviously some sort of a class picture from the 60′s or 70′s – I probably know this person, but how would I know who the picture belongs to ? So it goes, with all 7 pictures being people, places or things I don’t recognize.

Then the next annoyance: after failing, you have to wait an hour to retry, so I can’t even go back in to see if I might get more recognizable pictures.

The next time through I think I recognize one, but still no luck. OK, wait another hour.

Finally on the third try (the one where I started writing this post), I get lucky. Every picture that comes up is an actual person, and I recognize all but one. Luckily for me even the one that has more than one of my friends on it appears to have worked. And I’m back in …

And in this whole process, there is no link to get help, or alternative way to get past this process. What would you do if you had some sort of vision impairment.

FAIL – Facebook … you need to fix this.

Thursday, June 24, 2010

Out of the box Sharepoint Workflows

As a project manager, I’m often faced with the problem of how to deal with configuration management, which is how we make sure that everybody is on the same page. I typically like to use a content management system to handle this issue. For my current project, I’m using Sharepoint, which also has some nice built in collaboration capabilities.

There are two out of the box workflows on the Document Library: “Approval” and “Collect Feedback”.

Both work pretty similarly, and for general document collaboration they work pretty well.

When you get a document to where you’d like to gather feedback, you can fire off a Review workflow by going to the workflows page for the document:

This will take you to a page that displays the available workflows (will also display any that are in progress):

Choose the “Collect feedback”  workflow and it will prompt you for who you’d like to review the document and a message that you’d like to send. You have complete control of who you pick, and you can also cc people if you just want to keep somebody in the loop:

Once you pick the people you want to review, assign a due date, and click the “Start” button, the workflow is running.  The people you assigned the task to will get a notification that asks them to review the document. It includes your message, and links to both the document and the workflow tasks (I assigned this one to myself):

As the creator of the workflow, you’ll also get a message for each reviewer you assigned that has the link to their task:

Note that the tasks are stored in a SP library called Tasks, and if you click on the “Edit this task” button, you’ll get the form that lets you provide feedback:

This is where you would give feedback that doesn’t need to go into the document. It also allows you to reassign the task if you aren’t the person who should review it (by default it will assign back to the person who assigned the task to you, but you can also use it to reassign to somebody else):

Once the workflow is running, you can see the status at a glance by going to the workflow page again:

If you click on a workflow, it will show you the current status, and you can update individual tasks:

This takes you to the Task in the Sharepoint “Tasks” library (you can get there by clicking the “Tasks” link above) and a web version of what you see when you click the “Edit This Task” from Outlook:

If you want to see all of the outstanding tasks you can go to that library by clicking on the “Tasks” link on the workflows status page (above):