Concurrent thinking
- the main UI thread. Update the display, respond to buttons
- a thread that other phones can talk to for syncing. Two+ actually. One waiting for socket requests and one for each accepted connection
- a thread that reaches out and syncs to a master phone.
- a thread that computes the current timecode.
- I imagine I’ll have a thread for generating the SMPTE audio signal.
did people use the term multi-threading back then? ↩
I do remember that my friend Trey tried to add it to our signal router with mixed success. I don’t believe that effort ever made it into production ↩
forking usually requires you to setup a socket and serialize all your own data. This isn’t hard but I never took the time to write a series of helper routines. ↩
Most of the old slowness was due to the loop: ask for a file, wait for the fileserver, process quickly, ask for another file, wait some more ↩
I also found it interesting that garbage collection in Java happens in its own thread. ↩
I have a better idea of the time
- creating a GUI layout based on XML and learning the available controls.
- understand the main event loop related mechanisms, Activity, in the case of Android.
- know how to change colors, fonts and sizes
- how to use icons. The android ecosystem has many icons available but then you have to copy several image files for each icon you want to use to account for the different sized devices.
- you have to be cognizant of when different system APIs were introduced. I want my app to be runnable on old phones 1
I really like the idea of finding new uses for old phones we’ve just thrown in a drawer somewhere ↩
How do you know you’re straight?
A common thing for Mac users to do back then was to redefine system sounds. One of the guys in the house replaced the error sound (for example trying to type when a modal dialog was waiting for ok) with a sound clip of TD saying, “what do you think? I’m some kind of faggot?” ↩
this was in an era when MIT fraternity rush happened two or three days after new freshmen show up on campus. Pledges immediately moved into the house. MIT doesn’t do this anymore and I’m not aware of any other school having such a system. I think it worked well because you could rush without predetermined biases for or against the reputations of each house. ↩
During the first semester, we were each required to rotate between three different rooms, thereby being exposed to more many older brothers ↩
One of the brothers went so far as to say he could no longer use the chapter room to spend the night with his girlfriend. It’d been tainted. The same guy is somewhat religious and I found it humorous that he was using that room to screw the woman he wasn’t married to. In his defense, they did marry and are still together today. ↩
another thing that’s different about MIT (even today?) is that most fraternity parties are open to any MIT student, even members of another house. I believe most other schools (all?) have it such that you only go to parties thrown by your own house. ↩
I’ll note that my dad once referred to me as looking like a wolf 🙂 ↩
In Israel, cars were quite expensive to own. Most people that did have cars, got them as a work benefit. Because of this, I got to know Haifa really well. Better than any other city I’ve lived in ↩
In Israel, Friday dinners is something everyone does, does, every week. I should do a post just on that. week. I should do a post just on that. ↩
in the years since I’ve returned to the US, I’ve visited Israel for work a bunch of times. In those visits I probably spent more time with her than my other Israeli friends combined. I also spent most of my first sabbatical with her on a month and a half trip to Kenya ↩
One of my trips to Israel was when she was pregnant with her first son. I’d never touched a pregnant belly before. A couple years later, I visited shortly after the birth of her twins. Sometime during that trip she took a picture of me holding one of them. At the time, I had a thought that made me really sad “this child should have been mine” ↩
Parenting is…
In the spirit of a top 10 type of list. Parenting means:
Scooping poop 1 out of the bathtub. Kids are splashing away, getting cleaned up from the day’s activities, when you see a look of concentration. You know what’s about to happen, but by the time you pull your child out of the tub… plop. A turd drops in the water.
On another occasion, the child is pulled out of the water on time only to have a mushy turd land between your toes in your flipflop sandals.
It’s a hot summer afternoon. You’ve got the kiddie pool out, kids are in their swim suits or swim diaper. One of the younger kids, not yet potty trained, is taking a break sitting on your lap, when… what’s that wetness? A swim diaper is not really a diaper. It helps prevent a floater, but they’re not absorbent. In this case, being a parent means that instead of immediately changing your own shorts, you think, “well, my shorts are swim shorts. won’t hold a lot of pee. Will dryout quickly”.
I was at a wedding years ago. A friend was sitting across the table with her younger daughter on her lap. The daughter vomits but mom saw the signs and managed to catch it in her hand. She calmly deposited the gift on her salad plate, wiped her hand with her napkin and continued as normal. At the time, I was impressed that she wasn’t grossed out, but it seems like such a normal response today.
Being children, there are lots of things that my kids haven’t tasted before. It happens regularly, that they’ll try something and then immediately spit it out. Instead of generating a garbage pile, it’s often easiest to just eat it yourself. What’s a bit of spit and tooth marks within the famiy?
My daughter is toilet trained now, but there was that transitional time. I remember one time, she’d pooped earlier in the day, yet didn’t wipe sufficiently 2. Later in the day, she’s running around in her birthday suit and sits on my lap. Heh, I now have a bit of a skid mark on my pants. Did I immediately change them? Given the theme of this post, I’ll let you guess.
We went car camping a couple weeks ago. Somewhere around 10pm, I hear crying from the tent were the kids are/were sleeping. My daughter is a pretty solid sleeper and only wakes up when she needs to pee. The problem is that she doesn’t really wakeup, staying in a sort of zombie state. I’ve come to learn to just pick her up and take her to the toilet. I bet there are many nights that she never really woke up throughout the whole process. This particular night, she resisted. “Put me down! I don’t need to go potty!”. I don’t really like to just force her to do anything against her will so I hesitated. Eventually, the river begins. The sleeping bags only got a little on them, but some does get on the floor of the tent. I quickly get her out of the tent; thankfully, I still had the door unzipped and we water the grass. Nothing like sleeping with a pee towel under your sleeping bag.
I refuse to have snot nosed kids. Anyone who’s been around kids knows what I’m talking about. A kid’s happily doing their thing with these two nasty, green, gooey snots hanging from their nostrils. I was once at the park where a kid had this going on. I look at the dad with this look of, “so… you gonna do something about that?”. Nothing. Many/most parents just resolve themselves to this state of affairs. Snot can see unavoidable. Thankfully, there’s the Nosefrida AKA the snot sucker. It’s a tube with a funnel-like thing you jam in your kid’s nose and suck on the other end to vacuum out the green goodness 3. It sounds really gross, but I use this thing more than just about any other device. Being in Portland, I don’t get looks of disgust from other parents as I might in other cities. My 1.5 year old son has actually brought the thing to me to get a bit of relief.
All of these things either happened to me, my wife, or I personally witnessed the event. It’s a fact of life when being a parent, but it’s really not bad. As parents, we are in service to our children. We haul them from event to event. We go through zombie periods of not enough sleep. 4 These are the things we bear because we love our children.
Goofing off and Meeting expectations
I was comparing notes with my friend Trey about college. The computer science program he went through at Cornell was similar to my college experience. In particular, the class 6.001. (videos of the lectures can be found here) 1. Some other schools offer a variation of this class but either cover it in multiple semesters or omit much of the material. My point is not that MIT is so much better 2 In fact, I’d say that much of the teaching wasn’t that good. MIT professors get tenure for research and teaching is perhaps a bonus. (note Jeremy Wolfe). The biggest benefit I got out of being an MIT student was the extremely high level of expectation. The class 6.001, which covers more material in one semester than other good schools do in multiple semesters, is the first CS class encountered by students. “We expect you to do this. Figure it out.”
A second example (I’ll have a point eventually). I took a not very good calculus class in a not very good high school. I also spent a bunch of time over the summer before college with my nose in a calculus text. The things I learned lasted a lecture and a half of my first math class in college. “This is what we expect. Figure it out”. 3. A couple weeks into the class Prof Greenspan commented that much of the class didn’t seem to have a good grasp of one of the concepts. He passed out a handout, encouraged us to seek help from the teaching assistants, and then proceeded to continue at the same pace as before. Figure it out.
I’ve tried to maintain a high level of self-expectation throughout my career. Had I gone to a different school, I may have achieved a lower level of overall success only because I may not have learned I’m capable of as much.
Although I’ve often done what is expect of me, there are also lots of times that I do my own thing and that has also served me well. In my programming work, I often came across some unexplained behavior in the compiler or interpreter I was using. Perhaps a library didn’t really behave the way I expected. There is usually a work around to this but most of the time, I found myself compelled to really understand the mystery. More often than not, this resulted in a bit of not-so-useful trivia. Perhaps I’d find a bug. Not always, however, and the totality of the useful stuff I learned served me well and I became a better, more effective programmer overall. I thought of these hunts for the explanation as goofing off. I didn’t really need to know the answer, but I wanted to. The search was fun. This was particularly true about the Perl language, which is used a lot in Intel design. I can think of one person at Intel (a reader of this blog) who is probably as familiar with the ins and outs of Perl as I am. 4
Most people I worked with at Intel didn’t spend nearly enough time goofing off.
So, an example of a contrast. Intel has the best semiconductor process technology. I’d challenge you to find anyone who thinks that some other company can do it better. Intel’s designs are good, but not clearly better that those from other companies. My brother-in-law works in lithography of one of the cutting edge process nodes. 5 He works in a part of Intel that is better than the part I belonged to.
Recently, while hanging out, he asked for help converting an image file into something that JMP could accept. To me this sounded easy. ImageMagick has several conversion possibilities that could serve as a starting point. 6 One these gives something like this:
6,0: ( 1, 1, 1) #010101 srgb(1,1,1)
I removed the # comments and sent him the result for the sample image he gave me. JMP doesn’t like this format. It really wants tabs and really doesn’t want the ()’s.
I challenge you to find anyone in my department that would require more than 2 minutes for remove the ()s and swap the other stuff for tabs. If an interview candidate struggled with this, I’d hope we wouldn’t hire. Again, my BIL is in a leading edge part of Intel in a field that Intel is clearly dominating. To be fair, my department was mostly programmers for whom this stuff is easy but manufacturing involves a lot of automation, repetition,… the stuff that benefits from a bit of code.
I think it comes down to expectations and I’m getting closer to making a point. Before I do, I have another anecdote.
A guy I worked with in design used to be a technician in Intel manufacturing. One of the assignments he was given was a fairly repetitive task. Run a bunch of experiments for a week, taking data and come back with the results. He did this and was promptly asked to do the same thing on a different set of test batches. Fearing he’d jump off or a bridge at the thought, he automated the task and produced the same results in 4 hours, much of which was spent waiting for the computer to finish. With some simple automation, he reduced a task from a week down to half a day. This was not a new task; the old way had been the way for a long time.
On a recent neighborhood camping trip, I was talking to a former Nike manufacturing related engineer 7. Somehow JMP came up and I related these stories to him. “Same thing is true at Nike”.
These are not isolated incidents in an otherwise very capable portion of an industry dominating Intel division.
Intel’s technology development divisions are very high pressure with high results expectation… potentially at the expense of long term individual productivity. I did the file manipulations using Linux based tools but those same things are available on Windows through Cygwin 8. No one in process development seems to have the time or take the time to do what I call goofing off and learning these tools. Short term, there’s usually a way that will be quicker for the task at hand. Getting comfortable with scripting, grep’ing, perl,… takes some getting used to, especially for non-programmers.
High expectations can be wonderful (though it may not feel that way at the time), but they can also bite you. Be sure to spend lots of time goofing off.
sadly, MIT no longer offers this class. I really think that’s a big loss. It was a wonderful class. I suspect that part of the reason is that electrical engineering types often struggled with it. My memory of test results is that computer science majors would score somewhere in the high 90 percents while EE types would score closer to 60%. I know a couple folks that switched to mechanical engineering in part because of this. Either way, I think it was one of the two most useful programming classes I took. Algorithms/Data Structs was the other ↩
many of my peers didn’t seem particularly motivated in their majors of choice. ↩
That second lecture of 18.011 (which I don’t see in the current catalog) was taught by Harvey Greenspan using a book he’d written and culminated with a derivation of the and culminated with a derivation of the Taylor Series expansion of e. One of the mid-term questions expected us to derive the series for Sin-1 (inverse sine) expansion of e. One of the mid-term questions expected us to derive the series for Sin-1 (inverse sine) ↩
Randal Schwartz used to work at Intel. He surely knows more about it than both of us together used to work at Intel. He surely knows more about it than both of us together ↩
to me, lithography is one of those things that seems like VooDoo. I think: “Really, people do that?”, when I hear about some of it when I hear about some of it ↩
ImageMagick is likely not known to engineers who havn’t done much photography, but the rest of my argument will not suffer from this ↩
much of what they do, like the pistons in some of their sneakers are actually quite difficult to produce ↩
I believe Intel’s internal IT software installer can include cygwin if desired ↩
Updates from the McCoo homestead
The Hydroponics are doing well. This was a month ago:
This is now. A little spindly since they are in the shade of the house for much of the day:
A month ago:
and now (there are several boxes that were not present in the previous picture):
Before:
after:
Last fall, I planted a bunch of tulips in the middle of the lawn, which did well. They are gone now, however they prompted me to not mow that part of the yard. I’ve continued the habit and it’s yielded a nice little meadow. If the whole lawn looked like this, it’d just be overgrown, but surrounded by the manicured putting green that is my lawn, I think it looks nice. My part of Portland tends to not water the grass. I plan on giving the “meadow” some water here and there, especially when emptying the kiddie pool.
Part of the inspiration for this was the book On Meadowview Street that we’ve read many times to Lydia:
The most abundant part of the yard is the bee hives.
It would be logical to ask why we have three hives. Well, it started with just one composed of the larger boxes. Then I realized how heavy a fullsized hive body (one of the levels of the box) weighs. So I bought a bunch of the shallow ones which still get pretty heavy. I also tried making some myself as a woodworking project. The result is that I have three hives worth of components. Only two of them were occupied through the winter. When I harvested some honey from the right most hive, I noticed that many of the frames had brood (larvae) so I took a risk at moved some of those to the empty middle hive. The bees can raise a queen from some of those brood and build a new hive. Now that it’s a couple months later, it appears to be healthy. Hopefully, they’ll become strong enough to survive.
A couple days ago, I harvest honey from the left most hive, which was the strongest. Here is some of what I got from them; about 4 gallons. These are all quart mason jars.
My extraction process is pretty simple. Just a 5 gallon paint strainer duct taped to a cut bucket. Most of it strains in a couple days but I’ll likely get another quart over the next month. Note that there are another five frames that are still waiting. I was starting to worry that the duct tape won’t be strong enough to hold the weight.
If anyone cares for honey, let me know. If you’re an Intelite, I will get some to JF to be passed along. If you’re somewhere else, give me your address and I’ll mail some.
I’ve also melted/separated the beeswax. Here’s what I’ve accumulated over the past two years. I don’t know what to do with it. I’ve you’d like any or all of it, let me know and I’ll send it to you. Anyone know how to make lip balm? I’ve included a quart mason jar for scale. The middle ones are the more recent ones. Remelting the others should bring back the nice yellow color.
Role models and inspiration
It’s all normal pre-work. A slow start, but I’ll be productive soon enough 1. The thing that concerns me a little bit is that I have less access to role models, inspriration, muses. So I figured I’d talk a little about where I’ve drawn from in the past. There are a bunch of sources:
- Books and discussions around them
- People online doing cool stuff
- Code reviews.
- Serendipitous cubical interactions.
- CADPax
It hasn’t happened as much in recent years, but the early times of my career felt like a Renaissance of Computer Science. The folks in my work environment were reading lots of books and implementing the ideas found therein. There must have been 15 or more participants in my local circles. Some of the books that come to mind.
- Code Complete
- Writing Solid code – written by Microsoft at a time when their products seemed so unstable.
- Design Patterns 2
- Modern C++ Design – quite a tough read, but worth it. It reminded me of some of my MIT math classes that were taught from a thin (1/4″ thick) book yet only covered a quarter of the material in it.
- Effective C++ – The author Scott Meyers visited Intel on at least two occasions. First to consult on some stuff the dept was working on and later to give a talk on Programmer’s Day. From a conversation with him on the second occasion, I was amused to learn that he’s never really been a developer.
In recent years, I’ve come to value the ideas I get from online personalities. This section warrants a digression to my childhood.
I’ve always been a curious person 3 but, as a kid, I lacked in world experience and hence had trouble filling my time. I can remember one summer, when I basically burned time by watching not so interesting television. Don’t ask my why I didn’t just spend more time reading or at the library. Had Youtube been available, things would have been much more interesting. I would have spent more time tinkering.
Jeri lElsworth is super awesome with a great story. She grew up largely in her dad’s auto service station. She made a living for a while building race cars and later doing circuits. I don’t believe she ever went to school for any of it. As a bonus, she’s from the sticks near Portland.
Dave Jones of EEVBlog and The Amp Hour podcast. I enjoy hearing his frank critiques of various electronic designs. Lots of great real world stuff.
As I’ve mentioned before I enjoy the ATP podcast. Although they talk about Apple stuff (which I am opposed to), they do it in a way that is interesting. It’s good to get a look into how knowledgeable people look at stuff.
Dangerous prototypes I appreciate how a tinkerer put up an open design of his Bus Pirate, was eventually approached by the Seeedstudio people which became popular and he made a career out of it.
Through links like these, one can get to a ton of others like them.
Code Review
Early in my career, some coworkers came across the only way I’ve seen to do effective code reviews. It goes like this:
- Print out the code in a line-numbered way such that everyone sees the same numbering
- Everyone takes an hour to read and markup their copy (we did it on paper, but I’ve found that Code Collaborator can be used for this 4
- You get together in a room and, round robin, everyone makes an observation.
- Discussion ensues.
- I don’t care if we find actual bugs. Sure, that’s a bonus, but we usually don’t find something earth-shattering. The code is usually specialized and only the author really understands it. The frequency of significant finds is not enough to keep everyone motivated.
- Personally, I find that coding standards are a waste of time. They always seem to devolve into arguments about where the curlies should go, how much spacing, camelcase,… I have only one universal rule:
- Be consistent to the rest of the file/function. Just because the placement of the curlies doesn’t make sense to you is not reason enough to be different from the rest of the code you’re modifying.
- Each reviewer makes comments based on their own experience and hangups. If it’s important enough for them to fixate on it, it must be worth noting and sharing.
- The real value comes from the discussion. It goes like this:
- A: on line 27, I don’t like leaving out the curlies on a single statement if.
- B: really? that adds clutter
- A: sure but what happens when you add a debug statement two years from how.
- B: add the curlies then.
- A: ok. but what if you first make this change, then this other change, then you delete this original line,… you have a bug.
- B: …. oh.
- After many discussions like this, the group will come to a consensus:
- Oh, that’s just something that Miles was bit by years ago, but we don’t agree it’s an issue.
- You really do want to do A, B, and C.
- Most important of all, in the end, the owner of the code is a well paid professional, who’s employed to use engineering judgement. The real value of these reviews is to educate each other and improve that collective judgement.
I’ve found that I don’t work so well in isolation. I need to talk to people. The people don’t need to be particularly knowledgeable on what I’m doing. I sometimes wonder whether a manikin would work as well. Just the process of explaining is enough to get my juices flowing. There are a couple ways in which the other side needs to be human.
When I worked in Israel supporting mask designers 5 to more effectively use the design tools. There were often times that I didn’t feel like working, so I walked around finding other people to corrupt. We’d shoot the breeze a bit, how are the kids?, going on a vacation?… Eventually, I’d ask them what they’re working on. What are you doing? How are you approaching it? Which commands are involved? Why don’t you do it this other way? Ah, I see why you can’t do it that way. Still why are you using this command. How about this other one? Response: well, that command has this side effect…. Me: I can fix that. We’d talk about what the thing should really do and I was motivated to work again.
Second story. My original manager, Avner, mostly left me alone. He sat in the cube next to mine but we often wouldn’t talk for days. Eventually, he’d come by “your cube has been quiet for a couple days. That usually means you’re cooking up something”. I’d explain what I was working on even though he likely didn’t understand most of it. What he did understand was how I talked about stuff when I wasn’t entirely convinced it was the correct approach. Maybe I just wanted to get it done, but he would zoom in on that. He sensed the chinks in the armor and didn’t let me get away with it. I’d try to explain why doing it the right way would be too hard but the process of explaining often showed me an easier way to do it right.
Of course there are also the people I can always go to for engaging discussion about whatever I’m trying to do.
CADPax
Years ago, in the golden age of programming in my department, someone noticed that all of us had our own little library of routines that made our programming lives easier. Code for spawning execution of several jobs, how to do common things in the tool we were working on, ways to make it easier to interact with TCL/SWIG. We got together to figure out a ways to reduce the duplication of effort. Releasing this stuff with the main tool didn’t really make sense. Each small library was too small to justify it’s own sub-tool. So we created an umbrella tool called CADPAx. (packages for the family of CAD tools we all worked on).
CADPax eventually became a pile of stuff I grew to depend on, but that wasn’t the main benefit of the library. Instead, it was the mindset it put me in. The mere act of considering the re-usability aspects of my work made my work better. Doing things cleanly often doesn’t require much more than thinking about it for an extra minute on a regular basis.
When done and managed well, the human work environment of a programmer can do a lot help hone the skill, maintain motivation, enable miracles to happen. Now that I’m not at Intel anymore, I need to find replacements for some of these.
- Please comment with any book titles I should checkout.
- I’m a good code reviewer (at least I think so), bug me if you’d like to do one.
- I have one or two prospects for collaborative projects. Let me know if you have an idea.
Robie and I have agreed on a family schedule that gives me the equivalent of a couple solid days to do whatever I want… Garden, programming, lunch with friends. It’s mostly 4 hour chunks. ↩
I’ve had exactly two interviews in my career (in which I was the one interviewed). The second one was with Autodesk about eight years ago. Sadly one of the questions I did poorly on about a design pattern. I supposed that had the culture of discussing books continued around me I might have done better and gotten an offer. In retrospect, I’m glad I didn’t get the job. There’s no way the hiring manager and I would have gotten along. No real way to know ↩
my older sister likes to tell a story from when I was 5 or 6. I had watched my dad build a set of speakers. Soldering and all that. Some time later, I wanted to listen to the radio in my room, but the stereo was in the living room. In the closet’s junk pile, I found a length of antenna wire and one of my dad’s unused speaker drivers and wallah, the music was in my room ↩
you just have to ignore CC’s strong desire to do the standard thing of only reviewing diffs ↩
people who are employed to draw the polygons representing the wires and transistors that make up a semiconductor circuit. At car companies, they be called draftsmen/women. ↩
Do you know what time it is?
For the non-native English speakers: what time it is
I’m thinking about writing an Android app that requires several devices to do something at the same time. They need to be coordinated to within about 1/50 of a second. It’s not important that they do this thing at a particular time. It only matters that whatever time they do, it is the same for all of them.
Here are some of the devices I have laying around the house.
- Two old Motorola XPRTs (never liked em).
- A Barnes and Noble Nook HD.
- An HP Stream 8
- and a Galaxy S5.
So I tried getting the time from GPS using the app GPS Time. I don’t recommend this app. It crashes every time the phone goes to standby as well as other random time. Still, you can see the times still don’t match. (all the pics are clickable for larger versions). All of the times are different.
Since the app is so unstable, I figured maybe a different app would do better. Perhaps, the inaccuracy is a problem with the app. GPS Status and Tools is much better. (it’s a very nice app; lots of features) Again, all of the times are different, though I think something wasn’t right on the S5. For a while it had trouble connecting with the satelites; that may be because the battery was low.
So I looked around a bit more and came upon several mentions of NTP (network time protocol). Reading about it, it’s specifically intended to give accurate time to computers. The result is very close. The first attempt at photos 1 had only disagreement only in that the Nook is a bit off. When I re-took the pics, I got this one where all the times are different. 2
One issue I have with using NTP is that it requires an internet connection. I’d like to be immune to that. My next idea (the one I’m likely to go with) is to connect them all through wifi and have them talk to each other. The question is whether there are any elements in the chain that slow things down 3
So I did some experiments using the simple ping command.
- Pinging from my desktop to my router yields times < 1ms. Great!
- Pings to my S5 gives values ranging 9ms-100ms. not so good. 9ms was an outlier. 40ms is more common.
- Pings to Nook are consistently about 4ms. I don’t run nearly as much on the Nook as the S5.
- On one of the XPRTS, It’s 6ms-200ms. 60ms seems common.
- The stream 8 usually pings in 3ms.
That’s as far as I’ve gotten.
What’s the rest of the app going to do? It has to do with SMPTE Timecode. I want to try shooting some multi-angle video; more than one camera at a time and perhaps separate audio. SMPTE Timecode is what the real studios use. It’s a digital encoding of the current time that’s transmitted to each recording device as an audio track. Video editors like Final Cut or Premiere then can automagically align the footage on the timeline using the recorded timecode signal. The problem is that equipment to do this is expensive. Android devices can be found for cheap. Who among us doesn’t have an old phone or two, just sitting in a drawer? There’s is already a timecode app, but it doesn’t include sync between devices. You’d need to distribute the signal from it to each recorder via some sort of transmitter (something you probably don’t have lying around).
Timecode is at a granularity of 30 frames per second (or whatever the video framerate is). Hence the requirement to be within ~1/50th of a second to give a bit of margin.
Kudus, if you’re a less technical reader and you’ve made it to the end.
taking photos of especially the stream 8 was pretty difficult. The reflections were hard to avoid. The ones I’m posting were mid evening. ↩
At this point I’m only scoping the problem. I haven’t written any code yet. I haven’t even written an Android app yet, but this is the project I want to use to learn. ↩
my assumption is that if I have high latencies, this will limit accuracy. I also assume that accuracy will be no worse than the latency. So if the app keeps trying until it gets one with good turnaround time, it’d just use that.↩
Why write a blog?
- the footnotes I use are much easier to deal with in a webbrowser. you click and it pops up right there.
- in my last post, I linked to a couple youtube videos that got filtered in the email version.
- The title of the post is a link to the web post.
- we’re taught to be modest. Attempts to share knowledge are often equated to showing off. 3
- facebook culture seems filled with superficial crap. “hey everyone! I’m drinking a latte”. Some people post several times an hour. I mostly avoid it because it’s so difficult to filter through the drivel to get to the good stuff.
- twitter 4 limits any posting to 140 characters. Anything worth saying surely requires more than 140 characters. This post, without any edits, already has almost 600 words.
he’s been doing it since the days that this actually involved slides ↩
sometimes more frequently ↩
perhaps this is an artifact of me growing up in a neighborhood where being smart is something many keep low key. Perhaps it’s just a matter of being a teen, but it’s something that’s stuck with me ↩
which I don’t use, haven’t tried, I don’t even have an account ↩
I’m particularly impressed by one comment I got on this blog after three years of not posting. After all that time, she is still subscribed and still reading. It’s especially flattering given how impressive she is herself. ↩
I’ll often comment on stuff I know nothing about. “I have no idea, but if you’d like, I can make up something based on what I do know”. I try to be honest about the basis/source of the things I say ↩
the first time I even heard of web browsing, I blew it off. That was a year or two out of college, when Mosaic was the only brower, before anyone heard of yahoo, netscape, or even infoseek ↩
makes me think of Eddie Murphy’s joke about Johnny Carson’s wife. “Johnny’s worth $300M. What’s she gonna do, go get a job at a boutique? ‘here honey, now we have 300 million and 50 dollars’” ↩