<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Site-Server v@build.version@ (http://www.squarespace.com) on Thu, 11 Jun 2026 17:11:06 GMT
--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://www.rssboard.org/media-rss" version="2.0"><channel><title>esjewett.com</title><link>http://www.esjewett.com/</link><lastBuildDate>Thu, 26 Oct 2023 15:55:35 +0000</lastBuildDate><language>en-US</language><generator>Site-Server v@build.version@ (http://www.squarespace.com)</generator><description><![CDATA[]]></description><item><title>Generative AI - Abstractions, trade-offs, and learning by doing</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Thu, 26 Oct 2023 16:02:16 +0000</pubDate><link>http://www.esjewett.com/blog/generative-ai-abstractions-trade-offs-and-learning-by-doing</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:653a8bf7d2d358104f5087e7</guid><description><![CDATA[<p class="">A disagreement or question that comes up often in the generative AI space is whether people should use generative AI without having a deep understanding of how generative AI systems work. Another way to put this is the ask if we should rely on higher level abstractions in our work.</p><p class="">I’m personally focused on the professions of developers and architects, so that’s what I’ll talk about today. We all rely on abstractions, but making the right decisions about the level of abstractions we use is what differentiates a great developer or architect from a mediocre one. This isn't a new discussion, and comes up often with both new and older technologies. I often argue that developers and architects should be on the more conservative side here. Why is this?</p><p class="">I think it's important to take a couple of things into account when making these recommendations.</p><ol data-rte-list="default"><li><p class="">What is the potential downside of implementing without full understanding?</p></li><li><p class="">How much does implementation facilitate learning?</p></li></ol><p class="">These two considerations weigh against each other when trying to decide if it makes sense to implement without deep understanding. If implementation will help us learn about and avoid the tradeoffs and downsides of a technology, then this is an argument for learning by doing. If potential downsides are very large, then this is an argument against. Remember, these attributes weigh against each other, so even if potential downside is small, if the learning upside is also small, it may still make sense to avoid an abstraction.</p>





















  
  














































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png" data-image-dimensions="1704x1383" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png?format=1000w" width="1704" height="1383" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/380d9ee9-81f5-46a9-9f4d-e7bfb00212ba/Can+Learn+by+doing.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  





  <p class="">All of this must, of course, be weighed against other factors such as overall value (which includes downside). So this consideration is just one of many that needs to be taken into account.</p><p class="">So what of generative AI? Unfortunately here the potential downsides are fairly high and the ability to learn through abstraction is quite low. The prompt itself is an abstraction that seems to work against learning what is really going on in generative AI models such as LLMs, and which itself spawns troublesome secondary abstractions such as anthropomorphizing LLMs and certain types of magical thinking about what LLMs are really capable of.</p><p class="">I believe the reason for this lack of learning is that the primary failure modes of LLMs are usually invisible to non-experts. Hallucinations can only be spotted if the user already has good knowledge of the domain, is able to think critically about it, and is willing to make the effort to do their own research. Similarly, bias in all it's forms, including racism and sexism, is invisible at least as often as it is visible, and both filter models and fine-tuning have been deployed on LLMs to make bias even more invisible than it would otherwise be.</p><p class="">For these reasons, I strongly urge developers and architects intending to deploy these models in products and infrastructure to first gain a good understanding of how these models really work. This is not as difficult as it may seem. <a href="https://bea.stollnitz.com/blog/">Bea Stollnitz's blogs</a> on these topics are accessible, detailed, and link to the original papers on these topics, which themselves are usually written in a largely accessible manner for those with some technical background. Other resources and explainers have also become available if you prefer a different style or want to know about a different model (Stollnitz mostly focuses on GPT LLMs).</p><p class="">It’s important to remember that this recommendation is for developers and architects looking to deploy these models in products. For developers and architects trying to use these models as day-to-day assistants to augment their own capabilities, the calculus is quite different! Developers are domain experts in their own domain, so they are in a much better position to spot and address hallucinations. Additionally, racism and sexism biases in these models are unlikely to express themselves in a damaging way when we are trying to program algorithms or get feedback on coding practices and style from an LLM like Github CoPilot. Because the downsides are mitigated and smaller respectively, it is much more likely for a developer to be able to responsibly and productively use tools like Github CoPilot or ChatGPT as assistants in their professional work. The same is true for most domain experts.</p>]]></description></item><item><title>Notes on web scraping</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Sun, 24 Jul 2016 20:40:15 +0000</pubDate><link>http://www.esjewett.com/blog/notes-on-web-scraping</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:57951d85d1758ec97e828b66</guid><description><![CDATA[<p>Well hello there. You may remember me from blogs written well over a year ago! Glad to be back.</p><p>Yesterday I tweeted about web scraping, mentioning that it's always a bad idea. What I mean by "web scraping" is the practice of using automated tools to harvest data from a website. Usually this is done in order to try to gather data for research or for use in a product.</p>
























  
  
    
    
      
        
        
        
        
          <blockquote class="twitter-tweet"><p lang="en" dir="ltr">I’ve done some web scrapping but I’m more and more convinced it is always a bad idea.</p>— Ethan Jewett (@esjewett) <a href="https://twitter.com/esjewett/status/756929687280943104">July 23, 2016</a></blockquote>

        
        
        
      
    
  




  <p>That was, I'm sure a bit too strong. After all, universals are always incorrect. But I think it's basically the right approach and I'd like to explain a little bit why that is.</p><h2>The problems with scraping</h2><p>Web scraping is problematic for several reasons, among them:</p><ul><li><strong>Legality</strong>, in that scraping is usually prohibited by terms of service, and the use of scraped content is usually a copyright violation baring fair use exceptions. So in scraping you are risking running afoul of wonderful laws like (in the US) the CFAA and DMCA. If you've heard of Aaron Schwartz, you've heard of someone who got slammed with the CFAA for web scraping.</li><li><strong>Ethics</strong>, in that regardless of law it can be unethical to use content that doesn't belong to you, and in scraping you risk bypassing restrictions on content use that may have been put in place intentionally and which you may not even be aware of. Remember, the fact that information is technically accessible, or even public, doesn't mean that it is not sensitive. Example:&nbsp;Your whereabouts in a public street is technically public information, at least in the US.&nbsp;Your neighbor waving at you when you leave your house is great. Someone sitting outside your house 24/7 and tweeting whenever you come and go is grounds for a restraining order.</li><li><strong>Technical and financial concerns</strong> such as denial of service. You don't know what kind of capacity the website you have has available, nor how they are paying for it. It could well be that every request you send costs the website incremental money, or that their server will simply crash due to your scraping. You can't know this ahead of time if you haven't consulted with the person or organization running the website. You can be careful, and you can even respect technical indicators like robots.txt files, but you still won't really know unless you coordinate.</li></ul><p><strong>Instructors</strong>: Keep in mind that when you indicate to your students that it is OK to web scrape to gather data for their projects, you are opening them up to real liability. Encouraging your students to violate the CFAA is no small thing, no matter how bad a law it is.</p><h2>What are the alternatives?</h2><p>First, I'd like to remind us all to keep in mind that we are not generally entitled to use resources we don't own in the service of our own projects. Now, there are certainly situations in which using resources without the owner's permission can be justified, and we'll get to that down around step 6 or 7, but all other things being equal, if there is a better option, you should use it.</p><p>My recommendation when looking to acquire bulk data for research purposes is to do the following in this order:</p><ol><li>Look for bulk download options provided by the content owner. It is very common to see people talk about scraping sites like Wikipedia, IMDB, Github, or StackOverflow. Guess what! No need, as all of these sites provide bulk data download options.</li><li>If no bulk download is available, see if there is an API that might provide what you need within the API terms of use.</li><li>Check the terms of service or user agreement to see if by some chance it actually explicitly allows automated scraping in some form. If it does, then go ahead, but this is a rare case.</li><li>Email the organization or person running the site and ask if it would be possible to arrange access to the data you are interested in.<ol><li>You may want to do this well ahead of the time you'll need the data so that there is time for negotiation, legal agreements, etc.</li><li>Simultaneously, you may want to ask around among your network and advisors as to whether there is a version of the bulk data available already that you may have missed.</li></ol></li><li>If the organization is not willing to allow use of their data, see if there is an alternative data set that could serve the same purpose. Note that this may require changing your research plan. That's fine! Part of building a good research plan is being able to execute it ethically and legally. It's a good skill to develop.</li><li>Consult a lawyer. And an ethicist if there is anything conceivably sensitive about the data you are accessing.</li><li>If you've determined that the merits of your need outweigh the legal and ethical issues around ownership and permission, and you are willing to accept the potential consequences of being wrong, scrape.</li></ol><h2>But...</h2><p>... some people won't agree with the ethical points above, and keep in mind that I'm not a lawyer, nor do I really know anything about the law in this area. I'm laying out a fairly conservative position.&nbsp;If you disagree and your eyes are open to the possible consequences of being wrong, ranging from a mild slap on the wrist to <a href="https://ironholds.org/blog/when-science-goes-bad-consent-data-and-doubling-down-on-the-internet/">career suicide</a> and possible jail time, then who am I to stop you?</p><p>But if you are an instructor teaching a class, a lead researcher advising your subordinates,&nbsp;or an employee or contractor doing a project for a company, there is more at stake than just yourself. You could well get your students in trouble or subject your company to a <a href="http://www.independent.co.uk/news/business/news/sap-pays-oracle-20m-for-illegal-downloading-of-software-2354292.html">damaging lawsuit</a>&nbsp;without realizing that what you are doing is problematic. So think twice and look for alternatives.</p>]]></description></item><item><title>Reductio</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Fri, 06 Feb 2015 15:00:00 +0000</pubDate><link>https://github.com/esjewett/reductio</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:54d3f275e4b0d2c0dd8a9f93</guid><description><![CDATA[<p><a href="http://square.github.io/crossfilter/">Crossfilter</a> has played a pretty big part in my work for the last couple of years. For those who don't know, Crossfilter is a Javascript library that "supports extremely fast (&lt;30ms) interaction with coordinated views, even with datasets containing a million or more records" in the web browser. It is designed for use in visualizations and applications that allow interaction with and filtering of multiple dimensions of a single data set.</p><p>I've found Crossfilter to be a very powerful tool for building applications that support data interactions that feel 'real-time'.&nbsp;The idea is that &lt;100ms interactions are fast enough to allow us to identify patterns and correlations as the visualization changes in exact coordination with our filtering. I use Crossfilter in several places, but the biggest project is easily <a href="http://palladio.designhumanities.org">Palladio</a>, which is a testbed platform for research activities and a powerful example of the possibilities of browser-based data exploration tools.</p>


































































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png" data-image-dimensions="1432x394" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png?format=1000w" width="1432" height="394" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1423178541335-ET4KZKPPZOVTQJKTCDM8/Screen+Shot+2015-02-05+at+5.20.44+PM.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p>Faceted browsing in Palladio - driven by Crossfilter and Reductio</p>
          </figcaption>
        
      
        </figure>
      

    
  


  





  <p>Crossfilter consistently trips up people trying to use it for the first time because, I believe, its programming model for aggregations&nbsp;is inconsistent with the model we usually expect. It's for this reason that I started <a href="https://github.com/esjewett/reductio">Reductio</a>, a library that helps build up&nbsp;aggregation functions that work correctly and efficiently with Crossfilter's model.</p><p>I'm not going to get into all of&nbsp;the details here, but defining aggregations in Crossfilter requires defining functions that incrementally update the aggregation based on the addition <em>or&nbsp;</em>removal of&nbsp;records. This is at odds with the standard way of computing aggregations by building them up from scratch that we see in SQL or more standard map-reduce models.*</p>
























  
    <pre class="source-code"><span class="cm-comment">// A function that can be passed to Array.reduce to sum the array</span>
