This post serves as a summary documentation for all work done over the second half of the semester on a final idea that Chris, Nouf and I worked on.
This is mostly links to documents and decks.
For my final, I decided to build an Adafruit wishlist collation system for ITP.
A lot of us at ITP require electronic components and modules, and the usual go-to place is for us is Adafruit. The unfortunate part is that Adafruit, despite being in New York, charges for shipping, unless the order amount is greater than $200. As a result, a lot of us email the student list to check if anyone else on the floor also needs parts. My hope with this project was to attempt to streamline this process.
This is what I’ve built so far:
If logged into Adafruit, one can create public wishlists. In the system I built, anyone wishing to buy starts by creating a public wishlist, pasting the URL of the wishlist along with their email address and an expiry date for the wishlist.
The service then scrapes the wishlist page for the user’s name, and overall cost of items on the wishlist. As soon as a list is added, an email is sent to the user to confirm the validity of the wishlist. Once the user confirms, the list is highlighted in green to signify that it’s confirmed. Others may also add to this list of wishlists, and once the overall cost of all confirmed wishlists are beyond 200 dollars, it sends an email to all the email addresses associated with that list.
Here’s a link to the code.
I used nedb to store the data since this program will probably have to deal with a relatively small amount of data. I used bootstrap, ejs for templating, cheerio for scraping, and sendmail to send emails for confirmations and notifications.
Here’s a link to the site. I might bring it down soon, and work on it more. The confirmation emails currently look super sketchy and
might will end up in the spam folder (just FYI). I’ll fix this soon.
Research notes for the past week are in this document:
Our current slide deck is accessible via the link below:
A few years ago, I read The Code Book by Simon Singh. At the end of the book, Singh provides a Cipher Challenge – 10 exercises to decode.
For this exercise, I revisit the first challenge – a basic substitution cipher.
It has been years since I looked at this book or the exercise, and I don’t remember how long it took me to decode it by hand back then. So I decided to try it again. It took me around 40 minutes to decipher it.
Now, I’d like to challenge myself to write an algorithm that can decipher this faster. At this stage I don’t know how that would be, but I have a few thoughts.
First, let me briefly explain how I decoded this by hand.
I knew this was a basic substitution cypher that did not purge the spaces between words (the book said so), therefore I began by looking at common patterns of small words. JPX was quite common. I then looked up the most common words in English. So I started with the assumption that J = T, P = H, X = E. I then found a JPXT in the text. It could only mean THEM or THEN. The JPXT was the start of a sentence, and it was followed by JPX. ‘THEN THE’ sounded more probably than ‘THEM THE’, so I also started assuming T = N. Similarly, I went through the other letters until I deciphered it enough to just guess the missing letters.
Now, on to writing an algorithm that does this by itself. Again, I don’t fully know how this would work, but I’m going to experiment with a genetic algorithm that knows a list of common words.
The algorithm will start by producing randomized ciphers, and attempting to decipher any text given to it.
The fitness score of the different deciphered mutations will likely be based on the occurrence of the common words. I don’t know if this will work out, but it’s a fun experiment nevertheless.
So far I’ve written a processing sketch that encodes and decodes phrases. I’ll likely build upon this.
Challenges I foresee:
1. I might need to look up a much larger list of common words.
2. The fitness scoring system should probably be smarter than what I currently have in mind.
So that’s the plan. Anything under this sentence will be updated to show results.
This week we watched the following videos for our discussion:
All three talks discuss the implications of technology that enables global peer to peer communication. Sherry Turkle, in her talk, explains her concern that we may forget how to communicate in the real world as a result of our technological advances. Douglas Rushkoff discusses media literacy, and Amber Case argues that newer forms of technology is just that -technology. It enables us to perform tasks more efficiently. Turkle, Rushkoff, and Case talk about the need for better understanding of our new media, and prescribe that we take control over how they affect us, as opposed to passively letting technology affect us.
Some questions that came to my mind while watching these videos were:
- The argument about not being present, while valid, is something that I’ve always wondered about. I agree that trying to be in the real world when other people are around is great, but maybe being always connected, and immediately responsive is the future of how we deal with relationships. It does sound frightening, but what if this is the case? Is it really that bad?
- I do agree that being more mindful and aware of the services we use is something important. However, this seems easier said that done. As technologists, we know these new media. Anyone not involved in this field is likely not going to care as much. Of course, we technologists could be the evangelists of this information, but getting people interested seems a far greater challenge.
- I’ve always believed that tools just make our intentions easier – from the internet to guns – what we do with them is a reflection of who we are. Guns might not be the trigger to kill someone, but it enables the action, makes it so simple to act on impulse. The same goes for how we communicate on the internet.
This week, we had to focus on the points below:
- Focus down your problem statement and anchor it to a physical location (remote is ok, but then you need to find a location close to you as well where that problem is also present and where you will conduct your research)
- Once you have a specific problem statement, refine a systems map, which will help you identify users (make it more concrete by anchoring it to the specific location)
- Identify a user or users (whom you can access) that you meet with in person. If the location is remote, again, identify a user in that space but then focus on the local user whom you can actually talk to.
- Build a research plan on how many users you would like to reach out to (I would encourage 3-5), what questions you would like to ask them and how you would want to engage with them.
This is still on-going, but at the time of posting this, here’s what we came up with:
(the live document with evolving changes is available for viewing here)
- BIG PROBLEM STATEMENT
The problem of inequality of food access affects economically challenged people all over the world.
How might we better redistribute wasted food from events, and local farms for low-income individuals in order to ensure access and education to healthy nutrition.
- SYSTEMS MAP
Local farmer in the area of the focus
- RESEARCH PLAN
Our plan is to have contact with individuals from the CSA groups, soup kitchens and food redistribution sectors. We have reached out to the following groups and are trying to either have an face-to-face interview or a conversation on the phone: https://docs.google.com/spreadsheets/d/1QqaiAaQ4fFr_-DNxNMvmM6vP_1rZbbh_JtMK-gsnZgQ/edit?ts=58e9da07#gid=0
We believe that the retailers are a great place to start to understand the system and where we can contribute to improve the current distribution.
We have decided to focus on tackling this problem in NYC and create a program that can be applied to other areas around the world
- What type of food to you distribute?
- What is your current plan for distribution? Daily activities? Employee workflow?
- What does the food supply chain look like? Where do you get your resources from? Where do they go? Are there companies or governing bodies in the middle? Who else do you work alongside?
- How many people do you reach on a daily/yearly basis?
- What geographical areas/sectors do you work in?
- How many employees do you have per sector to run smoothly?
- What’s working with your current food distribution plan? What are the a struggles?
- How do you connect with the individuals in the community?
- How are they aware of your resource?
- Do you collect feedback from the community about your resources?
- What factors determine what resources you receive, where you receive from, and who to distribute to?
Interview with Vijay Mathew (imports fruits from Europe, South America, US, and Australia into India)
- Currently, globally, smaller farms are increasingly joining larger agriculture consortiums
- These consortium either buy the land from the farmers wholly (with a potential profit-share), OR have an arrangement where the farmers contributes their produce to the consortium that then re-brands, markets and sells the produce.
- In Belgium, for example, Belorta is the consortium that Mathew buys from.
- Belorta has a bidding system that allows buyers (typically wholesalers) to pick produce from particular farm lots (see below for ‘Lot Number’).
- In Chile, Verfrut is a major fruit producing company. Mathew claims they hold 75% of the fruit market share in Chile, and in addition control a lot of the internal supply chain (see below for typical supply chain) as well.
- In Italy, FROM is an apple/fruit consortium that is associated with a few individual companies like Val Venosta, that exports to the rest of Europe.
- In the US, Evans Fruit started as a family-owned farm, and now operates like a consortium of smaller farms.
Current Supply Chain:
Farmers (small farms) → Consortium → Logistics company → Pest Test (pre-export) → Port (export) → ship → port (import) → Food Safety inspection → Certificate authenticity test → Market → Storage → Retailer → Consumer
Farm Lot Number:
Farm produce usually has a unique ID that includes the lot ID and the grower ID. This code is pasted on every box of fruit, and this remains until it’s sent to the retailer.
Harvested products should be identified according to
(1) the date of harvest
(2) the particular crop harvested
(3) the field where the crop was grown
Follow up questions
How long does it take for the entire supply chain process?
We’re updating discussions here on google docs. We will paste it on our blogs in a more presentable manner.