Using NFTs for charitable contributions

April 7, 2021 at 2:33 am (Uncategorized) (, , )

People often donate money to charities. If you donate enough they will sometimes put your name in their newsletter or on their website. This recognition usually only lasts a brief period of time or, even if it is printed, gets lost and forgotten. What if you could collect proof of all your donations in one spot, regardless of what charity you donated to or when you donated it. What if you could have a single place that you could show people that listed all your good donations and who you support? With NFTs you can!

When you donate to a charity, they create an NFT showing you donated, if it was earmarked for a specific purpose, what you donated (cash or goods/services), and how much you donated (you could choose if it just said you donated, or if it gave a range of donation amounts (ie, between 100 and 500 dollars, between 500-1000 dollars), or if it gave the exact amount you donated (ie $420.69), they then send this NFT to you.

Charities such as the Red Cross often have disasters that require immediate aid, then they have to fund-raise after the fact to refill their funds. With NFTs you could donate money to a specific disaster, they could recognize it and apply it to money they may have already spent for that disaster.

Charities such as the United Way take money in and redirect it to other charities. This could be done with NFTs as well where you donate to the United Way, they create the NFT, then send the money to the charity you specified, even if that charity didn’t know how to use NFTs.

You could give money in memory of or in honor of another person and get an NFT from that charity saying that. You might then want to transfer that NFT to the person you were honoring. “PERSON1 gave a donation to CHARITY in memory of PERSON2”

You could also give on behalf of someone “PERSON1 gave a donation to CHARITY on behalf of PERSON2 in memory of PERSON3” as a concrete example “Joe gave a donation to Save the Quadrupeds on behalf of Fluffy and in memory of Fluffy’s loving guardian Jasmine”.

For periodic donations, the charity can send an NFT for each donation. They could also (either instead, or in addition) send an NFT when you start donating then send another NFT when you stop donating. If you change your donation amount or any other field, they could either send a “stop donating NFT” then send a new “start donating” NFT with the new amount or they could send a “donation change” NFT. A periodic donation NFT, like all others, could hide any field you don’t want publicly known.

Example: Joe donates $20 a month to “Save the Quadrupeds” and gets a “start donation” NFT that indicates “Joe started donating $20 a month to Save the Quadrupeds!” He then changes it to $15 semi-monthly and a new NFT get sent that indicates “Joe started changed his donation to Save the Quadrupeds to $15 semi-monthly”. Then, at some point in the future, if Joe stopped the periodic donations, an NFT would be sent saying “Joe has stopped donating to Save the Quadrupeds”.

People often want to let others know what causes are important to them and to show off who they donate to (and possibly how much they donate). Sometimes charities will have a way for you to tweet or post to facebook about your donations, but that ends up being quickly lost in the hubbub of your feed. You could log your donations on your social media profile but it is easy to forget, and tedious to update, especially if you are active on multiple social media platforms. With NFTs this can be automatic, you could record your NFT address(es) with your social media platform and it could automatically display all the NFTs associated with that address. There is nothing for you to forget to update, everything would be automatic.

Having your donations recorded as NFT’s can help at tax time too. If all your charitable contribution NFTs are stored in address(es) that different than the ones that your non-charitable contribution NFTs, or if the NFTs identify the charity in a way that signifies if it is the type of charity who’s donation is tax advantaged then your tax software could import it directly and use it to prepare your tax return.

There are websites where you can set up memory pages, primarily this is targeted towards memorializing people who have died, but there is no requirement that they are dead. ( An example of this is ). You could incorporate a giving campaign into this by having an address that NFT’s could be sent to and they would automatically show up on the person’s page. (have to be careful about spam, hate speech, etc. This could be done by letting the page maintainer hide offensive/unwanted NFTs, or making them approve the NFT before it shows up, or by only showing NFTs from a list of approved charities, or sending unwanted NFTs to a different account.)

If you are automatically displaying information about the NFTs in an address but don’t have control over who sends them, there exists the possibility for people to send NFTs that you haven’t requested. This could result in NFT appearing at the address that are spam, offensive, illegal, harassing, or otherwise unwanted. There are several ways to mitigate this issue:

  • You could have a way to approve individual NFTs
  • you could send unwanted NFTs to a different address
  • You could have an “include list” and only NFTs, people/organizations, or content/concepts relating to the NFT you have on the include list would show for the address (you would be able to add or remove from the include list)
  • You could have an “exclude list” and NFTs, people/organizations, or content/concepts relating to the NFT you have on the exclude list would not show for the address (you would be able to add or remove from the include list)
  • The organization or site/application displaying the NFT’s to humans or other programs/processes could maintain one or more include or exclude list that applies, this could be automatic, or you could decide which include/exclude lists to use (for example there may be separate lists for OFAC entities, offensive speech, etc that you could opt in to or opt out of)
  • You could delegate the decision about which NFTs to show to a third party that maintains it’s own criteria for determining what to include or exclude. This delegation could be recorded on an external site or included in data associated with the address, such as in another NFT.
  • You could create one or more NFTs that express your wishes about what should be included in or excluded from the display. These NFTs could be modified or removed whenever you want.

There is no reason to limit this to charities or non-profits, any person or organization could set this up for themselves, or on behalf of another person or organization.

  • you could have something similar to gofundme but with donations acknowledge by an NFT instead of, or in addition to, current acknowledgements.
  • you could have a process where people set up a donation page and accept donations directly, without an intermediary like gofundme.
  • you could back a new product or project, in a way similar to kickstarter, but acknowledge funding by an NFT instead of, or in addition to, current acknowledgements
  • a company could allow you to back a new product or project through their own website or technology, like kickstarter, but just for that company (or even part of a company)
  • you could support a local (or not local) business by donating money to get them through a tough time.
  • you could fund a startup and receive tokens acknowledging support (these tokens may, or may not, also represent ownership in the company or shares)
  • you could fund a creative project (such as a movie, book, sculpture, photograph(s), etc) and receive tokens acknowledging support. These tokens may, or may not also represent ownership in project or entitle you to any revenue or other benefits resulting from the project.
  • you could have one-time or periodic donations to an artist or creator who you are a fan of, similar to what Patreon does. The person/organization receiving it could send the NFT, or, if there is an intermediary site (such as Patreon) that site could send the NFT on the person/organization behalf.
  • You could have NFT’s for purchases, every time you purchased something you may be given an option to receive an NFT stating that. This could be done instead of, or in addition to, any current purchase recognition a company has (such as posting to facebook) and could be decided at a per-purchase level or at the store’s account level. This could go to the same address or to a different address as your donations.

All of these possibilities are referred to as donating or giving or a donation. You could have the same address to receive all of these NFTs, or you could have a different address for each, or group them into addresses in any manner you desire.

There is also no reason to limit this to people doing the giving, organizations could also give, as could animals, pets or even inanimate objects. Likewise “money” should be read as anything of monetary or sentimental value including, but not limited to cash, stocks, goods, services, publicity, or other items).

