My Best Friend Bob

My Best Friend Bob is a children's picture book written and illustrated by Georgie Ripper, first published in 2003. Brian and Bob are guinea pigs who live in a cage in Pete's Pet Palace. One day they are separated, when Bob is sold and suddenly taken away from the pet shop. Brian is inconsolable as he now has no-one to play I-Spy with, and even a peanut can't cheer him up. Misery sets in until he, too, is sold to the same owner as Bob, and the two guinea pigs are reunited in a touching final scene.

My Best Friend Bob
AuthorGeorgie Ripper
IllustratorGeorgie Ripper
CountryUnited Kingdom
LanguageEnglish
GenreChildren's
PublisherMacmillan Publishing
Publication date
April 2003
Media typePaperback
ISBN0-333-96085-8

It was published in the United States under the title Brian and Bob: the Tale of Two Guinea Pigs.[1]

Notes

gollark: This is not ideal. How can we use more without boring things like cryptominers?
gollark: Okay, this might fix it, pushed.
gollark: If the issue is what I think it could be, then it's accidentally dropping? data on the threshold of the rolling counter region incorrectly.
gollark: ```nimproc pollTargets(ctx: Ctx) {.async.} = for row in ctx.db.all("SELECT * FROM sites"): var (id, url, rollingTotalPings, rollingSuccessfulPings, rollingLatency, rollingDataSince) = row.unpack((int64, string, int64, int64, int64, Option[Time])) let res = await ctx.pollTarget(url) let threshold = getTime() # drop old data from rolling counters if rollingDataSince.isSome: for row in ctx.db.iterate("SELECT status, latency FROM reqs WHERE timestamp >= ? AND timestamp <= ? AND site = ?", rollingDataSince.get, threshold, id): let (statusRaw, latency) = row.unpack((int, int)) rollingTotalPings -= 1 rollingLatency -= latency if statusRaw <= 0: rollingSuccessfulPings -= 1 # add new data rollingTotalPings += 1 rollingLatency += res.latency if int(res.rtype) <= 0: rollingSuccessfulPings += 1 ctx.db.transaction: ctx.db.exec("UPDATE sites SET rc_total = ?, rc_success = ?, rc_latency = ?, rc_data_since = ? WHERE sid = ?", rollingTotalPings, rollingSuccessfulPings, rollingLatency, threshold, id) ctx.db.exec("INSERT INTO reqs (site, timestamp, status, latency) VALUES (?, ?, ?, ?)", id, getTime(), int(res.rtype), res.latency)```This is the core algorithm.
gollark: Actually, æææææ who even knows.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.