<span class="cm-keyword">function</span>(<span class="cm-def">a</span>, <span class="cm-def">b</span>) {
  <span class="cm-keyword">return</span> <span class="cm-variable-2">a</span> <span class="cm-operator">+</span> <span class="cm-variable-2">b</span>;
}</pre>
  


  
    <pre class="source-code"><span class="cm-comment">// The equivalent operation in Crossfilter requires 3 functions</span>
<span class="cm-keyword">function</span> <span class="cm-variable">reduceAdd</span>(<span class="cm-def">p</span>, <span class="cm-def">v</span>) {
  <span class="cm-keyword">return</span> <span class="cm-variable-2">p</span> <span class="cm-operator">+</span> <span class="cm-variable-2">v</span>.<span class="cm-property">total</span>;
}

<span class="cm-keyword">function</span> <span class="cm-variable">reduceRemove</span>(<span class="cm-def">p</span>, <span class="cm-def">v</span>) {
  <span class="cm-keyword">return</span> <span class="cm-variable-2">p</span> <span class="cm-operator">-</span> <span class="cm-variable-2">v</span>.<span class="cm-property">total</span>;
}

<span class="cm-keyword">function</span> <span class="cm-variable">reduceInitial</span>() {
  <span class="cm-keyword">return</span> <span class="cm-number">0</span>;
}</pre>
  




  <p>It's these aggregation functions that consistently trip people up. The summation case is simple enough because summation is an operation that is computationally equivalent&nbsp;given the running total and the value to be added or removed. But what about operations that are not reversible? Take the computation of a maximum. When adding a new record to a maximum aggregation, we just need to check if the value of the record is larger than the current largest value we've seen (the current maximum).</p>
























  
    <pre class="source-code"><span class="cm-comment">// A function that can be passed to Array.reduce to return the max</span>
<span class="cm-keyword">function</span> (<span class="cm-def">a</span>, <span class="cm-def">b</span>) {
  <span class="cm-keyword">return</span> <span class="cm-variable">Math</span>.<span class="cm-property">max</span>(<span class="cm-variable-2">a</span>, <span class="cm-variable-2">b</span>);
}</pre>
  




  <p id="yui_3_17_2_1_1423176286594_68379">But if we remove a record with a value equal to the current maximum, we need to know the next smallest value. And if we remove the record with that value we need to know the next smallest, and so on. We have to keep track of all values seen in order to avoid needing to rebuild the entire aggregation from scratch when a record is removed. And yes, this is significantly faster than rebuilding from scratch!</p>
























  
    <pre class="source-code"><span class="cm-comment">// The equivalent operation in Crossfilter (optimized, with</span>
<span class="cm-comment">// error guards). Adapted from Reductio</span>
<span class="cm-keyword">var</span> <span class="cm-variable">bisect</span> <span class="cm-operator">=</span> <span class="cm-variable">crossfilter</span>.<span class="cm-property">bisect</span>.<span class="cm-property">by</span>(<span class="cm-keyword">function</span>(<span class="cm-def">d</span>) { <span class="cm-keyword">return</span> <span class="cm-variable-2">d</span>; }).<span class="cm-property">left</span>;

<span class="cm-keyword">function</span> <span class="cm-variable">reduceAdd</span>(<span class="cm-def">p</span>, <span class="cm-def">v</span>) {
    <span class="cm-variable">i</span> <span class="cm-operator">=</span> <span class="cm-variable">bisect</span>(<span class="cm-variable-2">p</span>.<span class="cm-property">values</span>, <span class="cm-variable-2">v</span>.<span class="cm-property">number</span>, <span class="cm-number">0</span>, <span class="cm-variable-2">p</span>.<span class="cm-property">values</span>.<span class="cm-property">length</span>);
    <span class="cm-variable-2">p</span>.<span class="cm-property">values</span>.<span class="cm-property">splice</span>(<span class="cm-variable">i</span>, <span class="cm-number">0</span>, <span class="cm-variable-2">v</span>.<span class="cm-property">number</span>);
    <span class="cm-variable-2">p</span>.<span class="cm-property">max</span> <span class="cm-operator">=</span> <span class="cm-variable-2">p</span>.<span class="cm-property">values</span>[<span class="cm-variable-2">p</span>.<span class="cm-property">values</span>.<span class="cm-property">length</span> <span class="cm-operator">-</span> <span class="cm-number">1</span>];
    <span class="cm-keyword">return</span> <span class="cm-variable-2">p</span>;
}

<span class="cm-keyword">function</span> <span class="cm-variable">reduceRemove</span>(<span class="cm-def">p</span>, <span class="cm-def">v</span>) {
    <span class="cm-variable">i</span> <span class="cm-operator">=</span> <span class="cm-variable">bisect</span>(<span class="cm-variable-2">p</span>.<span class="cm-property">values</span>, <span class="cm-variable-2">v</span>.<span class="cm-property">number</span>, <span class="cm-number">0</span>, <span class="cm-variable-2">p</span>.<span class="cm-property">values</span>.<span class="cm-property">length</span>);
    <span class="cm-variable-2">p</span>.<span class="cm-property">values</span>.<span class="cm-property">splice</span>(<span class="cm-variable">i</span>, <span class="cm-number">1</span>);
    
    <span class="cm-comment">// Check for undefined.</span>
    <span class="cm-keyword">if</span>(<span class="cm-variable-2">p</span>.<span class="cm-property">values</span>.<span class="cm-property">length</span> <span class="cm-operator">===</span> <span class="cm-number">0</span>) {
        <span class="cm-variable-2">p</span>.<span class="cm-property">max</span> <span class="cm-operator">=</span> <span class="cm-atom">undefined</span>;
        <span class="cm-keyword">return</span> <span class="cm-variable-2">p</span>;
    }
 
    <span class="cm-variable-2">p</span>.<span class="cm-property">max</span> <span class="cm-operator">=</span> <span class="cm-variable-2">p</span>.<span class="cm-property">values</span>[<span class="cm-variable-2">p</span>.<span class="cm-property">values</span>.<span class="cm-property">length</span> <span class="cm-operator">-</span> <span class="cm-number">1</span>];
    <span class="cm-keyword">return</span> <span class="cm-variable-2">p</span>;
}

<span class="cm-keyword">function</span> <span class="cm-variable">reduceInitial</span>() {
  <span class="cm-keyword">return</span> { <span class="cm-property">values</span>: [], <span class="cm-property">max</span>: <span class="cm-number">0</span> };
}</pre>
  




  <p>It's a lot of work to come up with these aggregation functions, make them efficient, and test them thoroughly, and Crossfilter beginners (myself included)&nbsp;consistently struggle with this. Believe it or not, things get even nastier when dealing with thing like pivot- or exception-aggregations, when building aggregations where a record counts in more than one aggregation group (like moving averages, or tags),&nbsp;or when trying to compose multiple aggregations (commonly required for visualizations as simple as a scatter-plot).&nbsp;<a href="https://github.com/esjewett/reductio">Reductio</a>&nbsp;supports all of these aggregations and a few more, and I hope it will allow a quicker, smoother start when using Crossfilter.</p>























