Geoffrey Meredith
Thoughts on Technology

Blog

(posted on 20 Nov 2024)

As a provider of online services for artists and the “go-to” tech person in my family and friends’ networks, I encounter a wide range of online scams. Recently, I’ve noticed a surge in payment receipt scams. These are deceptive emails that claim you’ve purchased something—often software—that you never actually bought.

Thankfully, most of these scam messages are poorly constructed and easy to spot. However, a growing number are much more convincing and could deceive even the most vigilant internet users. While many of these scams aim to lure you into clicking malicious links, some have evolved to appear more legitimate by taking you to real websites, as though you genuinely made the purchase.

The latest twist? They often include a customer support phone number, typically a toll-free 800 number. This small detail makes the scam seem more credible. Unfortunately, these phone numbers connect you directly to the scammers.

These fraudsters are highly skilled at manipulating people—yes, even thoughtful, cautious individuals. It doesn’t take much: a hectic day, a moment of distraction, or personal stress can make you overlook subtle warning signs and fall into their trap.

Once you engage with them by phone, the scam can unfold in various ways, each designed to exploit your trust. In this post, I want to focus on some general principles for staying safe online and avoiding these schemes:

Be Suspicious of All Incoming Emails

Regardless of how legitimate an email appears—or who you think it’s from—approach every message cautiously. Scammers are increasingly adept at mimicking professional communication, but you can protect yourself by:

  • Avoiding links and phone numbers in the email: Legitimate actions requested in an email (e.g., verifying an account or resolving an issue) can almost always be done by going directly to the company’s official website or contacting them through their verified phone number.
  • Looking up contact information independently: Never assume the phone number or link in an email is correct. Instead, search for the official contact details yourself.

Resist Emotional Manipulation

Scammers thrive on provoking strong emotional responses, such as fear, urgency, or excitement. They may:

  • Warn you of a security breach.
  • Threaten legal consequences.
  • Dangle offers or winnings that feel too good to be true.

If you feel compelled to act “just in case,” stop and evaluate the situation. Use a trusted source—like the company’s website or a search engine—to verify the claims independently of the email.

Seek a Second Opinion

If you’re unsure about taking an action—especially one involving significant consequences, like large financial transactions—talk to someone you trust.

  • A fresh perspective can help: Others might spot details or inconsistencies you missed.
  • It relieves pressure: Scammers aim to isolate you and create urgency, so reaching out to someone else can help break that cycle.

By staying cautious, questioning unusual requests, and leaning on trusted resources, you can outsmart scammers and protect your personal information. Remember: if something feels off, take the time to verify. It’s always better to pause and confirm than to act in haste and regret it later.

I've used a SON 28 dynamo, a Busch and Muller E-Werk converter, and a small buffer battery for about 6 years. Travelling at 17 km/h, you get about 2.5W, 500mA@5V for charging USB devices. I carry 2 x 13,000mAh Anker battery banks. So to fully recharge one of those batteries, I have to travel at 17 km/h for at least 26 hours, and that doesn't account for inefficiencies in the charging process, so more like 30 or more hours.

My average speed on long multiday bikepacking trips is roughly 11 km/h (I'm not fast). That's fully loaded (35 kg/ 77 lb bike, gear, water, food) with lots of climbing, so sometimes that speed is more like 5 km/h going uphill and sometimes 30 km/h going down. So a rough estimate is that charging one of those batteries will take about 40 hours of typical riding. That's 3-4 long days. With my setup, charging an iPhone 13 Pro, Hammerhead Karoo 2, Bluetooth earbuds and batteries for my point-and-shoot camera, I can stay fully charged for about 2 days per battery bank. So with 2 battery banks, I get 4 days and possibly as much as an additional 2 days from charging from the dynamo. Or another way to look at it is that I extend my time by about 50% without any recharge from an outlet.

You can extend the usefulness of the dynamo if you are more careful than I am with a phone and if you have a more energy-efficient bike computer than the Karoo.

If I were making the decision on whether to use a hub dynamo, given what I know now, I'm not sure I would. In my bikepacking, I've rarely gone more than about 3 days without finding some way to plug into AC power and recharge. The one thing that might still tip it over to a "dynamo yes" is that you can always have power, however meagre it is. So if you need to ride at night or need to charge your phone to get some signal, you can generally make that happen, at least if you are not going uphill!

This is definitely a "your mileage may vary" situation, but at least I can provide a long-term example.

The vaccines are not 100% protective. Some of the Covid vaccines are the most effective vaccines ever produced but it seems that about 5-30% are not as well protected as we would like depending on the specific vaccine used. And without more tests, no one knows if they are part of the 5-30% who are not as well protected. These vaccines do seem to be more effective at protecting against hospitalization and death. I don't have numbers on the top of my head (and I don't think we have good numbers yet) but there is still a more than an insignificant chance that a vaccinated person will die of Covid.

