- OSCON 2007
- Wednesday
- Keynote
- Torkington - intro
- Tim O'Reilly
- O'Reilly Radar
- SaaS changes/challenges OS assumptions
- four freedoms of the FSF
- run, study, dist, improve
- how to maintain those when
- requires 1000 cpus
- uses services based on proprietary algos
- redist isn't neccesary (already broadly dist.)
- improving "shared data" is more important
- FSF seems dismissive of these problems.
- need to rediscover value of freedom in new ways
- wikipedia is the new kind of free
- Version control systems
- Why does congress need a VC system
- Diff. tools give diff. ways to think
- OpenID is interesting
- There's a race to own data
- human geneome
- location data
- identity
- What needs to be open/free?
- Launchpad
- collab services for OS developers
- sharing bugs/plans/etc. across projeccts
- Open sourcce success factors
- frictionless SW distribution
- collaborative development
- modularity & lose coupling are important
- freeddom to build on, adapt or extend
- source helps, but not essential
- freedom to fork
- web 2.0 is
- systems that harness network effects to get better the more people use them
- Larry Wall's "Onion theory of open source"
- core is small
- layers of participation
- "betterr" the further you are ffrom the ccore
- James Reinders, Intel
- Outfitting for multi-core parallelism
- Threading building blocks
- C++ library
- "$299" -- No, just kidding
- moblin.org mobile internet linux devices
- threadingbuildingblocks.org
- compiler and processor independent
- OS independent
- Support available for $299
- Works in C (with a C++ compiler)
- Simon Peyton-Jones - Microsoft
- Transactional Memory and Concurrency
- Task parallelism
- 30 year old technology
- locks and condition variables
- fundamentally flawed
- What's wrong with locks?
- races (forgotten locks)
- deadlocks (too many, wrong order)
- lost wakeups
- diabolical error recovery
- => Locks are absurdly hard to get right
- Atomic memory transactions
- Like database transactions
- All or nothing semantics
- A & I in ACID
- Can't deadlock -- no locks
- errror recovery is easy (rollback)
- How do you make it work?
- optimistic concurrency
- reads and writes happen in a thread-local log
- At the end of the transaction, commit to memory
- "retry" abandon current transaction and start over
- wait until one of the read memory locations changes
- "choose" / "orElse"
- try this, if it retries, do that
- There is a runtime cost
- but, compiler and processor tech can help
- faster but wrong is bad
- finer grained concurrency may allow faster code
- Scales well with increasing numbers of threads
- Available in STM Haskell today
- See article on wikipedia
- Mark Shuttleworth & Tim O'Reilly
- Andy Lester - Managing Technical Debt
- Interst on debt will kill you
- technical bankruptcy - can't do projects
- Five step plan
- identify debts
- determine costs
- pay the mmost profitable
- stop inccurring new debt
- repeat
- Identify debts
- clutter!
- Anything you plan to do "later"
- later == never
- fragile code
- ugly code
- code w/o comments
- outdated comments
- Bus-sensitive knowledge
- unpatched security holes
- TODO & XXX???
- Missing infrastructure (VC, bug tracking, etc.)
- Relying on proprietary products
- Jerks on the team
- Jerks in management
- No coding standards
- code ownership
- Unacknowledged Technical Debt
- Determine Costs
- Think time
- Think $ too...
- Think Risk
- Cost of paying the debt
- time
- opportunity costs
- future maintenance
- HW
- SW
- You are creating justification to sell the boss on the changes
- opportunity cost
- what could be done instead?
- what if person is critical on other project
- do you push out release date to do docs?
- Pay the most profitable
- not cheapest
- not most fun
- not easiest
- Pick ONE
- Put a time bound on it
- improvement, not perfection
- Just Fucking Do It (JFDI)
- Quantify!
- Improved turnaround
- improved quality
- decreased risk
- etc.
- Tell stories about past problems
- Do ONE thing at a time
- Stop incurring new debt
- "Do everything perfectly from now on" - Just kidding
- Keep track of your technical debt
- in your bug tracker
- On a poster on the wall
- Somewhere you can't just ignore it.
- Understand your "cash flow"
- Remain vigilant
- Watch corners for potential debt
- The center will take care of itself
- Automate corner watching
- automated tests
- static analysis
- perl::critic
- coverity
- findbugs
- pde
- vigorous policing
- Avoid surprises later
- Jonathan Oxer - Release Monkey
- Build, Test & Release your Software into the Wild
- Build test release is expensive
- Adding deployment is reallly expensivve
- Lots of moving parts
- scm
- bug tracking
- docs
- testing
- packaging
- deployment
- Automate: hooks & APIs
- Release monkey is glue
- scm
- automated doc creation
- Bug closure
- Close bug when commit is made
- Look for string in commit msg
- trigger build process from scm
- Rob Richards - Who am I
- The age of Digital identity
- http://xri.net/=rob.richards
- What is a digital ID?
- digital repr. of claims about an entity
- domain name
- email addr
- username
- I-name
- Claims can be made by or about the entity
- no built-in assumption of trust
- What's the problem?
- username/password explosion
- info is being stored
- privacy issues
- security concerns / identity theft
- user doesn't know who is using their info
- 7 laws of identity
- user control and consent
- minimal disclosure for a constrained use
- justifiable parties
- direccted identity
- pluralism of operators & technologies
- human integration
- Consistent experience across contexts
- (Kim Cameron, identityblog.com/?page_id=354)
- Different contexts
- browsing
- personal
- others...
- OpenID and Information Cards
- Allow for SSO
- decentralized
- user-centric
- user is in control of data
- user aware of info exchange
- can redduce amt. of personal info a remote site needs to store
- potential to increase the web experience while maintaining privacy
- OpenID
- URL based
- Not machine dependent
- usable at the library, etc.
- simple
- many libraries
- OpenID interaction
- user submits URL
- relying party locates identity provider
- relying party establishes association with IP
- relying party redirects user to IP
- User authenticates against IP
- IP redirects back to relying party
- Information Cards
- (not cardspace)
- variety of selectors for various OS's
- identities represented as cards
- self asserted
- managed (third party provided)
- Identifier is unique among parties
- public key, mumble mumble
- Complex technologies
- SAML
- WS-Security / WS-Policy / WS-Trust
- Infocard Interaction
- relying party never talks to IP
- it all goes through the user
- SSL required
- Integrating with usr accounts in existing apps
- how is the initial assoc perfformed?
- who has the ability to change a user's ID
- users should always have control
- Should an admin be able to change a user's id?
- Aaron Boodman - Hacking with (and on) Google Gears
- What is gears?
- offline for ajax apps
- Plugin for firefox, IE & Safari
- adds APIs to javascript
- open source (BSD)
- open process
- design goals
- incremental improvement to the web platfform
- "webby" - you can view source, etc.
- One application, one URL
- Seamless transition betw. online and offf
- A collecction of APIs
- localserver: capture html, images, etc. to make avail offline
- database: store large amts of structured data
- worker pool: Threading for javascript
- Localserver
- a cache, not an app server
- supports atomic upgraddes of groups off resources
- always serve-then-validate
- auto-updates resources
- database
- SQLite
- Scales well
- Added full-text search
- worker pool
- run js on a diff OS thread
- avoid blocking UI for long ops
- process model
- each worker is its own separate js program
- comm. betw. workers is by message passing
- workers can't access dom
- ajax app architecture
- ui <-> local db <-> sync - xhr <-> internet
- Versioning your app
- three step process
- update the server
- gears autoupdates the client
- All clients will run "out of date" code at least once, because of serve-then-validate
- when new version runs, db needs to be migrated
- strategies for versioning
- try not to break backwards commpat
- be able to speak with old clients
- allows transparent autoupdate
- implement schema migration system
- What's next for gears?
- support for searching & sorting in multiple languages for the DB
- control panel (what's stored, how big, uninstall)
- many worker pool improvements
- http reqs
- timers
- error handdling
- cross-domain
- get involved
- code.google.com/p/google-gears
- mostly cross-platform c++ with some js
- Gears SDK
- "Command-line" db browser
- example apps like gearpad
- simple but not simplistic
- synchronization & conflict resolution had to be written
- integrates with gwt
- dojo offline toolkit supports gears
- has a synchronization toolkit
- gears.google.com
- security
- apps are sandboxed
- "same origin" policy
- domain + protocol + port
- gears asks permission
- Rolf Skyberg - Applying maslow's hierarchy of neeeds to tecchnology
- "Disruptive Innovator" at eBay
- Gave away chewing gum & tchotchkes
- hundreds of slides delivered very quickly -- difficult to summarize
- actions reflect goals
- hierarchy
- survial
- security
- social
- expression
- enlightenment
- a market is a collection of individuals
- web 1.0
- commerce network
- make money
- "security"
- web 2.0
- The more energy users spend looking for the basics (help, login, etc.), the less energy they have to devote to your app
- make products that delight and empower your users
- success goes to the prodduct that fulfills the most needs with the least amount of waste
- "does this make me laugh or help me out?"
- Scott Berkun - Myths of Innovation
- Author of a book: "Myths of Innovation"
- Myth of epiphany
- Magic Moment
- Creative thinking is a process, not a moment
- Lots of work to prepare for the eureka moment
- you can't replicate the moment, because that's not the important part
- All the simple stuff (chairs, etc.) had to be invented the hard way
- "We understand innovation"
- vitruvius, the ten books of architecture
- Source of the archimedes bathtub myth
- used it to make a point about geeks being better than jocks
- The most common pattern of innovation: "nothing comes of it"
- innovation is like (geographical) exploration
- most of your time is spent doing the boring stuff (traveling)
- high failure ratio
- If there's success, nobody talks about the hard work that brought about the success.
- nobody talks about all the work that was done that led to failure
- "People like it when you innovate"
- luddites were, in their mileu, fairly reasonable guys...
- innovation displaces something
- must overcome the sociology of the displacement
- "Diffusion of Innovations" Everett M. Rogers
- "your big ideas" vs. "what people need/want/are ready for/fear/can't resist
- Innovation requires
- allow mistakes to be made
- allow initiative
- BoF - GPL v3 for non-lawyers
- Thursday
- Keynotes
- Ben Fry - The processing Language for Data Visualization
- Processing
- originally for the art & design community
- DSL for doing very snazzy graphics & animation
- processing.org
- processing.org/exhibiton
- Robin Hanson - Cognitive Biases
- People make mistakes...
- Cognitive biases
- People are even more biased than you think
- YOU are more biased than you think, even if you think you're not biased
- Betting markets overcome bias
- Bill Hilf, Microsoft
- Open Source at Microsoft
- Architecting for Participation
- Microsoft's Open Source work
- Rick Falkvinge - Pirate Party
- Founder of the Pirate Party in Sweeden
- 0.63% of the popular vote
- #10 party, #4 among youth
- Economic principles are the real conflict
- copyright is a commercial monopoly
- used to be only in the public sphere
- Now it's in private communication
- to monitor, need to scan everything, even private email
- => Privacy, or copyright? tough choice...
- framing the debate as one of privacy
- Other parties are asking them for help and explanation
- "Political donations in Sweden are not regulated" -- feel free to donate
- piratpartiet.se
- Steve Yegge - Branding
- How to Ignore Marketing and Become Irrelevant in Two Easy Steps
- Branding
- "build it and they will come" - wrong
- new coke vs old coke
- new coke was a huge failure. Why
- Turbo C vs Quick C
- branding matters for SW too
- A brand is a pointer, a placeholder
- How do you make a brand?
- Advertising?
- Not necessarily
- your brand needs to stand for something
- "open source" is a terrible brand name
- State-of Lightning Talks
- Five minute talks by project leaders.
- OLPC
- 10 year old girl gave the talk
- I missed most of it.
- OpenID
- Single Sign On
- Nobody "owns" it
- Lots of uptake
- Will help with distributed social networking
- 120 million open ids
- 4500 sites supporting
- 2.0 is close to done
- libraries for every language
- OpenID foundation - 501c3
- Django
- djangoproject.com
- python web platfform
- like rails
- data backed websites
- community
- django just turned 2
- Many many django sites
- 100 django projects on code.google.com
- satchmo - ecommerce package
- fsf, hp, pownce, scripps/howard, wash. post, curse gaming, tableau
- New since 0.95...
- unicode
- oracle
- newforms package
- testing framework
- databrowse
- django.contrib.webdesign
- django.contrib.localflavor l10n
- new admin i/f coming
- LedgerSMB
- Accounting app for small/mid businesses
- up to a few hundred empl.
- forked from SQL-Ledger in 2006
- doesn't (yet) integrate well with other sw
- many security updates in the last year
- starting to refactor the project
- coming:
- multi-user security
- GAAP compliant
- separation of duties/voucher system
- better maintainability & integration
- www.ledgersmb.org
- Open Solaris
- New installer. After ten years
- Lots of work to make it work on x86 hw
- Generic whitebox hardware really works.
- Wireless, sound, etc.
- using mercurial SCM
- All sun open source proj. will use mercurial
- New director of oper sys. strategy
- project indiana
- making it easier to install/update
- six month release cycle
- one CD install
- ease of use
- pkg mgmt system
- MySQL
- 5.1 is going RC soon
- Falcon is going beta soon
- new storage engine
- faster than innodb on large
- workbench (er tool) going beta
- mysql proxy just released
- mysqlnd php driver
- 5.1 learned from mistakes in 5.0 release
- Won't ship with big pile of bugs
- partitioning
- row based replication
- full text indexing plugins
- repl. support for cluster
- xpath support
- internal task scheduler
- coming later
- hash & merge joins
- uhh, other stuff I missed
- mysql forge - apps & code snippets
- Gentoo
- new feature
- splitting debug info
- cross compl.
- multiple inheritance in profiles
- reverse blocker detection
- slot based dependencies
- New programs
- More distributed devvelopment
- New package managers on board
- now have a spec for package files
- Integrating docs into bash (doxygen for bash)
- rewritten installer
- 15 min install
- acts like other installers
- livecd builder
- Chandler
- PIM for people who use inbox as task list
- shared task lists and calendars
- hackable
- desktop
- python, twisted, wxwidgets
- server
- web client
- rss, webdav, imap, pop, ics, atom, web
- Preview release Aug 2007
- open source & extensible
- write desktop plugins in python
- chandlerproject.org
- Mozilla
- Mozilla Foundation
- Only five people
- Administering grants
- 2 years ago formed a corp
- Most of the empl. work in the for profit corp.
- Corp is owned by the foundation
- "Internet as a Public Good" conference
- Some expansion in the next year
- Firefox is a big part of their focus
- PostgreSQL
- What's new in 8.3
- Devs & admins
- integrated full text search
- xml storage & indexing
- new datatypes - uuid, enum
- index sort order, null placement
- update & delete at cursor posn.
- function costing
- pg_standby
- Improved regex support
- regex_split_to_[arr|table]
- GSSAPI / kerberos
- vacuuming gets easier
- multiple autovacuum daemons
- Heap Only Tuple
- HOT rows are vacuumed page at a time
- performancce improvements - 10% over 8.2
- 80% of the speed of oracle
- async commit
- plan cache
- synchronous scan
- Gnome mobile
- Code, not a consortium or standards body
- user experience
- mobility
- big list of participants
- C, C++, Python
- Bluez, eds, telepathy, avahi, gstreameer, matcchbox, etc
- nokia n800, openmoko, OLPC, vernier labquest
- jeff Waugh is a good speaker
- Derby
- Opensource lightweight Java DB
- Sun & IBM collab
- Bundled in java 6 jdk, and ubuntu feisty
- tracction
- web client store
- middle tier space
- embedded in shrink-wrapped apps
- departmental client/server db
- new features
- security improvements
- performancce
- lang. based ordering
- blobs/clobs
- drop column
- create table as...
- Future (prob. 10.4)
- roles/privs
- scalability
- replication
- table funcs.
- jmx monitoring
- unique where not null constraints
- limit/offset (olap windowing)
- java web start
- Apache
- ASF mission - framework for projects
- 50 top-level projects
- 1500 committers, 220 foundation members
- Subversion
- "CVS done right"
- 43 developers with global write
- 90 with partial write
- both salaried and volunteer devs
- stable dev process
- mid to mild turnover rate (1 full committer changge per year)
- consensus based process
- only had to resort to voting twice
- global committers are in charge, with lots of community input
- recently formed nonprofit subversion corp. for long term interests (trademark)
- quadratic growth
- in 1.5
- merge tracking
- interactive conflict resol
- changelist feature
- sparse working copies
- cyrus sasl
- improved apis
- bugfixes galore
- backwards compat still preserved
- Linux Kernel
- In five minutes
- Great presentation
- daughter showed paper "slides" while he read stuff at high speed
- The slides degenerated into penguin jokes
- why don't you see
- pengins in britain?
- They're afraid of Wales.
- Listed every new feature
- he talked *reallly* fast
- 31000 patches
- 2330 loc per day
- mod'd 2780 loc per day
- 5 major releases
- Next Generation Version Control Systems
- standing room only -- very popular
- Not a good speaker, hard to follow
- Early history
- Subversion
- network via binary webdav proto
- flattened branching
- some copy efficiency
- new "dimension" of properties
- Distributed development
- patch-based
- "tags" simply snapshots of source
- many tools based on this arch, bzr, darcs
- next gen tools
- fully distributed
- every revision traceable
- effficient packs/bundles (rev sets)
- complete, uniform distribution of history
- Benifits of distribution
- no central point of failure
- commit ID assigned in unique ways (hashing, uuids)
- decentralized is inherently transactional
- no enforced "star pattern"
- self-forming clusters of development
- Revision model requirements
- must represent merges to work
- versions must not change by location
- branching is in the direction of cchanges
- Revision data warehousing
- find more info on reasons for a change
- data mining repository
- more than just 'log'
- If you've got the whole repo on your disk, more info available to you
- Good visualization tools
- Demo of git GUI viewer
- Stable development model
- bad changes are easy to drop
- rules
- No single commit can break the build
- every commit is well desccribed
- "bisect" find which commit ruined your day
- reviews are easier
- bazar-ng (bzr)
- git
- unix style c api
- fast
- activve
- mercurial (hg)
- python & C
- fast
- progress & features
- inodes vs content
- git only tracks content, not inodes
- history mining advanced by necessity
- occasionally doesn't detect renames
- inode based ops are slow
- hg & bzr content based
- UUID generation
- hg & git based on checsum of rev & history
- offers "lossless revisions"
- bzr patch IDs are UUIDs
- lightweight branches
- encourages frequent topic branching
- every bug/feature can have its own branch
- git & hg support well, bzr less so
- pragmatic concerns
- bzr & hg concentrate on ease of use
- git not focused on ease of use - "write it yourseelf"
- portability
- hg - win + unix
- bzr installs well on both
- git (written by Linus...)
- speed
- bzr "fastt enough for most users"
- good up to thousands of changes
- hg optimized for "cold cache" - very fast
- git also fst
- disk space
- bzr ok
- hg - very tight packs
- git - very tight packs. 10x smaller than svn
- gcc
- 1.1gb svn checkout, 18 gb repo
- 280 mb git repo
- Python 3000
- Frank Wilson Award for contributions to python community
- Steve Holden
- python community conference
- author of web programmng book
- what is python 3000
- python 3.0
- will be incompatible
- working on it for about a year
- close to defining what it will be
- 41 PEPs submitted
- 12 open
- 10 acccepted
- 10 final
- 8 rejected
- schedule
- 3.0a1 2007-08
- 2.6a1 2007-12
- 2.6 final 2008-06
- 3.0 final 2008-08
- 3.0 will be incompatible
- not even aiming for a usable common subset
- 2.6
- fully backward compat to 2.5
- will have forward compat features
- "py3k warnings mode" detects runtime probs
- 2-to-3 source conversion tool
- does a lot
- can't do dataflow analysis or type inferrence
- mechanical work of conversion
- How to convert to 3.0
- start with unit tests
- port to 2.6
- test with py3k warnings
- fix all warnings
- use 2-to-3 to convert to 3.0 syntax
- test converted code under 3.0
- fix 2.6 code, repeat conversion/test
- release separate 2.6 & 3.0 tarballs
- What to do now
- Start using "modern" features
- sorted()
- xrange()
- int//int
- relative import
- new exception hierarchy
- segregate unicode processing
- Don't try to write syntactic 3.0 code
- Don't go in one step from 2.5 to 3.0
- Why switch to 3.0
- Unicode source code
- Not in standard library - ASCII only
- unicode allowed in identifiers
- default encoding is UTF-8
- Probably to RTL...
- Changing string datatype
- java-like model
- strings (str type) always unicode
- separate bytes type
- must explicitly specify encoding to swtich betw. types
- dropping u"..." prefix
- .encode() str -> bytes
- .decode() bytes -> str
- bytes type
- mutable sequence of small ints (0..255)
- impl as unsigned char[]
- has some list like methods (.extend())
- bytes literals b"ascii"
- New IO library
- stackable components (like java)
- lowest level: unbuffered bytes
- platform dependent - not C stdio
- middle layer: buffering
- top layer: unicode encoding/decoding
- Compatible API
- open(filename) returns buffered text file
- read() & readlines() return strings
- open(filename, "rb") returns buffered binary file
- read() & readlines() return bytes
- Print is a function
- print x , y => print(x, y)
- print >>f, x => print(x, file=f)
- Auto xlation is 98% correct
- String formatting
- now a method
- see pep 3101 for details
- "see {0}, {1} & {2}".format("a", "b", "c")
- Classic classes are dead
- Signature annotations
- in function declaration
- Mostly used for introspection
- language doesn't use it, adddons can
- new metaclass syntax
- class C(B1, B2, metacclass=MC)
- metaclass can provide __prepare__()
- returns namespace dict for class body execcution
- issubclass & isinstancce
- overloadable on the 2nd arg
- used for "virtual inheritance"
- Abstract Base Classes
- voluntary base classes for standdard apis
- Usable as a mixin class (like DictMixin)
- provides abstract methods you must override
- @abstractmethod decorates an abst. meth.
- Standard ABCs will be provided
- collections.py
- io.py
- numbers.py (real, rational, complex)
- Exception reform
- raise E(arg)
- "except e as v" instead of except e, v
- All exc must derive from BaseException
- new exc. attrs
- __traceback__
- __cause__
- set by raise "E from v"
- chained exceptions
- __context__
- set when raising in except/finally block
- Exc's aren't seqs; use v.args
- Int/Long unification
- siingle built in integer type
- slightly slower
- Int division returns a float
- use // for int division
- usable in 2.x "from __future__ import division"
- Octal & binary literals
- 0o777 == octal (instead of 0777)
- 0b1010 == binary
- itera{tors,bles}, not Lists
- range() behaves like old xrange()
- zip(), map(), filter() return iterators
- dict.keys(), .items(), .values()
- Dictionary Views
- inspired by java collections
- remove iter[keys|items|values]()
- repl by .keys() .items() .values()
- These return a dict view
- not an iterator
- lightweight obj that can be iterated repeatedly
- .keys(), .items() have set semantics
- .values() has colllection semantics (supp. iter() & len())
- Default Comparisons changed
- default == compare against identity (same as 2.x)
- <, <=, >, >= raise TypeError by default (new)
- exammple [1,2,""].sort raises TypeError
- Nonlocal statement
- like "global", but only for outer scope
- useful for closures
- new super() call
- pep 3135
- super() now works -- digs out from frame
- Set Literals
- {1,2,3} same as set([1,2,3])
- no empty set literal, use set()
- no frozenset literal; use frozenset({...})
- set comprehensions - maybe even dict comprehensions
- And more...
- Prototype
- Amy Hoy
- Javascript is a real language
- everything in js is an object. Everything.
- Even functions are objects
- javascript relies heavily on functions
- objects
- var newObj = {}
- newObj.foo = "bar"
- obj's are kinda like hashes
- how does it work w/o clases?
- It's a prototype based language
- prototype ~~ template
- all obj's have a prototype attr
- mess w/the prototype, and it changes all the object instances
- Most of the preso was code...
- http://slash7.com/ to download the slides
- Prototype Library is cool
- allows Class creation
- modeled after ruby
- the $ and $$ methods
- useful form methods - focus, activate, deactivate
- Really easy ajax
- insert the result directly into the dom
- supply callbacks for failure, success, etc.
- Programming with dynamic confidence
- Matt Harrison
- http://panela.blog-city.com/
- Dynamic langs let you write less code
- python is executable pseudocode
- easier to read
- easier to review
- less to test
- less bugs
- Not a very good or compelling talk. Lesson: Don't just read your talk.
- Friday
- Keynotes
- Phil Rosedale, Linden Labs
- Second Life
- It's not just a game
- Voice chat is coming
- Presence is an important part of second life
- To fully realize its potential, it needs to be fully open
- They're going to open source the server
- Network effects (power law) means you want to open source
- Very serious about open source
- Jimmy Wales, Wikia - Open Search
- Wikia - Open search
- Every human has access to the sum of human knowledge
- wikia is everything else -- all the other books in the library
- Wikia is a separate organization, not related to wikipedia
- Look at the benefits of non-proprietary web
- See how cool wikipedia is, compared to Britannica
- ==> We need a non-proprietary web search engine
- building the stack
- search tools
- public algorithms for ranking
- publicly available crawl of the web
- all open source
- http://search.wikia.com/
- Jeremie Miller is working on this
- Founder of Jabber
- Invented XMPP
- Shares Wales' philosophy
- basic principles
- Transparency - openness in systems & algo's, content & APIs
- Collaboration - Everyone can contribute in soome way; strong community focus
- Quality - Improve the relevancy and accuracy of results and the searching experience
- Privacy - The holy grail of privacy protection
- Big announcement - Just acquired Grub from Looksmart
- Releasing Grub under a free license
- Grub is a distributed crawler - like seti@home
- But how do you deal with scammers and spammers?
- Security thru obscurity isn't the answer
- Open algo's are the right path
- The "restaurant analogy"
- Design a restaurant
- Serving steak
- customers will have knives...
- knives are dangerous
- so, keep everyone in a cage
- This is stupid.
- The real world doesn't work that way, online communities shouldn't either
- Simon Wardley, Fotango - Commoditization of IT
- Commoditisation of IT and What the Future Holds
- Funny guy, good talk, but hard to take notes
- commoditisation == what was hot is now boring
- When it's new, it's a competetivve advvantage
- When it's a commodity, it's just a cost of doing business
- Saas is about commoditization
- Open source is the only way to get to a utility market for IT infrastructure
- Nat Torkington
- Whipping thru points quickly
- Linux is 16 yrs old, it's a teenager
- More funny that you can't takes notes on
- James Larsson - Pimp my Garbage
- hardware hacker
- Batshit insane.
- "Leather Fetish Pong"
- Michael Peters - Updating your testing toolbox
- Three types of testing
- During development
- performance
- regression (smoke)
- During development
- Firebug! - firefox plugin
- Safari 3 will have web inspector (like firebug)
- LiveHTTPHeaders
- another ff plugin
- all http headers for all reqs
- Can save all headers to a file, then run grep on that
- view formatted source
- FF plugin
- state of the DOM right now
- of course, firebug does this too
- But this allows you to save a snapshot
- PageDiff
- FF plugin
- Capture the page *now*
- Diff versus some other snapshot
- meld - visual diff tool for linux
- Performance
- Load time analyzer
- FF plugin from google
- gives js execution time, which firebug doesn't
- Yslow
- yahoo thing like load time analyzer
- gives tips and hints
- benchmark.js
- gfx.neohub.com/benchmark
- compare similar techniques to find fastest
- compare browsers
- regression
- selenium (but see windmill)
- selenium-rc
- selenium server
- Can stop/start browser
- selenium core, runs inside browser
- selenium IDE
- combine IDE & RC to allow many folks to make goood tests
- http://windmill.osafoundation.org/
- http://windmill.osafoundation.org/trac/wiki/MissionStatement
- Continuous integration testing
- smolder
- uses TAP - Test Anything Protocol
- simple & line oriented
- 20 yrs old
- language agnostic
- r0ml - An Open Source Lexicon
- SW is the trivium of the 21st century
- programming is rhetoric
- Use archaic words for modern concepts, instead of pressing modern words into places they don't really fit.
- Much erudition.
- You had to be there...
- Closing Keynote