Saturday, May 28, 2016

Dark Fiber as a model to bring competition back to high-speed Internet and other services.

I'm really excited about this idea. Remember the 90's when competition was fierce with dial-up ISPs? There was a huge factor that helped make that possible and it was commonly available lines to run the services over. Everyone had telephone lines and you could change your ISP simply by getting a new account and calling a different number. Each ISP didn't have to run an entirely new network to provide service to a population. They ordered a number of lines with telephone numbers, hooked up some modems and got a high-speed connection to the Internet and they were in business.

Dark fiber is so named because Fiber Optic cable carries data as light over its length. When it is "dark", that means there's no equipment hooked up to that line. If an area runs dark fiber to all of its homes and businesses, then they can in turn lease those lines to various companies who want to provide services over them. We can again have a ton of competition in Internet service without requiring each provider to run their own lines. Right now competition is very limited due to that simple fact. Here in Richmond Indiana choices are limited. Comcast provides cable modem service over their lines. Frontier and Parallax provides DSL service over telephone lines. Parallax has a limited roll-out of Fiber Optic as well. Then there's Bridgemax over a wifi-like wireless connection.

Internet service is not the only service that could run over Fiber Optic. TV providers and phone could also be run.

Why provide for competition instead of restricting it to a single provider? Not everyone will want the service from a single provider. That would slow down how fast a network could grow. It's not economical to roll it out to every house if only a few wants it. If the same network could be used for people who want service from Company A and people who want service from Company B then it can economically grow. Not to mention, with the added competition prices will go down while at the same time companies will also have to work on their customer service! It also opens the door for smaller companies to offer a service that would be simply impossible to offer if they have to build out their own infrastructure. The exceedingly high cost of building out infrastructure severely limits the possible competition.

Think of roads. Do we have Ford roads that only Fords are allowed to drive on? Do we have Chevrolet roads that only Chevys are allowed to drive on? No! So why not have a common infrastructure for all of our data services, such as Internet, Phone and TV?

Please note that I'm talking about Dark Fiber here. The service providers can bring their own equipment. If newer equipment comes out that is faster, then they can hook that up to the lines. Much like in the modem days when we went from 2400 baud to 56.6k. If Google offers service with 1Gbps equipment and newer equipment comes out that's faster, then they should be able to hook that up.

I've read an article recently about Google working with Huntsville Alabama to put this sort of idea into practice. It's not even the first place it's been tried and I'm very excited to see what happens. If Comcast & AT&T don't kill it off in court anyways. You can read the article here: You Didn’t Notice It, But Google Fiber Just Began the Golden Age of High Speed Internet Access

Tuesday, March 22, 2016

Solar Panels grown on the Moon could power the Earth.

This is a neat idea but I object to the premise. The article states:
"To power entire world with solar power, we would need to cover an area that's 92 percent the size of Nevada in solar panels, and that's not even counting the batteries," says Lewis-Weber. "To me, that's just not feasible."
To power the entire world, we'd only need to cover an area 92% the size of Nevada. Not we'd need to cover Nevada, just an area of that size. There's no need to have a single continuous array to power everyone. There'd be tons of transmission losses that way anyways. Not that the article above mentions what the losses would be using microwaves to transmit energy from the Moon. Given the inverse-square law, I'd have to imagine the losses would be pretty great. It'd be better to have solar arrays directly above where they are needed. I have no idea, currently, how much area is available for rooftop solar. If every home and business had rooftop solar, it's entirely possible we'd have most of the energy we'd need. Of course it depends on many factors such as what latitude you live at and quality of panels used. If the grid was entirely distributed then areas with an excess of sunlight can power areas that are cloudy. Or even include wind which will also provide power in the absence of sun.

Not that the article is entirely without merit. If someone can come up with a way to build an entirely automated factory that can be sent to foreign bodies to mine and build stuff with local resources.. that would change a lot of things. It'd also make it possible to have such machinery build bases and other resources on the Moon, Mars or even on an asteroid. Rather than spend billions of dollars to send equipment, we can cut the costs of space exploration without making it more dangerous.

