Wise on Tech Hacks, scripts and ideas for the refined geek.

19Jul/100

NetFlix Streaming Coming to Canada!

The best news for media in Canada that I've heard all year: NetFlix is officially bringing their streaming video service to Canada this fall.

Details are still sparse regarding device support, and they aren't giving an exact date, but finally we'll have a decent Internet-delivered content option around these parts. Of course, expect Canada's ridiculous content rules to be applied.

Read more at the Financial Post, and sign-up to be informed when the service goes live.

12Jul/100

Windows Mobile 6.5′s new life

According to VDC Research Group's report on Windows Mobile, the 6.5 OS stack is not going away.

Although Microsoft is poised to release Windows Phone 7 -- essentially a clean break from their legacy smart phone line-up, based on new technology, such as Silverlight and XNA -- the Windows Mobile 6.5 OS shares lineage with Windows Embedded CE, the OS at the core of many hand-held devices such as those used in POS scanners, or by, say, courier services.

It is time for Microsoft to re-think their smart phone offering to better compete with iPhone and Android, but they practically own the market on embedded devices, and neither need to, nor should, step away from it, or even re-think it drastically. Fortunately, Windows Mobile 6.5 has a new life as Windows Embedded Handheld.

Windows Embedded itself has been re-aligned significantly as well, and it should be noted that much of the product line is now, essentially, the full Windows -- customized for a compartmentalized install: Windows Embedded Standard is really just Windows 7, while Windows Embedded Server is really Windows Server 2008.
Windows Embedded Handheld, however, remains based on the CE core, and traditional Windows CE and Windows Mobile apps can live on, and continue development, on this technology. Meanwhile new technology layers, including Silverlight, are being added to Windows Embedded Handheld to keep the platform evolving -- much as Windows Phone 7 evolves the core with new technologies.

If this is all confusing, don't be concerned -- its taken awhile for the roadmap to resolve itself. Microsoft, however, is finally in a position to execute on each of its competencies in multiple categories of portable and embedded devices -- from simple scanners, through next-gen smart phones, to multi-touch Slates. Here's a quick chart to clarify:

MS Offering OS its based on/derived from Compatible Code
Windows Embedded Handheld Windows Mobile 6.5 CE/Windows Phone 6.5 apps, Silverlight + Native Code
Windows Phone 7 New Offering (CE kernel) Silverlight 3/XNA + Managed Code
Windows Embedded Standard Windows 7 Almost anything that runs on Windows 7 (as long as dependencies are in the image)
Windows Embedded Standard Windows Server 2008 R2 Almost anything that runs on Windows Server 2008 R2 (as long as dependencies are in the image)
3Apr/100

Apple’s Prototype Copland OS Booting

This was intended to be Mac OS 8, a microkernel (called NuKernel) based OS that would finally modernize Apple's aging technology stack. It failed, although several of its user-oriented components made their way into later versions of the OS (both Classic and OS X).

This is booting off a PowerMac 7600/66 AV, but connected to a Dell LCD monitor so you don't have to see the refresh. It boots to the "Z Theme" which was a little silly. During start-up you can see a very unique splash animation, and various hardware being identified and initialized.

Copland was to contain a "blue box" emulation layer for classic Mac apps -- a concept that would later be re-used as "Classic" in Mac OS X -- while next-generation apps would be optimized for the PowerPC CPU.

16Feb/100

PC Museum Makes History (Re-post)

To celebrate its fifth year in business, the Personal Computer Museum has created a new program that allows the breakthrough, under $300 personal computer of the 1980’s – the Commodore VIC-20 to access Twitter, one of the world’s foremost online communities. CKPC FM 92.1 personality Ed McMahon (Mayor of the Morning) will create computer history with the first VIC-20 Tweet and afterwards museum visitors can tweet too. The first “tweet” will happen on Saturday February 20th at 11am EST. Find the museum on Twitter or Facebook at http://www.pcmuseum.ca/twitter.asp

