A few weeks ago, I posted a encomium for my MacBook Air, that's been my constant companion for years now, (prompting speculation about whether I engaged in conjugal relations with this piece of machinery). In the interests of equal airtime, I must admit that I am *almost* as enamored with my Surface Pro. The two devices represent sort of the same niche in computing technology; the "ultrabook". But they couldn't have more different approaches. Both are slick and welcoming. Both work amazingly well, with consistent performance and no issues. That's exceptional in and of itself coming from Microsoft, and speaks to the power of controlling the hardware platform in addition to the software. Windows 10 just works really well on a Surface Pro. The size and weight are almost exactly the same; both fit that form factor that's so important to me when I'm on the road. The Surface Pro has an amazing screen, and the power of the touch screen and stylus - both of which are amazing. Battery life is really good on the Pro, as well; it used to be good on the Air but of course that's getting older. The major downsides to the Pro are the keyboard; while clever, the Smart Cover is just not nearly as good as a real keyboard, and the fact that it, well, runs Windows, which I just - even at its best - can't find as lovable as OS X. I like the Pro; I like it a lot, in fact. I have the cheapest model, but it hardly ever lets me down. But in a pinch, like this summer on my trip, I'd still have to pick the Air if I could only have one. Although it would be nice to have a clean slate to put new stickers on!!
Today's post is going to be extra dorky so if you're more into yoga and fitness, feel free to step away. A while back I ran across a blog post by a man named Steve Troughton-Smith that described how to run arbitrary code on the Apple Watch. Apple itself only allows running a tightly restricted subset of their libraries on the watch, and one of the things you can't do (officially) is run raw OpenGL. But this guy figured out how to run basically anything. You can't submit what you make to the App Store (obviously), but it's cool. So today I sat down and got his stuff working with OpenGL and GLKit to explore the performance of the Watch. I ran some basic tests and got some preliminary information. If any of this is interesting to you and you want to know more please feel free to comment:
GL_VENDOR Imagination Technologies
GL_RENDERER PowerVR SGX 543
GL_VERSION OpenGL ES 2.0 IMGSGX543-124.1
GL_EXTENSIONS GL_OES_depth_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fb_render_mipmap GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_vertex_array_object GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_draw_instanced GL_EXT_instanced_arrays GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_pvrtc_sRGB GL_EXT_read_format_bgra GL_EXT_seperate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_filter_anisotropic GL_EXT_texture_rg GL_EXT_texture_storage GL_APPLE_clip_distance GL_APPLE_color_buffer_packed_float GL_APPLE_copy_texture_levels GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_sync GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_levels GL_APPLE_texture_packed_float GL_IMG_read_format GL_IMG_texture_compression_pvrtc
The SGK543 is the same chip found in the iPhone 5. Of course the chip in the watch is likely to be tuned differently; I imagine the clock speed is lower to extend battery life. But I'll try to find out more.
The chip can render 50k full screen quads at 2.25 seconds per frame, which is not bad. We should have all the performance we need to run some cool demos and games. But that will be the subject of a future post.
Here in Oregon we have this lottery. Now, I'm used to the concept of a lottery - you go buy a ticket, you watch the TV, Vanna White pulls ping pong balls out of a large glass bowl or something, and you never ever win anything. I always thought the lottery was weird and I still do. And when I was working back in Texas, I became familiar with this idea of the "lottery" - a way of extending the lottery to basically include all gambling. One of my friends worked for a slot machine software company and they got a contract to do some slot machines for Oklahoma. In Oklahoma, gambling was illegal - but with a "but". The but was, bingo was legal - ostensibly because efforts to make bingo illegal had faced such opposition from churches and charities that it was a political non-starter. Because bingo was legal, some clever soul had figured out a way to make a slot machine out of bingo. The way it worked - what I was led to believe - was that a game of bingo would play on the side of the machine, and the reels would just "fake spin" and show you the results, which were the same as the results of the bingo game. It sounds shaky, but it totally worked, and people really didn't care about the difference - at least, the kind of people that play slot machines at diners in Oklahoma.
Anyway, we have the same thing here in Oregon, except it's way, way worse. Last night I went and ate at my favorite Indian buffet, and the place was busy so they sat me over in the bar area, where they have some slot machines. I defy you to look at any of these slot machines and tell the difference between them and just a regular slot machine in Vegas; except, they have the official "Oregon lottery" stamp on the side. Now, I am not necessarily 100% against slot machines and gambling. I believe adults should be able to do what they like if it doesn't hurt others. (At the same time, I think gambling addiction is a huge mental health problem in this country). But I am against hypocrisy. And claiming that these machines have anything to do with the lottery is a farce. This is why things like the lottery are a problem; when we're not honest about our intentions, someone will force us to be. Prohibiting gambling while allowing the lottery is just a sham that gives the state control. And these slot machines make that painfully obvious. For a state as liberal and as generally right-headed as Oregon, the lottery feels, to me, like an embarrassing moral weakness. And it's just weird.
Today I ran the Shamrock Run Portland Half Marathon. I had a great time; there were a few interesting things about this run. It was fairly flat and gentle. But it was cold, and it rained constantly. I don't think I've ever been more wet in my life. And, although I've written before that my body likes it when it's cold and performs better, in this case I think it was too much of a good thing. I started to cramp up badly and had to slow down dramatically near the end to keep from getting worse cramps. I understand my body now and know its limits and i knew if i pushed it I was just going to have to stop. As it is, I finished in 1:58:48, which is not that bad, but I know I could have done better. The combination of the wind and the rain worked to really drag all the heat out of my body.
As a side note, one of my enduring memories of Portland now will forever be standing in a really muddy field with a beer in my hand with 3 other guys, trying to listen to a band while it was freezing and raining and having us all just look at each other and say "The hell with this, it's time for a hot shower". :)
Today was my first official conditioning hike as part of BCEP, the Basic Climbing program I'm taking as part of Mazamas, that I've talked about elsewhere on the blog. We did a bit over 7 miles out and back along Hardy Ridge in the gorge. It was a lot of fun and I learned some cool new rope techniques, including how to travel as a rope team for glacier traverses and a little more about knot tying and other climbing skills. It was a beautiful hike and an awesome time but it was COLD! It rained on us consistently, but the coolest part was about halfway through the hike it started to hail! It hail/sleeted for over an hour - big pieces of hail, too, about the size of a Nerds candy. It was kind of a crazy - but crazy awesome - day and I can't wait for more!
Sometimes, when we think about diseases like MS, it seems like they are impossible to solve; like cancer, they're just a fact of life. Maybe they're just part of being human. At other times, it may seem the opposite: science will eventually conquer it, all we need to do is just sit on our hands until we read in the New York TImes that somebody smarter than us figured it out. The truth, of course, is neither of these: we can beat diseases like MS, but we have to work at it to get there. Recently I heard a radio special about promising treatments for MS that resemble those for cancer. Here's the article: Cancer treatment for MS patients gives 'remarkable' results.
So, if you feel inclined, please know that, if you donate to my ride, you are doing good for the world. And if you want to just donate straight to the MS society, that's awesome too!
Today I’m teaching a yoga class on twisting. Most of us twist from the lower spine - also known as the Lumbar spine - when we’re not paying attention. The lumbar spine is an easy set of joints to twist into, and it comes naturally - but it’s a really bad idea. There’s actually not a lot of range of motion to those joints, and repeated twisting down there causes lower back pain and all sorts of other issues. We are actually made to twist from our upper spine, also known as the thoracic spine, or t-spine; but many of us have allowed that area to “freeze” from disuse and from hunching our shoulders. Sitting up straight with good posture can help a lot, but so can exercising the area. The trick is to somehow lock down the lumbar spine so that we have to twist from the top. In the yoga room we have various tricks for this, such as to verbally call for the lower hips to rotate against the twist.
One of my favorite exercises to improve t-spine flexibility is one I learned from my mentor Harvey; he calls it the Hamstring Frisk (because it’s also good for stretching the hamstrings). It’s simple: stand about a leg’s length away from a wall, and bend over and put your hands on the wall so that your body makes a perfect “L”. (It helps to have someone watch your pose the first few times because many people think they’re straight when they’re not). Now, imagine a hand pushing down on the space between your shoulder blades. Move away from that hand - BUT - do not change that 90 degree angle between your torso and lower body, AND do not squeeze your shoulder blades together. Now, the first time you do this, you may say “Adam, you’re crazy; I can’t do it without doing one of those two things”. But you *can*, and you *will*, and when you do it feels amazing. You may even hear little crunching noises as joints that haven’t moved in forever finally mobilize. The key is the muscles of the spine, which can move and flex the joints in the spine. Try it!
Today, I'm spending a significant amount of time working through the tutorials for Unity. Unity is a game engine; that means it's a piece of software that helps with building games. Historically, I've pursued two main paths in both my hobbies and in my professional life: writing games "from scratch", and using these kinds of tools. They both have advantages and disadvantages. Over time, I've seen professional projects choose game engines about two-thirds of the time and to write from scratch one-third of the time, and that ratio seems to have stayed pretty constant over the years. Engines can be expensive and constricting, but they have one huge advantage: they greatly accelerate productivity up front. In an environment where changes are rapid and problems are easily dealt with, it's easy to prototype and be creative. It's not usually until the late stages of the project that the limitations of a particular engine become apparent. As an individual developer, it's so hard to marshal the resources to write a game from scratch that engines become almost a requirement. I've written more than one game from scratch from iOS, and while I enjoyed the experience, I found at the end of the day that it required more work and time than I had. So I'm looking forward to seeing what I can put together this time around with Unity!
Some days, you just want wine that comes in a box. That's all I got.
Today was Selection Day for Pacific Northwest Search and Rescue. That means it was our "final exam" to become trainees; we were told to expect a training hike which would be timed followed by...well, no idea. It was awesome. The weather held up, which for Portland this time of year means that it was still a bit chilly and overcast but not actually raining on us. We started out with a 6.5 mile training hike, which I finished third fastest of the whole group. But then we got on to the interesting stuff. I can’t talk about it too much because the details are supposed to be secret, but it was what you might imagine - a set of leadership, fitness and outdoors related activities related to, well, search and rescue. I had a great time, got to exercise my lungs both the physical and communication way, and generally just had an awesome time. Below is a picture of the two paving stones I was forced to add to my pack because it wasn’t heavy enough. :)
Woo hoo! Today I got out for an awesome long ride. I woke up in Bend at a hotel on the south side and rode up to Smith Rock State Park, outside Terrebonne. I wasn't sure how long it would be, it ended up being almost 60 miles round trip. The day started out sunny and warm but got a bit overcast and cold by the time I got up there. I tried to ride around SR but I only had my road bike tires so I got out of my league on the mountain bike tracks quickly and had to turn back. No bother, though; had a nice BLT at a diner in Terrebonne, saw a couple of guinea pigs, including one that raced me for a few hundred feet. Riding against the wind on the way back was a challenge, especially because I was on a time limit, having to get back to teach. All in all, an excellent day and a great training day for what's to come this summer! Speaking of which, I - as well as everyone with MS - would love your donation, no donation too small! $1, $5, $10 - it's all good; just adding names to the roster makes me feel good!
This is a long overdue post. Do you like music? Do you like really good music? Well then today is your lucky day. I may be a bit biased, but my younger brother Jason is the lead singer and general tour de force behind his SF electro-pop band, Great Highway. I've been to perhaps a dozen of their shows over the years, and I can honestly say they are really pretty rocking. It's been fun to watch them grow; from two people to 5, from one album to 3, and from a group with great studio talent to a great live band as well. The songs are intensely lyrical with a beat that reminds me, and others, of bands like Postal Service (unsurprising since that's some of Jason's favorite music) but with - in my opinion - more layering and even better poetic qualities. I still think their strength is in the studio and their recorded material. I would link to their reviews and their discography, but they have an awesome website that already did that for me, so just check it out there! http://takegreathighway.com. I can't wait until they go on a nationwide tour and become world famous!
So many important topics I could write about today. But none are more important than Wendy's Chili. As someone who often faces having to eat quickly and cheaply, I can think of no greater fast food product than this delicious concoction. Some say it's made from yesterday's hamburgers; I say, bring it on - what could be more suited to the purpose. Some question it's soupy nature; but soup, as we know, is good food. In this cold, wet climate, I find it nourishing for both the mouth and the soul. Replete with cheese and raw onions, it is both a taste adventure as well as a fairly nutritious (at least by fast food standards) addition to a healthy daily diet. And unique among its compatriots. I salute you, Wendy's Chili.
Yeah! Yaaaayyy! Woo hoo! I hear in Sweden you can file your taxes my text message (no kidding), but here in the US of A we do it the old-fashioned way, the way our grandfathers did it, the way Real Men do it - with piles of paper and phone calls and agonizing over the way to deduct depreciation on our cell phones.
“And hast thou slain the Jabberwock?
Come to my arms, my beamish boy!
O frabjous day! Callooh! Callay!”
He chortled in his joy.
I’ve only been in a fight twice in my life; the real kind, with fists being thrown and all that. But I can tell you that, when it happens, a lot of things fade away. Whether the other person is white or black or asian, tall or short, a conservative or a liberal, when they start throwing punches, the only thing that’s really on your mind is to either dodge them as fast as you can or start throwing some of your own. Donald Trump is throwing punches, and he’s throwing them at America. And, just like the little runt at the bar, we all laughed at first; until we realized he was serious, and the punches started to land. And now, I don’t care if he’s a Republican or a Democrat or from outer space; he’s a bully, and a jerk, and I want him thrown out of the bar. Donald Trump is not a problem because he is a Republican. I’ve listened to Marco Rubio speak and I don’t agree with him, wouldn’t vote for him, but if he won, I’d shake his hand and say “good game”. Marco Rubio represents a genuine viewpoint; one I respect even as I respectfully disagree.
Donald Trump is not a viewpoint any more than a thrown punch is a viewpoint. He is just raw physical violence. His own expression is a big middle finger to the United States of America. Oddly, nothing has ever made me feel as patriotic as Donald Trump. Much in the way that you might criticize your brother in private, but you’d jump into the fray if anybody tried anything, I feel - for the first time in my life - compelled to throw my hat into the ring of politics, just to make sure that guy is a sideline to history. I don’t care anymore if it’s Hillary or Bernie or even Michael Bloomberg - it just cannot, cannot be Trump.
And it’s not because I’m afraid of the policies he would institute if he was president. I’m afraid of what the presidency would become. This is not a fictional TV show. We are not the West Wing, or Hitchhiker’s Guide to the Galaxy. Donald Trump is not Zaphod Beeblebrox. This is real life. We laugh at other countries with ridiculous puppet dictators and goofballs in charge; now we might become one. I am afraid for the death of reasonable discourse. It worries me greatly that we are changing our decision-making process. You know, as sure as we sit here, that if he was to win - honestly, even if he came close but lost - we would see a bunch of idiot copycats, with no message except “I hate everything except you, dear voter.” I’m sure you have all heard the advice that, when you’re on a first date, or at a first business meeting, you should look at how the other person treats the waitstaff. People who are jerks are jerks all the time. They don’t turn it on and off. Donald Trump would be a jerk to other world leaders, to other Senators and Representatives. He would appoint jerks to his cabinet, and a jerk to the Supreme Court. Ideology aside, he surrounds himself with idiots. He is the Lance Armstrong of politics; there’s a veneer of respectability, but underneath it turns out all there is at the center is a coward and a bully. Except that the consequences are so much higher than a bike race.
The time will come, soon, when it will become obvious who the best challenger is to Trump’s idiotic rise. When that moment happens, it is absolutely incumbent on every free-thinking, right-thinking American to come together to support that person, and to educate people that we do not want a bully as President.
I admit it - there’s a moment, when I’m home, sitting warm in bed, when I really, really hate running in the cold and rain. Today was one of those cold, foggy, sprinkling days that Portland seems to have so much of in the winter, and it was really hard to get out of bed and get in my car. Standing around before the run, too - that’s no fun. I don’t like that kind of weather in general, but standing in it is just torture.
The results don’t lie, though: my body performs a ton better in that kind of weather. I think I overheat easily while running, and the cold weather becomes my best asset once I get started. I did almost 7 miles this morning on muddy trails, and it absolutely flew by. I got in the groove right from the get-go, and really hit my stride about mile 2 and 3. I remember looking at my watch for mile 4 and then it felt like just 2 minutes later I was at mile 5. Conversely, when I lived in Austin, I had a hell of a time running. Almost right away I would be gasping for breath. Every step was difficult; every half mile was agony.
I’m writing this down mostly so that, next time I’m lying in my bed wishing it was a bright sunny day, I remember how nice it will feel about mile 2. :)
There are three kinds of people who will read this blog. The first kind is just not terribly interested in my ride this summer, or in charity, or multiple sclerosis. That is absolutely and totally fine; please go on about your day. :) The second kind of person is already sold on the idea of donating to my ride but just hasn't gotten around to it or is too busy. For that person, I'll just leave this link here: http://tinyurl.com/AdamBikes, along with the comment that there's no time like the present. :)
For the third kind of person, they need to know a bit more about what I'm up to before they feel like they can contribute, and I totally understand; I would feel the same way. So here is a quick "Frequently Asked Questions" list:
Q: What exactly are you doing? A: On July 1, I - along with about 11 other people - am leaving by bicycle, from Virgina, to arrive exactly two months later, on August 1st, in San Francisco. We are going the whole way, 3800 miles, by bicycle.
Q: Why are you doing this for charity instead of just going for a ride? A: Good question; I could just ride my bike on my own. But I'd like the journey to have a bit more meaning, and Multiple Sclerosis is a very worthwhile cause - more on that below. Two years ago, I did ride on my own, and it was the trip of a lifetime - but this will be even more amazing because I can help others.
Q: How much are you raising and why? A: The goal is to raise $3800, one for each mile I will ride.
Q: 3800 dollars seems like a lot of money! Why so much? A: Of your contribution, about 55% of the funds will go straight towards the charity. The other 45% is paying for the logistics of the ride - the van that follows us with all our belongings, camp sites, camp food, and basic first aid support. (Believe me, it's not luxury accomodations; we try and save as much money as possible for the cause). $3800 is a nice round number because it's one dollar for each mile.
Q: Why Multiple Sclerosis? A: Two reasons, really. First is that I love cycling, and MS has a long-standing relationship with the cycling community. The second is that I, personally, love motion and fitness, and diseases like MS - which cripple the body while leaving the mind intact - are one of my personal nightmares and, I think, one of the next frontiers of disease. As an autoimmune disease, MS shares things in common with Cancer and AIDS as well, and the treatments are all related.
Q: I do kind of want to give you money for the charity, but - no offense - I don't want to pay for your bike ride. A: No offense taken! I understand. If you feel this way, please donate, and let me know that you did so, and that you "conscientiously object", so to speak. I will match your donation, as neccessary, to ensure that any money you donate is going straight to the cause, and not to my ride. Note: I'll only have to actually make donations like this if I end up raising more than 55% of the total, so these "matching donations" will happen at the end.
There are many things about today, and this trip, that I could write about. But years from now, what I will want to remember about today is that I got to see the Shillingtons; Ryan, Ame, and their three kids David, Azalea and Riker. And we had an awesome walk and a great meal at this Turkish restaurant called Istanbul Grill and their kids are doing really well and it was just particularly great to catch up with them. I thought it might be, that it would do my soul good to be around people I like who like me and to be around kids, and I was totally, totally right. It made me feel better about my life choices but also reaffirmed the path I'm on. And there's a chance I may see them again if I make my way back to Austin after my bike ride this summer! It was just really great to see them.
Yesterday was my first day on the job here in Dallas and, since I knew I was going to have to be here for 4 days, I decided that for lunch I would try and find something that I could eat for all 4 days. After an hour and a half, I went home defeated. I walked by at least 10 or 11 different hometown Mexican eateries of various sorts, a pupuseria, a couple of BBQ places, and one Chinese restaurant. Don't get me wrong; they all looked delicious. I finally ended up at the Chinese place where I got Chicken Chow Mein for $6, and it was really good. But it was also a big fat bomb. They wanted to give me a free egg roll, and I had to turn it down.
One thing I take for granted in Portland, and also took for granted in SF and in Austin, is access to plentiful healthy food, especially at restaurants. I'm not saying there aren't any Acai Bowls or Café Yumm in Dallas, but certainly what was easiest and most accessible was high-calorie food, mostly fried or covered in cheese. And that makes it so much harder to be healthy.
It's not often that you get to see the future. It's also not enough that you get to revisit the scene of a crime (metaphorically speaking), 15 years later. But that's what i got to do today. 10-15 years ago, I was in graduate school, studying computer graphics, and my advisor was super into this new thing called virtual reality. It wasn't exactly new, of course, the idea had been around, but we had this cool new hardware. It cost $20,000, had to be bolted into a giant room in the basement, had these big heavy cables, weighed so much that it made your neck hurt to wear it - but it was real! Virtually real! In the academic world, we all thought it was very cool. I built a tennis game where you could dance around to "hit" the ball back to an invisible tennis partner. But even for us, the novelty wore off. The headset worked off of magnetic fields, which meant that as you moved around the room, the concept of "up" kept shifting in a decidedly nauseating way. We tried to compensate, but it never worked quite right, and none of us could keep the thing on for more than about 5 minutes.
So, yeah, cool, but ahead of its time.
Fast forward to day: I have a new client working on a virtual reality installation for SXSW Interactive, a big conference in Austin. It's based on this thing called Steam VR and the Unreal Engine, and a piece of hardware called the HTC Vive. Don't worry, I hadn't heard of any of those things either. But suffice it to say: this thing is cool. Badass, even. I fired up this demo from Google called TiltBrush, and it just blew me away. It wasn't, really, any different from the things we were tinkering with 10 years ago - and yet in another way it was completely different. Because it actually worked. The headset was light enough to feel invisible, the resolution was high enough to make you feel like you were actually there. Walking around felt so natural that I kept bumping into chairs I couldn't see. And the "paintbrushes" - kind of like Wii controllers - were perfect and natural.
So, yeah - VR is still going to be a niche thing for a while, yet - but I don't think it will be too much longer before we all wonder how we ever did without it.