Today is a good day to code

ASUS ac66-u Losing Internet (WAN) Intermittently

Posted: May 1st, 2015 | Author: | Filed under: Uncategorized | No Comments »

Over the past few months, I’ve been having a strange problem with my Asus ac-66u weirdo router and I’ve finally found what I think is the fix.

Every week or so, the router would stop allowing access to the Internet, while internal networking seemed to work well.

I would try everything to fix it, but only a restore to factory settings and a reconfiguration would allow me to get back online.

Loading saved settings would always being the problem back. This problem has persisted through every firmware update I have applied since I bought the router over a year ago.

The other thing that I would notice was that when the problem would occur the bandwidth monitor would show well over a terabyte of data being received.

I took this to be a glitch of some kind since it shouldn’t be possible to receive that much network traffic from the WAN connection. I was mistaken.

Under the ipv6 section of the settings there are two drop down menus. One makes your router a ipv6 responder for your internal network ( or the Internet if you really want ), the other advertises is services as an ipv6 host.

For inexplicable reasons the default is for the first drop down to be disabled, which is good, but the second drop down is defaulted to enabled! So your router advertises ipv6 services to the Internet even though the former has been disabled!

This results in terabytes of UDP discovery packets being fired casually your way making it impossible to receive real data.

Setting both drop down menu settings to ‘disabled’ fixed the problem. Everything, including the bandwidth graph is normal.

I can not fathom why advertise is set to enabled by default, it makes no sense. Hopefully ASUS will change it to disabled by default in a subsequent firmware update..


Our Parents Built Voyager 1 What Are We Building?

Posted: September 14th, 2013 | Author: | Filed under: Uncategorized | Tags: , , , , , , | No Comments »
Voyager 1

Voyager 1

While I am incredibly excited that Voyager has left the solar system; a glorious accomplishment for humankind and an incredible testament to human ingenuity and will, we have built the first great ambassador to the stars, I wish that ‘we’ included myself and my generation.  Voyager is travelling at a velocity which is mind-boggling, it is moving at 11 miles per second, greater than the gravity of the sun holding our planets locked in their orbits around itself.  This is an incredible feat, man has created a device which can travel faster than anything captured within the gravity well of our solar system.  We have created something so rare, an object with a hyperbolic trajectory moving away from the solar system, the very fact that it is indicates the sophistication and potential of mankind.

Voyager Chief Scientist Ed Stone, Credit: NASA/Carla Cioffi

Voyager Chief Scientist Ed Stone, Credit: NASA/Carla Cioffi

Voyager, Apollo, Mariner, Hubble  and the great space exploration missions of the past century were all made possible by the genius of our parents.  As far as I can tell, we have done nothing even remotely approximating the magnitude of scientific discovery generated by these missions.  My generation has made it possible to cut deep into NASA’s budget, taking the money and wasting it on everything and nothing at once.  We take our greatest scientific minds and put them to work on wall street, creating exotic mathematical tools to extract ever declining slices of abstract value from the real value being created by people working.  We put mathematical geniuses to work creating codes and breaking codes so that we can perpetuate our advantage over everyone else.  What are we doing?  We have the wealth, ability and the technology available, not only to our government, but also our private citizens, to solve so many crippling issues around the world, while at the same time furthering human understanding of both biological and extra-terrestrial systems.  There is no reason we can not do both.  Any rationale given is just an excuse, and one I will not accept after watching the way we the people find money for other inane pet projects.

The derivatives that are created in the financial markets are true genius, the cryptographic systems and computer technologies that have been created over the past 26 or so years are astounding, and I truly appreciate that.  What I am frustrated and embarrassed about is what we choose to do with these technologies.  PRISM and Xkeyscore?  Really? Is that where we are putting all of our efforts, on spying on each other?  We talk about creating jobs; what part of building up infrastructure on the moon is not about creating new jobs?  The effort to build a permanent settlement on the moon would put tens of thousands of people around the world at work in a new race to inhabit our moon.

