We have a home-grown templating system at work, which I
intend to dedicate an entry to some time in the future. We originally
wrote it in Python 2.2, but upgraded to Python 2.3 a while ago and
have since been evolving our code in that environment. Today I found a
need to load the most recent version of our templating system on to a
small, long neglected application that had been running the original
version ever since it had enough features to be usable.
Unfortunately, this application was running on a server
that only had Python 2.2. Installing Python 2.3 would have been
somewhat more painful here than on other servers we run for reasons I
won't go in to, so I decided to have a go at getting our current code
to run under the older Python version.
In the end, I only had to make three minor changes, all at
the top of the file in question.
I added from __future__ import
generators as the very first line of the file. We use
generators (with the yield statement) in a
few places - this feature was only properly added in Python 2.3, but
was made available in Python 2.2 as a "future enhancement" through the
aforementioned obscure import.
I added True, False = 1,
0 on the next line down. Surprisingly, Python 2.2 had no
support for a boolean type and instead used a test for non-zero
instead. The above line defines constants that behave enough like
Python 2.3's True and False to avoid any problems.
I defined an enumerate
function, which was introduced for real in Python 2.3. Here's the code
I used:
def enumerate(obj):
for i, item in zip(range(len(obj)), obj):
yield i, item
All in all it only took around ten minutes to put the
above together, after which the script worked just fine. It was
interesting to see how our code had grown to rely on Python 2.3
features without us realising it.
While bloggers were a novelty at the DNC in Boston and were less of
a story in and of themselves during the RNC, the quality of commentary
and the number of breaking stories during the RNC show that bloggers
are starting to hit their stride. The toppling of Ed Schrock, two-term Republican congressman
from Virginia, after investigative reporting from a blogger showed the
growing political power of citizen journalism. The use of blogging
technology during protests and also from delegate phonecams on the
convention floor show that this pushbutton publishing technology is
filling an important journalistic niche.
The convention wrapped up as first President Bush spoke and then Senator Kerry, in an
unusual move,
followed from a campaign rally in Ohio. Bloggers at the
convention formed into two primary camps: mostly conservative RNC
credentialed bloggers, writing from Blogger's Alley in the Felt Forum,
outside the main convention hall, and a group of mostly liberal
bloggers that gathered at The Tank, a performance space in midtown
Manhattan. Of course, there were many other bloggers from all over
the country who were adding to the conversation. Top stories from the
final day of the convention include:
Democrats divided?That's what Dick
Morris wrote, in the New York Post's opinion column. " In an
incredibly striking contrast, Bush voters are united on virtually all
the questions that divide the Kerry vote. So Bush can advance his
agenda with impunity while taking aim at Kerry voters who are
antagonized by their candidate whenever he has to choose a position."
Not all liberals agree. Lambert from Corrente wrote, "If Kerry can get people to listen and
think, Bush is toast."
Zell Miller challenges Chris Matthews to a duel Chris
Matthews had a heated exchange with Zell Miller after his speech
Wednesday night. Here's the
clip in Windows Media Format. Media Bistro has more details, and ongoing
commentary on the Miller speech is here.
Word frequency analysis The New York Times reports via an
interesting graphic the frequencies of
different words used during the DNC and the RNC. Micah L. Sifry performs the
same analysis on Bush's acceptance speech.
President Bush's speech Similar to the DNC, Conservatives
went quiet after the final speech of the convention, but the Technorati
Attention Index™ showed a burst in anti-Bush postings after
the speech ended. this is probably because of the "satisfaction
effect" - that conservatives are happy with the climax of the
convention, while liberals are so unsatisfied, they are vociferously
blogging. William
Saletan commented after the speech, "The 2004 election is becoming
a referendum on your right to hold the president accountable."
Dave Winer wrote, "I'm glad Kerry responded to the Republicans.
Maybe it's time, though, to consider a new format, where they do a
Democratic talk show, with Mario Cuomo, Wesley Clark and James
Carville reviewing the Republicans. They require serious rebuttal.
Don't pretend they're going to roll over and let the Dems win. Fight
fire with fire. It's good that Kerry has shown his anger. It's not
good that he trailed off into his standard incoherent stump
speech."
George Bush's National Guard Service questions Two
important updates in the George Bush Alabama National Guard story -
Salon reports on the widow of a Bush family confidant who says that
Bush did no National Guard service in the spring of 1972. And Ben
Barnes, the former Texas official who says he pulled strings to get
George W. Bush into the Air National Guard will be appearing on 60 Minutes.
The GET CREATIVE! Moving Image Contest
has gone the way of 2003. Many thanks to those of you who
submitted entries by the New Year. Our panel
of expert
judges is now sorting out the winners. Stay tuned!
The heat turned up in Manhattan today, as speeches by Zell Miller
and Dick Cheney provided red meat to party faithful, and protests
outside the convention hall increased in intensity and number.
After-hour parties abounded, but behind the scenes, the effect of money in
politics only got rarely
reported. More from on and off the floor:
Reactions to Zell Miller: The angriest spee
ch of the convention, seemingly came from Zell
Miller, as Glenn Reynoldsnotes, "It's
funny that the purest voice of Jacksonian America at this Republican
convention -- in fact, at either convention -- comes from a
Democrat.". Begging to Differ wrote, "Zell Miller was more effective
tonight than any Republican could have been. John Kerry will have to
answer, if he can."
The two Cheneys - diverse reaction from liberals and
conservatives The Technorati
Politics Attention Index™ saw heavy blogging from both the
left and right regarding Vice President Dick Cheney's speech tonight.
Conservatives like Si
ster Toldjah remarked, "A SOLID performance!". Ann Althouse wrote, ""He lays it out. And you
can take it or leave it. He's not doing the twist. He's Dick Cheney."
Liberals felt differently. Josh Marshall described a
common liberal perspective: "My first thought was, bold
words for a man whose office is the subject of an on-going criminal
inquiry. But apparently that’s not the subject of polite
conversation."
Arnold gets fact-checked The liberal blogosphere has been buzzing about Arnold
Schwartenegger's speech last night. Numerous bloggers pointed out
that while Arnoldhasspoken of Nixon debating Humphrey
in 1968, the debate never happened.
Protest Vignettes Outside of the convention, New York is
filled with protests, from big, to small, to personal. Inside the
convention hall, AIDS demonstrators disrupt
ed a Republican youth gathering on the floor, unveiling an anti-Bush sign and disrupting a speech by Andrew Card. Andrew Sullivan reports on a
particularly rude
protester, while Peter Northrup wrote "of a self-proclaimed liberal [that] was spending her day,
not protesting with angry slogans, but sitting in front of an empty
chair and a sign that invited conservatives to sit down and talk with
her about the future of the country." Ratherbiased has pictures of a
protester
being removed from tonight's Cheney speech.
Blogging a talk-show appearance: Michelle Malkin blogs her side of the
story after appearing on MSNBC's Hardball. First-hand accounts
like this are shifting the fulcrum away from show hosts and producers
who often attempt to unfairly create controversy. Malkin's account,
while completely subjective, allows her to get her side of the story
out to the world, just as the FCC's Mi
chael Powell or Mark
Cuban, the owner of the Dallas Mavericks, use their blogs to speak
to the world in a timely, unedited fashion.
SID Wrap-Up
SID Wrap-Up06/02/2004 03:52 AM The "Big Picture"' at the Society of Information Display show was
exactly that--big picture screens. With Intel about to unveil cheap
and plentiful LCOS chips, the display market is in for a wild ride
over the next year.
G-Wrap 1.9.1
G-Wrap 1.9.107/28/2004 03:08 PM A wrapper generator.
First off, a roundup of the best (and worst) coverage of webloggers
in the mainstream media: Note - I'm going to leave off weblogs penned
by pros, like the excellent CNN
weblog (nbote: I'm here at the DNC helping CNN make sense of the
blogosphere). Wired News' Adam L. Penenberg covers the eclectic mix of reporting going on from the
convention floor.
Many webloggers also were on the nightly news programs, and
posted
Arnold, the Bush sisters, voting machines, Kerry Campaign shakeup
rumours, criticism of RNC bloggers, and censorship of Supreme Court
decisions were on the minds of bloggers today as the second day of the
Republican National Convention wrapped up.
Arnold's speech polarizing California governor Arnold
Schwartzenegger provoked strong reactions from both Liberals and
Conservatives. Lots of conservative bloggers swelled with pride at
Arnold's speech, according to the Technorati Conservative Politics
Attention Index™, such as Jay Reding, who wrote, "His story of living under
the shadow of Communism is an important reminder of why America is
still admired across the globe." Technorati's Liberal Politics
Attention Index™ showed liberal bloggers reacting strongly to
Arnold's jabs at Democrats: Luis Poza
wrote of the Governor's speech, "full of sound and fury and signifying
nothing".
The Bush sisters Jenna and Barbara Bush's speech provoked
jeers from authoritative liberal bloggers, and Conservatives largely
remained silent on the speech. Keith Berry wrote, "Up until now,
I've never really felt bad for anybody with the last name Bush, but
watching the Bush twins at the GOP Convention was was just so sad I
was nearly brought to tears. It was a train-wreck. An honest to God
train-wreck." On Dummocrats.com, a conservative
blog, James K. Hat wrote, "This convention has been great so far.
(Edit - great until the Bush daughters spoke... what in the world was
that?)", and the Washingon Monthly rreports on other conservative reactions.
Revelations on an easy way to hack voting machines made
their way through the blogosphere today, in this article on Bev
Harris' blackboxvoting.co
m, noting that the Diebold GEMS central tabulator, used in many
over 30 states, contains a stunning security hole.
Kerry campaign shakeup rumoursMickey Kaus reports on the
rumours, starting in the Washington
Prowler, that Kerry will shake up his campaign staff. This was
later covered by MSNBC, and CNN
a>.
Blogger's Corner events, and critiques General Tommy Franks
came by the
bloggers' area at the RNC for a photo
opportunity, and while there announced his support for President
bush, a prelude to his more official annoucenet on Sean Hannity's
radio show. Salon.com publishes a
biting article on the actions of the RNC credentialed bloggers.
Redactions of Supreme Court decisions in Patriot Act
suit?The Memory Hole
reports on the "blacki
ng out" of passages quoting US Supreme Court decisions in the
ACLU's suit against the Justice department. This could be a breaking
story in tomorrows news.
Jesse Jackson: Both liberals and conservatives weighed in
on Jackson's speech, and the overall reaction was negative. Jesse
Taylor of Pandagon opined,
"Jesse Jackson's onstage now...and not really impressing. He just came
off a Wyclef Jean performance, and the speech is just...weird. The
more inflammatory elements of the Democratic Party are not coming off
well in this new "hope springs eternal" message group."
More on Obama-mania:Positive reports keep coming in on
Barack Obana, soon-to-be-senator from Illinois. David
Weinberger: "The good news for Hillary is that she might get State
Department when Obama is President in 2012.". Thomas F. Schaller at
Gadflyer marked this as a
turning point: "That said, at some future point we will realize
that last night marks the point where Obama eclipsed Jackson as the
standard-bearing voice of black Democrats. Sorry, Jesse: That
unofficial title has finally been passed to a new generation."
Al Sharpton: Sharpton proves again that he is a masterful
speaker. Dave Winer wrote in
an email, "Sharpton was inspiring, had the crowd on its feet 18 times.
A soul revival. Killer speech." Dave Johnson had sympathies for the man to follow
Sharpton: " Who did Bob Graham piss off, that he has to follow Al
Sharpton?" Other liberals were not as kind, and saw hypocracy in Sharpton's speech: "I just heard Al
Sharpton address the convention and I was rather astounded by the
glorious reception he received. 'Our vote is not for sale,' he
thundered. This from the man who leased his entire campaign consultant
named Roger Stone. The only line missing from Sharpton's speech: 'I
have a scheme.'", wrote Marc Cooper.
Best delegate blogging from the floor award: Goes to
19-year old Karl-Thomas
Musselman, the youngest delegate from Texas. His reporting on Kucinic
h's, Sharpto
n's and Graham's speeches were refreshing and showed his
excitement at being on the floor, but be sure to read his earlier
entires
revealing more behind-
the-scenes of a delegate's life.
John Edwards: Personally, I wan't terribly impressed by
Edwards' speech tonight. Perhaps it is because he has laryngitis, or
because he was tired, but his oratory didn't live up to admittedly
high expectations. Others differed in their views. Dave Pell at
Electablog wrote,
"Edwards owned the crowd and the night and delivered just what this
pundit ordered. A healthy infusion of the two Americas speech that
rings so clearly true to the ears of any who open their eyes to see.
". And Alan at The Command Post weighed
in: "The fanfare for Edwards is genuine adulation … the star
appeal is palpable, and the crowd won’t let him go. Whatever
happens in this election cycle … the next time Edwards runs in
the Democratic primaries, he’s not finishing second." On a more
humorous note, he
added, "Thank Fod He Didn't Dance ... He didn’t try to do
that stupid little on-stage dance that white politicians always try to
do."
Blogs on Media on Blogs: First off, a great post on what blogging the
convention is like from Visicalc author Dan Bricklin. Wired News'
Adam L. Penenberg covers the eclectic mix of reporting going on from the
convention floor. David Weinberger takes the
media to task as well. His takeaway? "Objectivity is a form of
rhetoric."
ApacheCon wrap
ApacheCon wrap12/19/2004 03:43 PM ApacheCon was a lot more fun than I had expected. Lots of people to
meet and see again, it was great. Having half the talks be about
java-something limits the selection a bit for me, but there were quite
a few httpd or general "web stuff" talks that were fun. My talk was in
one of the big rooms and it was pretty packed, thanks for coming
everyone! :-) The questions I got at the end of the talk and...
No wrap puzzle03/22/2005 03:37 PM Anybody know what this page has decided to stop wrapping? My other
comment pages seem to be fine......
PMA 2004 Wrap-Up
PMA 2004 Wrap-Up02/19/2004 04:55 PM The Photo Marketing Association trade show (usually referred to as
"PMA") is one of the photographic industry's largest and most
important meetings, a platform used by most companies to release their
newest products to the public. This year's gathering, held at the Las
Vegas Convention Center, proved to be one of the most vibrant and
exciting in the show's history, with the promise of digital
photography's power and affordability finally matched by the range of
products available to both the consumer and professional alike.
I had a lot of fun at the Spectrum Conference, and overall it was a
great learning experience. Cory's
notes over at BoingBoing were better than actually attending, as
he whittled down hours into a few choice paragraphs and quotes. While
some of the legal details sailed over my head, there were interesting
discussions about technology and implementation issues. Much of the
debates revolved around taking either a commons approach, where anyone
can do anything with the spectrum and we'll think of ways to regulate
it as needed, and the property approach, where segments are auctioned
off to the highest bidder to own and do whatever they want. The moot
court near the end of day one pitted one group vs. the other, but
overall was a mishmash of ideas. I'm surprised the commons folks don't
use more examples from all over the world, where unlicensed spectrums
seem to reign supreme, and I was surprised at the weak arguments
presented by the property folks who claimed there would always be room
in a profit-driven model for a small commons.
The crowd split on the approaches, with every technologist,
software creator, and wifi-loving laptop owner siding with a commons
approach, while the straight laced older generation of washington
policy types seemed big on the property side. Numbers wise, the
pro-property folks were definitely in the minority, and from a quick
visual survey of the room, I'd say anyone born after the dawn of unix
time (Jan 1, 1970) was a commons supporter, so my guess is that
property's days are numbered.
Garçon! The Check, Please, and Wrap Up the Bordelais!
Garçon! The Check, Please, and Wrap Up the Bordelais!01/26/2004 02:57 PM France's crackdown on unsafe driving is discouraging diners from
uncorking that extra bottle, but restaurants have a solution: the wine
doggie bag.
England wrap up series win06/07/2004 07:20 AM England beat New Zealand by nine wickets at Headingley to clinch a 2-0
Test series win.
G-Wrap 1.9.6 (Default branch)
G-Wrap 1.9.6 (Default branch)04/14/2005 12:56 PM
G-Wrap is a tool (and Guile library) for
generating function wrappers for inter-language
calls. It currently supports generating Guile
wrappers for C functions.
Changes:
This release adds support for the size_t and ssize_t datatypes.
England wrap up easy win
England wrap up easy win08/01/2004 11:51 AM Ashley Giles spins England to victory as they beat West Indies by 256
runs to retain the Wisden Trophy.
ActiveXbox.com: E3 2004 Final Wrap Up05/20/2004 11:25 AM One intriguing game being shown for the first time at this year's E3,
albeit only as a non-playable video, was Dead Rush, a new action title
from Activision. With a story described by one of the developers as
being heavily influenced by Escape From New York, and a heavy focus on
vehicular combat, Dead Rush looks like a fast-paced thrillfest. The
game features on-foot combat, but the real excitement starts when you
step into one of the vehicles. As you speed your way across the game's
city setting, you will find your car being besieged by monsters on all
sides, forcing you to drive defensively in an effort to make it out
alive. Look for more details on this game soon.
Linux Bangalore/2003 Wrap Up12/03/2003 06:24 AM I was gonna write a summary of day 1 and day 2 separately but didn't
have time. Damned jet lag and cold and stuff. Anyway, I'll start out
by pointing you at a few day #1 write-ups: Atul Chitnis and Yahoo's
very own Kalyan Varma. Day #1 When we arrived at the conference on day
1 (Tuesday), I was surprised by how many folks showed up. There was a
massive line. Thousands of people. According to what I've read,
more...
2 Hurt in Prankster's Plastic Wrap Trap (AP)07/17/2004 07:41 PM AP - A prankster tightly wound plastic wrap around traffic poles
across a two-lane road, causing a motorcycle accident that injured two
people.
Grok Description matches for Wrap your mind around Python GrokA matches for Wrap your mind around Python
Crocheted Lorenz attractor
Crocheted Lorenz attractor12/26/2004 09:03 PM Mark Frauenfelder:
"Dr Hinke Osinga and Professor
Bernd Krauskopf, of Bristol University's engineering mathematics
department, used 25,511 crochet stitches to represent the Lorenz
equations." Link
MySQL for Python
MySQL for Python05/18/2004 01:27 AM MySQL-python development roadmap revised
MySQL Connectivity With Python
MySQL Connectivity With Python09/12/2002 06:16 PM Python comes with a bunch of different modules that allow you
to add new capabilities to your Python scripts. One of the more useful
ones is the MySQLdb module, which allows you to execute SQL queries on
a
MySQL database through your Python application. This article
demonstrates basic usage of this module with simple examples and
illustrations.
Python 2.3
Python 2.310/28/2003 11:06 PM Python 2.3 was released
yesterday... and not a moment too soon. I was just swearing under my
breath about this sort of nonsense:
>>> cosmos = technorati.cosmos('http://diveintomark.org/')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "technorati.py", line 214, in cosmos
xmldoc = minidom.parseString(rawdata)
File "/usr/lib/python2.2/site-packages/_xmlplus/dom/minidom.py",
line 1605, in parseString
return expatbuilder.parseString(string)
, in parseString
return builder.parseString(string)
File
"/usr/lib/python2.2/site-packages/_xmlplus/dom/expatbuilder.py",
line 187, in parseString
parser = self.getParser()
File
"/usr/lib/python2.2/site-packages/_xmlplus/dom/expatbuilder.py",
line 119, in getParser
self._parser = self.createParser()
File
"/usr/lib/python2.2/site-packages/_xmlplus/dom/expatbuilder.py",
line 734, in createParser
parser.namespace_prefixes = True
AttributeError: namespace_prefixes
OS X users, don't be discouraged by the mention of there being no
MacPython version yet or daunted by the task of compiling it from
source -- MacP
ython 2.3 lives and is just a few glorious GUI installer clicks
away.
Python-SIP 4.0.1
Python-SIP 4.0.107/06/2004 06:45 AM A tool to generate Python bindings from C++ code.
Python-SIP 4.1.1
Python-SIP 4.1.109/24/2004 03:30 PM A tool to generate Python bindings from C++ code.
Another look at PHP and Python02/10/2004 02:46 AM Postscript: Some people have got the impression from this article
that I am moving away from PHP. That is far from the truth. I will
continue to use PHP extensively today, tomorrow and for the forseeable
future.
I find Python harder than PHP.
It could be because we are programming multi-threaded networked
servers in Python, and that
could be inherently harder than coding dynamic web-sites.
Another reason could be lack of familiarity with
Python. For example, I couldn't find the equivalent of htmlspecialchars
and other functions, so i had to roll my own.
Despite all these issues, we are continuing to develop this in
Python because (AFAIK) PHP does not have stable networking frameworks.
So what do I like about Python?
- Neat Syntax
The use of indentation for compound statements discourages deep
nesting, and thus more modular code.
- More Safety Checks
In PHP, when you search using a regular expression, an associative
array is returned.
In Python, a typed object, "match" is returned when a regular
expression search is performed,
and not a generic dictionary. You cannot perform arithmetic on
strings, an explicit cast is required; neither
can you concatenate numbers with strings, explicit typecasts are
needed.
- Supports Multi-Threaded Apps
There exists a global lock in Python that prevents multi-threading
from working effectively on multiple processors - nevertheless Python
has reasonable thread support and allows me to develop reasonably
responsive servers.
- Python's Compiler is Standard
Python has a standard compiler and byte-code format. There is no
such standard in the PHP world, and
most ISP's don't support Zend or Turck MMCache encoded PHP. Better
still, a debugger is included in the package too.
- Python Fully Supports Unicode
Python 2.0 and later has full support for unicode. For example to
convert big5 to unicode is the simple:
The only issue i had with the unicode support is that it doesn't
come with a complete set of double-byte decoders (eg. big5, gb). After
a 20 minute google search, i found this set of python cjk decoders.
And what I dislike about Python
- Python Is Not Rapid Enough?
I think that PHP is a better tool for rapid application
development, especially for web-sites. Minor type issues are handled
for you transparently in PHP. In Python, once a variable is set,
stricter type-checking is performed on most operations.
So you can argue that Python is safer. But PHP coding is definitely
more rapid.
Another thing i dislike is that Python's import/load facility does
not check .py file modification dates. If i modify a .py file,
Python's run-time environment will not recompile it until i restart
Python, or perform a reload manually from the command-line
interpreter.
- Database Access
Python does not have official database drivers, and you have to
select and download these drivers
yourself. It's easy to get it wrong. For example, only after coding
the adodb_odbc module using PythonWin
odbc extension did i
realize how awful PythonWin odbc was. I then found the mxODBC
extension - unfortunately the mxODBC requires commercial
licensing ($75 per CPU).
- Python is Not That Popular
Popularity is relative. There are lots of Python programmers - but
there are perhaps 3 times more PHP programmers than Python ones. In
Malaysia, the ratio of PHP to Python programmers is probably much
worse (10:1?). And there are many training centers offering PHP
courses. AFAIK, there are no centers in Malaysia offering Python
training.
A quick search in monster.com reveals the following (numbers might
change over time):
PHP: 131 jobs
http://jobsearch.monster.com/jobsearch.asp?q=php&re=0&sort=rv&tm=&fn=6
60&vw=b&cy=US&brd=1%2C1862%2C1863
Python: 41 jobs
http://jobsearch.monster.com/jobsearch.asp?q=python&re=0&sort=rv&t
m=&fn=660&vw=b&cy=US&brd=1%2C1862%2C1863
XML with Xen and with Python12/19/2004 03:53 PM Here is a comment on the paper "Programming with Circles,
Triangles and Rectangles" by Erik Meijer et al. Perhaps interesting
for XML programmers.
Python 2.3.3
Python 2.3.312/30/2003 05:13 PM A high-level scripting language.
Python-SIP 4.0
Python-SIP 4.006/23/2004 12:48 PM A tool to generate Python bindings from C++ code.
Python-SIP 3.9
Python-SIP 3.912/08/2003 04:42 PM A tool to generate Python bindings from C++ code.
It looks like people haven’t been slow to get using
Nokia’s Python project, and Matt
Croydon has been collating projects and news on his Pyth
on for Series 60 wiki page.
Seeing as there’s no
central clearing house(other than Forum Nokia) for Nokia Python
projects right now, I reckon this is as good a focal point as
any.
The official public release of Python on Series
60 just came out on the 22nd of December. You can get it on Forum Nokia site.
Comment - TrackBack
Python vs Parrot
Python vs Parrot12/17/2004 06:34 PM In many ways, it seems like Python and Parrot are from different
planets. In Python, the general approach seems to be to reduce
everything possible to a canonical form as early as possible, and then
deal with everything consistently. In Parrot, the general approach
seems
to be to leave everything in its original form as long as possible,
and
then deal with everything separately. ...
Python SOAP12/02/2003 02:41 PM Transition to sourceforge.net
The State of the Python-XML Art
The State of the Python-XML Art09/19/2002 01:49 PM In the first installment of our new Python-XML column, Uche Ogbuji
offers a bird's-eye tour of the Python-XML world, including books,
discussion forums, and software packages.