<hr />


  <p>* This difference in model&nbsp;is to allow very fast&nbsp;<em>interactions</em>&nbsp;with data and aggregations. If you aren't building an application that requires real-time interactions and are thinking about using Crossfilter simply to do one-time calculations or aggregations on your data, think again about using Crossfilter as it is probably not the right tool for the job.</p>























<p><a href="http://www.esjewett.com/blog/reductio">Permalink</a><p>]]></description></item><item><title>Skating to where the puck is</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Wed, 04 Feb 2015 22:07:45 +0000</pubDate><link>http://www.esjewett.com/blog/skating-to-where-the-puck-is</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:54d29838e4b0771432488abd</guid><description><![CDATA[<p>Being an SAP Mentor is an interesting situation. The relationship with SAP usually feels amazingly collaborative, but&nbsp;occasionally&nbsp;uncomfortably adversarial. ThIs is probably a healthy place for a relationship with a massive organization to be. Every organization includes many great people and interactions with those people are always delightful. Every organization is also, as an organization, predisposed to get the answers to certain questions consistently right and the answers to other sorts of questions consistently wrong.</p><p>One such question that SAP has consistently gotten wrong in the past is how to push technology adoption among a massive install base. Historically, it would appear that SAP has tended to try to monetize upgrades to underlying technology in order to recoup development costs or profit from its technology offerings. Netweaver, BW, Visual Composer, add-ons like SSO and Gateway, Personas, Business Client,&nbsp;and HANA* are all technologies in which&nbsp;SAP has either underinvested due to lack of direct revenue potential (BW especially) or has tried to monetize. The result is that widely deployed "free" technology from SAP often stagnates while advanced technology with an additional cost often sees limited adoption in SAP's install base.</p><p>This outcome is terrible for SAP's business. It makes it very difficult for SAP to keep its application offerings competitive in the marketplace. The reason is that basic application functionality to be competitive is often dependent on improvements in underlying technology. But if technology is either widely deployed and under-featured <em>or</em> decently featured but not widely deployed, then applications need to use only the under-featured technology stack in order to have a large enough potential install base to justify development costs. In other words, SAP often forces itself to build applications on sub-par technology.</p><p>We see this dynamic constantly with SAP. One example is UI technology.&nbsp;Clearly a long-standing weakness of SAP's applications has been user-interface and user-experience. The SAP GUI is outdated and SAP's attempts to improve on it like the Business Client have, in my opinion, been torpedoed by SAP's monetization reflex. They haven't initially been&nbsp;<em>better enough</em>&nbsp;to see widespread adoption under a monetization scheme, and with lack of adoption, investment has faded. A similar dynamic played out with SAP's support for Flash and Silverlight as UI technologies for years after it had become clear they were destined for the trash-heap of web-UI delivery technologies.</p><p>And yet, over the last 4 years, SAP has been able to overcome this tendency in one area that may be incredibly important to its long-term business prospects around the newly announced S/4HANA. In&nbsp;the&nbsp;case of a key succession of technologies, SAP has been able to do something different, with impressive results. Those technologies: Gateway, SAP UI5,&nbsp;and Fiori**.</p><p>Initially, all seemed&nbsp;to be going well. SAP developed Gateway in part due to prodding from influencers like SAP Mentors around the need for a modern, RESTful API layer in SAP applications to allow the development of custom user interfaces and add-ons in a sustainable manner. DJ Adams and others showed the way with projects like the <a href="http://scn.sap.com/people/dj.adams/blog/2009/09/21/a-new-rest-handler-dispatcher-for-the-icf">Alternative Dispatch Layer</a>&nbsp;(in 2009), to make development of these APIs easier. Uwe Fetzer taught the ABAP stack to <a href="https://github.com/se38/zJSON">speak JSON</a>. And suddenly one could fairly easily create modern-looking APIs on SAP systems. SAP folded a lot of those learnings into Gateway, which was a great way to push the tools for building modern APIs into SAP's applications and&nbsp;out to&nbsp;the install-base.</p><p>Well, it would have been,&nbsp;but SAP&nbsp;made its usual&nbsp;mistake: it attempted to monetize Gateway.</p><p>The result of the monetization attempt could be predicted well enough. It would make roll-out of Gateway to the SAP install base slow, at best. Fiori would be delayed because it would need to build out its own API layer rather than relying on Gateway technology.&nbsp;Applications like Simple Finance or S/4HANA that are&nbsp;dependent on Fiori would subsequently be delayed, if they were created at all. Perhaps Fiori's roll-out is delayed by a year, Simple Finance by 2 years, and S/4HANA isn't announced until 2018.</p><p>But S/4HANA was announced in January 2015. So what went differently this time?</p><p>Fortunately, back in 2011, shortly after the initial Gateway monetization strategy was announced, SAP Mentors like Graham Robinson and other community members <a href="http://scn.sap.com/community/gateway/blog/2011/10/17/thoughts-on-netweaver-gateway">stepped in to explain</a> why this was a mistake and push back against the strategy, both publicly and privately. While clearly not the only reason for SAP's change of heart, this feedback from the community was <a href="http://scn.sap.com/community/about/blog/2012/10/19/the-multiplier-effect">powerful</a>, and ultimately <a href="http://scn.sap.com/community/gateway/blog/2011/10/17/thoughts-on-netweaver-gateway#comment-333317">SAP revised Gateway</a> licensing in 2012 so that it made sense for SAP, its partners, and customers&nbsp;to build new applications&nbsp;using&nbsp;Gateway.</p><p>This revision set us on the path to relatively quick uptake of SAP UI5 (a modern browser-based front-end framework&nbsp;which leverages the Gateway APIs)&nbsp;and later Fiori and the Fiori apps&nbsp;(most of which are&nbsp;based on UI5 and Gateway APIs). With Fiori,&nbsp;SAP again thought short-term and attempted to monetize Fiori, only reversing course and including Fiori with existing Business Suite licenses after similar pressure from another group of SAP Mentors&nbsp;who had experienced customers' frustration with SAP's stagnant user-experience. These Mentors, community members, and analysts&nbsp;were able to communicate the role Fiori needed to play in guarding against SAP customers migrating to cloud vendors offering&nbsp;a more compelling user-experience story.</p><p>Fiori, meanwhile, is a hit and serves as the basis for Simple Finance and now&nbsp;S/4HANA - SAP's recently announced blockbuster refresh of the entire Business Suite offering, which SAP clearly hopes will drive its business for the next 10 years. Would that be happening now if SAP had remained on its standard course of attempting to monetize Gateway? I don't think so. The interaction with SAP on these topics often left some feathers a bit ruffled, but it sure must be nice for those like Graham and DJ&nbsp;to see some of the fruits of those discussions in major products like S/4HANA.</p>























<hr />


  <p>*A note on HANA: I think that HANA may be the exception in this story. Unlikely most of SAP's other technology offerings, HANA is good enough to be competitive on its own, and not simply as a platform for SAP's applications. The results are not yet in on the HANA monetization strategy, but things are looking OK, if not great. Of course, Graham has <a href="http://scn.sap.com/community/hana-in-memory/use-cases/blog/2014/06/08/a-killer-app-for-sap-hana">something to say about that</a>, and what he says is always worth reading.</p><p>** Fiori is actually a design&nbsp;language focused on user-experience&nbsp;and a line of mini-applications&nbsp;implementing the Fiori design language&nbsp;to improve SAP Business Suite user-experience for specific business processes. However in the context of S/4HANA we can think of Fiori as a prerequisite and enabling component, like a technology prerequisite.</p>]]></description></item><item><title>Store everything: the lie behind data lakes</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Wed, 04 Feb 2015 18:21:40 +0000</pubDate><link>http://www.esjewett.com/blog/store-everything-the-lie-behind-data-lakes</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:54cbc7c7e4b0cc1bb3fd483d</guid><description><![CDATA[<p>I hope the data lake idea has passed the peak of its current, unfortunately large, round of hype. Gartner came down on the concept <a href="http://www.gartner.com/newsroom/id/2809117">pretty hard</a> last year, only 4 years after the term was <a href="http://blog.pentaho.com/2010/10/15/pentaho-hadoop-and-data-lakes/">coined</a> by Pentaho's James Dixon. More recently, Michael Stonebraker <a href="http://cacm.acm.org/blogs/blog-cacm/181547-why-the-data-lake-is-really-a-data-swamp/fulltext">illustrated many of the same concepts</a> from the perspective of a data management professional (note the excellent comment by <a href="https://twitter.com/datachick">@datachick)</a>. The frustration of conscientious data professionals with this concept is palpable.</p><h3>the initial worry - wasted effort</h3><p>The idea of a data lake is that we establish a single huge repository to store all data in the enterprise in its original format. The idea is that the processes of data transformation, cleansing, and normalization result&nbsp;in loss of information that may be useful at a later date.&nbsp;To avoid this loss of information, we should store the original data rather than transforming it before storing it.</p><p>This is a relatively noble goal, but it overlooks the fact that,&nbsp;done correctly, these processes also introduce clarity and reduce false signals that are latent in the raw data. If every data analysis project needs to recreate the transformation and cleansing process before doing their analysis, this will result in&nbsp;duplicated work and errors. Long live the datawarehouse.</p><h3>The deeper problem - adding information</h3><p>In my reading, this sums up the usual justification for data lakes as well as the source of frustration usually expressed by data professionals. But I think there is another issue with data lakes that is often overlooked: that the data lake approach implies that transformation is an information-negative operation. That transforming necessarily discards data, and therefore information, from the original data set.&nbsp;It is a response to a common frustration with datawarehousing - that the data in the warehouse doesn't&nbsp;<em>quite</em>&nbsp;answer the question we are trying to ask and if only we could get at the source data we could reconstruct the dataset so as to be able to answer the problem. Sometimes true.</p><p>Usually, however, there are real issues with this approach. The transformation from raw data to datawarehouse (or other intermediate representation) &nbsp;may remove information, but it&nbsp;adds other significant information to the source data. Specifically, it adds or acts on information about what data can go together and how it can be combined, how the data collection method may have influenced the&nbsp;data, sometimes weights data according to external information about its quality, might add interpolated data,&nbsp;etc. Usually this additional information is not stored along with the source data set. It's rare that it's stored in an accessible way along with the resulting data in a datawarehouse.&nbsp;I've seen almost no mention of maintaining this type of information in the context of a data lake. It is simply lost, or at best difficult to access.</p><h3>Existential questions - If a tree falls...</h3>
























  
  
    
    
      
        
        
        
        
          <blockquote class="twitter-tweet"><p><a href="https://twitter.com/esjewett">@esjewett</a> <a href="https://twitter.com/BoobBoo">@BoobBoo</a> <a href="https://twitter.com/oswaldxxl">@oswaldxxl</a> what is data and what is noise is an existential question :)</p>— Vijay Vijayasankar (@vijayasankarv) <a href="https://twitter.com/vijayasankarv/status/561351843796631552">January 31, 2015</a></blockquote>

        
        
        
      
    
  




  <p id="yui_3_17_2_3_1422973869258_26425">Which brings me to the big lie around data lakes: storing everything. If a measurement is never taken, is it data? How many measurements are not taken for each measurement that is? Can a data lake store these un-measured measures?</p><p id="yui_3_17_2_3_1422973869258_26422">The issue in data analysis, I find, is not so much that data to answer our question was collected but discarded. Rather, the problem is that the data was never collected, the measurements never taken, or taken improperly for use in addressing&nbsp;the question now at hand. Like the traveller in Frost's poem, we have limited resources. Collecting one measure&nbsp;is a road that precludes collecting other measures due to these limits. Storing everything, or even most things, is not possible.</p>