So if a person with Covid, vaccinated or unvaccinated, interacts with a vaccinated person, there is a reasonable chance that the vaccinated person will get covid too. I've seen numbers that put this at about 10% of the chance that an unvaccinated person would get Covid in the same circumstance.

There are people that for good health reasons, generally allergy-related, should not get vaccines. These people are vulnerable. The whole reason to try to reach herd immunity is to protect these and others who won't get vaccinated. I would expect that anyone who knows that they are not protected should take extra steps to protect themselves but what would really protect them the most is if there was less Covid floating around in the community.

A basic fact of virology is that the less of a virus that is floating around, the fewer chances there are that it will mutate. The more mutations, the more chance that a variant will arise that current vaccines will not protect against and we are back at square one. This is a worldwide issue so in theory giving a vaccine that one person refuses to take to another person in another part of the world is just as effective against mutations. From a practical perspective, a lot of vaccines in the US are being thrown out because they expire unused. They are not being shipped elsewhere.

One of the main things that public health officials worry about with a pandemic is overflowing the healthcare system. People with unrelated illnesses are dying because there are no emergency services available because they are being used up by Covid patients. So unvaccinated people who get seriously ill from Covid are putting the whole community at risk by using up resources that would not have been used if they had been vaccinated.

So I think that the best reason why an unvaccinated person might consider getting vaccinated is to help protect those around them, vaccinated or unvaccinated. Personally, that was my first reason for getting vaccinated when the opportunity came up. I wanted to help protect my community. Even though I am older and have some health risks, I still felt that the very minimal risk I was taking was worth the reduced risks associated with Covid to me, my extended family and the overall community.

If it were just a matter of only the unvaccinated get seriously sick and dying from Covid, I'd still implore them to get the vaccine for their own sake but it goes way beyond that.

I don't normally venture into the cesspit that is a Facebook discussion on anything political but recently I've been researching how people behave in these discussions.  I've noticed some interesting patterns.

When a hot topic like politics, covid vaccines, or masks come up it is descended upon by a huge number of anti-vax/anti-mask identities posting ridiculous, slanderous, and disgusting comments.   From time to time I've engaged some of these identities to see how they will react.  When I post a link to a credible source like the US CDC website and these will quickly get taken down by Facebook due to "spam".  Any human would recognize that these are not spam but these identities understand that they can gang up and mark a post as spam and remove any credible response to their disinformation.  You can dispute the comment being marked as spam but Facebook will not reinstate your comment.  Of course, being marked as a spammer a couple of times makes me concerned that Facebook might suspend my account, which is exactly what these identities want, they want to either get you suspended or prevent you from countering their disinformation.

I use the term "identity" and not "person" because often when I dig into the profiles of these accounts that are spewing disinformation, they look like bot accounts.  Often with no information and a generic picture, or with very limited amounts of information.

(posted on 28 Oct 2017)

Over the summer I decided it was time to replace my iPhone 6 Plus. I had installed iOS 10.3.3 on it and that had really broken the phone. I tried wiping out the phone and completely reinstalling everything but with no luck. Apple should not have pushed that update out to iPhone 6's.  It also had the same effect on Rochelle's iPhone 5.  My guess is that because both of these phones have 1GB of RAM (a ridiculously low amount even when the iPhone 6 came out) some change made in iOS 10.3.3 cause there to be a lot less memory available for apps.  Apps began crashing and were extremely slow to load. Multitasking (such as it is on iOS) just about stopped. It became hard to listen to audio while doing other stuff.  Even Apple's apps, like the settings app, became very slow to load and sluggish.  All this from upgrading from 10.3.2 to 10.3.3.

