Saturday, April 12, 2014

TurboTax 2011 and 2012 and 8606 Total Basis

I just discovered that my 2011 and 2012 returns did not carry over my non-deductible IRA contribution cost-basis from previous years. I believe this is was caused by a bug in TurboTax from one or both years not remembering the 8606 from previous years (I use TurboTax every year and import data from the previous years).

At least that's my theory--and they seem to have fixed the bug in TurboTax 2013, because now it's suggesting the non-deductible portion of my contributions from 2012... which is why I discovered this.

Oh well, amended returns are fun...

TurboTax 2013 and the Gift Tax

If you were hoping to have TurboTax take care of helping you with a Gift Tax this year, or determining if you need to file it, it does not have this functionality:
https://ttlc.intuit.com/questions/1798741-how-can-i-do-form-709-with-turbo-tax

You'll have to do it all yourself, using IRS form 709:
http://www.irs.gov/pub/irs-pdf/f709.pdf

Maybe Intuit will add this next year?

Tuesday, December 31, 2013

OpenWrt plus AirPort Extreme Guest network

The Apple AirPort Extreme comes with a great feature, which is Guest networking. If all you want is an AirPort, you can easily click a few check boxes and have a Wifi network that you can share with guests.

But what if you want to do more? What if you want to have an Ethernet port for that guest network? What if you've reached the limits of the AirPort and you want to run something where you can see what's going on in your network? Or control and shape traffic? Or prove that your ISP is dropping packets all the time?

You probably want to run a variant of DD-WRT. Nowadays it seems that the best supported variant with the best features is OpenWrt. Also, you want to run it on inexpensive hardware that can Do More.

AirPort Guest Network Details

The AirPort Guest network is pretty straightforward:
  • A separate wireless SSID (that you choose).
  • A separate IP subnet and gateway (172.16.0.xxx) with DHCP service.
  • A VLAN (1003) that each guest network packet is tagged with (I got this info from this Apple Support Communities thread from user Dennypage, but you should be able to figure it out via tcpdump on your OpenWrt router.).
The first two are obvious in the AirPort UI. But what's not obvious is how this guest network is communicated between multiple AirPorts when one is the router and the other(s) are in bridge mode. What happens is that the guest VLAN is tagged with 802.1Q VLAN tags on VLAN 1003. In this way, the nodes on your internal network doesn't see (unless it really wants to) the guest network traffic. And the nodes on the guest network cannot ever see the internal network traffic.

Now why are these details important? If you want to have a router that replaces your AirPort Extreme(s), but still use its Guest network feature, that router is going to have to serve a Guest network on VLAN 1003.

Hardware Selection

You have to have hardware to run OpenWrt, and the selection of supported hardware is quite extensive. However, you can narrow down what you're looking for, because it sure would be nice if you could have different VLANs (tagged and untagged) on different switch ports. This is possible if you select hardware that supports Port-based VLANs. These seem to all be Broadcom based hardware in the consumer router world. I chose an Asus RT-N16 at Fry's; it seemed reasonably priced, Gigabit Ethernet, and supported Port-based VLANs. It doesn't do 802.11ac, but I'm not concerned about that. Up to you what you want to do, of course.

OpenWrt Installation

I managed to install the latest trunk snapshot of OpenWrt on my Asus RT-N16. It had to be somewhat recent to support the new hardware in it. But you should follow the installation guide for OpenWrt appropriate to your hardware. In addition to the core OpenWrt software, I installed LuCi, to make things easier.

Guest Network Configuration

For the most part your should follow the OpenWrt guide to configure a guest WLAN. That will get you almost all of what you want. But you will have to do things a little differently...

Create a Switch configuration with Guest network VLAN

Before following the instructions on creating an Interface, you'll need to have a Guest VLAN. Do that by accessing the Network -> Switch menu in LuCi.

There you will see that VLAN ID 1 is used for your "internal" or NAT'd network. VLAN ID 2 is used for the WAN network.

