It Wasn’t All Intuitive

Posted on

Today I started volunteering in a local elementary school, helping students with disabilities. I know, you can’t learn that much in 90 minutes, but I was definitely surprised by a few things on day 1. Most pertinent:

It wasn’t all intuitive. I was continually surprised by the things that we have to be taught, that I’d assumed were just ideas we picked up by intuition. First and foremost: Fact vs opinion. I forgot that schools have formal exercises for this, though given our current political discourse, I’m really glad we do train children in this distinction.

Other interesting takeaways:

  • Technology invades the classroom:
    • Students are scored in real-time by their teachers using a mobile app, and analysis of their behavior and their education is immediately available to parents. Real-time report cards are here.
    • E-libraries: Students in the classroom I was working in read from a library of interactive e-books tailored to their reading level. I think these technologies are great for making up-to-date books more accessible/available, and their interactive nature makes them great educational tools. Kids listen to the book as they read. Words are highlighted in-sync. If a student doesn’t know a word, they can highlight it for a definition and pronunciation. I don’t know if the presentation of the books is that effective for improving literacy; there are probably only 10-15 words per page. I do think it’s a good start though.
  • Odd relics:
    • Even as tech invades, some things just won’t go away: Pencils and red pens. Notebooks, and letters to the teacher as exercises. Things that I remember from my education, and that I would bet my parents and grandparents remember, are still very-much a part of the curriculum.

“Your Name” Is a Film Good Enough to Watch with Subtitles

Posted on

Some context about me: I despise subtitles. I find they get in the way of my appreciation of almost any film or TV show, and thus I avoid them as often as I can.

That said, a friend dragged me to the Japanese animated filme “Your Name” the other day, and I can say that the quality of the film justified the labored reading required to follow the story-line (Ok, it wasn’t that bad, but it wasn’t fun).

First of all, the scenery was brilliant. At some times exotic and aspirational, and at others intricate and photorealistic, it was enjoyable to watch, but it didn’t get in the way of the plot (ala “Dunkirk”). Second of all, the plot was engaging. Without spoiling it, I’ll say that some parts of the story caught me off guard, which is hard to do in a film constrained by so many norms (of animation, Japanese cinema, etc.). I also appreciated the excellent incorporation of culture into the plot. It wasn’t just there an element apart from the plot. Japanese culture drove this plot.

It was reported in September that JJ Abrams will remake the film for American audiences, in live actions. It will be interesting to see how his remake compensates for parts of the original that were tailormade for animation and Japanese culture. I look forward to it.

Butter in Coffee: Paula Dean’s Dream or Health Hack?

Posted on

Today I came across a really odd idea that’s spreading among the health-food crowd: Butter coffee. Not just butter coffee. Butter + coconut oil coffee. Sounds horribly unhealthy, doesn’t it? It sounds like a Paula Dean pipe-dream, or a Gitmo enhanced interrogation technique.

Apparently it’s the opposite: Proponents say it allows for a more even spread of energy throughout the day (eliminating caffeine crashes), and eliminates mid-day hunger. See the experiment from Sally Tamarkin at Buzzfeed here.

I’m not one for lifehacks, but I do never find caffeine to last long enough, so I might just try this one….

My favorite excerpt of Sally’s buzzfeed post below:

OK, but is this real? Or am I just super susceptible to placebos?

Is it all in my head that I am in fact functioning at a Bradley-Cooper-in-Limitless level?

I decided to run the apparent benefits by some experienced experts to see which ones (if any) were supported by science or their own clinical experience. Here’s what they said about each of my takeaways:

• Lasting, level, jitter-free energy:

According to Matheny, “The caffeine is released more slowly because fat slows down digestion,” says Matheny. So fatty coffee means a “slower release [of caffeine], less intense energy spike, and longer-duration energy.”

• Satiety and a suppressed appetite:

“Taking in a fatty meal in the morning is definitely going to make you fuller quicker,” says Dr. Lisa Ganjhu, D.O., associate professor of medicine at NYU Langone Medical Center in New York City. And because the fat slows down gastric motility (aka filling and, ahem, emptying of the digestive system), you feel fuller for longer.

That said, Brian St. Pierre, registered dietitian and director of performance nutrition at Precision Nutrition, points out that butter coffee’s effect on satiety has yet to be proven: Only 1 in 14 studies on medium-chain triglycerides (aka MCT oil) found that it had a positive effect on satiety.

• Alertness/mental boost:

St. Pierre and Ganjhu explained that the way MCT oil is processed by the body could make you feel an energy boost more quickly. Basically, it bypasses the normal multi-step digestion process and is transported directly to the liver, where it is converted into energy. So our body’s response to MCT oil is closer (in how we feel its effects) to medication and alcohol than to other foods, says St. Pierre. Perhaps for some people (like me), the combination of quick-hitting caffeine and long-lasting energy translates to enhanced alertness and performance.

• I didn’t track this, but I know people are interested: enhanced calorie-burning and weight loss:

If butter coffee is enhancing your satiety to the point that you’re eating fewer calories overall, well, then you will lose weight.

But as far as MCT oil directly impacting weight loss, the effect may be minimal, says St. Pierre. He cited a 2012 review of the MCT oil literature which found six studies that showed weight loss in participants. However, the review concluded that further controlled studies with standardized amounts of MCT were needed before any legit claims could be made about its impact on weight loss.


Lessons: The Value of a Microservice Architecture For Quick Projects

Posted on

Yesterday I took 2nd-place in Northwestern University’s Wildhacks hackathon. It was my best finish in a hackathon to date, but the success masked the fact that I was debugging my project, Tweetscan, on-the-fly as I demo’ed it. When one judge came, the whole project was down and I had to show him a cached version,as I debugged the real app. Several times during the last few hours of the 36-hour event, I made a little tweak which ended up taking down the entire service. Debugging was painful, because my project was hundreds of lines of code long, and the exhaustion of a hackathon doesn’t exactly make for readable/well-documented.

Today I did a little mental post-mortem, and came up with a solution I’ll be using for every hackathon in the future: It’s based on this post I read recently on Netflix’s Microservices architecture, using a reverse-proxy. Basically, as follows:

  • Every endpoint of the API I write will be contained in its own individual file, and run on its own, though they will all be on the same server. Less code per file means a much more maintainable app.
  • All of the endpoints will be accessed through a reverse-http proxy. This will handle errors, so if one microservice goes down, the rest of the app will stay up. This means more reliable demoing, and that I’ll have more time to work during the hackathon, because I don’t have to worry about

The code for the top-layer reverse-proxy (using ‘HTTP-Proxy’ and Express) looks like this

var express = require('express');
var app = express();
var httpProxy = require('http-proxy');
var apiProxy = httpProxy.createProxyServer();
/// Below is the critical section. It catches errors, so the rest of the services stay up.
apiProxy.on('error', function (err, req, res) {
console.log(err);
res.writeHead(500);
res.end();
});
/// Each service runs on its own port.
var serverOne = 'http://localhost:3001',
 ServerTwo = 'http://localhost:3002',
 ServerThree = 'http://localhost:3003';
 
app.all("/app1/*", function(req, res) {
 console.log('redirecting to Server1');
 apiProxy.web(req, res, {target: serverOne});
});

app.all("/app2/*", function(req, res) {
 console.log('redirecting to Server2');
 apiProxy.web(req, res, {target: ServerTwo});
});

app.all("/app3/*", function(req, res) {
 console.log('redirecting to Server3');
 apiProxy.web(req, res, {target: ServerThree});
});

app.listen(80);