I eventually tried upgrading to iOS 11 when it came out but the results were more or less the same.  Essentially Apple had obsoleted my very powerful and perfectly usable 2.5-year-old phone.  I do wish that instead of breaking the phone, they had just stopped updating it.  The phone ran well before iOS 10.3.3.  I think that they didn't do this because they were still selling the iPhone 6 so they couldn't leave it behind on software updates.

So, with a very strong annoyance at Apple, I started paying a whole lot more attention to reviews and rumors of upcoming phones.  I was determined not to replace this iPhone with another iPhone.  My two phones before the iPhone 6 Plus were Google's Nexus S and Nexus 4.  I liked the Nexus S but I drowned it on my cross Canada bike trip.  I really liked my Nexus 4.  Neither of those phones was perfect but I could make them work for me and more importantly, they were very inexpensive.  With that experience, I didn't really feel locked into the Apple ecosystem.  I've avoided Apples iOS apps for the most part.  I've been sticking with Google's apps on the iPhone so a switch back to Android should be fairly painless.  The big highlight would be that Google's voice assistant is a first class app on Android instead of being stuck with the practically useless Siri on iPhones.

My biggest "must have" on the new phone was a good camera.  If it wasn't for that, I'd likely be happy buying a mid-range Android.  I wanted a phone that got security and OS updates in a timely manner so that mostly rules out all phones except for what Google provides.  I also wanted a phone that did a good job of playing podcasts via Bluetooth.  As the rumors started to come out about the new Pixel 2's, it seemed like one of them would be my new phone.  They seemed way too expensive but all the reviewers loved the first Pixel phones and Google has really been positioning themselves as a head-to-head competitor to Apple in the phone market.

Once the Pixel 2s was announced, it seemed clear to me that the Pixel 2 (not XL) was right for me.  I liked the look of the XL but there wasn't enough added value for the extra cost for me.  I also kind of liked the idea of moving to a somewhat smaller phone from the larger iPhone 6 Plus.  I bought the Plus so that it would be easier to read notifications when mounting on the handlebars of my bike and at the time Android notification didn't work well with cycling.  With better bicycle computers that show phone notifications on them, this is less important.  I really loved that both Pixel 2s had the same camera and that those cameras seemed like they were a big upgrade from the already great Pixel camera.

So I pre-ordered a black Pixel 2 as soon as the pre-orders opened.  With their protection plan and taxes that came out to a whopping CA$1200 ($900 + extended warranty + tax)!  That felt like it was at least $200 too high but I really felt like I was getting a premium, Apple quality level product so I went for it.

On October 23, the phone finally arrived.  Although the phone has automated transfer software and an adapter, it still took me about 2 days to really transfer my life over to the Pixel 2.  The phone is fast and the interaction is nice and smooth.  It really highlighted how much iOS 10/11 has degraded the usability of the iPhone 6.  My initial impressions were very positive.  I really like the Android Material Design interface.  It feels much more modern and usable than iOS.  I like having Google voice assistant come up just by squeezing the phone or by saying "OK Google".  I also liked being able to look down at the sleeping phone and see the time and notification icons, and when music is playing, the name and artist of the song!  Oreo from a design and features perspective is amazing.

Then I started to use the phone in real life...  I have at least 7 different Bluetooth devices that I have been using regularly with the iPhone, many at the same time.  I have a mono-headset for listing to podcasts (actually I have 4 of these), a UE Roll speaker, a sound bar, a bike computer, car stereo,  a sous-vide device and another device.  These all have troubles working with the Pixel 2.  Usually, once I get a device connected and working, they work well but it's that initial pairing and latter connection that is really problematic.  When you turn on a Bluetooth headset that has already been paired, I expect it to just connect to my phone, and if there is something playing on the phone, it should just start in the headset.  On the Pixel 2 that happens about 50% of the time.  When you want to switch from one audio device to another, it should just happen when you turn it on.  Mostly the Pixel doesn't even recognize the already paired device.  I'll reboot the phone and the Bluetooth works much better, for a matter of minutes to hours and then it becomes a struggle again.  I ride my bike with the mono headset and listen to podcasts.  For various reasons, I will want to pause the playback while riding.  Often when I attempt to start up the podcast, it just won't.  I have to stop my bike, get out my phone, unlock, navigate to my podcast app and hit the play button.  On my iPhone, just hitting the pause/play button on the headset would get the audio going again (although Apple did have a nasty habit of playing the Apple Music app, which I never used, instead of the last played app -- it also always played the same song).