I am thrilled to see companies like Space X, Blue Origin, and Planetary Resources taking up the mantle of exploration.  We should be able to create another ambassador to the stars, like Voyager 1 & 2.  This should not be a hard sell.  We need to build another probe, one that is faster and has more storage capacity than the original Voyager missions.  We should create dozens of them some of them, some with highly solar-elliptical orbits such that they can deliver information about what is around us.

Only government currently has the resources to fund this type of purely scientific endeavor.  Profit seeking entities will eventually get there, but only where there is money to be made or with the will of a great individual with massive personal resources.   If the governments around the world lack enough vision to see that we need to do this, I’d settle for a league of extraordinary individuals who will put their fortunes and minds to this work.  Once these people come forward, all that needs to happen is for the governments of the world to get out of their way.

I understand that some say that the space exploration missions were really covert ( or not so covert ) tests for ICBM technology, and this is likely true, however the actual science missions got funded.  People used to be genuinely interested in exploring the unknown.  Naturally a few remain, but they are finding it more impossible by the day to convince any one else that exploration and research are still valuable.  People frequently discuss practical and pragmatic solutions to problems here on Earth, but they fail to find the vision that many of the problems here on Earth can be solved by trying to get off of it.

The next time you are thinking about trying to build the next facebook, or that next hot dating startup, of the next pinterest, take a minute and think about building a quantum entangled energy transmission network, or a new kind of rocket, perhaps a new form of energy efficient CO2 scrubbing system instead.  We need to seriously consider our legacy.  Do we, as a generation, only want to be remembered for our memes ( not that there is anything wrong with a good meme)?  Or do we want to do something big?  It is critical that we elect people who have vision, a true vision that will set us heading in the right direction.  We must support entrepreneurs who want to take us to the stars.  We do not have that with any of our elected officials, at least none that is willing to put their reputation and career on the line to forward space research that I am aware of anyway, and I am afraid that it is this which is the first and  largest problem.  The second is that we need to stop selling ourselves short.

We can do what seems like science fiction, it is possible.  Entrepreneurs should have the vision and the guts to take the risks that will advance all of mankind.  Venture capitalists need to ensure that they are taking long bets like the funding team behind Planetary Resources.  It is like this that we get there, if these companies do what they are doing and then work together to move us further forward, even beyond their initial business plans, eventually the governments will follow.


Is PRISM Wrong? It’s Complicated

Posted: June 10th, 2013 | Author: | Filed under: Lifestyle, Uncategorized | Tags: , , , , | 2 Comments »

I have been thinking about the surveillance issue a lot over the past few days, and have read a large number of opinions on whether what the NSA is doing is right or justifiable or constitutional.

I think that many people are missing something of the point. The documents we are reading about were never supposed to be released. It is akin to hearing one side of an argument. It is always easy to agree with a single side, you are missing all of the counterpoints which support the opposition’s position.

In the case of surveillance, in the absence of documents that support the need for this level of surveillance we can only speculate about how we got to the Verizon request and PRISM from the Patriot Act. To have a valid public debate, we would need to have access to the FISA court’s proceedings and the analysis of the original signals which led to PRISM.

I don’t feel as though anyone can really say whether or not we should have a program like PRISM, or if we need the massive data mining operations that the NSA has purportedly been undertaking, because all of the documents which would educate us about what is actually happening in the world around us are classified.

What I can say is that I would guess that the justification for this level of intrusion is quite strong. That being said, in the future, we may be glad that what started with carnivore, and has progressed to PRISM has been in place. We just can’t know.

It is unacceptable for our government to just say “trust us, it’s for your own good.” That is not the principal upon which our country was founded. The federal government’s contract with the public is a partnership, not a patriarchy. It would be best for everyone if the federal government’s bias were set back to “what can we have have declassified” from “how can we classify this?”

There is no reason that I can see as to why much of the intelligence leading up to this which is ancient now has to still be completely classified. Some representatives and members of the intelligence community have said that if they redacted the documents to support PRISM, what would be left would be meaningless. Even just the volume of documents could indicate to the public how much support there is for surveillance.

