<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4789913006546922665</id><updated>2024-09-14T03:52:43.455-07:00</updated><category term="audio"/><category term="web"/><category term="lighting technology"/><category term="mobile technology"/><category term="super-mobile technology"/><category term="digital policy"/><category term="display technology"/><category term="software strategy"/><category term="wearable technology"/><category term="NFC"/><category term="inductive charging"/><category term="input devices"/><category term="software"/><category term="technological annoyances"/><category term="wireless"/><category term="Emotion"/><category term="In the News"/><category term="QOL"/><category term="e-ink"/><category term="networks"/><category term="organic technology"/><category term="sensors"/><category term="technology culture"/><category term="tools"/><category term="touch"/><title type='text'>The Idea Repo</title><subtitle type='html'>A blog about tech ideas</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>70</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-120630509472520291</id><published>2016-02-04T21:05:00.000-08:00</published><updated>2016-02-04T21:05:30.569-08:00</updated><title type='text'>Behavior based ad-blocking</title><content type='html'>Ad-blocking can be contentious. &amp;nbsp;Ads after all are the backbone of many popular sites and because we&#39;ve unfortunately trained the public to not pay for anything on the web it&#39;s likely here to stay if we want content. &amp;nbsp;At the same time many, many ads are bad. &amp;nbsp;They can eat bandwidth, distract visually, decieve users, are a common source of malware and and just generally annoying. &amp;nbsp;Ad-blocking is not unwarranted for this reason, just because I want to see your content doesn&#39;t mean you have your way with my browsing session.&lt;br /&gt;
&lt;br /&gt;
The problem, as I see it, is that add blocking is primitive. &amp;nbsp;Virtually all are some combination of black-lists and white-lists. &amp;nbsp;That does the trick, but it&#39;s really heavy handed. &amp;nbsp;In most cases the default is to just nuke everything. &amp;nbsp;But we can do better. &amp;nbsp;What if we actually looked at the ad itself and decided whether or not to show it?&lt;br /&gt;
&lt;br /&gt;
There are some obvious things we can look for:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Sudden fullscreen or modal content usually indicated a nasty UI blocker ad (or just bad UI).&lt;/li&gt;
&lt;li&gt;Flashing or high motion&lt;/li&gt;
&lt;li&gt;Heavy scripting or content download originating in an iframe is an indication of a resource hog ad.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
These things can immediately be filtered as we generally want to remove misbehaving ads however they come. &amp;nbsp;Seems like a deep learning job to me.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
On top of that there are other general things that would simply disqualify ads:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Not in user&#39;s language&lt;/li&gt;
&lt;li&gt;Not advertising for users location&lt;/li&gt;
&lt;li&gt;Repeated&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
In this case it&#39;s not useful for either the ad company to show the ad or the user to see the ad, so just get rid of it. &amp;nbsp;I think this needs to be how we design future ad-blockers. &amp;nbsp;We don&#39;t want to kill income but we do need to be smarter about how we deal with it because there are lots of bad ads.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/120630509472520291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2016/02/bhavior-based-ad-blocking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/120630509472520291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/120630509472520291'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2016/02/bhavior-based-ad-blocking.html' title='Behavior based ad-blocking'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-5695006172226689595</id><published>2016-01-01T23:28:00.003-08:00</published><updated>2016-02-04T20:17:30.571-08:00</updated><title type='text'>Activity Tracking and Data</title><content type='html'>I recently received a pedometer from my insurance company. &amp;nbsp;They have a program where if you walk a certain amount you get money back on your insurance. &amp;nbsp;This is a good idea and incentive to get people a little more active beyond their own internal motivations and the insurance company clearly recognizes that it will benefit them to have healthier subscribers. &amp;nbsp;The problem is that I already have an activity tracker, a Pebble Time watch and my wife has a Fitbit. &amp;nbsp;This creates an irritating situation where I&#39;d like to participate but I need two tracking devices. &amp;nbsp;The insurance tracker is unsophisticated and has terrible battery life. &amp;nbsp;Instead it would be nice if they could just use the data I already collect from a device I like much better.&lt;br /&gt;
&lt;br /&gt;
Apple and Google of course are already attempting to do something like this with HealthKit and Google Fit which can aggregate data from many devices into a standard (ish) API. &amp;nbsp;But there&#39;s a lot of other questions this raised with me.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Who should really control that data?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
While there is great value in standardizing that data, the question is who should do it. &amp;nbsp;Obviously all solutions are pretty self-serving. &amp;nbsp;Neither Apple or Google are especially prevalent in these markets but because they control the phone market via a duopoly it&#39;s easy for them to use that position to push people into their service and consequently gain a lot of lucrative data while doing little to no actual work. &amp;nbsp;I&#39;m not sure I really want that. &amp;nbsp;Fitbit does it&#39;s own thing and that seems fine but other devices aren&#39;t going to feed into that ecosystem. &amp;nbsp;In many ways it does make sense for competitive purposes to silo it by device but there are also some other reasons like standardization why this might be necessary. &amp;nbsp;So, if that&#39;s the case, does it mean that my insurance company should integrate multiple APIs? &amp;nbsp;I think they should but they&#39;re an insurance company so they won&#39;t and I guess I&#39;m stuck with a crappier version of something I already own.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;When is a step a step?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
So as nice as it seems to aggregate this data, we don&#39;t actually have apples to apples among providers of this data. &amp;nbsp;For pedometer data which is notoriously not accurate it might not be a big issue but if we&#39;re to move into better and perhaps more medically useful data we kinda need this. &amp;nbsp;Pebble has a cool idea to open-source their motion tracking algorithm and that&#39;s a good start to something standard. &amp;nbsp;Though, we also need to know polling frequency, accuracy, drift etc of the sensors to really get there. &amp;nbsp;This is hard but maybe we can set up a minimum standard for what is allowed to measure a standard &quot;step.&quot; &amp;nbsp;Then we have to standardize where the device is worn, on a hip gives a much more accurate reading that the arm because it&#39;s close to the center of mass. &amp;nbsp;We need to sort this out otherwise we don&#39;t know-&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to aggregate it&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
In my case, I have 2 devices I could use plus a phone, but most people will have a phone and a wearable. &amp;nbsp;If I forget or don&#39;t want to wear my wearable it&#39;d be nice if my phone can sub knowing it might not work quite as well. &amp;nbsp;But if I have my wearable it&#39;d be nice if that data is used instead. &amp;nbsp;Here we&#39;d want to be seamless so maybe a accuracy score is necessary to pick the measuring device to use. &amp;nbsp;It seems we&#39;d also need a timestamp to sync the readings and filter out where there is overlap.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How do we secure it?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Hacking and stolen data is bad but that&#39;s not even of super important concern to me, we have standard, time-tested ways of dealing with it. &amp;nbsp;The more interesting problem is the authenticity of data. &amp;nbsp;For example, my insurance company probably doesn&#39;t want me to attach their device to a ceiling fan to generate readings. &amp;nbsp;While better algorithms can detect some cheating not all of it will. &amp;nbsp;Say I had a game based on motion readings, perhaps a virtual marathon (perhaps with donations). &amp;nbsp;This seems like an interesting use case but I also can&#39;t be certain cheating isn&#39;t an issue. &amp;nbsp;So we might need other metrics to go with it, like a heart-rate that&#39;s harder to fake. &amp;nbsp;Perhaps the sensor-fusion algorithm itself needs protection on a hardware level. &amp;nbsp;At the very least we could take multiple measurements and give a score of how likely such a reading is a real human doing the task expected.&lt;br /&gt;
&lt;br /&gt;
None of these seems like they have easy answers but for activity wearables to really get to the next level, we need it. &amp;nbsp;How can we standardize these things in a way that doesn&#39;t just try to bulldoze one another.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/5695006172226689595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2016/01/activity-tracking-and-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5695006172226689595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5695006172226689595'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2016/01/activity-tracking-and-data.html' title='Activity Tracking and Data'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-4286229798100506422</id><published>2015-12-21T08:57:00.000-08:00</published><updated>2016-02-04T20:19:22.129-08:00</updated><title type='text'>Bumper Cars</title><content type='html'>It occurred to me after watching my friend&#39;s car get bumper damage from a truck that basically parked on top of him that bumpers aren&#39;t really all that smartly designed. &amp;nbsp;Despite protecting the frame they can still be plenty costly themselves to fix and really easy to damage but more importantly it doesn&#39;t well protect in these sorts of scenarios. &amp;nbsp;While I think a real rubber bumper would be best, perhaps people will hate it because their car looks ugly. &amp;nbsp;As much as I could handle that eye roller of an excuse why don&#39;t we standardize the height of all bumpers? &amp;nbsp;It should be the case that all collisions always happen along the bumper, this should instantly minimize the amount of damage from slower collisions and probably increase safety by making it more predictable.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/4286229798100506422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/12/bumper-cars.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/4286229798100506422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/4286229798100506422'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/12/bumper-cars.html' title='Bumper Cars'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-3804636625389330820</id><published>2015-12-12T16:29:00.000-08:00</published><updated>2015-12-12T16:29:09.324-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><title type='text'>Physics simulated audio and hardware</title><content type='html'>I&#39;m not a audio snob but I do often hear the arguments of them. &amp;nbsp;People have strong opinions about what sounds &quot;good.&quot; &amp;nbsp;This can get highly specific, into things like what wood a violin is made from. &amp;nbsp;In computer graphics we typically have two strategies to produce images. &amp;nbsp;One is raster graphics, a sort of brute-force approximation where we represent the image as pixels and need progressively more space to get more detail (but little computational power). &amp;nbsp;The other is vector graphics which scales indefinitely and is comprised of the &quot;instructions&quot; to produce the image and requires computational power but little storage. &amp;nbsp;Both have their places. &amp;nbsp;In audio we don&#39;t really have many analogs or at least one is far less used than the other. &amp;nbsp;Raster graphics basically equates to all types of audio files people are familiar with. MP3, AAC, FLAC whatever. &amp;nbsp;These are at their core just samples over time. &amp;nbsp;The vector format of audio would be something like MIDI where a bunch of samples are played in a script (instructions), not unlike written music. &amp;nbsp;I don&#39;t think this really goes far enough. &amp;nbsp;The samples are usually pretty set or at least they don&#39;t tend to change and aren&#39;t easy to change. &amp;nbsp;To this end it makes sense to me to have a format based on physical simulation of sound. &amp;nbsp;This means that instead of a static sample we try to simulate the material properties to get sound. &amp;nbsp;Of course such a scheme would be very computationally expensive. &amp;nbsp;This is a prime candidate for offloading onto specialized hardware. &amp;nbsp;In fact GPUs are a good analog, perhaps we have audio processing units and programmable sound &quot;shaders&quot; to create sound. &amp;nbsp;This is could be great for music creation, and games especially. &amp;nbsp;But it might also be interesting to see small but lossless files that can produce excellent sound quality and music. Maybe even digital musicians that have slight variance each time they play.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/3804636625389330820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/12/physics-simulated-audio-and-hardware.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/3804636625389330820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/3804636625389330820'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/12/physics-simulated-audio-and-hardware.html' title='Physics simulated audio and hardware'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-5266894002123500683</id><published>2015-11-07T12:57:00.005-08:00</published><updated>2016-02-04T20:28:54.402-08:00</updated><title type='text'>Software Engineers</title><content type='html'>The Atlantic published an article I thought was interest about the use of the word &quot;Engineer&quot; in a job title that got a lot of attention.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.theatlantic.com/technology/archive/2015/11/programmers-should-not-call-themselves-engineers/414271/&quot;&gt;http://www.theatlantic.com/technology/archive/2015/11/programmers-should-not-call-themselves-engineers/414271/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
While it highlights a recent phenomena I couldn&#39;t really agree with with much of any of the arguments presented for why it&#39;s problematic.&lt;br /&gt;
&lt;br /&gt;
I think the overall call to action is pointless. &amp;nbsp;Language governance doesn&#39;t work, nor has it ever become a real problem. &amp;nbsp;Languages evolve organically and definitions are based on usage and change over time. &amp;nbsp;If large swaths of people do not consider &quot;engineer&quot; an official licensed designation then it isn&#39;t or at least not to everyone and not in those contexts. &amp;nbsp;This form of demanding restriction almost always spawns from elitism. &amp;nbsp;The French for example have laws governing the usage of certain cheeses or more famously &quot;champaign&quot; which is only for sparkling wines from that region. &amp;nbsp;Of course common usage doesn&#39;t care, but I&#39;d hardly argue it&#39;s confusing. &amp;nbsp;Likewise &quot;Kobe beef&quot; is a very special beef never exported outside Japan but is consistently used for other forms of wagyu beef that get exported. &amp;nbsp;This happens a lot when people want to protect a brand, and that&#39;s I think the heart of the issue here, engineering™ is a brand that the author wishes to protect and unlicensed usage &quot;cheapens&quot; it. &amp;nbsp;Though in reality if people desire to use your brand, it&#39;s not cheap, it&#39;s prestigious.&lt;br /&gt;
&lt;br /&gt;
Of course while that&#39;s easy to write off, but there are some things in the article about the perception of software development, as well as some criticisms, that I think are great things to address.&lt;br /&gt;
&lt;br /&gt;
The author uses credit breaches as examples of engineering failures on the part of software &quot;engineers.&quot; &amp;nbsp;This I find is frequently one of the most common misrepresentations of software development. &amp;nbsp;&quot;Lazy devs&quot; is a commonly used phrased in the circles of video gaming and yet in most cases, these people are not lazy at all. &amp;nbsp;Software varies in many ways from physical engineering but greatly in product management. &amp;nbsp;Imagine if you were building a bridge and you do not have the budge to re-enforce it and must complete it 6 months faster than you think is reasonable. &amp;nbsp;Imagine you work 50-60 hour weeks for 4 straight months. &amp;nbsp;Do you really think that even with the absolute best of the best the product will be well built? &amp;nbsp;That is the reality of much software development. &amp;nbsp;This is not about the quality of devs but the quality of companies and project managers and people writing checks. &amp;nbsp;The problem isn&#39;t about titles, but that if a bridge doesn&#39;t meet external inspection there are going to be lawsuits if not arrests. &amp;nbsp;Software rarely needs to meet such inspections. &amp;nbsp;We do have them however, online stores often desire to meet PCI compliance. &amp;nbsp;The problem is that it is not enforceable and certifications are easily abused. &amp;nbsp;We can improve here but I don&#39;t find this is terribly related to what we&#39;re called.&lt;br /&gt;
&lt;br /&gt;
You could imagine making such checks mandatory and that would fix it or at least part of it. &amp;nbsp;But who makes it so? &amp;nbsp;The government? &amp;nbsp;Governments do participate in compute related standards but unfortunately it&#39;s been a complete disaster. &amp;nbsp;The US government pushed encryption standards it knew were weak so that they could abuse it. &amp;nbsp;The US only recently called off the witch hunt on strong encryption but places like Great Britain and China are moving forward. &amp;nbsp;Governments do not have the public&#39;s best interests in mind in terms of software and so in such a climate it would be crazy to think they would be fit to create the framework. &amp;nbsp;So if not a legally enforceable framework, we&#39;re really only left with opt-in.&lt;br /&gt;
&lt;br /&gt;
Standards on software are also hard. &amp;nbsp;Things change yearly and there is strong desire to make that faster. &amp;nbsp;New attack vectors and new mitigation strategies come up all the time and there&#39;s no good way to keep up. &amp;nbsp;That strong encryption that was best practice might be significantly weakened in 5 years and you can&#39;t know that ahead of time. &amp;nbsp;You must change things and so you must break things. &amp;nbsp;Facebook was actually right, you need to set the expectation of change and response, we as responsible software engineers cannot allow people to rest on these products until they are completely decommissioned and that will impact some negatively, it&#39;s unavoidable.&lt;br /&gt;
&lt;br /&gt;
We do however need to make software resilient. &amp;nbsp;As a strong critic of the cloud I don&#39;t think that should be the norm. &amp;nbsp;&lt;i&gt;All &lt;/i&gt;software should consider offline first and progressively enhance for the network. &amp;nbsp;If Google docs goes down we do need recourse to use local networks and what-not. &amp;nbsp;Things happen, and we do need to be responsible for that. &amp;nbsp;But again, that&#39;s not about titles, that&#39;s about the people who give me my paycheck doing the right thing and letting me do the right thing. &amp;nbsp;I want to do that, nobody has the budget for it, it&#39;s not important enough to the business.&lt;br /&gt;
&lt;br /&gt;
Even if we could find a certification solution what does it mean? &amp;nbsp;I have many certifications that don&#39;t mean much at all. &amp;nbsp;They are hard to verify and that&#39;s important because the end user of the product does not request that it is only made by certified software engineers. &amp;nbsp;They don&#39;t even know who made it most of the time, let alone their credentials. &amp;nbsp;Even if they did would they have the expertise to really know what I&#39;m expected to do? &amp;nbsp;My process of testing, code reviews and disciplined development? &amp;nbsp;If not then what good is it? &amp;nbsp;Realistically certification is for resumes, my employer cares because hopefully they care about quality but the end user gets whatever my employer/product owner gives them.&lt;br /&gt;
&lt;br /&gt;
So we can&#39;t really have what the author asks for but does it matter now? &amp;nbsp;Yesterday I talked to a person with the title &quot;Solution Engineer,&quot; Is that confusing? &amp;nbsp;I certainly had no expectations about their responsibilities to me, I don&#39;t suppose others do either. &amp;nbsp;The cleaning guy might have a title &quot;Sanitation Engineer,&quot; again I don&#39;t think most people mistake that for someone doing strong diligence to avoid garbage related mishap. &amp;nbsp;If anything that&#39;s not how others refer to them. &amp;nbsp;&quot;Customer Specialists&quot; are clerks, &quot;Sanitation Engineer&quot; is a janitor and while my official title is &quot;Software Engineer&quot; I&#39;m often just &quot;developer.&quot; &amp;nbsp;It&#39;s not an issue I think others struggle with, it&#39;s a fancier title.&lt;br /&gt;
&lt;br /&gt;
But from my point of view I like being called an &quot;engineer,&quot; &amp;nbsp;I went to an engineering college, I have the prereqs any other engineer would have. &amp;nbsp;Developer and programmer doesn&#39;t encompass what I do. &amp;nbsp;I&#39;m not interested in just writing code, I take pride in building a product that I think works as best it can. &amp;nbsp;I take care to test, secure and anticipate and make it as good as any engineer would. &amp;nbsp;You absolutely have no guarantees of my quality based on that title but what&#39;s important is that title explains to you what expectations I have for myself and what responsibilities I take. &amp;nbsp;I&#39;m not cheap work, I intend to give quality code, not code done quickly or on a budget. &amp;nbsp;That is why we took that word in the first place, not so that people would think we&#39;re something we&#39;re not, but because it describes how we feel about what we do. &amp;nbsp;How you interpret it is up to you,</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/5266894002123500683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/11/software-engineers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5266894002123500683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5266894002123500683'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/11/software-engineers.html' title='Software Engineers'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-1799869920624962141</id><published>2015-10-06T20:56:00.001-07:00</published><updated>2015-10-06T20:56:14.128-07:00</updated><title type='text'>Set-based image compression</title><content type='html'>Typically when taking pictures they are taken in sets.  The colors and subjects will often be very similar.  In fact we can perhaps predict that they will change slightly over time not unlike a movie.  To this end I think there could be merit in compressing across sets of images rather than the image itself.  This might be more useful for archival but even of the web with image heavy sites we could compress the set as a grouping and save a lot of data.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/1799869920624962141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/10/set-based-image-compression.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/1799869920624962141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/1799869920624962141'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/10/set-based-image-compression.html' title='Set-based image compression'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-2073558459680726413</id><published>2015-07-28T20:20:00.001-07:00</published><updated>2015-07-28T20:20:58.166-07:00</updated><title type='text'>Hardware Power Switches</title><content type='html'>Most devices these day have some sort of mechanism where you hold down the sleep button to turn off.  This to me is a fine general feature but it kills me when there is a bad software problem.  Many times I can&#39;t even turn it off and this is the worst.  Realistically all devices should have hardware switches to cut the power, they can be hidden under a battery compartment or something (non user replaceable battery? We can outlaw this while we&#39;re at it) but it&#39;s something I think is an important last resort for when something goes wrong.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/2073558459680726413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/07/hardware-power-switches.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/2073558459680726413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/2073558459680726413'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/07/hardware-power-switches.html' title='Hardware Power Switches'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-7513434293169131358</id><published>2015-07-25T11:42:00.001-07:00</published><updated>2015-07-25T11:43:45.462-07:00</updated><title type='text'>Personal Wireless Serving Device</title><content type='html'>&lt;p&gt;Mobile devices are a fixture of the way we do business but there are many limitations to them.  They tend to take a functionality nosedive when there is no wireless connectivity, they operate on battery and have to maintain very strict size restrictions.  It&#39;s not just phones but tablets, wearables and game systems.  There is a large market of devices that attempt to fix some of this, these would be portable battery packs, special wireless external storage (because many devices can&#39;t or don&#39;t have SD card support) and mobile hotspots.  My concept would be to take aspects these supplemental devices and transform them into a hardware platform of sorts.&lt;/p&gt;