“Many have asked ‘Why are you doing this? There’s not much demand for new VIC-20 software.’ It was the challenge of creating a bridge between the past and present. It’s amazing how far technology has progressed in the past 30 years. The software runs from a cassette tape on an unexpanded VIC-20 with only 5 KB of RAM and a processor that runs at 1 MHz,” commented Syd Bolton, Curator of the Personal Computer Museum.

To put this in perspective, an average PC today runs at 3000 MHz and contains 2,097,152 KB. That means the average computer today has 419,430 times the memory power and 3000 times the speed of a personal computer from the 80’s.
The museum created a software platform for many vintage computers to be able to "tweet" (called "TweetVER" which is short for Tweeting from a Vintage ComputER). For those who would like a copy of the software program, visit the museum’s website http://www.pcmuseum.ca for information.

24Jun/090

Staying In Sync

What do you use to keep multiple computers in sync? I think I've got a pretty good toolset down. Here's what I use...

Mail: Google Apps for Your Domain IMAP access. Same mail on my phone, both computers and on the web.

Calendar: Google Calendar. Sync tools or ActiveSync access are available for virtually every platform.

Bookmarks: XMarks (formerly FoxMarks). Google had a plug-in for FireFox that worked great, but they've stopped development. XMarks now has IE support.

Documents: Windows Live Sync (formerly FolderShare) works very well for a subset of our documents -- its PC and Mac, despite its new name. Mozy back-ups archived stuff.

Media: iTunes sync/sharing with our iPhones and the AppleTV for music and movies. iPhoto pushes to Flickr and Facebook, and I keep a manual back-up as well. A UPnP service running on the media computer lets us share content with the XBox and PS3.

Until recently I was using Plaxo for keeping my Contacts in Sync, but they've killed their offering by making it a "Premium" service. Now I'm stuck manually exporting my Google Mail Contacts to CSV and importing them into Outlook periodically until someone comes up with a better option -- there's a few out there, none work well.

Side rant about MobileMe: I tried to hard to make a go of it, but the service just sucks. iDisk is abysmally slow -- especially when compared to DropBox or Windows Live Sync. Calendar syncing is all or nothing... so its nothing. Only the Contacts sync works well -- but not $100 a year well.

Filed under: Articles No Comments
15Oct/081

Bridging networks with WDS

WDS stands for wireless distribution system. The system was intended to allow a wireless network to span accross multiple access points without needing a wired backbone between them. This can be useful when you cannot physically connect the access points with a cable, but note that a hardwired backbone is preferred as WDS will cut your available wireless throughput in half. For more information on WDS check out wikipedia.

Editor's note: If you can connect your two Linksys routers via a cable, check out this post for some tips.

My setup is using two Linksys WRT54G v2 routers running the third party Tomato firmware. My initial home network was setup using version 1.19 of the firmware and I haven't seen any reasons to upgrade it right now. The new router that I am adding using WDS was recently bought at a swap meet for $10 and is running version 1.21 of the firmware. The reccomended setup for using WDS is available in the FAQ on the tomato website and is what I based my setup on.

