As the episode of Copper Robot interview started, Mitch Wagner offered free iPad’s to any existing or new members that join the “Copper Robot” group. There were quite a few people asking questions about the offer since it could be construed as either a real-life tangible iPad made by apple, or a virtual object made up of prims.
Guests on the show were Arminasx Saiman and Joe Linden. Joe made a few hints about the 2.0 viewer including auto gain and echo cancelation. He stated that taking snapshoulds would improve. When asked about blogging capabilities, he said we could script it to do that. In a sense, it appears that the 2.0 viewer will have client-side scripting capabilities of some kind. That would be very powerful if that is the case – more so if there is communication capabilities between in-world objects.
Throughout the interview, there was much opinions on how the public will find a need for the product, and the benefits compared to handheld devices and netbooks. There was also some early history about the company and potential for some form of Second Life to run on the device.
One application that was brought up was Blio eReader. It is a pretty good eReader that may get integrated in some way to the iPad.
After the success of using “Snap Down” earlier, I was able to parse through the cached data to extract metadata about each of my images. I was able to parse out the title, description, slurls, tags, albums, links, slugs, and more. Albums are stored as categories, and tags are stored as keywords. I setup the images themselves to be linked as enclosures.
There is still one part that I’m scratching my head over. The snapzill website only lists the date that the image was uploaded, but does not include the time. This is a bit tricky for me as I can not identify the timezone. I am assuming it is PST to be inline with the time that the virtual environment uses, but I think the snapzilla server might be located on the east coast. Other than that, I believe that’s the last thing to work out before I start to upload the images and merge my posts into WordPress.
I finally got something working to download all of my images on Snapzilla. I prefer to get a backup copy of all of my images hosted at that site, because they are the largest ones that I have, and do not have any branding information on them (such as the blogHUD watermarks). Once all of these images are downloaded, I need to go through my cache and build up blog entries. I’ll need to compare my snapzilla snapshots with existing entries on my blog. If a post exists with the same name, and around the same time, then I’ll update my wordpress entry to upload the snapzilla image and reference it instead. If it doesn’t exist, then I’ll need to create a new entry.
It’s a bit of a lengthy process, but I feel like I’ve gotten over a big hurdle, and that is to simply take that first step. It would have been preferable of Snapzilla offered an API of it’s own or made use of the metaWeblog and Blogger API’s, but screen scraping my images works as well.
I set the program up so that it would wait half a second before it downloaded the next image. After it downloads an image, it displays it to me as a small thumbnail. It’s crazy as I was watching my whole life pass before my eyes. So many pictures had so much meaning behind them. I could remember the feelings and the situations that I was in. There were ideas behind the pictures that only I would know other than what I had written out with them already. It’s amazing how a flash of pictures like that can trigger so many flashbacks all at once.
In all there were 261 MB of images that I downloaded. That’s a lot of data. I have almost 200 MB in HTML files associated with each image that I need to parse out the metadata that goes along with each image (title, description, date, slurl, etc.). It looks like I have my work cut out for me.
I was to go and help my mother in-law to configure her voice in a virtual environment today. The snow came in last night and hasn’t let up yet, so my plans were abandoned. Since this is hardware based diagnostics as well as software configuration, I could not visit her virtually. My physical presence was necessary. My roads haven’t seen a plow yet and I don’t know what tomorrow will bring.
One of the places that I heard about in the past for voice diagnostics in this virtual environment was Echo Canyon. When you arrive, anything that you say is played back in your headset. You can hear yourself talk, but you can not hear others around you speaking. However, you are free to talk to them via text chat.
Adjusting the volume in the device settings didn’t seem to have any effect on this. (You can adjust your volume level by editing your preferences and clicking on the voice chat tab). I got the feeling that my voice wasn’t being played back from the vivox servers, but being played strait from my own computer.
Another handy tool that I’ve used in the past to detect voice settings by calling echo123 on skype. Once you call the echo sound test service, an automated message asks you to start making some noise. After 20 seconds, it is then played back for you.
Since I didn’t go off to mom’s house today, I spent the time importing my blog posts from my real life blog related to virtual worlds into my virtual blog. I finally completed importing them all manually. The next thing that I would like to work on is importing my snapzilla snapshots as well. When I send images to social networks, snapzilla also gets a copy sent its way. Usually snapzilla will have blog posts that other systems did not interpret properly, or that other services did not crost-post to my main virtual world blog.
Tonight I had a goal of moving my old blog posts concerning virtual worlds from my real life blog (of Lewis Moten) to my virtual world blog (for Dedric Mauriac). It turned out to be an exhaustive effort. The software in the dashboard told me that I needed to upgrade. I downloaded the free WordPress installation. I then had to dig through some archives to find my login credentials to connect through FTP. Once I had them, I found that I had problems with some features when mapping the FTP site through File Explorer in Vista. I ended up downloading a FireFox extension called FireFTP.
With all of this crazyness, it didn’t stop there. I found a file in my root directory that was over 1 GB in size. It had something to do with error logs, so I deleted it. As a precaution, I started to backup everything on my site and download it to my NAS200. It looked like it was going to take a while, so I left and watched a movie. I came back and found that it was still downloading. I found that it was halfway done downloading another error log file in a seperate directory. This was getting rediculouse. I deleted the file and started hunting throughout the site for other error logs.
Eventually I got to the point where I was able to backup everything, and start installing the software. It took a bit of time, but when I logged in, I saw that I had had almost 200,000 pending messages, and 3,000 spam messages. “ugh”.
I bypassed the spam and started migrating my second life posts to my virtual world blog. It took quite some time, but I was able to move 12 posts from December in addition to the one that I had moved the previous night.
Before turning in, I decided to tackle the spam problem. I was able to delete everything marked as spam, but the pending catagory seems as if it is going to give me trouble. Everything in it appears to be spam anyway. Once I activated the askimet spam plugin, I was able to tell the software to check for spam. It’s going to take a while. I think I’ll just relax and wait it out.
Today, M Linden announced that the Lindens have acquired Enemy Unknown AB. It’s a silly name for a company, but goes with the trends of geekery in the world of web 2.0. The primary asset that the company appears to have is Avatars United. M Linden stated that AU will be used to expand the social networking capabilities of Second Life.
I have had an account there for over a year, but I never found a need for it. In fact, my profile there was completely empty when I looked at it today. I’ve been accepting quite a few friend requests today since the announcement.
I think this is a good thing. Second Life on it’s own is not a great social networking tool because it lacks the ability to integrate with other social networks. When you bring an existing site into the mix that does have that integration in mind, it helps extend the 3D platform into the 2D network.
In my opinion though, AU is pretty skimpy and lightweight. In needs to be built up quite a bit. I would like to see some integration with Ping.FM, Snapshot API, and/or expose an API of it’s own to update status messages and blog posts. I made this suggestion as a comment on the announcment posted by M Linden, and tried to include a screenshot of my social networking flowchart. I quickly started getting messages about displaying unsecure content. I found a way around this by using a free image hosting service over SSL (called SSLpic), but I had to resize my image to fit within 750×90 pixels. The end result was that I changed my post to show a thumbnail image, and link to the full size image.
It seems that each year that I attempt the NaNoWriMo, I get closer to completing the goal and have move vibrant stories. This year, I ran into a familiar face from two years ago, PhoebeAnn Theas. Back in November, she indicated that I was an inspiration in her book, The Dreamers Thread, and that she was in the process of serializing it for podiobooks with various voice actors, such as my favorite, Mur Lafferty, from the Heaven series and Playing for Keeps.
The Dreamers Thread is in the final chapters and almost at it’s ending, but you can go and start listening to it from start to finish through a free podiobook subscrption. Donations to the author are welcome. I decided to contact PhoebeAnn Theas (who is also a musician/singer) and ask if she would be interested in a podcast interview. She gave a positive reply and the details are in the works. My last interview with Jet Burns from NASA/JPL seemed to go pretty well (other than different audio volumes for the two of us), so I would imagine that this interview would be the same, if not better.
This is a bit odd being excited to interview someone of whom my avatar was an inspiration for a character in their story.
After 250 images, my $5.00 complementary credit at tagcow has run out. I hopped on over to flickr and saw a cloud of tags where before there were just a few. I threw in 10 dollars to have them continue work. In all, it will cost me roughly $45 dollars to tag everything. It’s better than me trying to go through each post and tagging them myself. No matter how much I try to hold back on money when it comes to services, sometimes I just need to put a price tag on my own time and compare.
Once all of this is done, I’ll have to pull at my flickr images with the flickr api and match them up against my wordpress posts to determine which tags should go where.
Speaking of downloading information to put into my blog, I believe I’m going to start looking into importing missing snapshots from snapzilla as well as some older ones from my real life blog documenting my first days in second life. I have already added my first image posted on Snapzilla, but I want to work out where the images will be hosted before I proceed with that. It’s too bad that Snapzilla doesn’t offer an API to work with my photos.
For a while now, my posts have been made available as audio files in a podcast format through odiogo. This service takes a look at my RSS feeds and converts them to audio files through a Text To Speech (TTS) API. There are a few problems with it though. First, the MP3 files are not appended to my individual posts on wordpress. The other problem is that they like to insert there little intro before they start reading my post aloud. There is also a timing issue as well. I never know when the audio will be replicated. The page that people see to subscribe to the podcast is not all that pleasant to look at either.
Since I have been looking at automation lately, I started to take a look at what it would take to create my own audio files. The first thing that I stumbled upon was Microsoft’s Speech API, otherwise known as SAPI. The library is available on my computer as a .Net library called System.Speech. It didn’t take me long to identify how to use the Speech Synthesizer and start creating WAV files. I did run into a bit of a problem though, as there is only one voice available named “Microsoft Anna”. I hunted for others on the internet, but nothing seemed to be recognized by the speech synthesizer. Most voices appear to be fore SAPI 4.0, and are not compatible with the latest version. A familiar voice, “Microsoft Sam”, was not included in the latest version due to security problems. Many people seem to be upset with this who are also looking for a male voice.
I started looking into alternatives. I even considered using some old 8-bit allophones that I had played around with a couple years ago and donated to the vault at SL3B, but they would have been too robotic for what I needed. I started looking into Linux solutions and found eSpeak. eSpeak is a light-weight voice synthesizer that converts text to phonems, and then plays the specific audio for each part. It’s multi-lingual and understandable, but almost on the edge of sounding like a robot. It has a handy command line utility that makes it simple to read text files and save them as WAV files.
I started looking into services and found NeoSpeech. This service offers a few options. For TTS on-demand, you can paste your text in a form, preview the audio, and purchase it if you like the results. You’ll get some credits to try the service out for yourself. The next option is a TTS web service that permits developers to call a web service on the internet. There are different pricing plans available, including a free one with a few limitations (500 words per call, 100,000 words per month) as well as embedded advertisements. They also offer the engine itself for single-user applications as well as a voice server.
One of the remarkable things that I found on NeoSpeech was that Paul was there. Paul is the engine that odiogo is using to convert my RSS feed into podcasts. I also found Paul available for download as a free trial, or the full version for $35. The site (at free downloads place) claims that the server for the trial version is offline. With my luck, the SAPI5 voice engine will probably be incompatible with my operating system. Either that, or this is a fly by night operation that tries to scam people out of their money.
Another idea that I’m having is to use MorphVOX to augment the voice. Although I can make the SAPI speak directly to the default audio device, which MorphVOX controls, I am uncertain if MorphVOX can also handle saving it to the file system directly. What I need to determine is if MorphVOX exposes a library or has a console application to apply voice filters to audio files, and then write that output to a new file.
With the research that I’m doing into these kind of things, I have two licensing issues to consider. The first is for personal use to post to my blog on a daily basis. The second would be the potential to create an automated service later on for the masses. For now, I’m just concentrating on me.
I was starting to think about how I could determine the location of each image that I took so that I could create a SLurl for my posts. I have a few choices such as looking up information in the original post on blogHUD. Another idea popped into my head that had me thinking about experimenting with OCR. The benefit to OCR is that not only would it capture the location information at the bottom of each image, but it would also capture any other text within the photo itself – maybe.
I tried out a few OCR programs and they didn’t turn out very well. The size of the text within the images is too small, and a few letters get ruined. I need accuracy. I appears that I’ll be gathering that information from other locations anyway.
My ventures however had me thinking about similar images and locations and I started looking into image analysis. I was wondering if there were any services of software that could identify objects within a picture such as “woman”, “face”, “sunset”, “car”, etc. I haven’t had too much luck with this computer vision, but here are a few things that I found so far.
The capabilities of machine vision today seem pretty far behind. Lot’s of people on the edge of technology, but it’s not easily available to use and the accuracy is questionable. I’m still leaning towards the General Picture Recognition Software, but it costs 10 pounds – that’s before I even know if it works well enough or not.
Another option is to bring in some people through services such as TagCow. I signed up for an account and got a $5.00 complimentary credit. Depending on how well it is done, and the cost after tagging (0.02 cents per uploaded image), I may go for the whole library, depending on how hard it is to retrieve those tags and insert them into my blog. The tagcow API based on REST to post, get, and delete images as well as to get tags associated with the images. A convenient feature that I saw was a tagging result callback that pings my own web server with the tags as they are ready. There are different levels of service as well with basic (2 cents), premium (5 cents) and enterprise. Premium appears to be my target for web site search engine optimization. There is also flickr integration as well.
My little experiment last night to tag all of my messages caused my twitter feed to be flooded. Apparently wordpress decided to post all of my updates to twitter. I had thought that it would only post newly created items. The next time that I do a mass update on wordpress, I’ll need to remember to temporarily turn off the social networking features.
The last thing that I want is to have my twitter account to be suspended. After about 108 posts, the twitter site stopped accepting new status updates through both the API and when I had logged in manually. It makes sense, as they are protecting themselves from spam. My facebook account was fine. In fact, it didn’t receive any of the status updates that appeared on twitter. Yahoo! account was fine as well.
I was a bit taken aback when I noticed last night that updating blog posts were actually taking quite some time compared to fetching data through the API. I now know why. It was attempting to cross post to twitter. In addition, it was also probably trying to do ping-backs on any embedded links.
I’m starting to notice a few people selling twitter hud’s in world, and I’m debating on bringing mine back. I was selling it for a very cheap price compared to the ones that I have seen so far, and offered a few extra features. The most interesting feature was to automatically report where I was in-world after standing there for five minutes along with a slurl. I love automation.
I wanted to tag all of my posts on my wordpress blog with 1750 posts. I started researching how it could be automated.
The first problem was to access all of the content. Blogs hosted on wordpress have sitemaps of all published posts and pages at /sitemap.xml. Using LINQ, I was able to go through each page and download a copy to my hard drive.
I wanted to get the raw data of the original post, including metadata. For this, I found a few API’s built upon the XML- RPC.Net platform. XML-RPC for dot net came with a few interaces including Blogger API, MetaWeblog API, and Movable Type API. WordPress supports a combination of the various API’s, and extends them.
I noticed that I needed to hard-code the API endpoints. Some methods were supposed to be available to set the URL, but the author forgot to inherit the IXmlRpcProxy on both IMetaWeblog and IBlogger. I added it and this got me up and running to get some posts. The methods available only provide a way to get the most recent posts (no paging). When I attempted to get all of my posts, I got exceptions. I found that I could parse the identification of my posts with a regular expression against the HTML content that saved to my local hard drive. I was able to directly access individual posts by their ID.
I ran into problems with enclosures (podcast audio files). I tracked the problem down to an error on a bad implimentation of the MetaWeblog API by wordpress itself. The file length is supposed to be an integer, representing the number of bytes. It is returned as a string. I changed the interface so that the length of enclosures is treated as a string.
After that, I started to have a new problem. None of the data included any tagging information. I got down to bypassing the Xml-Rpc library and making a direct call with a WebClient to fetch a known page with tags. The response not only included the basic structure defined in the MetaWeblog API interface, but it included a ton more fields, including mt_keywords. With this new knowledge, I was able to add the following fields:
mt_keywords
wp_slug
wp_password
wp_author_id
wp_author_display_name
date_created_gmt
post_status
custom_fields
sticky
The custom fields introduced a new structure as well with id, key, and value fields. Each field was a string except for sticky (a boolean), and the date created in GMT (a date). Armed with this updated interface, I was able to download all of my posts once more and serialize them as xml to be saved on my local hard disk. I had some nice caching built in to load up the serialized xml objects as a cache rather than hit against the website. I did this for other files as well including the html, but that was saved as raw html rather than as an object.
I now had a list of all published links in my site, and the serialized data for each published post. The next trick was to automate the keyword extraction. For this, I used Yahoo! with the content analysis API for Term Extraction. You can try this out for yourself without needing to learn how to program by copy & paste text into the form provided at Yahoo! Keyword Phrase Term Extraction Form on SEO Tools (Search Engine Optimization). In fact, I had originally used this form to discover keywords for a few of my posts before venturing out to find an automated solution.
I signed up for an application id and started going to work. Since I was limited to 5000 request per day, and my blog had almost 2000 posts, I decided to cache the results of the keywords for each post as well so that I didn’t hit it twice for the same content. I soon had a full list of keywords for the entire site.
The keywords were unfiltered and unbiased. After merging keywords with existing ones on each post, I decided to refine them. I first started by creating a dictionary to hold the count of each keyword used across the site and then used LINQ to sort the end-results by the values.
var qTags = from tag in TAGS orderby tag.Value descending select tag;
foreach (var tag in qTags)
Debug.WriteLine(tag.Value, tag.Key);
I often found partial names of people I knew, such as “crap” or “mariner”. To prevent things from looking vulgar, and to keep people from thinking that I talk about fecal matter, I transformed the tags into the first/last names. (i.e. “crap” becomes “crap mariner”) I was also careful to remove references to the Lindens or their product to make an effort to avoid copyright infringement. Other tags were very generic, and so I removed them as well.
The end result was a post that was ready to be updated. I made a few test runs first, and saw that my results were turning out great. The update calls seem to take quite a bit of time actually and may run for the entire night.
Update: The task took a little under two hours. I now have 7,183 tags and my pages are showing up in a ton of wordpress tag surfing pages.
Another Update: I received an email from the wordpress support folks about the problem with the enclosure length. Joseph got back to me with the following:
Good call, I’ve changed it so that the length field gets cast as an integer before returning the data.
One of the things that I’ve been concerned about lately is the event listings. In a previous article, I came rite out and stated plainly that events are free classifieds. The lab has posted a response to the growing number of complaints that they will begin enforcing existing policies outlined in the terms of service by moderating events, and follow up with community feedback.
I’m pleased that they are focusing on this, as it has become time consuming to find events. There isn’t a spam filter for this part of the platform, so someone needs to keep on top of it manually. I suppose the next concern is the level of moderation. Will they be too strict, or not strict enough? It’s going to take a bit of time to see if they are able to get a good handle on it, and perhaps deter others from creating spam (or classifieds) in the future.
I was looking at Joonie’s Journal and saw some interesting pictures of her floating in a bubble. After leaving a comment about it, she replied that a friend of hers made it and sent me a copy of it. The bubbles creator shows up as mrmario9494 Core.
The bubble attached to my left pec. Suddenly I was starting to hover slowly and found that I could drive it around like a vehicle. The film on the bubble moves around and gives you that feeling that you really are floating in a bubble. No worries, as I was able to lay back and float around the five islands. Thanks Joonie!
From time to time, I’ll join a group. Group slots are pretty limited. Sometimes, a group will turn out to just be spammery. One such group is SLevolution. Today alone, I got roughly 10 notices of bands playing to raise funds for Haiti. Call me cold hearted, but after a while, it gets old.
As strongbad would say … DELETED.
This is one of the reasons why I prefer subscribe-o- matic RSS feeds. I’m not badgered with notices or in-world messages about events. Notices and instant messages also have an affect on your IM cap (15?), so you may not be able to get all of your offline messages due to spammy groups.
Another group like this was the relay for life groups. It seems that any group related to charity is going to be pretty heavy on group notices. It would be preferable if there was only one notice with a notecard of a schedule of events, and a landmark. There is also an event listing on this platform that you can use to attract the whole user- base, rather than targeting just your own group.
I’m still not comfortable with my face. I decided to focus on it tonight to see if I can bring it closer inline with my own real-life face. As I make many small changes, I copy the image into photoshop and layer it over a photo of my real face. It’s an interesting way to learn about the anatomy of your own face.
My chin is a bit deeper than I expected. I’ve also foudn that in order to lift the eyes, I’ve had to make the chin much deeper and lower the mouth. But that tends to have problems with the length of the nose. Sometimes I wish that we had more options, such as to raise and lower the eyes and ears. There is much to be desired for many controls on the face when you are trying to make it look exactly like a real face.
My face is closer now to my real-life face, but I still feel that there are things that are off. It’s not a mirror image of me. Eventually I’ll have to pay attention to the profile as well. That is another tedius task just waiting for me to tackle.
One major tweak that I did was to darken my eyes, so that they did not appear to glow. They were so white, that they seemed to jump out at you in some photographs that I took of myself. I also made the pupils much smaller as well.
Opensource Obscure referred me to this project a while back. I got a chance to look at it, and I must say that it is interesting, confusing, wierd, brilliant, and amazing all at once.
So what is it exactly? Apparently, it’s a build that is randomly generated, changes over time, and changes with your own interactions. It seems to have a mind of it’s own at times. As you walk towards some objects, they change in size. Others light up, and yet others cause other objects to appear as you step on them. As I stood still, I saw some things happen over time without interaction.
One of the things that makes this possible is the recent HTTP-in methods that allow scripters to turn objects into miniature web servers. Anyone, regardless if they have an account for the platform or not, is able to have an influence on the artwork.
I had been getting a few upgrade messages from my Hermes One MP3 Player while I was offline last night. I received the player along with my purchase of the Fierce Tibetan Gods. I contacted the creator, BadWolf Bracken for advice on how to update the player to the latest version.
BadWolf handed me the latest version, and then invited me over to a Pillowfish show. The duo play some folk songs on a bouzouki, viola, violin, and a guitar. There are a few signs here on the stage to raise money. They also have a Subscribe-o- matic that you can subscribe to (RSS). They are here to support Doctors Without Borders, with a goal of 200,000 L$ (about 750 US$). From the looks of it, they are halfway there.
Looking around SLevolution, I found a display that allowes you to preview music. Six albums were on display by The Fierce Tibetan Gods. The information provided a biography on the band with a little back history and bio’s for each of the band members. Apparently, one of the members played a solo concert on the Treet.tv network (formally known as SLCN TV). Even Pooky Media has a machinima of The Fierce Tibetan Gods in Second Life.
I got to listen to a few previews. It’s some pretty interesting music. I am sure a lot of people would love this stuff.
One of the things that jumped out at me in the bio is that the band member, Andrew Woolf, was with Sleep Chamber. I have three of their albums (Sacred and Surreal, Secrets ov 23, and Sentinel Serenade) and a tape (Sharp Spikes & Spurs) from my college days in the mid 90′s when I was learning about new music through varous friends. I can’t see the relation of music between Sleep Chamber, and The Fierce Tibetan Gods. Sleep Chamber appeared to be a much darker band and pretty much just had the lead singer … speaking.
These days, my musical taste has changed dramatically. I avoid most industrial music. However, The Fierce Tibetan Gods are not industrial at all. They seem to be experimental and much more in tune with the music that I like. I went ahead an purchased “Something in the air, Ouija Board Remix”. It came with a media player and album to load into it. I was able to open the album and get a link with a code so that I could download the music to my computer. A nice feature so that I can listen to them in my iPod while at work.
You are currently browsing the Virtually Speaking blog archives for January, 2010.
Summary
Lewis Moten has been creating various interactive objects within the virtual world since November 28, 2005. He is often known as Dedric Mauriac of Dedric Mauriac’s Gadget Shop. Lewis will often post updates about his progress on his blog on a daily basis.
In the real world, Lewis has held positions filling the role as a software architect, graphic illustrator, technical writer, software analyst, technical lead, and database administrator over the course of his professional career. He is capable of wearing multiple hats and leading others to provide efficient and high quality software solutions. His technical expertise is reflected through is creations in the virtual environment.