Longfellow on Task Management
A poetry of task management?
Each morning sees some task begin,
Each evening sees it close;
Something attempted, something done,
Has earned a night's repose.
Expanding our capacity to respond to unforeseen changes
A poetry of task management?
Each morning sees some task begin,
Each evening sees it close;
Something attempted, something done,
Has earned a night's repose.
A philosophy for programming languages
A complex assembly is best described first in terms of its substances: its subassembles [sic] and parts. Then, next, it is described in terms of its methods: its functions as they occur in sequence. If you confuse physical and functional description, substance and method, you will get all tangled up and so does the reader.
– Robert Pirsig, Zen and the Art of Motorcycle Maintenance, p. 338
Compiler optimizations and optimality theory
Yesterday, I read a post on bytecode optimizations in Racket. The post discusses a number of optimizations (both proposed and implemented) for if
-expressions in the Racket compiler.
Of particular interest is optimization h, which despite optimizing many redundant if
-expressions, introduces a few trivially redundant expressions, such as (if #t a b)
, which should just be a
. The solution proposed introduces three more optimizations i, j, k to account for these cases.
Another observation from the Racket post was that there are cases where bytecode could have improvements and regressions with the optimizations ordered one way, and have different improvements and regressions with the optimizations ordered a different way.
This is similar to a problem that phonology faced when using a similar rule-based approach. Optimality Theory (OT) was created to account for this. It eschews the rule-based approach for a constraint and search approach, so that rules can apply in different orders in different cases.
In OT, there is a universal set of constraints, CON, which, given a language, has an ordering. Given a underlying representation, GEN generates an infinite list of all possible outputs. EVAL then considers each candidate against the ordered constraints for the language.
By analogy, a graph search algorithm could be used to evaluate bytecode according to a specific set of ordered constraints. Instead of applying rules in a linear order, each transformation rule would provide a new node in the graph. Ordered constraints would then be used as a heuristic.
Fox Hunting Results
Last month, I posted about fox hunting equipment and software that Mary and her friend Emily used[^1] for a final project. I forgot to mention some other tools: a compass to take bearings, a GPS to take latitude and longitude, and ArcGIS to map the data.
First, I put the transmitter in a known location, then we went around our neighborhood to take bearings from a few different locations. After getting their bearings (no pun intended), I went and hid with the transmitter and waited for them to find me. After they found me, I went and hid in a more challenging place and waited again.
Mary and Emily took their bearings and locations (including the transmitter locations), imported them into ArcGIS to show how triangulation can be used to estimate a transmitter location. The transmitter can be assumed to be within the intersections of successful bearings.
Mary and I are planning on attending HF in the Park next Saturday, where there will be an organized fox hunt. We'll have to assemble the 2m portion of our Yagi antenna, but we're looking forward to refining our newly acquired skills.
[^1]: Since Mary doesn't (yet!) have her ham radio license, I assisted with the transmitter.
Startups that provide services for other startups
One of the services we offer at Celador we like to call Startup as a Service. If a client has a business idea, but not the team to make it happen, we can help.
Y Combinator and other startup accelerators are also startup services. In addition to financial investment, the main service they offer is expertise and connections. Startups pay for these services with equity. The trick here is to fund enough startups that the successful ones can hire the founders of the unsuccessful ones.
Co-working spaces and hackerspaces such as the Hacker Dojo offer another sort of service, albeit targeted more toward the individual, as individuals typically pay for membership.
I'd be curious to see in a startup services startup which would offer the expertise and connections of an accelerator but also provide working space without money being invested. The target client would be a startup either in or just out of an accelerator, and the payment would be with equity. Again, the trick would be to have enough startups working side by side. Does something like this exist? My impression of accelerators has been that they don't generally provide much for working space, but I may be wrong.
Sell shovels. Don't dig for gold. What other startup services startups are there?
Heading off future maintenance
Our 1998 Subaru Forester turned over 170,000 last week. Coincidentally, our local Subaru dealer had a coupon for a free multi-point inspection, so I took the car in for the inspection and got a list of quotes for all of the little non-essential things that would be nice to get fixed.
Barack Obama gave a speech today on the not so “sexy” things that the administration is taking care of on the foreign policy front. He went on to say, “You hit singles, you [hit] doubles and occasionally, you may be able to hit some home runs”. He's been criticized for this analogy, as it lends itself to suggesting that he's not aiming for home runs.
I don't take offense to the work being done, but rather the metaphor. Perhaps a better analogy would have been getting an oil change, or painting over the rust on your car: If you don't do it, things will get worse, and you'll have a bigger price to pay down the road.
Decompose until a computer can do it
When faced with a challenge, and you don't know the next step, decompose your challenge into smaller challenges. If your smaller challenges are still too big, repeat.
When programming, your challenge should eventually be one that the computer can solve for you.
Software used for fox hunting
Another piece of “equipment” that I forgot to mention in yesterday's post is Fox Hunt, an application for the iPhone which uses the phone's GPS and magnetometer to do orienteering. In addition, it will attempt to suggest a location of the fox once enough bearings are entered.
Fox hunting equipement
For her master's coursework, Mary is taking a class on spatial data methodology. She wanted to do a radio direction finding final project, but since I haven't done much with my ham radio license recently, this was a good chance to invest in some equipment:
It transmits using AM on the 70 cm band. Every 85 seconds it transmits my call sign (KDØGTK), and then it beeps every 1.3 seconds for 50 milliseconds.
This antenna is two 3-element Yagi antennas, one each for the 2 m and 70 cm bands. For now, we've only assembled the 70 cm antenna, but we'll put together the rest before our next fox hunt, as it will use 2 m.
I've used this handheld before, and have always been impressed with its durability, battery life, and receiver coverage.
I'll tell you how the fox hunt went in a later post.