Skip to main content

Electricity choice in Massachusetts

I've lived in Massachusetts for some years now and I've noticed that my electric bill is split into two parts: Delivery services and Supply services. I always thought that that was some itemizing detail, like the forty items I used to have on my phone bill and I ignored it. This month's bill was higher than expected and I took a closer look.

After a little inspection I noted that the Supply services rate was higher than before. It said "Basic Fixed Service". After some messing around on the National Grid Website, I came to this page. The important information there is this:
National Grid separates your bill into two services: supply and delivery. Supply Services is the portion of your electric service for which you can shop for your electricity supply from a supplier other than National Grid. These suppliers, often referred to as competitive suppliers, can be companies that produce or generate electricity or are brokers that buy electricity in the wholesale market and sell it to residents and businesses. National Grid is a delivery company, which means we will deliver electricity to you regardless of your choice of supplier. We encourage you to shop and compare the prices of competitive suppliers. Find out more about choosing your supply of electricity from a competitive supplier by visiting our Energy Choice area.
Wow. It goes on to say that by default you are signed on to a National Grid brokered plan where they buy electricity at wholesale rates and sell it to you for no profit and with some administrative costs added.

I went to the list of energy suppliers and browsed many of the companies. It does not take much time, and I would encourage you to do the same. It was interesting to me that most of these companies were offering rates lower than what I have from National Grid, which I was not expecting, if National Grid was a near monopoly buyer of electricity.

Some of the companies looked shady - the website had no upfront way to find out the electric supply cost, and they were offering incentives like gift cards and so on. The companies I favored were those that had a nice, easy interface for signing up and a clearly marked price per kWh.

Some of the companies did not serve Massachusetts, so I was surprised that a Mass customer was linked to them, but National Grid does serve many areas, so perhaps this is a country-wide list.

Some companies offer choices of getting electricity from renewable sources, which, if you have the budget for it, seems a good way to go. One company was offering renewable at about 20% more than regular, which isn't so bad if your electric-bills are about $100 a month.

Comments

Popular posts from this blog

A note on Python's __exit__() and errors

Python's context managers are a very neat way of handling code that needs a teardown once you are done. Python objects have do have a destructor method ( __del__ ) called right before the last instance of the object is about to be destroyed. You can do a teardown there. However there is a lot of fine print to the __del__ method. A cleaner way of doing tear-downs is through Python's context manager , manifested as the with keyword. class CrushMe: def __init__(self): self.f = open('test.txt', 'w') def foo(self, a, b): self.f.write(str(a - b)) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.f.close() return True with CrushMe() as c: c.foo(2, 3) One thing that is important, and that got me just now, is error handling. I made the mistake of ignoring all those 'junk' arguments ( exc_type, exc_val, exc_tb ). I just skimmed the docs and what popped out is that you need to return True or...

Store numpy arrays in sqlite

Use numpy.getbuffer (or sqlite3.Binary ) in combination with numpy.frombuffer to lug numpy data in and out of the sqlite3 database: import sqlite3, numpy r1d = numpy.random.randn(10) con = sqlite3.connect(':memory:') con.execute("CREATE TABLE eye(id INTEGER PRIMARY KEY, desc TEXT, data BLOB)") con.execute("INSERT INTO eye(desc,data) VALUES(?,?)", ("1d", sqlite3.Binary(r1d))) con.execute("INSERT INTO eye(desc,data) VALUES(?,?)", ("1d", numpy.getbuffer(r1d))) res = con.execute("SELECT * FROM eye").fetchall() con.close() #res -> #[(1, u'1d', <read-write buffer ptr 0x10371b220, size 80 at 0x10371b1e0>), # (2, u'1d', <read-write buffer ptr 0x10371b190, size 80 at 0x10371b150>)] print r1d - numpy.frombuffer(res[0][2]) #->[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] print r1d - numpy.frombuffer(res[1][2]) #->[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] Note that for work where data ty...