<figure class=""
>
  <blockquote data-animation-role="quote" data-animation-override>
    <span>“</span>Two roads diverged in a wood, and I—<br/>I took the one less traveled by,<br/>And that has made all the difference.<span>”</span>
  </blockquote>
  <figcaption class="source">&mdash; Robert Frost, "The Road not Taken" </figcaption>
  
  
</figure>


  <p id="yui_3_17_2_3_1422973869258_9463">Later, we often wonder if taking the other road would have allowed us to answer our current questions, but we can't go back and make different decisions about measurement. Data lakes don't change that. Maybe data lake vendors should switch to&nbsp;selling time machines.</p>]]></description></item><item><title>Palladio</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Wed, 09 Apr 2014 21:28:02 +0000</pubDate><link>http://www.esjewett.com/blog/palladio</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:53458812e4b0fb5fdfb963f6</guid><description><![CDATA[<p>I've been working on this for a while, so it's probably worth posting something about it.</p><p>Palladio is a platform for data visualization and exploration designed for use by humanities researchers. We're in early beta at the moment and will be doing a series of releases throughout 2014. You can read about it and try it out here:&nbsp;<a target="_blank" href="http://palladio.designhumanities.org/">http://palladio.designhumanities.org/</a></p><p>I think the website does a pretty good job of explaining the capabilities of the platform, so I'll leave that for the moment. I encourage you to go check it out before reading on, because it will be worth understanding how the platform works to give some context to the discussion below.</p>


































































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
              
              
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png" data-image-dimensions="2500x1576" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png?format=1000w" width="2500" height="1576" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1397078791887-10SH5AJW0LSTXOTUIJDF/image-asset.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
            
          
        

        
          
          <figcaption data-sqsp-image-classic-block-caption-container class="image-caption-wrapper">
            <p>The map view in the Palladio interface</p>
          </figcaption>
        
      
        </figure>
      

    
  


  





  <p>So, why am I super-excited about this? Mostly because of the great team, which has the vision, technical skills, theoretical and domain knowledge, and information design chops to pull off this type of project. I consider myself lucky to be able to work with this group.</p><p>It's also great to be working on a project like this for a field that is simultaneously very strong on information theory and a bit underserved in terms of some types of tools. This is in stark contrast to my usual enterprise data management and visualization work where the theory tends to be weak but a plethora of tools exist.</p><p>In addition to trying to build a tool that incorporates important and underserved aspects of humanistic inquiry, I am excited to work with a team that buys into introducing state-of-the-art concepts around data exploration tools in general. Many of the concepts we are working to implement in Palladio are directly applicable to the types of data exploration problems we find in the enterprise and are concepts rarely expressed in existing tools. Palladio is a great example (one of many great examples) of how the process of humanistic inquiry can motivate the development of methods that are both technically and conceptually applicable in wildly different disciplines.</p><h3>Interaction</h3><p>The thing that initially most impresses people about Palladio is the way that filtering and movement are integral to the visualization. Specifically, the visualizations update and move in real-time <em>as you filter</em>. This is not a new concept, but I don't think I've ever seen it fully implemented in a general-purpose tool. Getting the level of movement right is a design challenge that the team is tackling as a work in progress, but in my opinion this characteristic of real-time updates and movement is a key feature for a data exploration tool, and few if any tools implement it.</p><p>I'll try not to get too squishy here, but this behavior of the tool allows a person to interact with the data in a very direct way, giving a&nbsp;<em>feel</em>&nbsp;for the data that would not otherwise exist. When you can see the results of your interactions with the data in real time, it is a lot easier to conceptually link step-changes and interesting events with the actions that caused them. For example, dragging a filter along the timeline component allows you to play back history at your own speed, speeding up or slowing down as suits you. My theory-foo is weak, but when you see it, I think you'll understand. Try it out with the sample data.</p><h3>Browser</h3><p>Techy alert: Palladio is a purely client-side, browser-based application. The only involvement of a server is to deliver the HTML, Javascript, and CSS files that comprise Palladio. We arrived at this design through a few iterations, but the motivation was that we wanted to be cross-platform, super-easy to install, and still support pretty big data sets and fluid interactions. 10 years ago, this would have been nearly impossible, but today we have web browsers that, amazingly, are capable of supporting these types of applications. Yes, browsers can now support dynamically filtering, aggregating, and displaying 10s and 100s of&nbsp;<em>thousands</em>&nbsp;of rows of data and displaying hundreds of data points simultaneously in SVG; thousands of data points if you use canvas instead.</p><p>The time for client-side data visualization in the browser has come and we are taking advantage of that in a big way. A great strength of browser-rendered visualizations is that they allow true interaction with the visualization. Just using SVG or Canvas as a nicer replacement for static images is fine, but it isn't fully exploiting the medium. Add to this that the type of interactivity we are providing with Palladio is technically impossible in a client-server setup. Even if the server responds to queries instantaneously, the round-trip time the client-server communication introduces means that interactions won't be as closely linked as they are in Palladio, severely degrading the quality of the interactive experience.</p><p>Admittedly, we have work to do on performance and our cross-browser support could be better. Additionally, the problem of data that simply doesn't fit in the browser's memory remains unaddressed, though we have some ideas for mitigating the problem. But I think this is an application design approach that could be exploited for the vast majority of data sets out there, either because the data itself is relatively small, or through judicial use of pre-aggregation to avoid performance and size issues.</p><h3>Design</h3><p>Lastly, user experience and information design have been integral components of this project from the start. The design has been overhauled several times along the way, and I wouldn't be at all surprised if it happened again. To be clear, I'm a complete design newb, but we have a <a href="http://www.twitter.com/giorgiocaviglia">great designer</a> working on the team. One thing that has become clear to me through this process is that designing a general purpose interactive visualization tool is&nbsp;<em>hard</em>. There are more corner-cases than I previously imagined possible, but we are trying to get the big pieces right and I think we're on the road to success.</p><p>Obviously the organizational dynamics on a small team like ours are very different than those in a big development organization, but it seems like information design on most of the enterprise data exploration tools from larger vendors either started out problematic and stayed that way, or started out pretty well and started slipping as the tool took off. I'm not sure if there is an answer to this, but it's clear that when building a tool in this space, having at least one information designer with a strong voice on the team is indispensable.</p><h3>Let me sum up</h3><p>So, that's the Palladio project, as well as a few takeaways that I feel can be applied back to pretty much any data exploration project. In closing, I'll just mention that none of this would be possible without some great open source projects that we use and, most importantly, without the great team working on this as well as the feedback and patience of our dedicated beta participants. The central Javascript libraries we used to pull this off are <a href="http://d3js.org/">d3.js</a>, <a href="http://square.github.io/crossfilter/">Crossfilter</a>, and <a href="http://angularjs.org/">Angular.js</a>. The members of the core team are <a href="http://www.twitter.com/cncoleman">Nicole Coleman</a> (our fearless leader), <a href="http://www.twitter.com/giorgiocaviglia">Giorgio Caviglia</a> (design and visualization), <a href="http://www.twitter.com/markbraude">Mark Braude</a> (documentation, testing, working with our beta users, and project management), and myself doing technical implementation work. <a href="http://www.twitter.com/danedels">Dan Edelstein</a> is the principal investigator.</p><p>It's been a great ride so far and we've got some exciting things planned for the rest of the year. This is definitely a work in progress, and feedback is very welcome. Follow the <a href="http://www.twitter.com/HDStanford">Humanities + Design lab</a> on Twitter for updates.</p>]]></description></item><item><title>ABAP development - the dream and the reality</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Mon, 10 Feb 2014 15:51:37 +0000</pubDate><link>http://www.esjewett.com/blog/abap-development-the-dream-and-the-reality</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:52f8f595e4b0c80880f2ad95</guid><description><![CDATA[<p>Late last week I did a podcast with Jon Reed and Graham Robinson on SAP's developer engagement initiatives. You can watch that <a href="http://www.youtube.com/watch?v=Bz0lvZs71xw&amp;feature=c4-overview&amp;list=UU9OUJZE2oIwa6rqWSqYoXKw">here</a>.</p><p>This discussion, and the fact that I'm back doing some serious ABAP development after a lot of non-ABAP work, got me thinking about the value SAP's application ecosystem contains that developers would love to add to, to SAP's gain. But it's very difficult to add value in this ecosystem as a developer because of (among other things) the weaknesses of the ABAP development environment. What, I asked myself, would a truly strong ABAP development environment would look like. Here are a few thoughts:</p><ul><li><strong>ABAP system as a decentralized version control system (DVCS) node</strong> - An ABAP system should act as a true DVCS node. <a href="http://www.joelonsoftware.com/items/2010/03/17.html">This is a good explanation of the nirvana you too could experience with a DVCS, with pictures of a cute dog</a>. In short, an ABAP system should, at the package level or at the full system level, be able to commit changes, push those changes to a remote repository, pull changes from a remote repository, maintain branches, and merge (with user input if necessary) those branches. These descriptions use Git parlance, because that is what I know.</li><li><strong>Branch and merge</strong> - Related to behaving as a DVCS, the ABAP system should be able to support full branch &amp; merge semantics. I'm not sure how well I can explain this. I'll just tell you, it's a great feeling to have the ability to create a branch of a complex project, rip out an integral component, completely rewrite it, merge those changes back into the main development branch, and have none of the other 3 people working on closely related parts of the project notice any change expect that things just&nbsp;<em>work</em>&nbsp;better. I know. I did it last week. Oh, and I simultaneously made fixes as they were requested on other branches of the project and pushed those out to my co-workers&nbsp;<em>while</em>&nbsp;I was working on that rip-and-replace. Good luck pulling that off on an ABAP development system.</li><li><strong>Namespaces</strong> - SAP should make namespaces available to open source projects for free, with minimal bureaucracy. And while you're at it, just do the same for everyone. What do I mean by "minimal bureaucracy"? A web form and account system that saves the namespace to a database after checking that no one else has already registered the same namespace. Why are namespaces important? They address the problem of naming collisions between development projects. Right now, the open source ABAP community mostly develops in the customer namespace. This is a recipe for naming-collision hell. But what other options do people have? SAP should to fix this, and fast. And while you are at it, make the namespaces versioned (see below).</li><li><strong>Improve SAPlink &amp; ZAKE, and include them in the standard distribution</strong> - SAPLink and ZAKE are the defacto standard ways to develop and distribute open source ABAP code. They are massive improvements over the status quo, but they aren't very widely installed, and they are not perfect. If SAP wants a healthy ABAP developer community, I'd recommend that SAP join these projects, contribute to them, and make them awesome. Then include (up-to-date) versions of them in the standard Netweaver ABAP distribution.</li><li><strong>Speaking of up-to-date, implement ABAP package and dependency management</strong> - Maven is kind of a nightmare, but it works. Let's say I want an mock/fake library like <a href="https://github.com/uweku/mockA">MockA</a>&nbsp;(highly recommended) to use in my ABAP Unit tests. I go out and find it on Github, install SAPLink (which doesn't work properly so I have to go back and activate everything), download the .slnk file, install that using SAPLink (which doesn't properly install some interfaces, so I have to reinstall it), and finally I can use it in my project. But I find a bug! So I report that bug to the maintainer, who is awesome and fixes it in less than a day. My reward? I get to do the whole download, install, install all over again. We should just be able to list library versions as dependencies of our packages, classes, and test classes, and the system should handle downloading and installing them. But this will result in organizational chaos, you say. No, it won't. Because everyone will be using namespaces, and those namespaces will be versioned, so we can have more than one version of a library installed and usable at a time.</li></ul><p>Right now it's a bit frustrating to switch between ABAP and non-ABAP development. The tooling in the Javascript and Java ecosystems is so far superior and so much more concerned with developer productivity that it begins to be painful to return to ABAP. I can't imagine what it would be like to come to the ABAP ecosystem with no background.</p><p>This is a shame, because it's a nice language in a lot of ways, and the business applications that are accessible through ABAP are an absolute goldmine of information and business process execution logic that loads of developers would love to add value to, in the process creating a great deal of value for SAP. If they could only be productive on the platform. I'd love to see SAP take ownership of the developer experience and make the ABAP ecosystem flourish.</p>]]></description></item><item><title>Gullible finance?</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Thu, 16 May 2013 02:45:40 +0000</pubDate><link>http://www.esjewett.com/blog/gullible-finance</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:51941698e4b0566afb2344a0</guid><description><![CDATA[<p>I own AAPL, and I have no idea what it's actual valuation should be, but when I saw <a href="http://tech.fortune.cnn.com/2013/05/15/apple-trainer-roic/">this article</a> about an analyst who thinks AAPL should be valued at $240 coming in over the <a href="http://daringfireball.net/linked/2013/05/15/trainer-240">Daring Fireball feed</a>, I couldn't help but look.​</p><p>​What could this guy possibly be thinking? What are the financial reporters that give him a platform thinking? I'll admit, I couldn't help it. I don't know much about this stuff, but I dug in a little bit to try to figure it out.</p><p>Of course, the fact that David Trainer's <a href="http://blog.newconstructs.com/wp-content/uploads/2013/05/NewConstructs_Model_AAPL_valuationBasedOnROIC.pdf">PDF calculation</a>​ pegs Apple's Net Operating Profit After Tax (NOPAT) for 2012 at under $11 billion is a little fishy since it was actually around $41 billion. Turns out, the analysis is based on a "what if" scenario assuming that Apple had a Return On Invested Capital (ROIC) for 2012 of 70% and for 2013 (to date) of 52%. These drive a calculated Economic Book Value per Share around $240, which is apparently Trainer's target.</p><p>​<span>Of course, Apple didn't have these ROICs, by Trainer's own calculations, so it's a bit foolish to run a "what if" scenario on them. The actual ROIC for 2012, shown <a href="http://blog.newconstructs.com/wp-content/uploads/2013/05/NewConstructs_AAPL_Model_Unadjusted_Overrides_inactive.pdf">here</a>, was 271%. 270% vs. 70%, but who's counting? God knows how Trainer is calculating the "Total Capital" denominator in the ROIC calculation. It looks pretty close to Working Capital. But for 2013 I'd expect the <a href="http://www.investopedia.com/terms/r/returnoninvestmentcapital.asp">ROIC</a> to drop somewhat versus the 2012 level even if Net Income remains constant. This is because dividends have gone up and Total Capital should as well, <a href="http://www.asymco.com/2012/11/07/recapex-the-curious-case-of-apples-2012-and-2013-capital-expenditures/">according to Horace Dediu's analysis on Asymco</a>. But for ROIC to drop to 52% by Trainer's calculations would take a truly massive drop in income or a much larger spike in capital expenditure than is indicated by Apple's 10K.</span></p><p>But really, I don't know anything about this stuff. Don't take my word for it. Take Trainer's. Given Apple's actual ROICs, what does ​David Trainer's analysis indicate the Economic Book Value per Share is today? Well, he conveniently cuts off <a href="http://blog.newconstructs.com/wp-content/uploads/2013/05/NewConstructs_AAPL_Model_Unadjusted_Overrides_inactive.pdf">this</a> PDF one line before he reveals his value, but if we do a little math based on the Price to Economic Book Value per Share ratio we get:</p><p>$443 / 0.56 = $791</p><p>(Don't worry, I've saved the PDFs in case Trainer decides he needs to cut off a little bit more of the unadjusted calculation.)​</p><p>​Now, of course, there is a decent chance that Apple's ROIC will decline to something a little closer to its rivals over the next several years, but it's exceedingly unlikely it will fall off a cliff in 2013 and hit 52%. And it's a bit more than disingenuous to retroactively assume that a company reported different financial performance than it actually did.</p><p></p><p>​</p>]]></description></item><item><title>How points can miss the point - thoughts on gamification</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Tue, 26 Feb 2013 20:17:23 +0000</pubDate><link>http://www.esjewett.com/blog/how-points-can-miss-the-point</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:512bc30ce4b0c86539771c84</guid><description><![CDATA[<p>​I like games. I like work.</p><p>But I'm bothered by "gamification" - the trend of using game design methods to encourage specific behavior in non-game situations, like the work environment. Usually this involves the use of points, badges, levels, and other feedback mechanisms. Often there is an element of competition involved.</p><p>Since I enjoy both games and work, one might think I'd be a fan of bringing the two closer together. Actually, I find the idea fundamentally problematic and prone to misuse. If I worked like I play games, or cared about work like I care about games, I would have been fired many times over by now.</p><p>What are we missing when we advocate gamification systems focused on points and badges? It might be a misunderstanding of games, or perhaps a narrow focus on a particular type of game or on a specific type of mechanic employed in games. Sure, the collection of points and levels can be enjoyable in games, but points aren't the intrinsic reason people play games. Points, in games and in gamification, are extrinsic motivators that can provide a temporary motivation boost or a &nbsp;framework for a more intrinsic motivation, but which don't in themselves drive long-term engagement.</p><p>For every good game, I can show you something besides points that is the real reason I'm interested in that game. These reasons will be things like beauty, risk, competition, empathy, cooperation, excitement, mastery, surprise, uncertainty, approbation, story, joy, exercise, fear, relaxation, zoning out, maybe even friendship.</p><p>Sometimes points will enable one of these intrinsic motivators, but intrinsic motivators more often manifest in other ways and points are either absent or irrelevant. Points can even be counterproductive when deep intrinsic motivators like beauty, joy, mastery, empathy, cooperation, and friendship are in play.</p><p>Let's take an example. A game I've never played (it's PS3-only), but which crystalized some of these thoughts for me: Journey.</p>I've heard Journey spoken of as a unique game that emerged out of a unique development philosophy. In addition to wishing to tell a beautiful and haunting story, Journey attempts to create an anonymous social environment where interactions are overwhelmingly positive. In order to accomplish this, ​modes of interaction are severely curtailed. Players can make a single social gesture: a sort of "song" where the character's avatar hums a player-specific musical note and displays a glowing glyph over its head. Players can't interfere with each other (except to "recharge" each others' jump ability) and cannot communicate using language expect what it is possible to sing using these monosyllabic expressions.​Here is a video of some Journey game-play with a half-silly, half-serious running commentary. Watch a little.​
























  
  
    
    
      
        
        
        
        
          <iframe allowfullscreen src="http://www.youtube.com/embed/VvEmLYNS0sA" width="560" frameborder="0" height="315"></iframe>
        
        
        
      
    
  




  <p>​I'd like to draw your attention to just before 10:00 in this video, as the avatar is skiing down a slope and the short monologue by the caster after this. Then keep watching for another minute to see him meet up with another player. To paraphrase, this is a game that gets you to want to explore using story, beauty, and curiosity. There are no points. There is only "I wonder if ...", "What happens next?", and "Wow". The only thing approximating leveling is the fact that the character gains an enhanced ability to jump and "sing" as the game goes on, but in the context of this game it appears to be more of a plot device than a leveling system. And yet, the player wants to go on, wants to explore and find out more about the story, and (most surprisingly perhaps) loves to interact with others in the world and considers them to be friends.</p><p>Journey uses beauty, story,&nbsp;curiosity, serendipity, cooperation, and friendship to make the game interesting, re-playable, and emotional. And it obviously succeeds. For me it's surprisingly riveting to simply watch someone else play the game. (If you want to know more, the first video in the series is <a href="http://youtu.be/cuxr11H6qHM">here</a>, and <a href="http://www.g4tv.com/games/ps3/64117/journey/review/">here is a review that mostly relates the experience of watching others play the game</a>&nbsp;including a touching anecdote.) You don't get this kind of experience and meaning using only points.</p><p>The best games, like Journey, are games that aspire to be more than games. These games embody stories, art, community, cooperation, competition, opportunities for mastery, or all of these things. Yet, even these exceptional games don't capture our imaginations for all that long.</p><p>So what do we take from this? Mostly a lot of questions. Points systems are certainly useful in some situations, especially when used to structure competition. But I wonder if the overwhelming place of points in the gamification discussion belies something fundamental missing from the work environments we are trying to fix using gamification techniques. When we use points, levels, and badges to motivate, does that ​indicate a lack of intrinsic motivation in the environment? Are gamification systems acting as amplifiers of the meaning of our work, or are they attempting to impose an artificial rewards system that is at odds with the meaning of our work? If work is meaningful, wouldn't it be best to directly communicate that meaning to workers rather than filtering it through a metaphor of points and levels? If work isn't meaningful, or if the meaning of our work is negative or morally questionable, then why do we glorify the tools used to trick people into working on these things?</p><p>Shouldn't gamification be about the question of how, in our work environments, we communicate the meaning of our work? How do we provide opportunities for mastery, joy, beauty, and positive social interaction in the workplace and in our lives? Those, and other positive intrinsic motivators, are the goals. Points are, at best, a means to these ends.</p><p>​</p>]]></description></item><item><title>2nd episode of "BW for BObj Community" podcast</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Wed, 14 Nov 2012 16:27:31 +0000</pubDate><link>http://dslayer.net/vlayer/view/170-sap-business-warehouse-for-the-businessobjects-community-episode-2</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:50a3c67de4b07025e1a491cb</guid><description><![CDATA[<p>The <a href="http://dslayer.net/vlayer/view/170-sap-business-warehouse-for-the-businessobjects-community-episode-2">second episode of the podcast series</a> that <a href="http://twitter.com/josh_fletcher">Josh Fletcher </a>and I are putting together is now up on the DSLayer site. Head on over to check it out and see us talk about and demo getting the ins and outs of getting the free trial version of BW up and running, connecting BW with Data Services (the old way and the new way), and setting up a quick(ish) and dirty datamart in BW. There is even some crashing and burning at the end, as promised!</p><p>In future, hopefully shorter, episodes we are planning to get a BEx query set up with some calculated measures, pull in some additional employee data, and report on the whole thing using BI4 tools. Maybe we'll even take some initial steps away from a data-mart approach and towards a data warehouse approach.</p>