The article doesn't mention how that would be accomplished. Just the idea of sending equipment that would replicate itself. Really more like Science Fiction than fact at this point.

Saturday, February 13, 2016

Some Javascript based PC and old computer emulators:

PCEjs The above ported to Javascript by using Emscripten
  • Atari ST
  • IBM PC 5150/5160
  • Mac Plus - Emulates Macintosh 128K, 512K, 512Ke, Mac Plus, Mac SE or Mac Classic
  • rc759 Regnecentralen RC759 Piccoline, which I guess was a computer made in/for Denmark specifically
This one is specifically an IBM PC 5150 emulator. Has several disk images, mainly DOS but there's a Windows 1.0 too.

This one is an x86 emulator written in Javascript that loads up a very simple Linux system when you visit the page. It seems pretty responsive. The guy that wrote it said it should be about the level of a 486 but without a floating point unit. No network support.

This is another x86 emulator written in Javascript. This one has several disk images of Linux, DOS and even Windows 1.01.

DOSBox is a x86 emulator that comes with it's own DOS like environment. The development has been mainly focused on getting games running, but it can also run other applications. It's possible to run Windows 3.1 and even Windows 95 on it. However, Windows 95 isn't super stable. Em-DOSBox is a port of DOSBox to Javascript using Emscripten. Emscripten can compile C/C++ code to Javascript.

Internet Archive DOS and Windows games
Windows 3.11 in your browser
Here's the thing that blows my mind. I ran Windows 3.1 on a 486sx 20Mhz in the early 90s, so about 23-24 years ago. Now it's in my browser and it's not even slow.
This Em-DOSBox generally has a better interface than the other x86 emulators above.

Windows 95 in your browser
I'm not sure about the legality of this one. From all accounts it is buggy and tends to hang. I'm sure the Internet Archive version of Windows 3.11 above is legal. For one thing, they don't let you download it. All you can do is stream it from their website.

It's conceivable that someone could make an adventure game set in the 90s with fully working emulated computers from the era, given that all of this stuff works in the average browser these days. Even better if they can simulate a modem and let you dial up to a virtual BBS. It'd be great if Microsoft came out and said that MSDOS and old versions of Windows, such as 3.1 and 95, would be freely available for this sort of thing. After all, "It's a new Microsoft."

Friday, January 8, 2016

Javascript support

This is a neat Github repository that is a page discussing all of the new features in ES6, also known as ECMAScript 2015. Basically all of the new features in Javascript.

Here is a page that shows a support matrix of which browsers, servers and compilers support which ECMAScript features. It shows ES5, ES6, ES7 and non-standard. It even shows what the currently used browser supports.

Wednesday, October 14, 2015

500GB SSD drive for only $134.99

Holy cow prices on SSDs are dropping like a rock this year!
I just found this deal on Slickdeals on a 500GB Crucial BX100 SSD. It's only $134.99 with free shipping. If you look on camelcamelcamel, this drive was $200 back in January.

It was only about 4 months ago I picked up a 180GB Intel drive for my laptop for around $80.. but you regularly see 256GB drives for under that now. I wonder what kind of deals will show up for Black Friday this year? Maybe by next spring we will see 1TB drives for under $200?

Exciting times for sure.

Tuesday, January 6, 2015

GULEEK i8 Windows 8.1 mini pc

This is probably the neatest thing I've seen in a while. This is a full computer with a quad-core Intel Atom processor, 2GB RAM and a 16GB SSD. The power connection is a MicroUSB port. It has HDMI, audio out, 2 USB 2.0 ports, built in wifi and a port to add a MicroSD card. All of this for $104 from [Link]
From what I've read, the version of Windows 8.1 it runs is a special Bing version that is either free or really cheap for the manufacturer. It is from China so it's nice that it's not a pirated version at least. The word on Linux compatibility is that it isn't, so far.
This device has a 3,000mah battery integrated as well so it can run for a time without being plugged in. I'm not sure what the run time is at this point. The dx page shows it being run headless with an Android tablet controlling it. I'd assume you can do the same thing with IOS and Windows tablets using a remote desktop application.
This article about this device mentions a Vensmile iPC002 system that is very similar but with a larger capacity battery and double the built in storage. This is typical for Chinese products to have a lot of nearly identical looking products from different companies that may or may not have different specifications.
It'd be pretty nice if one of these companies brought out one with the ability to upgrade with a M-SATA or similar SSD card.
I could think of a number of uses for a device like this:

  • Low power NAS device with external hard drives.
  • Thin-client replacement.
  • Kid's first computer.
  • Backup system, in case your main one breaks.
  • Wearable computer, possibly useful with the Oculus Rift headset.
  • Robotics.
  • 3D printer computer.