Main router setup:
WAN: Setup as required by your ISP.
LAN: Pick an IP address ending in .1 for your router (usually 192.168.0.1) and ensure the DHCP server is turned on.
Wireless Setup:

  • Wireless Setup: Access point + WDS (If you are only joining two wired networks you can set this to WDS only.)
  • SSID: [Pick one for your network.]
  • Channel: 3 (I tried using channel 10 first because that's what my original wireless setup and was unable to get WDS to work. I also tried using channel 1 and couldn't get that to work either.)
  • Wireless mode: Mixed. (I also tried using G only when I had the channel set to 1. This is supposed to work but I couldn't get it to.)
  • Security: WPA Personal (WPA2 Personal will not work and neither will WPA / WPA2 Personal.)
  • Encryption: AES (I tried AES / TKIP and it would only work if it was only AES.)
  • Shared Key: [Pick one for your network]
  • WDS: Link with [MAC address of your 2nd router.] (There is also an option for Automatic / Lazy which I was not able to get to work.)

Second Router Setup:
WAN Setup: Disabled.
LAN Setup: Manually assign an IP to this router. Normally ending in .2 (Like 192.168.0.2. Make sure that this IP address is not available to be assigned by DHCP from the main router.)
DHCP: Ensure that this is OFF!

Wireless Setup:

  • Wireless Setup: Access Point + WDS (This could also be only WDS if you want only one access point or if you are joining two wired networks together.)
  • SSID: [The same as the main router's SSID]
  • Channel: 3 (Again this has to be the same as your other router.)
  • Wireless mode: Mixed.
  • Security: WPA Personal
  • Encryption: AES
  • Shared Key: [The same as your main router.]
  • WDS: Link with [MAC address of your main router.]

I also found that I had to enable STP in the Advanced > Routing options page. All other options were left at their default settings with the exception that I also have QoS setup in a manner similar to this post on the main router. You can check to see the status of whether or not your routers are communicating via WDS by looking at the Status > Device List page to see if you have a listing for WDS on both routers.

You an add as many additional routers as you would like by adding their MAC addresses to the "Link with" field of your wireless setup. You should avoid creating routing loops when adding additional routers and setup them up in a star, line, or tree topography. If you absolutely have to setup a ring topography for redundancy I recomend finding a way to join the routers together using a wired configuration and doing some research on STP and RIP.

Author's Note: WDS is not officially part of any 802.11 standard and is not recognized by the Wifi Alliance. Many different products implement the feature differently and may be incompatible with other devices that also support WDS. The only way to be sure that your setup will work is to follow guides like this one of people who have tested known configurations. Your milage will vary. Good luck!

Tagged as: , 1 Comment
26Sep/080

Question from a Reader: Hosting multiple WordPress blogs on one domain name – Part 2

Mike writes: So I'm a newbie when it comes to wordpress, but I think I can catch on fairly quickly. what I was hoping to find was something that would teach me to have one domain name, and have multiple blogs on that domain name, however, have a main front page, that would have that blog orginized into various preview posts.

This part of the question is significantly more difficult to deal with, since WordPress doesn't offer this functionality (at least not in any way I'm familiar with!)

Mike pointed out a site called iBankCoin.com that had a front page concept similar to what he was trying to accomplish. The site, like many others out there, aggregated content from different sections (or different sub-sites) into one entry page. The layout is fixed, but the content is populated by whatever is most recent in the given section.
The 'Peanut Gallery' section could be a sub-site WordPress blog, where authors are Contributing users on that blog.

There are going to be two main technologies to pulling something like this off:

- RSS, or Really Simple Syndication, is an XML format that publishes the content of a website stripped of any styling, so that it can be simply consumed and read by other software -- like a news reader or aggregator.

- PHP is the server-side programming language that WordPress uses to publish your blog content. Because WordPress uses it, we know that its installed on the server. There are other languages, such as ASP, that could accomplish the same thing, but there's no guarantee that those will be available on your server.

In short -- and I'm not going to be able to expand a whole lot without actually writing the code -- we can use PHP and HTML to create our front page. Even basic HTML can do the layout we're looking to borrow. We'll use PHP, which runs on the server before the page is served up to the viewer, to populate the content of the page by pulling the RSS feed from each sub-site.

The RSS part of the puzzle is, by far, the easiest. WordPress has RSS publishing built right in, and if you have a WordPress blog up and running, so is your RSS feed! Just add /feed to the end of your WordPress URL.
So, using our previous examples, if we had a sub-site called www.jwcars.com/red-cars we could get the latest posts from it in RSS format by going to www.jwscars.com/red-cars/feed

The Entry Page, then, will be where the smarts of our system go. This page will contain both the HTML necessary to define the layout, and the PHP necessary to retrieve the RSS from each site, parse it, to extract only the information we want, then push it into the HTML as the page is loaded.

There are lots of ways we can do this, making it more intelligent (and complex) and there are lots of principles of good programming that would probably come in useful, but to keep things simple, here's what's going to happen at a minimum:

An HTML page exists on the server, with the special extension .php (for example, index.php works on most servers as a default page)

Before the HTML code, but in the same document, we'll have a block of PHP code, called a method, that knows how to fetch RSS, single out the text we want, format it, and send it back:
<?php
// work your magic
?>
<html>
Your page goes here
</html>

Within the HTML code, in the places where we want the external content to appear, we'll call that PHP method, telling it what RSS feed to retrieve:
<?php
// work your magic
?>
<html>
Your page goes here
<span>
<?php //request magic trick ?>
</span>
</html>

When the user pulls up the entry page of our site, the server will read through the .php file, find all the places where it needs to do some work, and execute our code, returning the results to our visitor as a completed HTML page, with all the PHP code gone:
<html>
Your page goes here
<span>
MAGIC!
</span>
</html>

Now I know this is hardly a complete solution. In fact, there are probably a number of ways to solve this problem, and this is merely a sketch of one way to deal with it. But one of the huge advantages to using PHP is that its a well loved little scripting language, and for anything you want to do, odds are, someone has already done it, or something similar, and published a how-to, or even better yet, a Library you can download, and use in your own code.

Case in point: by far the trickiest part of this project would be writing the code that gets and parses the RSS feed -- its an easy to understand format, but you'd still have to write a lot of code to get at what you want. Fortunately, someone's already done it. You can use Magpie RSS to handle all the difficult work for you, and you can reverse engineer this example of creating a more generic RSS Aggregator to fit your needs.

Picking up a new programming language can seem daunting at first -- as far as I'm concerned, PHP has one of the most eccentric and ugly syntaxes I've ever seen -- but Google makes for a great resource. Borrow, reverse engineer, and plaguerize any code you find published... that's how every programmer I've ever met got their start!

Tagged as: , , , No Comments
17Sep/081

Question from a Reader: Hosting multiple WordPress blogs on one domain name – Part 1

Mike writes: So I'm a newbie when it comes to wordpress, but I think I can catch on fairly quickly. what I was hoping to find was something that would teach me to have one domain name, and have multiple blogs on that domain name, however, have a main front page, that would have that blog orginized into various preview posts.

So this is a relatively easy job, but it should be noted that there are probably numerous ways to accomplish what Mike is after. His problem really is in two parts, so I'll offer my solution to one, and later, some ideas at how to solve the other...

The good news is, WordPress is made to do this. In fact, I'd wager there's already some documentation on their site on how to do it. Its worth discussing though, just to get ideas flowing.
Probably the first thing you'll want to do is come up with a naming strategy for your sub-sites. Do you want to use www.mysite.com/subsite1 or do you want subsite1.mysite.com? Actually it doesn't matter from an installation perspective, but its certainly a useability concern, and one approach will dictate some additional work with your hosting provider.

Here's a screen shot of the top level web directory of a website. You can see each of my subsites, as well as some supporting folders for the entry level site...

I chose a naming convention that reverses the domain names, simply because the sort order makes it easier for me to find things. Note that in the subdomain approach (subsite1.mysite.com) the folder names don't really matter -- I'm going to hide them from users. If I chose a subfolder approach (mysite.com/subsite1) the folder names would be important (at least in a simple setup).

In Mike's case, the entry site (or root site, or main site) will not contain a WordPress installation. This is because what he wants to do can't be done by WordPress (see part 2.) In my case, the root site doesn't contain a WordPress install either, but through some magic I'll discuss later, the top domain redirects to a WordPress-driven sub-site

Note, for interests sake, that I can also host sites with unrelated domain name is the same manor. For example, my parent's site, www.spwise.com, bounces off my server -- it currently just redirects to another site, but I host the domain name.

Ok, now if all of that is as clear as mud, here's where it gets easy. Download the latest WordPress zip archive, unzip it, and upload it as many times as you want to your server -- one for each subsite you want to have. Just make sure you rename the "WordPress" folder each time, to avoid over-writing it.

So if I wanted to make the site www.jwcars.com and have the following subsites www.jwcars.com/blue-cars, www.jwcars.com/red-cars, www.jwcars.com/green-cars, I'd upload the WordPress folder 3 times, and rename the folders to blue-cars, red-cars and green-cars. Your web root folder would look something like this...


Each folder is a separate and complete WordPress installation

Now use your browser to go to the WordPress install page in each of those folders, and set-up the sites. At this point, each of the sites should have its own set-of tables in your WordPress database. You can share registration/log-in information between the sites, by doing a little hacking in the WordPress code -- that's outside of the scope of this write-up, but you'll find some tips on sharing config tables between multiple blogs here.

If you want to use the subdomain approach, you'll need a decent web hosting provider that lets you have access to some more advanced stuff. I'd imagine all the good ones let you do this, but I use WestHost and have been very happy with how much they let me configure on my own. Here's how I configure a subdomain on my server. You'll need to do something similar, but the exact steps will vary by service provider...


Here I point the subdomain testblog to the server path /var/www/html/com.server.testblog

You now have n number of websites running on one server. The only problem is, there's nothing running on your entry site. If people go to www.jwcars.com/blue-cars everything looks great. But if they go to www.jwcars.com they'll get a 404 error, or worse.
In part 2, we'll discuss some ideas for how the entry site might work. Its considerably more complicated, and requires a lot more custom coding, so I won't be able to provide the actual solution, but WordPress offers enough functionality to get us off on the right foot...

Tagged as: , 1 Comment
1Jul/082

Virtualizing OS/2 Warp

Just for kicks, I dusted off the old OS/2 Warp discs...

OS/2 was supposed to be the next DOS, developed in co-operation between Microsoft and IBM. Microsoft dropped their end of the deal when Windows 3.0 gained popularity. For awhile, and because they'd shared APIs, IBM was able to run Windows apps within OS/2 Warp, but the compatibility plan wasn't really in their best interests.
IBM did go on to continue to improve on OS/2 with Warp coming out in 1994 -- before Windows 95 was out, adding pre-emptive multi-tasking, improved memory management, and a solid networking stack. But by then Microsoft's FUD was in effect, and most consumers waited for the next version of Windows.
OS/2 did hold a fair bit of ground in banking and in embedded systems (like ATMs) and although its no longer supported by IBM, a product called eCommstation continues its development and technologies.

Alas, it does not work in VMWare, as they long ago decided support wasn't worth it. Works fine in VirtualPC, however. This guy has some tips, and you can copy the floppy images right off the CD and use them (without conversion) in VirtualPC.
Once I gave up on VMWare (won't boot past the second floppy, no matter how I configured the VM) this was one of the easier virtual machines I've built. Video was decent at SVGA, sound worked pretty well (the installer likes making funky noises.) Still messing with networking.

Hit the jump for some screen shots...

27Jun/080

Learning to Develop for the Mac – Historically

Going back to the beginning, and learning Project Builder, Interface Builder and ObjectiveC on NextStep. Can you believe this is the technology that NeXT had the same year Windows 3.1 came out? And its the same stuff that's used to build Mac and iPhone apps today...

Click for a bigger picture.

In fact, the technology is so close that I used a tutorial for developing a sample Mac app, to develop a sample NextStep app. The notion of "FAT Binaries" that work on multiple hardware architectures came from NeXT as well, since it ran on any number of platforms by the end.

Tagged as: , , , No Comments