As I roam the web looking for useful things I began to realize that others are always asking me what I have been researching lately. email me rickalm at aol dot com
2025/07/31
What I did in my Chicago Years - BigData
2025/01/25
My journey with HomeAssistant
2021/11/19
Using SubSlicing in Python passing "Slice Spec" as a string
Python's implicit [start:end:step] notation makes slicing objects very easy.
But if you want to create a function that accepts optional params that allow you to manipulate the return then your left to create your own interface specifying how to slice the return data.
In the sample below two params are passed to tester
So the below example takes "sliceSpec" does the following
- if sliceSpec is None, then replace with an empty string
otherwise split(":") fails - Traverse the list returned by split()
- substitute blank strings with None
- convert any values to integers
- Pass the transformed results from split() into arguments passed to slice()
- use the slice operator to access the subList from "theList"
Example Code
def tester(theList, sliceSpec=None): returnList = theList[slice(*(int(i) if i != '' else None for i in (sliceSpec or str()).split(":")))] print(f"'{sliceSpec}' = {returnList}\n") mylist = [ 1,2,3,4,5,6,7,8,9 ] tester(mylist) tester(mylist, None) tester(mylist, "") tester(mylist, ":5") tester(mylist, "0:1") tester(mylist, ":1") tester(mylist, "1:-2") tester(mylist, "::-1")
Results
$ python3 test 'None' = [1, 2, 3, 4, 5, 6, 7, 8, 9] 'None' = [1, 2, 3, 4, 5, 6, 7, 8, 9] '' = [1, 2, 3, 4, 5, 6, 7, 8, 9] ':5' = [1, 2, 3, 4, 5] '0:1' = [1] ':1' = [1] '1:-2' = [2, 3, 4, 5, 6, 7] '::-1' = [9, 8, 7, 6, 5, 4, 3, 2, 1]
2019/11/11
Zigbee Lighting - Sylvania 74099 4/8 button remote will not pair.
https://community.hubitat.com/t/sylvania-lightify-smart-switch-8-functions-4-buttons/10943
Update:
Ken Fraleigh from the Hubitat community pointed out that what I thought of as "Reset" (3-4) is actually the ZLL (Zigbee Light Link). This information came from the European Sylvania site where they have been discussion support for ZB 3.0 and Hue Bridge compatibility.
So I was reading through the threads above and others trying to get the Sylvania 4 button controller working with the Lightify Hub . We have a goal of keeping this cost effective, shopping for deals. Maybe Hubitat for x-mas,
Anyway while trying to get one re-paired was thinking back to another one I had and was sitting on the shelf waiting to go back. The Device has 4 buttons
| 1 | 2 | |
| 3 | 4 |
| Reboot: | 1 & 4 | ||
| ZHA Pair: | 2 & 3 | ||
ZLL Pairing: | 3 & 4 |
2018/12/04
Mapping Private/Public Docker ports with AWS ECS and Docker Net=Bridge
Amazon's ECS agent has a lightweight which will expose details about the container which happens to include the Private/Public port mappings. I've included a link to the script I wrote here GitHub Gist along with the code below.
It requires the use of JQ which I happen to consider a fundamental tool if your going to manipulate JSON files from within bash.
2018/08/23
Testing for data types in Jinja Templates
Some Background on Jinja
Jinja allows loops, conditionals and a very Unix/Shell like ability to pipe the contents of variables from function/filter to the next to evaluate and transform variables. One of the simplest forms that helps to explain the syntax isIn the above case, the value defined by variable is piped to the default filter after the pipe. The default filter does what it's name implies, if the value passed is None or Undefined it applies the passed arg as the return.
There are many other good examples of Jinja filters and loops so I'm not going to try to cover that material here.
Testing Types in Jinja
In order to create templates that are not brittle and fail in unexpected ways testing that variables are as expected before getting into more complex code is always advisable. A simple precaution might look like{% for value in python_list | default([]) %}
{{ value }}
{% endfor %}
As you can see from the example above and combining it with knowledge about default you can see that the loop executes and in the event python_list is undefined the for statement is protected against failure since an empty list will be substituted for the undefined.
The issue is how to protect against other data types, if python_list was a dictionary how would this behave, or any other python type.
Jinja includes some type tests, but they sometimes are simple as but the creators of the Jinja typing were apparently thinking about language independent tests when they created them. A great resource for Jinja filters is https://www.webforefront.com/django/usebuiltinjinjafilters.html which discusses the primates
'is mapping' (definitive)
'is number' (non-definitive)
'is iterable' (overloaded)
'is sequence' (overloaded)
'is sameas' (tests inheritance)
As a result of the non-deterministic nature of the tests described above a bit more logic must be applied to determine Python types if you want to use the Jinja filters (vs in-line python)
Below are the best conditionals I've found to type an element, tho if you were to structure it as a If/Then style case block you can simplify the tests a bit because of precedence. These are meant to be stand-alone "fully-qualified" tests.
Testing for Strings
{{ value }} is a string
{% endif %}
The complication starts because a string "is string" also tests positive as "is sequence" and "is iterable" because a string is a list of bytes that python treats as both an array string[0] and a simple variable
What's missing from the filters are items like "is boolean" "is list" and "is dict".
Testing for a Dict
{% if value is mapping %}
{{ value }} is a mapping
{% endif %}
Testing for a Boolean
{{ value }} is a boolean
{% endif %}
Testing for a Number
{{ value }} is a boolean
{% endif %}
Testing for a List
{% endif %}
Summary and Example Code
Below is python code demonstrating the above principles in an easy to replicate manner. OrderedDict is used to produce results in a repeatable manner, it was not necessary.import yaml
from collections import OrderedDict from jinja2 import Template as Jinja_Template
sample_data = """
a: 1
b: one
c: "2"
d: "three"
e:
- 1
- 2
- 3
f:
one: test
two: further testing
3: even more testing
g: True
h: False
"""
sample_template = """
Testing Jinja Types
{%- for key,value in sample_data.items() %}
Processing {{key}}={{value}}
{% if value is sameas true %} is True{% endif -%}
{% if value is sameas false %} is False{% endif -%}
{% if value is number %} is number{% endif -%}
{% if value is mapping %} is mapping{% endif -%}
{% if value is sequence %} is sequence{% endif -%}
{% if value is iterable %} is iterable{% endif -%}
{% if value is string %} is string{% endif -%}
{% endfor %}
Testing Python Types
{%- for key,value in sample_data.items() %}
Processing {{key}}={{value}}
{% if value is string %} its a String{% endif -%}
{% if value is mapping %} its a Dict{% endif -%}
{% if value is sameas true or value is sameas false %} its a Boolean{% endif -%}
{% if value is number and value is not sameas true and value is not sameas false%} its a Number{% endif -%}
{% if value is sequence and value is not mapping and value is not string %} its a List{% endif -%}
{% endfor %}
"""
sample_data = yaml.load(sample_data)
print(yaml.dump(sample_data, default_flow_style=False))
sample_data = OrderedDict( sorted(sample_data.items(), key=lambda x: x[0]) )
templater = Jinja_Template(sample_template)
print(templater.render(sample_data=sample_data))
Output from the above:
Testing Jinja Types
Processing a=1
is number
Processing b=one
is sequence is iterable is string
Processing c=2
is sequence is iterable is string
Processing d=three
is sequence is iterable is string
Processing e=[1, 2, 3]
is sequence is iterable
Processing f={3: 'even more testing', 'two': 'further testing', 'one': 'test'}
is mapping is sequence is iterable
Processing g=True
is True is number
Processing h=False
is False is number
Testing Python Types
Processing a=1
its a Number
Processing b=one
its a String
Processing c=2
its a String
Processing d=three
its a String
Processing e=[1, 2, 3]
its a List
Processing f={3: 'even more testing', 'two': 'further testing', 'one': 'test'}
its a Dict
Processing g=True
its a Boolean
Processing h=False
its a Boolean
2018/08/19
Every thing you every wanted to know about Linux networking.
Think about your home router, it's able to have a connection to the internet, manage translating addresses and ports. It has the ability to map services for gaming, telephony, and streaming video. Also support for different providers and things like pppoe and other insane upstream connections types is in there. Yeah that's not "router code" that Linksys, DLink or the others wrote, your seeing Linux in action
All that capability to run routing protocols, packet translation, Port mapping and almost everything you can thing of it's just part of the Linux kernel and companion utilities like DnsMasQ. Companies such as Linksys created the market but their software simply configures the kernel with the what to do as config files. The ability to translate ports on video streams in real time can't afford to suffer packet duplication so it has to stay in the kennel or risk the time delay in packet handling restricting bandwidth
So what can the Linux kernel do. Take a look around cause these guys are doing this with 20$ hardware. It's not speciality hardware is doing all the heavy lifting like a $2,000 Cisco router. A Raspberry pi has disadvantage of Ethernet attached via usb vs. the router vendors making the nic bound tighter to the chip with some minor hardware acceleration. But I use Pi's for many reasons including routers. I have a PineBook as my personal laptop.
The "router" web pages configures the files for the underlying kernel filters and other network tools which are also part of Linux just running in user space (like the routeD process), they don't need throughout/performance like kernel modules they need OS support as an app like memory management
So the kernel has got all that and the hardware side of the kernel trys to support every feature vendors throw at them and work together to support features like AWS VPC Enhanced Networking which configures the hardware to build a tighter data path from itself to your VM kernel space. All this is on the path to zero copy networking. That's the best we can hope for in routing
So realize there is a lot underneath a VPC network interface in your kernel, under that is where it gets fun
2018/01/05
Git Tricks .. fsck
In addition, locally my commit's had also vanished from "git log" and I could not find them anywhere. After a few minutes of bashing my head against the wall I turned to google and it took a few moments to craft the right search but I found an article that led me to "git fsck --lost-found"
As soon as I read the statement the words "fsck" and "lost-found" lightened my mood.
The output of the command shared a list of git commit's that had become detached from any branch and I was then able to checkout the orphaned commit, found my files and merged it back to my working branch.
There are many articles out there describing how this works and you can search yourself but here is the "official man page"
2016/06/15
Comcast and the X1 Platform
When it works its an amazing platform, but when it doesn't you want to go running back to over-the-air TV and scream at the top of your lungs. I wanted to document a few things here to help others.
Your DVR Service is not available at the moment:
The X1 creates a house wide network between the DVR's to allow you to watch a show recorded in one room on any other devices. They also have X1 Mini's, which are tunerless player devices that use the tuners in another X1 box to watch live TV.Under the covers this is using a technology known as MoCA (Multimedia over Coax Alliance). In short this is an Ethernet like network similar to the Power-Line Extenders that you can use to extend a LAN from one part of your house to another. MoCA. This network uses the Coax to create a network in a frequency range above what the cable company can use (1.1ghz) because it does not transmit very far.
But inside your home this is great unless you happen to live in an apartment complex where the guys who installed your cable didn't think "someday it might be important for the connection in the bedroom to talk to the livingroom". In our case all of the Livingroom's (4 Story building) were connected in a daisy-chain and the bedrooms were on a separate chain. The common spot was at the distribution amplifier and the two devices were separated by several splitters/amps that the MoCA network existed but was a very poor connection.
Once we got a technician to re-wire the feed into the apartment so the two connections terminated on the same splitter everything worked great. When I went out to look at what he had done, I also found a filter connected in-line with the input to the splitter. Its a low-pass filter allowing everything below 1ghz through, but blocks the MoCA traffic on our coax from being passed onto the neighbors.
Error Messages RDK-03032 and RDK-03033:
These messages seem to occur mostly during prime-time but in the last few weeks we've been getting them at all hours of the night. Anytime you press any button on the remote, including play/pause the message can appear. The most frustrating is when you are watching a show from your own DVR buffer (not on-demand) and you try pausing playback and you get the pop-up and the show keeps playing.If your a technologist its even worse, your left thinking how can the program be playing but "it can't connect to the X1 platform". After allot of reading it seems many people have reported this in many parts of the country. My best guess is they are trying to store the current playback position of the show to their servers and when it can't instead of ignoring the update lets throw an error. I'm also sure that Neilson or some other data collection firm is sponsoring this functionality to understand consumer behavior.
"Battery Low":
This one stumped me in a serious way for a few weeks. When you press the Xfinity button, next to the time/temp there was a gauge that would show one bar and in the color red. So many posts about changing the batteries in the remote (they are now LoPAN RF4CE wireless, which is how the nice voice feature works).While debugging the 3033 messages I ran across a post that suggested going to Xfinity / Settings (Gear) / Comcast Labs / Cable Signal Strength and check if the signal strength is good. Well look at the other option on that screen that says "Low Signal Indicator: ON" and point to the item and look at that. It says "Display an indicator by time/temp when your cable signal is low".
So a Battery Low isn't a Battery Low at all. Its trying to tell you the cable signal isn't good.
Getting to the diagnostics menu
Press and hold the Exit Button for a few seconds, then press Down twice followed by the Number 2I haven't seen anything that can cause damage, but items of interest are the MoCA stats, which shows a matrix of Device ID's (not useful for knowing which is which) and the Mb/second the connection is managing. Anything below 225mb/sec is troublesome and we are getting around 245mb/sec now and have no problems.
There are other screens that show power levels, but its only for currently watched channels so you don't have an idea how its receiving across the spectrum.
So how did I fix the problems ?
Armed with the knowledge there was actually a signal problem, yet I couldn't see anything in the Diagnostics that looked wrong I started looking more at our Cable Modem/Router status. Under Gateway / Connection / Xfinity network you can see stats for each of the download/upload channels. Power levels were between -0.5 to about +1.1dbm which seemed reasonable to me (techs kept quoting -6 to +6, which has been an answer for many years and felt correct)DOCSIS 3.0 (Cable modem standards) can achieve the stunning speeds we've gotten used to by using several channels in a bonded configuration (think M-PPP if you remember what ISDN is) and we were bonded across 5 channels for download. Upload was just a single channel and it didn't make me think twice about it (upload is a much bigger issue to maintain). But one thing that kept annoying me was that single upload channel was listed a 5m/symbols per second yet wasn't I paying for 10mb upload. Symbol Rate is like Western Digital saying I have a 1TB harddrive with 920MB.
Also the number of correctable and uncorrectable errors was very low compared to received so the error rate was very low. Still nothing other than the "Battery Low :) warning" so whats up.
In Comcast's attempts to make us happy they kept shipping us new modems, dvr's etc. How likely is it that both DVR and cable modem is bad so what else. I know the installers changed splitters, cables and everything but the color of the paint on the walls in my place, but at the bottom of the box of things that had been shipped to me was another 2 way cable splitter. Sure why not give it a try I am seeing a warning about low signal.
Swap the splitter for the new one, reboot everything and login to the router. Well now I have 4 upload channels, power levels are up between 4 and 6db across the board and the DVR seems very happy. I check the X1 diag screens and power levels there are up almost 8db, now between +3db and +9db.
Sadly in all of the work, they wound up using a splitter that was defective and since the tech's still think -6 to +6db is acceptable they were all happy. But the X1 box was trying to tell us something different with its little red power level that would come and go.
How has this improved the connection you ask ?
Just before writing this I decided to goto speedtest.net to see what the changes were. In the past I was seeing 10-30mb down and 1-5mb up. I don't expect anyone to deliver what they advertise and I honestly forget what i'm supposed to be getting (soo many freebies thrown at us during this)You ask what are the new numbers. 91Mb/sec down and 12Mb/sec up.
Ok, that is HIGH SPEED internet !!!!
2016/06/12
So why do they make CGI characters look like actors
I've never really thought much about why they try to make CGI characters look like the actor, but I've always liked the result. But I think I understand the science behind it and it's fairly kool.
But first I have to switch gears. I've been re-reading one of my favorite books that has helped me out with the results of a spinal cord injury almost 10 years ago. Actually I've been listening on Audible on the drive to/from work but the way my mind works I'm kinda reading but that's another story. The book it's called The Body has a Mind of its Own by Sarah Blakeslee (btw Audible supporting "send to" in Android could have made this much more attractive, take a lesson from Slack on embedding links). It talks about the science behind how your senses/nervous system connect to your brain and why many things happen like phantom leg syndrome which kinda fits what I deal with. It explains things like when you put your hand in front of one eye and look through a tube with the other you see a hole in your hand (I'm pretty sure it's this book, I'm only about half way through again). There is a link at the bottom, and it's a referral link to Audible so be warned. If you use it I get credit and you get the book free.
So yesterday the section was talking about how your brain can re-intergrate things. From teaching monkeys how to use a rake, to how you hear better when you see the person's mouth move. Yea we all know people that can read lips, but there is apparently a deeper connection in the language center that processes both the audio and visual data and improves one by using the other. Then the author made a specific point this is why we perceive the audio in a movie come from the screen when we all understand the speakers are not behind the screen.
Our brains expect audio to come out of the actors mouth and when we hear something that should match we connect the dots and the audio is clearly coming out of the person's mouth.
And sound systems are stunning now how they can read a room and optimize. Short of the extraordinary device in my hand that I'm writing this post on which I had to wait 40 years to get the idea that a speaker (or amp) can do acoustical analysis and adjust so to remove feedback, noise and make it sound right without hours of playing with the settings. But that's only half the story, because when the audio and video are out of sync we dislike it on a fundamental level.
Ok back to topic. I'm watching a movie The Book of Life, and it's a movie where making some of the characters look like the actors would take away from the movie. Hector Elizondo plays Carlos Sanchez, but I don't see Hector in the character. It felt wrong when the character was introduced and throughout the movie it bothered me cause really like Hector he has genuine talent. In contrast to something like Audible where I know the voices and from book to book I recognize the same talent but I've never seen them, I have no expectations on a visual all I can connect the voice to the image I already have for the character. When the character can look like the actor because most on-screen voices in movies are people we've seen on tv/movie so we already made an audio/video connection.
Maybe I'm seeing more than is really there or maybe everyone will say yea we knew that. A few weeks ago I stumbled on a whole universe of alternative trek (see my previous post) and as I've asked others about was I the last to be clued in I've been finding maybe 1 in 8 had heard of it and half I asked are now fans.
Let me know what you think, I'd love to hear so feedback.
Here is the link:
The Body has a Mind of its Own
I'm sure there is an AD below for Audible.
Peace
2016/05/09
OK, how did I miss this .. Star Trek FAN movies and a Series
After spending some time poking around I found a bunch of stuff on youtube, most of it is recorded gameplay that centers around the new game Star Trek Iconians and it's not bad material to watch but then I found my new favorite series.
Star Trek New Voyages (aka Star Trek: Phase II) is a series that started in 2004(3) and has been producing about an episode a year (up to ten episodes now) which can be thought of as Season 4 of ST-ToS with a new cast. It still takes place during the original 5 year mission and includes well constructed cameo's from George Takei, Walter Koenig and a few others from the original series. Watch it here
Production quality is exactly what you'd expect from a fan film, but the special effects are studio quality. It seems that some of the earlier episodes are fairly compressed and suffer lossy compression, but stick with it as it feels like the old television series. By the time I watched the two part Ep 4 & 5 the quality was HD Broadcast quality and the actors really started to shine without losing that "Shatner" style to the Kirk Character.
In addition to the above, i've found a few more projects worth checking out
Star Trek Renegades - YouTube - WikiPedia
Star Trek: Of Gods and Men - YouTube - Wikipedia
And there are more, check out the wikipedia page for all of the projects - here
Live Longer and Far better Entertained
2012/01/08
My android phone just got molested, Police say nothing they can do
Lucky, I don't have a default browser on my phone so I got a popup and noticed the url didn't make any sense. After some digging I discovered its a new "Ad" model. Worse yet according to PRWeek "Airpush Named Finalist in Two Mobile Industry Awards.
So developers now can load an API and not only put ad's in their APP (I've never had a problem with an Ad in my app), but this is gone WAY too far. Now they can put notifications into the top bar even when the app isn't visible misleading people.
Its a real shame, the culprit was one of my favorite apps (MySettings), but its gone now (along with 3 other apps from the same developer).
My real problem is companies like AirPush will succeed but foolish and struggling developers (Like MySettings) will pay the price. I hoped that this was something that happened in the last few days, but reading comments on marketplace it seems that they started including AirPush over a month ago, I just noticed because I just updated.
So my Hat's off to AirPush for finally breaking the Android development community. God Help me for saying this.. But I guess I need to consider an apple product now
2011/07/21
Is Audible Good or Evil
Audible splits books into chunks of about 8 hrs each, so a book can be 1,2,3 or more downloads (tho I've never seen more than 3).
95% of the time I think Audible is a great service, and I spend on average $250 per year with them on material.
Audible is owned by Amazon, but they are not integrated into Amazon nor do they have any way to integrate themselves into social media (such as this blog).
I love the site, but I have no way to share that with friends / family nor participate in any referral programs. How do they expect to expand their market-share if they are missing out on the biggest marketing opportunity.
What most concerns me about Audible is the DRM on the files. I'm not complaining because I want to pirate the audio, there are many ways to do that if that's what I wanted.
If I were to close my Audible account would I still be able to listen to my books?
If I were to "upgrade" my Audible login to my Amazon login would I have to re-download all of my books ?
If Audible were to be closed down what happens to my purchases ?
I've spent more than $700 with Audible in the last few years and I'm taking it on faith that my purchases are secure for the rest of my life. That spawns another question.
If I purchase a book I can pass it down to my heir's but what about my electronic purchases. Just who's lifetime counts ?
Is it My Lifetime, Audible's lifetime or my Estate's Lifetime ?
I realize most of the Questions around DRM are not just Audible, but Audible is quite closed mouth on this topic. Last year I called and asked these questions and I was told "of course your purchases are safe" but I have no proof of this.
I want an Audible that I know what my recourse is, one that I can profit from by helping them to expand marketshare and one I can talk about and share links without having to cut/paste every link.
2010/11/02
Android Phones
I'll not rant too much about that topic, but back when Sun bought MySql, Innotek (VirtualBox) and a few other open source projects I was fairly vocal about the murky water that could evolve from that. I think this Java debate is just the first round of Oracle trying to own all things.
Back to the phone. For those of you who haven't yet had the chance to play with an Android based device you'll be in for a treat. The interface is similar to the iPhone from the other evil Empire who believes in Open Source only when they get to define the words "Open", "Source" and "Independent Thought". If your willing to be an iClone go pick up an Apple product and leave your brain at the Genius Bar.
The Con's
My biggest gripe is really the lack of a physical keyboard. I've found lots of ways around the problem, the most interesting being the voice to text feature. Whenever the keyboard appears there is a microphone button and you can then say what you want to type and it does a damm good job of decoding it. That being said there is a catch. It seems that the voice recognition works so well is because the phone uploads the audio clip (I'm assuming to Google) and then the translation comes back to the phone. Don't try to use this feature when you don't have at least a 3g connection, it will just fail with a network error.
Being an "Open" platform I found a replacement keyboard app which asked for permission to read my existing SMS's, Email's, etc so that it could learn my vocabulary, style of writing and it did a great job of predicting what I wanted to say. Typically I was typing 1-2 characters of a word and then could hit space (word completion) and move to the next word.
Between the voice recognizer and the predictive keyboard I had several of my friends begging me to "stop texting them" since for every 3 words they sent me I was responding with paragraphs of comments, questions, answers. You get the idea !
Unfortunately that keyboard replacement was a beta and one day I was greeted with an "Upgrade" which proceeded to remove my free beta, download the crapware demo with a 7 day limit and somehow the product actually got worse between beta and production. Even tho they only wanted 7$ for the new version, between the "Improvements" no one liked and the kick in the rump I got after helping them beta test (Beta Testers had to agree to upload data about hit ratio's, replacement words, etc) I wasn't even offered a discount on the final product.
Lastly while the device itself is amazing I now surf from power cord to power cord. I don't measure battery life in hours till dead but in feet to power.
Please don't take my comments so far as the Death of Android, I just wanted to get my gripes out of the way first.
The Pro's
Physically the EVO is a full color, 4.3" LCD touch screen, weighs about the same as my old Treo 680, has a 8MP rear camera, a 1MP front facing camera for video conferencing, a regular headphone/headset jack, one of those annoying "New" USB ports (gota start buying new cables) and the highly touted "Kickstand".
Yea, its got a little flip out foot that helps it stand up when its in landscape mode so you can watch movies on it. Not 100% stable, but I'm using it far more than I'd expect.
Besides the connectors I've described so far its got one more connection on the bottom about the size of the USB port. Its MAYBE 3/8" by 1/4" in size but damm if it's not a "Micro HDMI" port. This thing will output 720 progressive (1280x720) video and it looks sharp on my 42" LCD in the livingroom. That was a bonus extra I was not expecting.
Internally its got 1GB of flash plus a Micro SD slot and came with an 8GB card. I haven't even had a chance to see how big of a device I can get for it. Most of the media I have loaded are audio and video podcast's and the App I use for my RSS feeds has some utilities for purging podcasts that have already been watched, auto download new, etc. etc. The program is BeyondPod and cost me 6$ (My most expensive purchase to date) and its got some bugs, but i've watched/listened to over 200hours of content since I got the phone.
HTC did a nice job on the user interface and had they included one feature in the desktop manager/launcher (HTC Sense) I would not have discovered the world of alternative launchers. Strangely none of the Sense interface panels auto-rotate to landscape mode and I found using the phone in the car awkward since landscape is the best suited for the Navigation App, but I was having to look sideways at the menu's which was not good for driving.
I found a replacement launcher called LauncherPro and it does about 99% of what HTC Sense does. The most significant way that Android and the iClone is about widgets. I'll be the first to admit that I've spent less than 1 hour with any apple product in the last 10 years so maybe I've just never never discovered the world of iPhone widgets but this seems to be the defining difference between the products.
Like the Google Desktop Widgets that most people have a love/hate relationship with in Windows, Widgets are one of those things that make the Android unique in my mind. It's not just about Dynamic Icons, with widgets if the app supports it you can use various portions of the screen to display toolbars, calendar entries, etc etc, just about anything you can think of.
On my phone, main screen across the top is a 5 button widget showing status of the Brighness, Wifi Radio, BlueTooth Radio, GPS Radio and if AutoSync is enabled. Touching the portion of the icon changes the state of the device and I can customize which buttons appear in the bar.
Also on the front screen I have a widget showing battery charge, time to dead or time till charged and the widget is also a conventional icon. I tap it and it launches the battery minder (an add-on called JuicePlotter).
There is another one called 3G WatchDog which keeps track of my data plan usage. I told it what my monthly allotment is and when my contract monthly renewal is and it shows me if I'm going to go over my allotment. It will even disable the 3G Radio if I want at a preset limit.
This only scratches the surface of what I can do with this phone but it has one amazing feature that my Treo could never do reliably. I can ACTUALLY make and receive phone calls on the device. Yes amazing but true its actually a phone. Every time my Treo would ring it was like playing a bad Vegas Slot Machine. Would it answer, lockup, reboot, you never really knew !!
I've had a few difficulties with the Evo and phonecall's but that's mostly related to my being a long time user of GrandCentral aka GoogleVoice.. There is excellent integration with GV on the phone, voicemail's automatically download to the phone and can be listened to even when your out of a service area.
My frustration's are related to the operation of GoogleVoice in general more than the phone itself. For the first month every time I got a Text I'd get two copies of the text, then a text from myself to myself telling me I was not available to respond to the text and then another text telling me I had messages waiting.
Ok, enough for my first post on the phone. I promise I'll continue the posts on the phone if people are interested. Please use the poll on the right side to tell me if this is something of interest.
Rick
2009/10/20
Formatting a good Resume
While I personally believe he is on the right track that format is as important as content when it comes to a resume, as we all know when dealing with recruiters they insist on a "word formatted document" so they can fit it to their personal style. This has frustrated me for years, I have tried providing cut/paste locked PDF, faxes, etc and this has never really worked. I had several people re-type my resume for me so that they could put it in their format.
Of all the times my resume was reformatted "for me", only one reformatting ever appealed to me in terms of an improvement (IMHO). Remember there are two goals of your resume a) getting you an interview & b) as a reference document during the interview for notes and prompting questions.
One technique I've used to navigate the job-hunt process is to bring the resume I want to the interview and provide it to the person who your talking to. If your asked why your presenting a different resume the answer is simple and very honest. Typically I'll say "well you know how recruiting firms are, I want to make sure what your reading is what I wanted you to read not someone else's version of my experience"
In case you've never interviewed someone else let me describe a typical session from the other side of the desk. In some cases you know about the interview in advance, but more often 10 min before someone comes into your office and says "you have 20 min to interview someone for me". Even if you had the resume in your hand before the person is seated in-front of you, it's unlikely you've decided on the questions you want to ask.
Ever sit in-front of someone, they introduce themselves and then say "give me a minute to review your resume". This is the magic moment where they will highlight / circle / underline the things they will spend the next 15 minutes talking to you about. It's not about content now, its about formatting. The harder it is for them to scan over and identify the high points the less they are going to talk about specifics and it will become a general "what do you think you can do for us" style of interview. That or the dreaded 20 questions, that might lead down the wrong road and create the wrong impression.
The resume that is in the hand's of the interviewer at the time of the interview will be your last "first-impression". Therefore, format is as important as content at this moment. Also showing to an interview without your own copies of your resume is a poor impression, and also consumes valuable time while the interviewer tracks down a copy.
Hopefully, you'll walk in and the interviewer will dive right into a conversational style interview (I find these are the most successful), but if it becomes 20 questions think about it, do you want to have any control over the topics of the questions or not.
Next time your on a bus, subway, train lean over and glance at the newspaper, book, etc that the person is reading (I'm not suggesting reading confidential documents). Pay attention to which style of print you can read from a distance, which fonts can be scanned more easily while moving in front of you, etc. Formatting is to thank for the easy or difficultly in which you can glance at something from a distance.
Oh and the corollary to this, print all email's, confidential information, etc in that wonderful Arial font, or even better Arial Narrow. Print it out, set it on your desk and try and casually glace at the document to get some information. Not easy is it..
2009/04/27
Windpower - Fad or Fashion
But then I sat down and did some research on DIY windpower and I was really impressed. There are alot of people out there building 500 watt systems for under $2,000. If you willing to play a little loose with some regulations I've seen some systems even cheaper.
If there is enough interest in the topic I'm going to create an entire thread to this topic but this is something I need a few fellow authors for. Shoot me an email if you have some interest and would be willing to contribute at least once a month.
Rick
2009/03/12
Woot inspired idea for getting the message accross for Missing Children
Anyway, they have a T-Shirt section and have been using user created art for designs that are sold online. One bright member suggested printing shirts with the picture of the missing children as part of the rotation and profits from that shirt goto the foundation that runs the missing children center
2008/09/12
DVI - Don't Video Infuriate you
Seriously, as a result of my wanting to replace my tivo with myth tv (see my other post), i've made the mistake of wanting to plug my fancy PC into my fancy TV and thats where the defecation hit the rotary oscillator.
The first thing to understand is that DVI was meant to be a end-all connector and as such tries to be many things to many people. Every wonder why some cards work with the DVI to VGA adapter and some don't. Well its because not all DVI is created equal.
DVI is actually two standards DVI-A (Analog) and DVI-D (Digital). In the -A standard there are 4 pins that are off to the right with a metal tab between them (ground) which carry the analog signal. The -D uses the pins to the right to carry the signals (see below for more information). The designation of DVI-I is really a DVI-DA or DVI-AD connector. All it means is that the device supports both digital and analog formats.
See the following picture for more information
http://www.lyberty.com/encyc/articles/tech/img/all-DVI-types.jpg
Looking at the Digital connector (or the -I [-AD] version) you see that there is something called Single Link and Dual Link. Dual Link uses more pins than Single Link and basically its a second data bus for the connection (like PCIe 1x vs PCIe 2x)
Dual Link exists so that when there is more data to send to the monitor than one set of wires can handle the data stream can be split increasing the bandwidth. Initially most video card vendors used this as a way to support dual monitors, they would give you a Y cable which was a Dual-Link Male with 2 Single-Link Female's. This limited the combinations of what you could do (only 1 Analog, had to be a specific connector, etc) so they started putting two connectors on the card
But lets explore the limits of Single Link and why you might want Dual Link
DVI signal link supports up to 165MHz of bandwidth (165,000,000/pixels/second) or 3.96 Gbit/s if the reading I've done is correct
1600*1200 at 60 fps = 115Mhz (115,200,000 pixels/second)
1920*1080 at 60 fps = 124.4Mhz (124,416,000 pixels/second)
1920*1200 at 60 fps = 138.2Mhz (138,240,000 pixels/second)
1920*1440 at 60 fps = 165.8Mhz (165,888,000 pixels/second) which is too fast for the single rate, which means that 1920*1200@60fps is the practical limit for SingleLink
DVI dual link supports up to 165MHz of bandwidth (165,000,000/pixels/second) but extends the data range to 7.92 Gbit/s if the reading I've done is correct
As long as the monitor understands that the data is sliced accross two different wires this effectivly increases the bandwidth to 330MHz, but lets call is 2x165MHZ
From Wikipedia:
Example display modes (single link):
HDTV (1920 × 1080) @ 60 Hz with CVT-RB blanking (139 MHz)
UXGA (1600 × 1200) @ 60 Hz with GTF blanking (161 MHz)
WUXGA (1920 × 1200) @ 60 Hz with CVT-RB blanking (154 MHz)
SXGA (1280 × 1024) @ 85 Hz with GTF blanking (159 MHz)
WXGA+ (1440 x 900) @ 60 Hz (107 MHz)
WQUXGA (3840 × 2400) @ 17 Hz (164 MHz)
Example display modes (dual link):
QXGA (2048 × 1536) @ 75 Hz with GTF blanking (2×170 MHz)
HDTV (1920 × 1080) @ 85 Hz with GTF blanking (2×126 MHz)
WQXGA (2560 × 1600) @ 60 Hz with GTF blanking (2x174 MHz) (30" Apple, Dell, Gateway, HP, NEC, Quinux, and Samsung LCDs)
WQXGA (2560 × 1600) @ 60 Hz with CVT-RB blanking (2x135 MHz) (30" Apple, Dell, Gateway, HP, NEC, Quinux, and Samsung LCDs)
WQUXGA (3840 × 2400) @ 33 Hz with GTF blanking (2x159 MHz)
Further Reading on DVI:
http://en.wikipedia.org/wiki/Digital_Visual_Interface
Further Reading on HDMI:
http://www.datapro.net/techinfo/hdmi_info.html
2008/09/04
Replace your Tivo
OK, lets start with the fact I LOVE TIVO. I think i've had one in my house from Tivo Year 0 and its a fantastic product. That being said the features have not stayed up to date with modern life.
On my list of what tivo does wrong/does not have include: No Keyboard, No Email, Lack of browser, no weather, PC connection SW SUCKS (might I say SUCKS). Digital DRM interferes with kool features such as TivoToGo, transferring content, One "Tivo" many devices (i.e. each tivo has its own database of preferences, recording schedule, etc)
What Tivo does right: Wishlists, Profiling my shows, annoying me with commercials that link to tivo features.
So why is this blog about replacing Tivo with something else. Well it has to do with the fact that Primetime viewing means I want to record shows on 4 channels at once, I want to watch something in the livingroom, but pause and move to the bedroom when i'm tired without having to plan ahead.
MythTV is one of the many open source DVR projects out there and it gets alot of things right. While not obvious as to the pieces of the product, there are three main components.
MythFrontend is the display subsystem that allows you to navigate menu's, watch content on the harddrive, download from the internet and schedule recordings. What is does not do/have is record shows.
MythBackend is the subsystem that uses capture cards to record content to the harddrive and decide which backend will record what show. That is the magic of MythTV, there can be more than one backend and a backend can have more than 1 tuner. While this is complicated when you try to have more than 1 tuner / backend or more than one backend, when its setup its very powerful.
The third piece is less obvious, but one backend is the "master backend" and that is the node that runs MySql and maintains the global recording schedule, downloaded guide data and co-ordinates the platform (yes you can run MySql on a independent server, but lets pretend)
Last year I bought a mid-priced motherboard, a good capture card and downloaded MythDora. It seemed to be the right collection and installed rather easily. As soon as I wanted to install another backend so I could record on two machines (was going to have 2 pc's both running FrontEnd/BackEnd) it got complicated. When I started using the ATSC capture and wanted to watch TV at 1680x1050 (my display max) the Fedora base did not include the OpenGL nvidia drivers. So I installed the compiler tools, downloaded the nvidia drivers and installed. Video performance went up, but now the ALSA sound drivers for the advanced soundchip (HiDef) on the motherboard stopped loading. Download and compile those and now the remote control stuff stopped loading. Ok BOATANCHOR time, and it went on a shelf.
This weekend I dusted off the machine and downloaded MythBuntu. Ok I am a RedHat admin through and through so this is not easy for me. Well installed and there were a few shocks. A nice GUI that helps install other tools and configure Front/Back ends properly. a "nvidia" install tool and other tuning tools.
Have I gotten it all setup and several machines online yet, the answer is no. But its been running for 4 days without a lock-up and the picture is great. Sound works as well and this weekend I will move it to the media cabinet and connect it to my plazma TV. Will keep everyone posted on the progress
[/QUOTE]
2008/03/25
Way Kool KVM (not) .. 2 PC's, 1 Keyboard
So I sit at home with my laptop and anytime I want to put something up on the mediaPC in my house to show others I need to VNC into the machine, then use my Laptop's keyboard and mouse to control the machine.
This little tool allows you to create a "virtual desktop" accross machines and OS's. One machine is the "server" which means thats the active keyboard and mouse. Load a client on the other PC and then create a config that says client is to the right of server and server is to the left of client. Now drag your mouse off the right side of the server and you are now on the client.
Confused ? its ok, actually when setting it up I screwed up a few times myself. Interesting little side note, you can make your own pc a neighbor to itself (ok, explain that one). My machine is named goofy, in synergy goofy is to the left of goofy, goofy is to the right of goofy, goofy is above goofy and of course goofy is below goofy. How goofy am I now, well drag the cursor off the top and it shows up on the bottom. Yep go off the left and it pops on the right. Cute trick huh ?
But back to the main reason it exists. Now I can have 2 pc's and 2 monitors on my desk without needing 2 mice and 2 keyboards or some silly KVM.
Rick