<p><a href="http://www.esjewett.com/blog/2nd-episode-of-bw-for-bobj-community-podcast">Permalink</a><p>]]></description></item><item><title>The BW/BObj Rift - We're all just services</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Tue, 06 Nov 2012 22:55:00 +0000</pubDate><link>http://www.esjewett.com/blog/the-bwbobj-rift-followup</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:50983e97e4b0c4855bdfecdc</guid><description><![CDATA[<p>Eric Vallo has written a quite wonderful and balanced piece starting to dig into the rift between the BW and BusinessObjects BI communities <a href="http://evtechnologies.com/home/blog/109-the-rift-between-bw-types-and-bobj-types">over on the EVTechnologies blog</a>. As Eric mentions, his blog was the result of quite a bit of back-and-forth between the two of us, the other principals involved in the <a href="https://dslayer.net/">DS Layer site</a>, and the wider SAP and BusinessObjects communities. Eric was kind enough to kick off the conversation, and I'll continue it here. Hopefully this will evolve into a longer public conversation.</p><p>So, let's get started!</p><p>Eric did a good job of laying out the different scenarios we tend to see out in the SAP &amp; BusinessObjects customer ecosystem right now. While each of these scenarios is clear, I think there is still a huge amount of confusion within both the BW and BusinessObjects communities about what each set of tools does and what it should be used for. In other words, when do you go for each scenario or tool? In my opinion, this confusion stems from the reality that both toolsets do a lot of things, and there is a lot of overlap. You can build a full datawarehouse and BI reporting solution using only BusinessObjects tools. And you can do the same using only BW tools. Or you can mix-and-match and pull in 3rd-party tools as well. But each toolset certainly has its strengths and weaknesses.</p><p>My take on BW's strengths and weaknesses is, perhaps, a bit out of the mainstream. But I think it is justified and, importantly, I think it is in line with SAP's vision for it's data platform. Specifically, I see BW as a set of data warehousing, data management, and systems management services. I admit readily that I've shamelessly stolen this way of describing the concept from others, but it fits so well that I have to use it. So, BW provides a set of services like the following very incomplete list:</p><ul><li>An abstract, platform-independent data warehouse modeling environment</li><li>A service for imposing a semantic model on top of the data warehouse modeling environment</li><li>An analytic engine for executing queries on the data residing under the semantic model</li><li>Security</li><li>Data management services like near-line storage (the ability to pretty transparently persist data in a single semantic structure across two data-stores with remarkably different latency, structure, performance, and cost characteristics while still being able to query that data "live") or archiving.</li><li>Visualization and reporting services</li></ul><p>The implementation of this service concept is far from perfect. In fact, today, most of these "services" aren't really recognizable as such because BW is such an integrated intertwined monster. With BW on HANA, we are now starting to see some of these services exposed individually, and the result is rather impressive.</p><p>One advantage of seeing BW as a collection of services for the purposes of this discussion is that it becomes much less important whether BW continues to exist. When viewed this way, the whole discussion about whether or not SAP HANA is going to "kill" BW becomes moot. The important question is whether the services continue to exist, either as part of BW, part of the HANA platform, or in another way. It is the services that provide the value, not BW per se.</p><p>The same actually holds true for BusinessObjects. Here we have services like the following (again, incomplete):</p><ul><li>A service for imposing a semantic model on existing data models</li><li>An analytical engine for executing queries on the data residing under the semantic model</li><li>Security</li><li>Services for moving data from one place to another and transforming that data</li><li>Services for tracking and analyzing data lineage and quality across multiple platforms</li><li>Visualization and reporting services</li></ul><p>BusinessObjects took a much more service-oriented development approach from the beginning, so many of these services are much more obvious as individual BusinessObjects products or product components. You might recognize direct descriptions of Universes, Data Services, or Information Steward, or the host of BusinessObjects reporting and visualization tools whereas in the case of the BW services there is no individual tool we can install to provide the service.</p><p>You probably also notice some overlap with the list of services in BW. Hence, the confusion.</p><p></p><p>The really interesting part of this overlap is that some of these services are provided in pretty similar ways between the two platforms (the semantic layer) while others take a very different approach (visualization and reporting services) or simply don't exist on one platform or another (abstract data warehouse modeling environment, or tracking and analyzing data lineage). It's these different approaches or unique services that differentiate the platforms.</p><p>Until SAP matures its data platform strategy and makes some decisions about which overlapping services live, die, or merge on each platform, it's going to be up to customers to do the hard thinking necessary to make the best implementation decisions for them. It is, of course, important to know what services each platform offers, what technique the platform uses to offer those services, and what kind of performance and functional characteristics similar services have on the different platforms. I hope that the <a href="https://dslayer.net/vlayer/view/167-bw-bobj-episode-1">podcast series Josh Fletcher and I are working</a> on will help with that discussion across customers. But in addition to these feature considerations, there are also cost, requirements, tooling, and expertise considerations that are going to be unique to each customer.</p><p>Personally, I think BW and BusinessObjects tools both have a lot to offer and we shouldn't discount one or the other when we're talking about addressing data warehousing or BI problems. As consultants, we'll have our personal preferences, but we should try not to let that influence our customer advisory roles when addressing early design and tool selection questions.</p><p>In the data warehousing space, my strong feeling is that BW's approach (if not BW itself) is a powerful approach to making datawarehousing more accessible. It doesn't solve the basic problems of data modeling and data governance, and it can introduce its own set of problems. But BW does help abstract some really knotty technical and organizational problems that like data consistency, technical governance, platform-specific optimization, and technical change management that must be addressed when building a data warehouse.</p><p>Meanwhile, the BusinessObjects approach of a really open, modern, and platform agnostic BI and EIM toolset is a great one. Especially in the ETL and BI space, many of the services that BusinessObjects offers are years, even decades ahead of where BW is with its more integrated and older transformation and reporting engines.</p><p>I'm hoping that the two communities can learn a lot from each other by interacting more both technically and socially. In other words, like Eric, I am really looking forward to feedback and teaching through other blogs or Twitter.</p><p>And now, back to you, <a href="http://evtechnologies.com/home/blog">Eric</a>.</p>]]></description></item><item><title>"SAP BW for the BusinessObjects Community" video podcast</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Tue, 06 Nov 2012 00:39:00 +0000</pubDate><link>https://dslayer.net/vlayer/view/167-bw-bobj-episode-1</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:50985c24e4b07a4c81af0572</guid><description><![CDATA[<p>I'm doing a podcast series with <a href="https://twitter.com/josh_fletcher">Josh Fletcher</a> from the <a href="https://dslayer.net/">DS Layer site</a> on the topic of BW for the BObj community. <a href="https://dslayer.net/vlayer/view/167-bw-bobj-episode-1">Our first episode is out</a>, so if you're interested in the topic of BW-BusinessObjects integration and what use BusinessObjects shops could possibly find for BW, you may want to take a look.</p><p>In this episode we discuss what BW is and what it can offer, and in future episodes we're going to piece together a Data Services extraction, BW-based data mart, and BusinessObjects-based reporting live. Tune in to watch us crash and burn. ;-)</p>