There are several ways the acknowledgement of a donation in an NFT could be formated/structured.

  • entirely free form (“Yo! this dude John just donated some scratch to us.”)
  • Free text that has enough rules to be machine parsable
  • text that follows one of multiple templates (“PERSON1( and PERSON1A)* gave a donation to CHARITY in (memory|honor) of PERSON2( and PERSON1A)*” or “PERSON donated $DOLLARS to CHARITY)”
  • as free text with a controlled vocabulary for certain parts of the information (to acknowledge a donation you must use “donated” or “gave a donation”, if it was for another person you must use “in memory of” or “in honor of” or “out of respect for”)
  • As structured text (such as yaml, xml, json, protocol buffers, etc)
  • As structured text (such as yaml, xml, json, protocol buffers, etc) with an arbitrary schema
  • As structured text with a specific structure using a specific schema
  • as an image, video, 3d model, audio or any other digital object (a digital object is anything that can be represented as a byte stream)

You could make it so it allowed one or more of the above to be used, you could have for example, and entirely free form text, plus structured text, plus an image.

In addition to the above, you could also allow the sender to include a personalized message (like “You rock dad!”), include a link or reference to an external location (examples: any URN such as URL, URI, http link, mailto email address, physical address, geographic coordinates, reference to published material (book, magazine, newspaper, poster, photograph, etc) or a particular page in a publication, place name, etc) or an image, video, 3d model, or any other digital object.

In addition to the above, you could have information about the charity/organization this could be included in the NFT directly or known by looking at who controls the smart contract that issued the NFT.