Classifying everything is a cop out. Yes, obviously if we applied the full process of public scrutiny to the realm of homeland security things would take longer, the NSA and DHS would have to respond to legal challenges from all comers. That would be a good thing, we’d probably all end up back where we are today, but we would all be agreed that this is the right thing for the our country given the current environment. Instead, where we are now, is like a mother dragging a kid by the collar to eat their broccoli.

Also, what some have proposed, ceasing use of Facebook, Google, what-have-you, is ridiculous. It is equally ridiculous to call them complicit to something evil or other childish ideas of how companies work. No one at these companies wants to violate the trust of their users in so blatant a way as to immediately destroy their business. To do such a thing would be in breach of their responsibilities to their shareholders. It wouldn’t even make financial sense.

The opposite is actually what is more likely, they will make much more money by doing nothing to exploit your data as far as the government is concerned, rather by using it for marketing intrusions. The only explanation for why they would allow this is that they have no choice. This database is precious to them, if it found its way to a rival company or government it would do real material harm. Even having this double access system is a giant risk, secret or no. They would never do this voluntarily.


Teaching my 7 Year Old Daughter to Code (Crypto)

Posted: August 24th, 2011 | Author: | Filed under: Lifestyle, Parenting, Programming, Ruby, Teaching Coding, Uncategorized | Tags: , , , , | 1 Comment »

When I started teaching programming to my children, I thought starting with JavaScript was a good idea. I still think that JavaScript is one of the most important languages to learn early in a programming career.  It just doesn’t seem to be the right choice for teaching someone to program when they are 7.

The reason is likely not what one would naturally think, the code isn’t too opaque, and the syntax wasn’t much of a problem for her.  It was just so much work to get output.  With my son, we worked on a really simple Python program working on his hand-me-down OLPC, my daughter was upgraded to an Acer Aspire 1 for her birthday.

With the Python, I felt like we made more progress due to the availability of a REPL.  We were able to make changes to the core code that was solving the problem and see results on the command line quickly.  With the JavaScript, we had to create an HTML page, load it into it, create some sort of markup output, etc… It just wasn’t as clean an approach to programming.

I have been asked by many about using “kid friendly” programming languages.  I think the people working on those are doing good work, however there is nothing “kid unfriendly” about the languages that I use for programming as an adult.  I think that in general when educating our kids, we need to stop coddling them so much.  Creating an approximation of an already dumbed down environment to write software to drive machines will not help them.  Most of the kids that I have seen are already beyond logo and they don’t even know it.  What they seem to want to do are real world things, and there is no reason they can’t.

What I settled on was to use Ruby for the tasks.  It is a language that has a great REPL, and is easier to read.  It also has the benefit of having a sane shell input mechanism as well as not requiring a ton of objects to get started.

We discussed what she wanted to do, there were several things, all of them were deeply social, but the one we settled on, I thought was the easiest to implement.  I thought that encrypting messages to her friend where only she and her friend had the crypt key would be enlightening.

She agreed, so we started into coding it up.  First we ended up working through a few encryption techniques on paper, taking short messages, converting them into their character codes and then shifting them by adding the char codes of each letter of the crypt key to each letter of the message.

def encode msg,key
	coded_msg = ""
	msg.each_char do |letter|
		coded_msg = coded_msg + add_cipher(key,letter)
	end
	return coded_msg
end

def add_cipher cipher,letter
	code = ""
	cipher.each_char do |cl|
		code = code + pad(cl[0] + letter[0])
	end
	return code
end

def pad num

   length=num.to_s.length

   if length > 3 then
      num.to_s
   else
      padded_id='0' * (3-length)  + num.to_s
   end
   return padded_id
end

At first, she put the crypt key into the program, but we discussed that it would be a bad idea since anyone with the source code could then crack the message.  She then asked me how her friend would decode the message.  I told her that the only way was for her to create a “pre-shared key,” something that she told her friend verbally that they would both have to remember, only then could that key be used to decrypt the messages.

What we did was to create a multi step command line program to accept the key and then the message.  We haven’t gotten around to the demux yet, but here is the mux:

