Mashed Hack - IRC Speaker Bot
June 21, 2008 at 10:52 PM | categories: python, oldblog | View Comments- It's IRC bot
- It joins 3 channels - #kamtest, #kamaelia & #mashed
- It listens to the channel
Anything that anyone says is then spoken (via espeak) by the bot. ie speech synth.
You can find the code here:
Kamaelia Mashed Release Candidate
June 21, 2008 at 08:12 PM | categories: python, oldblog | View CommentsKamaelia at BBC MASHED
June 20, 2008 at 07:53 PM | categories: python, oldblog | View CommentsThe talk is at the start of the weekend intended to get you started with all of those things. As well as the session itself, a new release of Kamaelia is in the works with the first Beta/Release Candidate made available to an unsuspected world. What's going in the release?
- Well, the usual slew of extra components and bug fixes
- A variety of new tools - from video shot change detection, through to SMTP greylisting
- Multiprocess & hence multicore support (experimental at this stage, but so far so good :) )
- Kamaelia.
- Chassis
- Seq
- Codec
- WAV, YUV4MPEG
- Device
- DVB
- SoftDemux
- Parse
- ParseEventInformationTable, ParseNetworkInformationTable, ParseProgramAssociationTable, ParseProgramMapTable, ParseServiceDescriptionTable, ParseTimeAndDateTable, ParseTimeOffsetTable, PrettifyTables, ReassemblePSITables
- Experimental
- Chassis, ERParsing
- File
- MaxSpeedFileReader, UnixProcess2
- Internet
- TimeOutCSA
- Protocol
- MimeRequestComponent, RecoverOrder, SDP
- AIM
- AIMHarness, ChatManager, LoginHandler, OSCARClient
- HTTP
- Handlers
- Minimal, Handlers/SessionExample, UploadTorrents
- IRC
- IRCClient
- RTP
- NullPayloadPreFramer, NullPayloadRTP, RTCPHeader, RTPHeader, RtpPacker, RTP
- Util
- Tokenisation
- Simple
- Collate, FirstOnly, Max, OneShot, PromptedTurnstile, RangeFilter, RateChunker, SequentialTransformer, Sync, TagWithSequenceNumber, TwoWaySplitter
- UI
- Pygame
- Text, VideoSurface
- Video
- CropAndScale, DetectShotChanges, PixFormatConversion
- Visualisation
- ER
- ERLaws, ERVisualiserServer, ExtraWindowFurniture, PAttribute, PEntity, PISA, PRelation
- XML
- SimpleXMLParser
- Kamaelia
- Apps
- Compose
- BuildViewer, CodeGen, PipeBuild, PipelineWriter, GUI
- GUI
- ArgumentsPanel, BuilderControlsGUI, TextOutputGUI
- IRCLogger
- Support
- Show
- GraphSlides
- Whiteboard
- Audio, Canvas, CheckpointSequencer, CommandConsole, Entuple, Options, Painter, Palette, Router, Routers, SingleShot, TagFiltering, Tokenisation, TwoWaySplitter, UI
Also a new website is coming soon, but time ran out :-)
So given all that, session details:
What: How to get started hacking with Kamaelia - making concurrency fun, easy & usefulMore detail:
When: 12:15 - 12:45, 21 June 2008
Where: Garden Table area at Top West Hall, Alexandra Palace, London
Who: Me - Michael Sparks :-)
Why: To help people get started with hacking Kamaelie
How: One part presentation, two parts tutorial, lightning talk style and a note of "this is what I look like, come find me!"
GET MASHED (Link Kamaelia site)How to get started hacking with Kamaelia - making concurrency fun, easy & useful with Michael Sparks
(12:15 - 12:45) - 21 Jun 08Kamaelia is an open source project from BBC R&D. It makes prototyping new and interesting systems simple. Kamaelia systems are naturally concurrent and transform easily into production quality, maintainable systems.
It is useful for things from 3D systems through building PVRs through video playback, through shot change detection, through P2P distribution (live and bit torrent), through whiteboards, handwriting/gesture recognition, speech generation, and games systems, and back through DVB on both the reception side and broadcast side, and lots more not mentioned...
This talk will introduce Kamaelia, helping you get started - complete with a new release to boot!
- Website: http://edit.kamaelia.org/Developers/
- Introduction: http://edit.kamaelia.org/NewIntroduction
- Toybox: http://edit.kamaelia.org/Components
- Cookbook: http://edit.kamaelia.org/Cookbook
- Get Mashed with Kamaelia
Garden Table area at Top West HallDownload iCalendar: How to get started hacking with Kamaelia
Powering a home server using solar power?
May 31, 2008 at 04:07 PM | categories: python, oldblog | View Comments- Use a cheap/old/low power laptop
- Buy a car battery - or perhaps a 12V 100Ah battery
- Use a 60W solar panel (or similar) to charge the 100Ah battery
- Use a car cigarette light connector based power adapter to connect laptop to battery
I'd be interested in hearing from anyone who's tried doing this.
How will you be celebrating the 60th Anniversary of the Computer?
May 30, 2008 at 06:31 PM | categories: python, oldblog | View CommentsWe're planning a new release of Kamaelia for that day, which also co-incides with BBC Mashed (aka BBC hackday 2). The new release should include, among other things, our multicore support, basic software transactional memory, generator, thread, process based components, a variety of example applications, a revamped website (yes, it needs a lick of paint) as well as a large number of new components from improved DVB support, better pygame tools, etc.
How are you planning on celebrating the 60th anniversary ?
:-)
Where to put our Multicore support in the Kamaelia tree?
April 28, 2008 at 09:11 PM | categories: python, oldblog | View CommentsAs a result, it seems to make sense to do this - Put the core code in:
Axon.ProcessesBut put the ProcessPipeline & ProcessGraphline component in:
Kamaelia.Chassis.ProcessSo that you would use them as:
from Kamaelia.Chassis.Process import ProcessPipeline, ProcessGraphlineI'm pretty sure that's a pretty good idea - since it allows updates to the implementation that these use without affecting the interface.
That said, people will probably search for Multicore as well, so is it worth the naming actually being this:
from Kamaelia.Chassis.Multicore import ProcessPipeline, ProcessGraphline... or simply having that available as an alias ?
Fundamentally this would still be used in the same way as previously described:
from Kamaelia.Chassis.Multicore import ProcessPipeline # this or
from Kamaelia.Chassis.Process import ProcessPipeline # this?
ProcessPipeline(
Textbox(position=(20, 340), # Open first pygame window
text_height=36,
screen_width=900,
screen_height=400,
background_color=(130,0,70),
text_color=(255,255,255)),
TextDisplayer(position=(20, 90), # Open second pygame window
text_height=36,
screen_width=400,
screen_height=540,
background_color=(130,0,70),
text_color=(255,255,255))
)
But the naming affects where you go hunting for the functionality.
My personal preference is for the former (Kamaelia.Chassis.Process), though I can see user friendliness in naming something based on what people are likely to hunt for being attractive.
Used without care, multiprocess usage would probably hurt performance - since messages between components in separate processes are pickled objects, but generally speaking, we all know you'd take that into account, wouldn't you...?
Thoughts?
Interesting thing new faces....
April 27, 2008 at 11:29 PM | categories: python, oldblog | View CommentsSo I chatted with the other members of the community and they all pretty much agreed, but they hadn't thought of saying anything (which strikes me as a bizarre version of the Bystander Effect :-).
Anyhow, as a result, I've shifted our list over and the new faces on the block are running rampant there, which is really cool. Not only that but it's encouraging students from previous years to start popping their heads back up (so far only on private mail, but I think they can be teased out further), which is really neat :)
Sometimes it's the little details you take for granted that you completely miss...
I just thought it worth sharing in case other people think it's worth asking their new colleagues for any suggestions for making their communities more accessible :-)
Recent requests/Q and A
April 27, 2008 at 11:22 PM | categories: python, oldblog | View Comments- I had a complaint/bug report from Steve (no surname) about the dates in my RSS feed (which should now be fixed), about double escaping of entities (which is also hopefully fixes). Steve also made a comment saying that he wished he didn't have to enter HTML manually. This strikes me as odd, because I'm typing this using Dojo's editor widget, so I guess that failed disgracefully on his machine. I've seen that on a few machines, but Dojo's generally got the most browser friendly wysiwyg editor, so I'm not sure what's up there.
- I had a request whether Kamaelia's latest release is available for windows as a special bundle. The answer to that really is "it's python, so it should work, but we tend to develop under linux & Mac OS X so you may find some niggles". I certainly haven't created an installer for windows. All that said, we are overdue doing a new release, and /trunk is far and away recommended. Even so, that needs updating as well with recent developments... :-)
- Finally, another anonymous poster made the following comment:
- Came across this today and thought you might be interested in it Michael:
Concurrency/message passing Newsqueak [video.google.com]
Python Bindings for AR Toolkit
March 28, 2008 at 04:56 PM | categories: python, oldblog | View Comments- http://mgldev.scripps.edu/projects/pyartk/index.html
- http://mgldev.scripps.edu/projects/pyartk/docs.html
Writing successful applications - common questions and answers regarding summer of code
March 28, 2008 at 01:09 PM | categories: python, oldblog | View Comments> I want to write a simple kamaelia based [....] for Google Summer of Code,
That's a very clear, definite, good statement. It's incredibly simple to get a hold of, so the questions really arise around "what sort of look/feel do you want to have", and "how do you want the [...] to work" and "how do you want communication between [...] to work" as well as "how do you plan to maintain persistent information as well as dynamic (maybe shared) state". (if any)
If you've sent existing code, this helps a lot with evaluating your idea, especially if it relates directly to your idea. Really, this boosts your application likelihood of acceptance dramatically.
Some general points:
- You need a mechanism for handling initialisation of the system and activities using the system.
- You may need to think about the transition from initialisation to the normal operation. (eg login vs logged in)
- You'll need to think how you manage global state (managing the model)
- You'll need to think how you manage specific state (managing interactions)
- You may need to think about file/definition formats
- If the system is multiuser, with interactions, you'll need to define that mechanism. That could be a protocol, use a pre-existing protocol, or just a mechanism for forwarding internal messages.
- You may want to consider user to user interactions vs global vs localised (eg talking in a room)
- You will need to think how existing components can assist you.
- First of all think "what's the simplest possible version that would work?" (single windows GUI, single web page, single screen, single ...)
- Then consider how you extend it in each of the possible directions you're thinking of going, growing organically. (this makes it easier to track your development)
- Consider something really cool as a possible next step, after all, things may be simpler than you expect.
Consider some of the of the implications for each thing you suggest. Do components already exist that can support it? (eg {SQL, webcam, ardunio, twistedintergration} components don't *at present* exist, but would be useful). Recognising what's missing from the component set and how your project helps grow the project is important. Both for us, and for you (since creating components is kinda the point of these projects :). You'll need to think ho your new components will operate and how they'll be used. However DON'T overengineer or think "I'll do this in case someone needs it". If you don't need it, leave it out. If you need it, put it in. You can however sometimes make your life easier by generalisation. Tease these aspects out in your application.
Finally, you need to put the whole thing into the application template covering the various areas we need to assess the project:
- Short one line of what the task is designed to achieve/create.
- A practical, clear result of what will be possible as a result of achieving this task. This is best described in the case of a user story.
- The context in which this task sits. Has this task any history? Is it the result of any previous tasks - either within the project or outside.
- What benefits will be gained by working on this task, and achieving its goals? Speculative as well as certained/realistically expected benefits are valid here.
- http://kamaelia.sourceforge.net/SummerOfCode2006Template (yes, this is the same template :-)
- We expect you to divide the project deliverables up into two categories "will deliver" and "given sufficient time".
- The Project Details section is where you get to describe lots of the things I raise in terms of questions above. The application character count limit though is worth bearing in mind. (ie detailed, but not too ott maybe)
- Project Schedule is really a guestimate of what you think you will have done by when. It will probably be wrong, but by listing it we can see if you're way ahead of schedule (which can be good - if you have a project with lots of scope for growth - which you do), or if you're really behind, in which case we can re-evaluate the schedule if its for good reasons.
Key things to think of: - What do you think you will have done by the mid term evals. For that think "what will I get done by July".
- What do you have confidence of getting done between then and mid-august.
« Previous Page -- Next Page »