Musings of a Web Producer
RIA (JS/Flash), GIS, and More
RIA (JS/Flash), GIS, and More
Oct 18th
Google stock dropped by 8% when their sales missed targets. Though it is highly unlikely this will ever occur, it would probably be in Google’s best interest to relocate to Canada and here is why.
1. Our Taxes (& healthcare)
Our tax rate for large companies is almost half of that of the USA. In addition, employers don’t have to pay for healthcare benefits for their employees. Canada has a true single payer health care system and so this is not a burden on companies moving here. Most companies do choose to offer their employees further benefits on things not covered by federal health care such as dental.
2. Education
Canada is now the most educated country in the world. It already understood that a majority of advanced jobs in the USA will actually go to foreign workers because the USA is not creating an intelligent enough work force.
3. Infrastructure
Canada has some of the most advanced fiber optic networks in the world.
4. Privacy (no patriot act)
Canada has significantly different laws when it comes to privacy of its citizens and its corporations. Google would not need to constantly contend with the government about data they should or shouldn’t share.
5. Our Policies
Canada has sound economic policies that have protected us from things like the sub-prime mortgage crisis. Our currency is now comparable with the USA and with the amount of financial transfers the USA will be doing in the future, with new social programs like Obamacare, there is a high probability there currency will continue to drop.
Conclusion
Though I think it is unlikely to happen, Canada is becoming increasingly more friendly to tech companies and so it would only be in Google’s benefit to move their primary corporation to Canada.
Jul 15th
Though I have a lot of PC products, I actually don’t hate apple products; they are great consumer products. Lack of flexibility isn’t necessarily a bad thing. My pet peeves regarding apple are always around price more then anything. That said, I love my iPad, Nano, and Mac Mini. I develop on a PC. It’s easy to get philosophical talking about how Apple is doing a lot of questionable, and frankly seemingly evil things. Doing things that they once upon a time said were bad about other companies such as IBM. These things don’t really have that much bearing on their ability to generate sales however.
Jobs was not an innovator, what Jobs was was an amazing filter. If you read the biography on him you will discover he had this spectacular trait of knowing what was good versus bad. He didn’t have a 100% batting average but it was pretty high. People brought him ideas and he figured out if they were good or bad.
Some debates emerged after Steve Jobs died, “Apple is going to die now!” The Apple supporters retorted saying they are the biggest technology company in the world and that they can’t fail! If they can fail isn’t a question, everything in the world can fail. The question is what series of events could occur to destroy Apple. Luckily thanks to history we can establish these things quite easily.
1. Apple Management proves incompetence, supported by a not significant price drop
This happened a lot quicker then I thought it would of, it takes the form of the EPEAT certification. http://www.cnn.com/2012/07/12/tech/web/apple-greenpeace-report/index.html. Apples was actually involved in setting the EPEAT certification, in addition government agencies are required to buy products that adhere to EPEAT certifications. Of course they realized this huge mistake and reversed their position. This is the first sign the management has no idea what they are doing.
2. Apple loses a ton of money on an ‘innovative’ product that is horrible
When Jobs left apple they started to create all kinds of horrible products that were vaguely innovative. If Apple releases a horrible product, this will be effectively be the next sign of their demise.
3. Management makes a business model shift to try and recoup losses
After losing a significant amount of money, Apple will do something completely out of character for them. Something on par (but not exactly) like licensing osx to PCs.
Once the above three occur this will be followed by a series of predictable events. They will start losing significant amounts of money and start burning through their reserve. In order to stop the blood loss this will be followed by progressively larger lay offs. Meanwhile they will be preaching about this next great thing that will change everything.
Finally, the biggest mistake of all. Management in order to try and become profitable and make the share holders happy will make a series of very bad investment decisions in stocks or otherwise which will result in significant losses. They might also move their large amount of money around in order to try and avoid losses by inflation, this will result in more losses when the economy goes through a natural recession putting a further weight on them.
70% of Apples revenue comes from iPhone, a market they have been losing to Droid, some of their other revenue streams are directly linked with this mobile infrastructure. This of course could be all wrong, I am not a psychic. They could release the next great product or continue to release innovative products. This was Job’s dream for Apple after all. Also keep in mind that if these things happen there is no solid time frame for them. It could be 5 years or 500 years. If apple diversifies into other industries it is even more unlikely they will go away.
Jun 12th
A couple years ago I noticed Apple was picking up web-based mapping start-ups and closing them down. It was very obvious at this time that Apple was building their own mapping platform. So imagine my surprise when I discover not only have they not built a web mapping platform, their innovation was limited to creating 3D maps – whoop de doo. Apple has made a profound mistake and here is why.
1. 3D Maps have been around forever and aren’t as useful as you think
I had a conversation with a director of keyhole, the company that was acquired and their product later became Google Earth. 3D Maps are really useful for visualizations, this is why Google earth was used in news programs all the time. Outside of visualizations they are useful for things like mapping structural integrity or figuring out building elevations, stuff that a program called ArcGIS does. Outside of that, it’s annoying; the 3D structures get in the way. This is why despite having a Google Earth plugin, it never caught on because 3D maps aren’t that useful. Cool to look at and take pictures, but useless for basic practical applications.
2. WebGL is growing and getting Enterprise support
2-3 years ago the idea of building something using cutting edge web technology to sell to enterprises would of been absurd, everything needs to work with IE6 right? Companies have grown up and the browser upgrade process has gotten easier. Companies are now willing to switch to web technologies to save money if all it requires is a browser upgrade. I have already met professionals who are building software using webGL and selling it at the enterprise level. This is why Google’s next version of their mapping platform uses webGL and not native technologies.
3. Developers are moving to web technologies to create cross platform apps
With droid controlling half the market (48%), developers are now starting to use web techs more then ever. Apple has been one of the biggest supporters of web techs, if they start to pull their support or put in a lack luster effort to support web techs and try to force people to native apps, they will push even more people to droid. They just spent time and money on a mapping platform that can’t be used cross platform, and 3D maps will not be a big enough draw to pull people from droid which will also have their own 3D maps but will work through the browser.
4. Their Mapping platform will push out to websites that won’t be using their platform
So you find a restaurant using yelp, then you go and check out their website and hit directions – you’re not going to see an Apple map and so all their effort the user will still end up on the web using another mapping product that is not their own.
Had Apple built a web platform, I probably would of used it, but this goes to show that apple is afraid of the web. Them refusing to build web products yet supporting HTML5/JS is very confusing to say the least.
Jun 7th
Going from a typed language to Javascript could be a little frustrating, however, one of the things I learned about is that you should use the ‘===’ operator instead of the ‘==’ which does type coercion. After writing literally thousands of lines of code with ‘==’ and not having a single problem, I really pondered this and I have come to the conclusion that it is not always necessary to use ‘===’ and that a lot of the special cases scenarios actually make sense.
Let me explain by showing this example
'' == '0' //false 0 == '' //true 0 == '0' //true false == 'false' //true false == '0' //true false == undefined //false false == null //false null == undefined //true ' \t\r\n ' == 0 //true
The only convincing argument is the final case, however in the final case you are doing HTML Parsing and probably should be using regular expressions. The cases above that might seem odd, until you actually put them into real application. To understand why these problems exist is that they revolve around two concepts boolean values and undefined values.
First with undefined values, why are you doing equality checks? The only real way you should be checking a variable is defined is as follows
var vNull = null;
var vUd = undefined;
var vStringBlank = '';
var vNumZero = 0;
if(!variableNull && !variableUd && !vStringBlank && !vNumZero) {
//code runs
}
There is one problem with the above, can you catch it? vNumZero and vStringBlank are both defined variables. Now in the untyped universe this might be odd, in the the typed universe it’s not because when you are setting up to work with variables you will set them to either ” or 0 respectively based on their type, especially when you start doing concatenation or math. While the last two cases may be odd, it makes perfect logical sense because in all these of situations you’re talking about a variable that is waiting to be set with one possible exception which is zero, however, if you’re in a situation where 0 is an issue 9 out of 10 times you’re probably defining a special case scenario.
Zero when working with arrays and Matrices is almost always a special case scenario. It is also a special case scenario in mathematics. So if you are aware that a variable can be set to zero you would do something like follows.
var vNumZero = 0;
if(!vNumZero && vNumZero !== 0) {
// code will not run
}
in practical application however, !vNumZero will usually all that needs to be used. Next, Boolean values only have two values. If you’re using a boolean value it is always as some form of switching mechanism in which case you should never be comparing false to anything.
var b1 = true;
var b2 = false;
//incorrect
if(b1 == b2) {
}
//incorrect
if(b1 === b2) {
}
//correct
if(b1 && b2) {
}
In all situations you should not be doing equality checks on boolean values. However if you’re working on the next quantum entanglement rendering engine in JavaScript (why are you using js for that?) and you are in a situation where you need to execute code where two boolean values are the same regardless of if they are true or false you should do it as follows
if((b1 && b2) || (!b1 && !b2)) {
}
A boolean value is a boolean value it doesn’t matter if it is true, false, ”, 0, undefined, or null it is always either true or false. If you’re afraid of the ‘evil’ twin it is just going to make your coding slower. There are particular situations where ‘===’ is useful, like validating server side data, or when you’re checking for parity between two object’s properties.
May 19th
Facebook has convinced a large group of people that it can make billions of dollars yet no one actually knows how they are going to do it. While I am not sure exactly what they can do, I do know where the idea has to exist. They have to figure out how to make revenue off communication and not through just advertisements.
The reason Google makes the money they do is not because they sell advertisements it is because they sell cheats. It is fundamentally a zynga model in a different style, people pay Google money to get at the top of their search results and so Google monetizes what makes them popular in the first place. Everything else Google does is about brand awareness and getting people to use their search engine. They give android away for free because it creates awareness and they generate revenue when people do mobile searches on Google.
What makes Facebook popular? Communication. It has a nice address book and an easy way to share/communicate with friends. The problem with this is that it is very hard to monetize because communication on the internet has always been free. Outside of the internet people always pay for communication like phones and stamps. However, within the internet communication has almost no cost associated with it outside the initial entry fee which is the cost to access the internet. This doesn’t bode well for facebook who is trying to figure out ways to monetize their user base.
Facebook has tried to make money in the past using different ideas, paid gifts (icons etc..) but it didn’t pan out for them and they later stopped it. So now their only real method for generating revenue is advertisements but the problem with that is social advertising is not only untested it seems to not be working. GM has dropped advertising on facebook because of low consumer impact. This would of been surprising to me in the past but now it sort of makes sense. People come to facebook for a very specific reason and that is to communicate. They might get side tracked on a game here or there but for the most part their users are focused. This means that no matter how tailored an advertisement is on facebook no one is going to click on them. Compare this to Google where people click on the advertisements because its users are actually looking to click on them.
May 10th
When I worked in an enterprise development environment and I would tell people the things I have personally accomplished and the time frames I accomplished them in, I would usually get looks of shock. Usually my weekdays consisted of getting a project that project managers scheduled for a month, then completing the entire project in two days and then lying on my time log to keep everyone happy.
Meanwhile the developer that worked directly behind me spent 8 hours a day swearing and not being able to get anything done; he was let go. Enterprise development for the most part is crap, and if you’re one of those rare talented developers then you know this to be true because you’re probably are in a team of 10-15 and you do 75% of the work while the other developers on your team are spinning their wheels not getting anything done or just making more problems that you will probably have to fix.
In his book The Mythical Man-Month Fred books talks about these issues and how large projects are actually made worse by adding more developers and that good developers are 5-10 times more efficient then average or bad developers. Large projects are usually developed by smaller teams first and you can take any sizable project to date and this is true from Microsoft to Google.
There is a fundamental problem with almost all enterprise development environments and that is they don’t promote efficiency. The sad reality is that an efficient programmer, if he is honest about his time with management, will be progressively given more less relevant projects in an attempt for the company to justify paying him until he is working on a project that is incredibly old and if by chance he could unscrew the mess that it is, will never be used. This is why development should be result orientated and not time based.
In a result orientated environment the developer has freedom based on his capability. If you had the choice between paying a developer $10000 to get something done in two weeks, or $10000 but it will take 6 months and 8 hour days, which would you choose? The answer seems glaringly obvious but to most companies it is not. In fact this is what happens with most out sourced contracts, they end up costing about the same (assuming your project even gets done). What makes it even worse is that most development firms act like factories and if you’re not working, then something must be wrong; so efficient programmers will purposely stretch things out so they don’t get stuck with nothing to do.
What happens when a tech manager who has been hiring bad developers suddenly gets an amazing one? He gets yelled at by the project management team because it appears that he is incompetent and grossly over estimated the time things take because he based his time quote on his bad developers. So the amazing developer will get an awkward conversation where he is essentially told indirectly to lie about his time and what he is doing.
Enterprise development can be crap.
May 2nd
After my trip to SXSW, I discovered that everyone wants to be involved in social. The entire trade show floor was either new social networks or companies trying to sell social ‘marketing’ services. People have got very caught up in social believing it is some kind of magical playground where anything is possible, but very few people have actually stopped to ask what is facebook?
While this might sound hyperbolic, facebook is a message board. All the functionality that people enjoy about facebook existed before facebook. Private groups, private messaging, events, etc.. all of that existed in message boards. In fact one of the first tech companies that started off the internet bubble was a message board company.
It’s a form of communication, however unlike phones, the main thing that makes facebook valuable they can’t even charge for (communication). It would be like opening a hot dog stand, giving the hot dogs away for free and trying to make a living off of selling t-shirts about your hot dog stand. It’s a horrible idea, but now everyone thinks (incorrectly) that they are too big to fail.
A maxim I recite often is that the internet is nothing new rather it is simply the digital version of life. That being so we can figure out what is going to happen by analyzing non-digital counter parts. What happens in life when a dance club gets too popular? People leave. What happens if a communication mechanism gets any kind of annoying burden (such as ads)? People stop using it.
While it is theoretical what I am predicting right now is that in the next six months to one year we are going to see a stark drop in social usage. This can already be seen in Zynga reporting a net loss and Facebook also reporting a profit drop as well. People will use social for what it was designed for, communication. The layer that everyone has been trying to put on top of it is going to fizzle out gloriously. All the up starts that were so confident that they could sell your business with social will start vanishing when they simply cannot get any reasonable CPC or CPM from social. This will come to the astonishment of many. This is not to say that social is not going to have its place, but rather it is going to go the same route as any other form of communication.
Aug 23rd
So a couple major changes have happened over the last month or so, that I am excited to talk about. First is that I have move to Oakville, my girl friend is taking Computer Animation at Sheridan, and being that I have some freedom to move around being a web developer, I decided to come with her.
In addition a lot of opportunities have been opened up to 52 Stairs Studio Inc. We received a contract with a fiber company (A2B Fiber) to build them a really cool online application. In addition we have brought on a new adviser into 52 Stairs Studio; with this has come a great opportunity in the wine industry of all things. In addition one of the previous automotive companies we were working with presented us a great opportunity to work on another new and exciting project under a great company called Dealer Dimensions.
I will try to post more updates as things unfold.
Jul 10th
Now that the fence is starting to come down with Google+ and people are starting to flood in, everyone seems to be highly focused on how it functions, usability, and how it stacks up against facebook. However I would like to point out some very interesting observations:
1. There are no Advertisements
Now it foreseeable that they may start serving advertisements in the future on the Google+ platform, but I have a feeling that they won’t. As I will outline in my hypothesis.
2. They don’t ask for Personal Information
Facebook flat out asks you for your favorite books, political affiliations, and other information that would help them tailor advertisements to you. Google+ simply doesn’t.
Why?
It seems rather counter-intuitive to have a social platform that doesn’t try to gain as much information as possible from you. However, it would make perfect sense if it was about building a graph to figure out search results. When Google started you had websites linking to each other, and they used this knowledge as a way of building a proper grading system for websites. However with the rise of social, something else started happening; a new link structure formed. Susie shared with Bob who then shared with all his friends and so forth and so on.
Social Context Search Results Hypothesis
Apart from the fact that your +1 recommendations come up in Google Search Results to your friends, I believe they are using Google+ and social as a way of putting results into context. Everyone knows that tailored search results are the future, and some start ups such as Hunch are trying to capitalize on it. However, Google is approaching the problem differently. Instead of building a massive personal profile for every user they are going off of the assumption (or fact?) that like minded people flock together. Connecting all the various circles give you a massive amount of data for returning socially contextualized results. This is why they don’t have advertisements, or ask you for personal information. What they care about is the websites you are visiting, and who you are sharing those websites with.
Good or Bad?
Assuming my hypothesis is correct, I imagine there will be much debate that arises from Google doing such a thing. For instance, would this promote confirmation bias in the worst way possible? Will this contribute to the filter bubble? Who knows, but I imagine the term SSEO (Social Search Engine Optimization) will be a new buzz word very soon.
May 25th
I recently have noticed an influx in app builders. Google was the first to venture into this, and now all kinds of services are popping up that are trying to do the same thing, build an app in a couple steps! The mobile space is a new space, but it fundamentally has the same characteristics of other mediums such as the internet, or a news paper. In almost all instances these new mediums make it easier to create and share information. When the internet started there was very little, then there was a lot, and then there was services that popped up to let you make your own website, can you name any? If you can, are they still around?
The general idea is that everybody wants something such as an app or a website so if you can build something that can easily do it, it will be a gold mine; it doesn’t work, for a couple reasons.
1. The Complexity Paradox (in regards to UX)
The simpler an interface is for doing complex things, the more complex the back end. The more complex the back end becomes the harder it is to make the interface complex. If both end up being complex, the product will explode. Why is this relevant? The more features something requires, the more it is going to affect the interface, because you cannot possibly make a back end that is predictive enough to handle every contingency. Yes it is true, some people want “simple” things, however the quantity of simple things is always increasing or changing. Facebook and their various widgets is a good example of this.
So user A wants feature B. In order to change feature B something must be added to the interface, how do you maintain simplicity?
2. People don’t want to pay for partial tools
Imagine going to a hardware store and buying hammer, upon getting it you discover it only works for 50% of nails, any other nails and it will shatter. Pretty big problem. If you’re going to invest the time in building something, you usually want to use tools that allow you to do a lot. Web interfaces for building applications is like a hammer that can only do 50%. If you’re trying to buy a tool because you don’t want to work, there is a fundamental problem with that, you will probably end up just hiring someone to do it for you.
3. People always want the latest stuff
Most web developers I am sure have heard and shook their head because of their client’s misunderstanding, “I want my website to be the greatest, it needs to use HTML5!” They have no idea what HTML5 is, all they know is they want it. The nature of technology is advancements will always (no exceptions) out pace any form of WYSWIG editor that utilizes separate technology, because of this editors will always be in a catch up model unless they have a supreme amount of capital and workers behind them. What was CSS and Divs 10 years ago? Adobe is a good example of how an editor can keep pace, when they wanted to do stuff on the internet that at the time wasn’t possible (and is just catching up now) they built their own plugin. Unfortunately, app/web builders rely on other people.
4. Self Competition
Building technology that produces the same technology easier is a form of devaluation and self competition. If you can make $75 an hour developing technology, but you build a product that lets other people do it for $25 an hour, you have destroyed your own price point. Now it might be fine if through your factory you get way more sales, but because of the aforementioned concepts the only people you are going to get are usually the cheaper kind, so it won’t be $25 an hour, it will be 0.5c an hour, and once other factories come out it will be 0.1c an hour, meanwhile the rich people who want the latest and greatest don’t mind the $75. Information Technology production does not work the same way as manufacturing. People require a unique product, and if they don’t they will go on something like wordpress or facebook who don’t make their money through information technology production.
There may be a time in the future when development can become an automated or simple process, that time is not now. No matter how intuitive and simple you make something, people will always want something else, or something new when it comes to IT.
Building and selling information is not the same as building a deck. IT development is more akin to farming, the product spoils.