print "Enter the crypto key, or die!: "
key = $stdin.gets.chomp

print "Tell me what to do ( 1 for encode, 2 for decode ): "
op = $stdin.gets.chomp

if(op.to_i == 1)
	print "Enter message to encode: "
	message = $stdin.gets.chomp
	coded_message = encode(message, key)
	print "Here is your message: \n"
	print coded_message
else

end

The nice thing about all of this is that the code is approachable, and the execution path makes sense… this happens, then this happens, etc… she can easily understand the flow of this program. We had significant problems with the flow of a client web application.

One of the first things that my daughter noticed was that whenever you make the crypt key longer, the message gets a bit longer, and that the encrypted message was many times longer than the original.  So it is working, not only is she understanding programming, but basic cryptography as well.  The only thing I am concerned about now is what happens when she is encrypting her posts on the social media site du jour at 16 with quantum encryption techniques.  How will I ever crack her codes?


The Corporate Disconnect : Millenials Against the World

Posted: July 6th, 2010 | Author: | Filed under: Companies, Lifestyle, Programming, Uncategorized | Tags: , , , , , | No Comments »

Disclaimer, I am not a millennial, I am in that strange area between generation X and generation Y, being closer to the Y. What does that have to do with the topic, you ask? It puts me in a unique place to watch the struggle of ideas unfolding between the engineers coming into companies, and the engineers / businesspeople running corporations.  This is not to say that all current executives are outdated, but in many companies, they have failed to update their model of the world to match increasing numbers of their customers, and the incoming flock of engineers.

The fundamental issue is that people who have had success in the past have a hard time considering that what gave them the success in the first place is not likely to continue producing success.  As an example, existing business processes for tracking hours is typically to have each individual estimate ( after the fact ) how many hours they have worked on a specific project on a given day.  The current method, as best as I can tell, is for engineers to estimate via points how much time it takes to perform a given programming task and do a post-mortem if the task takes more points.  But this daily reporting is eliminated, which is a better, more efficient process.  It is also one that revolves around trusting the engineer.

Another example is that it is not uncommon for developers working on a project to push out information about that project to the public via Twitter.  Even down to the level of code commits.  For the users of that product, they can choose to follow the official company feed or they can decide to follow their favorite engineers.  The concept of privacy has been diminished to a large degree in modern companies.  The benefit of this is that users become partners, not only in the debugging and troubleshooting process, but also in the development and planning phases.  You can find, for just about any startup, engineers posting what features they are thinking about and feedback from engaged consumers, either providing amplifications, their own feature suggestions, or strong negations about where the company should be spending its precious resources.  In such an environment, extreme secrecy is a huge liability.  Likewise, within corporations, keeping the status of the company, and what the customers are saying about the products from the engineers is disastrous to engineers’ morale, as well as harmful to the level of understanding of the executives as to what is happening within the company.  In more modern companies, the developers are treated like the partners of the product managers and the executives.

I think most of the fallacy in this regard comes from the manufacturing metaphors that have dominated the majority of the corporate worlds’ view of software development.  When I look at the waterfall method, and some of the organizational structures around engineering departments, what I believe is being attempted is to reduce development to an assembly line with shift managers and the like.  This can’t really work for software engineering  for many obvious reasons, but probably the most obvious is that programmers, even self taught ones have more in common with lawyers than they do with assembly line workers.  Assembly line workers can highly optimize their tasks due to the extremely specific level of requirements, as well as the consistency in their tasks.  Developers, and the product people working with the developers, almost never have requirements detailed enough to complete the given task.  Similarly, developers have a wide latitude to perform tasks in different ways as tools, managerial practices and or technology change, which is nearly daily at this point.  While most manufacturing systems change once every 20 years or so, a particular manufacturing worker can master their skills and have that be applicable for their entire career.

