Domain: divmod.org
Stories and comments across the archive that link to divmod.org.
Comments · 17
-
Re:ORM == good
Do you know of Axiom? Storm seems to have an API very much like it. Storm looks great, well done!
http://divmod.org/trac/wiki/DivmodAxiom -
Re:LAM-PPython has a for loop, as you're probably aware e.g:
list = ['a', 'b', 'c']
will print:
for item in list:
print itema
But it doesn't have the C initialisation syntax. That's not necessarily bad, it's just "not C". It's also great to be able to say "for each object in some list" rather than "for each index into the array" - it makes your code cleaner. But you can index into lists of you really want.
b
c
More details here (from the book Dive Into Python - it's both free and very good!):
http://www.diveintopython.org/file_handling/for_lo ops.html
Also, you'll find as you get more experienced with python, you will use lists in interesting ways more and more where you would once have used for loops. Not only is this more elegant, but more efficient in python too.
Here's a good example:
http://divmod.org/trac/wiki/PotatoProgramming
And the section on lists from the aforementioned book:
http://www.diveintopython.org/native_data_types/li sts.html
If you still want to use ending conditions however, you can use while statements instead or break out of the loop on some condition. I'm not that experienced a python programmer.. there may be better ways. -
Re:Existing Online Spreadsheet Applications
The big difference between the existing competitors in the online spreadsheet market is whether the work is done on the client or the server.
Disclaimer: I built http://numbler.com/ what I believe was the first real-time collaborative web based spreadsheet (if being the first
really matters with google in the market).
At Numbler we made the decision to have the calculation work on the backend with the understanding that this would be perceived as slightly slower than a javascript implementation. However, this enables us to do real-time updates to other clients via COMET style HTTP requests (for the technically minded, we use the athena toolkit from divmod nevow, http://divmod.org./ The upside side of a server based implementation is the collaborative capabilities that you can build into your application. The downside is responsiveness. However, if you want a highly responsive spreadsheet application you probably should be using a desktop package anyway, excel, gnumeric, OO, etc.
Neither Numbler, editgrid, irows, google, or anyone else is going to be a serious competitor for someone who needs to do real number crunching (and hopefully that should be obvious). However, if you want to co-edit your spreadsheets with other people on the internet web-based (and server side calc) is truly the way to go. -
Re:Many using SQLite instead.
For example, if you're looking to build an Object Storage Database, SQLite and HSQL would both be terrible choices.
Axiom is a Python object database built on top of SQLite, and it is claimed to be pretty awesome. -
Re:Some ideas
> 1. Python. It took me a while to get past the indentation-as-block-structure
> thing (I still think it was a mistake)
Your comment got to 5, so somebody's got to say it. Significative indentation is nothing less than a stroke of genius. You indent your code anyway, right? So why is everybody forced to keep track of *two* kinds of block delimiters at the same time? Get rid of the stinkin' parentheses, and be done with it!
The rest of #1 is spot on, however.
> 2. If you are doing any sort of web work, you will probably have to do a
> little (a lot?) PHP.
Why on earth should he *have* to use such an inferior language? Python has lots of fine tools for web work. I advise using Twisted (http://twistedmatrix.com/). Its asynchronous event-based concurrency model may look peculiar at first, but being able to avoid the evil preemptive multithreading is priceless. And there's *lots* of Internet protocols in there for the taking!
> 3. AJAX. It's worth a look if you want to stay within the browser's window.
> And that means you should get good Javascript/CSS/XML/HTML books.
Javascript can get messy: AJAX needs all the hiding it can get. Nevow (http://divmod.org/trac/wiki/DivmodNevow) has great support for it in the Athena package, based on Mochikit. See the other Divmod tools, there's great stuff in there.
> 5. If you are picking up a DBMS, the obvious choices are MySQL and Postgres.
Do yourself a favor and use PostgreSQL, or SQLite. MySQL has a dubios history, and is often used together with PHP, which is similarly quirky.
It bears repeating: you wanna have fun, and at the same time learn a powerful language? Use Python, there's nothing quite like it around. I've been working with it for six years now, and it's been fun almost every day. :-) -
Shtoom!
This site follows Skype's work with encryption.
http://www.pgpvoip.com/
Zimmerman's work with encrypting VOIP is with this client:
http://divmod.org/projects/shtoom
Forget about Skype ever being secure. It already has an encryption layer but since they've made "arrangements" with law enforcement, it cannot be assumed to give you total privacy.
If you want truly secure VOIP, follow Shtoom's progress. It's as close as it gets right now. -
catch up and be open (SIP standard compliant)
VoIP not only needs to catch up but also be open like email, and unlike the divided IM space.
Unfortunately Skype is not the application which connects to an open network.
Only applications like Gizmo http://www.gizmoproject.com/ and many other ones (which I don't use) connect to the International Standard-compliant Protocol known as SIP.
If you want voice chat (VoIP) on Linux then you have a good selection too (I don't know which are SIP compliant and which are not though):
http://www.phonegaim.com/
http://cockatoo.mozdev.org/
http://www.gizmoproject.com/
http://www.linphone.org/
http://www.wirlab.net/kphone/
http://www.minisip.org/
http://www.sflphone.org/
http://www.sipfoundry.org/
http://www.twinklephone.com/
http://www.openwengo.com/
http://yate.null.ro/
http://www.divmod.org/projects/shtoom -
IM for linux, VoIP for linux
In addition to the number of good IM clients for Linux (especially GAIM), if you want voice chat (VoIP) on Linux then you have a good selection too: PhoneGaim : http://www.phonegaim.com/ ( http://cockatoo.mozdev.org/ ( http://www.gizmoproject.com/ ( http://www.linphone.org/ KPhone : http://www.wirlab.net/kphone/ Skype : http://www.skype.com/ ( http://www.minisip.org/ SFLphone : http://www.sflphone.org/ SIPfoundry : http://www.sipfoundry.org/ Twinkle : http://www.twinklephone.com/ openwengo : http://www.openwengo.com/ Yate : http://yate.null.ro/ shtoom : http://www.divmod.org/projects/shtoom Best to get one that connects via 'SIP' and is entirely standard-compliant, then you can connect to anyone on other standard networks (except those in closed networks like Skype(???)).
-
Twisted/Nevow/Axiom is better!
If you want similar functionality with some more capable tools, have a look at Twisted with Divmod's Nevow & Axiom. Similar functionality but with a a whole lot more to boot.
-
Re:Polyglot
And for the Python programmers, we have LivePage, as part of the Twisted framework, distributed with Nevow.
http://www.divmod.org/projects/nevow
It attempts to do what AJAX does, albeit at a simpler level. -
Bayesian AIM bot
I love Bayes stuff - and there's a very nice Python module written by divmod.
I was playing around with AIML to cobble together a basic chat bot when I realised that I could use a Bayesian parser to radically cut down the amount of AIML that I needed to write. AIML is an XML style of chat bot repsonses, it's clever in that it's highly recursive but the downside is that you need to create a rule for every eventuality.
By adding in a bit of Bayesian guessing before the AIML parser got it hands on the conversation, I'm able to keep the AIML files very focused and give the chat bot a bit more sparkle - you don't have to train him about everything. After a while he realised that 'yo', 'hi' and 'hello' are all the same thing, so he just guesses that you're saying hello and pulls out the correct response from the AIML file (rather than creating an AIML rule to deal with all the variations on 'hello').
If you're interested I'd strongly recommend installing GrokitBot. You can get the source and a bit more explanation at my site, Suttree.com
-
Re:Going the way of the dinosaurs
Open source can change some of those things, but as far as hardware goes you still need someone willing to put up considerable amounts of money for manufacturing.
Let me provide some suggestions. I work with F/OSS development for network security and wireless applications, and have spent a few years working with low-cost embedded systems that support Linux. With a Linux kernel and OS in a small box, there's not much you can't do per amateur/wireless development.
My current favorite foundation is:
o RouterBoard from Mikrotik of Latvia. Pentium 233/266 performance, very low cost ($300ish), dual PCMCIA slots, dual Ethernet (in one of the two models), microPCI slot (wonderful!), and compactflash slot. Hardware watchdog and other goodies built in are things normally found on much more expensive embedded system boards.
o IBM/Hitachi Microdrive: My base development systems runs with a 1 GB Microdrive with Debian on it, though I've got a 4 GB setup with Gentoo and use the 370 MB version for production loads. Routerboard has a Debian developers kit available for download on the site, including watchdog control. Avoid compactflash/CF (Microdrive fits the CF profile but is an actual spinning device) unless you're certain you're going to have minimal writes over time, as they will eventually cease to write and become somewhat worthless (in my experience, low-write use lasts about one year).
o Debian or Gentoo for development environment: there are some embedded distributions out there but they're intended for when you're ready to reduce to your final low-profile image. Both these distros give you a good amount of control over what is going into your system. Embedded Gentoo will be nice eventually (with cross-compile support) but isn't there yet.
o Python: Not to start any language wars (or distro wars per above), but Python is a great place for amateur developers to work in. Frameworks like Twisted allow you to focus on your code and build upon the networking smarts of others. I haven't tried yet, but I keep eyeballing Shtoom for an amateur project as well.
*scoove* -
Crossplatform Opensource VoIP 100% Python - Shtoom
Shtoom is a 100% VoIP implementation in Python.
It rocks. Homepage of Shtoom, Shtoom is a open-source, cross-platform VoIP softphone, implemented in Python. As well as the basic phone, there are many other services. PyCon Paper on Shtoom. -
Shtoom - Cross platform VoIP in Python
Shtoom is a open-source, cross-platform VoIP softphone, implemented in Python. As well as the basic phone, the package also includes a number of other applications -
shtoom - the end-user phone
shtam - a simple answering machine/voicemail application
shmessage - an announcement server -
Re:SIP
for those who don't know what SIP is.
A number of years ago, the telecom providers got together and tried to do VoIP. They came up with H.323, which was a terrible mess and near impossible to do anything with. To top that off, you have to pay for access to the spec (I'm only pretty sure about this, please correct me if I'm wrong) So VoIP didn't go anywhere for a while.
Then the IP folks (the people who designed the internet protocols like IP, TCP, UDP, etc) came together and designed SIP. The entire protocol is described in a mere 150 page RFC. Anyone who's implemented a standardized protocol from a spec knows what a godsend a short spec is.
In short, SIP is a protocol designed by the Internet folks for the Internet. It's layered on RTP, so the audio quality degrades gracefully with the link quality. You can operate it point-to-point by simply running two clients on two machines and pointing one at the other's IP address. Or, if you want an easy to remember URL, you can sign up for a free account at places like fwd.pulver.net. You'll then be accessible as sip:username@fwd.pulver.net.
Google for "SIP softphones" and you'll find quit a few clients. The big ones on linux are kphone and linphone. Shtoom is making some headway also, and runs on linux, windows, and os x.
Skype decided they don't like either H.323 or SIP, went off and designed their own proprietary protocol, and is keeping it secret from everyone else. -
All-in-one email, phone, IM
5 Create the all-in-one inbox Email, phone calls, instant messages - they should all go into a single app.
His wish is their command: Quotient.
Don't be fooled by the unadorned web site: Quotient is a multiprotocol server plus client plus repository, supporting POP, IMAP, SIP, IRC and IM, and based on Twisted, an event-based, multiprotocol networking framework. Quotient comes from the Twisted guys themselves.
It's a remarkable architecture, and implemented in a very nice programming language.
:^) -
Re:Here's one I've used
Reverend is a general purpose Bayesian classifier, named after Rev. Thomas Bayes.
Use the Reverend to quickly add Bayesian smarts to your app. To use it in your
own application, you either subclass Bayes or pass it a tokenizing function. Bayesian fun
has never been so quick and easy. Many thanks for Christophe Delord for his well written
PopF. Orange also looks good.
Stuff you can do with the Reverend:
- classify recipes by cuisine
- who do you write like? Shakespear, Dickens, Austen, Aesop
- detect the language of a document
- is your code more like Guido's or Peter's"
http://www.divmod.org/Reverend/index.html
http://www.divmod.org/Reverend/index.html