In addition to the above, you could have information about the person or organization that donated. This might be their name, image or other digital object, contact information, relationship to the honoree, identifier for that person (unique or not) link or other reference to them.

As an illustrative example you could have:

<nft name="xyz" type="donation">
  <name>Joe Smith</name>
  <location>Anytown, USA</location>
  <contact type="qwert">@jsmith007</contact>
  <name>Save the Quadrupeds</name>
  <description>Dedicated to saving all quadrupeds, everywhere.</description>
   <name>Fluffy Smith</name>
   <digitalObject type="audio" name="Fluffy barking">ENCODEDBYTESTREAM</digitalObject>
 <honoree type="memoryof">
  <name>Jasmine Smith</name>
  <relationship>loving guardian</relationship>
 <quote>She always remembered to feed me</quote>
 <textAcknowlegement>Joe Smith gave a donation to Save the Quadrupeds on behalf of Fluffy and in memory of Fluffy's loving guardian Jasmine</textAcknowlegement>

Permalink Leave a Comment

Using NFTs for sponsorships

April 4, 2021 at 10:14 pm (computers) (, )

Large companies often sponsor well-known individuals for long periods of time for a significant amount of money. Why is this? because sponsorship is hard to organize, it takes time, and often includes contract negotiation. What if you could make sponsorship so easy that you could do it in just a flew clicks? What if you, the sponsor, could get your sponsorship recorded in the blockchain as a lasting reminder of what you did? If so, you could sponsor for shorter time periods and for less money. What if you could sponsor your favorite artist for a day, or even an hour? This is pretty much just donating money to them, but with a permanent record and bragging rights of what you did. A fan probably couldn’t sponsor their favorite music group’s tour, but they could sponsor a specific show, or a meaningful day. What if you could sponsor a day of your favorite influencer’s travels or a day of your favorite painters’ time? Do you want to sponsor a specific blog post of your favorite blogger? With Non Fungible Tokens (NFTs), now you can! You could even give these sponsorships to friends for birthdays/graduations/anniversaries/etc, imagine sponsoring your friends favorite singer for their birthday and giving them the token that proves it.

You, the sponsor get a permanent record of your sponsorship with an NFT (that is possibly non-transferable) you could show off how often you sponsored the person, or how many people you have sponsored. This becomes a brag wall of what you have done.

NFT Sponsorships don’t have to be only for sponsoring people or groups, you could also sponsor specific events, actions or to pay for things to happen

  • be a sponsor of a conference or convention
  • sponsor the planting of one or more trees or other plants (the NFT could include where the thing was planted)
  • sponsor the scanning of a book, movie, or artifact (The NFT could include which item you sponsored)
  • sponsor the restoration or conservation of a book, movie, artifact, building, or item of historical interest
  • sponsor a building or the renovation or improvements of a building (or part of a building) Many organizations allow for benefactors to have this type of sponsorship. Often a plaque listing the names of sponsors/contributors is erected. This is the NFT equivalent of that plaque.
  • sponsor an animal at a zoo or animal park

Should you be able to sell a NFT sponsorship that you have bought? In other words, should there be a secondary market for sponsorships. In some cases you may not want a secondary market, but in other cases it is beneficial, and, in yet other cases, you may want to allow resale but tightly control who it gets resold to, so all options should be available (this is not to say every NFT platform must allow all types of sponsorship, there could easily be an NFT platform that only allowed non-resellable NFT sponsorships, another NFT platform that only allowed resellable NFT sponsorships, and a third that allowed non-resellable, resellable, and permissioned-resellable NFT sponsorships and yet others that provide different combinations).The case for non-resellable NFTs.

The case for non-resellable NFTs.

In some cases, the parties involved in the original NFT sponsorship want to make a firm commitment to each other. This could also be useful when the NFT creator is very sensitive about who sponsors them.

The case for permissioned-resellable NFTs.

Some times who sponsors you is just as important as how much money you get from the sponsorship. If you have a brand that carefully curates who it associates with then you might not want to allow just anyone to sponsor you, and likewise, you wouldn’t want to have sponsorship of your brand be sold on a secondary market to someone who would tarnish your brand. This is like when large brand advertisers refuse to let their ads run on certain websites or when websites don’t allow certain brands to advertise on the site. The transfer of the NFT sponsorship could only occur if all parties involved in the transaction approve of it.