Attorneys are typically highly specialized, and operate with a widely varying set of rules, like software engineers, they need to parse and execute on sets of specifications ( laws ) to the benefit of the person contracting or paying them.  Their interpretation of a given law may not always be standard, but if it achieves the intended goal, then they are considered successful.  This interpretation in law as in software engineering is more of an art than a science.  This variability in going about the job from day to day creates odd management challenges that are being exacerbated for software engineering management as the millennials come into the workforce.  To a large degree, having fewer, more productive, empowered engineers is obviating the need for traditional engineering management.  Of course someone needs to be accountable, but if you have small groups of developers, the group can be accountable for a specific feature.  Small groups of engineers make it easier for them to triage why something went wrong and prevent it from happening again.  Failure is part of the software development process, but it doesn’t have to be a destructive part.

Millennials, and their immediate predecessors appear to be very comfortable with dealing with this sort of environment, they do not seem to need clear guidelines or even a clear goal.  Many software projects that utilized the “agile” philosophy, which even itself is becoming dated, typically manage the process with smaller tasks that everyone in a company seem to be involved in creating.  The new crop of engineers seem to be more comfortable with the self-taught, with it being more about what you can show than what you have done.  Resume’s appear to be losing their value relative to a solid portfolio of open source work and products.  My advice to people in high-school and college about to enter the work force is to work on a portfolio of applications first, or contribute to some open source projects, even more than attempting to get an internship at some big company.  If they can make some money off their portfolio, all the better.  The teams appear to be more distributed, with wide acceptance that each individual is working on their own business ideas not related directly to the company’s goals, or product portfolio.

All of these things fly in the face of the traditional command an control structure, however I believe that it will speed the pace of innovation, and improve the overall level of developers.  Smart companies will harness this multitasking and openness and provide avenues for their developers to contribute new products under a “labs” or a “demo” banner, even if they have nothing to do with the products that the company makes.  These companies will not mind as one of their “labs” projects earns more than their flagship product, and will provide the creator of that product a team and budget to see how far they can go.  That will rapidly become the only way to retain talent as the cost of starting a business online continues to drop.  Executives at these companies will treat their developers as peers in strategy as well as in the software development lifecycle.  It will become clear that this method of structuring a business is correct when not the one, but the many startups offering services begin to completely demolish the incumbents.  It is going to be an interesting ride… are you ready?


Conflicted About App Store Policies

Posted: April 26th, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides, Programming, Uncategorized | Tags: , , , | 2 Comments »

Last night I started down a train of thought that I wish I hadn’t. I started thinking about what the world would be like if Apple had been the dominant player, and Microsoft had faded away into semi-obscurity, if Linus hadn’t created Linux. What if the app store had come about years ago, and had become the primary method of reaching any significant number of users, with what other blogs are saying existing in their developer agreement.

What that future looked like was something that frightened and disgusted me in many ways. First and foremost, scripting languages, like Ruby, Python, Perl, and PHP would have been mostly prohibited on significant platforms, and thereby would have been relegated to mostly research oriented platforms. IE, no serious development of those languages would have taken place. Java would have been killed almost before it began, resulting in a much weaker web environment, as well as eliminating much of the boom that accompanied the web development land rush. Some very innovative companies would have had a much harder time achieving scale without the efforts of OSI around them, many of them would likely have never come to full bloom. Companies like Google and Amazon would have had to first develop their own operating systems free of Apple patent infringement, and free of the app store.

Much of the above is an argument for no software patents, which I generally agree with, but I think that isn’t where we should focus our attention. The main issue is that basically the fundamental structure that we all take for granted came about because there was always a viable alternative, that was open, and that the distribution of software was never limited or conflicted. Microsoft may have been many things, most of them negative, but one thing it got right was realizing that an open and free developer community is critical to the growth and improvement of the art. It will sometimes cause issues, and produce hideous products, but it is not the responsibility of platform companies to protect users from developers. Rather it is to assist in the developer-consumer conversation, especially as regards features and capabilities of the solutions being developed for them.

I actually hate Flash, I think it is outmoded and needs to go away, that being said, I can, and should be able to choose to develop solutions for my customers in whatever language or framework meets their needs. That choice needs to be made by the developer and the consumer of what that developer produces.