<p><a href="http://www.esjewett.com/blog/sap-bw-for-the-businessobjects-community-video-podcast-series">Permalink</a><p>]]></description></item><item><title>SAP Developer Report Card &#x26; Video</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Wed, 10 Oct 2012 21:12:25 +0000</pubDate><link>http://scn.sap.com/community/developer-center/hana/blog/2012/10/10/sap-developer-engagement--a-pre-teched-report-card-and-video-blog</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:5075e4b5e4b0028f3161f475</guid><description><![CDATA[<p><a href="http://www.twitter.com/jonerp">Jon Reed</a> was kind enough to organize a discussion about SAP's developer engagement initiatives between <a href="http://www.twitter.com/grahamrobbo">Graham Robinson</a>, <a href="http://www.twitter.com/jonerp">Jon</a>, and <a href="http://www.twitter.com/esjewett">me</a>. He's <a href="http://scn.sap.com/community/developer-center/hana/blog/2012/10/10/sap-developer-engagement--a-pre-teched-report-card-and-video-blog">written it up on SCN</a>&nbsp;and there is a <a href="http://www.youtube.com/watch?v=J85Jznb66fU">video of the discussion available</a>. I highly recommend reading the blog or watching the video if you are interested in the topic of development on top of SAP software, whether you are a development consultant, are making 3rd party add-ons or mobile apps, or are thinking about writing software that uses SAP's HANA database. If you want to chat about the topic, you can track one of us down at TechEd or on Twitter.</p>