&lt;p&gt;The core idea is a small device, maybe not pocketable but could fit in a bag or purse that offloads a lot of the functionality that one of these devices might need.  The obvious one is a connection to the internet.  The device could handle jumping between hotspots perhaps with multiple antennas and managing them.  This means that even a fairly simple mobile device could have much better overall reception.  It might even be possible to build up offline caches for when connections aren&#39;t available.  This would require a lot of storage not available to phones but could be fairly easy for a larger device to hold.  The idea is that at least something could be provided when out of range of an access point.  It&#39;s also possible you build the cellular connection on the device.  In this way all of your devices can access it but the benefit is that maintaining 4G connections can be costly on battery but offloaded you could say connect with low-power bluetooth for incoming things like phone calls and then switch over to full wifi to pickup, providing a big boost in overall battery life.&lt;/p&gt;

&lt;p&gt;Another feature would be storage.  We&#39;re all pretty familiar with the dreaded &quot;cloud&quot; but such a device could create a more personal version of it.  Store a whole music library or all of your photos and access them wirelessly.  There&#39;s no shortage of ways to manage storage but this could offer a nice unified way to do it whether online or offline.  Again because the device doesn&#39;t have the same restrictions you could shoot for terabytes rather than gigabytes of on board storage.  In addition it could provide additional security for users as they would not have to trust more sensitive data to the cloud.&lt;/p&gt;

