MMSLIB has been a part of the MMS Diary and Peffisaur projects for some time now. Now and then people have been asking me to also include encoding of MMS:es in mmslib and also to release it separately. So I have done just that.
Mmslib is a PHP library for encoding and decoding MMS:es. MMS is short
for Multimedia Messaging Service. In short it is the successor of SMS
(Short Message Service) with the enhancements that you can not only
send text but basically any content type your phone can handle such as
images, text, videos, ring signals and audio clips.
With this library you can create messages and add multimedia parts
such as JPEG, GIF, AMR, MIDI and so on. Messages received from phones can also be unpacked and attachments can be extracted. The library also contains a
limited MMS sending functionality that uses a HTTP service to send
SMS:es. You would probably have to change the actual implementation of
the SMS sending to fit your way of sending SMS:es (if it is over
serial port, to a real SMSC or through some other type of HTTP
service). This is all done with the three classes MMSDecoder, MMSEncoder and MMSNotifyer.
For more information about the technical aspects, please see the MMS Diary project.
An example of what can be done with the library can be found in the Peffisaur project which is
my little hobby project - A Multiuser MMS Weblog community. Feel free
to join if you like. Doesn't cost you anything.
If you want to discuss MMS Diary, Peffisaur or MMS Blogging in general then please visit my forum at http://hellkvist.org/forum
Revision history:
- mmslib-0.97.tar.gz - An update by Jakub Haton to enable encoding of SMIL messages. Feel free to try it out. It has not been tested by me though.
- mmslib-0.96.tar.gz - Initial release
Platform: Any platform with a PHP-enabled HTTP server Requirements: PHP Download: mmslib-0.96.tar.gz
Peffisaur is the successor to MMS Diary only that it now has support for more users, database support, email support and a more advanced web interface. You can post messages either directly to the site (using the MMSC emulating feature of MMS Diary - this interface is sometimes referred to as MM1) or via your operator's MMSC by sending the MMS to an email address (this interface is sometimes referred to as MM3). The advantage of the direct posting method is that the operator cannot charge anything for it but the traffic costs. The advantage of the email approach is that it is much easier for the users to set up in their phones (they don't have to change any settings - perhaps only add an email address to their phone book for easier sending). Peffisaur users can comment on messages, search for messages and create message collections.
For more information about the technical aspects, please see the MMS Diary project.
A running installation of the Peffisaur can
be found at http://peffis.com which is
my little hobby project - A Multiuser MMS Weblog community. Feel free
to join if you like. Doesn't cost you anything.
If you want to discuss MMS Diary, Peffisaur or MMS Blogging in general then please visit my forum at http://hellkvist.org/forum
Revision history:
Platform: Any platform with a PHP-enabled HTTP server Requirements: PHP (PHP4 >= 4.2), MySQL, Sendmail with Procmail and Apache with mod_rewrite for the server. An MMS phone for you - tentatively with a camera Download: peffisaur-1.0.tar.gz
I wanted to be able to post small diary entries to my web page for
friends and family to see when I was on vacation by only using my phone
(which is an Ericsson T68 with MMS). You can also take pictures and
attach by using a Communicam or similar. There are several ways of
sending pictures and text from your phone, email is one for instance,
but I wanted to try using MMS.
Weblogging (or blogging) like this is
becoming more and more popular these days but so far not many have
done MMS Blogging except for some services where you have to pay for
it. Mine is free of charge of course. Both free as in speech and free as
in beer (since it's released as open source under the GPL and you host
it yourself on your web server).
It works so that a PHP-script pretends to be an MMS Proxy-Relay
(the server that receives MMS:es - an MMS Proxy-Relay is NOT the same
as an MMSC since and MMSC is usually thought of as a combination of
the MMS Proxy-Relay and the MMS Server)
so you set your phone to use that server instead of the one your
operator provided you with and then post your MMS:es directly towards
that one (see README for more
info). This of course has the advantage that you don't have to pay
your operator for sending the MMS which is good. The images and texts
(and audio clips, midi etc) are then later presented on an HTML-page.
A test example of what the diary might look like can be seen here. A slightly more ambitious try can
be found at http://peffis.com which is
my little hobby project - A Multiuser MMS Weblog community. Feel free
to join if you like. Doesn't cost you anything.
This package also contains a PHP-class (MMSDecoder) for decoding
binary MMS messages. MMS:es are encoded using a binary format
inherited from the WAP world and this file helps you decode binary
chunks and extract attachments and so on.
If you want to discuss MMS Diary, Peffisaur or MMS Blogging in general then please visit my forum at http://hellkvist.org/forum
Revision history:
Platform: Any platform with a PHP-enabled HTTP server Requirements: PHP (PHP4 >= 4.2) for the server. An MMS phone for you - tentatively with a camera Download: mmsdiary-0.95.tar.gz
One day I decided I wanted to make some wall decorations, mainly
because I had a new flat and the walls were far too empty. I decided
to make some fractals to put up there. Of course. You'll have to make
the software yourself to do it. It's more of an art then to me if you
have done everything. So I created some command-line tools to make
these images. Then I uploaded the images to Fujifilmnet which is a service
to print digital images on photo paper. Then it was only to buy some
frames and put it up on the wall
The above is an example of just applying different palettes to the
same fractal. The images were generated using this script.
This is an example of first generating one huge fractal using the
genfract tool and then split it into 9 smaller ones using the pdlsplit
command. This one was not printed using Fujifilmnet. Instead I had
help from Peter whose father owns a
nice printer.
Platform: Un*x/Linux Requirements: None really but ppmtogif is a nice complement Download: fractool-1.0.tar.gz
I have never needed a calendar before but I have discovered lately
that sometimes it can be convenient to be reminded of important things
like birthdays so I wrote this little calendar/reminder
system. You basically enter your todo:s and Calvin will send you an
email as a reminder some time before as you specify. Simple but useful.
The web interface is realized with PHP and MySQL and the reminder
function is done with a Perl script that runs as a cron job every night
Screenshots: Main Window, Edit Todo Dialog
Platform: Un*x/Linux Requirements: Perl, PHP, Sendmail (or compatible) and MySQL Download: calvin_1.0.tar.gz
Doing silly graphical hacks has always fascinated me. There is no
better way to learn programming than to do mindless things that shows
some silly patterns on the screen. You see all the time what you're
making and what result your changes make. I wanted to learn the SDL library so I did a few hacks
around that
The first one, sdlplate, whose
example output can be seen above, shows
how a simple operation, when iterated can create complex and beautiful
patterns. This is found so often in fractals, nature and all
over. Simple things turning into more complex beautiful structures,
like small ants turning into a large ant colony. Then, after a while,
one realizes of course that the ant itself is quite complicated too
but made up of what appears to be simpler building blocks. Recursion...
The other one is the sdlplasma. Everyone has seen the plasma
effect in the Fractint program that existed back then in the dark DOS
era and still exists today in other forms such as under Linux. Many
has also implemented the plasma algorithm, or the Midpoint
Displacement algorithm as it is called in other contexts. This is my
version of that program. It paints the cloud and then rotates the
palette when the user presses a key. Simple and beautiful. Simplicity
makes beauty!
Platform: Platforms running SDL, such as Linux but also other closed
source, less stable, commercial systems from Redmond Requirements: SDL Download: sdlplate,
sdlplasma
JMerlin is a simple, small footprint, single character recognition
engine. It is the Java ancestor of XMerlin.
The way characters are input is different from XMerlin. JMerlin reads
input from both stdin and from the mouse.
JMerlin is not supported nor documented any more. It is released under GPL
because people wanted the Java implementation as well. Some
documentation can be found in my
Master's thesis.
Revision history:
Platform: Systems running Java. Tested on i386-linux, arm-linux, and Solaris Requirements: Java (on Linux if used with VersaPad) Download: jmerlin-0.91b.tar.gz
XMerlin is a simple, small footprint, single character recognition
engine for X11 based web pads and such devices where a regular
keyboard is not an option. The way it works is that you write
characters in a small window and after recognition the character is sent
to the window in focus which could be an editor, web browser or any
other window that accepts SendEvents.
The target in this release was to keep it simple and
small. Therefore neither the code nor the design of the characters are
optimized or tweaked for any particular system. It is left in a rather
general but still usable state.
This version was developed during my time as a thesis worker at
Ericsson. Thanks goes to my boss
for letting me release the code under GPL.
If you are interested in how it works you can read my Master's thesis. It is a bit
outdated at the moment but the general idea is still the same.
Please note:XMerlin was written in '98 and since then things have changed a bit in Linux/Unix-land. Many people write to me and complain that it does not compile any longer. Making it compile is simple though. Just make sure you install libx11-dev so that you actually have the required libraries. Modern compilers are also more strict than they used to be. There is a switch statement with an empty default-label that the compiler complains about these days. Simply add a "break;" there and it should compile nicely.
Then there are yet more complaints that merlin does not play well with modern window managers, like on the latest Ubuntu. Well, perhaps it does not :) This was made for a barebone system with little resources so complex window managers like the ones Gnome and KDE uses was not intended for Merlin, in fact when Merlin was written people were still using Fvwm and WindowMaker. Fvwm2 worked well last time I tried it and so did WindowMaker - in 1999 or so. Merlin was never meant to be compatible with any future version of windowing systems so please don't be surprised if it does not work on your system. If anyone has a patched Merlin for these issues and would like to contribute it I would gladly put it up on the web page. I no longer maintain this myself so please don't complain too much. One of the reasons I stopped releasing GNU software was because of the fact that too many people started behaving like kids who just wanted things for free. They didn't contribute anything but complaints.
Sadly, people are very open to have things handed to them but seldom ready to give.
Known ports:
- PVMerlin (a more current version, by Christian Ensel, can be found
here)
- Wittawat Yamwong and Christian Ensel has ported Merlin to the Pocket Viewer
- Agenda Merlin (or this place)
- Enzo Dari together with Brian Webb has ported Merlin to the Agenda PDA. An open source PDA.
- DSmerlin
- David Lott has ported Merlin to the Nintendo DS
Platform: Systems running X. Tested on i386-linux, arm-linux, and Solaris Requirements: Xlib Download: xmerlin-0.9_public.tar.gz
Fractals are extremely interesting things. Not only are they
strikingly beautiful and complex, but this beauty and complexity is
often generated by very simple and clean mathematics.
I wrote this program to be able to explore one type of fractals -
the Mandelbrot. With Mandelbrot explorer it is possible to zoom into
the fractal and explore the endlessly repeating beauty of it.
One can also select what type of calculation to perform, such as
fix point arithmetic, 32-bit floating point arithmetic or 64-bit
floating point. One can also alter the number of iterations in the
calculations.
Platform: Un*x-like systems Requirements: Qt Download: mandel.tar.gz
Artificial Intelligence has always fascinated me. Some time ago I wrote this Java chatroom kind-of-thing where you can talk to this guy called Nisse. It is a program very much inspired by the classic Eliza program. Nisse sure is Artificial enough. I don't know about the Intelligence part though.
You can talk to Nisse right now if you want in the Fun stuff section.
Platform: A Java enabled browser Requirements: Java Download: eliza.zip
In a project we had a small handheld device running linux on a
StrongARM CPU. The amount of memory was short so when I needed a small
web server on it one could say that Apache was not an option. The solution
was to write the simplest possible web server from scratch.
Zilo's features are very limited. It can only serve static
pages. It doesn't care about mime types but most browsers can cope
with that for well known extensions like gif and jpeg etc.
I'm not claiming that it is better or worse, faster or slower than
anything else. It could be made very secure however because of its
limitations (I mean the most secure web server is the one which you cannot
connect to, right ;-).
Anyway, it could be used as an example if you want to learn some
socket programming.
Platform: Un*x-like systems Requirements: None really Download: zilo-0.95.tar.gz
Tankwar is a game inspired by a similar game on the Amiga (I don't
remember the name). You control a tank and try to hit your opponent
before he hits you.
The file contains both a binary and the source code. To compile the
code yourself you need DJGPP
version 2. The source code is not very beautiful. It was written long
ago when I had just started to learn C programming.
Platform: DOS (version 5.0 to Win98 - it works very badly on NT and Windows2000) Requirements: A friend to play with Download: tankwar.zip
The Blue Car is a game inspired by the great Kickstart game for the
C64. You control a tiny blue car (surprise!) and you try to avoid
obstacles by adjusting the speed and jumping (!) with your car. It has
support for one or two players. It also has a track editor so you can
create new tracks.
The file contains both a binary and the source code. To compile the
code yourself you need DJGPP
version 2. The source code is not very beautiful. It was written long
ago when I had just started to learn C programming.
More documentation and more screenshots can be found at http://www.nada.kth.se/~d93-sth/bil.html
Platform: DOS (version 5.0 to Win98 - it works very badly on NT and Windows2000) Requirements: Fast reflexes Download: bil1-7.zip
In a house where we used to live we had a local area network
connecting all 6 appartments in the building (everybody had
computers). Then there was suddenly a need to communicate to be able
to synchronize when playing games for instance.
The environment was mixed, some used Linux and some ran
Windows. Since we didn't have a server that was always on and since we were
not always connected to the Internet, we couldn't use any of the ICQ
solutions that were available at the time. The solution was to write a
small and simple instant messaging system. It was named Ping because
it constantly sent small requests to see if a client was still
online. Other than that it has no resemblance to the well known ping
command. It was written in Java 1.1.
Revision history:
- ping-2.1.tar.gz - Made it compile under higher Java-versions than 1.1. No changes apart from that
- ping2-0.tar.gz - Initial release (needs Java 1.1)
Platform: Any Java enabled OS Requirements: You need friends to talk to Download: ping-2.1.tar.gz
This program is a cgi program that allows you to use the powers of
a functional language (Scheme) when writing your HTML documents. It works by
reading a special file, usually with the suffix .xh, it interprets the
code in that file and outputs the interpreted data as a HTML
document.
This program was made for a project in the course "Artificiella
Språk och Syntaxanalys" at the Royal
Institute of Technology in Stockholm, Sweden. It was made by
Magnus Ljung, and Stefan Hellkvist (me).
We have implemented a subset of Scheme (a dialect of Lisp) as the functional language. This subset does not include lists,
but it's still very useful. However lists can be implemented using lambda-expressions, and we've done just that. The list
package may be downloaded here.
A more practical use would be to make an Apache module of it intead
of using CGI. It would not be hard I think but there is no motivation
for it at the time.
Update: A patch was made to be able to build XH on systems
that use STL (Standard Template Library) which nowadays is the
c++-library used on Linux systems. There were also some improvements
made to some of the integer manipulation routines. The patch can be
downloaded below. Gunzip it and apply the patch by cd-ing to the xh
directory and giving the command patch -p1 < xh-stl.diff
Platform: Un*x-like systems Requirements: Flex, Bison and a CGI-enabled web server Download: xh.tar.gz xh-stl.diff.gz
Barracuda is a BibTeX database manager. BibTeX is a program that looks
up citation references in a database and then writes them to a file
that is used by TeX/LaTeX. Barracuda is used to edit BibTeX database
files. It is mostly self explanatory and easy to use but comes with
relatively complete HTML documentation.
Together with 3 school mates (Magnus Christensson, Magnus Ljung and
Stefan Cronert) we wrote this program in a course at KTH. It also entered a competition held
by TrollTech.
Since none of us had the time to maintain it afterwards Barracuda now
has a new maintainer and lives its own life out there on the
Internet. Last time I checked it was on barracuda.sourceforge.net where
you might find a later version.
Note: The version which can be found below does not compile anymore on systems with more modern compilers than we had back then. The quality of the code is sometimes bad and a modern compiler does not agree with it (we discard const in some casts here and there and that is not allowed anymore). Qt, which it is based on, has also changed a bit since then (some constants for keys for instance has moved to a namespace nowadays). So download this only if you know C++ and are willing to spend some time on fixing some minor stuff to make it compile. It is not hard to make it compile though - just many boring little details to take care of. You have been warned.
Platform:
Un*x-like systems
Requirements:
Bison, Flex and Qt.
Download:
barracuda-stable.tar.gz
|