Apple has every right in the world to prevent developers and consumers from doing whatever Apple decides is wrong on their platform. That is their choice. Apple’s scale and access to customers, however is forcing am uncomfortable choice on their developer base. It is a choice that will itself go away if developers don’t do something about it now. It is the choice to either develop the way Apple wants, the solutions that Apple wants for it’s customers to have, or get off the platform and develop somewhere else. If developers don’t nurture alternative platforms, that ultimatum will become, either develop the apple way or don’t develop.

For those who think this is far fetched, Apple is poised to pass Microsoft in market cap, and probably has one of the strongest brands in history right now. They are almost the only game in mobile, with Android and Blackberry chasing, Palm, obliterated, and Microsoft marginalized. Mobile is every bit as important as desktop, in some ways more so.

My application, Mides, is actually being caught as collateral damage in this apparent developer agreement mess. It was my hope to create an environment in which developers could create and and test their web products using the scripting environment of their choice, be it ruby, php, or python. Apple had prohibited this sort of thing, by my interpretation, basically from jump, deciding that it was a feature that users of it’s products would never be able to have. That may have been an inadvertent choice, but it speaks to the types of use cases they have in mind for their devices, any uses that someone can come up with, even if there is a market for it, are prohibited. The end user volume that Apple has seems to say hay the end user likes this model, however I would argue that they don’t know what they are missing yet.

What does this amount to for me? Well, I am not going to make any overarching claims about developing for the Mac/iPhone platform, and I am not going to claim that I am going to stop using Apple products, they really are amazing products, but what I am going to do is vote with the only two voices I have, my money and my development efforts. I don’t like the way this app store pattern is going. I want a future where kids have access to modify and do crazy things with the devices and software that they use. I want for them, and for myself, to think differently, and try things that don’t work, or cause problems, because in the end, that is how humans learn. To have someone else decide for me what is safe, or what is cool, or how I should do what I do is the very anthesis of what I believe in. Designing amazing user experiences is one thing, dictating how I interact with the world through my computer and its peripherals, is completely different. I feel that Apple has pushed across the line of consumer advocacy, and has moved into something more sinister.

What I am going to do is to actively develop for other platforms, such as the web, Ubuntu, and Android, even though I am still angry with Google for banning me from their user group for no reason. The rationale behind my decision is that Google doesn’t control Android, anyone can fork it and do what they want. If I want to push out a beta, I can, if I find a bug I can push out a release in the morning and my users can have it in the afternoon. I am back in the loop with the conversation that my customers and I are having without having a disinterested intermediary in between. I will from now on, very carefully think about my consumption of Apple hardware, and their software and services, before buying them.

This line of thought completely knocked my Apple fanboy hat off, if Apple cares, and I hope they do, they will work to re-establish that childlike sense of wonder in me that I am developing for the best platform in the world, if not, it’s not a big deal, if I am alone in the way I feel, Apple has millions of developers and consumers, they don’t have to care about one, but I’m betting that I am not alone, and throwing all of our weight around is going to be a big deal to them. Apps make and break a platform, and by capriciously throwing away the developers of those apps, Apple is making a huge mistake.


Is The Raleigh-Durham Research Triangle the Next Hot Spot in Tech

Posted: August 12th, 2009 | Author: | Filed under: Uncategorized | Tags: , , , , | No Comments »

It seems that more often than not, when I am listening to a podcast, or reading about some cool new tech startup, it is in North Carolina, more often than not anymore.  I am wondering if we should rename it cloud hills North Carolina.  I started paying attention even before Apple and the governor of North Carolina acknowledged the 1 Billion dollar deal with Apple to locate a server farm there.  I have some pet theories as to why the area is hot and about to get hotter.

The first requirement for a thriving startup scene is access to capital.  Charlotte has that in droves, and is only a short “relatively” drive from RDU.  A few months ago, things there were touch and go with the financial meltdown.  Charlotte being arguably the second biggest banking city in the US after New York was looking at losing a significant number of businesses.  However, after some luck and quick work by the government, things seem to be looking up.  I would imagine that these banks are looking at trying to put their capital in something a bit more secure than financial derivatives.  Besides, what is better for PR than investing in small business and “putting America back to work.”