&lt;p&gt;In more interesting usages you could use a much bigger CPU/GPU on the device to enhance the processing abilities of a phone.  Imagine the ability to be able to run voice or visual search queries without going out to the internet because you have the processing ability to do it where you are.  Maybe even remote rendering or processing like cleaning up or tagging photos and video with much less of a battery impact.  The cloud has high latency but something in the same space could be much more usable.&lt;/p&gt;

&lt;p&gt;The last part could be apps.  Like server apps.  You could run locally things like content servers, media servers, web servers or interesting things like network-level ad blockers, peer-to-peer sharing and all sorts of other cool stuff.  I imagine this is where a lot of money could be and if the apps are cool they could really gravitate people toward the device.&lt;/p&gt;

&lt;p&gt;Maybe we could also offload expensive peripheral items like speakers or quick polling GPS as it would have space and battery life to do these tasks.&lt;/p&gt;

&lt;p&gt;I really feel a sort of inbetween device could have a rather large impact on the way people interact with mobile devices and the best part is, it will always default to back to the device if not present.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/7513434293169131358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/07/personal-wireless-serving-device.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/7513434293169131358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/7513434293169131358'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/07/personal-wireless-serving-device.html' title='Personal Wireless Serving Device'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-8473458256952293024</id><published>2015-06-17T05:54:00.000-07:00</published><updated>2015-06-17T05:56:23.432-07:00</updated><title type='text'>Work, Play and Pay</title><content type='html'>People need work.  Work is a stimulating activity that gives purpose and trains us to hopefully be better people.  Although, while this is true the current system is pretty arbitrary. 8 hours a day, 40 hours a week is something we pulled out of a hat, it doesn&#39;t fit every job or every person.  Perhaps a result of this and for stress insulation people tend to work down time into their job, small bits of time to do other things, talk to co-workers, browse the web or take a smoke break.  If you ever find yourself in a job that doesn&#39;t allow this, you are on a one-way trip to metal breakdown, fatigue, poor health and maybe even substance abuse.  Of course these little pieces of down time cause job related social problems, namely &quot;are you working hard?&quot;  Now working hard and getting a job done are actually two unrelated things but it&#39;s often recognized as both.  The main issue here is &quot;are you taking advantage of me?&quot;  I&#39;d argue from a more social equality standpoint that like a white person wondering if they&#39;re being discriminated against this is rarely a question businesses should ask because the system is too stacked in their favor.  I think the solution is to recalibrate how pay is given out.  Ideally pay should only really be about the value that a person adds to the company, not hours worked or checklist items complete.  Quality comes in different ways and different people have different means of getting it, whether that be all-nighters or frequent breaks.  So a business should be less about micromanaging and better about figuring out the value of individual work regardless of how it gets done.
&lt;br /&gt;
&lt;br /&gt;
Note that there are other complications with client work which I&#39;d like to detail sometime but overall this shouldn&#39;t change too much.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/8473458256952293024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/06/work-play-and-pay.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/8473458256952293024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/8473458256952293024'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/06/work-play-and-pay.html' title='Work, Play and Pay'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-7307723711972901249</id><published>2015-02-28T11:59:00.000-08:00</published><updated>2015-06-05T22:41:24.148-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="super-mobile technology"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Web for Wearables</title><content type='html'>I&#39;ve been tinkering around with the Pebble SDK in anticipation of their new watch. &amp;nbsp;One of the nice things that they&#39;ve done is provide a Javascript SDK which is much more friendly than the C version. &amp;nbsp;But as I used it, it started to feel like it wasn&#39;t really the nice web stack I&#39;m used to but more of a Node.js layer that calls into their API. &amp;nbsp;This got me thinking that there really is nothing like the web for such devices and this is disappointing.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The web has a lot of advantages. &amp;nbsp;It&#39;s standard across devices and browsers, mostly. &amp;nbsp;This means anyone with a device can be compatible with software. &amp;nbsp;Developers are unlikely to support anything that&#39;s not a big name like iOS and Android but any device can run web apps which is really nice for the little guys. &amp;nbsp;Also, developers can write once and put it on everything, also nice. &amp;nbsp;But it seems like wearables are going to become highly proprietary, and the same ones at the top Apple and Google are going to be dictating the software (hopefully Pebble continues to excel here).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
While Pebble tries to leverage bits the platform there are a lot of reasons why the web as it currently exists won&#39;t work well. &amp;nbsp;It has too much overhead for an extremely hardware limited and battery limited device. &amp;nbsp;It&#39;s not designed for the same sort of interactions with passive sensors. &amp;nbsp;You don&#39;t use more than one app at a time and there&#39;s little interaction. &amp;nbsp;You can&#39;t just scale things like you can with mobile and desktop. &amp;nbsp;Watches don&#39;t have an always on internet connection and if they do it&#39;s likely a tether. &amp;nbsp;They get most of the their data from nearby things. &amp;nbsp;They&#39;re bluetooth based, not wifi or cellular and so the range is shorter and more constrained.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This to me indicates we need a new platform, especially if there is ever to be a real &quot;internet of things.&quot; otherwise it&#39;s all proprietary lock-in and late comers are sure to not get any software support. &amp;nbsp;My idea is pretty simple, a sort of web-stack lite. &amp;nbsp;Much of the web now is compatibility baggage that can be dropped but it would also be interesting to target problems found in wearables. &amp;nbsp;How about a typed variant of javascript? &amp;nbsp;ASM.js is already a thing, dumb as it is, but such an idea could be used for the same purposes of speeding up javascript via compiler guarantees and precompilation. &amp;nbsp;What about HTML-like presentation layers? Most other UIs markup are not nearly as advanced and working directly with interfaces in code is difficult. &amp;nbsp;What about reducing that to parts that could work on a wearable (probably don&#39;t need paragraphs)? &amp;nbsp;What about ensuring that offline and peer connections are a priority, day one? &amp;nbsp;What about battery conservation best-practices?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I think there&#39;s really something that could be explored here and it&#39;s uses could also be used to fix current web problems, the same way mobile helped whip desktop browsers back into shape. &amp;nbsp;At the very least it&#39;s a chance to start over with the lessons already learned from past failures.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/7307723711972901249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/02/web-for-wearables.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/7307723711972901249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/7307723711972901249'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/02/web-for-wearables.html' title='Web for Wearables'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-5484889359723175447</id><published>2015-02-20T08:42:00.001-08:00</published><updated>2015-02-20T08:56:16.871-08:00</updated><title type='text'>Future web browser design: Feature Blacklists</title><content type='html'>The web can really suck sometimes. &amp;nbsp;Browsers can&#39;t always drop bad features because they &quot;don&#39;t want to break the web.&quot; I&#39;m not strong agreer in this sentiment but I can respect it. &amp;nbsp;However, whether or not you believe that there&#39;s really no reason why this should impact users. &amp;nbsp;Even useful features can be abused and I think it&#39;s important to allow users to revoke permissions for websites that misbehave.&lt;br /&gt;
&lt;br /&gt;
As sort of an extension to my proposal to kill blocking javascript UI, an easy way to do this is to add feature blacklists. &amp;nbsp;Commonly abused features could be disabled by domain or as a whole. &amp;nbsp;These can include:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Window.alert and friends&lt;/li&gt;
&lt;li&gt;Opening new windows&lt;/li&gt;
&lt;li&gt;Redirecting a page (or filter allowed redirect domains)&lt;/li&gt;
&lt;li&gt;Plugins like flash&lt;/li&gt;
&lt;li&gt;Audio&lt;/li&gt;
&lt;li&gt;Animated gifs&lt;/li&gt;
&lt;li&gt;Synchronous ajax&lt;/li&gt;
&lt;li&gt;Ajax calls to specific domains&lt;/li&gt;
&lt;li&gt;Frames&lt;/li&gt;
&lt;li&gt;document unload event handlers&lt;/li&gt;
&lt;li&gt;Downloads not specifically generated by &quot;save as&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
By default a website has access to all of these. &amp;nbsp;There are some limits like not opening windows except off a click but they can be worked around to produce nasty results. &amp;nbsp;Rather we can treat these more like cookies, websites might want them but we don&#39;t have to give them. &amp;nbsp;If it breaks the site that&#39;s fine because the user did it to themselves (and if users do block it, the site might have reason to reconsider decisions) but users shouldn&#39;t have to put up with crap they know they don&#39;t want. &amp;nbsp;Crappy ads, not respecting bandwidth, CPU, battery, locking the UI, etc all of these are preventable without taking away the developer&#39;s abilities, just put control back into user hands and give them the ability to say no.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/5484889359723175447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/02/future-web-browser-design-feature.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5484889359723175447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5484889359723175447'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/02/future-web-browser-design-feature.html' title='Future web browser design: Feature Blacklists'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-4505463066824918312</id><published>2015-01-02T21:53:00.002-08:00</published><updated>2015-01-02T21:53:28.419-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="QOL"/><title type='text'>Sleeping Room</title><content type='html'>People these days don&#39;t get a lot of sleep. &amp;nbsp;This has come to be a fact of modern society. &amp;nbsp;But more than that I&#39;m somewhat convinced we don&#39;t get good quality sleep either or maybe we can make it better. &amp;nbsp;Much like some activities we engage in occasionally such as baths, massage, and chiropractics perhaps we can engage in more premium versions of sleep where it&#39;s not so much a necessary evil but an activity we can budget for.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
My idea is to take a small room, it doesn&#39;t have to be big because it&#39;s not supposed to be decorative or contain much of anything, that would just consist of a bed. &amp;nbsp;In fact, if not claustrophobic it could just be a bed set into a wall. &amp;nbsp; The room would be sound-proof as much as possible to eliminate outside noise. &amp;nbsp;It should be temperature controlled differently than surrounding rooms that allow the user to select a temperature that fits them best. &amp;nbsp;The last thing would be to have complete darkness with a sunlight that can gradually fade. &amp;nbsp;The idea would be that you can use this to get undistracted sleep in conditions that are most optimal. &amp;nbsp;Set an 8 hour timer and the sunlight will naturally wake you up.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I think such a room installed in house could be very beneficial. &amp;nbsp;It&#39;s could be especially useful for partners as others can be very distracting even if the intimacy is welcome. &amp;nbsp;At least some of the time it works to sleep apart to get a restful sleep.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It doesn&#39;t seem like it would be too hard to make something like this as all the technology readily exists. &amp;nbsp;If I ever get the opportunity I&#39;d like to take it.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/4505463066824918312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2015/01/sleeping-room.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/4505463066824918312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/4505463066824918312'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2015/01/sleeping-room.html' title='Sleeping Room'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-1710279675537173576</id><published>2014-11-03T18:54:00.000-08:00</published><updated>2016-02-04T21:06:11.244-08:00</updated><title type='text'>Reinventing the wheel</title><content type='html'>&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Normally and especially in code one would tell you not to reinvent the wheel.  This is generally true, it&#39;s often we get a little over-zealous and want to rewrite things in our own style. Sometimes we think we can do it better.  Much of the time this is not the case or at least it&#39;s not worth the time or effort to produce a marginally better product, and often times the product you&#39;re looking at is better than what you might do.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
It&#39;s important to keep that in mind but at the same time there is a lot of value in doing something again.  It&#39;s often I get code from Github and the like or am told to use something and it turns out it&#39;s not very good.  This scales all the way to multi-thousand dollar products which are just plain awful.  Sometimes our resistance to making something causes us to adopt bad practices and bad code.  This might be okay for a novice but as you grow there becomes a time where you are the expert and you can write good code.  It&#39;s also important for domains.  General code is often good but once you hit a certain point you need to optimize more toward the goal you are reaching to make appreciable gains.  This is another good reason to roll your own.  This can help not just performance but code cleanliness too.  A library with a few functions is good, a behemoth library with 200 function that you use 10% of is not.  This is one of my cases against things like jQuery, you can do most of the stuff it does pretty easily and then you don&#39;t have a whole library to worry about (and maintain).&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
It&#39;s also a necessary component to learning.  Doing something for yourself helps you learn.  It&#39;s important to tread the same ground to learn some of the lessons.  If you publicize it can also be a great resource for others to learn or launch their own thing, create competition. &lt;br /&gt;
So we shouldn&#39;t take this to the extreme and feel free to reinvent the wheel.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/1710279675537173576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/11/reinveting-wheel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/1710279675537173576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/1710279675537173576'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/11/reinveting-wheel.html' title='Reinventing the wheel'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-4820972075998033079</id><published>2014-10-19T16:06:00.000-07:00</published><updated>2015-02-28T22:42:44.522-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="wearable technology"/><title type='text'>The tablet/phone model won&#39;t work for smartwatches</title><content type='html'>&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
I&#39;ve been a big proponent of smart watches for a while now.  While I really want the idea to take off I can definitely see why people would be skeptical of the idea.  While I don&#39;t think they have the context to formulate good arguments about why it seems dumb I can definitively say it&#39;s due to the current way tech companies are pushing it.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
I think the biggest problem I&#39;ve seen is trying to understand the potential market in terms of phones and tablets, and failing to understand the use-cases.  Applying the mentality and technology found in mobile seems intuitive but it&#39;s not, there are very different concerns for watches and it&#39;s not just about style.  In fact a good smatchwatch probably share more in common with an eReader.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Active Displays - Normally color is better than no color.  The exception is when adding color comes at a high price.  You can go back to the OG Gameboy and it&#39;s contemporaries you don&#39;t remember like the Lynx or Game Gear to find that just because something has color doesn&#39;t mean  it&#39;s better.  E-readers don&#39;t have color either but I&#39;d still much rather read on that than a tablet due to the screen properties.  Color doesn&#39;t really matter much on a watch.  You aren&#39;t viewing photos, or videos, it gives you a little bit of extra flare with UI but that&#39;s really minor and potentially distracting.  Both Google and Apple are showing off things with photo backgrounds, not only is that not even close to an MVP feature, it may even be undesirable because that low-res image can muddy the UI especially when every pixel counts.  But despite a relative small-step it cuts deep.  Active screens like LCD suck a lot more energy forcing watches to use dimming, turning off and even then getting terrible battery life.  Pebble went with e-paper and gets 4 days, you don&#39;t get picture backgrounds but who cares?  Also active screens have terrible bright-light display making them hard to read outdoors, again passive displays don&#39;t have this problem.  This seems like a pretty big use case too, why aren&#39;t they optimizing for it?&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Distractions - So about that software...  Smatchwatches at their core should display widgets, not apps. Ordering Pizza?  Why would you demo that?  Navigation is also something I wouldn&#39;t do on a postage-stamp-sized screen.  People probably aren&#39;t going to use a watch as a distraction, after all, they still need their phone at this point so if I have a few minutes I&#39;ll get out my phone.  Again we need to optimize for passive glancability, context and sensors.  I think Apple&#39;s watch-face demonstration was just awful.  Fly to the planets on the watch face?  People will do that once and then never again.  It&#39;s simply not helpful.  You really need to reduce bloat for many reasons because the amount of time spent per use and the limited inputs prohibit it.  Another bad example is the emoji communicator that had sub-menus.  Why would I not use my phone if I have to fiddle with these sorts of menus?  Again an e-readers don&#39;t have lots of apps and distractions, instead those limit distraction to focus on the core reading experience which aligns with what smartwatches need.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Waterproofing - Resistance isn&#39;t enough.  Being able to thoroughly wash your hands shouldn&#39;t be a burden, nor should washing dishes, swimming or rain. Wearables are supposed to be an augmentation.  The more you need to think about it, the less you&#39;ll use it.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Of course this isn&#39;t to say all is bad, while I think the basics are being sacrificed for novelty, I do think there are a few good ideas being brought in post-Pebble.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Proximity authentication - This is good idea by Google.  This makes it easier to unlock your device and can add up to a decent amount of saved time.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Heart Rate sensing - Watches make great fitness trackers because they combine devices.  The addition of heart rate monitors for fitness tracking is great as it could lead to better fitness tracking and software utility, including medical emergency cases, while being generally non-invasive.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Barometers - A simple device that can kinda predict weather but can measure the altitude change throughout the day.  Another good metric for fitness.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
NFC payments - This saves a lot of time and effort when paying for things.  It is too bad that it&#39;s just locked to Apple pay as the NFC can do a much wider array of things like pairing or host-card emulation, but for someone who finds themselves with their hands full I could appreciate this.&lt;/div&gt;
&lt;div style=&quot;white-space: pre-wrap; word-wrap: break-word;&quot;&gt;
Communication - Terrible emoticons aside I did actually think Apple&#39;s communicator design was good.  Very simple messages are getting popular and because this uses drawn images is has a personal touch which is nice.  Sharing your heart beat sounds a little cheesy but there&#39;s good novelty in it especially at a time when technology makes us a little more detached.  I think little flourishes like that are really what can make wearables culture unique.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/4820972075998033079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/10/the-tabletphone-model-wont-work-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/4820972075998033079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/4820972075998033079'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/10/the-tabletphone-model-wont-work-for.html' title='The tablet/phone model won&#39;t work for smartwatches'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-3702169998807900421</id><published>2014-10-11T18:48:00.000-07:00</published><updated>2015-07-17T05:37:42.065-07:00</updated><title type='text'>Killing blocking javascript UI APIs</title><content type='html'>There are web APIs that have existed for a long time and a growing problem is that some of them are not good APIs. &amp;nbsp;Perhaps they made sense for the web when they were invented but are becoming more of a liability now. &amp;nbsp;This leaves us with a problem, we could remove them but do to their nature they aren&#39;t easily replacable but regaurdless of if they were that easy to replace turning off support for them would cause many web pages, somat the haven&#39;t been updated to best practice of the last decade to break. &amp;nbsp;The ones I want to talk about here are: showModalDialog, confirm and alert.&lt;br /&gt;
&lt;br /&gt;
These seem to stem from early GUI concepts of prompting the user with a box that pops up. &amp;nbsp;This also blocks the entire UI until the user interacts with it. &amp;nbsp;This is a terrible UI practice because it&#39;s forcing the user to do something or it locks their entire UI. &amp;nbsp;It&#39;s terrible from code standpoint too because it&#39;s synchronous and the page can&#39;t do anything while the prompt is up. &amp;nbsp;What&#39;s more is that this actually becomes a security problem. &amp;nbsp;A page can create a navigation handler that pops an alert forcing the user to interact and disabling their ability to close the window, but you can be really annoying and put a lot of text in that alert which moves the clear button past the fold. &amp;nbsp;Now the user is stuck on that page unless they can open devs tools and remove the code. &amp;nbsp;Yikes! &amp;nbsp;It&#39;s like a popup on steroids. &amp;nbsp;How has this not been addressed? &amp;nbsp;The answer is simply, too many sites use it. &amp;nbsp;Often for useful testing features or because it&#39;s good enough for something simple. &amp;nbsp;This isn&#39;t a big problem, those people can change but big corporate websites still abuse it and so browser vendors back off.&lt;br /&gt;
&lt;br /&gt;
While I&#39;m disappointed no browser had taken up the banner (and until someone does this will remain a problem), the solution to me seems pretty easy. &amp;nbsp;I&#39;ve never seen this formally coined so let me do it, first we start off with inversion-of-blame. &lt;br /&gt;
&lt;br /&gt;
Think about it: If you, the browser, remove it then webmasters will get upset with you. &amp;nbsp;I guess this is bad since it&#39;s the sole reason it doesn&#39;t happen but anyway, just don&#39;t do that, instead because this has user impact give users the option to disable it. &amp;nbsp;If users have the option and you can make good reasons why they should then they will start doing things. &amp;nbsp;This is how popup blockers (mostly) killed the popup. &amp;nbsp;The ironic, sad but potentially useful thing is that users will complain about things they caused and businesses will often bend over to prevent stupid users from shooting themselves in the foot. &amp;nbsp;IE8 is a great example, stupid users use it but if the page was broken they&#39;ll complain to the site owner, and so many (stupid) sites still support it. &amp;nbsp;I&#39;ve seen this go so far as to accommodate user ad blockers or even lack of javascript which is insane.&lt;br /&gt;
&lt;br /&gt;
So in a nutshell, inversion-of-blame is to avoid blame by utilizing a bottom-up update structure rather than a top-down one. &amp;nbsp;Users are always blameless to businesses so if you can reach the user directly you too can share in this magical property.&lt;br /&gt;
&lt;br /&gt;
So to do this we let users disable it. &amp;nbsp;Power users likely will and they might do it for their less technically inclined relatives. &amp;nbsp;That alone should decrease usage. &amp;nbsp;After a while though you can make your argument and set it as the default. &amp;nbsp;You haven&#39;t killed anything, it works it&#39;s just hard enough that nobody will try unless they have to. &amp;nbsp;This should kill public usage and get people migrating. &amp;nbsp;Business can unset those flags but at this point it&#39;s a losing battle for them. &amp;nbsp;You can now take it as public mandate that these APIs suck, usage statistics will drop a you can start removing them completely.&lt;br /&gt;
&lt;br /&gt;
So, any takers?</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/3702169998807900421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/10/killing-blocking-javascript-ui-apis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/3702169998807900421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/3702169998807900421'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/10/killing-blocking-javascript-ui-apis.html' title='Killing blocking javascript UI APIs'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-2186961133939283719</id><published>2014-10-08T19:47:00.001-07:00</published><updated>2014-10-08T20:10:53.794-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="digital policy"/><category scheme="http://www.blogger.com/atom/ns#" term="software strategy"/><title type='text'>Security, maintenance and upgrades</title><content type='html'>I work with lots of software companies and IT departments. &amp;nbsp;One of the issues that constantly comes up is how to handle updates, specifically from 3rd party vendors. &amp;nbsp;Many still support IE8 despite being 3 versions behind with a very obvious upgrade path (if you&#39;re still limited by XP then God help you). &amp;nbsp;This is unreasonable. &amp;nbsp;Software companies should reasonably pass the burden of out-of-date software to their customers. &amp;nbsp;If it was a paid upgrade then I could understand, but for free software platforms we should not support back versions because it is so easy for customers to upgrade and customers that balk at upgrading are bad customers who are costing your business money and opportunity. &amp;nbsp;Keeping these tested, secure and supported costs money, it technically debts the code and incurs maintenance taxes and new features may be incompatible. Checking that box isn&#39;t a valid reason, you need clear data that this is worth pursuing and that you aren&#39;t going to lose advantages to upstarts without your baggage when things inevitably change.&lt;br /&gt;
&lt;br /&gt;
There&#39;s another case with third party libraries. &amp;nbsp;This one is tricky. &amp;nbsp;Obviously we want to be on the latest jQuery or whatever but things change and it can break your code. &amp;nbsp;Realistically, you should have been ready for it. &amp;nbsp;Most of these are good about giving warnings ahead of time about deprecations and changes. &amp;nbsp;I think it&#39;s always important to reduce external dependencies if you can but sometime libraries are very useful. &amp;nbsp;In this case it&#39;s always important to upgrade ASAP, not just for the features and possible security fixes but because the longer you wait and the more you pile on to old architecture the harder it is to upgrade. &amp;nbsp;You get more benefit and less debt. &amp;nbsp;Yes there is an upgrade cost, but you have to pay it anyway, so you might as well pay upfront. &amp;nbsp;This always happens so it&#39;s often best that you continue development continuously and be ready for it, a software product is never finished.&lt;br /&gt;
&lt;br /&gt;
And what if you are the third party? &amp;nbsp;This is the most interesting case. &amp;nbsp;Obviously you want to improve your product but you have no idea how others are consuming your APIs. &amp;nbsp;Legacy support is costly. &amp;nbsp;In this case I think the best case scenario is that you make your intentions clear upfront. &amp;nbsp;Facebook used to have a motto &quot;move fast and break things,&quot; I agree. &amp;nbsp;Software should be a continuous process and it shouldn&#39;t be too unreasonable to ask that consumers of an API keep their code up-to-date. &amp;nbsp;Much like consumers they&#39;ll cost you money and debt your code if you bow to resistance. &amp;nbsp;However, there is leeway here and you should check data knowing how much you could lose. Consider, if it&#39;s just a bunch of dinosaurs, you might actually be dragged down despite their currently deep pockets. &amp;nbsp;Aim where you want to be in 10 years, not today. &amp;nbsp;Of course you have responsibilities to give prior notice as far in advance as possible, make betas and technical preview available and work with consumers of the software. &amp;nbsp;Most will be over-joyed to work with new stuff because programmers like that sort of thing, businesses may not but a software company run only by the business is probably never going to get ahead (and if your expectation of continual development is in place maybe the business folks will accommodate it as a necessary evil to them).&lt;br /&gt;
&lt;br /&gt;
Here&#39;s some things of what not to do though:&lt;br /&gt;
&lt;br /&gt;
-Patch Tuesday: This is dumb. &amp;nbsp;A bug is a bug no matter when it happens and should be fixed immediately. &amp;nbsp;It&#39;s not hard to reboot a machine and if it is that is a bug. &amp;nbsp;You can do this with 0 down time and really if MS pushed companies would be incentivised to build architecture such that it happens with 0 down time. &amp;nbsp;Waiting on critical issues is stupid, and companies that would maintain insecure systems because they don&#39;t know what happens when they reboot are terrible at their job.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s an awful ZDNET article: http://www.zdnet.com/aws-reboot-highlights-how-cloud-needs-patching-best-practices-7000034049/&lt;br /&gt;
Not only is letting security bugs fester not best practice but Amazon is totally in the right here. &amp;nbsp;Security of their business, customers (and their customers) is more important than businesses whining because some machines are getting reset and they didn&#39;t make the effort to gracefully handle it.&lt;br /&gt;
&lt;br /&gt;
-Leaving bad code in: I&#39;d like to write another post about the absolutely awful situation about the web and blocking UI (alert, modalDialog, confirm) but nobody likes it, it&#39;s highly invasive but it&#39;s still there because nobody wants to &quot;break the web.&quot; &amp;nbsp;I can tell you if I was in charge I&#39;d be fairly aggressive at stamping this out. &amp;nbsp;Granted you don&#39;t need to kill consumers using it in a massive sweep but there are ways you can de-incentivise and eventually leave them with the choice to change or die. &amp;nbsp;In the words of Batman &quot;I won&#39;t kill you, but I don&#39;t have to save you.&quot;. &amp;nbsp;At this point nothing is really being done (except the removal of the low usage showModalDialog which thankfully some Blink devs are telling enterprise complainers to STFU and write better code) so we still have very harmful features and will continue pretty much until someone makes a real move.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/2186961133939283719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/10/security-maintenance-and-upgrades.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/2186961133939283719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/2186961133939283719'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/10/security-maintenance-and-upgrades.html' title='Security, maintenance and upgrades'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-7243950783981948780</id><published>2014-09-21T21:38:00.000-07:00</published><updated>2014-10-08T20:10:21.201-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="software strategy"/><category scheme="http://www.blogger.com/atom/ns#" term="technological annoyances"/><title type='text'>The need for progressive downloads</title><content type='html'>I spent a few hours not too long ago trying to install OSX Mavericks.  I just hadn&#39;t gotten around to using the Mac side of my computer.  This process was excruciating because every time I tried to download a 5GB installer it would be corrupted and prompt me to do it again.  This lead to much frustration and wasted bandwidth and I couldn&#39;t figure out what I was doing wrong.  Turns out I wasn&#39;t doing anything wrong, the big file just had a chance larger than most to download incorrectly.  This, to me, is crazy.&lt;br /&gt;
&lt;br /&gt;
It makes sense that a large download is prone to corruption but it&#39;s amazing this is still a problem today and permeates many places.  When downloading it makes sense to download chunks with a checksum and then verify it.  That way I don&#39;t have to download another 5GB because something messed up. What&#39;s particularly sad here is that an app store is more or less a download manager, there&#39;s no reason it shouldn&#39;t be able to do this on it&#39;s own.  Another dumb problem is if you cut the wifi, &quot;sorry can&#39;t download, try again.&quot;  I just downloaded half the file, why can&#39;t I pick back up where I left off?  This is unacceptable for an app store but pretty much anywhere we should apply this tactic.  Our mobile devices have unstable connections and are bandwidth limited due to cost, it&#39;s necessary for that reason alone.  We shouldn&#39;t wait to verify data is good nor should we throw away good data.  We should build systems that are resilient, it should work eventually, not fail and stop working and if someone wants to download a 4K movie over 56K, this should be possible, just like it should be possible to download my 8K fulldome movie over a 20Mbps connection like we have today.&lt;br /&gt;
&lt;br /&gt;
Speaking of video, have you ever watched a video and refreshed the page and had to download it over again?  How about buffer, skip ahead and have it rebuffer and then skip back and it buffers the part it buffered before.  This is asinine and 100% of all players get it wrong.  The correct behavior is to buffer from the beginning assuming I watch the whole thing in order (people like to scan videos, especially long ones they aren&#39;t invested in, but this is a safe first assumption), if I skip, hold what I had so I can still watch it without a rebuffer but start a new buffer at the new location and buffer forward.  Once it hits the end, start filling in the gaps from the beginning.&lt;br /&gt;
&lt;br /&gt;
Note that these interactions don&#39;t just save time and bandwidth and have a good user experience but also allows for gathering data from multiple endpoints so it can save bandwidth on the source, maintain higher speeds during network congestion or even grab data locally instead of via the internet.  This is why peer-to-peer sharing has always worked like this.  Why isn&#39;t this the model we always use?</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/7243950783981948780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/09/i-spend-few-hours-not-too-long-ago.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/7243950783981948780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/7243950783981948780'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/09/i-spend-few-hours-not-too-long-ago.html' title='The need for progressive downloads'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-5374337365960001805</id><published>2014-06-01T19:59:00.001-07:00</published><updated>2014-10-08T20:09:48.244-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="software strategy"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Stop Using CMSs</title><content type='html'>Virtually every business I&#39;ve been a part of has always come up with the same idea, &quot;what if instead of getting high-cost developers to make content changes for me, they could make a tool such that others can edit the content.&quot; &amp;nbsp;In theory this is not a bad idea, unfortunately it&#39;s not quite that simple.&lt;br /&gt;
&lt;br /&gt;
The first problem is that building or using CMSs is hard. &amp;nbsp;CMSs naturally worm their way into codebases in an effort to control the way things are added to it. &amp;nbsp;This makes it harder to do anything the CMS doesn&#39;t specifically allow. &amp;nbsp;You&#39;ll spend tons of time just working around it. &amp;nbsp;Easy things become hard and your perpetually stuck with something that can be next to impossible to migrate from.&lt;br /&gt;
&lt;br /&gt;
Content and code aren&#39;t separable in the way CMSs typically allow. &amp;nbsp;For very flat sites it might work but sites that are more application like or do things can&#39;t simply be modified without a lot of trouble. &amp;nbsp;A great example is CSS. &amp;nbsp;CSS has problems one of which is it&#39;s linked too strongly with content. &amp;nbsp;You need to be able to change both, but CSS is also code, you shouldn&#39;t change it at the content level. &amp;nbsp;But this means you need an understanding of the global style, not just a particular piece which is exactly what a CMS is trying to not have the content editor do. &amp;nbsp;It&#39;s always a mess and there is no clean solution to this that I&#39;ve ever seen.&lt;br /&gt;
&lt;br /&gt;
CMSs are generalized and thus lead to bad performance. &amp;nbsp;You need much more power to serve things in a CMS.&lt;br /&gt;
&lt;br /&gt;
CMSs add complexity to the code base and thus require more environment setup and learning for new devs.&lt;br /&gt;
&lt;br /&gt;
CMSs are often very expensive and from experience the expensive ones are terrible products.&lt;br /&gt;
&lt;br /&gt;
Adding content is probably the easiest thing to do for a developer. &amp;nbsp;A content change could take a few minutes. &amp;nbsp;In fact I&#39;m often asked to update content that&#39;s in a CMS simply because the CMS is difficult to use. &amp;nbsp;The irony is that it now takes me 10 times as long to do it.&lt;br /&gt;
&lt;br /&gt;
I think the main problem with CMSs is that they are a very poor way to solve a basic problem, adding content. &amp;nbsp;In fact, if the content editors took a month long class on CSS and HTML and a little bit of training on the codebase you&#39;d solve the problem in a much cleaner way. &amp;nbsp;Everyone would be smarter in a useful way (not a expensive, sloppy tool usage way), the complexity is reduced, and it&#39;s super clean. &amp;nbsp;The only reason I can imagine this isn&#39;t done is some people are perhaps afraid to learn a mildly technical skill. &amp;nbsp;I certainly would not want someone like that working for me, this isn&#39;t rocket science.&lt;br /&gt;
&lt;br /&gt;
However if you absolutely need a CMS take this advice. &amp;nbsp;Use the smallest, simplest thing you can get away with. &amp;nbsp;Never choose software based on extra features, only your must-have feature. &amp;nbsp;Get something free and open source so it&#39;s easier to work with. &amp;nbsp;Don&#39;t get a behemoth such that you have bad dependant code that requires you pay licensing for eternity. &amp;nbsp;Make it service-based so you can rip it out if necessary, it shouldn&#39;t be an inseparable part of your code.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/5374337365960001805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/06/stop-using-cmss.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5374337365960001805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5374337365960001805'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/06/stop-using-cmss.html' title='Stop Using CMSs'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-4745584986637446909</id><published>2014-05-23T06:33:00.002-07:00</published><updated>2014-10-08T20:07:32.234-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="digital policy"/><title type='text'>How to Find, Retain, and Keep People Doing Good Software Work</title><content type='html'>At my job I do a lot of contracting so I&#39;ve seen the teams and cultures of many places. &amp;nbsp;It&#39;s interesting that they all have their problems, some the same and some different. &amp;nbsp;Having a comparison point and being on the outside you get to see what works and what doesn&#39;t.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Do not distrust your employees or they will distrust you. &amp;nbsp;This means monitoring, especially with software or scoring metrics. &amp;nbsp;This stresses people and makes them uncomfortable. &amp;nbsp;Employees who don&#39;t feel they can escape being watched will probably not perform as well and are less likely to trust the business. &amp;nbsp;Consider, if they don&#39;t trust the business there is no incentive to do more than a minimum job and they will be less likely to make improvements.&lt;/li&gt;
&lt;li&gt;Let employees own their own hardware. &amp;nbsp;Recycled company hardware is typically old and nobody feels comfortable with it. &amp;nbsp;It makes sense when an employee joins to give them the best hardware you can afford. &amp;nbsp;Let them own it, they&#39;ll probably take care of it and load it up with things they feel helps their work. &amp;nbsp;Also, it&#39;s hard to really divide personal and work hardware anyway. &amp;nbsp;They are just as worried about you getting personal info as you are of them getting business info when they leave. &amp;nbsp;If the employee doesn&#39;t work out and it hasn&#39;t been a year yet then you can repurpose it, otherwise just buy the new model. &amp;nbsp;When the employee leaves let them take it after wiping it, data problems solved.&lt;/li&gt;
&lt;li&gt;Reduce the number of people an employee has to interface with to get a job done. &amp;nbsp;This means minimal IT. &amp;nbsp;The biggest time waster is needing access to something and not having anyone around to grant it. &amp;nbsp;Let teams select and own their products and hardware, they&#39;ll naturally pick what they think works best. &amp;nbsp;It&#39;s easier to talk to a product manager than IT.&lt;/li&gt;
&lt;li&gt;Budget for experimentation. Not all experiments are fruitful but if you outline time then people will likely take it up to learn new things and improve business practice. &amp;nbsp;It&#39;s almost always a win in the end.&lt;/li&gt;
&lt;li&gt;Budget for unit testing. &amp;nbsp;It&#39;s necessary, don&#39;t think it&#39;s not as you&#39;ll be guaranteed to spend more QA time than you save dev time.&lt;/li&gt;
&lt;li&gt;Don&#39;t even start development until the build system is in. &amp;nbsp;Build systems save time and money and ensure good code. &amp;nbsp;If there&#39;s crappy manual work get that done upfront because you&#39;ll soon forget, it won&#39;t be budgeted and you&#39;ll be wasting time while being able to push less code. &amp;nbsp;This also reduces the risk of pushes to nothing.&lt;/li&gt;
&lt;li&gt;Take employee feedback seriously and address it right away. &amp;nbsp;Your actual workers know best what they need and want, let them have it.&lt;/li&gt;
&lt;li&gt;Reduce management. &amp;nbsp;Devs will tell you when they need BAs and project managers because they dislike doing that stuff. &amp;nbsp;Otherwise let them them go with as a few people making decisions for them and let them have strong ownership of their products. &amp;nbsp;The better they feel the better the work will be.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Overall this list can be summed up as follows:&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Empower employees to do the best job they can. &amp;nbsp;This means giving them control. &amp;nbsp;They know how to do their job and what they find works best for them. &amp;nbsp;Not having that control is frustrating and weakens moral, but it&#39;s also a guarantee they aren&#39;t maxing their potential.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/4745584986637446909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/05/how-to-find-retain-and-keep-people.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/4745584986637446909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/4745584986637446909'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/05/how-to-find-retain-and-keep-people.html' title='How to Find, Retain, and Keep People Doing Good Software Work'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-5290470608801317031</id><published>2014-05-03T13:43:00.002-07:00</published><updated>2015-02-28T23:04:42.075-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="input devices"/><category scheme="http://www.blogger.com/atom/ns#" term="super-mobile technology"/><title type='text'>Gesture-first symbolic alphabet</title><content type='html'>It&#39;s been a long time since we really revisited the roman alphabet. &amp;nbsp;Writing systems aren&#39;t really things that change too often. &amp;nbsp;It&#39;s amazing to think about how much has changed since it was created and that how everything digital uses it as an assumption. &amp;nbsp;Keyboards are only really a thing because people a thousands of years ago created some symbols. &amp;nbsp;This creates a rather problematic experience as text cannot be communicated efficiently. &amp;nbsp;This is a problem in other languages too, we actually map easy actions to letters and sometimes words creating whole translation layers to communicate on devices. &amp;nbsp;I think that it would be interesting to explore creating a modern system for symbolic input based on ergonomic factors.&lt;br /&gt;
&lt;br /&gt;
Of course what I think of isn&#39;t exactly like a written alphabet to translates into words or one that relates closely to speech. &amp;nbsp;More like a set of symbolic gestures that translates into unique sequences. &amp;nbsp;The use case I think of is web URLs. &amp;nbsp;There&#39;s plenty of things one can do to cache long strings but overall it&#39;s cumbersome and the difficulty of typing actually creates additional power for those who were lucky enough or could pay for short names. &amp;nbsp;But moreover, how could you input web URLs on a wristwatch. &amp;nbsp;There are ideas like &lt;a href=&quot;http://minuum.com/&quot;&gt;Minuum&lt;/a&gt;, but these still have limitations based on the Roman alphabet. &amp;nbsp;I think what we could think of is a standard (lol) set of symbolic gestures that can allow use to input things easier to match the ergonomics of our technology.&lt;br /&gt;
&lt;br /&gt;
The idea is you need a number of short, quick things that can be input with one finger. &amp;nbsp;This means not requiring multiple strokes (ideally a lifted finger lift denotes completion), many direction changes or anything that would require time to differentiate. They should not be true pictographs, where they start and end and how they balance is not as important as the motion. &amp;nbsp;There needs to be diversity such that things stay relatively short but doesn&#39;t get overly complex (see Chinese writing system). &amp;nbsp;It would also be helpful to make these easy to recognize in software.&lt;br /&gt;
&lt;br /&gt;
So a quick symbol set:&lt;br /&gt;
&lt;br /&gt;
1) CW circle&lt;br /&gt;
2) CCW circle&lt;br /&gt;
3) CW double circle&lt;br /&gt;
4) CCW double circle&lt;br /&gt;
5) upward point (/\)&lt;br /&gt;
6) downward point (\/)&lt;br /&gt;
7) left point (&amp;lt;)&lt;br /&gt;
8) right point (&amp;lt;)&lt;br /&gt;
9) down line&lt;br /&gt;
10) up line&lt;br /&gt;
11) left line&lt;br /&gt;
12) right line&lt;br /&gt;
13) top-right diagonal line&lt;br /&gt;
14) top-left diagonal line&lt;br /&gt;
15) bottom-left diagonal line&lt;br /&gt;
16) bottom-right diagonal line&lt;br /&gt;
17) horizontal criss-cross (Z)&lt;br /&gt;
18) Vertical criss-cross (N)&lt;br /&gt;
19) upper-right corner (think a reversed L)&lt;br /&gt;
20) bottom-right corner (V mirrored L)&lt;br /&gt;
21) bottom-left corner (L)&lt;br /&gt;
22) upper-left corner (H mirrored L)&lt;br /&gt;
23) left curve (C)&lt;br /&gt;
24) top curve (V mirrored C)&lt;br /&gt;
25) right curve&lt;br /&gt;
26) bottom curve&lt;br /&gt;
27) left crescent&lt;br /&gt;
28) top crescent&lt;br /&gt;
29) right crescent&lt;br /&gt;
30) bottom crescent&lt;br /&gt;
31) left half-circle&lt;br /&gt;
32) top half-circle&lt;br /&gt;
33) right half-circle&lt;br /&gt;
34) bottom half-circle&lt;br /&gt;
35) inner spiral (also recognized if more than 2 turns to differentiate from circle)&lt;br /&gt;
36) outer spiral (also recognized if more than 2 turns)&lt;br /&gt;
37) left loop&lt;br /&gt;
38) top loop&lt;br /&gt;
39) right loop&lt;br /&gt;
40) bottom loop&lt;br /&gt;
&lt;br /&gt;
It&#39;d be nice to have another 10 for an even 50 but even then this gives much more simplicity than any current language in terms of touch input. &amp;nbsp;Obviously there needs to be a symbolic representation. &amp;nbsp;But with this I could essentially input types of information into something as simple as a watch and I could register a short symbol sequence for users to access my app.&lt;br /&gt;
&lt;br /&gt;
We don&#39;t need to destroy what we have either, we can just build in parallel and let society decide if this is a good idea.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/5290470608801317031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/05/gesture-first-symbolic-alphabet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5290470608801317031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5290470608801317031'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/05/gesture-first-symbolic-alphabet.html' title='Gesture-first symbolic alphabet'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-5971923239472676336</id><published>2014-04-20T12:16:00.001-07:00</published><updated>2014-10-08T20:06:05.854-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="technological annoyances"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>Font loading extension</title><content type='html'>I hate webfonts. &amp;nbsp;Virtually all good fonts have insane licensing terms, not only are you required by the license to use the hosts crappy CDN and are restricted from self-hosting unless you pay for premium plans but they are designed to phone home every time they are used so you can be charged per page view. &amp;nbsp;This is crazy, fonts are images, who licenses a web image per view? On top of that, it punishes site users who need to make additional requests and slows the rendering of pages. &amp;nbsp;I had been thinking about creating an extension that works with major font hosts to strip out the phone homing and creates a sort of cross-domain cache for certain font assets (since these requests are naturally cached separately due to a userId).&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As a user I don&#39;t care about these stupid business dealings, why should I be making requests? &amp;nbsp;Also, I&#39;d love to save certain websites a bit of money by keeping the font licensing pageviews down, again because it&#39;s not my problem yet I&#39;m forced to deal with it.&lt;br /&gt;
&lt;br /&gt;
Edit: And here is a beginning which blocks some fast.fonts stuff: &lt;a href=&quot;https://github.com/Somnid/FontBlock&quot;&gt;https://github.com/Somnid/FontBlock&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/5971923239472676336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/04/font-loading-extension.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5971923239472676336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/5971923239472676336'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/04/font-loading-extension.html' title='Font loading extension'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-2448847263165771442</id><published>2014-03-21T07:03:00.001-07:00</published><updated>2015-07-17T05:43:29.998-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="networks"/><title type='text'>It takes a network to make a network</title><content type='html'>Looking into different peer-to-peer ideas one of the hardest things I&#39;ve had to convince myself is that it takes a network to make a network. &amp;nbsp;This sounds contradictory but it&#39;s true, at least as far as I can tell, perhaps someone wrote a fancy PhD thesis on it. &lt;br /&gt;
&lt;br /&gt;
The simplest network 2 nodes and a connection between them. &amp;nbsp;However, how is that connection established? &amp;nbsp;If there were 2 people on Earth but opposite sides how do they know about each other? They can&#39;t. You need discovery, which is a fancy way to say &quot;use a network to find people.&quot; &amp;nbsp;You only know internet addresses because someone told you the first one. &amp;nbsp;This person is part of a same network a you, maybe a more abstract personal network but a network non-the-less. &amp;nbsp;Once a new peer has at least one connection then the network can function and you can do discovery within it. &amp;nbsp;But you always need the outside network to become a part of the new one. &amp;nbsp;This means that you are essentially seeded into at least one network from birth and from there all other contacts are discovered from that base network and others you are introduced to by other &quot;nodes.&quot;&lt;br /&gt;
&lt;br /&gt;
This is also interesting because it means that we can apply &quot;six degrees of separation.&quot; &amp;nbsp;In a pure peer-to-peer network for nearly all peers we can assume it would take less than 6 jumps to optimally send a request to someone else.&lt;br /&gt;
&lt;br /&gt;
Really weird when you roll it around in your head.</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/2448847263165771442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/03/it-takes-network-to-make-network.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/2448847263165771442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/2448847263165771442'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/03/it-takes-network-to-make-network.html' title='It takes a network to make a network'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-9135294151700945423</id><published>2014-03-15T22:36:00.002-07:00</published><updated>2014-10-08T20:04:01.261-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><title type='text'>Future Music software exploration</title><content type='html'>Looking around it would seem like the future of digital music has none. &amp;nbsp;I mean if you were making a music service or looking to improve what you have there isn&#39;t many places to go. &amp;nbsp;We&#39;ve moved from digital ownership to streaming &quot;radio&quot; lately. &amp;nbsp;The radio services are actually so cheap very few people are getting paid and pretty much every big player is already jumping in and tearing apart all the startups. &amp;nbsp;While I don&#39;t see this trend abating I do see ways in which one could at least create some waves before getting bought out or pushed out.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
High Quality Music - I think the Pono Kickstarter is doing this and it&#39;s a good idea. &amp;nbsp;They also have a triangular-shaped high-quality music player which is probably not a great idea (well it&#39;s not bad but it&#39;s going to take off but more phones and tablets should have amps and high-quality DACs). &amp;nbsp;But I&#39;d love to see music stores sell flacs of studio masters.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Sell by the Playlist - Many people make playlists, in fact it&#39;s at least as old as the mix tape. &amp;nbsp;There&#39;s plenty of (bad) ways to share them online but I&#39;d like to see options to simply buy a shared playlist. &amp;nbsp;I&#39;m reminded of YTMND which had it&#39;s own soundtrack by the community which was fantastic but it was a pirate torrent. &amp;nbsp;I&#39;d have paid the $10 or so per album if I could buy the official playlist. &amp;nbsp;I suppose you could also incentivise with creator kickbacks but that has to tread carefully lest it be used for spam. &amp;nbsp;All referral programs need spam flags to prevent misuse and bots.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Music API - One idea of mine was to have a collection type of service (iTunes match, Amazon Cloud Match etc) and then open the API. &amp;nbsp;Either you could search if the user owned a song (and suggest it if they don&#39;t) or simply look through their library. &amp;nbsp;From there you can use it. &amp;nbsp;Say you had a music game, you could grab from their library of licensed music or suggest to them music that works with the application. &amp;nbsp;This allows application developers to license music through users which is powerful because artists can&#39;t exempt and the heavy royalties aren&#39;t on the developer, just the user.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Just some thoughts that popped into my head. &amp;nbsp;I hope some others exist but I&#39;m not really seeing them yet.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/9135294151700945423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/03/future-music-software-exploration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/9135294151700945423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/9135294151700945423'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/03/future-music-software-exploration.html' title='Future Music software exploration'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-9084539886457749602</id><published>2014-03-12T20:56:00.001-07:00</published><updated>2014-10-08T20:03:23.777-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="digital policy"/><title type='text'>Empower software with algorithms, not human policy</title><content type='html'>There&#39;s been a lot to say lately about how the internet should be shaped. &amp;nbsp;All sorts, ranging from Snowden&#39;s NSA leaks and how information is kept safe, accusations of Verizon throttling Netflix and net-neutrality, Chinese censorship, piracy, British porn filters, Tim Berners-Lee talking about a vague notion of a &quot;internet bill of rights&quot; etc. &amp;nbsp;The thing that seem to relate them all is people don&#39;t want the internet regulated and that powers are trying to regulate at least part of it. &amp;nbsp;I think this is noble goal and with this comes bad things but I think the good things about the web greatly out-weight the bad. &amp;nbsp;However, where I really disagree is that anyone should be fighting with policy. &lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lobbying, ISP regulation, business de-regulation and all that to me is at best pointless, a band-aid fix for a broken system. &amp;nbsp;The truth is the internet is above government, it&#39;s practically unregulatable by nature. &amp;nbsp;Maybe an entity with unfathomable wealth and resources could try but to me that&#39;s a bug. &amp;nbsp;In software you don&#39;t mandate that users stop misusing the software, you fix it. &amp;nbsp;The internet is software with a bit of hardware, if it&#39;s broken it&#39;s because one of the two is broken, the way connections are made, the way we connect, the way we organize or protect information. &amp;nbsp;To fix it we make something better. &amp;nbsp;It doesn&#39;t matter how much regulation, lobbying, whining and money the entertainment industry puts up, &lt;a href=&quot;https://github.com/popcorn-time/popcorn-app&quot;&gt;popcorn&lt;/a&gt;&amp;nbsp;is freely open, endless copy-able and easy to use, for good or bad it&#39;s a Pandora&#39;s Box nothing can shut. &amp;nbsp;If you want internet policy don&#39;t trust politicians to make it, or governments to enforce (or not enforce) it, use math, sensible algorithms that have guarantees money can&#39;t break it. &amp;nbsp;Lobbying, petitions, outrage and the like I feel is not very effective. &amp;nbsp;If you believe that this is important then fight human irrationality with physics, there&#39;s only one clear winner.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This applies to any future software.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/9084539886457749602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/03/empower-software-with-algorithms-not.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/9084539886457749602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/9084539886457749602'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/03/empower-software-with-algorithms-not.html' title='Empower software with algorithms, not human policy'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4789913006546922665.post-116359124282503533</id><published>2014-03-10T20:26:00.002-07:00</published><updated>2014-03-10T21:22:45.534-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>JML</title><content type='html'>One thing I&#39;ve thought about is unifying the things we use to build on the web. &amp;nbsp;Currently there are a few: HTML for markup, CSS for style, JSON for data and Javascript for logic. &amp;nbsp;Obviously JSON and Javascript are close cousins, if you get Javascript you probably get JSON. &amp;nbsp;That&#39;s neat, also even now things like Node.js are gaining popularity which means we&#39;re a lot closer to one language for the full stack.&lt;br /&gt;
&lt;br /&gt;
But we can do better. &amp;nbsp;For one HTML is still there. &amp;nbsp;It&#39;s XML-based but it doesn&#39;t need to be. &amp;nbsp;Realistically XML doesn&#39;t really offer much that JSON doesn&#39;t, perhaps it&#39;s easier to match ending tags but that&#39;s actually easily solvable with something like &lt;a href=&quot;http://idearepo.blogspot.com/2013/12/sjon-precursor-jsona.html&quot;&gt;JSONA&lt;/a&gt;&amp;nbsp;to comment it in if you want it. &amp;nbsp;But overall JSON tends to be better. &amp;nbsp;It&#39;s simple and it&#39;s very lightweight. &amp;nbsp;If we could take HTML and convert it to a JSON schema we could reduce page overhead from less text. &amp;nbsp;But what could be cooler is that Javascript works well with JSON. &amp;nbsp;Using JSON would provide for easy templating since it would effectively be the same as building HTML nodes in Javascript. &amp;nbsp;We could also reduce a lot of the method and properties of the HTML DOM objects because they would work with normal Javascript methods. &amp;nbsp;I think there would be a lot to gain.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s an early shim:&amp;nbsp;&lt;a href=&quot;https://github.com/Somnid/jml&quot;&gt;https://github.com/Somnid/jml&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It currently creates markup that is bigger but maybe a SJON approach can get those quotes out. &amp;nbsp;Also property names and nesting could be tweaked, for example a LINK tag might have it&#39;s href outside the attrs object because it&#39;s not a general attr. &amp;nbsp;Obviously a lot of validation would need to happen (but JSON validation is free and easy, HTML parses do whatever quietly).&lt;br /&gt;
&lt;br /&gt;
Then all we need to do is worry about CSS, but that looks surprisingly similar already...</content><link rel='replies' type='application/atom+xml' href='http://idearepo.blogspot.com/feeds/116359124282503533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://idearepo.blogspot.com/2014/03/jml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/116359124282503533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4789913006546922665/posts/default/116359124282503533'/><link rel='alternate' type='text/html' href='http://idearepo.blogspot.com/2014/03/jml.html' title='JML'/><author><name>Somnid</name><uri>http://www.blogger.com/profile/03440631659683290006</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>