Intel Atom processors aren't known for their processing performance. This is still limited compared to even a Celeron, but in many cases it might have enough horsepower to do a necessary task.

Friday, May 30, 2014

Update Grub 2 options

As a follow up to my previous post Ubuntu Server 14.04 fun I was asked how to update the Grub2 file. It's really very easy. Use a text editor to open /etc/default/grub like so:
sudo nano /etc/default/grub
Then find the line that says GRUB_CMDLINE_LINUX_DEFAULT="" and add nomodeset inside the quotation marks.
If you do use nano then you can press Ctrl-o and Ctrl-x at this point to write and exit.
Then run this command:
sudo update-grub
and that should do it.

Thursday, May 29, 2014

Make Raspberry Pi (and other SBCs) report it's IP address when it starts up.

You can also track power on events and other information in this way. First, create a script, let's call it

_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
  result = ""
  printf -v result "" "$_IP"
  echo "$result"
  curl -u username:password $result

What's going on here?
First it gets the IP address and assigns it to a variable $_IP.
It displays a message so if you do happen to have a display plugged in then you'll see what the IP address is without logging in.
It builds a $result variable that is a url. In this case I have a fictional web server at, a PHP script called rpi.php runs on it that can take some values and log them to a database. This is a very simple script that is setup to log to a SQLite database but could easily be rewritten to point to MySQL or your favorite database.
It then uses curl to call upon that url in order to set things in motion. I'm using the -u switch to specify a simple digest username and password.

Then you can put this into your /etc/rc.local
This is wildly insecure if you leave it in a user's home directory since whatever is in the script will be executed with root privileges on startup so don't do that in your day job. You can run it with sudo -u username /home/user/ to run it with lesser privileges or put it elsewhere.
Once this is setup then every time your pi starts, it will get an IP and then hit your server to report what IP it got. Then you can go to that page and see what it is.

I actually need to rewrite that PHP script, it was lost in a hard drive crash earlier this year. Look for it soon, I will put it up on my GitHub account.

Thursday, April 24, 2014

Ubuntu server 14.04 fun

Recently lost a system drive in the AMD E350 based computer I use for various file server, database, test web server and other roles in my home network. The new drive came in the mail today so I decided to try to install the new Ubuntu server to it. I used the built-in LVM support that exists in the CLI installer now. Last time I had to do that by hand so it was a nice improvement.

Long story short, on boot up I was encountering an apparent hang or freeze once it was trying to initialize the swap space.
[    3.490158] firewire_core 0000:06:02.0: created device fw0: GUID 001e8c000042dc3f, S400
[    3.616414] random: lvm urandom read with 30 bits of entropy available
[    3.671945] bio: create slab <bio-1> at 1
[    3.843667] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[    4.026158] Switched to clocksource tsc
[    4.460003] init: plymouth-upstart-bridge main process (183) terminated with status 1
[    4.462054] init: plymouth-upstart-bridge main process ended, respawning
[    4.470931] init: plymouth-upstart-bridge main process (194) terminated with status 1
[    4.472846] init: plymouth-upstart-bridge main process ended, respawning
[    4.482749] init: plymouth-upstart-bridge main process (196) terminated with status 1
[    4.484555] init: plymouth-upstart-bridge main process ended, respawning
[    4.493858] init: plymouth-upstart-bridge main process (198) terminated with status 1
[    4.495605] init: plymouth-upstart-bridge main process ended, respawning
[    4.503723] init: plymouth-upstart-bridge main process (200) terminated with status 1
[    4.505317] init: plymouth-upstart-bridge main process ended, respawning
[    4.516120] init: plymouth-upstart-bridge main process (201) terminated with status 1
[    4.517821] init: plymouth-upstart-bridge main process ended, respawning
[    4.552321] init: plymouth-upstart-bridge main process (203) terminated with status 1
[    4.553990] init: plymouth-upstart-bridge main process ended, respawning
[    5.143395] random: nonblocking pool is initialized
[    5.480640] Adding 7970812k swap on /dev/mapper/ubuntu--vg-swap_1.  Priority:-1 extents:1 across:7970812k FS