<p><a href="http://www.esjewett.com/blog/sap-developer-report-card-video">Permalink</a><p>]]></description></item><item><title>It matters what you measure</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Mon, 01 Oct 2012 18:29:58 +0000</pubDate><link>http://www.esjewett.com/blog/it-matters-what-you-measure</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:5069e126e4b0a374292f1716</guid><description><![CDATA[<p>We see this a lot in the data analysis space, but it's worth remembering that it <strong>really</strong> matters what you measure.</p><p>Rarely have I seen such a clear example of that as the claim today from the app developer Snappli that the percentage of people using Apple Maps on iOS6 has dropped from 35% to 4%. <a href="http://www.guardian.co.uk/technology/2012/sep/29/apple-maps-how-good">The Guardian nails the story</a>, noting that the claim may well be without merit.</p><p>What happened?</p><p>Well, it turns out that Snappli was measuring not the percentage of people using the maps application each day, but the percentage of people using maps <strong>data</strong> every day. In iOS5, these percentages were effectively the same because the Maps application almost always had to download new map tiles every time it was opened.</p><p>So Snappli happily thought they had a good proxy for maps usage and over time they may have forgotten that their measurement was a proxy. They may have begun to assume that they were measuring actual maps usage. This happens all the time and it's really easy to do. But it's pretty embarrassing when something changes, causing our assumption to become invalid, and we don't realize it. That's when we start making false claims and looking pretty foolish.</p><p>That is what happened to Snappli. Because (surprise!) the Maps app in iOS6 doesn't download data very often. I just now threw my phone into airplane mode and zoomed into the last three cities I'd looked at over the last week and a half: Madison, WI; Minneapolis, MN; and Chicago, IL. In each of these cities I could see streets down to the lowest level of detail, including shops and points of interest. No data use.</p><p>So it seems that what Snappli scored as a strike against the new Maps app should actually be counted as a point in it's favor. And this whole saga can serve as a good reminder to us in the data business that we need to keep the assumptions behind our metrics and measurements in plain view as much as possible.</p><p></p><p>P.S. I realize there are some major problems with the data behind the maps app on iOS6. However, I also think it's important to focus on actual problems and not <a href="http://appleinsider.com/articles/12/09/27/googles-ilost-motorola-ad-faked-an-address-to-lose-ios-6-maps">made up problems</a>.</p>]]></description></item><item><title>My irrational exuberance over SAP and Silverlight</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Wed, 05 Sep 2012 23:03:55 +0000</pubDate><link>http://www.esjewett.com/blog/my-irrational-exuberance-over-sap-and-silverlight</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:5047da5be4b026a4c324c281</guid><description><![CDATA[<p><a href="https://twitter.com/esjewett/statuses/242309334036541440">Boy was I happy yesterday</a>.</p><p>It sure looked to me like SAP's <a href="https://twitter.com/_bgoerke">Björn Goerke</a>&nbsp;was <a href="https://twitter.com/_bgoerke/statuses/242305914420469760">strongly endorsing</a> all <a href="https://twitter.com/_bgoerke/statuses/242306937264427008">new browser-based UI development </a>happening in HTML, Javascript, and CSS (colloquially known as HTML5) rather than alternatives like Silverlight and Flash. </p><p>This is definitely the right move. I've long held the opinion that any UIs that can effectively be developed using HTML5 should be developed using HTML5. So it pained me, 3+ years ago, to see SAP developing new web-based UIs for their Business ByDesign product in Silverlight.</p><p>Of course, there have been reasons to doubt that HTML5 would win out as the web UI technology of choice. But it's now a no-brainer to turn to Flash and Silverlight only as a last resort for browser-based UIs. It has been ever since it became clear that the iPhone was going to have a sizable chunk of the phone market and that the iPad was going to dominate the tablet market for a good length of time: almost 2 years now. So it perplexed me a year ago to see the new UI for SAP's&nbsp;<a href="http://store.sap.com/">universal storefront</a>&nbsp;released using Silverlight.</p><p>(The storefront is currently being rewritten in HTML5, and already displays as HTML5 on devices that don't support Silverlight, as well as in some browsers.)</p><p>With Goerke's statements, I had some hope that SAP was finally on target with its browser-based UI strategies. It would only build new browser-based UIs in HTML5, and in doing so it would get good at HTML5. Sometimes, to make a change, you've got to force yourself to make the change. It looked like SAP was going to bite the bullet and break free of Silverlight and Flash - two technologies that were holding it back on mobile, at the least. That made me happy.</p><p>Then I saw that SAP is planning to release a <a href="http://scn.sap.com/community/technology-innovation/blog/2012/08/04/driving-business-user-satisfaction-with-new-sap-personalization-options-that-improve-usability">new tool in Q4</a> with (you guessed it) a <a href="http://scn.sap.com/community/technology-innovation/blog/2012/09/05/frequently-asked-questions-about-sap-screen-personas-part-1?utm_source=twitterfeed&amp;utm_medium=twitter">browser-based Silverlight UI</a>.</p><p>Back to waiting.</p>]]></description></item><item><title>Java is the new Flash</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Tue, 04 Sep 2012 21:15:58 +0000</pubDate><link>http://www.esjewett.com/blog/java-is-the-new-flash</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:50466f8c84ae22a8221387d3</guid><description><![CDATA[<p>I doubt we'll see <a href="http://www.apple.com/hotnews/thoughts-on-flash/">a letter</a> from Tim Cook on the topic, but Java will probably be the next browser extension technology to be killed off after Flash and <a href="http://www.zdnet.com/blog/microsoft/will-there-be-a-silverlight-6-and-does-it-matter/11180">Silverlight</a>. Of course, these deprecations are only on mobile to date, but smartphones and tablets&nbsp;<a href="http://www.asymco.com/2012/01/17/the-rise-and-fall-of-personal-computing/">likely constitute a majority of computing devices sold</a>&nbsp;today. If your platform isn't on mobile, you are a niche player.</p><p>iOS seems to do an excellent job demonstrating that these vestigial technologies are <a href="http://www.pcworld.com/article/261843/time_to_give_java_the_boot.html">no longer necessary in modern browsers</a>. At this point, for most people, all Java provides is a less secure, less performant browsing experience.</p>]]></description></item><item><title>BICS, MDX, and SQL ... oh my!</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Fri, 10 Aug 2012 15:32:38 +0000</pubDate><link>http://searchsap.techtarget.com/feature/SAP-NetWeaver-Business-Warehouse-BusinessObjects-integration-getting-easier</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:50252987c4aa1a6b4d615ab4</guid><description><![CDATA[<p>My second article for TechTarget's SearchSAP has been published: "<a href="http://searchsap.techtarget.com/feature/SAP-NetWeaver-Business-Warehouse-BusinessObjects-integration-getting-easier">SAP NetWeaver Business Warehouse, BusinessObjects integration getting easier</a>"</p>