Another type of permissioning could be time based, transfers are allowed until a certain date (or block height) then disallowed after that. This is particularly useful for sponsoring events that happen on a certain day, you could allow transfers up until the actual event (or even cut off the transfers some time before the event so you could finalize the program), then disallow it after. This gives a permanent record of who sponsored the event without the possibility of ‘rewriting history’.

The case for resellable NFTs.

This is an interesting option because it allows a robust secondary market in sponsorship NFTs. This is conceptually similar to how the stock market operates today. A company creates and sells shares and these shares can be resold by whomever buys them. The company doesn’t get any money on the resale of the shares but it still benefits from allowing the resale because it encourages early investors (who buy low and sell high) and later investors (who buy high and hope to sell higher). Unlike with stocks, with NFTs you could enforce the original creator gets a percentage of any resale.

This type of NFT allows for effectively venture capital in sponsorships. You could have investors (or venture sponsors) buying a wide variety of sponsorships early, before success of whatever was being sponsored was assured. That venture sponsor could then sell the sponsorships with successful outcomes (whatever the definition of success happens to be) at a profit, while selling the unsuccessful (or even less successful) at a loss, if they can sell them at all.

Why would someone buy a NFT sponsorship on the secondary market (generally for more money) instead of just buying the NFT sponsorship directly from the creator (generally for less money)? Mostly because of risk. If they sponsor, for instance, a book expecting to get publicity from it in return and the book never gets finished they don’t get value for what they payed. If however some venture sponsor bought the sponsorship early and took the risk of the book not being written, they could profit and the final sponsor would know the value of the sponsorship they are buying (they always know the price, they don’t know the value until after the book is written and published and they see how it is received). There is also brand risk, if a brand bought a sponsorship of the book early then the book ended up containing offensive content, their brand could be tarnished by ever having been associated with it.

Why would someone create and sell an NFT sponsorship opportunity and allow it to be resold? Selling an NFT sponsorship early for resale will probably result in less money for the original seller. That seller benefits however because they get the money earlier, before the work is done and can use the money to complete the work. Again, using an author as an example, if the author wants to write a book, how does he survive while it is being written? Often authors who are not well known will need to have another job that pays the bills. That leaves less time to write the book. Selling an early NFT sponsorship can provide enough money for them to live and write full time.

I’ve used books as an example because it is straightforward to understand, but this concept is in no way limited to books, it equally applies to all the sponsorship options.