The most frustrating part of this is that the only reference I found to someone having the same problem online wasn't any help at all.

Then I discovered that in the recovery console I was able to see an IP and it was on my network just fine. So on the next reboot I tried connecting to it over SSH after it "froze" on me. I was able to connect and login and even use it as if nothing was wrong! The dmesg log shows the boot process continuing on from the above point as well.

Some research later and I found that if you add nomodeset to the kernel settings before it boots then it will continue on to the login prompt normally. I'm sure, now, that when it appears to freeze that's when it is actually switching to a video mode that is not working correctly on my hardware. This is probably not a very common problem which is why I don't see many other people talking about it online.

tl;dr? If you're having problems with Ubuntu appearing to freeze during the boot process.. try booting with nomodeset in your kernel options!

There's a nice description of what nomodeset does here: link

Sunday, November 10, 2013

Things a PC guy is learning about Macs

I've recently bought a used iMac from ebay in order to learn more about these computers. I've learned a few things since buying it. I'm hoping to post on here from time to time various tidbits that I've learned. The ultimate goal is to become certified as Apple Certified Support Professional.

The windowing concept in Mac OS is a little different from Windows, or even X Windows. If you hit the red button at the top left of a window, it doesn't close the application. There's a doc at the bottom of the screen with several common applications, and any running applications. If you look under/in front of an application and see a blue light, that's your indication that the program is still running. Even if there are no open windows, a program will continue to run until you exit it. Two ways that I know about include going to the menu at the top when the program is active, picking the main menu item (Usually the program's name) and then picking the Quit option at the bottom. The other way is to make the program active, then push the Command-Q keyboard shortcut.

On a keyboard with the Windows keys, the Start button will stand in for the Command button on an Apple keyboard.

Here is a list of other keyboard shortcuts.

I like the way Mac OS software is distributed. Mostly in the form of DMG files, which are like disk images. Opening one causes it to show up like a hard drive, or CD. According to information I've found online, they can be compressed or password protected as well. Installing a program can be as simple as downloading a dmg file, mounting it, and then copying the program to the application folder. The dmg file could also have an installer as well.

It was incredibly easy to setup my printer. I've read the backend of the printing support is based on CUPS which also can handle printing in Linux. Common Unix Printing System was originally what it stood for. Mac OS X has a BSD-based kernel named Darwin. That part of the system is released as open source software. It's missing elements required for the GUI part of Mac OS and can't run Mac OS applications when installed separately from Mac OS X. You can interact with the BSD side with the Terminal application in Applications|Utilities.

The default shell for the Terminal is TCSH, but others are supported and included depending on the version of Mac OS X. Bash, csh, ksh, zsh are some of the options available. Looks like according to the Wikipedia article on TCSH, it's no longer the default as of OS X 10.3.. the default shell is BASH. Running "echo $SHELL" on mine seems to back that up.. the result was "/bin/bash"

X11 was already installed on the one I bought, apparently it is no longer included by default in new installs of Mac OS X. I've used this before to open an X session to one of my Ubuntu computers. It's handy to do so in order to run programs on that computer, or manage files on it.

I've played around with various applications and settings so far. I tried out the Speech recognition. It's not very accurate for me, but it is a neat idea. It makes me wonder if later versions of OS X have that supplemented with SIRI or even still have it at all.