<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7027718887270451844</id><updated>2012-01-05T18:27:58.242-06:00</updated><category term='Asterisk'/><category term='Skype For Asterisk'/><category term='SfA'/><category term='fail relaunch blogging procrastination ADD'/><category term='Skype'/><title type='text'>Das Blog</title><subtitle type='html'>Robots, Asterisk, Digium, VoIP, Technology, Nonsense and More...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-1979727620036514767</id><published>2010-11-22T22:28:00.003-06:00</published><updated>2010-11-22T22:48:51.386-06:00</updated><title type='text'>TSA: Security Theater Goes Too Far</title><content type='html'>I've been watching the recent protest over the TSA's decision to go all-in with a combination of "Advanced Imaging Technology" and highly invasive body searches.  Last week I stuck my tongue out in the AIT scanner at Tulsa International and was treated to "extra screening" in the form of a significantly creepy belt-line grope.  I guess that'll teach me...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To be honest, I'm sick and tired of backscatter scanners, pat-downs, getting to the airport two hours early for international flights.  I'm tired of being treated like a criminal.  Most of all, I'm sick and tired of America expending more of its resources on the infinitesimally small number of people who are our true enemies than we do on our own citizens.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Placing locks on the flight-deck doors of airliners essentially solved the real risk exposed by the 9/11 attacks.  I've travelled to other countries and to the best of my knowledge the good-old USA is the only place I've been asked to take off my shoes, take out my tooth paste or let some guy stick his hands down my pants.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enough is enough.  Let's drop the theatrics.  Let's finally step back from the perpetual (and therefore meaningless) "orange" threat-level and go with simple, effective security practices rather than invasive, embarrassing and ultimately pointless procedures.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-1979727620036514767?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/1979727620036514767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=1979727620036514767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/1979727620036514767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/1979727620036514767'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2010/11/tsa-security-theater-goes-too-far.html' title='TSA: Security Theater Goes Too Far'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-5698614967025080615</id><published>2010-02-09T09:15:00.003-06:00</published><updated>2010-06-29T22:51:36.843-05:00</updated><title type='text'>Asterisk In Action: Web Conferencing With BigBlueButton</title><content type='html'>About three weeks ago my company (Digium) launched &lt;a href="http://www.asteriskexchange.com/"&gt;AsteriskExchange&lt;/a&gt;, a marketplace of sorts for Asterisk add-ons and Asterisk-based solutions.  The idea is to give users a single site that catalogs all the amazing products and projects that connect with Asterisk.  Open source and free (as in no-strings-attached) products qualify for free listings, while commercial offerings pay a listing fee that helps cover the cost of maintaining and marketing AsteriskExchange.&lt;br /&gt;&lt;br /&gt;One of the first open source projects to get listed is an absolutely fantastic collaboration and conferencing system called &lt;a href="http://www.bigbluebutton.org/"&gt;BigBlueButton&lt;/a&gt;.  BigBlueButton (BBB) is similar in function to WebEx or GoToMeeting, but adds some really cool features including multi-presenter video, low-bandwidth document sharing and an open API for integration with other systems.  The audio conferencing component of BBB is provided by &lt;a href="http://www.asterisk.org/"&gt;Asterisk&lt;/a&gt;, which is one of fourteen open source "engine-level" components that power the system.&lt;br /&gt;&lt;br /&gt;The BigBlueButton client is a browser-based Flash app, so there's no software package to install or update.  Unlike most other collaboration tools on the market, BBB works with Windows, Mac and Linux.  The system was built for the distance learning market but works perfectly well as a collaboration or marketing tool for business.  The package is licensed under a combination of the LGPL and the AGPL.  The sponsoring company, &lt;a href="http://www.blindsidenetworks.com/"&gt;Blindside Networks&lt;/a&gt;, offers installation, support, ongoing updates and customizations.  They also sell commercial licenses the desktop sharing module.&lt;br /&gt;&lt;br /&gt;I've been looking for an open source collaboration suite for some time, so it's great to discover.  It's even better that they use Asterisk.  Complex, powerful projects like this prove the value of the open source development model.  There is no need to re-invent the wheel or own every component that makes up a solution.  Perhaps its a cliche, but in open source development, the whole is definitely greater than the sum of its parts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-5698614967025080615?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/5698614967025080615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/5698614967025080615'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2010/02/asterisk-in-action-web-conferencing.html' title='Asterisk In Action: Web Conferencing With BigBlueButton'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-4681302376047302332</id><published>2009-09-20T10:59:00.003-05:00</published><updated>2009-09-20T11:47:11.737-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Skype For Asterisk'/><category scheme='http://www.blogger.com/atom/ns#' term='SfA'/><category scheme='http://www.blogger.com/atom/ns#' term='Asterisk'/><category scheme='http://www.blogger.com/atom/ns#' term='Skype'/><title type='text'>Automatic Asterisk Extensions For Skype Callers</title><content type='html'>One of the more challenging things about using Asterisk with Skype is the fact that most Asterisk endpoints (phones, ATAs, etc.) don't let you easily dial Skype names.  I've come up with a partial solution to this using func_odbc, a Skype alias table and some basic caller-id manipulation.  Here's the scoop:&lt;br /&gt;&lt;br /&gt;First, create a table in your favorite ODBC-compatible database.  Here's my setup for Postgres 8.0.  If you're using MySQL the SQL will be slightly different.&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-- Name: skype_alias; Type: TABLE; Schema: public; Owner: ssokol; Tablespace: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CREATE TABLE skype_alias (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    id integer NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    name character varying(50) NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    description character varying(50),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    date_added timestamp with time zone DEFAULT now() NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    date_updated timestamp with time zone DEFAULT now() NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    exten integer NOT NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-- Name: skype_alias_id_seq; Type: SEQUENCE; Schema: public; Owner: ssokol&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CREATE SEQUENCE skype_alias_id_seq&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    INCREMENT BY 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    NO MAXVALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    NO MINVALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    CACHE 1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ALTER TABLE public.skype_alias_id_seq OWNER TO ssokol;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-- Name: skype_alias_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: ssokol&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ALTER SEQUENCE skype_alias_id_seq OWNED BY skype_alias.id;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-- Name: id; Type: DEFAULT; Schema: public; Owner: ssokol&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ALTER TABLE skype_alias ALTER COLUMN id SET DEFAULT nextval('skype_alias_id_seq'::regclass);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-- Name: skype_alias_name_key; Type: CONSTRAINT; Schema: public; Owner: ssokol; Tablespace: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ALTER TABLE ONLY skype_alias&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    ADD CONSTRAINT skype_alias_name_key UNIQUE (name);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-- Name: skype_alias_pkey; Type: CONSTRAINT; Schema: public; Owner: ssokol; Tablespace: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ALTER TABLE ONLY skype_alias&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    ADD CONSTRAINT skype_alias_pkey PRIMARY KEY (id);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Now that the database is built, you need to connect it with the ODBC by creating a 'dsn' (short for Data Source Name) in the /etc/odbc.ini.  Here's an approximation of mine:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;[asterisk]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Description         = Asterisk Database&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Driver              = PostgreSQL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Trace               = Yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;TraceFile           = sql.log&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Database            = asterisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Servername          = localhost&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;UserName            = ssokol&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Password            = whatever&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Port                = 5432&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Protocol            = 6.4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ReadOnly            = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;RowVersioning       = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ShowSystemTables    = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ShowOidColumn       = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;FakeOidIndex        = No&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ConnSettings        =&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next, you will need to make Asterisk aware of the DSN by adding it to the res_odbc.conf file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;[asterisk]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;enabled =&gt; yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;dsn =&gt; asterisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;username =&gt; ssokol&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;password =&gt; whatever&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;pre-connect =&gt; yes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now Asterisk knows how to talk to the database over ODBC.  Next, you need to build a couple of query functions in the func_odbc.ini file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;[SKYPEALIAS]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;dsn=asterisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;readsql=SELECT exten FROM skype_alias WHERE name = '${SQL_ESC(${ARG1})}'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;writesql=INSERT INTO skype_alias(name, description, exten) VALUES ('${SQL_ESC(${VAL1})}', '${SQL_ESC(${VAL2})}', ${SQL_ESC(${VAL3})})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[SKYPENEXT]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;dsn=asterisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;readsql=SELECT MAX(exten) AS maxexten FROM skype_alias;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[SKYPENAME]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;dsn=asterisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;readsql=SELECT name FROM skype_alias WHERE exten = ${SQL_ESC(${ARG1})}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These do the following:&lt;br /&gt;&lt;br /&gt;The "skypealias" query has both a read and a write function.  The read function attempts to return an alias extension number based on a known Skype name.  This is executed whenever an incoming Skype call arrives at the Asterisk system. &lt;br /&gt;&lt;br /&gt;The write function creates an alias record for the Skype user based on three inputs: Skype name, description (usually the caller-id name value), and the assigned alias extension number.&lt;br /&gt;&lt;br /&gt;The "skypenext" query is used to help the system generate a new alias extension number by selecting the current highest value from the skype_alias table.  (Note that this could also be done using a sequence, and probably should in Postgres.  I'm not sure how sequences work in MySQL, so I'm taking the easy way out here.  Feel free to post a comment with the recipe.)&lt;br /&gt;&lt;br /&gt;The "skypename" query is used by the system to translate alias numbers into Skype names for outgoing calls.&lt;br /&gt;&lt;br /&gt;Once you have the queries set up in func_odbc.conf, you need to add a number of Dialplan macros to your extensions.conf file.  These implement the necessary reads and writes:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;;Skype Alias - Find or generate an alias extension number for an&lt;br /&gt;;incoming Skype call&lt;br /&gt;[macro-skypealias]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,1,NoOp(Searching for Skype Extension Alias for ${CALLERID(number)})&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n,Set(SKYPEXT=${ODBC_SKYPEALIAS(${CALLERID(number)})})&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n,GotoIf($["${SKYPEXT}" = ""]?create:assign)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n(create),Set(SKYPEXT=${ODBC_SKYPENEXT()})&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n,GotoIf($["${SKYPEXT}" = ""]?noval:nextval)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n(noval),Set(SKYPEXT=3000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n(nextval),Set(SKYPEXT=$[${SKYPEXT}+1])&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n,Set(ODBC_SKYPEALIAS()=${CALLERID(number)},${CALLERID(name)},${SKYPEXT})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n(assign),Set(CALLERID(number)=${SKYPEXT})&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n,MacroExit()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;;Translate an alias extension into a Skype name for call-back&lt;br /&gt;[macro-skypename]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,1,Set(SKYPENAME=${ODBC_SKYPENAME(${ARG1})})&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first macro, "macro-skypealias" needs to be called on all incoming Skype calls.  It grabs the Skype name of the caller (which is stored in the caller-id number field in Asterisk) and uses that to search the alias table for an existing number asignment.  If it doesn't find one it creates a new alias extension number and stores it in the database.  In either case it replaces the caller-id number values with a dial-able value which is passed on to the endpoint.&lt;br /&gt;&lt;br /&gt;In this example I've set the Skype alias extensions to start with 3000 (actually 3001) and count up.  This is arbitrary and you can alter it to match your dial plan as needed.  If you have a LOT of friends on Skype you may want to consider using  a four digit extension pattern.&lt;br /&gt;&lt;br /&gt;My system has a bunch of Skype names associated with it (&lt;marketing&gt;remember, with Skype For Asterisk you don't pay for users, you pay for concurrent calls&lt;/marketing&gt;) so I've added a call to the macro for each:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[from_skype]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; ssokol.macbook,1,Macro(skypealias)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; ssokol.macbook,n,Dial(SIP/ssokol-ip650, 20)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; ssokol.macbook,n,Answer()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; ssokol.macbook,n,Wait(0.5)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; ssokol.macbook,n,Playback(try-my-cell-number)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; ssokol.macbook,n,Hangup()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,1,Macro(skypealias)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; s,n,Goto(mainmenu|s|1)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So when a call comes in from Skype, the system automatically generates an alias extension which I can use to call back over Skype from my Polycom IP650 desk phone (or any other normal phone with a key-pad).  To make this work, I've included a context that matches Skype alias extensions (in my case 3XXX):&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[to_skype]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; _3XXX,1,Macro(skypename,${ARG1})&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; _3XXX,n,Dial(Skype/ssokol.macbook@${SKYPENAME}, 60)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;exten =&gt; _3XXX,n,Congestion()&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I simply include the "to_skype" context along with "inside", "local", "longdistance", "international" and all of my other system contexts.  When I dial a 3XXX number Asterisk check the database and tries to translate that into a Skype name to dial.  Obviously I could get much fancier in the error handling but this serves as a perfectly worthy example.&lt;br /&gt;&lt;br /&gt;Other enhancements that could be added would include a web-based GUI that allows you to manually create alias extensions for people you want to call.  Since the alias table is stored in a "real" database (rather than the Asterisk internal Berkley database), it's trivial to hook up a web page for adds, edits and deletes.&lt;br /&gt;&lt;br /&gt;Please set this up and give it a try.  If you have questions, please post comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-4681302376047302332?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/4681302376047302332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=4681302376047302332' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/4681302376047302332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/4681302376047302332'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2009/09/automatic-asterisk-extensions-for-skype.html' title='Automatic Asterisk Extensions For Skype Callers'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-3891920071595658786</id><published>2009-08-17T13:53:00.002-05:00</published><updated>2009-08-17T14:05:46.411-05:00</updated><title type='text'>Gliffy - A Cool SaaS Drawing Tool</title><content type='html'>Over the past few weeks I've used a Flash-based online tool called &lt;a href="http://www.gliffy.com"&gt;Gliffy&lt;/a&gt; to create some application diagrams and I'm really quite impressed.  Gliffy's been around for a couple of years but it recently got a major upgrade.  I would now say that it's passed the "cool thing to try" stage and has reached the point of being a full-on replacement for desktop diagram tools.  Keep in mind that my requirements are fairly minimal and your mileage may vary.  I need to create basic flowcharts, network diagrams, and the occasional object model, and for that Gliffy does just fine.&lt;br /&gt;&lt;br /&gt;It imports/exports in any number of formats including SVG, which can be imported by Visio.  It has a pretty good catalog of basic shapes and network elements.  It allows you to upload graphics to embed in your drawings.  Best of all, its available anywhere and works equally well on Mac, Windows and Linux (at least on my Linux -- again YMMV).&lt;br /&gt;&lt;br /&gt;The service has a free option that allows you to store a limited number of private diagrams and an unlimited number of public drawings.  For about $5/month you can create a personal account and keep all of your diagrams private.  A corporate option lets companies create and share content for a bit less per account (but with a minimum number of accounts).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-3891920071595658786?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/3891920071595658786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=3891920071595658786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/3891920071595658786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/3891920071595658786'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2009/08/gliffy-cool-saas-drawing-tool.html' title='Gliffy - A Cool SaaS Drawing Tool'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-1294900137804207301</id><published>2009-08-15T14:11:00.002-05:00</published><updated>2009-08-15T14:22:06.929-05:00</updated><title type='text'>Linux Desktop - Finally Ready For Prime Time</title><content type='html'>Ok, I've been a Linux fan for along time, but always as a server.  Very early on I tried to use it as a desktop operating system and found myself spending more time working on Linux than on my actual work.  The other day I installed Fedora 11 on my 2nd generation MacBook Pro and discovered, much to my delight, that all of the things that used to be horridly hard have finally been made easy.&lt;br /&gt;&lt;br /&gt;First, it just worked.  No glitches with the X windows system, no problems getting the wireless to work, no cursing at Bluetooth or raging at the complexity of getting my Verizon EVDO card working.  It all just worked.&lt;br /&gt;&lt;br /&gt;Big shocker -- its also become much prettier than I ever hoped.  The interface still isn't as laden with eye candy as OS X, but it is so much better than what I remember from the early days.  The icons are attractive, the color schemes are coordinated and the fonts are smooth and anti-aliased.&lt;br /&gt;&lt;br /&gt;I don't know if the experience will be as positive for everyone as it was for me, but if you've previously thought of the Linux desktop as the province of geeks and mad scientists, give it another chance.  You can find virtually every application you might want, you can run a virtualized Windows session if you need, and you simply can't beat the price.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-1294900137804207301?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/1294900137804207301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=1294900137804207301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/1294900137804207301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/1294900137804207301'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2009/08/linux-desktop-finally-ready-for-prime.html' title='Linux Desktop - Finally Ready For Prime Time'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-6430408523421661394</id><published>2009-04-22T21:44:00.002-05:00</published><updated>2009-04-22T21:54:03.998-05:00</updated><title type='text'>SpinVox Create: Speech-To-Text Rocks</title><content type='html'>I've been playing with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SpinVox&lt;/span&gt; Create, the new open &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;API&lt;/span&gt; for the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SpinVox&lt;/span&gt; speech-to-text (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;STT&lt;/span&gt;) service, and it is wicked cool.  Take any recording (well, any short recording), convert it to a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;uLaw&lt;/span&gt; encoded wave file. post it to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;API&lt;/span&gt; and within roughly four minutes you have the text.  It's not always dead on ('&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Digium&lt;/span&gt;' became 'Dig-em!') but the transcription is really very good.&lt;br /&gt;&lt;br /&gt;I've built a rough but fairly feature complete Asterisk-to-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SpinVox&lt;/span&gt; integration in Python.  I hope to release it to the public shortly.  My goal is to completely displace voicemail.  Instead of having a 'voicemail box' your voicemail will become simply another sub-type of your email.  Messages will arrive with the text &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;pre&lt;/span&gt;-transcribed but with the audio file available if you need to review.  My initial cut isn't ready for use in Google Voice but its working and it takes something like 3 lines of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;dialplan&lt;/span&gt; to implement.&lt;br /&gt;&lt;br /&gt;Check back soon for a link to the article, full review and the Python source.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-6430408523421661394?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/6430408523421661394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=6430408523421661394' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/6430408523421661394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/6430408523421661394'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2009/04/spinvox-create-speech-to-text-rocks.html' title='SpinVox Create: Speech-To-Text Rocks'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-7021284284409250039</id><published>2008-10-15T10:20:00.004-05:00</published><updated>2008-10-16T11:45:11.371-05:00</updated><title type='text'>There Is No Linux</title><content type='html'>Or at least there is no "Linux Operating System".  What can be definitively identified as "Linux" is the kernel, which is only one part of an operating system.  An operating system has many other parts and from what I can tell there's not even an attempt at consensus between the various packagers of Linux distributions.&lt;br /&gt;&lt;br /&gt;My biggest gripe: I can't ask our engineering department to produce "an install for Linux".  There ain't no such thing.  There's RPM which RedHat and related distributions use.  Debian and its children use .deb files.  And even that doesn't accurately summarize the issue.  Each sub-variation has its own structure and constituent components so they each need their own version of the .rpm or .deb file.&lt;br /&gt;&lt;br /&gt;But wait, that's not all.  Linux packages are nearly always dependent on other Linux packages, so when you go to install an RPM for one package there's a really good chance it will fail with a message that your system is missing some dependency.  So you download and try to install the dependency and, guess what, it has two more dependencies.  So you spend an hour tracking down all the dependencies before you can install the application you wanted.&lt;br /&gt;&lt;br /&gt;So there's a fix for this too -- package management frameworks that handle the dependency tracking and installation.  Unfortunately there's not one fix here either.  The RedHat side of the house uses a utility called "yum" to interface between the RPM installation framework on the local computer and an application repository.  The Debian camp has a similar framework called "apt".  Both accomplish the same goal (making it somewhat easier to install software on Linux computers) but at the cost making it significantly harder to package software for Linux computers.&lt;br /&gt;&lt;br /&gt;To build Asterisk for "Linux" actually requires us to create 32 and 64-bit versions of the application (minimally) then package them for the current versions of RedHat (.rpm) and for Debian (.deb).  We then have to create slightly different packages for older versions of those distributions and for derivatives and cousins.  To support the most popular current distributions of "Linux" actually requires more than 20 separate packages be built and maintained.&lt;br /&gt;&lt;br /&gt;If I had to point a finger at one factor that's kept Linux from succeeding as a "mainstream" operating system, I'd point to this kluge.  Until you can build for "Linux 2.6" and hit 99% of systems running the 2.6 kernel, Linux won't have reached its true potential.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-7021284284409250039?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/7021284284409250039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=7021284284409250039' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/7021284284409250039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/7021284284409250039'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2008/10/there-is-no-linux.html' title='There Is No Linux'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-8378484330849391080</id><published>2008-10-13T16:38:00.002-05:00</published><updated>2008-10-14T13:46:11.524-05:00</updated><title type='text'>AsteriskNOW 1.5 Hits The Street</title><content type='html'>Yesterday we launched AsteriskNOW 1.5 which is a big deal in spite of the interim release number.  It's not an upgrade for the original AsteriskNOW but a complete replacement and a huge step forward in terms of technology.  I've outlined what's in the release on a post on the &lt;a href="http://blogs.digium.com/2008/10/13/asterisknow-15-beta-available-more-coming-soon/"&gt;Digium company blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-8378484330849391080?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/8378484330849391080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=8378484330849391080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/8378484330849391080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/8378484330849391080'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2008/10/asterisknow-15-hits-street.html' title='AsteriskNOW 1.5 Hits The Street'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-4313243148611915654</id><published>2008-10-02T20:24:00.002-05:00</published><updated>2008-10-02T20:28:57.641-05:00</updated><title type='text'>Skype For Asterisk Response</title><content type='html'>I'm in the middle of reviewing the nearly 1000 applications to be part of the Skype For Asterisk program that was launched last Thursday at AstriCon.  The applications include everything from one-man shops to universities with more than 30,000 students.  The response has been absolutely overwhelming, and I'm looking forward to getting the beta rolling.&lt;br /&gt;&lt;br /&gt;I'm also looking forward to starting in on the four initatives that I was priviledged to help announce on the pseudo-keynote on Wednesday, and the Asterisk Application Programming Interface (code name Pinemango) that was spec'd out during the AstriDevCon post-con event.  AsteriskNOW, Asterisk Marketplace, a2m and Pinemango represent an amazing future for open source telephony.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-4313243148611915654?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/4313243148611915654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=4313243148611915654' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/4313243148611915654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/4313243148611915654'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2008/10/skype-for-asterisk-response.html' title='Skype For Asterisk Response'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-7514286624927547950</id><published>2008-09-30T18:05:00.002-05:00</published><updated>2008-09-30T18:09:48.278-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fail relaunch blogging procrastination ADD'/><title type='text'>Blogging - Take Two</title><content type='html'>Ok, so I'm a bit behind on the blogging.  What can I say? Over the past year I've been acquired (or at least my company was), I've begun to learn the dark art of product management, I've moved from Kansas City to Tulsa and I've delved into robotics.   All of these things take time.  So here's the re-launch of das blog.  No promises.  No guarantees.  I'll try to be a better blogger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-7514286624927547950?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/7514286624927547950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=7514286624927547950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/7514286624927547950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/7514286624927547950'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2008/09/blogging-take-two.html' title='Blogging - Take Two'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-8570506653375089426</id><published>2007-10-03T15:04:00.000-05:00</published><updated>2007-10-03T15:53:55.997-05:00</updated><title type='text'>iPhone Troubles</title><content type='html'>Ask any of my friends and they'll tell you I'm the biggest iPhone fan boy out there.  I would have been in line for the launch if I could have been (I was out of the country at the time).  Well, today I had my first bad experience with Apple...&lt;br /&gt;&lt;br /&gt;Last week while at AstriCon I managed to drop my iPhone and crack the glass.  The glass was splintered but still safely in place.  Everything still worked -- it just looked ugly.  Thinking that a simple glass replacement must be available, I went into the Apple store and was sorely disappointed.&lt;br /&gt;&lt;br /&gt;It seems that the process of repairing iPhones is beyond the skill, patience or economic interests of Apple.  They don't repair damaged iPhones, they simply replace them -- for $250.  Huh?&lt;br /&gt;&lt;br /&gt;Yes, that's right.  The $0.30 piece of tempered glass cannot be replaced for anything less than $250.  What's more, they won't let you keep the original damaged unit, either.  No amount of explaining the insanity of the deal to the very patient store manager made any difference.  He stood there for upwards of twenty minutes commiserating with me but offering nothing but the awful party line -- either pay your $250 for a new phone or hit the road.&lt;br /&gt;&lt;br /&gt;In the end I found a third option -- I simply bought another iPhone using the two $100 credits from my original early-bird purchase and another $200 in cash.  I now have a very pretty new phone running 1.1.1 and my ugly old phone running 1.0.2 with a whole host of unauthorized native applications.  Take that, Steve Jobs.&lt;br /&gt;&lt;br /&gt;This is really the first time that Apple has disappointed me.  I can go along with $600 for the phone.  I can take the $90 for a battery change.  I can live with the chain tying me to AT&amp;amp;T.  What I can't stand is that there was no better offer that they could make than $250 to replace the phone when all I needed was new glass.&lt;br /&gt;&lt;br /&gt;Anybody else out there had a problem with either the glass or with Apple's "repair" option?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-8570506653375089426?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/8570506653375089426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=8570506653375089426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/8570506653375089426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/8570506653375089426'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2007/10/iphone-troubles.html' title='iPhone Troubles'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7027718887270451844.post-9215785929115036557</id><published>2007-10-02T22:39:00.000-05:00</published><updated>2007-10-02T22:55:53.722-05:00</updated><title type='text'>The Curse of Cursive Writing</title><content type='html'>Katie's teacher sent a note home (actually she sent an email to Amy which was forwarded to me) indicating that she was having trouble with penmanship.  This came as a surprise to neither of us.  We both send messages back to the teacher saying, essentially, "so what?".  Who uses penmanship these days?&lt;br /&gt;&lt;br /&gt;Back in the late 70's and early 80's when I was in Bessie Ellison Elementary school on the outskirts of St. Joseph, Missouri, we spent weeks (possibly months) working on the proper formation of cursive characters.  Even when I did my best (writing so slowly that I couldn't complete the assignment on time) my penmanship was wretched.  Frankly, it still is.  Who cares?  When forced to write without the use of a keyboard (a rarity) I'm able to execute a passable block print that conveys my thoughts.&lt;br /&gt;&lt;br /&gt;Stupid as it may sound, I'm still peeved that my third-grade GPA suffered from the "C" that regularly appeared in the penmanship column on my grade card.  Nobody ever graded me on typing, and I spend an appreciable portion of my life clacking away at 50+ words per minute.  Penmanship.... Give me a break.  We might as well force our kids to learn to weave their own clothes or something.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7027718887270451844-9215785929115036557?l=ssokol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ssokol.blogspot.com/feeds/9215785929115036557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7027718887270451844&amp;postID=9215785929115036557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/9215785929115036557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7027718887270451844/posts/default/9215785929115036557'/><link rel='alternate' type='text/html' href='http://ssokol.blogspot.com/2007/10/curse-of-cursive-writing.html' title='The Curse of Cursive Writing'/><author><name>Steven Sokol</name><uri>http://www.blogger.com/profile/15314305851331678456</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://1.bp.blogspot.com/_cGq1fbJUyWA/SOKnbs0OtlI/AAAAAAAAACU/13sho7kzOpc/S220/new_headshot_bw.jpg'/></author><thr:total>0</thr:total></entry></feed>
