- protect the data (files/database, etc)
- back it up
- make sure data is valid (ideally some smoke tests, unit tests, regression tests on the data layer of an application)
- back it up
- source control with easy to understand policies and branching
- back it up
- automate backing it up
- fix problems with the user experiences
- small visual problems can make people … disgusted. Fonts, cross browser issues take a lot of time, but matter to people who expect things to work.??
- client (browser) speed – a small javascript issue can cause a page load to appear to take 5 seconds. Perceived performance is all that matters.??
- fix display issues – if they think data is lost, then it is??
- integrated QA team – make everyone on the team test the site, but not their own work.
- make coding fast
- establish team communication that makes product iteration rapid
- use frameworks, existing but stable libraries (open source so you can fix critical problems yourself)
- keep version control and deployment as automated as possible for the whole team
- write easy to understand code
- document code and best practices (wiki style)
- track problems (bugs and backlogs)
- write test code (on critical areas)
- housekeeping
- refactor
- cleanup
- more test code
- new features/ scaling/performance??- probably the most fun for an engineer, but last on the list. This has been the hardest for me. ??Engineers need to think about scaling when the system is architected…. maybe. But when you have just a 10 customers and the entire database fits in memory… why worry?
- database ??- a typical bottleneck. NoSQL and distributed architectures are making this easier
- separate web server from application layer. Concentrate core application logic into languages that are better suited for scaling and concurrency issues
- load balance, messaging queues, etc
Uncategorized
The divorce: Adobe Vs. Apple
Apple and Adobe are both claiming a moral high-ground.
At first Adobe was the bad-guy for allegedly blocking further development of open standards like HTML5 and not opening up Flash.
Open source, open platforms, and open standards are really the only sustainable way forward.
I say this not to take sides. As developers and creatives we must make choices that protect our future. Protect does not mean “defend”. Protect here means “ensures sustainable happiness for all involved”. Our destinies are already intertwined, but intertwined should not feel like a lock-in, trap or prison. Freedom can co-exist with interdependence.
Thank you XEROX (for not Patenting the GUI)
Dear XEROX (PARC),
Thank you for not patenting the Graphic User Interface. Conventional wisdom has been that XEROX missed out on a huge opportunity – and maybe that’s true. However, maybe Microsoft and Apple (and Linux for that matter) would have never been such great successes. Maybe we would all have had to wait for the Newton or the IPad before the innovation could have been surpassed.Windows 7 was not my idea.
Soliciting Advice: highly concurrent, available, non-blocking server
- Easy to use (build, deploy, monitor)
- Plentiful external, stable, pre-integrated Libraries
- Use case: distributed, non-blocking web services
- Quite a bit of message and job queueing
- multiple databases , caching
- Scala
- pros
- assume it will take great advantage of Java 1.7 concurrency, multi-core
- fairly trivial import of external java libs (except for non-thread safe?)
- e.g. ZooKeeper – http://hadoop.apache.org/zookeeper/docs/r3.0.0/index.html
- cons
- new language syntax, paradigm learning curve
- doubts about JVM memory efficiency and stability as resources are constrained
- pros
- Server Side Javascript – via node.js
- pros
- redis integration for caching
- fast, lightweight, easy language.
- some custom js would be portable to browsers (coolness)
- cons
- very new
- performance
- not as many external libs?
- pros
- Tornado
- pros
- Python
- as many libs as Scala
- Python
- cons
- narrower use cases
- performance
- pros
Field Collapsing in SOLR
wget https://issues.apache.org/jira/secure/attachment/12440108/SOLR-236-trunk.patch
patch -p 1 -i SOLR-236-trunk.patch
Why I’m starting a personal tech blog
- Technology alone is not enough:
- Make sure you love something you consider to be not technology. Loving code and assembling lego blocks works for some of the best – but for mortals, having other interests can serve as a compass to guide the “why” you do what to do.
-
Courage is not only in tackling cutting edge technologies, but also in shepherding the transition to new technology for the larger world we serve. Yes, I believe that world domination is a goal of every startup. But domination means we want to serve as many people possible, and do it well. “Don’t be evil” is a mantra I reflect on in this context.
- Be open:
- Isolation is dangerous. Open source, open communities, and open style of development keep you healthy. Some “enemy” may occasionally out-calcuate you because you showed your hand. But you’ll lose a few games of poker in order to win the innovation game. Chances are if your idea is something some one _can_ steal simply by sharing the idea with them, then some one else is going independently invent it anyway. Don’t live in fear that some one might be doing something newer or better.
- Your reputation is important, but if some one can trash your idea easily it’s either because the idea is actually bad, or they are simply wrong.
Leadership: Women at Google – Padmasree Warrior
Cisco can compete in many markets (the talk mentions 40) because it understands not only technology, but the context and culture which creates the demand for technology.
In defense of the Semantic Web, Again.
With the official announcement that RDF is in Drupal core and the Semantic Web conference in DC, I wanted to take time to respond to “tales of a semantic web skeptic”. Healthy criticism, and a good read.
This piece is to defend the vision, if not the execution.
I helped get RDF into Drupal and spoke on the topic at two DrupalCons (one in Brussels and the other in Barcelona). No credit beyond that belongs to me, I’ve done no development on it since.
Arguments are mostly semantic about the semantic web. The computer science is done, the technology is used in real world applications in genetics, law, and military applications.
What is perhaps a PR shift is to differentiate the upper-case and lower-case semantic web.
The semantic web:
- a data exchange standard for graph based meta data and logical meta data
- a webservice with a standardized API
- a graph database, or other specialized store
- consumers or Agents
The Semantic Web (a la W3C)
- RDF(S), RDFa, OWL(S), etc
- REST/ SPARQL
- Sesame, Jena, YARS, Redland, etc
- Semantic Agents
Microformats and popularizations are all good. Folksonomy instead of Taxonomy – Clay Shirky, or rather, the mob (you and I) he describes, is hard to argue with. To mash up verified, trusted content in federated queries from heterogeneous data sources is cool to me, but not everyone.
Tim Berners-Less talk at Ted changes the term to “Linked Data”. That makes sense. I think there’s a struggle to create a revolution and an industry again – something with as big an impact as the web. Linked data is the web Sir Web wants/wanted. But the first web didn’t happen because a few folks wanted it. We needed it. As the YCombinator mantra goes “make something people want”. Making Semantic Web software has, in the past, made Semantic Web people happy… but not too many others (I have first hand experience in this).
A final two points:
Maybe it’s fair to say the community may be too top-down. Luckily, freedom of speech extends to computer code.
Not everyone is going to be inspired and “believe” in grand visions. Artificial intelligence is perfect analogy. Our culture has adopted the term – for better or worse – to mean lots of things.
Norman Borlaug – Nobel Peace Prize “Green Revolution”
Norman Borlaug recently passed away, and has perhaps saved millions of lives by improving food crop productivity. Fifty years later, a tremendous amount of science has been done since then. The Green in Green Revolution might not be appropriate any more.
Contributions to science can to be viewed as non-political and amoral. But there is a polarization and politicization of organic and “industrial” agriculture. My opinion is that the fundamental issue is sustainability. I think the course correction for industry still needs to be sustainability (economic, environmental and social)
If you are into agriculture – (food sources in general) – the video below is an interesting interview with Norman’s neighbors on the impact of chemical farming on soil and sustainability.
As a technologist from rural Maine, I like to keep in touch with ecology/agriculture topics. (my post at hacker news )
considering voting – technology and new paths towards democracy
I voted today, just an hour ago. The outcome of the election is unknown. There no reason for me to be cynical at the moment. In this moment, I’m happy.
Voting is one part of a participatory democracy – a clear path to being involved, belonging to something larger. However, Democracy, for me, is to be independent, educated, creative and unify around specific causes. These causes change depending on the world around us. This perspective on the purpose and meaning of democracy leads me to question voting as the best answer we have to creating democracy. Follows is a brief outline on how the internet and related technology offers new options for what government is, and does.
-
Open Source voting machines:
Paying private companies to write bad software on unsecured hardware is obviously crazy when we are talking about one of the most basic components to the infrastructure of democracy.
-
Semantic Web and Open Government:
If I am honest with myself, I have to admit that no matter how much research I do, I doubt I really know what is going on in our government. I’m pretty sure there is waste, but the waste is likely systemic as much as it is caused by corruption. There are complex organizations spending most of their energy just being complex. Institutional complexity can be reduced when there is insight into on what that organization is even up to – ie “transparent government”.
Putting all government documents online isn’t enough to make Government transparent. When single laws are 800 pages, being able to search through the mountain of data is critical. But, even more difficult than finding what you want is summarizing and co-relating data. I won’t elaborate on specifics here, but if the the whole of our public government is open, searchable, and easy to collect and reorganize into digestible pieces of knowledge, then we’re all better off. -
Game Theory:
Voting is not simple. Votes aren’t just counted, they are grouped, reassigned, allocated, recounted, averaged, rounded, molded. The game theory behind different voting mechanisms is a very well researched field. William Poundstone’s book gives a great intro into other voting systems. Hopefully on this day, November 4th, 2008, we overcome our flaws.
Check out Ubuntu/OLPC contributor Benjamin Mako Hill’s online voting site Selectricty to try out other voting systems and the Ruby Vote voting software. -
Taxes:
The internet can make where money flows more dynamic and accountable.
Paying into the system is not, currently, the same thing as buying into it. My libertarian friends feel the pain most acutely. With 1 billion dollars spent on the election, each vote cost roughly $8. A billion dollars seems like a lot, but when all those voters pay $10,000 dollars or more in taxes a year, that’s a pretty good profit margin.
So why can’t we vote on every little thing our money goes towards? Perhaps, because the world is too complex perhaps, or perhaps taxes are as sure as death. Death usually isn’t questioned. Well, with progress in genetics, there are folks questioning death too. I don’t have an answer, but I do think it’s fair to question our tax system and how the money gets spent when technology could make the flow of money more impactful, and provably so.
If you are cynical, I get it. However, while technology is nothing without people changing behavior, having safe and trusted options can open the door.