Looking online, I see that Pixel 1 and Pixel 2 owners have been struggling with Bluetooth for a long time.  Google has promised fixes but I'm starting to see that Google has a lot of fixes to do on the Pixel 2 (particularly the XL version) and Oreo so I won't hold my breath.

Something that really surprised me is that I couldn't find any way to just switch audio from one connected Bluetooth device to another or the phone speaker. iPhones have had that feature forever and I used it all the time.  It was such a time saver for me.  It really seems to me that Google developers have never properly tested or used Bluetooth with multiple devices connected or paired.

I also found that if I was listening to Bluetooth audio that I could not connect my Bluetooth bike computer.  I would have to reboot the phone to get that to work.

While out on a ride last week, I was looking for interesting things to take pictures off to test out the phones amazing camera.  On one occasion, I pulled out the phone, hit the camera app, it started up and then I waited for the live image.  And I waited.  And I waited.  About 30 seconds later, the camera app crashed.  I tried again.  I waited about 15 seconds and finally, the camera app became responsive and I took the picture.  I haven't seen this problem since but I have seen a lot of different apps crash.  Overall, the apps seem to be somewhat unstable.  I'm sure that will improve as Oreo is updated but should I wait?  I thought I was buying a premium product, not a developer beta.

While no one has been complaining about the Pixel 2's screen (unlike the avalanche of complaints about the XL screen), I did find it a serious step down from the 3-year-old iPhone 6 Plus design.  The screen was less bright and greyer.  When you looked at a bit of an angle, the colour changed slightly.  At larger angles, you get a rainbow effect that I thought went away on LCD screens a decade ago.  I also found the brightness of the screen would change from moment to moment and that was very distracting at times.  I suspect that the auto adjust for brightness isn't tuned well, but why isn't it?

There has been a lot said about how great a camera comes with the Pixel 2.  It does take some really good pictures but have a look at this panorama image that I took.

It's the worst panorama image that I've ever taken.  It looks like the camera didn't do any post-processing of the image.  Other panorama images were the same.

So after almost a week with this phone, I've decided it's got to go back.  It had a lot of promise and if cost CA$600 instead of CA$900 (and if Bluetooth worked better) I would keep it.  It's just not the premium product that you would expect for $900.

So this begs the question, what smartphone should I  get?  My iPhone 6 Plus has been almost unusable since August but I waited until the fall announcements completed before making a choice.  So what's my second choice?  I might go for a OnePlus 5.  It's got amazing specs and price and supposedly it's gotten its camera issues ironed out.  But as is typical with OnePlus, all their phones are out of stock.  How does OnePlus survive?  I could go for a new Moto G or X.  The reviews are good and they are quite reasonably priced but the camera is the big sticking point.  They all seem to have mediocre cameras.  Also, if Oreo on a Pixel is this bad, is it likely to be any better on a second-rate phone?  Samsung phones sell well and they seem to make really good hardware.  Unfortunately they really "crapify" their device and don't update them regularly, even for security fixes.

So that leaves me going back to the evil empire of Apple.  I ordered an iPhone X at 12:05 am on October 27 just in case.  I figured I could cancel the order or flip the phone if they are in as much demand as it looks like they will be.  With AppleCare and taxes, it comes out to about $1760 for the "low-end" 64GB model.  That's more than I've paid for any Windows computer in about 25 years.  A similar iPhone 8 Plus is a more reasonable (??) $1410.  I like the more compact form factor of the X but the FaceID and other faddish features scare me.  Apple is kind of betting the farm that FaceID will take off and people will be willing to pay a massive premium for it.  I have my doubts.  If all that technology was on the back of the phone for augmented reality use, it might be a game changer, but it's not. 

Reports are that the 8 Plus is not selling well.  It's no longer in fashion with its 4-year-old design.  Those sales might pick up once people realize that they won't be able to get an X before the end of the year.  I would be afraid to go for the iPhone X.  Apple has had a lot of problems with newly introduced technologies lately and the X has a lot that is new.  I can see a lot of failures in its future.  The iPhone 6 Plus was new tech when it came out.  I had to have my replaced twice due to screen and battery failures.  Because Apple has perfected the 8 Plus form factor, I bet that it will have very few failures. It may look dated but it's likely to "just work". And isn't that one of the main reasons people buy Apple products in the first place?