You are now going to create VLAN ID 1003, which is going to be your Guest network VLAN. Once it's done, your switch configuration should look something like this:


In this diagram, Port 0 is the WAN port. That's why VLAN ID 2 is "untagged" on that port, and it's the only VLAN on that port.

Port 4 (which happens to be labelled Port 1 on the Asus RT-N16) is the switch port that I am using to connect my AirPort Extreme(s). Therefore I've configured it to carry VLAN ID 1 "untagged," and VLAN ID 1003 "tagged."

Port 3 and Port 2 are "Guest network" ethernet ports that visitors can use at any time to get on the Guest network, not my internal network. You can see that they are "untagged" so that they "just work" as a regular untrunked Ethernet port. At this point, physical security is your main concern, and I leave it up to you to label your ports and control who plugs into what.

Create a Guest network bridge

The recipe above has you create a WLAN, which is all that's needed to create an interface. But when you follow the recipe, you'll want to select "Create a bridge over multiple interfaces":


Then select both the WLAN network you created in the recipe, as well as the VLAN interface you created above:




Now proceed with the rest of the recipe.

Testing

Once you've completed the recipe, connect a machine to the AirPort guest network (not the OpenWrt guest WLAN) and see if you get an address in the 192.168.3.xxx range (or whatever range you configured for your guest network).

Beyond

Obviously you don't have to stop here; you can create a separate Game network or other type of network on your router, and support a mix of Ethernet and Wifi nodes on the network. Up to you. But if you use AirPort Extreme for your Wifi, you will be limited to two networks (untagged and tagged 1003) .

Monday, April 8, 2013

Emacs keyboard delay when switching frame focus

I recently ran into an annoying issue with Emacs; I'm not sure what initiated this problem, but it might be that the default value of focus-follows-mouse changed. Or Ubuntu changed.

Here's the issue that I was seeing:

  • I have multiple Emacs frames, and I like to switch between them often.
  • Switching between them by using Alt-Tab, or clicking, would result in no problems.
  • However, using the interactive function other-frame (via a keybinding) results in a problem that there's an approximately 2 second delay from switching focus to when the keyboard would accept input again. Even worse, Emacs seems to have forgotten what modifier keys I had down, so when it did accept keyboard input, it wouldn't know that I still had the control key held down.
I tried various ways of debugging this to see if anything was going on (xev, strace) but ultimately I figured it out by reading M-x describe-function other-frame. That reveals the following text:


