<?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:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5065776</id><updated>2010-06-10T15:39:13.254-07:00</updated><title type='text'>Ramin Naimi</title><subtitle type='html'>Ramin's blog (ramin at ramin dot net)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.ramin.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default'/><link rel='alternate' type='text/html' href='http://www.ramin.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5065776.post-6650111416951492985</id><published>2010-02-23T10:14:00.000-08:00</published><updated>2010-02-23T10:14:07.661-08:00</updated><title type='text'></title><content type='html'>&lt;b&gt;&lt;span style="font-size: large;"&gt;HTC's Eris and Android update&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I had written about the problem of shared resources before (specially the speaker/mic/bluetooth). To recap, the problem is that if I'm listening to an internet radio or my music (whether I'm listening to it via the built-in speaker or via headphone it doesn't seem to make any difference), and I receive an incoming call, the phone interaction is very chaotic. The music doesn't stop playing, and I hear the phone ringing. I also noticed that sometimes the phone switches to different outputs (e.g. switch the music and phone ring to bluetooth). My initial reaction was to scramble to bring up the app that's responsible for playing the music (by selecting Home then the app) to make the app stop the music, so I can go back home and to the phone application to answer the incoming call. Needless to say I miss many incoming calls. After several frustrating weeks I decided to take a chance and see what happens if I answer the call while the phone is playing my music. As it turns out, at the very last second, the phone does disconnect the speaker/headphone/bluetooth from the music app. I was relieved, but still disappointed that the interaction wasn't very intuitive.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-6650111416951492985?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/6650111416951492985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=6650111416951492985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/6650111416951492985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/6650111416951492985'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2010/02/htcs-eris-and-android-update-i-had.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5065776.post-5221638644916468346</id><published>2010-01-12T22:01:00.000-08:00</published><updated>2010-01-12T22:26:33.054-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screen_lock'/><title type='text'></title><content type='html'>More HTC Eris vs iPhone comparison...&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Screen Lock&lt;/h2&gt;&lt;br /&gt;The screen lock is not very friendly. There have been a few problems that I've noticed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; It got confused when disconnecting the &lt;a target="_blank"  href="http://www.amazon.com/HTC-Adapter-Charger-Detachable-CNR5310/dp/B001QMOF48?ie=UTF8&amp;tag=ramin01-20&amp;link_code=btl&amp;camp=213689&amp;creative=392969"&gt;USB&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=ramin01-20&amp;l=btl&amp;camp=213689&amp;creative=392969&amp;o=1&amp;a=B001QMOF48" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding: 0px !important" /&gt; cable that was supplying the power, and disconnecting the headphone jack. I was listening to music so the lock screen showed the streaming music application as a partial background and the lock banner on top of it. Dragging the lock banner to unlock the phone would appear as if I'm dragging the music app's image and it would stop half way down the screen, so it wouldn't let me unlock the screen (it didn't let the banner to reach the bottom of the screen). It was in a wierd state and all I could do is restart the phone. &lt;/li&gt;&lt;li&gt; Because the phone can get sluggish in responding, the security's unlock pattern can often not recognize my finger motion so it would fail. I gave up on the security pattern but now I'm finding myself pocket-calling often. Looking for an app to provide a simple security lock (not a pattern) is not that simple. I shouldn't have to pay for an app for this. The system/OS should provide that functionality. The free security/lock apps are very disappointing as well. Judging by some feedbacks I read on some of the free apps, it looks like I'm not the only one who's searching for a solution. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-5221638644916468346?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/5221638644916468346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=5221638644916468346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/5221638644916468346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/5221638644916468346'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2010/01/more-htc-eris-vs-iphone-comparison.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5065776.post-2559636422783986185</id><published>2010-01-12T11:01:00.000-08:00</published><updated>2010-01-12T22:28:51.935-08:00</updated><title type='text'></title><content type='html'>&lt;h1&gt;HTC Droid Eris vs iPhone&lt;/h1&gt;&lt;br /&gt;I have been holding myself back from switching to iPhone from my old Samsung phone mainly because I don't want to give up my Verizon wireless' coverage. I've grown to enjoy the vast coverage it provides and although not perfect, it's much much better than AT&amp;T and other carriers. I've had an iPhone that was provided by my work, so I learned about the joys of iPhone and the horrible coverage of AT&amp;T first-hand. Since Android phones became available on Verizon I was tempted to try it, and finally I did.&lt;br /&gt;&lt;br /&gt;Here's what I observed:&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;sporadic responsiveness&lt;/h2&gt;&lt;br /&gt;Although I saw my iPhone freeze once in a long while, I was able to trace the problem to some faulty app that I was developing or unstable app that I had installed. For the most part, the iPhone is pretty responsive to touch, navigation, and normal operations. If I hit the home button, it'll go to the home screen pretty quickly. Once on the home screen, I can swipe to different pages and I see the response as I swipe with no noticeable delays.&lt;br /&gt;&lt;br /&gt;On the Eris phone I have seen sluggish responsiveness many times. If nothing is running in the background, I can hit the home button and I would get to the home screen (although with more delay than iPhone). If there's an app running in the background, it's not uncommon for me to hit a menu or home button and wait 1 or 2 seconds before the phone responds and I end up with what I wanted to do. The phone queues my actions, so if I hit the Home button and the menu button in series, the phone follows that sequence even if there's a delay. It can get frustrating that you have to wait for the response and you may end up repeating a home or menu button and watch the phone go through the actions like a movie.&lt;br /&gt;It maybe that the CPU of Eris phone isn't as powerful as iPhone, but I put the blame on Android. Android has to accommodate for different hardware profiles and provide the best, consistent user interface experience. A lot of my observations can be attributed to this fundamental problem.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Critical Shared Resources&lt;/h2&gt;&lt;br /&gt;iPhone treats the phone functionality as a very high priority interaction. When I'm listening to music or running an app that is using microphone or speaker or headphone, and there's an incoming phone call, those apps are preempted and the input/output resources are freed. It happens in an instance because I have to get to the phone without any delays or having to take any actions to the non-phone applications.&lt;br /&gt;&lt;br /&gt;Android OS doesn't have this concept. It treats every app the same and it leaves the logic of what's the right thing to do up to the app(s) that are running. While this is an easy way out (in the name of an open platform), it doesn't provide for the best user interaction. If I am listening to music (or running an app that is streaming music) and there's an incoming call, my phone rings, music doesn't stop and the UI is asking me what to do with the call. &lt;br /&gt;What are my choices?&lt;br /&gt;a) ignore the call - which is what I have to do in order to get to the music app so I can shut it down/pause it.&lt;br /&gt;b) answer the call - which is ridiculous because there's music playing in the background and I'm trying to speak to my caller.&lt;br /&gt;&lt;br /&gt;All in all, I'm not too happy with the performance of my Droid Eris phone. I really wanted Android/Hardware to work as good as iPhone, but so far it's been disappointing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ramin.net/2010/01/more-htc-eris-vs-iphone-comparison.html"&gt;More to come&lt;/a&gt; as I get to write them down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-2559636422783986185?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/2559636422783986185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=2559636422783986185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/2559636422783986185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/2559636422783986185'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2010/01/htc-droid-eris-vs-iphone-i-have-been.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5065776.post-8273671466515936435</id><published>2009-01-25T23:05:00.000-08:00</published><updated>2009-12-31T00:18:33.923-08:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Elements of a monitoring system&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;A good monitoring system is hard to find. There are plenty of tools/scripts/applications that provide a solution for a narrow use case. For example, someone wants to have a way to poll a service to see when it is not available, so they write a script to do that. There are hardly any systems that provide a good end-to-end solution for monitoring. This is the primary reason why we chose to develop our own monitoring system inside Yahoo. It was the only way we could provide a solution that was flexible enough to fit the diverse usage in Yahoo, while designed to leverage the way Yahoo service engineers operated. Scalability is a big factor for Yahoo and none of the existing solutions address scalability to the extend that satisfies Yahoo.&lt;br /&gt;&lt;br /&gt;What are the various elements of a complete solution for monitoring?&lt;br /&gt;They are (in no particular order):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* &lt;a href="http://www.ramin.net/2009/01/monitoring-system-components-data.html"&gt;Data Collection&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* Status Tracking&lt;br /&gt;&lt;br /&gt;* Alert Generation&lt;br /&gt;&lt;br /&gt;* Storage&lt;br /&gt;&lt;br /&gt;* Configuration Management&lt;br /&gt;&lt;br /&gt;* User Interface &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can argue the list is too short (or too long), but the purpose of the list is to capture the main areas (the main elements). Each area can be broken down to sub-areas. I'll cover each area in a little more depth to provide some clarity. Keep in mind that this topic can have so much details that a book can be devoted to it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-8273671466515936435?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/8273671466515936435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=8273671466515936435' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/8273671466515936435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/8273671466515936435'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2009/01/elements-of-monitoring-system-good_25.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5065776.post-7255415942242273173</id><published>2009-01-13T11:50:00.001-08:00</published><updated>2009-12-30T17:05:27.090-08:00</updated><title type='text'></title><content type='html'>&lt;h2&gt; Status Tracking &lt;/h2&gt;The bare bones component of a monitoring system is status tracking. Status tracking is the act of monitoring the status/health of an entity on the target system. The purpose of status tracking is to be able to answer questions like:&lt;br /&gt;"Is Host X reachable?" or "Is my Web Server up?"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-7255415942242273173?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/7255415942242273173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=7255415942242273173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/7255415942242273173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/7255415942242273173'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2009/01/status-tracking-bare-bones-component-of.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5065776.post-8692786135143595561</id><published>2009-01-13T11:48:00.000-08:00</published><updated>2009-01-26T00:57:12.605-08:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Monitoring System Components - Data Collection&lt;/h2&gt;&lt;br /&gt;This area covers the different ways that the system collects the metrics, status and other information about what it's monitoring. There are 3 basic types of data the monitoring system cares about:&lt;br /&gt;(a) Metrics&lt;br /&gt;(b) Status&lt;br /&gt;(c) Configuration&lt;br /&gt;&lt;br /&gt;I cover Data for Configuration in the Configuration Management section.&lt;br /&gt;I cover Data for Status in the Status Tracking section.&lt;br /&gt;Data for metrics can find its way into the monitoring system by the monitoring system either polling (pulling) the system/component being monitored, or by the target system pushing the data asynchronously into the monitoring system. A good monitoring system has the flexibility to provide both options as each fits a particular system behavior characteristics and requirements.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XVTYEn6q1E4/SWr8LHggInI/AAAAAAAAAAc/Mh3-0eQ0yR4/s1600-h/monitoring-system-1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 122px;" src="http://1.bp.blogspot.com/_XVTYEn6q1E4/SWr8LHggInI/AAAAAAAAAAc/Mh3-0eQ0yR4/s320/monitoring-system-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5290317980224201330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the above diagram, the target system sends metrics to the monitoring system asynchronously (1). The monitoring system didn't initiate the request for metrics. This is typically done by either leveraging a scheduler in the target system, or some other trigger (e.g. metrics generated by activity on the target system).  When the monitoring system initiates the metrics request (2), the scheduling of that request is performed on the monitoring system, and the request is sent to the target system. After the request is sent, the monitoring system (typically) waits for the response. This would ensure that the metrics that are returned in the payload are associated with that particular request (and more importantly with the timestamp of the request). In rare occasions, the monitoring system can send the request, and can accept the result asynchronously via method (1). This option is typically difficult to accommodate since the slight clock difference between the monitoring server and the target system can throw off the logic of associating the metrics to the real timestamp.&lt;br /&gt;&lt;br /&gt;There are pros and cons of each option.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-8692786135143595561?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/8692786135143595561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=8692786135143595561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/8692786135143595561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/8692786135143595561'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2009/01/monitoring-system-components-data.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XVTYEn6q1E4/SWr8LHggInI/AAAAAAAAAAc/Mh3-0eQ0yR4/s72-c/monitoring-system-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5065776.post-4976520003669441938</id><published>2009-01-11T21:35:00.000-08:00</published><updated>2009-01-26T00:57:31.656-08:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Approaches to Monitoring Systems&lt;/h2&gt;&lt;br /&gt;Before I dive into the topic, let me give a brief overview. What's a monitoring system? Well, if you're developing or operating a complex online system, you want to know when things break (better yet, you want to know before things break that the system is about to break). A good monitoring system let's you understand the characteristics of your system by showing different types of data it has collected (e.g. how is your CPU performing over time, or is your server running out of disk space, or what's the average transaction rate of your system). Having various views of your system you can then realize where the bottlenecks and where the weak points of your system are. It will also be used as a tool to validate that your changes are addressing the real problem areas.&lt;br /&gt;&lt;br /&gt;There are two approaches to monitoring a system:&lt;br /&gt;1) Monitoring from outside-in&lt;br /&gt;2) Monitoring from inside-out&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Monitoring from outside-in&lt;/h3&gt;This approach is often taken by hosted monitoring services. Examples of these types of services are &lt;a href="http://www.gomez.com/"&gt;Gomez&lt;/a&gt; and &lt;a href="http://www.keynote.com/"&gt;Keynote&lt;/a&gt;. There are a large number of small players who offer similar synthetic checks of a URL.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Monitoring from inside-out&lt;/h3&gt;&lt;br /&gt;Monitoring your servers, systems, devices and services/applications extensively and thoroughly is the key to understanding how the organs of your system are behaving. This is a difficult and time consuming exercise. It requires a lot of research on picking the right tool(s) to gather the data (if it exists). If the data does not exist, get ready to spend even more time to instrument whatever component that is missing the data. Picking the right tool to gather and visualize the data is no easy task. Why? Well, because the monitoring systems process a lot of data, they have to be designed to address the most used use cases. For example, consider these two scenarios:&lt;br /&gt;- monitoring system user wants to capture a small number of metrics but at a very high frequency (e.g. 50 metrics that are generated once every 1 second)&lt;br /&gt;- monitoring system user wants to capture a large number of metrics but at a lower frequency (e.g. 3000 metrics that are generated once every 15 minutes)&lt;br /&gt;&lt;br /&gt;In both of these examples, the monitoring system is handling 45000 metrics values every 15 minutes, but the approach to implement a solution for each can have a large impact on how efficiently it handles the volume of data.&lt;br /&gt;I will concentrate the rest of the discussion on the design of a monitoring system that is used to monitor from inside-out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-4976520003669441938?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/4976520003669441938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=4976520003669441938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/4976520003669441938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/4976520003669441938'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2009/01/elements-of-monitoring-system-good.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5065776.post-2395298535596155467</id><published>2008-12-22T14:01:00.000-08:00</published><updated>2009-01-26T00:58:06.431-08:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Targeted advertising challenges&lt;/h2&gt;&lt;br /&gt;Since the origins of the WWW the promise of "Targeted content", "Customized Information" and grand monetization of visits through "Targeted Advertising" has been driving innovation and technologies in this space. Yet, almost 2 decades has passed since the Internet took off and was discovered by the masses and yet, the Targeted Advertising promise is not achieved. Sure, there are exceptions, but I often wonder why there have been limited (or slow) headway in this space by the industry.&lt;br /&gt;&lt;br /&gt;At eVoice (the first free, hosted home voicemail services at the time), Targeted advertising was at the core of our business plan. The idea was that we could cover the high cost of&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Running the service (including operating the hardware to take incoming calls, store messages, play messages, etc.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cost of setting up call forwarding with the telco's &lt;/li&gt;&lt;li&gt;Administrative overhead of eVoice&lt;/li&gt;&lt;li&gt;etc&lt;/li&gt;&lt;/ul&gt;by providing targetted advertisings to people.&lt;br /&gt;We never got to execute fully on this vision because the cost running the service and telco interfaces was overwhelming and we ran out of funding and got acquired by AOL.&lt;br /&gt;&lt;br /&gt;I realized that there was no reliable system to "target advertisements". I used the excuse that the advertising systems are still at their infancy and they have not completed their offerings. Another thing I realized was that the advertisings for any media other than web (i.e. display advertising) was virtually non-existent.&lt;br /&gt;What did this mean to us at eVoice? Well, it meant we had to create our own advertisements. Kinda clunky, but we had to have something to show it was possible.&lt;br /&gt;&lt;br /&gt;Well, now it's almost 2009 and the advertising market has changed a bit (but not much). The main player in search advertising is Google and the main player in display advertising is Yahoo... &lt;span style="font-style: italic;"&gt;I know, I know...  you can argue that the leader is Yahoo or someone else based on which publication you read&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So, what is the reason for this slow progress?&lt;br /&gt;&lt;br /&gt;I believe there are several reasons. In order to understand it better, we have to look at the big picture of the Advertising Eco System:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XVTYEn6q1E4/SVBgYsYwzII/AAAAAAAAAAU/EZqJ5eCJ2dQ/s1600-h/Advertising+Eco+System.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_XVTYEn6q1E4/SVBgYsYwzII/AAAAAAAAAAU/EZqJ5eCJ2dQ/s320/Advertising+Eco+System.jpg" alt="" id="BLOGGER_PHOTO_ID_5282828340253740162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let's examine this (not complete) picture. In this scenario I have an end user going to a content provider to consume the content it provides (e.g. read their daily news from CNN.com).&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;End user visits the content provider and asks for a web page&lt;/li&gt;&lt;li&gt;Content provider (typically) knows what it's putting in the page. In the case of social network sites, or sites that the users are in charge the content (e.g. blogs), the content provider doesn't (or can't) digest the content users provided.&lt;/li&gt;&lt;li&gt;Advertisers run a campaign that typically is comprised of several ways to reach their audience (i.e. end users). They have a budget for a campaign and depending on the purpose of their campaign, they would spend portions of the money on display, click through, search results or other avenues. The advertisers (at least the ones with large budgets) work with one or more ad agencies. The advertisers provide information to the ad agencies that would help the agencies effectively manage their campaigns. This information could be budget amount, How they'd like to spend it (e.g. Display Advertising, Click Through, SRP - search results page, etc).&lt;/li&gt;&lt;li&gt;The ad agencies work with the Creative Directors to create the type of advertising creative that would fit the advertisers' budget and desire. They would then work with one or more ad exchange networks to make their creatives and campaign dollars available for consumption. The information they would provide to the advertising network includes the creative, and ... the targeting profiles. For example, the targeting profile would indicate that they want to expose the creatives to display ads that falls into the category of "Society and Culture" and subcategory of "Food and Drink".  The agencies specify these categories based on how wide of a net they want to capture audiences.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ad exchange networks play the role of matching content to categories, and ultimately to advertising creatives. They take as input: (a) From Content Providers either the content categories, or whatever generic category the ad network assigned to the content provider. and (b) From advertising agencies the targeted categories for which given ads should be served. The ad exchange network also keeps track of the impression and clicks for reporting and accounting purposes.&lt;/li&gt;&lt;li&gt;The end user gets the "targeted ad" in the page. If all goes well, the user will click on the ad if the ad is relevant enough and the user is willing (or searching) to explore more.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;As you can see, it's a complex workflow. There are too many middlemen who through their involvement lose the context of the advertiser to end user connection.&lt;br /&gt;&lt;br /&gt;There are several problems:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Advertisers rely on ad agencies to do the right mapping of the advertising to categories and ultimately end users. Ad agencies work with many ad networks and they have many advertisers as customers. &lt;/li&gt;&lt;li&gt;Advertisers have limited budget, so the ad agencies have to determine whether they should spread the advertisers' money on smaller number of categories and sub categories, or they should target more high level categories and not bother with sub categories. In other words, should their campaign have a razor-sharp target profile, or a wider target profile.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ad exchange networks have their own categories and sub categories, and it differs from the next ad exchange network. This means ad agencies have to do more work to do higher targeting of ads (something agencies don't necessarily want to do).&lt;/li&gt;&lt;li&gt;Content providers don't necessarily have the capability or desire to understand the category/sub-category structure of the ad network they're integrating with, specially since they need to do more work to switch ad network providers, or integrate with several ad network providers. In most cases, they just pick a top level category and stick with it.&lt;/li&gt;&lt;/ul&gt;The combination of the above has the following side effect: The top categories end up with a lot more available content than the sub-category ones. Even though the advertisers (almost always) want to target at the sub-category level.&lt;br /&gt;&lt;br /&gt;So, what's the solution? Here's my thoughts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The eco system has to change so there's more transparency in the ad network, the agencies, content providers and the advertisers.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There has to be more available content that can be categorized in the sub-category of the Ad Exchange Network.&lt;/li&gt;&lt;li&gt;The categories have to become owned and defined by a standard body (IAB?). This reduces friction on the ad agencies and allows them to create the mapping of creatives to categories, just once.&lt;/li&gt;&lt;/ul&gt;I'm interested in hearing what others in the industry think about this topic.&lt;br /&gt;&lt;br /&gt;Ramin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-2395298535596155467?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/2395298535596155467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=2395298535596155467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/2395298535596155467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/2395298535596155467'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2008/12/targeting-advertising-challenges-since.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XVTYEn6q1E4/SVBgYsYwzII/AAAAAAAAAAU/EZqJ5eCJ2dQ/s72-c/Advertising+Eco+System.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5065776.post-2418318848215512646</id><published>2008-12-17T14:03:00.001-08:00</published><updated>2009-01-26T00:58:27.623-08:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;Sending SMS Messages from your web server&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Sending SMS messages from your web server seems like something that’s relatively simple. It is, but what I found was that there are a lot of services that offer this, but for a fee. The fee structure is usually per message. Just do a Yahoo search on “SMS Gateway” and you’ll come across a ton of these.&lt;/p&gt; &lt;p&gt;Going with a paid service might be a good option for you, but there are other options. Almost all carriers provide an Email-to-SMS gateway, and they’re free. Therefore, the other option is to programmatically determine which email address domain to use based on the carrier for the phone number you’re interested in sending the SMS to.&lt;/p&gt; &lt;p&gt;There might be some restrictions on how frequent you can send messages, but I haven’t hit any limitations yet.&lt;/p&gt; &lt;p&gt;Here’s a list of carriers and the email addresses your web server can send an email to in order to send an SMS message to their customers:&lt;/p&gt; &lt;p&gt;&lt;a title="http://en.wikipedia.org/wiki/SMS_gateways#Email_to_SMS_.2F_Web_to_SMS" target="_blank" href="http://en.wikipedia.org/wiki/SMS_gateways#Email_to_SMS_.2F_Web_to_SMS"&gt;http://en.wikipedia.org/wiki/SMS_gateways#Email_to_SMS_.2F_Web_to_SMS&lt;/a&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5065776-2418318848215512646?l=www.ramin.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ramin.net/feeds/2418318848215512646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5065776&amp;postID=2418318848215512646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/2418318848215512646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5065776/posts/default/2418318848215512646'/><link rel='alternate' type='text/html' href='http://www.ramin.net/2008/12/sending-sms-messages-from-your-web.html' title=''/><author><name>Ramin Naimi</name><uri>http://www.blogger.com/profile/02813966705542991022</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13349282635463135007'/></author><thr:total>0</thr:total></entry></feed>