So it looks like I'll be going back to Apple and the iPhone 8 Plus.

(posted on 18 Aug 2014)

Almost exactly 5 years ago, I experimented with using a Mac as my main software development platform. The net result was that I abandoned the effort after finding too many obstacles and not enough benefits. In the 5 years since, the Windows and OSX platforms have converged considerably and the kinds of software that I work on have become much more "cloud like" in nature. There has also been a slow transition from Windows first to OSX first development tools to the point where many libraries that I want to install, either don't work under Windows or are a real pain to install.

So I am again diving head first into the OSX ecosystem. This time, I've got a top of the line, refurbished Macbook Pro that was shockingly expensive at about 3 times the cost of my last high performance Windows laptop. At least performance shouldn't be an issue. It's also nice that I can plug 3 external monitors into this laptop so that I can roughly reproduce my 6 screen setup that I had previously.

So far things have been going pretty well but I've not gotten too far in reproducing my development environment. That's my goal for this week. I'll report on the progress that I make.

(posted on 11 Jan 2014)

A friend wrote me with the following question:

Geoff, a woman I know told me that she heard that charging one's iPhone via a USB cable from a laptop does not provide it a "full" charge and that the only way to fully charge it is via the AC adapter and USB cable.

While she is technically incorrect, there are differences between various USB ports and how they provide power for charging. It's actually a very complex subject but the gist of it is that any particular USB port has a maximum amperage that you can draw from it for charging. This can range from as little as 50 mA up to 2100 mA. What sets this limit is the maximum available to the USB port itself, the number and types of devices connected to it and and a negotiation that happens when you plug it in. If you plug your phone into an unpowered USB hub, you will likely get some something around 50 mA. This will charge a high capacity battery very slowly. It's fine for my bluetooth headset or powering a mouse but any modern phone will have issues with it. In fact an iPhone will say that it cannot charge from such a USB port but it will actually charge, just very slowly.

Even with all of this complexity, no matter what it's plugged into and how long it takes to charge, when your iPhone says it's fully charged, it's fully charged... except when it lies to you. Yes, the iPhone will lie to you about it how full the charge is. (I think that newer Android phones do too) When it reaches 100%, it's actually somewhat less (maybe around 95%) and will continue to charge although the number won't increase past 100%. What this does is it allows your phone to run for quite a bit of time and still be at 100%. That makes Apple look good that it has a phone that uses such little battery. Also, modern phones do some power cycling while plugged in and at 100%. They will let the battery drain a bit and then charge back up. This helps with the health of the battery but they don't want you to see your phone at 95% if it happens to be at the bottom of the cycle after being plugged in all night!

You will also find some differences between how laptop USB ports work for charging. An older PC would supply 250 mA on a USB port and when you put the laptop to sleep, that port would be shut off so you had to keep the computer awake to charge a device. My 7 year old Dell laptop does this. When the iPhone came out, Apple changed their USB ports to allow them to deliver more than the standard maximum of 250 mA so that it could charge the iPhone faster than other PCs could. They also would leave the USB port on if you put the computer to sleep while the phone was plugged into it. Most PC laptops have adopted this feature although some have designated a specific port that will be left on and if you plug into a different one, it won't charge while sleeping. My 2 year old HP laptop is like this.

One thing to be sure of, the wall charger that came with your device will likely charge your device at it's fastest rate and often faster than a laptop. One interesting thing that we found was that an iPad wall charger would charge our iPhones at a faster rate than the wall charger that came with the iPhone.

I haven't looked into the USB3 specs but I wouldn't be surprised if they have added these non-standard, high current draw, power features to USB3.

(posted on 13 Apr 2013)

I have been fascinated by the developing field of small, semi-autonomous DIY devices. I have an AR.Drone that, while being nominally remote-controlled, is able to maintain a stable altitude and position, even in light winds with no user input. It is really a user-directed autopilot.

One problem I have noticed with these systems is that they have limited ability to understand where they are and how external forces (and even their own motors) may change their location. Given the scale of these devices (less than a meter in any direction), it would be nice for the device to know where it is, down to an accuracy of centimeters.