The next requirement is a thriving higher education community.  Between Charlotte, and the Research Triangle, there are a number of first class universities that have some of the most storied histories in the US.  Duke, UNC, Wake Forest, you name it.  There are plenty of hungry young minds looking for some VC and a little opportunity.

There needs to be solid infrastructure around broadband, electricity, and existing tech resources like hosting.  Well, they seem to have that, if Apple can build a huge server farm, and with what the universities, biotech companies, and bank tech consume as far as server resources are concerned.  There is skilled labor there, and know how.  Plus with companies like Red Hat out there, companies can find the services they need.  More importantly the state has shown that they have the governance to get it done.  The fact that they were able to change laws to meet Apple’s requirements to get the business shows that they are serious about tech.  The fact that they have working government puts them heads and shoulders above California because of that alone.

Not that I am eager to leave the Bay Area in any way shape or form at the moment, but North Carolina has my attention.  There is a lot going on outside of the microcosm of the Bay Area, and I think people are starting to take notice.


Open Source and Design: Why OSS Projects Have Strange UIs

Posted: June 9th, 2009 | Author: | Filed under: Uncategorized | Tags: , , , , , | No Comments »

One of the things that I have been continuously wondering is whether or not open source projects will ever get awesome UIs similar to the Apple iPhone, OS X, Apple TV, etc…  Right now I think that Ubuntu has made incredible strides toward getting a UI design that is anywhere near as awesome as Microsoft or Apple, but most other OSS projects just look ugly, or have no UI whatsoever.

Part of the reason, I think, is that most graphic designers make money off of their finished product, not necessarily the process by which they work.  If a UI designer / graphic designer were to open up their materials and process, what they did would have a little less value.  I worked for a while with a number of unbelievably talented designers, and they were very generous with their information.  So much so that someone like me who is unabashedly a programmer, who had no design skill, can now make moderately acceptable UI decisions.  The problem is that I am still far slower than they are at doing it, but one could see that if I were to have access to all of their psd files, etc… and their knowledge, I could just continuously duplicate what they had done.  I would not grow, I would not get better, but I could continue at that level indefinitely.  This would reduce the need for that designer long-term.  But this is a very small part of the problem.

Another issue, I think, is the nature of Open Source Development.  By necessity OSS is a community process, and design is not a community process.  Design is a single individual, or a group of like minded individuals’ effort to produce the art that is their vision.  If you open it up to the group, you will get 1 Million different approaches:  We should animate transitions!  We should not animate transitions!  We should copy the OS X dock! We should copy the Windows start menu!  These are things that can destroy a design process, what what you end up with is Windows Vista, or OS X 10.3 with lots of different interactions that don’t make sense to the end user.  The amazing thing about art is that the finished product always reflects the process.  If the creation process was disharmonious and quixotic, then the finished product will be that way, no matter how talented the designers.  If the creation process was focused and driven then that is how the finished product will be.

Another reason is the inherent contempt developers seem to have for designers telling them what to do.  So many developers think that they can design a series of forms, etc, and will challenge designers’ judgement.  In a OSS project, where the developers do not have business overlords forcing them to bow to the designers “crazy, insane, hard, impossible” requirements, they will not do it.  The reason Apple got where they are now is because Steve Jobs forced the developers to bow to the designers, and the result is arguably, the best working environment on a computer, technically as well as aesthetically.

I think this may be an intractable problem inherent to open source projects, barring an executive taking an open source project ( Free BSD ), and hiring a designer to draw up the UI + interactions ( Cordell Ratzlaff? ), and then forcing developers to do the impossible ( Bud Tribble ( NextStep Engineers ) ).  Also, since it is art, hiring a designer to create assets and interactions for any software is incredibly expensive, relative to the low barrier to entry of just doing it yourself.  I don’t actually have an answer for this, I am wondering how it will ultimately be resolved.


The TouchBook: The NetBook to End All NetBooks?

Posted: May 21st, 2009 | Author: | Filed under: Uncategorized | Tags: , , , , , , , , | No Comments »