Notes on permissioned resellable NFT sponsorships

  • when a sale is proposed, the generator of the NFT sponsorship (the person or entitie being sponsored must approve
  • this approval could be a ‘hard’ approval where the NFT generator has to accept or reject the transfer otherwise the transfer stays pending unless canceled by the current owner
  • this approval could be a ‘soft’ approval where NFT generator has a certain amount of time to accept or reject the transfer and if neither option is selected in the given time then the default action happens
  • the default action could be to accept the transfer
  • the default action could be to reject the transfer

Permalink Leave a Comment

NFT Art thoughts

April 4, 2021 at 12:27 am (Uncategorized) (, )

Recently NFT (Non Fungible Token) based art (and other copyrighted works of authorship) has made the news and I must say, when someone buys NFT art, I’m not sure what they bought besides the token itself. Non Fungible Tokens are easy to make, so the value isn’t purely in the existence of the token, so what was sold? What rights does the new owner have?

Generally, the art you make is copyright to you, and the NFT sale isn’t selling the copyright (Mintable does allow, but not require, transfer of the copyright as part of the sale). So you don’t get the copyright. You also don’t get a physical copy of whatever the NFT represents (again, there are exceptions). Likewise you don’t get any licensing rights. You don’t get any standard ownership rights in the art, so I conclude you don’t actually own the artwork. You do own the right to say you own the NFT version of the artwork, and maybe you own the right to say you own the artwork (even though you don’t actually own it). Is that worth something? I’m unconvinced. In the future, the rules of what you own will get worked out more clearly (perhaps by the courts), and, once those rules are clear, it will become easier to assign value to the NFTs, but until then, it is hard to see real value.

et’s take a specific recent example of an NFT sale. On March 22, 2021, Jack Dorsey (the founder of Twitter) sold his first tweet as an NFT for over 2.9 million dollars. What does the buyer own? Can he claim the tweet is his? (No, it is still Jack Dorsey’s.) Can he sent a DMCA request to Twitter and force them to take it down? (No, he doesn’t own the copyright.) Can he sue Jack and make him remove it himself? I doubt it, but if he were successful, that would show real ownership. An owner gets to decide how and where his possessions are displayed.

When you buy a physical painting, you don’t get copyright of it either, the creator can still make copies and sell those too. But you do get to decide how and where (and even if) it gets displayed. In some countries the creator may have some rights to veto your choice (no you can’t allow my painting to be displayed at $(museum of something I strongly object to) ), but they also can’t force you to display it somewhere. That is crucial to ownership and it doesn’t seem to apply to NFT creations, without that I don’t see a transfer of ownership to have occurred.

Just because I don’t fully understand what is being sold doesn’t mean I won’t try and get some first hand experience though. Maybe I’ll learn something. I have created an NFT for sale on Mintable to try and understand the process and the value proposition. Who knows, maybe someone will like it enough to buy it.

Aside from this current infatuation with NFT art, I see a huge potential for NFTs and I’ll talk about some of that potential in the future. NFT’s are very similar to “colored coins” but a much cleaner implementation. Colored coins were a way to encode information into a cryptocoin (or transaction) so that it could represent something else. Usually what it represented was ownership of a physical thing.

Imagine if all the property records were stored on a blockchain as NFT’s it would be trivial to look up who owned a piece of property and if anyone else had any rights to it (such as a mortgage, lien, or mineral rights) This would make it so much easier than it is today to find this information and it would make title searches be trivial. It would greatly improve the current paper based process. This type of NFT would represent true ownership, not the weird thing art NFTs call ownership.

It is also a great way to record the sale of certain rights that are done with one-off contracts today. Want to sell the right to license a photo of yours? create an NFT representing that right and sell it. Want the right to just be the right to license a photo for advertising, or just for use on calendars? you can make the rights you sell as narrow or broad as you want. That would be a useful NFT.

Permalink Leave a Comment

Shenandoah and Potomac Streets, Harpers Ferry, Then and Now

October 2, 2020 at 12:01 am (History) (, , , , )

Starting in 1933 the Historic American Buildings Survey started photographing important old buildings. I’m not sure when they got to Harpers Ferry West Virginia, but it was before the buildings there were restored. I found some photos at the Library of Congress from there and decided to do a “then and now” comparison for a couple.

Shenandoah and Potomac Streets, Harpers Ferry, WV, on the left, before restoration, on the right, in 2020

Here is the building on the corner of Shenandoah Street (on the left) and Potomac Street (on the right), at first it looks pretty similar, chimneys, dormers, but you quickly notice that this building is very different than the old one.

Lets start at the Potomac St side and work our way around. The top of the chimney is very different, with the old building having a tapered top. Also, the windows at the attic level on the side have suddenly become the window. One disappeared. While we are on the topic of side windows, look how in the old picture the brick top of the window was arched. Take a look at the extension on the back of the building. In the old picture it isn’t very deep, only enough for one window and the brick work is a bit different between it and the main part of the building. Now look at the new photo, the extension is easily twice as deep, and it got two chimneys of its own. Making our way down to the foundation, the new photo has a nice stone foundation, but the old photo has bricks right to ground level. What happened there?

Lets take a close look at the front of the building, starting at the roof line. That is a nice cornice there on the old building, but it is nowhere to be found on the new on. Then windows, old photo: three across, four large panes of glass, nice brick arch at the top of each window. New photo: four across, twelve panes of glass each, flat top. Wow, that’s a big difference.

There also was a nice retail front with large display windows and a corner door that is entirely gone, it is now a flat front with a small door and a few small windows.

Summary: This “restored” building looks vaguely like the old one, but it is entirely different, and, missing so many details that it is not nearly as interesting.

Permalink Leave a Comment

Masonic Hall, Harpers Ferry, then and now

September 30, 2020 at 12:10 pm (History) (, , , , )

I was poking around the Library of Congress website the other day and ran across some photos from Harpers Ferry, WV in the Historic American Buildings Survey collection. It isn’t clear when these photos were taken, just that it was after 1933, but before the current restoration. I think it is interesting to look at them and see what they look like now and how different that is from before they were restored.

Masonic Hall on Shenandoah Street in Harpers Ferry West Virginia. On the left, before restoration, on the right in the Fall of 2020.

This photo is a comparison of the Masonic Hall building on Shenandoah Street. It is part of what the National Park Service maintains and is currently used to house the bathrooms. I didn’t quite get the perspective right, I should have been back a little further and a bit to the right. Interestingly, you can see a fire hydrant in the “Then” photo and I believe there is still one in the same spot.

Looking closely you can start to see differences. Lets start from the top. The chimneys are a little taller now and has a decorative brick line near its top. It seems odd they would do this since I doubt they have any plans to ever use the chimneys again.

The top floor looks very similar, right down to the double top of the drainspout in the center of the building and the third window from the right having a different kind of shutter on it.

Moving on to the middle floor, the iron railing on the balcony stands out, and from the looks of it I think it is probably the exact same railing in both pictures. The balcony supports also look the same, but I notice in the 2020 picture there are two metal ‘S’ shapes on the wall directly under it that weren’t there in the before picture. The windows are also very similar, with the same number of panes of glass in them. The door has a slightly different transom above it, but other than that, the door and the door frame look right.

The first floor is where the real differences are, and they jump right out at you. They have removed a door and changed the windows quite a bit. The stucco treatment on the first floor also looks very different from the other floors.

The building to the right is interesting to look at. Since it is just a shell in the before picture, it is hard to say how much of it is true to the original in the 2020 picture.

The “Then” photo is available on the Library of Congress website:

Historic American Buildings Survey, Creator. Masonic Hall, Shenandoah Street, Harpers Ferry, Jefferson County, WV. Harpers Ferry Jefferson County West Virginia, 1933. Documentation Compiled After. Photograph.

The 2020 photo was taken on September 28, 2020 by G. Edward Johnson

Permalink Leave a Comment

Never in the history of the world

March 23, 2011 at 2:15 pm (Uncategorized)

I found a great quote today from the chairman of the Egyptian stock exchange, Mohamed Abdel Salam said (as paraphrased in the article)  “Never in the history of Egypt or the world, however, has he seen a stock market closed for such a long period”  which closed on January 27th and just re-opened today, so just under two months.

I’m sure this is an argumentative fallacy, but I’m not sure the type.  Read it closely, he makes it seem unprecedented (Never in the history of the world) then immediately constrains it to just what he has seen (I don’t know if he means during his lifetime or where he was physically present).  Makes you think that a stock exchange has never closed for that long right?  Or, at least, not a major one.  He might be technically right that he has never seen one closed that long, but certainly it has happened.

At the start of World War I, the New York Stock Exchange closed for four and a half months, more than twice as long as the Egyptian one was closed.  One would hope that he, as chairman of the exchange (a temporary position for him, his long-term position is chairman of Ministry for Clearing and Settlement) would know this, even if he hadn’t seen it himself.

Permalink Leave a Comment

Types of photomosaics

March 8, 2011 at 10:02 pm (computers, photography)

I have come up with three variations on the photomosaic, each has its own strengths and weaknesses, but keeping them in mind will let you pick the most appropriate one for the job.  If you haven’t read my prior post on photomosaic tips, you might want to read it too.

Photo mosaic of Yellowstone Lower Falls created with hundreds of other pictures taken in Yellowstone National Park

Classic Photo mosaics

  • contain lots of small pictures
  • only a little of the original picture shows through (30% or less)
  • have to get very close to see the contents of the individual tiles
  • good when:
    • you have lots of pictures
    • Will be viewed as a large image, such as printed out at 16×20 or larger


Larger tiles are easier to see when the final images is small. Lots of the original image shows through to compensate.

Chunky Mosaics

  • Fewer, larger pictures
  • lots of the original picture shows through (60% or so)
  • can see the individual images even from a distance
  • need to be careful not to have images that are too similar.
  • good when:
    • you don’t have many pictures to use as tiles
    • Will be viewed as a small image, such as online


The central focus of this mosaic (a bison) isn't made of tiled images, the baground is.

Subject Focus

  • Fewer, larger pictures
  • main object in the picture is solid, not a mosaic
  • only a little of the original picture shows through (30% or less)
  • The background tiles are an important part of the full image
  • Can be used to show history of the objects in the foreground, for instance, a newlywed couple with the background being pictures of them together before they got married.
  • need lots of feathering so the main image fades out slowly
  • good when:
    • you don’t have many pictures to use as tiles
    • the smaller images don’t match the colors of the subject very well
    • you want the focus to be on the subject, the tiled images fill in the backstory.

Subject focus mosaics take a bit more work than the other ones. There is at least one program that can make the center of the picture more opaque than the edges, but if your subject isn’t in the exact center or is irregularly shaped it might not work. I created this picture of a bison by first making a chunky photomosaic with only 30% of the original picture showing through. I then opened the original picture in an image editing program (I use the gimp) and did a freehand select of the bison and set the “Feather Edges” option to 100 pixels. I then pasted it into the mosaic and manually aligned it (it doesn’t have to be exact). Since I wanted the fade to be more gradual on the bison’s back I selected another region from the original using the same options, but when I pasted it into the mosaic I set the opacity at 66.6%.

Permalink 1 Comment

Photo mosaic tips

March 8, 2011 at 4:33 am (computers, photography)

Photo mosaic of Yellowstone Lower Falls created with hundreds of other pictures taken in Yellowstone National Park

Photo mosaics are impressive to look at and are easy to make.  Programs automate the generation of them, all you have to do is provide lots of source images.  If you want to spend a bit of time you can have even better results, here are some tips for generating great photomosaics.  These pictures are also called PhotoTile pictures but that term seems to be falling out of use.

I use metapixel under linux to make my photomosaics, it does a great job (here’s a nice overview of how to use it).  If you are more of a Mac or Windows person, there are photomosaic programs for those operating systems too, for example Andrea Mosaic for Windows and Mac or MacOSaiX for Mac. You can also find online tools to make mosaics.

I have a post about several different types of photomosaics you can make if you are interested.

For the main picture (the one that will be made into the mosaic).
It is best to have a simple picture with a large object in the foreground. Small details or a cluttered background will either get lost or make the picture too messy.  Examples of good pictures would be a head and shoulders portrait or a single object like your house or a car that takes up most of the picture.  Examples of pictures that probably won’t turn out are your kids playing in a field or a picture of a forest.

Have large sections of distinct colors.  If your photo is mostly of shades of a single color you will use only a small number of the available images and there will be lots of repetition of pictures.  You want to have lots of contrast between the subject and the background. A portrait of a light-skinned person against a beige wall wearing a white shirt will not work well.  If you are using a picture of a person, you can easily pick a shirt that stands out against the background.

The main picture doesn’t have to be very high resolution, feel free to crop it tightly to get the overall look you want.  The example pictures in this post were cropped from much larger pictures then resized for viewing on a computer monitor.

Have a theme
Photomosaics work best when there is a strong theme and the small pictures tie in to the main one.  For example, you might have the main picture be of a place you went to on vacation.  Make all the small pictures related to that place, or that vacation (don’t have random christmas pictures from 10 years earlier mixed in).  If you are making a mosaic of a city, pick something that is large and easily recognizable.

Have lots of pictures
You can make a mosaic with just a few dozen pictures, but the more pictures you have, the better the result.  Fortunately, with digital cameras it is easy to take lots of pictures.  The mosaics also look good even when you have similar (but not identical) pictures, for instance having several pictures of the same street scene but the cars and people are in different places can still look good.

I’d recommend having hundreds of pictures, but thousands would be even better. (10’s of thousands would be better still, but you may not have that many, particularly if you are sticking to a single theme.)

You do need to make sure all the pictures are appropriate, people who look closely at the image will be able to see the individual pictures, so if you aren’t comfortable showing someone a picture, don’t include it in the mosaic.

A photo-mosaic of Big Ben, created using hundreds of photos taken in the UK.

Test and refine
You can dump all your pictures into the program and get something done in 10 minutes or so, however, with a bit of effort and experimentation you can get better results.  Generate a picture with what you have, then look at it closely and see what you do and don’t like about it.  How much repetition is there? Is there a good variety of colors?  If it is of a person, can you see the details of the face?  Based on what you find, you can play around with different size tiles, decide what kind of background you want, and decide how big the foreground object should be.  You can also see if there are any types of pictures that there aren’t enough of and you can take more pictures.

Pick a tile size
Larger photo tiles make it easier to see the individual pictures but they make the overall image blockier and harder to make out. Pick the individual tile size based on the final output size, resolution of the picture, and expected viewing distance.  I made a mosaic that I printed 20 inches by 30 inches at a resolution of 300 dpi, I made the individual tiles 150 pixels square so that the individual tiles would be half an inch.  From 15 feet away or further it looked great, you could easily see the picture.  If I were going to put it in a room that made it hard to stand that far away, I could have made them 100 pixels square (a third of an inch).  If your end product is going to be viewed on a computer monitor you may want even smaller tiles, the example photos in this post have 33×33 pixel tiles. Mosaic programs can take advantage of changes in color within a picture so it isn’t exactly like having really big pixels, but there is a limit to how well that will work so don’t count on it too much.

If you let the main image show through a little bit the result will be much, much better.  I find about 30% helps alot without making it too obvious, but play around a bit and see what you like.  You can usually adjust this in the program, but if not you can do it in the gimp afterwards.  Look at how frequently the pictures can repeat too.  It would be nice if they never did, but it is unlikely to have enough pictures to do that. You want to repeat the pictures as infrequently as possible while still having it look good.  Start with a repeat of 5 then try 10, 15, etc.

About the images:

For the yellowstone image, I took a photo of Yellowstone falls and the valley and cropped it very tightly around the waterfall.  This picture has a good balance of colors, the blue sky, white water, tan rocks, green grass, and dark trees.  If you look at the full size image you can see lots of the tiles in the sky have blue water and open sky in them.  The tan rocks got filled in with pictures of elk and thermal pools on bare rock, the green grass got flower images and the dark green trees area got nightime pictures and pictures with lots of shadow areas.  The white waterfall got lots of images with geysers erupting.  I had about 450 pictures and couldn’t go back and take more.  I also tried making a mosaic of a geyser but that looked more like a white blob on a blue background so I didn’t use it.

The original image of yellowstone falls, before cropping and turning into a mosaic.

For Big Ben I used pictures from my trip to Britain.  In the original picture the clock was just a small feature so I really had to crop to make it recognizable.  There isn’t as much of a variety of colors in the picture as I would like.  I tried 5 pictures before settling on this one.  One of my earlier choices was a picture that included an iconic red telephone booth, however, I didn’t have enough pictures with red in them so it turned out pretty grey.  Another choice that didn’t work out was Windsor Castle, when turned into a mosaic the castle walls were just a blob and weren’t very recognizable.

The original image that I used for the photomosaic of big ben.

Permalink 1 Comment

The enron corpus

March 5, 2011 at 12:16 pm (nlp)

One of the issues that people who do nlp and machine learning struggle with is getting access to large quantities of data relevant to the task they are doing. (The other issue is getting that data classified so you can use it for training). If you are interested in doing nlp, machine learning, or sentiment analysis on emails, you should know about the Enron corpus.

As part of the Enron investigation, the federal government has over 5 million emails from enron.  This database was purchased for $10,000 by Andrew McCallum, a computer scientist at the University of Massachusetts, Amherst and made freely available.  There are several versions available, you can get the raw data or as a normalized mysql database.  A small portion of it has even been annotated.

Permalink Leave a Comment

Network buffers are too large

February 13, 2011 at 1:16 pm (computers)

I was reading a blog post on bufferbloat a while ago. Pretty much every device your packets go through has a buffer, and with RAM being cheap, most have very large buffers.  This is great if you have one big data stream or if you are on a super fast network (1GE or 10GE) but if you are on a slow network like wireless or broadband this can be a real problem, particularly if you are trying to do more than one thing at  a time. (like surf the web and downloading something over bittorrent).

Based on what I read I decided to try out some of his suggestions on a laptop connected via wireless.  When streaming a huge file,  latency (as measured by ping time) was really high, reducing the txqueuelen helped a lot (I forget how much).  Neither my laptop nor my desktop let me adjust the hardware ethernet ring buffer (ethtool -g interfacename).

At my house, most of my bits go to the internet, they don’t stay within the house so buffering is a problem there as well.  I have set the txqueuelen to 2 (from 1000) to reduce buffering ifconfig eth0 txqueuelen 2

I see a lot on the net about how to increase your buffer size and why you would want to do that, but it is all assuming you have a super high speed network or were written years ago, it really doesn’t apply if you are connecting via wireless or a slow (sub 100MB/S) internet connection.

Permalink Leave a Comment

Next page »