text:
The Red Sox broke the record for frustration and missed opportunities tonight. That's a tough record to break if you've been watching the team this year. We couldn't score a run no matter how many times we set ourselves up for it. How can our hitters be so great with no men on or a man on first, but so completely inept with men on second or third or both? I'm seriously wondering if tonight's game was a practical joke. Maybe a psychological experiment? Or maybe the Seattle Mariners are just this team that's so awesome, they just put guys on base to fuck with you and then get you out consistently after that.
And we only lost 2-0, so we knew any time a guy got on base we could be tying the game. Once we had the bases loaded and no out, and Gonzalez hits a liner right at the second baseman, who doubles Elllsbury off second, though the replay showed he was clearly safe. Twice we had inning-ending popouts that almost could have been caught by fans. Twice we hit balls that almost reached the Monster Seats. Pedroia hit balls down the right and left field lines that were foul by a combined total of three feet--on two consecutive pitches. We started off the ninth with yet another hit, but by that point, the only question was which Mariners players would be involved in the upcoming double play ball. (It was a 4-6-3.) What the dick is going on?
The only good thing about the game was that we got Eckersley in the booth in place of the flu-ridden RemDawg. (Buchholz must have gotten the same flu because Wakefield's starting in his place tomorrow.) Besides his crazy west-coast speech, you also get the ultra-rare "athlete telling stories/stats that are actually correct." He's amazing--tonight he even asked, "how do I remember this stuff?" I don't know, but you're always right, Eck. He was moving on to new things before I could finish confirming the last one. From knowing his first punch-out (Yount) and his last (Thome), to knowing that he gave up some cheese-flavored gohpher to Bob Brenly, to details about his 14 K game in 1976 involving a Buddy Bell error, he was always spot-on. I know I've mentioned this whole thing before, but the point is, he's still got it. When's he gonna get a job as a regular color man?
# posted by Jere : 4/30/2011 08:23:00 PM 0 comments
Had a lead, Dice left with elbow tightness, Albers held the lead, then Jenks blew it, and our hitters took the last few innings off, and we lost by one. Although Lowrie hit one all the way to the Triangle that would have tied it in the ninth. On the JoS thread, Kathryn asked, "did you see the salute [Saunders] gave the fans" after his catch. I didn't--I had only remembered the salute a fan gave to him:
(It's the girl on the right. The guy in red is asking for the ball, despite that it wasn't the last out, and I don't know what the girl in the purple crown is doing.) So I rewound and finally saw the salute the guy gave, it was to someone in straight away center above the 18-foot wall, as he was walking back to his position:
Anyway, another great moment that I'm sure 92-96% of viewers missed was the 4 year-old kid in the crowd imitating Youk's stance right behind Youk while he was up:
Welcome To The Weekend. Er.
Sox vs. Marine-Life, 7:09:60 p.m. Vargas/Matsuzaka.
Lester The O-Lester
6-3 on the trip after Lester beats the O's again. Looked like it might be another frust-fest, but a three-run 8th put it away. Gonzalez is coming to life, too.
We come home now for three with Sea, four with Califor, and two sets of twins with the Twins. You know we have just one scheduled day off in May, but five in June?
Dez Camden-a
Hey, there's a DH spot on the All-Star ballot for games at NL parks now! Thank you. (Using the DH in ALL All-Star Games started last year, but it was at an A.L. park last year so I wouldn't have noticed any difference....)
Lester tries to beat the O's for the 100th straight time, 7:00ish eastern.
Who You Tryin' To Get Crazy With S.A.? Don't You Know I'm San An-Tone Loc-O?
From Pee-Wee's Big Adventure to Cloak & Dagger to that home video my dad shot of a Spurs-Nets game in like 1988, San Antonio has provided our culture with some memorable moments. Even though I'd never been to Texas, I always felt like an honorary son of San Anton', its Riverwalk inspiring me to criticize my own town* for not having something similar. Last month, I finally made it there. On my way from Vegas to Houston and Dallas, I slept just outside the city one night, and the next morning, I got to explore the Riverwalk/Alamo area until my parking meter expired.
Living the dream: Jere finally arrives at Riverwalk.
They were doing boat tours even at 10 a.m. on a weekday. This was the first perfect weather day of my trip. I was hoping to get that real Puerto Rico feel, but Vegas was windy and unseasonably cool, and all through Arizona and New Mexico it was also pretty blustery. On the way out, I drove past snow in Arizona. And in west Texas on the day I'd eventually reach San Antonio, it was downright cold. But when I got to S.A., I was greeted with palms and non-desert-style warmth. In other words, it was an all-"light jacket" trip until then.
The Alamo, right near where the above shots were taken. Didn't actually go in.
Another from my series: "across the street from famous places." (Note: This may be the first in the series, I don't really remember if I've done this before.)
People taking pictures of the Alamo.
What I never knew about the Alamo is that it has "grounds" all around it that anyone can go to. I figured it was just that tiny building. (And a younger me thought it was just the front wall, like a Hollywood "old west" cardboard backdrop.) Here's an awesome tree.
The Crockett Hotel behind the Alamo.
More palms/cacti on the other side of the 'mo.
This also gave me that "old city" Puerto Rico feel I was looking for.
So that's pretty much all I saw of San Antonio--I'd love to spend some actual time there one day. From there it was on to Houston and Arlington for two Sox games.
Bonus shot! From west Texas--the following shot is...
...where Andy crossed! You know what I'm talkin' about.
*Where I live now, Providence, actually does have a riverwalk-type thing. Maybe that's why I love WaterFire so much. But I was always pissed at Danbury for hiding its river under the city. I used to call it the "Red-Headed Stepchild River." It was like they went out of their way to make sure nobody knew a river went right through the main part of town. You had to go to certain spots on foot to get a glimpse of it down below the street.
Go To Hell/Die
Goddamn it. We come back with four in the eighth to tie, then give one up in the bottom half, and suddenly the game's over. We anti-win, 5-4.
Rick Dempsey was in the booth replacing the sub-weather Remy. My mind turned right to sliding on the tarp in a rain delay--and Don's did too, mentioning it in the first inning. No video, unfortunately.
After we botched a pop-up to shallow center, Beckett gave up a big dong to make it 2-0. Next guy hits another dong, thought Carl Crawford had plenty of time to climb the wall and rob it.
Anyway, going to the eighth, we looked done, but our fans really got into it, and soon we had two on, down three, Youk up. I made a prediction at JoS that came true--that we tie it Weaver style. How can you have two runners on in Baltimore and not think of Weaver's favorite type of dong? Youk did it, and it was tied.
Bottom 8, Bard in, and he's got nothing. Gives up a single to Markakis, which is understandable, as Nick is one of our nation's best athletes. But then he gives up another solid single an OH AND TWO PITCH. Inexcusable. After the runners move up on a wild one, another one scoots past Tek. But Bard makes an amazing plate block to tag out the go-ahead run. But on the next pitch, before we were done soaking in the feeling, Bard gives up another solid hit right back through the middle, and the O's led 5-4. And there's your final.
And in the 8th, the hockey game went overtime. Again. We've had to watch several games on NESN+, which is NOT in HD in my area. And these stupid hockey games, it seems, even when they're not at the same time as the baseball games, just go on all day and I don't get to see the Red Sox in HD. End this hockey crap!
More From The '05 Sidestalk
Here we have a previously unseen lil' clip I shot of Bronson Arroyo in 2005. Details below.
Bronson came out, and immediately people started getting pics, autographs. Rebecca waited her turn and then pounced. That's when I went over and took her picture with him with her camera in one hand, while filming it all with my video camera in the other hand.
Then there's some confusion as the rest of Bronson's group (pitcher Matt Mantei and three women--I guess the brunette is the one Bronson was in the process of leaving his wife for (the Northeastern woman, or whatever, who knows...) at the time) waits for a car. Finally they all hop in.
Again, the original adventures (from pre-video-online days) can be found on Reb's old blog here. And on my blog: part 1, part 2, part 3.
Making Up For It
Was mildly pissed after losing 4-1 to the O-Birds--but right after the game ended, I switched over to MLBNet for the end of the Yanks game. The White Sox were up by 1, but the Yanks had men on first and second, one out. A-Rod drills one toward the 200-ft. fence in right. Will tie the game, maybe end it...but no! Lillibridge makes a leaping catch going to his left at the wall! Two outs. Cano up, now a double will win it, and he also lines one to right. Lillibridge goes over, dives, and makes a tremendous catch, raising both arms in triumph WHILE sliding on his stomach, his face going right into the grass. Yanks lose, and my night is salvaged.
Donation Updation
Original post here.
Got a letter from the Red Sox Foundation today, apologizing for sending me the wrong info in the first letter. So I never really gave Japan $100, only the $10 I thought I was giving. So now I enter Phase III, Guilt (over the fact that I'd decided that had they taken $100 from my account, I was just gonna let it go). I will take solace in the fact that the emotional roller coaster the foundation has decided I'm tall enough to ride is nothing compared to losing your house in an earthquake.
Buchholz/Britton, a few hours. (Hey, if you add the Z for Britton's first name, you've got Buchholz/Britton,Z. So they each have a B, then a consonant/vowel combo, then a double consonant, then an O, then another consonant, then a Z. So look for an even matchup tonight. That we win.)
Those Wacky Sox
NYT story about Manny here.
Crazy Carl arrested.
Looks like a nice day in Balty. Let's play one.
# posted by Jere : 4/26/2011 10:19:00 AM 6 comments
Gaining
Yanks were getting no-hit through 6 tonight. Got to watch the end on ESPN. With McDonough! But also Aaron Fuckin' Boone:( Anyway, they broke it up, but went on to lose 2-0 at home to the ShySox.
So we're three games out of first on April 25th.
Hey, check this out: Go to MLB.com, click Standings, then click Scoreboard, then hit your back button to go back to the Standings page. Does it show the standings of June 11, 1981 on your browser? It does on mine. (That's right when baseball went on strike--I wonder if this has to do with the NFL thing or.....?)
New Video Of An Old Classic
Back in September 2005, when I lived in NYC, Rebecca and I went to the Red Sox' hotel after a Sox-Yanks game in the Bronx. You may remember these adventures from her blog and also from mine at the time. Back then, putting video on the web wasn't like it is now, so all you got was still frames. But I'm finally getting around to posting actual vids from that era, so watch the Papelbon part come to life!
Pap and his now-wife Ashley were trying to get a cab. They soon realized there was a line for cabs, which they were decidedly not at the front of. You also see the moment when I inform Ashley of my "Little Papi" nickname for Jon. Despite my clarification that he's only small compared to Big Papi, I learned attempting to convince a woman that her major league athlete boyfriend is "little" is futile.
Pap had only appeared in 9 MLB games at that point. I'm guessing these days he gets around town a lot easier....
Look for more pictures from that night coming to life soon. Maybe. (I've done one already, a brief shot of Keith Foulke waving at me--though that vid's quality is very weak, posted to YouTube in 2007, may have to re-do it.)
Johnny "Broom" Hildo
7-0 win. First four-game sweep in Anaheim since '80, according to NESN.
Eight more shutout innings from a Red Sox starter. A bearded Peter Brady in today's case. Good to see Carl get his first dong. I was starting to feel like this about him.
So we're 10-11, a half game out of second, after the horrible start. On to Balty.
Happy Easter.
Foreground/Background
I'm very excited about Dice-K's performance tonight: no runs, a hit, nine Ks, in eight innings. So that's no runs on one hit in each of his last two starts. I said something about him being ready to dominate this season in March, and he's been doing a fine job of that of late. Once again I'll post Pete Abe's words from when he said Dice MUST be traded (I do not read his material, I just saw this on JoS): "putting him in a game is counterproductive to winning." I guess that's like saying putting Pete Abe in a salad bar is counterproductive to....eh, too easy. The point is, many fans only know what they've seen in the very recent past. When reporters do that, it's time to FIRE THEM. I know, he brought up the past season and all that, but Dice's numbers really weren't that bad for a fifth starter. It was obviously an overreaction to the most recent start--who did he expect to get as a 5 starter? As for those who are just generally annoyed with Dice's pitching style, that's justifiable enough, just don't let it cloud the talent the guy clearly has.
Anyway, we're now tied for third, a half game out of second.
I'm also excited about this: I was on that Fenway Park 100 site, and I thought "I'll look through the 2000s pictures to see if I'm in any of them." (You know my lifelong dream of being in the background of a famous picture, though being in any picture is always fun, since I'm usually the one taking the pictures. I started in 2005, then went to 2006, and noticed a pic of Buffalo Tom. I knew that was from the Fenway concert that year which I went to, so I clicked the pic. Here's what I saw (minus the Me/Kim notations, obv.):
Woohoo! Good thing I was wearing my 3/4 sleeve green Tulane shirt, making me easy to spot. And there's Kim right next to me, the two of us right between Theo Epstein (playing with the band) and the singer. You can see the original pic (taken by Brian Babineau for the Red Sox) on this page of the Fenway Park 100 site--click the "More Than a Ballpark" section at left, then click the Buffalo Tom pic which will pop up on the right. The "proof" that it's me, I guess, is in the fact that my pics from that night are from that angle.
Since I took a shot of the crowd to my left that night, I tried to match people in my shot to Babineau's pic. The girl up high is by that pole, so she's blocked by the singer. But if you look closely at my shot, you can see some red hair and a forehead. In Babineau's shot, you can see that girl, just to the right of the singer. So that's the only person who's in both shots. Anyway, I'm glad I'm a part of the official Fenway site!


Peter is a licensed real estate broker and the owner of Ocean Realty Galveston. Peter possesses 33 plus years experience in the residential real estate and mortgage industry. In addition to his Ocean Realty Galveston affiliation; he has held several high level management positions in the mortgage lending industry which has led to the closing and funding of over five billion dollars in mortgage production over his career timeline. Peter is passionate about the island and bay area living and serves buyers and sellers in all of Galveston and Southern Harris County. Peter is a full time resident of the area and is dedicated to providing his clients with the utmost competency and attention to detail.
Peter is a real estate partner you can count on!
Be sure to ask about the exciting projects happening in downtown Galveston including the return of the Trolley cars and Mitchell Historic redevelopment's continued committment to redeveloping downtown. Recently, Royal Caribbean, along with Carnival, has begun cruises out of the Port of Galveston, with exciting new and exotic cruises.
Downtown services such as UTMB's medical facility are a vital part of the city and has one of only two of the national study laboratories in the USA. You will also want to get information on the Megadune project occurring on the Seawall and the Sand Renourishment project that continues with the City and Army Corps. of Engineers. Galveston Home Sales are up 80% over the last 5 years. Its an exciting time to be investing in this quaint city by the sea. The jewel of the Texas Gulf Coast!


text:
var Bot, Channel, Client, DM, EventEmitter, Group, Log, Message, Team, User, WebSocket, https, querystring,
  __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
  __hasProp = {}.hasOwnProperty,
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };

https = require('https');

querystring = require('querystring');

WebSocket = require('ws');

Log = require('log');

EventEmitter = require('events').EventEmitter;

User = require('./user');

Team = require('./team');

Channel = require('./channel');

Group = require('./group');

DM = require('./dm');

Message = require('./message');

Bot = require('./bot');

Client = (function(_super) {
  __extends(Client, _super);

  Client.prototype.host = 'api.slack.com';

  function Client(token, autoReconnect, autoMark) {
    this.token = token;
    this.autoReconnect = autoReconnect != null ? autoReconnect : true;
    this.autoMark = autoMark != null ? autoMark : false;
    this._onSetStatus = __bind(this._onSetStatus, this);
    this._onSetActive = __bind(this._onSetActive, this);
    this._onSetPresence = __bind(this._onSetPresence, this);
    this._onCreateGroup = __bind(this._onCreateGroup, this);
    this._onOpenDM = __bind(this._onOpenDM, this);
    this._onJoinChannel = __bind(this._onJoinChannel, this);
    this._onLogin = __bind(this._onLogin, this);
    this.authenticated = false;
    this.connected = false;
    this.self = null;
    this.team = null;
    this.channels = {};
    this.dms = {};
    this.groups = {};
    this.users = {};
    this.bots = {};
    this.socketUrl = null;
    this.ws = null;
    this._messageID = 0;
    this._pending = {};
    this._connAttempts = 0;
    this.logger = new Log(process.env.SLACK_LOG_LEVEL || 'info');
  }

  Client.prototype.login = function() {
    this.logger.info('Connecting...');
    return this._apiCall('rtm.start', {
      agent: 'node-slack'
    }, this._onLogin);
  };

  Client.prototype._onLogin = function(data) {
    var c, g, i, k, u;
    if (data) {
      if (!data.ok) {
        this.emit('error', data.error);
        this.authenticated = false;
        if (this.autoReconnect) {
          return this.reconnect();
        }
      } else {
        this.authenticated = true;
        this.self = new User(this, data.self);
        this.team = new Team(this, data.team.id, data.team.name, data.team.domain);
        this.socketUrl = data.url;
        for (k in data.users) {
          u = data.users[k];
          this.users[u.id] = new User(this, u);
        }
        for (k in data.channels) {
          c = data.channels[k];
          this.channels[c.id] = new Channel(this, c);
        }
        for (k in data.ims) {
          i = data.ims[k];
          this.dms[i.id] = new DM(this, i);
        }
        for (k in data.groups) {
          g = data.groups[k];
          this.groups[g.id] = new Group(this, g);
        }
        this.emit('loggedIn', this.self, this.team);
        return this.connect();
      }
    } else {
      this.emit('error', data);
      this.authenticated = false;
      if (this.autoReconnect) {
        return this.reconnect();
      }
    }
  };

  Client.prototype.connect = function() {
    if (!this.socketUrl) {
      return false;
    } else {
      this.ws = new WebSocket(this.socketUrl);
      this.ws.on('open', (function(_this) {
        return function() {
          _this.emit('open');
          _this.connected = true;
          _this._connAttempts = 0;
          _this._lastPong = Date.now();
          return _this._pongTimeout = setInterval(function() {
            if (!_this.connected) {
              return;
            }
            _this.logger.debug('ping');
            _this._send({
              "type": "ping"
            });
            if ((_this._lastPong != null) && Date.now() - _this._lastPong > 10000) {
              _this.logger.error("Last pong is too old: %d", (Date.now() - _this._lastPong) / 1000);
              _this.authenticated = false;
              _this.connected = false;
              return _this.reconnect();
            }
          }, 5000);
        };
      })(this));
      this.ws.on('message', (function(_this) {
        return function(data, flags) {
          return _this.onMessage(JSON.parse(data));
        };
      })(this));
      this.ws.on('error', (function(_this) {
        return function() {
          return _this.emit('error');
        };
      })(this));
      this.ws.on('close', (function(_this) {
        return function() {
          _this.emit('close');
          _this.connected = false;
          return _this.socketUrl = null;
        };
      })(this));
      this.ws.on('ping', (function(_this) {
        return function(data, flags) {
          return _this.ws.pong;
        };
      })(this));
      return true;
    }
  };

  Client.prototype.disconnect = function() {
    if (!this.connected) {
      return false;
    } else {
      this.autoReconnect = false;
      if (this._pongTimeout) {
        clearInterval(this._pongTimeout);
        this._pongTimeout = null;
      }
      this.ws.close();
      return true;
    }
  };

  Client.prototype.reconnect = function() {
    var timeout;
    if (this._pongTimeout) {
      clearInterval(this._pongTimeout);
      this._pongTimeout = null;
    }
    this.authenticated = false;
    this.ws.close();
    this._connAttempts++;
    timeout = this._connAttempts * 1000;
    this.logger.info("Reconnecting in %dms", timeout);
    return setTimeout((function(_this) {
      return function() {
        _this.logger.info('Attempting reconnect');
        return _this.login();
      };
    })(this), timeout);
  };

  Client.prototype.joinChannel = function(name) {
    var params;
    params = {
      "name": name
    };
    return this._apiCall('channels.join', params, this._onJoinChannel);
  };

  Client.prototype._onJoinChannel = function(data) {
    return this.logger.debug(data);
  };

  Client.prototype.openDM = function(user_id) {
    var params;
    params = {
      "user": user_id
    };
    return this._apiCall('im.open', params, this._onOpenDM);
  };

  Client.prototype._onOpenDM = function(data) {
    return this.logger.debug(data);
  };

  Client.prototype.createGroup = function(name) {
    var params;
    params = {
      "name": name
    };
    return this._apiCall('groups.create', params, this._onCreateGroup);
  };

  Client.prototype._onCreateGroup = function(data) {
    return this.logger.debug(data);
  };

  Client.prototype.setPresence = function(presence) {
    var params;
    if (presence === !'away' && presence === !'active') {
      return null;
    }
    params = {
      "presence": presence
    };
    return this._apiCall('presence.set', params, this._onSetPresence);
  };

  Client.prototype._onSetPresence = function(data) {
    return this.logger.debug(data);
  };

  Client.prototype.setActive = function() {
    var params;
    params = {};
    return this._apiCall('users.setActive', params, this._onSetActive);
  };

  Client.prototype._onSetActive = function(data) {
    return this.logger.debug(data);
  };

  Client.prototype.setStatus = function(status) {
    var params;
    params = {
      "status": status
    };
    return this._apiCall('status.set', params, this._onSetStatus);
  };

  Client.prototype._onSetStatus = function(data) {
    return this.logger.debug(data);
  };

  Client.prototype.getUserByID = function(id) {
    return this.users[id];
  };

  Client.prototype.getUserByName = function(name) {
    var k;
    for (k in this.users) {
      if (this.users[k].name === name) {
        return this.users[k];
      }
    }
  };

  Client.prototype.getChannelByID = function(id) {
    return this.channels[id];
  };

  Client.prototype.getChannelByName = function(name) {
    var k;
    for (k in this.channels) {
      if (this.channels[k].name === name) {
        return this.channels[k];
      }
    }
  };

  Client.prototype.getDMByID = function(id) {
    return this.dms[id];
  };

  Client.prototype.getDMByName = function(name) {
    var k;
    for (k in this.dms) {
      if (this.dms[k].name === name) {
        return this.dms[k];
      }
    }
  };

  Client.prototype.getGroupByID = function(id) {
    return this.groups[id];
  };

  Client.prototype.getGroupByName = function(name) {
    var k;
    for (k in this.groups) {
      if (this.groups[k].name === name) {
        return this.groups[k];
      }
    }
  };

  Client.prototype.getChannelGroupOrDMByID = function(id) {
    if (id[0] === 'C') {
      return this.getChannelByID(id);
    } else {
      if (id[0] === 'G') {
        return this.getGroupByID(id);
      } else {
        return this.getDMByID(id);
      }
    }
  };

  Client.prototype.getChannelGroupOrDMByName = function(name) {
    var channel, group;
    channel = this.getChannelByName(name);
    if (!channel) {
      group = this.getGroupByName(name);
      if (!group) {
        return this.getDMByName(name);
      } else {
        return group;
      }
    } else {
      return channel;
    }
  };

  Client.prototype.getUnreadCount = function() {
    var channel, count, dm, group, id, _ref, _ref1, _ref2;
    count = 0;
    _ref = this.channels;
    for (id in _ref) {
      channel = _ref[id];
      if (channel.unread_count != null) {
        count += channel.unread_count;
      }
    }
    _ref1 = this.ims;
    for (id in _ref1) {
      dm = _ref1[id];
      if (dm.unread_count != null) {
        count += dm.unread_count;
      }
    }
    _ref2 = this.groups;
    for (id in _ref2) {
      group = _ref2[id];
      if (group.unread_count != null) {
        count += group.unread_count;
      }
    }
    return count;
  };

  Client.prototype.getChannelsWithUnreads = function() {
    var channel, dm, group, id, unreads, _ref, _ref1, _ref2;
    unreads = [];
    _ref = this.channels;
    for (id in _ref) {
      channel = _ref[id];
      if (channel.unread_count != null) {
        unreads.push(channel);
      }
    }
    _ref1 = this.ims;
    for (id in _ref1) {
      dm = _ref1[id];
      if (dm.unread_count != null) {
        unreads.push(dm);
      }
    }
    _ref2 = this.groups;
    for (id in _ref2) {
      group = _ref2[id];
      if (group.unread_count != null) {
        unreads.push(group);
      }
    }
    return unreads;
  };

  Client.prototype.onMessage = function(message) {
    var channel, k, m, u, user, _ref, _results;
    this.emit('raw_message', message);
    switch (message.type) {
      case "hello":
        return this.connected = true;
      case "presence_change":
        u = this.getUserByID(message.user);
        if (u) {
          this.emit('presenceChange', u, message.presence);
          return u.presence = message.presence;
        }
        break;
      case "manual_presence_change":
        return this.self.presence = message.presence;
      case "status_change":
        u = this.getUserByID(message.user);
        if (u) {
          this.emit('statusChange', u, message.status);
          return u.status = message.status;
        }
        break;
      case "error":
        return this.emit('error', message.error);
      case "message":
        if (message.reply_to) {
          if (this._pending[message.reply_to]) {
            delete this._pending[message.reply_to];
          } else {
            return;
          }
        }
        this.logger.debug(message);
        m = new Message(this, message);
        this.emit('message', m);
        channel = this.getChannelGroupOrDMByID(message.channel);
        if (channel) {
          return channel.addMessage(m);
        }
        break;
      case "channel_marked":
      case "im_marked":
      case "group_marked":
        channel = this.getChannelGroupOrDMByID(message.channel);
        if (channel) {
          channel.last_read = message.ts;
          channel._recalcUnreads();
          return this.emit('channelMarked', channel, message.ts);
        }
        break;
      case "user_typing":
        user = this.getUserByID(message.user);
        channel = this.getChannelGroupOrDMByID(message.channel);
        if (user && channel) {
          this.emit('userTyping', user, channel);
          return channel.startedTyping(user.id);
        } else if (channel) {
          return this.logger.error("Could not find user " + message.user + " for user_typing");
        } else if (user) {
          return this.logger.error("Could not find channel " + message.channel + " for user_typing");
        } else {
          return this.logger.error("Could not find channel/user " + message.channel + "/" + message.user + " for user_typing");
        }
        break;
      case "team_join":
      case "user_change":
        u = message.user;
        this.emit('userChange', u);
        return this.users[u.id] = new User(this, u);
      case "channel_joined":
        return this.channels[message.channel.id] = new Channel(this, message.channel);
      case "channel_left":
        if (this.channels[message.channel]) {
          _results = [];
          for (k in this.channels[message.channel]) {
            if (k !== "id" && k !== "name" && k !== "created" && k !== "creator" && k !== "is_archived" && k !== "is_general") {
              delete this.channels[message.channel][k];
            }
            _results.push(this.channels[message.channel].is_member = false);
          }
          return _results;
        }
        break;
      case "channel_created":
        return this.channels[message.channel.id] = new Channel(this, message.channel);
      case "channel_deleted":
        return delete this.channels[message.channel];
      case "channel_rename":
        return this.channels[message.channel.id] = new Channel(this, message.channel);
      case "channel_archive":
        if (this.channels[message.channel]) {
          return this.channels[message.channel].is_archived = true;
        }
        break;
      case "channel_unarchive":
        if (this.channels[message.channel]) {
          return this.channels[message.channel].is_archived = false;
        }
        break;
      case "im_created":
        return this.dms[message.channel.id] = new DM(this, message.channel);
      case "im_open":
        if (this.dms[message.channel]) {
          return this.dms[message.channel].is_open = true;
        }
        break;
      case "im_close":
        if (this.dms[message.channel]) {
          return this.dms[message.channel].is_open = false;
        }
        break;
      case "group_joined":
        return this.groups[message.channel.id] = new Group(this, message.channel);
      case "group_close":
        if (this.groups[message.channel]) {
          return this.groups[message.channel].is_open = false;
        }
        break;
      case "group_open":
        if (this.groups[message.channel]) {
          return this.groups[message.channel].is_open = true;
        }
        break;
      case "group_left":
      case "group_deleted":
        return delete this.groups[message.channel];
      case "group_archive":
        if (this.groups[message.channel]) {
          return this.groups[message.channel].is_archived = true;
        }
        break;
      case "group_unarchive":
        if (this.groups[message.channel]) {
          return this.groups[message.channel].is_archived = false;
        }
        break;
      case "group_rename":
        return this.groups[message.channel.id] = new Channel(this, message.channel);
      case "pref_change":
        return this.self.prefs[message.name] = message.value;
      case "team_pref_change":
        return this.team.prefs[message.name] = message.value;
      case "team_rename":
        return this.team.name = message.name;
      case "team_domain_change":
        return this.team.domain = message.domain;
      case "bot_added":
      case "bot_changed":
        return this.bots[message.bot.id] = new Bot(this, message.bot);
      case "bot_removed":
        if (this.bots[message.bot.id]) {
          return this.emit('botRemoved', this.bots[message.bot.id]);
        }
        break;
      default:
        if (message.reply_to) {
          if (message.type === 'pong') {
            this.logger.debug('pong');
            this._lastPong = Date.now();
            return delete this._pending[message.reply_to];
          } else if (message.ok) {
            this.logger.debug("Message " + message.reply_to + " was sent");
            if (this._pending[message.reply_to]) {
              m = this._pending[message.reply_to];
              channel = this.getChannelGroupOrDMByID(m);
              if (channel) {
                channel.addMessage(m);
              }
              this.emit('messageSent', m);
              return delete this._pending[message.reply_to];
            }
          } else {
            return this.emit('error', message.error != null ? message.error : message);
          }
        } else {
          if ((_ref = message.type) !== "file_created" && _ref !== "file_shared" && _ref !== "file_unshared" && _ref !== "file_comment" && _ref !== "file_public" && _ref !== "file_comment_edited" && _ref !== "file_comment_deleted" && _ref !== "file_change" && _ref !== "file_deleted" && _ref !== "star_added" && _ref !== "star_removed") {
            this.logger.debug('Unknown message type: ' + message.type);
            return this.logger.debug(message);
          }
        }
    }
  };

  Client.prototype._send = function(message) {
    if (!this.connected) {
      return false;
    } else {
      message.id = ++this._messageID;
      this._pending[message.id] = message;
      return this.ws.send(JSON.stringify(message));
    }
  };

  Client.prototype._apiCall = function(method, params, callback) {
    var options, post_data, req;
    params['token'] = this.token;
    post_data = querystring.stringify(params);
    options = {
      hostname: this.host,
      method: 'POST',
      path: '/api/' + method,
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': post_data.length
      }
    };
    req = https.request(options);
    req.on('response', (function(_this) {
      return function(res) {
        var buffer;
        buffer = '';
        res.on('data', function(chunk) {
          return buffer += chunk;
        });
        return res.on('end', function() {
          var value;
          if (callback != null) {
            if (res.statusCode === 200) {
              value = JSON.parse(buffer);
              return callback(value);
            } else {
              return callback({
                'ok': false,
                'error': 'API response: ' + res.statusCode
              });
            }
          }
        });
      };
    })(this));
    req.on('error', (function(_this) {
      return function(error) {
        if (callback != null) {
          return callback({
            'ok': false,
            'error': error.errno
          });
        }
      };
    })(this));
    req.write('' + post_data);
    return req.end();
  };

  return Client;

})(EventEmitter);

module.exports = Client;

redpajama_set_name: RedPajamaGithub


I mentioned Christmas cards to my husband and he said "why do we send those again?" and I remarked (probably in an uber sassy tone), "it's just what you do, Michael!" And then he said "well you're just going to post it online anyway, so what's the point?"
"It's just what you do" was my response.
People spend an OUTRAGEOUS amount of money and time and outfits and blowouts and makeup and the perrrrrrrfect sunset and the perfffeeeccccttttt paper and return address layout and customized stamps and emboss and why? Well, it's just what you do. Apparently. That was my answer. Because for some reason, society has made us think it's an integral part of Christmas. And I really couldn't think of why we send them out except for "hey everyone come see how good we look". I won't lie. I drank the kook-aid. But now, I think my opinion has drastically shifted to the dark side.
Lets be real. I *do love seeing people's photos, right? I creep Instagram on the reg. You do too. Thanks, explore. And I do like hanging Christmas cards around the house for all the people who do not come to our house to see how many friends (because, Christmas Cards count is a great measuring stick) we really do have.
But wouldn't we think by now we'd upgrade to digital Christmas cards? And save everyone the cost? It all adds up during a time of year where we should really be focusing on giving and serving others. NOT TO MENTION MY FREAKING HAND HURTS WRITING ALL THOSE ADDRESSES AND IT GIVES ME TERRIBLE FLASHBACKS TO OUR WEDDING.
And what do we do with the cards afterwards? They have a shelf life of what, like 3 weeks? But maybe you're one of the considerate (or OCD) ones and send your cards out in a promptly manner so I can look at it for at least a month. But what happens next? They go in the recycle bin. And if you don't recycle, then shame on you.
With thanks to facebook and instagram, can't we all literally upload a picture and smack some words on top? I mean there's a plethora of apps out there, which allows you to lay fonts over photos. And then you could upload it for ALL to see... Bam! Christmas Card! We could? So why don't we?
Well because that's just not what you do. I guess. I hope we get there. I think I'm going to do that next year. But this year, I gave into the shame and guilt and FOMO I felt when opening others' cards. I literally stared at ours for 2 weeks before I gave in. I mailed them today. With 4th of July stamps, might I add. Because, life. And America. And the thought of paying more money for stamps to "go" with the card made me nauseated because I already had a good (+ American) pile of stamps, which prevented me from leaving the house.
Oh, and this is the photo we should've used because we looked like fools dressed warmly when it was really 70 degrees outside. We tried to snap a "real" or "we look great" or "we've got to try it 37 more times at the right angle" photo at a suburban Atlanta Christmas tree farm. AND OUR DAUGHTER ISN'T EVEN LOOKING AT THE CAMERA.
But yeah, we should've gone with this one.
Merry Christmas from the Pawlmers.
Get it? Paw? Our family grew by 4 paws this year.


Three has issued a brief for a CRM agency. The mobile network does not currently work with an agency on CRM, but worked with TBCH on direct marketing from 2006 to 2014.
Three has brought in AAR to handle the process.
The winning agency will work alongside Wieden & Kennedy London, which has held Three's advertising business since 2011, and Gravity Road, which has handled social media since 2015.
W&K created last year's "Phones are good" campaign, the main spot of which was named the fourth best film ad of 2018 by Campaign.
Last week, Three partnered LadBible, its in-house creative agency Joyride and media agency Mindshare to launch Relaxing Stuff, a brand-supported channel across Facebook and Instagram, as well as a dedicated site.
Three hired Shadi Halliwell in 2017 as chief marketing officer. She was joined last year by Katrina Ward-Smith as director of brand and marketing communications. Both women previously spent significant parts of their careers at rival Telefónica, owner of O2.
This article previously stated that Three had not worked with a CRM agency before.


text:
Mount Shadbolt är ett berg i Antarktis. Det ligger i Östantarktis. Nya Zeeland gör anspråk på området. Toppen på Mount Shadbolt är  meter över havet.

Terrängen runt Mount Shadbolt är huvudsakligen kuperad, men åt nordost är den bergig. Den högsta punkten i närheten är Coombs Hills,  meter över havet,  kilometer sydväst om Mount Shadbolt. Trakten är glest befolkad. Närmaste befolkade plats är Odell Glacier Station,  kilometer väster om Mount Shadbolt.

Kommentarer

Källor

Berg i Östantarktis
Nya Zeelands anspråk i Antarktis
Berg i Antarktis 2000 meter över havet eller högre

redpajama_set_name: RedPajamaWikipedia


text:
Uhcit Golmmesjávri eller Uhtsib Kolmmesjavri är en sjö i kommunen Enare i landskapet Lappland i Finland. Arean är  hektar och strandlinjen är  kilometer lång. Sjön   Den ligger omkring 380 kilometer norr om Rovaniemi och omkring 1100 kilometer norr om Helsingfors.

Källor

Insjöar i Enare


text:
Key Milestones & Dates
We are very proud of our history at NTR and our story like many others, is one of ups and downs over the years. It is thanks to the hard work and dedication of everyone who has worked for the company over the decades that NTR has gone from strength to strength and never forgotten the original ethos.
Providing the very best in engineering while working collaboratively with our clients, ensures we meet their needs in the best way possible – quickly, efficiently and on budget. This way of working has set us in good stead since the early 1970s. The fashions may have changed but our standards never falter.
NTR IS BORN
The story begins
Dynamically innovate resource-leveling customer service for state of the art customer service.
Originally known as Northern Tooling Reclamation, Ken Sutcliffe created a business based on his expertise in tooling. Having enjoyed many years of manufacturing experience, Ken saw the benefit of recycling and refurbishing tools long before the current trend for ecology and environmental issues.
Based here in Wetherby, Ken developed the team and skills over the years and became the go-to company for all things Tooling. A great foundation for the well-respected and admired business that we know today.
CONTINUED GROWTH
New location for NTR Ltd
Thanks to much success and business growth, NTR moved to its current location.
Continued growth at NTR has meant a change of location for the team. The building is ideally suited to NTR's engineering needs and with the addition of a mezzanine and office space is proving to be a popular choice with the team.
"We really had grown out of the old place, so to suddenly have more space on the shop floor we feel like we've gone from a workshop to a full factory facility. Being able to arrange the machines and storage in this configuration means we are increasing efficiencies and it's a really great place to work!"
NTR are now fully ISO 9001:2015 compliant
QMS International have assessed and approved our ISO 9001:2015 audit for the design, manufacture, distribution of metal removing tools
First granted in 2010, NTR have been accredited for the ISO 9001 quality management system certification. The international standard is part of the ISO 9000 family of quality standards and is one of the most well known. Used by over a million companies, this standard is recognised the world over.
ISO 9001:2015 is the most recent version of the 9001 standard (as revised in 2015) and continues to regulate and standardise a business's systems to ensure customer's needs are met.
CERTIFICATION & COMPLIANCE
Fit4Nuclear Accreditation
With customers in the Nuclear and Defence sectors in it was inevitable that we would need to be FIT4NUCLEAR! The quality teams at NTR have worked hard to achieve this critical industry standard and to ensure that these standards are rolled out.
F4N was developed by the Nuclear AMRC with the support of its top tier partners, including nuclear new build developers and the Nuclear Decommissioning Authority. These industry leaders recognise NTR Ltd as a suitable business for the nuclear sector supply chain.
New ownership
Capitalise on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital.
A new start for NTR with new ownership from a group of Yorkshire-based entrepreneurs who have guarantee the jobs of 21 employees. Aiming to grow and invest in the business, the new owners are positive about the future of NTR.
The Board consists of Martin Allison, Graeme Allison, Mike Shotton and Chris Weeds. Each of the board members brings their own expertise from business, industry and finance, setting the company in good stead for the future.
Martin Allison with a background in finance has taken the role of Chairman whilst Chris Weeds has many years working in manufacturing and has taken the CEO role.
Local engineers TAE join the NTR Group
TAE based on the Thorp Arch Estate is the latest acquisition for the NTR Board.
As part of the Board's strategy for growth and customer retention, local firm TAE has now been purchased and joined the NTR engineering group. Specialising in precision engineering and manufacture, the TAE bring a wealth of knowledge to the wider group.
With a mix of contemporary machinery from programmable CNC Hurco machines through to traditional heritage hand-operated lathes, the TAE facility located less than 0.5 miles from NTR is a great addition to the group's engineering capability.
RUGBY SPONSORSHIP
Yorkshire Carnegie Rugby Union Club
National League team are a firm favourite of Board member Mike Shotton
Mike Shotton one of our four Board members has taken on another great challenge with Yorkshire Carnegie Regby Union Club. At the boardroom table rather than on the pitch, Mike is hoping to take the team to the top of the division.
Numill saved from administration
Yorkshire-based tooling experts Numill saved from job lossesn and are now part of the NTR engineering group.
The Sheffield tool repair company Numill has been rescued from administration by NTR – saving jobs and adding skills to the NTR team. Established in 1969, Numill is known for it's tooling refurbishment capabilities.
Numill, based on Balaclava Road in Sheffield, had been in financial difficulties for some time and had been a well-respected, competitor of NTR. When notice of administration had been posted, NTR rushed to work out a strategy that would secure jobs and turnaround the company's future.
Chris Weeds, NTR CEO said, " It was an easy decision to take on Numill as part of the NTR Group because we were aware of their skills and expertise. The Numill team are a great bunch and we are already working out a solid plan to increase profitability and continue for another 40 years at least!"
NEW ENGINEERING MANAGER
Mick Sykes joins the NTR Team
Expertise and skills in CAD/CAM with a great foundation precision engineering, makes Mick a great asset.
NTR's drive to add more skills to the team has culminated in the recruitment of Engineering Manager, Mick Sykes. An engineer with many years working in tooling manufacture with a specialism in CAD/CAM programming and design.
With over 40 years experience in engineering, Mick started his apprenticeship for the Ministry of Defence in Leeds. This gave him an excellent grounding in hands-on engineering – milling, grinding, fitting and allowed him to develop his skills using Computer Aided Design.
His interest in using IT to create complex tooling thrived with his CAD/CAM training and the rest as they say is history. Welcome on board, Mick!
PANDEMIC AND BREXIT
NTR comes through a difficult year
Trading with Europe and the difficulties of working in a pandemic.
The perfect storm of a global pandemic and the decision to leave the European Union has meant a difficult time for many businesses across the UK. NTR however has remained buoyant and with careful management and strategic decisions has weathered the storm.
COVID-19 restrictions were put into place quickly in both NTR locations, including supplies of PPE and creating safe environments in which to work. The furlough scheme meant that remaining staff were able to work with social distancing in mind.
Changes to trading with the EU have also passed by with little difficulty. Planning and working out new ways of working with international couriers and new Customs requirements have been effectively negotiated.
GRADUATE APPRENTICES
Degree level recruits join the established team at the Thorpe Arch Est in Wetherby, supporting existing staff and training for the future.
As part of NTR's investment in the future, 2021 saw the recruitment of two Graduate Apprentices to the company.
Emily Ball has a background and degree in Sports Development and has chosen an entirely new line of work. A keen swimmer and martial arts student, Emily has quickly become integral within NTR's production and planning team. Although engineering is a new sector for Emily, she has quickly got to grips with tooling types and factory scheduling. Emily is working towards a qualification in…
Charlotte Foster joins us from a career in administration and hospitality and is now working with Customer Services Manager, Caroline Richardson. Joining with a degree in Media from Sunderland University, Charlotte is already assisting customers in the UK and Europe. Her customer service experience in previous roles has proved essential for customer liaison. Charlotte is working towards a qualification in…

redpajama_set_name: RedPajamaCommonCrawl


Created by Jules Amiot (Marcel Proust's uncle) this attractive garden looks over the Loir. It is also home to several little constructions amidst the plants. Proust used the 'Pré Catelan' as inspiration for Swann's garden in his work.
Opening hours: every day from 8.30am to 5.30pm.
We have Le Nôtre to thank for the design of the flower-beds and the layout of the park's two walkways, one of which was named after him. The other was named after "Racine", in remembrance of the famous poet who worked at Maintenon on the tragedies "Esther" and "Athalie", which would eventually be played by the young ladies of Saint-Cyr, pupils of the educational establishment founded by the Lady of Maintenon for the poor young ladies of the nobility.
The aqueduct, built by Vauban and La Hire on the request of Louis XIV to bring the waters of the river Eure to Versailles, was originally intended to be on three levels, but was never finished.
Opening hours: From April 1st to October 31st from Monday to Saturday from 2pm to 6.30pm, Sundays and Bank Holidays from 10am to 12am and from 2pm to 6.30pm. July and August, every day (except Tuesday mornings) from 10am to midday and from 2pm to 6.30pm. From November 1st to March 31st, Saturdays and Sundays and Bank Holidays from 2pm to 5.30pm. Annual closure: from December 15th to January 15th.
The beautiful medieval park covers 10 acres and is composed of several gardens with a fishpond.


As a smaller rural district, Karns City is under pressure to provide similar technology and professional development seen in larger districts.
Following Board approval to outsource technology management with Questeq, Karns City realigned the district's technology workforce, doubling it in size. The district also added new procedures, including a help desk and ticketing system that gave teachers confidence to use technology in the classroom. Curriculum changes using technology and plans for cross-curricular technology sharing have the district poised to realize its future plan.
A little more than three months after beginning a technology realignment, Karns City is taking major steps to accomplish the future plan set by leadership for the district. Karns City now has the team and is building the infrastructure to realize a vision of better student engagement and anywhere anytime self-paced learning.
Current Enrollment: 1,521 students with 43% on free or reduced lunch.
Behind-the-scenes is a story of a district facing the budget pressures of a declining population, juxtaposed with pressure from parents and media to deliver everything other schools have to offer. Karns City has overcome budget obstacles, including state employee retirement contributions that have risen exponentially, to make the upgrades it needs to realize its future plan.


text:
Actor Geoffrey Owens Donates The $25,000 Given To Him From Nicki Minaj To Charity
September 27, 2018	Entertainment Daypop
Actor Geoffrey Owens, the former "The Cosby Show" star who was job-shamed last month due to pictures of him posted on social media working as a cashier at Trader Joe's, is now paying it forward. Owens has decided to donate the $25,000 that rapper Nicki Minaj gave him to other struggling actors. Owens said: "I would like to give this donation of 25K to the Actor's Fund in memory of the late, great Earle Hyman." Hyman, who played Cosby's father, 'Russell', on The Cosby Show, lived his last years and died at the Actors' Home, which was funded and run by the Actor's Fund. Owens added: "I am extremely grateful to Nicki Minaj for enabling struggling actors to continue pursuing their dreams." Owens played Elvin Tibideaux on "The Cosby Show," but his career stalled after the show ended in 1992. The photos of him being shamed for working at the supermarket stirred outrage. Minaj called the incident "toxic & disgusting" and pledged to donate $25,000 to Owens. Minaj said she was "happy to be a part of a great cause. I wish Geoffrey much success and want him to know how loved he is." Since the publicity, Owens has booked a guest role on a forthcoming episode of "NCIS: New Orleans," and has accepted an offer from Tyler Perry to recur on his new OWN television show, "The Haves and The Have Nots."
Nicki Minaj Belatedly Sends $25K to Geoffrey Owens, Who Donates It to Charity
Via www.yahoo.com
Nicki Minaj finally made good on her promise to give former Cosby Show actor Geoffrey Owens…
Editorial credit: Kathy Hutchins / Shutterstock.com


At What Katie Writes, we specialise in providing completely bespoke copywriting and social media management services to businesses, charities, and individuals all over the globe, creating quality content that people want to read. Language is our passion, and we firmly believe that, when used in the right way, it can be the most powerful thing in the world.
But the right words aren't always easy to find, and that's where we come in. Whether you need us to start from scratch on a piece of sales copy, run another pair of eyes over a blog post you've already made your own, or create gobsmacking social media posts, we're here to help.
We offer a whole bunch of pretty great marketing services, and can work with you on copywriting for your web pages, blog, product descriptions, SEO copy, and much more. Already written your content but not sure about it? Hand it over and we'll do your proofreading for you, checking every last detail from spelling and grammar to structure and flow. To add another string to our bow, our social media management packages are pretty cool too. We'll work with you on your Facebook, Twitter, and Instagram marketing, helping you to increase your presence, following, and engagement, day by day.
And they're all about you.
As a small team of hands-on writers, we offer a personal service to each and every one of our clients and we pride ourselves on our friendly approachability, fantastic working relationships, and glowing reviews. Our customer base ranges from large, international companies to more modest start-ups and we work closely with all of them to meet their copywriting and social media managment needs, however big or small.
Our clients are from a wide variety of industries, from fashion retailers and make-up brands to business software developers and waste management experts, giving us a broad spectrum of trade knowledge. And what we don't know? We'll learn, making your business our business, so you can be sure that, whether you're a destination wedding planner, a national home decor firm, or a one-to-one nutritional therapist, you've got our attention.
What can we do for YOUR business? Find out.


ΠΡΟΣ ΚΟΡΙΝΘΙΟΥΣ Α΄ 16:12 περὶ δὲ Ἀπολλῶ τοῦ ἀδελφοῦ, πολλὰ παρεκάλεσα αὐτὸν ἵνα ἔλθῃ πρὸς ὑμᾶς μετὰ τῶν ἀδελφῶν· καὶ πάντως οὐκ ἦν θέλημα ἵνα νῦν ἔλθῃ, ἐλεύσεται δὲ ὅταν εὐκαιρήσῃ.
1 Corinthians 16:12 As touching our brother Apollos, I greatly desired him to come unto you with the brethren: but his will was not at all to come at this time; but he will come when he shall have convenient time.
1 Corinthians 16:12 Now concerning our brother Apollos, I strongly urged him to come to you with the brethren, but he was quite unwilling to come at this time; however, he will come when he has a convenient time.
Eta anaye Apolloz den becembatean, anhitz othoitz eguin draucat ioan ledin çuetara anayequin: baina neholetan-ere eztu vkan vorondateric orain ioaiteco: baina ethorriren da opportunitatea duenean.
This page was last modified on 30 April 2018, at 06:10.
This page has been accessed 419 times.


text:
import unittest
import tempfile
import os
import os.path
import ofxclient.config
from ofxclient.config import OfxConfig
from ofxclient import Institution, CreditCardAccount
import StringIO

class OfxConfigTests(unittest.TestCase):

    def setUp(self):
        self.temp_file = tempfile.NamedTemporaryFile()

    def tearDown(self):
        self.temp_file.close()

    def testFileCreated(self):
        file_name = self.temp_file.name
        self.temp_file.close()

        self.assertFalse(os.path.exists(file_name))

        c = OfxConfig(file_name=file_name)
        self.assertTrue(os.path.exists(file_name))

        os.remove(file_name)

    def testAddAccount(self):
        c = OfxConfig(file_name=self.temp_file.name)

        i = Institution(id='1',org='org',url='url',username='user',password='pass')
        a = CreditCardAccount(institution=i,number='12345')

        c.add_account(a)
        self.assertEqual( len(c.accounts()), 1 )
        self.assertEqual( c.account(a.local_id()).local_id(), a.local_id() )

    def testLoadFromFile(self):
        c = OfxConfig(file_name=self.temp_file.name)
        i = Institution(id='1',org='org',url='url',username='user',password='pass')
        a = CreditCardAccount(institution=i,number='12345')
        c.add_account(a)
        c.save()

        c = OfxConfig(file_name=self.temp_file.name)
        got = c.account(a.local_id())
        self.assertEqual( len(c.accounts()), 1 )
        self.assertEqual( got.local_id(), a.local_id() )
        self.assertEqual( got.number, a.number )
        self.assertEqual( got.institution.local_id(), a.institution.local_id() )
        self.assertEqual( got.institution.id, a.institution.id )
        self.assertEqual( got.institution.org, a.institution.org )
        self.assertEqual( got.institution.url, a.institution.url )
        self.assertEqual( got.institution.username, a.institution.username )
        self.assertEqual( got.institution.password, a.institution.password )

    def testFieldsSecured(self):
        if not ofxclient.config.KEYRING_AVAILABLE:
            return

        c = OfxConfig(file_name=self.temp_file.name)

        i = Institution(id='1',org='org',url='url',username='user',password='pass')
        a = CreditCardAccount(institution=i,number='12345')
        c.add_account(a)

        self.assertTrue( c.parser.is_secure_option(a.local_id(),'institution.username') )
        self.assertTrue( c.parser.is_secure_option(a.local_id(),'institution.password') )

    def testFieldsRemainUnsecure(self):
        if not ofxclient.config.KEYRING_AVAILABLE:
            return

        c = OfxConfig(file_name=self.temp_file.name)
        i = Institution(id='1',org='org',url='url',username='user',password='pass')
        a = CreditCardAccount(institution=i,number='12345')
        c.add_account(a)

        # pretend the user put their password in there in the clear on purpose
        c.parser.remove_option(a.local_id(),'institution.password')
        c.parser.set(a.local_id(),'institution.password','pass')
        c.save()

        c = OfxConfig(file_name=self.temp_file.name)
        self.assertTrue( c.parser.is_secure_option(a.local_id(),'institution.username') )
        self.assertFalse( c.parser.is_secure_option(a.local_id(),'institution.password') )

    def testResecuredAfterEncryptAccount(self):
        if not ofxclient.config.KEYRING_AVAILABLE:
            return

        c = OfxConfig(file_name=self.temp_file.name)
        i = Institution(id='1',org='org',url='url',username='user',password='pass')
        a1 = CreditCardAccount(institution=i,number='12345')
        c.add_account(a1)
        a2 = CreditCardAccount(institution=i,number='67890')
        c.add_account(a2)

        # pretend the user put their password in there in the clear on purpose
        # to fix something... and then wants it to be resecured later on
        c.parser.remove_option(a1.local_id(),'institution.password')
        c.parser.set(a1.local_id(),'institution.password','pass')
        c.save()

        c = OfxConfig(file_name=self.temp_file.name)
        self.assertEqual( len(c.accounts()), 2 )
        self.assertEqual( len(c.encrypted_accounts()), 1 )
        self.assertEqual( len(c.unencrypted_accounts()), 1 )
        self.assertTrue( c.parser.is_secure_option(a1.local_id(),'institution.username') )
        self.assertFalse( c.parser.is_secure_option(a1.local_id(),'institution.password') )

        c.encrypt_account(a1.local_id())
        self.assertEqual( len(c.accounts()), 2 )
        self.assertEqual( len(c.encrypted_accounts()), 2 )
        self.assertEqual( len(c.unencrypted_accounts()), 0 )
        self.assertTrue( c.parser.is_secure_option(a1.local_id(),'institution.username') )
        self.assertTrue( c.parser.is_secure_option(a1.local_id(),'institution.password') )


text:
USU Home
Graduate Students & Residents
Veterinary Medicine News
Amanda Willett is a certified social worker with a Master's Degree in Social Work and Public Health, and as USU's next director of wellness, she works to ensure that all veterinary medicine students have the resources they need to face the mental and emot
Amanda Willett Joins School of Veterinary Medicine as Wellness Director
Amanda Willett is a certified social worker with a Master's Degree in Social Work and Public Health, and as USU's next director of wellness, she works to ensure that all veterinary medicine students have the resources they need to face the mental and emot...
We love animals, but we often don't think of our bonds with them as productive outside of the enjoyment they give us. Science, however, is beginning to paint a different picture.
What Animals Can Teach Us
Once a month, USU veterinarians offer advice to regional producers through a column in the Post Register's Intermountain Farm & Ranch. For December, Drs. Karl Hoopes and Holly Clement tackled common causes of colic in horses.
Doctor's Orders: Catching Colic in Horses
As director of the Spanish Fork site of the Utah Veterinary Diagnostic Lab and a clinical professor of veterinary diagnostics, microbiology, and public health at Utah State, you'd think Dr. Jane Kelly wouldn't have time to run an ultramarathon in the Scot
Running Like Jane
As director of the Spanish Fork site of the Utah Veterinary Diagnostic Lab and a clinical professor of veterinary diagnostics, microbiology, and public health at Utah State, you'd think Dr. Jane Kelly wouldn't have time to run an ultramarathon in the Scot...
Holiday travel can be stressful — even for the four-legged members of the family. But with some planning ahead and consideration of an animal's needs and temperament, a road trip with your pet doesn't have to be a dreaded drive.
WSU Insider: Road Trips With Pets
From veterinary science to equine-assisted therapies, the Sam Skaggs Family Equine Education Center offers invaluable experience for anyone pursuing a career with horses.
Discover the Sam Skaggs Family Equine Education Center
The gap between a student learning about veterinary medicine and an actual veterinarian who diagnoses and treats animals can be daunting. Diagnostic challenges are one way WIMU students at USU make the jump from lectures and demonstrations to saving an an
Diagnostic Challenges: Putting Vet Med Students to the Test
The gap between a student learning about veterinary medicine and an actual veterinarian who diagnoses and treats animals can be daunting. Diagnostic challenges are one way WIMU students at USU make the jump from lectures and demonstrations to saving an an...
"There's already a nationwide shortage before the pandemic, and now the caseload has doubled and the resources have dwindled until the demand is quite high," said Dr. Shawn Zimmerman, an ADVS assistant professor at USU.
Front-line fatigue: Pandemic pressures pouncing on taxed veterinarians
When Ashlee Buist entered USU's School of Veterinary Medicine, she had to catch up on two weeks of missed work while jumping directly into the third week of the semester. With hard work and help from USU classmates and faculty, however, Buist not only sur
Student Profile: Ashlee Buist
When Ashlee Buist entered USU's School of Veterinary Medicine, she had to catch up on two weeks of missed work while jumping directly into the third week of the semester. With hard work and help from USU classmates and faculty, however, Buist not only sur...
Students from Utah State University's School of Veterinary Medicine administered vaccines, performed exams, and created medical records for their dogs and cats with guidance from local veterinarians. The event was sponsored by one of the vet school's club
Preventative Health Clinic Pairs USU Students With Local Vets for Firsthand Experience
Students from Utah State University's School of Veterinary Medicine administered vaccines, performed exams, and created medical records for their dogs and cats with guidance from local veterinarians. The event was sponsored by one of the vet school's club...
Finding Scott Hexum's office in the Veterinary Science and Biology Building is an adventure. Not only is Room 210 nowhere near Room 209, but visitors need to enter what looks like a storage room before descending down a small number of stairs to get there
Master of Bone and Beetle: Vet School Anatomist Prepares a Menagerie of Teaching Tools
Finding Scott Hexum's office in the Veterinary Science and Biology Building is an adventure. Not only is Room 210 nowhere near Room 209, but visitors need to enter what looks like a storage room before descending down a small number of stairs to get there...
The Veterinary Law and Ethics Club hosted Dr. Kerry Rood for a presentation on encountering animal negligence, abuse, and hoarding. Students learned about the limits on their authority as veterinarians and heard a firsthand account of navigating an animal
Students Host Presentation on Animal Neglect and Hoarding
The Veterinary Law and Ethics Club hosted Dr. Kerry Rood for a presentation on encountering animal negligence, abuse, and hoarding. Students learned about the limits on their authority as veterinarians and heard a firsthand account of navigating an animal...
The 10th class of Utah State University's School of Veterinary Medicine has arrived at USU. After a week of orientation activities and receiving their white lab coats in a ceremony on August 19, the 30 incoming students are ready to begin the challenge of
10th Veterinary Medicine Class Forms Bonds and Prepares for New Challenges
The 10th class of Utah State University's School of Veterinary Medicine has arrived at USU. After a week of orientation activities and receiving their white lab coats in a ceremony on August 19, the 30 incoming students are ready to begin the challenge of...
Two Utah Veterinary Diagnostic Laboratory leaders and Utah State University School of Veterinary Medicine faculty members were recently honored by the Utah Veterinary Medical Association (UVMA).
Utah State University Veterinarians Honored by Utah Veterinary Medical Association
During a three-part seminar, members of the SVM faculty and interested students received instruction from Chris Chapman and Clair Canfield. Conflict resolution was taught using VOCAB as an acronym.
Compromise, Competition, and Collaboration: Conflict Resolution 2020
USU's Western Equestrian Team has been a top competitor in the region for more than a decade. Until now, there hasn't been a team in the region with the facilities or access to enough show-quality horses to host this caliber of event. In recent years, the
Women in Agriculture: Feed Your Career
USU's Western Equestrian Team has been a top competitor in the region for more than a decade. Until now, there hasn't been a team in the region with the facilities or access to enough show-quality horses to host this caliber of event. In recent years, the...
A graduate from the 2018 Class of the WIMU Veterinary Medicine Program, Anderson is fulfilling a family legacy of military service while working her dream job.
Graduate Profile: Capt. Stacie Anderson
A link between vaccines and autism in humans has been repeatedly disproved, but a trend against vaccination that originated in the United Kingdom and is now trickling into the United States, has some pet owners refusing to vaccinate their pets.
Why Veterinarians are Entering the Vaccine Debate
National Collegiate Horse Show at USU
At Utah State University, veterinary medicine students are taught to diagnose and contain animal diseases and put skills into practice each year with a mock disaster training.
Mock Disaster Teaches USU Veterinary Students to Protect Animals and the Public
When disease outbreaks cause public concern, experts work together to diagnose the disease and stop its spread. At Utah State University, veterinary medicine students are taught to diagnose and contain animal diseases and put skills into practice each yea
When disease outbreaks cause public concern, experts work together to diagnose the disease and stop its spread. At Utah State University, veterinary medicine students are taught to diagnose and contain animal diseases and put skills into practice each yea...
For the second time, the Caine Dairy Teaching and Research Center was ranked the number one college dairy herd in the nation by Holstein World magazine.
Utah State's Caine Dairy is Home to to the Number One College Dairy Herd
Giving a child their own chick, duckling, or bunny as an Easter gift might seem like a fun idea, but caring for these animals requires more work than people anticipate.
Animals Don't Make Great Gifts
Giving a child their own chick, duckling or bunny as an Easter gift might seem like a fun idea, but caring for these animals requires more work than people anticipate. Utah State University's School of Veterinary Medicine, encourage people to think twice
Animals Don't Make Great Gifts
Giving a child their own chick, duckling or bunny as an Easter gift might seem like a fun idea, but caring for these animals requires more work than people anticipate. Utah State University's School of Veterinary Medicine, encourage people to think twice ...
The wildfires that occurred in Northern California in October hit home for Sarah Beard. Beard's hometown was surrounded by two deadly fires.
USU Vet Student Reaches Out to Help Community Hit By Wildfires
The wildfires that occurred in Northern California in October hit home for Sarah Beard. Beard's hometown was surrounded by two deadly fires. She wanted to find a way to help her community, but the rigorous schedule of vet school and being over 12 hours aw
The wildfires that occurred in Northern California in October hit home for Sarah Beard. Beard's hometown was surrounded by two deadly fires. She wanted to find a way to help her community, but the rigorous schedule of vet school and being over 12 hours aw...
The Utah State University School of Veterinary Medicine, in conjunction with the Cache Veterinary Practitioners Association and the Utah Veterinary Medical Association, is hosting the Applicable Equine Dentistry.
USU School of Veterinary Medicine Hosts Equine Dentistry Workshop
Nick Moore, past president of the International Association of Equine Dentistry, will present the workshop that is open to vet practitioners from across the state and the surrounding region.
With fireworks going off in Utah throughout the month of July, pets are bound to get stressed and anxious. Karl Hoopes and Allison Willoughby shared tips to help owners keep their pets safe and make the summer more enjoyable for everyone.
Pet Safety for Firework Season
Pet Safety for Fireworks Season
Faculty in Utah State University's School of Veterinary Medicine, have some advice for pet owners when it comes to traveling with their animals during the summer.
Pets and Travel: What to Know Before You Go
Sarah Draper of Brigham City, Utah, an agricultural education major at Utah State University, recently was chosen to serve as western region vice president in the National FFA organization.
Agricultural Education Student Chosen as National FFA Officer
VETMED QUICK LINKS
WSU College of Veterinary Medicine
INTERNAL VETMED LINKS
Faculty Access
VETMED SOCIAL MEDIA
>View issues
CAAS QUICK LINKS
CAAS Home
© Utah State University


All the tastes of autumn in one bite! Starting with a Homemade Gingersnap Graham Cracker crust, this cheesecake has a creamy, delicately spiced pumpkin filling covered with a sour cream and pumpkin topping. Homemade Caramel Sauce with caramelized pecans/walnuts tops it off, giving you the perfect blend of spicy gingersnap,creamy pumpkin, sweet caramel, and crisp roasted nuts in every bite!