To make this command work properly, you must tell Emacs
how the system (or the window manager) generally handles
focus-switching between windows.  If moving the mouse onto a window
selects it (gives it focus), set `focus-follows-mouse' to t.
Otherwise, that variable should be nil.

When I M-x describe focus-follows-mouse, it shows t, which is wrong. So I instead added the following to my .emacs:

(setq focus-follows-mouse nil)

and now everything is back to normal. Why did that setting break things? Not sure. Maybe Emacs didn't call something it should have called assuming X would take care of it. Or the other way around. Anyhow, it's much better now.

Some details on my setup:
  • Ubuntu 12.04 Precise Pangolin
  • Emacs 23.3.

Sunday, October 21, 2012

Ubuntu 12.10 available?


New release '12.10' available.
Run 'do-release-upgrade' to upgrade to it.

$ do-release-upgrade 
Checking for a new Ubuntu release
No new release found

Hmm....
(Seems 12.10 is released, just not working with do-release-upgrade yet)

Monday, June 11, 2012

Python re.match doesn't guarantee $

When choosing a method to call with Python's re module, it's common to consider search() vs match(). However, note that:

re.match('pattern', s)
is not the same as
re.search('^pattern$', s)

re.match only guarantees that the beginning of the string is matched, not that the entire string is a match. Some simple examples:


>>> re.match('[a-z]+', 'abc123')
<_sre.SRE_Match object at 0x7f92136abc60>
>>> re.match('[a-z]+$', 'abc123')
>>> 

Note that the second match statement guarantees that the match extends to the end of the string.

Saturday, April 14, 2012

TurboTax 2011 and AMT Credits

Disclaimer: I am not a Tax Advisor, CPA, CFP, or any other type of legal/financial/tax professional.

I've found some AMT credits that TurboTax wasn't giving me, because it didn't fill in values from 2008 and 2009, even though I've been using TurboTax every year since at least 2008.

When filling out your 2011 Taxes, be sure to follow the interview questions for Credit for AMT Paid in Prior Year. You can see it in the Deductions and Credits page as such:



Next check the values on this screen:







TurboTax seems to have carried over the correct values for me from 2010 (I blanked them out in the screenshots, sorry).

And check the 2010 Form 6251 Amounts, which for me also seem to be correct:





















The following screen is, I believe, the reason why I wasn't getting a credit:















These values were blank. Once I looked up all the values from my previous returns, and filled them out correctly, TurboTax computed an AMT credit for me.

There's some discussion of this on the Intuit Community site.

And as always, consult your tax advisor.

Sunday, December 25, 2011

Zoneminder: Got unexpected memory map file size

I'm trying to capture video from a device that's 640x480 24bit color, but I'm getting this in /var/log/syslog:

ERR [Got unexpected memory map file size 9217192, expected 36865192

Google-ing for this doesn't turn up anything except the Zoneminder source code; but it turns out that this is caused by too small a setting in /proc/sys/kernel/shmmax. This is explained the Zoneminder FAQ.

After updating my /proc/sys/kernel/shmmax to the recommended 128MB, it works just fine...

Wednesday, November 9, 2011

EasyCap DC60 and Ubuntu 11.10

I got an EasyCap DC60 from Amazon to see if it would work with my Ubuntu box to capture video. It looked promising at first... The output from dmesg looks like this:

[ 3391.497363] easycap::0adjust_standard: selected standard: PAL_BGHIN
[ 3391.808248] easycap::0adjust_format: sought:    640x480,UYVY(0x59565955),1=field,0x00=std mask
[ 3391.808256] easycap::0adjust_format: sought:    V4L2_FIELD_NONE
[ 3391.808264] easycap::0adjust_format: actioning: 640x480 PAL_BGHIN_AT_640x480_FMT_UYVY-n
[ 3391.832121] easycap::0adjust_brightness: adjusting brightness to  0x7F
[ 3391.856121] easycap::0adjust_contrast: adjusting contrast to  0x3F
[ 3391.880121] easycap::0adjust_saturation: adjusting saturation to  0x2F
[ 3391.904122] easycap::0adjust_hue: adjusting hue to  0x00

and it shows up as a video device just fine:

$ ls -altr /dev/video0 
crw-rw----+ 1 root video 81, 0 2011-11-05 22:58 /dev/video0

But when actually using it, it shows an image at first, and then shows grey bars. Note that the above message shows PAL, but I've tried NTSC, and other encodings with the same result. I found a thread about this on SourceForge.net, but the SourceForge project appears to be empty now. Google Cache currently contains the thread. The interesting pieces of text are:


The vertical grey bars usually mean that the front-end video chip cannot lock onto the analogue input signal.  This can happen if, for example, the video signal is really NTSC while the mplayer command line specifies PAL.  But in these circumstances, I would not expect to see any video output at all (apart from the grey bars).  The puzzling thing is that you do get some valid video, which then disappears.

One possibility is that the SAA7113H chip is raising a hardware "lost signal" flag when in reality the signal remains entirely viable (some aspects of this chip are known to be flaky).  To investigate this, it would be useful if you could reinstall the driver after changing line 31 of the script ./install.sh to
BARS=0
and run ./test4PAL.sh again.  This is a straight go/no-go test:  either it solves the problem or it is doesn't.  We don't need a verbose kern.log this time, so you can set DEBUG=0 in the installation script.
Since the SourceForge project seems to have disappeared, I'm not sure where install.sh is, or how to find it. Maybe the whole thing's moved to kernel.org. I suppose I could start digging around in the kernel source and see if I can figure out what that does...

Update: OK, this was a lot easier than I thought:

  • Google for "easycap site:kernel.org"
  • Find the README.
  • Remove all users of easycap kernel mod (shut down apps/services)
  • sudo rmmod easycap
  • sudo modprobe easycap 'bars=0'
  • Restart and try again...
Update 2: The next thing you should probably do is:
  • sudo vi /etc/modprobe.d/easycap.conf
  • options easycap bars=0
  • :wq
  • sudo reboot

Sunday, November 6, 2011

Zoneminder Memory.pm bug in 1.24.4


If you have Zoneminder installed and you're seeing this in /var/log/syslog:
Nov  6 14:36:11 machine zmwatch[2741]: ERR [Shared data size conflict in shared_data for monitor monitor, expected 328, got 316]
It's probably because of a bug that's been patched. On my distribution (Ubuntu 11.10) the file Memory.pm is at
/usr/share/perl5/ZoneMinder/Memory.pm
and the patch in question was applied at line 130.

Saturday, October 8, 2011

Movable Type and Google Plus authorship


I found the instructions for linking authorship to your Google+ profile:http://www.google.com/support/webmasters/bin/answer.py?answer=1408986
I'm trying to get this to work in Movable Type, but so far either my page is not getting indexed, or I'm doing it wrong. These are the instructions I followed:
  • Edit your Movable Type profile so that your Website URL is your Google+ profile page. You don't have to add ?rel=author at the end of the URL; that will be done below.
  • Choose Design->Templates and edit Archive Templates->Entry:
  • Find the byline. In my template it looks like this:
By <span class="vcard author"><$mt:EntryAuthorLink show_hcard="1"$></span> on <abbr class="published" title="<$mt:EntryDate format_name="iso8601"$>">
  • Insert the following markup in an appropriate place; I've inserted it directly after the <$mt:EntryAuthorLink> element:
<a href="<$mt:EntryAuthorURL$>?rel=author">Google+</a>
  • Now go back to Design Templates and edit Template Modules->Entry Summary. Repeat the same steps as above.
If you follow these instructions (which produces HTML which seems to match the requirements of authorship), and you're successful, please leave me a comment and let me know...

Update: I've moved to Blogger, and it will soon have Google+ profile integration, so I'm not as motivated to figure this out. If anyone else figures it out, please feel free to post a comment.

Update2: I've found out how to find out if your rel=author link will work. There's a Rich Snippets Testing Tool that tells you about authorship for a specific page. I tried that page and it said my Movable Type page is "Verified: Authorship markup is correct for this page." But it still doesn't show up in search results, because my blog probably isn't interesting enough to be included yet...

Saturday, October 1, 2011

iOS 4.3.x wifi unresponsive after x minutes of use


I have a network setup with an Airport Extreme base station, and a second wired bridge access point with the exact same SSID, key, etc., that's running DD-WRT v24-sp2.
With my iPad 2 with iOS 4.3.3 and 4.3.5, my wifi connection won't work after x minutes of use. It looks like it's connected: icon is good, IP address is good, but no traffic. Turning wifi off and then back on instantly repairs the connection.
However, it always works when I'm close to the Airport Extreme.
I filed this bug with Apple a while ago, and they've asked for more information, but haven't fixed it yet. I wonder if anyone else has this issue...

Thursday, October 1, 2009

Safari discards # anchor during 301 redirect

I filed a bug with Apple a few weeks ago about Safari dropping # anchors on redirects. It is problem ID #7209106. It doesn't seem like you can link to their bugs, so I will describe it here: When visiting a URL which causes a 301 redirect, the anchor at the end of the URL is discarded. Steps to Reproduce: Visit: http://wikipedia.org/wiki/Safari_(web_browser)#Safari_4 Expected Results: The redirect to en.wikipedia.org should result in Safari visiting: http://en.wikipedia.org/wiki/Safari_(web_browser)#Safari_4 Actual Results: Safari discards the anchor, and the resulting page is: http://en.wikipedia.org/wiki/Safari_(web_browser) Regression: I did not try this with Safari 3 or earlier. But Chrome and Firefox both preserve the anchor. Notes: Here is the transaction with the server that is the redirect: GET /wiki/Safari_(web_browser) HTTP/1.1 Host: wikipedia.org User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9 Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: keep-alive HTTP/1.0 301 Moved Permanently Date: Wed, 09 Sep 2009 01:12:23 GMT Server: Apache Location: http://en.wikipedia.org/wiki/Safari_(web_browser) Content-Length: 257 Content-Type: text/html; charset=iso-8859-1 Connection: keep-alive <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="http://en.wikipedia.org/wiki/Safari_(web_browser)">here</a>.</p> </body></html>

Saturday, June 13, 2009

iPhoto 8.0.3 causes you to backup all your data again


That is, if you don't realize what happened.
I haven't found a reference as to why this was done, but after my upgrade to iPhoto 8.0.3, my rsync backup strategy decided to re-backup almost every picture I have in my library. That is until I did some poking around and found this in my iPhoto Library directory:
drwx---rwx  29 jared  staff        986 Jan 11 11:25 Data.noindex
lrw-rw-rw-   1 jared  staff         14 Jun  7 17:16 Data -> ./Data.noindex
Of course Jun 7 at 17:16 is about exactly when I upgraded to 8.0.3. Anyhow, this simple command from the appropriate point on my backup drive saved me a very large rsync:
$ mv Data Data.noindex
If you're using TimeMachine this isn't possible or desireable. I've seen forum posts on the net that imply that 8.0.3 will cause TimeMachine to re-backup everything, but it seems to me it should be smart enough to realize that those files just changed their path; the inode number probably didn't change.

Thursday, May 28, 2009

iPhone won't charge, won't connect: saved by FireWire


The other day my iPhone ran into a catastrophe: it wouldn't charge, it wouldn't connect via USB, and the battery was dying. It's a first generation iPhone, and it looked like that was the end of my old iPhone.
I followed Basic iPhone troubleshooingread various threads about similar problems, and tried a few of my own tricks:
  • Tried different cable
  • Tried different plug
  • Tried different outlet
  • Verified that those all worked with our other iPhone
  • Blew gunk out of the iPhone connector area (there was actually a lot in there)
  • Rebooted iPhone several times
  • Tried to clean the tiny iPhone connector with rubbing alcohol
None of that worked. So I went to the Apple Store, and the Genius did the same things, and determined that it must be the battery. Actually, it was not the battery--the connection sound never happened, and the iPhone never recognized a connection. But the Apple Store genius was doing us a favor, because if the battery dies, we can buy an exact replacement (a first generation iPhone) for $85 dollars.
And by this time the battery in my iPhone was completely dead: I had failed to email my pictures off before the battery died. Another lesson learned...
I went home to consider my options, and try some other last resort actions, such as contact cleaner or disassembling the iPhone myself (or going to We Fix Macs). But I finally had an idea:
What if I tried to use a FireWire cable to charge?
It works!
I have an old JBL On Stage iPod speaker/dock that uses the FireWire pins instead of theUSB pins to provide power, and that worked. It still doesn't make the "beep beep" sound when you connect the iPhone (and neither does the perfectly working iPhone). That must be reserved for a USB connection. But the iPhone immediately recognizes that it's getting power, and it charges perfectly.
Note that this trick won't work with a 3G iPhone or a second generation iPod Touch: the FireWire connection inside those have been removed.
Also, I haven't yet tried to sync with a FireWire cable. I believe it just might work, but I still have to find a FireWire cable (not the speaker dock) and try.

Monday, March 30, 2009

Created Open Source project TestCpp


Today I created an Open Source project called TestCpp. It's a very simple JUnit-like C++ unit testing framework, and I'll be adding more to it in the near future.
I really wrote it because I'm working on another open source project, and I wanted to write some unit tests in C++; I quickly got frustrated with everything I had to do to get it going. With TestCpp you should be able to write your C++ unit tests and actually execute them in no time.

Wednesday, March 25, 2009

Ubuntu 8.10 and Static IP


I just installed Ubuntu 8.10 Desktop and had a very interesting time trying to configure a static IP address. There are plenty of discussions on the forums about how this doesn't just work with the standard Network Manager. And you can't just edit/etc/network/interfaces because that is ignored when you have Network Manager installed.
To make it work, I followed this procedure:
First, remove the Network Manager packages:
sudo apt-get remove network-manager
sudo apt-get remove gnome-netstatus-applet
Now you'll have to manually set an IP so that you can connect to the Internet (modify this to be appropriate to your setup):
sudo ifconfig eth0 10.x.x.y netmask 255.255.255.0
sudo ip route add default via 10.x.x.1
sudo vi /etc/resolv.conf
Set nameserver 10.x.x.z appropriately. Next install the old gnome network admin tool:
sudo apt-get install gnome-network-admin
Finally use the old GUI to set networking configuration:
network-admin
This will store the network configuration in /etc/network/interfaces where it belongs. And it seems to work when you reboot. I'll keep it this way until Network Manager is fixed.

Tuesday, February 24, 2009

Object Oriented C


In my first job, the project we worked on was 100% C code. However, it was object oriented C. This was led by our colleague Chris Westin. As we were fond of pointing out, there is a difference between Object oriented languages and Object oriented programming. You can apply OOP concepts (given appropriate primitives) in any language. Here's a table where I'll record a few of these...
Runtimepolymorphism Achievable by using function pointers, and syntactic sugar is done with clever macros.
Link-time polymorphism You probably do this already but don't define it as such; for instance, if you implement a function defined in a header differently on different platforms, you can consider this polymorphism. The function is different on Windows vs Linux. Another example might be a plugin for a browser. If you want it to run in Firefox and Opera, you might be able to get the core of it to call your own abstracted calls to the browser; the implementation thereof is determined at link-time.
Abstraction This is more a matter of design than implementation, and thus is applicable to any language.
Information hiding Again, this is a design issue. But the mechanism that is often used to achieve this is referred to as encapsulation.
Encapsulation This can be done in different ways, but usually the most effective technique is opaque types. Again, with clever data structures and macros, this can be combined with the above Runtime polymorphism to construct objects that feel like C++, or can even co-exist with C++.
Exceptions You can simulate some of this using setjmp/longjmp, but this can only go so far; the compiler doesn't know what's going on, so if you have atry/catch block that's really two macros doing housekeeping on thetry/catch data structures, and then you return or break orcontinue out of the middle of that, there's nothing to stop you, and you've corrupted your try/catch data structures. A better method to use is to create an error data structure that can contain more information (like __FILE__ and __LINE__) than a simple int error code. This doesn't get you the magic stack unwinding, but at least it can be more informative than -1.
Now you might be asking "why not use C++?" There are lots of answers to this, but here are a few:
  • Fragile binary interface problem or Fragile base class problem
    This is a real problem for deployment of C++ code, and likely an important driver early on for Microsoft to develop COM. If you ship C++ objects in a shared library, you can't do so without being extremely careful about what's exposed in the header file.
  • Windows Debug Heap
    Similarly, on Windows you must be careful with memory management. You can't cross allocations/deallocations across module boundaries in Windows, because that would be very bad. This can easily happen in C++ if you do allocations in the header file, and then deallocation in the implementation file (or vice-versa). You might be mixing memory heaps which will cause your app to crash.
  • Incompatible behaviors across compilers or even compiler versions.
    Certainly early on different compilers or even different versions of the same compiler can generate code that is incompatible in terms of things like throwing/catching exceptions, or name mangling. This might not have been a problem for some time (I haven't checked), but is indicative of C++'s lack of an ABI.
  • C++ Standard library lacks ABI
    Similar to the above points, if you use a certain version of compiler/C++ Standard library in your shared object, you cannot share those data types with another shared object or application that uses a different version of compiler/C++ Standard library.
  • C++0x doesn't appear to address any of the ABI issues that are so well known in C++. If I'm wrong, please correct me. Bjarne's C++0x FAQ (or his C++ FAQ) doesn't even mention the word "binary"; although the word "ABI" is used, but in reference to the GC system.
  • Lack of a "platform".
    This is a common criticism, which of course C and other languages share. If you want to acquire a mutex, you have to do it differently depending on what platform you're on. Java and other more modern languages include ways to do this, and many many other things. C++0x and its standard library seem to address at least some of this...
Don't get me wrong, C++ is an extremely useful language that I use in lots of projects, but you have to know its limitations, in addition to mastering its use. I just wish that the most glaring deficiency, binary compatibility, was address in C++0x.

Exadel E7


Just attended a web conference demonstrating a new product from Exadel called E7, hosted by Brandon Blell, Charley Cowens and Max Katz.
It looks pretty cool, although I haven't played with it yet. The idea is to present to the business rules owner/author something that is removed from Java and UI code. The Java/UI author presents different types of services, such as Web services, POJO, Page services for JSF/Flex/JavaFX, etc.
Right now it only works on Seam (as Exadel is a JBoss partner).
I also asked the question "What if you had multiple UI types in your app:JSF/Flex/JavaFX. Could you set up a 'generic' type of page service so that the process can be shared across all 3 of the UI types?" The answer is that it's in development for the next release.
Also, someone asked if there's Drools integration. The answer is not yet--they're working on it for the next release.

Saturday, February 21, 2009

Comcast issues in Palo Alto


My setup at home is Comcast for ISP, and Vonage for phone service. I haven't noticed any severe degradation in my Comcast service recently... But then again, I probably don't use my home phone often, and perhaps I'm not online when outages occur.
However, that all changed on Thursday, and according to my neighbors this wasn't a one-time thing. On Thursday Feb 19, 2009, after 2pm and 4pm or so, my connection was pretty unusable. I couldn't use Vonage in a reasonable manner, and had real problems transferring data. This wasn't because of a complete inability to transfer data, it was dropping packets periodically. See the graph that I generated from dslreports.com about that time.
So I called 1-800-COMCAST and I hit the right buttons to report trouble with my "high speed Internet." A recorded informed me that there was trouble in my area, that technicians were working on it, and offered to call me back when it was better. It got better before 11pm that night, but I got my automated call back on Friday at 11am.
Some theories about what's happening:
Recently, about 2 or 3 weeks ago, Comcast made a change and blocked my incoming port 25. Ever since I've had Comcast I could never make an outgoing connection on port 25, which is "normal" for an ISP. But blocking incoming port 25 is deadly if you're attempting to run your own mail server.
The reason I mention the blocked port 25 is that I believe that these problems are related to Comcast's recent changes to control their bandwidth utilization. Comcast isnotorious for sending forged TCP control packets to upset your P2P transfers: that's like blowing out the tires of cars on a congested highway because cars might be carrying illegal contraband. In any case, they have been rightfully remorseful and punished, at least in reputation, for this behavior.
Because of this "turnaround," they've come up with a new scheme to control their traffic. Of course, every ISP has a right to control their traffic so a single subscriber doesn't swamp all other users. But perhaps their current implementation is is still a little green... And thus our current connectivity troubles.
And you can see here we (Bay Area) were scheduled for the switchover at the end of November 2008 or so, but it probably happened more recently, or there are more changes than a simple switch, and takes time to convert all neighborhoods in the Bay Area. But apparently according to this the new system is 100% online a month and a half ago.
I just did another test, and at this time it's much better, but still not great. I should probably set up a monitoring schedule with dslreports.com; it costs a little bit of money, but no big deal.
Update
I've set up the monitoring tool. Here are my up-to-date line monitoring results:
East Coast Hourly Daily
West Coast Hourly Daily