<p><a href="http://www.esjewett.com/blog/bics-mdx-and-sql-oh-my">Permalink</a><p>]]></description></item><item><title>The costs of getting SuccessFactors in line?</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Thu, 09 Aug 2012 15:55:34 +0000</pubDate><link>http://www.esjewett.com/blog/the-costs-of-getting-an-ac-in-line</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:5023dd6ac4aac47b982fed1f</guid><description><![CDATA[<p><a href="http://www.zdnet.com/did-sap-pay-3-4-billion-for-an-out-of-control-pup-7000002053/">Dennis Howlett theorizes about possible controls issues and what is going on</a> with SuccessFactors revenue vis a vis SAP's reported Q2 results. When I looked at SAP's <a href="http://www.sap.com/corporate-en/investors/pdf/SAP-2012-Q2-Presentation.pdf">reported 2nd quarter results</a>, it seemed that something was fishy. SAP reported strong growth for SuccessFactors on non-standard measures like "12-month subscription billings from new business" but when it came to revenue SAP only compared total SAP Q2/2012 revenue (69€ million) with SAP Q2/2011 revenue (4€ million pre-SuccessFactors). Year-over-year comparisons of SuccessFactors revenue were avoided.</p><p>Given growth of SAP's homegrown Business ByDesign solution, there was some reason to believe that SuccessFactors reported revenue may even have been down year-over-year. Howlett is much more qualified than I when it comes to recognizing and investigating these types of issues, and he shines a spotlight on some behind the scenes reasons that these numbers may have fallen out the way they did.</p>]]></description></item><item><title>Another SAP data visualization head scratcher</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Wed, 01 Aug 2012 15:02:23 +0000</pubDate><link>http://www.esjewett.com/blog/another-sap-data-visualization-head-scratcher</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:501944fe24acce5741ac9500</guid><description><![CDATA[<p>Maybe I need to <a href="http://www.esjewett.com/chin-scratcher-in-sap-businessobjects-mobile">make a series of out of these</a>.</p><p>This time via a <a href="https://twitter.com/Andrew__Fox/statuses/230584549749440512">tweet</a> from Andrew Fox: The worst implementation of a pie chart I have ever seen, courtesy of SAP BusinessObjects Visual Intelligence.</p>


































































  

    
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
                
                
                
                
                
                
                
                <img data-stretch="false" data-image="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png" data-image-dimensions="315x344" data-image-focal-point="0.5,0.5" alt="" data-load="false" elementtiming="system-image-block" data-sqsp-image-classic-block-image src="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png?format=1000w" width="315" height="344" sizes="(max-width: 640px) 100vw, (max-width: 767px) 100vw, 100vw" onload="this.classList.add(&quot;loaded&quot;)" srcset="https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png?format=100w 100w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png?format=300w 300w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png?format=500w 500w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png?format=750w 750w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png?format=1000w 1000w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png?format=1500w 1500w, https://images.squarespace-cdn.com/content/v1/500c2012e4b0d820d6a397d2/1343833646880-6J9HH6CSF6L2Q0XK289J/Screen+Shot+2012-08-01+at+5.06.08+PM.png?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs">

            
          
        
          
        

        
      
        </figure>
      

    
  


  





  <p>Is there something between Jackets and Sweat-T-Shirts? And what is between Accessories and Dresses? What happened to Overcoats, City Trousers, and Outerwear? Fell through the cracks, I guess.</p><p>SAP BusinessObjects Visual Intelligence is supposed to be SAP's answer to industry leading data visualization products like Tableau and Qlikview. Seeing this, it looks more like an advertisement for these competing (I use the term loosely) products.</p><p>The full demo video is&nbsp;<a href="http://www.youtube.com/watch?v=hbTb62BeTUc&amp;feature=youtu.be">here</a>.</p>]]></description></item><item><title>SAP mobile developer improvements - SAP still lags</title><dc:creator>Ethan Jewett</dc:creator><pubDate>Tue, 31 Jul 2012 09:22:09 +0000</pubDate><link>http://www.esjewett.com/blog/sap-mobile-developer-improvements-sap-still-lags</link><guid isPermaLink="false">500c2012e4b0d820d6a397d2:500c2137e4b0d19362bd3c28:5017a3c4e4b06a1e65871b64</guid><description><![CDATA[<p>Yesterday, SAP announced improvements to its mobile developer programs, among other things. A <a href="http://scn.sap.com/docs/DOC-30420">good FAQ is available</a>. The software being discussed is primarily Sybase's Unwired Platform (SUP), which includes support for backend data-stores, heterogenous application development (i.e. write once, run on multiple platforms), and libraries for managing complexities of mobile development like data synchronization.<br></p><p>​The announcement of more developer access to SAP's mobile platform allows developers to use SAP-provided Amazon EC2 instances with SUP installed on them. This mirrors similar <a href="http://scn.sap.com/docs/DOC-28294">announcements for SAP's HANA platform</a> earlier this year. SAP also announced a <a href="http://www.sapmobileappspartnercenter.com/become-a-partner">new partner framework</a>&nbsp;which makes the partnership process much easier to understand. Both announcements&nbsp;are major improvements for SAP's mobile efforts.</p><p>​That said, SAP still lags its competition significantly from a developer engagement perspective and these announcements underscore the fact that SAP has been unable to make the quantum leap necessary to become a player in the minds of non-SAP developers. There are two reasons for this: the immediate problem that keeps changing as SAP addresses symptoms, and the deeper reason that is keeping SAP from achieving the change required.</p><p>​</p><p>The immediate problem SAP seems unable to overcome is that the <a href="http://www.esjewett.com/blog/2011/6/12/downloads-for-developers.html">basis of any successful developer push is software that can be used for development</a>.&nbsp;The AWS-only form-factor that SAP has chosen for SUP and HANA is sub-standard for development purposes. In some ways it may reflect a view of software development from the days before standard use of source control and local build/test environments. The AWS-only approach precludes setting up a local development environment, which is standard practice for most developers today (and for good reason). It also incurs a relatively small but unavoidable cost on developers, forcing them to pay for EC2 instances they may not otherwise need.</p><p>​Oracle, IBM, and Microsoft all provide easily accessible, downloadable versions of their database software for developers to use. SAP does not. <a href="http://www.appcelerator.com">Appcelerator</a>, <a href="http://phonegap.com">PhoneGap</a>, and <a href="http://www.sencha.com/products/touch/">Sencha</a> all provide easily accessible, downloadable versions of their mobile development platforms. SAP does not.</p><p>SAP claims that it is trying to appeal to the larger non-SAP developer community.​ But developers in those communities will look at what is on offer and see a company they consider a dinosaur asking them to give up their modern development practices and pay for the privilege. I think most developers will just say, "No thanks".</p><p>​</p><p>​The deeper problem is that SAP still hasn't come to terms with the fact that developer engagement is not something you can tack on to a product at the end of the product cycle. The product must be designed for developers. It must be launched along with developer programs including downloads available to developers. And the product team needs to engage with developers on an ongoing basis after launch. I'm no developer engagement professional, but from what I've seen of the industry, these are the absolute minimum requirements.</p><p>And yet, from a cultural perspective it is clear that SAP has not embraced developer engagement. Sybase launched <a href="http://www.sybase.com/detail?id=1093154">SUP 2.0 over a year ago,</a> and only now has it launched an arguably usable (but certainly not ideal) developer environment. HANA is one of the products where SAP is attempting most aggressively to appeal to developers, and the <a href="http://scn.sap.com/docs/DOC-28294">AWS-environment for HANA</a> became available only a couple of months before the <a href="http://www.sap.com/corporate-en/press.epx?PressID=19112">1-year anniversary of HANA's public launch</a>.</p><p>SAP needs to achieve a quantum leap in their developer engagement ​culture. Otherwise it's unlikely that any of its foundational technology products become breakout successes. Thanks to the hard work of many within SAP, it's possible that SAP could succeed in spite of itself. But it's certainly making it harder than it needs to be.</p>]]></description></item></channel></rss>