The primary problem with my iPhone, G1, iPod Touch, etc… Is that they are too small and have too limited a battery life.  What I have been hoping for, for a very long time is a single slab tablet computer, sort of like a big iPod Touch with a 3G / LTE modem, a soft keyboard, and an open set of programming APIs so that I can make whatever applications for it that I wish.  Ideally it would have a dual core ARM CPU and great battery life, plus the option for a physical keyboard, well it seems that while I was hoping that Apple has done it, Always Innovating has taken matters into their own hands:
TouchBook

The TouchBook will run a variant of an open operating system called OpenEmbedded, a variant of something called the Angstrom Distribution, which I suppose is a distribution of the OpenEmbedded OS.  Although I have only seen the you tube video:

It seems to have the right stuff to be successful.  At $299 for just the touch part, or $399 for the touch part with the keyboard and second battery, the price is right.  The 3D in the video appears to be sufficient to compete with the iPhone, but what it will likely come down two are a couple of things:

  1. Are the APIs polished, or are they as disjointed as the normal Linux programming APIs
  2. Is Apple going to do a large form factor iPod Touch

If Apple is going to do a MacBook Touch, or a MacBook Mini, even at $499 or more, that can run the current crop of iPhone apps as desktop widgets, it will make it difficult for normal people to justify buying the TouchBook over a big iPod Touch.  Hax0rz, evangelists, early adopters, and general geeks like me may buy the TouchBook, but it is going to be an uphill battle for widespread customer adoption with yet another programming environment for developers to adapt their iPhone apps to.

On the other hand, if they were to make a pre-installed Android option available that was running Gnome or something, but could still run Android apps with little to no modification, in the same widget system as was described above, it could be interesting.

I respect what these guys are doing, its something I have thought of doing many times myself, and I might even spring for one if I get a little personal government bail-out money, but I just am afraid that I will crave whatever Apple makes.  Even though I have switched my personal phone over to a G1 and love it, and love coding for it, I still pine after the iPhone, some things are just simpler.   It really has nothing to do with the G1 hardware, while it is ugly as the offspring of sin and feces it functions adequately.  Its the OS that seriously lacks polish in places, and the unavailability of any sort of desktop synchronization mechanism is difficult at times, especially since the iTunes app doesn’t always play ball when dragging large numbers of UN-DRMed files out.

I suppose Google could modify gears to allow Android to tether to some kind of web app / web management system, that would be interesting, but I see that as being in the distant future.  Love it or hate it the iPhone and the iPod Touch, Cocoa Touch is just way ahead of any of its competitors.  If Apple would loosen up on the app store policies, allow 3rd party libraries and scripting languages on the iPhone, I think most of the competition would disappear overnight.  You’d still see the Linux guys pushing stuff for the fringe crowd, but Apple would have the consumer market locked up.

I think that the App Store situation is what is going to hurt Apple the most.  I am only developing for Android because I can’t flush out my app on iPhone, not because I can’t or because its obscene, but only because Apple doesn’t allow PHP, Ruby, and Perl, which is what my application is all about.  I can’t believe I am the only one who is playing by the rules and doing what Apple is making me do, develop for competing platforms.  I’m sure Apple doesn’t and wouldn’t care, my application applies to only a subset of a subset of a subset of the general population, web developers, and isn’t likely to bring in a ton of money for them or me, but I do it because I love the concept of building web apps while mobile.

The TouchBook is really perfect for my application, so after the Android release, I guess I’ll be doing it again for the TouchBook. Here’s to hoping people buy it, and that Apple doesn’t announce a large iPod Touch at WWDC.


If Only All Web Sites Had Browser Stats Like This

Posted: May 14th, 2009 | Author: | Filed under: Uncategorized | Tags: , , , , , , , | No Comments »

At this point, I just wish that Internet Explorer would just go away completely, but at least I know that the readers of this blog don’t use it.  What I’d really like to see are the Safari and Opera numbers on top as well, but I guess I can dream, speaking of dreams, what if all sites browser stats were like this:

Web Developer's Dream