My AR.Drone uses a combination of sonar to measure distance above the ground and a downward-facing camera to see small horizontal movements. This allows it to be amazingly accurate at maintaining a position as long as you stay within about 5 meters off the ground. Above 5 meters, it has a much harder time maintaining a consistent altitude and has a habit of quickly taking off into the sky once you reach the limits of sonar. Also, once you start to move, the horizontal location information is lost.

Adding GPS won’t help much because horizontal accuracy is unlikely to be better than 20 meters and vertical accuracy is even worse. (My bicycle rides often seem to be substantially under sea level, according to the GPS on my phone). GPS is great at generally locating where a device is. But, high precision is difficult and expensive to accomplish. Phones have very tiny accelerometers and magnetometers but just like GPS, these seem to be only useful for gross movements and are not very accurate.

What's needed to bridge the gap between GPS and sonar/visual cues is inertial navigation. This uses highly accurate linear and angular accelerometers in an integrative way to determine a position based on a previously known position. Before GPS, this was one of the ways that guidance systems were designed. Even now, many military systems still use inertial navigation, at least as a fallback, just in case GPS is unavailable. The problem has been that such systems have been large and heavy. It was very interesting to see this Wired article about the development of highly accurate but very tiny sensors that should allow for wider adoption of much more accurate inertial guidance in devices.

This will help build DIY autonomous devices that will be fun to work with. But, it has some other applications that I think are interesting, too. Incorporation of such a device will help create a much better record of my bicycle rides. While my ride distances are reasonably accurate, climbing and descending hills are not reported very accurately. This new technology could record these changes in elevation much more accurately and thus give a much better picture of energy use on a ride. Inertial navigation would be great for smartphone apps that keep track of where you are. There are lots of places in cities and even outdoors in more northerly mountainous or heavily treed areas where GPS signals are unavailable. Inertial navigation would help fill in the gaps and even provide higher accuracy. It would sometimes be great for my phone to know that I’m on the 12th floor, near the north side of the elevators of an office building.

In recent years, RSS seemed to have become stale, with little new developments around it. It’s been available on just about every blog and there seem to have been considerable consolidation around Google Reader as a consumption platform. There have been a few other tools, like FlipBoard that have done a good job of presenting data from RSS feeds into their systems. Even so, there has been little news and little that is really new around RSS.

The problem with RSS has been that there has not been a very good discover-and-follow mechanism that allows people to easily find and then start following the content from an RSS feed. There have been RSS feed icons and various buttons and tools that people have added to their blog so that you can easily follow that particular RSS feed using a specific tool or platform but nothing that is truly open and works with all platforms and is one-click easy-to-use. It has been so easy to Friend, Like, Follow or +1 things with newer tools that RSS has really taken a back seat.

Google’s announcement that they will shut down Google Reader on July 1, 2013 and the firestorm that followed shows us two things:

  1. Google is following the trend to leave behind the open web in favour of controlled information silos.
  2. Many people are resistant to this trend.

This suggests that there is an opening to push for more open, federated systems for distributing information. Maybe with some updated or new protocols to better compete with the silos that Google, Facebook, Twitter, etc. are trying to force us into.

I find it disconcerting how often I see yet another tech company creating a walled-garden, lock-in or a vertically integrated system that provides very little benefit to the Internet as a whole. They stand on the shoulders of many amazing people who selflessly provided groundbreaking technology for all to use. These new companies don't "pay it forward"; they merely look to extract value out of those earlier works.

The unfortunate thing is that by taking such a selfish approach, these new companies are likely hurting themselves as much as they are depriving the world of useful technology. Even in a company as successful as Twitter, I see that by initially keeping a strangle hold on the network and eventually stomping on the ecosystem developers built, and which ultimately helped them succeed, Twitter has severely limited the possibilities that their network might have developed into. I saw where Twitter was going when I developed Twemes.com in 2008 and ended up abandoning any further work in that ecosystem because I saw it as being a losing battle.

Truly groundbreaking and open technologies layered on the bedrock of the Internet have slowed to a trickle. The only real successes in recent times have been RSS and OAuth. The giant tech companies are trying to bury RSS. And, OAuth is still a limited, fledgling technology.

I hope to write more in this blog about some of the ideas that have been rattling around in my head for the last decade or so, specifically my ideas around adding a layer of Internet infrastructure that can help raise the lowest common denominator and that the next generation of technologies can be built on.

older blog items...