text:
(Adding the developer FAQ page. Basic without layout and improvements)
(Prepare to split)
|Line 1:
|Line 1:
==General questions==
==General questions==
===I want to start this new application. What do you advise?===
===I want to start this new application. What do you advise?===
|This section needs improvements: Please help us to
cleanup confusing sections and fix sections which contain a todo
We all agree that there are plenty of KDE applications that need to be written. But there are also a lot of existing kde applications that need your help.
To see the areas where help is needed, check this page.
Before starting a new application, it's always a good idea to check www.kde-apps.org for existing applications and to ask on the firstname.lastname@example.com mailing-list whether someone is already working on a similar project.
Check the open jobs from the job list, there is certainly one that you can take. KOffice and KDevelop, despite being very praised, have very few developers, so you might check there. There is no need to be a KDE core-developer to help. KDE is very modular so you can perfectely improve one area without knowing how the whole system works.
You can also ask on kde-devel if someone needs help on an application. Use the latest version of KDE and spot things that are needed. A theme generator? A konsole schema editor? Improve a game? There is always a small feature missing. Go and implement it!
Are you familiar or attracted with a specific field? See if there is a related application that could use your help. Or write one. KDE needs more non-geek oriented applications.
There are plenty of tasks that don't require development skills. Write reviews of applications for the promoting of KDE (see the kde-promo mailing-list), help the documentation team (see i18n.kde.org/doc), help the translations (see i18n.kde.org), help to filter the incoming bugs (see bugs.kde.org).
The Konqi for some people SDK is at ftp.kde.org/pub/kde/devel/konqi_sdk.tar.bz2
It was posted to artist.kde.org before that site ceased to be updated.
You need to know C++. Read the Qt tutorials and browse the Qt docs to get familiar with what's available with Qt. Then read the KDE tutorials and browse architecture and documentation. You can also read the KDE Book, it can not harm. But you don't have to be familiar with the whole KDE architecture to become a kde developer. Using kde's technologies is quite easy, so concentrate on what you really need, you can learn the other bits later on. developer.kde.org and doc.trolltech.com (also in your $QTDIR/doc/html) are invaluable resources, take advantage of them. Then, browse the source, look for the examples directories, see how the other did code their applications. Reading and writing code is the best way to learn.
See the [anonymous SVN page].
global-ignores = *.moc *.moc.cc *.moc.cpp config.log config.status \
config.cache *.gmo .deps .libs SunWS_cache *.lo *.la *.rpo *.la.closure \
Makefile.calls.in Makefile.rules Makefile.calls autom4te.cache *.kidl \
And to make svn diff ignore whitespace, and print function names:
diff-cmd = /usr/local/bin/_svndiff
with the following in /usr/local/bin/_svndiff:
exec /usr/bin/diff -b -u -p "$@"
Don't forget to make /usr/local/bin/_svndiff executable.
There are three requirements:
See also the next question.
As core developer Waldo Bastian explains in a copyrighted mail:
It is important to know that but don't be afraid. Usually, things work very well. In 5 years, it has only happened once that a developer had his work put kept in KDE while he wanted to remove it.
Send a mail to sysadmin (at) kde (dot) org justify why you need SVN access. Make sure to specify your full name and e-mail address, if the From field in your mails doesn't specify them. Please include the name of your bugs.kde.org account, if non-existent please create one so that it can be given usual developer rights. Closing bugs.kde.org reports with keywords in commit comments only works if the email address of your SVN and bugs.kde.org accounts match. You can change your bugs.kde.org address in the Bugzilla user settings. You can currently choose between the standard SVN protocol (https using a password) and the svn+ssh using an ssh key. If you choose https, send also an encrypted password (for instance using useradd dummy ; passwd dummy ; grep dummy /etc/passwd /etc/shadow) and see also the tutorial. If you choose svn+ssh, send a public ssh key instead (e.g. ~/.ssh/id_dsa.pub) See also How do I create a SSH key? If you are contributing to an application that is not yours, it is a good idea to first submitting your coding as patches to the author and let him apply them. If the author is not maintaining his application, you might become the new maintainer... Although there is no restrictions on SVN rights, we expect you not to mess up other developers' code without their consent. You must also respect the feature freezes of the release schedule (published on developer.kde.org) A detailed list of rules you should follow when committing to the KDE SVN repository are listed in the KDE SVN Commit Policy.
As a first step, we can put it in playground (== kde-alpha). Develop it there and when it is ready, ask your app to be moved to the appropriate KDE package or the extragear module.
This is no longer possible with Subversion. Maybe in the future, if the server is upgraded and allows that.
It contains Qt/KDE bindings for Java to use Qt/KDE classes with Java, DCOP bindings for C, Java, Perl, Python to use DCOP in those langages and XParts to embed non-KDE apps as a KPart. There are also other bindings for kde which are not maintained by KDE. Check the binding page of developer.kde.org.
No, kdenonbeta and playground are not a released packages. The same is true for kdereview and extragear: they are not frozen and released. But if you want your app to move to a package, ask for it before the beta-release.
Yes, check the Building 2 Versions documentation.
Launch the KDE Control Center. The splash screen includes Kde version information.
kde-config and all kde programs accept --version as argument.
You can use either. They are binary compatible (forward and backward). There can be, however, a few bugfixes in qt-copy over the most recent Qt release. In special, if building qt-copy, pay attention to the apply-patches script.
Checkout the top-level dir with 'svn co -N /modulename', 'cd modulename', 'svn up admin' to get the admin/ dir and then finally checkout the dir you want with 'svn up subdir' For instance, to get only reaktivate from kdenonbeta: svn co -N /kdenonbeta; svn up admin; svn up reaktivate
Then compile as usual.
The same answer applies to the question "How do I get a single language out of kde-i18n?". If you don't know the name of the directory you want to check out, you can browse websvn.kde.org to find it.
kdesdk/scripts/svn2dist is a script to extract an application from the KDE source tree and package it as a standalone application.
If you reported a bug that is fixed in a new release of KDE but is still reported as open, you can close it. It might happens because your bug is the same as another one, or simply because the developer fixed something without noticing that it would correct your bug. You can do that from your Subversion commit. To do so, append to your commit message a line like this: BUG: XXXXX Where XXXXX is the bug report you want to close. If the report you're closing is adding a new feature, you can use FEATURE instead of BUG. Managing a bug list is a huge task for the developers and they usually have a lot of bugs listed, some being fixed already without their knowledge, some being unreproducable, some without enough information to be corrected, etc. If you can help managing and updating the list of outstanding bug, you will be gladly welcome. And you will receive an even happier welcome if you provide a patch.
SSH makes use of two keys: a private key and a public key. You should keep the private key secret at all times and only place it on machines over which you have direct control. Public, shared, and community machines are not suitable environments to store SSH private keys. Take action to help prevent theft of your SSH private key data. Setting a password on your SSH private key will help reduce the risks involved with private key theft. Generate a key pair for each major location you work from. This helps to reduce the impact when your key gets stolen. When someone obtains access to your private key, your key can be abused in attempts to compromise KDE servers. Well known open source projects have been compromised this way in the past, YOU must help us to make sure that this doesn't happen with KDE servers as well. For that reason it is important to notify sysadmin (at) kde (dot) org immediately when you notice that someone may have had access to your private key for example when a computer on which it was stored has been hacked or infected with a virus, worm or trojan.
If you choose to make a backup of your SSH private key data, please ensure that any such backup is stored in a secure manner as well. For the practical part, the following command can be used to generate a SSH private/public key pair with ssh-keygen -t dsa . This will create a private key as ~/.ssh/id_dsa and a public key as ~/.ssh/id_dsa.pub. There are times when you may want to use a key of a different name to the default, perhaps to use seperate keys for different projects. To let SSH know which key you want to use for KDE.org, you can keep a list of servers and their corresponding keys in ~/.ssh/config. For example, Host svn.kde.org
IdentityFile ~/.ssh.id_dsa_kde
In order to use SSH to access KDE servers you need to send your public key to sysadmin (at) kde (dot) org.
The kde-commits mailinglist carries automatic notifications for all changes made in the KDE SVN repository. The KDE-Commits mailinglist is very high traffic. An alternative is CommitFilter which allows you to get notification for only those areas that interest you.
The easiest way is to use kdesdk/kapptemplate or kdevelop to generate the Makefile.am . Or you can just copy a Makefile.am from another app and install it in a new toplevel directory of existing KDE sources. Or you can start the old way, from scratch, but you'll miss the power of the autoconf/automake framework.
Check developer.kde.org, especially the architecture documents. Check also the kde book.
Well, you are not forced to but it is a _lot_ better. KPart allows powerful code reuse. Dcop allow scriptability and is very powerful. Given how simple it is to use these technology and how widely they are deployed, it is a shame not to use them if you can.
The guide on how to write Makefile.ams is now a separate document, makefile_am_howto.
It uses autoconf and automake with another layer by the means of a program named am_edit. But don't try to understand how to use all that. It is quite complex and the strength of KDE is that you don't actually need to understand that stuff, a core-developer already did that for you. Basically, automake transforms the Makefile.am into a Makefile.in, then am_edit runs and replaces in the Makefile.in all the KDE-specific tags with their real meaning, and configure will create a Makefile out of the Makefile.in
Because KDE is using the GNU tool called "libtool". So the question forks into two: "Why use libtool?" and "Why does libtool create .lo and .la files, and shellscripts?". KDE uses libtool for portability reasons. libtool takes care of the differences between the compilers and especially linkers on various platforms, so that we don't have to bother with that, even when writing shared libraries. The .lo and .la files are used by libtool to add some information (read them, they are plain text), about object files and libraries. For instance, it remembers which libraries a given library depends upon. Without it, we'd still have to write link lines such as -lkparts -lkio -lkdeui -lkdecore -lqt -lXext -lX11 etc. etc. So you may find it a bit strange that things are "hidden" in .libs, but the gain is huge: complete portability, at no cost for the developers.
Use make -f Makefile.cvs It will run all the Makefile generation steps
While hacking a program it might be useful to exclude certain directories from build that would otherwise be recompiled, but don't actually need to be. Also, if you checked out source code that didn't compile and you don't have the time or knowledge to fix the error you might want to turn off compilation of the directory alltogether. There are two cases. Toplevel directories, and subdirectories. For toplevel directories you can simply erase them (or not check them out).
If for some reason you don't want to do that, you can also set DO_NOT_COMPILE="someapp" before calling configure, this will make configure skip "someapp". To only compile very few toplevel dirs, instead of using DO_NOT_COMPILE to exclude most of them, you can list in a file named 'inst-apps', at the toplevel, the toplevel subdirs you want to compile.
To turn off compilation of any directory, including subdirectories, you have to modify the Makefile or Makefile.am files. Makefile.am is not recommended because that file is in KDE SVN and you could accidentally commit your changes. So we'll modify the Makefile instead here:
Open the Makefile in the directory immediately above the directory you want to exclude in a text editor and look for a variable SUBDIRS. It will often look somewhat like
SUBDIRS = share core ui . proxy taskmanager taskbar applets extensions data Just remove the directory that you want to exclude and save your file. A new make will skip the directory you just removed.
Sometimes you'll have to look harder because the SUBDIRS variable consists of a number of other variables:
SUBDIRS = $(COMPILE_FIRST) $(TOPSUBDIRS) $(COMPILE_LAST) Here you have to find the COMPILE_FIRST, TOPSUBDIRS and COMPILE_LAST variables. One of those contains the dir you want to exclude. Remove the directory where you find it and save the Makefile again. To undo your changes you can either regenerate the Makefile from scratch or revert to an older backup (you did make one, did you? :-).
To regenerate a Makefile, just make force-reedit. You can also copy the original line in the file when editing and make it a comment by prefixing a '#' in front of it. Then undoing the change is as easy as making the modified line a comment and removing the comment in the original line.
--enable-debug :
Add debug symbols, disable optimisations and turns logging of kdDebug() on.
The opposite of the previous one: enable optimisations and turns kdDebug() logging off.
Concatenates all .cpp files into one big .all_cpp.cpp file, and compiles it in one go, instead of compiling each .cpp file on its own. This makes the whole compilation much faster, and often leads to better optimised code, but it also requires much more memory. And it often results in compilation errors when headers included by different source files clash one with the other, or when using c static functions with the same name in different source files.
This is a good thing to do at packaging time, but of course not for developers, since a change in one file means recompiling everything. --disable-fast-perl
By default KDE uses perl instead of sh and sed to convert Makefile.in into Makefile. This is an addition to autoconf done by Michael Matz. You can use this option to disable this but it is a lot slower.
If you are a developer, you should definitely compile Qt and KDE with --enable-debug. You will then be able to debug your program even inside Qt and KDE function calls. If you are just a user, you can still use --enable-debug. KDE will occupy more space on your hard disk but it won't slow down your desktop. The advantage is that you get stack trace when an application crash. If you can reproduce a crashing behaviour, go to bugs.kde.org, check that your bug doesn't exist yet and submit it. It will help us improve kde. For Qt, the compilation options are explained in qt-copy/README.qt-copy.
See --enable-final above :) . "make final" uses the all-in-one-file trick in the current directory even if --enable-final wasn't used, and "make no-final" does a normal compilation in the current directory even if --enable-final was used. Include your moc files! Header files declaring a QObject descendant have to be run through moc to produce a .moc file. This .moc file has to be compiled, for which two possibilities exists: compile it separately, or #include it in the C++ file implementing that above mentioned class. The latter is more efficient in term of compilation speed. BTW, kdesdk/scripts/includemocs does this automatically. Buy more ram, a faster machine and another processor. On a bi-PIII 866 MHz with 1GB of RAM, kde compiles at a decent speed :-)))
The strip is done at install. To use it, use "make install-strip" instead of "make install".
If you are working on an existing application, respect the author's indentation. Else, you can use whatever indentation you like.
If you do
QString translatedStuff = i18n("foobar"); translatedStuff will contain the translation of "foobar", while for const char *markedStuff = I18N_NOOP("foobar"); markedStuff will still contain literal "foobar", but translators will know you want "foobar" translated so you can later on do QString translatedStuff = i18n(markedStuff); and get the translation of "foobar", which wouldn't work without that I18N_NOOP.
So, normally you want to just use i18n(), but in cases where you absolutely need to pass something untranslated, but still need to translate it later or in the case that you have something to be translated before the KInstance exists, use I18N_NOOP.
There is a bug in QSpinNumber, that is not corrected yet. Use KSpinNumber instead, it has almost the same features.
This often comes from the moc files not being in sync with the sources, or not linked at all. Check that you are running the right moc. 'which moc' will tell it. Regenerate your moc files (make force-reedit; make clean; make).
Add myClassHeader.kidl to your Makefile.am and run make again.
Stubs are not very documented. A stub allow you to view a dcop registered application as an object whose methods are its dcop slots. Usually, applications have an appnameIface.h file that contains all the dcop slots. Add a appnameIface.stub in your Makefile.am and use the object appnameIface. See for example kdebase/khelpcenter that uses a konqueror stub.
You need am_edit to reparse your Makefile.am to generate the correct Makefile. If it's the first Q_OBJECT you're using in this directory, you'll need to re-run Makefile.cvs or create_makefile from kdesdk/scripts. Otherwise, you can simply run "make force-reedit".
Hmm, don't do that, if some of the classes use the Q_OBJECT macro. The KDE framework (am_edit) doesn't support this very well. Maybe METASOURCES=file.cpp might work for moc files though.
KDE searches its libraries in $KDEDIR/lib and in the lib directory of all the components of $KDEDIRS (note the additional 'S', this different from $KDEDIR). So, while you are still developing your library and don't want to install it, you can use this trick: cd to your development directory, the one where your library is built. Set up KDEDIRS so that it include your development directory: export KDEDIRS=`pwd`:$KDEDIR Create a pseudo lib directory where KDE should find your component: ln -s .libs lib (all the objects and libraries are built in the .libs directory). Run kbuildsycoca to inform KDE that it KDEDIRS has changed.
Now, KDE should find your library when using KTrader or KLibLoader.
If want to install your application privately, configure it with another prefix: for $HOME/kdeprefix, use configure --prefix=$HOME/kdeprefix. Then let KDE know about this prefix: set KDEDIRS to $HOME/kdeprefix:$KDEDIR. To make KDE aware of new prefixes, one can also edit /etc/kderc and add
[Directories] prefixes=/the/new/prefix
but this doesn't answer this specific question ;-)
Make sure to run "kbuildsycoca" after setting the new KDEDIRS.
The mimetype database must be rebuilt when you install new services (such as applications or parts). In theory this happens by itself (kded is watching those directories), but in doubt, run "kbuildsycoca". The best way to debug trader-related problems is to use ktradertest: cd kdelibs/kio/tests; make ktradertest, then run ./ktradertest to see how to use it.
The solution is simple: start new apps from a command line, then they will use the new lib.
The reason is that applications started by other KDE applications (kicker, minicli, konqueror, etc.) are started via kdeinit, which loads the libs when KDE starts. So the "old" version of the libs keep being used. But if you want kdeinit to start using the new libs, simply restart it. This is done by typing kdeinit in a terminal. This is necessary if you can't start things from the command line - e.g. for a kioslave. If you change something in kio, you need to restart kdeinit and kill the running kioslave, so that a new one is started.
Apps are often tempted to link to their part because they of course have much functionality in common. However this is wrong for the reasons below. A lib is something you link to, a module is something you dlopen. You can't dlopen a lib ; you can't link to a module. A lib has a version number and is installed in $libdir (e.g. $KDEDIR/lib) a module doesn't have a version number (in its name), it's more like a binary (we don't have konqueror-1.14.23 either :), and is installed into kde_moduledir (e.g. $KDEDIR/lib/kde3) (which means it's not in the search path for ld.so, so this breaks on systems without -rpath). If you didn't understand the above, don't worry. The point is: you should NOT make your application link to your (or any other) KPart, nor any other kind of dlopened module. The solutions let the app dlopen the part. This is what KOffice does. However this limits the app to the very limited ReadOnlyPart/ReadWritePart API. Keep in mind that you can't call a non-virtual method whose implementation you don't link to. The solution is to define a ReadWritePart-derived class (like we have in koffice: KoDocument), with new virtual methods. Either this derived class has code (and you need a lib shared by the app and the part, see point 2 below), or an abstract interface (header file only) is enough. You can also use known interfaces to child objects of the part instead of changing the base class of the part itself - this is the solution used by e.g. KParts::BrowserExtension. define a common library with the common classes and let both the part and the app use it. That library can be noinst_ or lib_, both work. In the first case the compiled object code is duplicated, in the second case a real versioned lib will be installed. The idea here is that the part itself is not available to the app, but instead the part is a very thin wrapper around the same classes as the app uses. Only KParts-specific stuff remains in the part.
There is a good answer in the kde2 porting instructions. Check kdelibs/KDE2PORTING.html, also there.
You have spotted a bug and you want to write the code to fix it. Or you want to code a specific feature. Sending a patch is very appreciated by developers. A tutorial is available but here is a description of how you should proceed:
Get the latest KDE using SVN to check that the code you want to write has not been added yet. Check the bug database to see if your bug is not worked on. Get in contact with the author. His/her name is in the about box or in the source header. If the project has a mailing-list, browse the archives to see if your bug/feature has not been the subject of any discussion. If you can't find any mailing lists or author, simply write to kde-devel. Post a message explaining your intentions. It is important to inform the author(s) about what you are planning because somebody might already be working on your feature, or a better design could be proposed by the author, or he could give you some good advice. Next step is to code your feature. It is usually a good idea to keep an original at hand and to work on a copy. This allow to check the behaviours of both versions of the code. Respect the author's indentation and naming scheme, code carefully, think about side-effects and test everything many times. Using the latest KDE code, make a diff using either svn diff or a diff -uNp original-dir new-dir. Don't send reversed patch. The first argument of diff should be the old directory and the second the new directory. Send a mail to the author/mailing-list with your patch as attachment (don't forget to attach it :-) ). People usually have some remarks on your work and you must work further on your patch to improve it. It is common to see three or four submission before acceptation.
Ok, you have done it, your code has been included in KDE. You are now fully part of the KDE project. Thanx a lot.
Never make assumptions about the geometry of the "desktop" or the arrangement of the screens. Make use of the following functions from kglobalsettings.h: static QRect KGlobalSettings::splashScreenDesktopGeometry(); static QRect KGlobalSettings::desktopGeometry(const QPoint& point); static QRect KGlobalSettings::desktopGeometry(QWidget *w); Use splashScreenDesktopGeometry() to determine the geometry of the desktop when you want to display an application splash screen. Use desktopGeometry() to determine the geometry of the desktop with respect to a given point on the desktop, or with respect to a given widget. Do not use the Qt class QDesktopWidget to determine these values yourself. The KDE functions take the user's settings into account, something the Qt functions cannot do. It is ideal to try to avoid using the desktop geometry altogether. Your application will be much more standards compliant if you let the window manager place your windows for you. When this is not possible, you have the aforementioned functions available. Please beware that the geometry that is returned from these functions may not start at (0,0)! Do your math correctly! One other caution: Both KWin and the NETWM specification have severe difficulties handling struts with Xinerama or "merged" displays. This can result in dead areas on the screen, for instance if kicker does not span a whole edge. There is not much that can be done about this, and you should try to avoid hacks to circumvent this at this time. We hope to find a proper solution for this soon.
This is almost certainly an installation problem, not a KDE code problem. A number of problems can lead to this, but most likely you have more than one version of Qt laying around and the configure script is calling a different one than KDE is using.
Another thing that may help is to rebuild and reinstall your kdewidgets.so file, which is located in the kdelibs/kdewidgets directory. Note that if you *do* have multiple versions of Qt, this may compile against the wrong one. This problem creeps up on various mailing lists occassionally, so looking at the archives on lists.kde.org may be helpful.
Symbols defined in a C++ anonymous namespace do NOT have internal linkage. Anonymous namespaces only give an unique name for that translation unit and that is it; they don't change the linkage of the symbol at all. Linkage isn't changed on those because the second phase of two-phase name lookup ignores functions with internal linkages. Also, entities with internal linkage cannot be used as template arguments.
Yes. Calling delete on a null pointer is a noop in C++. Having "if (ptr) delete ptr;" is redundant. Doing "ptr = 0;" after a delete is a good idea, especially if the delete can be called on it from a different code path.
You must set the environment variable KDE_DEBUG (to 1 or whatever you want in fact).
A core file is an image of the memory when your application crashed. Using the core file, you can now which variables were set and where your application crashed.
Some distributions disable the generation of core files. To re-enable them, use "ulimit -c unlimited". Once you have a core file for a crash, you can examine it with gdb appname core . This will open gdb on the core file for the given application. Once at the gdb prompt, the most useful command is "bt" which generates a backtrace of the crash. For more information about how to use gdb, see this page.
Yes, you must use kdDebug():
#include <kdebug.h>
kdDebug() << "KMyApp just started" << endl; The syntax is much like cout, you can use many native types between the "<<". This will print out a debugging message, which will automatically be turned off at release time (by --disable-debug). In case you want the message to still be there during releases, because it's a warning or an error, use kdWarning() or kdError(). Components and libraries are advised to use a debug area number, as in kdDebug(1234). For this, the number must be registered in kdelibs/kdecore/kdebug.areas. Debug areas make it possible to turn off or on the debug output for specific area numbers, using the "kdebugdialog" program, which is part of kdebase. "kdebugdialog --fullmode" also permits to control where to log debug output. It is usually not necessary to register area numbers for standalone applications, unless it's so complex that you want to divide the output into several areas. To make it clear: do NOT use qDebug(), this one doesn't get disabled at releases. Also avoid using assert() or kdFatal() which lead to a crash when something goes wrong, never nice for the user. Better detect the error, output a kdWarning or kdError, and recover if possible.
kdDebug() calls are a simple but efficient way to debug an application. gdb, the GNU debugger, is the quickest way to execute step-by-step and investigate variables (prefer the 5.0 version, it is really better than the 4.1.x). Valgrind kdbg is a nice graphical frontend to gdb with a KDE GUI. It has support for many Qt types (including QString). Memory leak tracer : See kdesdk/kmtrace. The README explains it all. kdcop and dcop allow to browse the dcop interface and to easily make dcop calls.
Check this page and kdesdk, there are a bunch of useful scripts there.
Check out kdesdk, and add this line to your ~/.gdbinit : source /path/to/kde/sources/kdesdk/scripts/kde-devel-gdb
Then in gdb you can do printqstring myqstring to see its contents. For instance, QString myqstring = QString::fromLatin1("contents"); can be examined using
(gdb) printqstring myqstring
$1 = "content"
See the kde-devel-gdb file for the other macros it defines.
You must stop just after the main to load the debugging symbols of the shared library. After that, you can debug normally.
One can go as far as creating a gdb macro, to stop right after the part was loaded. For kword, by example, I use :
define startkword break main run break 'KoDocument::KoDocument(int, QWidget *, char const *, QObject *, char const *, bool)' cont
See kdebase/kioslave/DEBUG.howto
Original question list by Philippe Fremy, answers by David Faure.
Contributions from: Marco Krohn, Malte Starostik, Andreas Pour, Waldo Bastian, Lars Knoll, Triskelios, Eric Sigra, Rolf Dubitzky, Martijn Klingens, Karl-Heinz Zimmer, George Staikos.
Please send additional questions, responses or comments to pfremy at kde dot org


text:
UK Double size135 x 190 cm
Other sizes available:
UK Small single size75 x 190 cm
UK Single size90 x 190 cm
UK Small double size120 x 190 cm
UK King size150 x 200 cm
UK Super King size180 x 200 cm
Not sure which size you need?
Try our size guide or contact us for some expert help
The Kayflex Sumptuous Silver mattress is a 20cm deep mattress featuring 5cm high density memory foam, giving your body the support it needs, relieving the stress from your joints at the pressure points.
The Sumptuous Silver mattress has a medium-firm feel, with a removable, quilted knitted removable cover.
This is a fantastic mattress for the price - these are very keenly priced mattresses given the very high specification and the British manfacturing - these are not cheap foreign imitations!
medium-firm feel
Vacuum packed
Free Delivery
This UK Double mattress measures 135 x 190 cm.
This mattress is delivered in 2 - 3 days
This mattress is delivered vacuum packed for ease of transport. When it arrives, simply open the packaging and give the mattress time to expand to it's normal size - this should take no more than 2 hours.
Buy this mattress with any same-sized bed frame and get 5% discount on each!
1x Kayflex Sumptuous Silver 4ft6 Double
1x Flintshire Furniture Aston solid oak 4ft6 Double
1x Kayflex Sumptuous Silver 4ft6 Double
1x Flintshire Furniture Padeswood 4ft6 Double
We've been selling mattresses for decades, and can give you expert, impartial advice about what mattress will best meet your needs.
Whether you are after a quality starter mattress, or a luxurious full bedroom suite, we can help.
We deliver free for all orders to mainland England and Wales. See our deliveries page for details.
We are proud of our reputation, both locally and online. We look after our customers!
Please check out some of our customer reviews below:

subset: commoncrawl


text:
Ted Cruz spoke on the past failures and future hopes of the Republican Party at a Republican event in Ohio last night.
Cruz headlined the Cuyahoga County GOP's annual Lincoln Day dinner held in Independence, Ohio, and used his time on stage to give his vision of Republican success that would reflect the days of Ronald Reagan, according to the Cleveland Plain Dealer.
Cruz said the GOP "got clobbered" in the last election cycle because they failed to win over the American people. He suggested that the party needs to attain three major groups: minorities, young voters, and the "47 percent" former presidential candidate Mitt Romney said he would not worry about.
"The Democrats' story is the Republicans are the party of the rich, the Democrats are the party of everybody else. And if that's the narrative people believe, we'll never win another national election."
However, he sees Obama's second term as a chance for the Republican Party to regain its previous glory.
"In 1980, it took Jimmy Carter to give us Ronald Reagan. And I remain convinced the longest lasting legacy of Barack Obama is going to be a new generation of leaders of the Republican Party who stand for liberty." Cruz said.
Cruz, just two months into his term, and is easily one of the most talked about members of conservative leadership. His outspoken demeanor and against the grain voting has won him high praise and harsh criticism – but Cruz doesn't sound like he's backing down anytime soon.
"For too long politicians from other parties have gone along to get along in Washington, and that's what's gotten us into this mess," Cruz said.


text:
The program is advised for anyone practising Aesthetic Medicine. So, you don't need to worry to attend the class. Yes, when you look at the dermal filler course outline, the candidates will devote the bulk of the course injecting patients that are supplied by our cosmetic treatment program.
The course might be adjusted to fulfil the hottest local and state regulations and to incorporate the very latest advancement. As you're on a training program, cosmetic models on the day won't be expected to pay the expense of full-price clinic treatments. Our training courses will provide you with the hands-on injecting experience required to develop into a safe, competent injector, but should you still want that additional reassurance our trainer will go forever at the conclusion of the phone to provide guidance support and reassurance. You have the fundamental training program, then get a starter Kit Worth 200 to help you with your way to completing 4 case studies. Our BOTOXVISTABEL training courses will supply you with the practical experience and the crucial documentation, permitting you to begin your aesthetic medical enterprise.
If you have the training from reputed institutes, it will provide you with the substantial small business opportunity concerning immense growth and profits within a brief length of time. Aesthetic Botox training is easily the most affordable and intensive courses provided by certified institutes in Florida. Botulinum toxin training will supply you with numerous benefits. Upon finishing the class, you will be supplied with everything you have to begin your aesthetics practice immediately.
With a substantial dental competitive advantage, you'll have the abilities and tools essential to tap into the multi-billion dollar a year business, generating maximum revenue for your practice every year. By then end of the course, you'll have gained the wisdom and experience to begin injecting patients safely and to create wonderful outcomes. The significance of practice is quite vital.
For instance, once a patient is diagnosed with diabetes, it's often confusing about how to handle the condition. Most patients will be comfortable enough to take part in intercourse within two days. Get the instruction you have to present your patients what they want and exactly what you have to expand and confirm the success of your practice. It's possible also to treat patients that aren't great candidates for different kinds of fillers. FDA-approved dermal filler physicians are qualified to understand what sorts of treatments dermal fillers are accepted for. If you're a pharmacist or health professional with independent prescriber status or healthcare qualifications and would love to discover more, then please get in contact.
You can cut back on bruising by using Arnica before and following your injections. You may call for extra injections to accomplish the desired effects. Whether used to take care of medical conditions like blepharospasm or strabismus or cosmetic concerns like furrow lines, a BOTOX injection is a medical procedure that ought to be performed in a controlled medical environment by a qualified physician.
Botox provide them with the capabilities to acquire durable wrinkle reducing results based on their financial limits. Botox is the most common non-surgical injectable treatment in the marketplace today. Where Botox is injected to lessen the impacts of the muscles that cause wrinkles.
Permanent fillers carry an extremely bad record concerning safety and are the most frequent kind of filler related to granuloma formation. Dermal review fillers are among quickest and most non-invasive alternatives for patients trying to rejuvenate and revitalise their youthful look. There are a couple of varieties of dermal fillers on the marketplace. They can be used to treat a wide range he said of indications. They are the second most common non-surgical aesthetic procedure worldwide and is one of the most versatile treatment options available. They are among the most popular ways to reduce wrinkles.
You have to supply the merchandise, and you'll probably charge your patients for their treatment. The precise product used will be related to the demands and wants of the model. There are some different injectable goods on the market.


text:
Difference between revisions of "USB flash installation media"
(→Without overwriting the USB drive)
m (→Without overwriting the USB drive)
|Line 39:
|Line 39:
Next you will need to adjust the boot configuration files in order for your system to boot.
Next you will need to adjust the boot configuration files in order for your system to boot.
From /path/to/usb/arch/boot/syslinux/*.cfgreplace
with either
with either
Revision as of 23:19, 4 February 2012
This page discusses how to put Arch installation media onto a USB key (or "flash drive"). The result will be a LiveCD-like system that will discard all changes when it is shut down. If you would like to install and run Arch Linux on a USB key (ie. with persistent settings), see Installing Arch Linux on a USB key.
- 1 On GNU/Linux
- 2 On Mac OS X
- 3 On Windows
- 4 Old Method from ISO, deprecated
- 5 After booting from the USB stick:
- 6 Notes and Troubleshooting:
On GNU/Linux
Arch USB images
Overwrite the USB drive
Beginning from release 2010.05, all ISO files can be directly written to USB media. Download them from your local mirror. To install, first ensure the USB device is unmounted and then issue the following command:
# dd if=archlinux.iso of=/dev/sd[x]
archlinux.iso is the path to the ISO file and
/dev/sd[x] is your USB device.
/dev/sdx and NOT
/dev/sdx1. This is a very common error!
Without overwriting the USB drive
With release 2011.08.19 or later, you can install the Arch image to USB without overwriting its contents. This is slightly more complicated than copying the image directly, but keeps the drive usable for data storage. Before you begin, make sure that your USB device is formatted as either FAT32, ext2/3/4 or btrfs (for interoperability with other operating systems, you probably want to use FAT32). Also make sure you have syslinux 4.04 installed (older or newer syslinux 4 versions may work, syslinux 3.XX will not work).
First, download and mount the ISO image:
$ mount -o loop /path/to/image/archlinux-XXX.iso /path/to/iso/
Second, mount the USB drive and copy the contents of the /arch folder to its main directory:
$ cp -r /path/to/iso/arch/ /path/to/usb/
The image also contains a /syslinux folder, but you do not need it.
Third, install syslinux to the USB drive:
$ extlinux --install /path/to/usb/arch/boot/syslinux/
Next you will need to adjust the boot configuration files in order for your system to boot.
From /path/to/usb/arch/boot/syslinux/*.cfg, replace:
with either
Labels can be changed with e2label (for ext2/3/4) and dosfslabel (for FAT/FAT32):
# e2label /dev/sdb2 ARCH_201108 # dosfslabel /dev/sdb2 ARCH_201108
If your USB drive has a partition table (most of them do), then you need to install an MBR and make the first partition active:
$ dd bs=440 conv=notrunc count=1 if=/usr/lib/syslinux/mbr.bin of=/dev/sd[x]
where sd[x] is your USB drive's device node (the drive itself, not the first partition).
The partition table should look similar to this one:
$ fdisk -l /dev/sd[x] [...] Device Boot Start End Blocks Id System /dev/sdx1 * 2048 15663103 7830528 b W95 FAT32
As you can see, the first partition (sdx1) has the bootable flag set.
Your USB drive is now bootable.
Another way to make a USB drive bootable, is by using UNetBootin. This application can download most distributions for you and write them to your flash drive. UNetbootin can download the latest Arch core or netinstall iso for you, or you can supply a manually downloaded one.
It might happen that UNetBootin fails to start showing the following error.
** GLib-GIO:ERROR:gdbusconnection.c:2270:initable_init: assertion failed: (connection->initialization_error == NULL)
If this happens try to start it with the following command as normal user.
# su -c "dbus-launch --exit-with-session unetbootin"
If using a version of UNetbootin older than 549, then after it finishes, you will have to adjust syslinux.cfg on the root of your flash drive before rebooting. Correct the "archisolabel=" parameter to reflect the label of the USB drive you used, i.e.:
append initrd=/ubninit archisolabel=<label> tmpfs_size=75% locale=en_US.UTF-8
A third method is to follow the instructions about Booting multiple LiveCD's from a single USB stick. In a nutshell, you create 2 partitions on your USB drive, copy the Gujin boot loader image to the first partition, and copy Arch's ISO to the second.
On Mac OS X
To be able to use dd on your usb device on a Mac you have to do some special maneuvers. First of all insert your usb device, OS X will automount it, and run
diskutil list
in Terminal.app. Figure out what your usb device is called - mine was called /dev/disk1. (Just use the `mount` command or `sudo dmesg | tail`.) Now you run
diskutil unmountDisk /dev/disk1
to unmount the partitions on the device (i.e., /dev/disk1s1) while keeping the device proper (i.e., /dev/disk1). Now we can continue in accordance with the Linux instructions above (but use bs=8192 if you are using the OS X dd, the number comes from 1024*8).
dd if=image.iso of=/dev/disk1 bs=8192 20480+0 records in 20480+0 records out 167772160 bytes transferred in 220.016918 secs (762542 bytes/sec)
it is probably a good idea to eject your drive before physical removal at this point.
diskutil eject /dev/disk1
On Windows
To write the USB image on Windows, you will need either Image Writer for Windows, Linux Live USB Creator, Universal USB Installer, flashnul (English version of the page), Cygwin, or UNetBootin.
Image Writer for Windows
Image Writer is the only native Windows image writer (except Cygwin) that writes the whole image without any changes (like dd) - other writers unpack the image and then copy all the files to a FAT filesystem.
Download win32 disk imager from http://launchpad.net/win32-image-writer. Run the program. Select the arch image-file and usb stick. The Win32 Disk Imager's file browser assumes image files end with .img, so if the image-file you have selected ends with .iso, you will have to type its name in manually; this difference in suffixes is simply cosmetic however, the image will be written fine regardless. Click on the write button. Now you should be able to boot from the usb stick and install Arch Linux from it.
Linux Live USB Creator
LiLi USB Creator can be used to create a bootable USB key for Arch either using a manually downloaded iso or automatically downloading the iso itself. It also supports automatic installation of VirtualBox on the USB key which can be used to boot Arch inside Windows.
The steps involved are well described by LiLi itself but can be summarized to: download & install LiLi, download Arch iso, insert USB key, start LiLi & choose drive (1), source (2), options (4) and create (5).
I have tested all features except the automatic download of iso, and all works and are quite fast.
The Universal USB Installer
I had problems booting from a USB key created with flashnul under Windows or dd under Linux. I gave a try to the "Universal USB Installer" and it created the bootable USB key which worked fine.
The Flashnul Way
From a command prompt, invoke flashnul with -p, and determine which device index is your USB drive. For example, my output looks like this:
C:\>flashnul -p Avaible physical drives: Avaible logical disks: C:\ D:\ E:\
In my case, it is drive E:
When you have determined which device is the correct one, you can write the image to your drive, by invoking flashnul with the device index, -L, and the path to your image. In my case, it would be
C:\>flashnul E: -L path\to\arch.iso
As long as you are really sure you want to write the data, type yes, then wait a bit for it to write. If you get an access denied error, close any Explorer windows you have open.
If under Vista or Win7, you should open the console as administrator, or else flashnul will fail to open the stick as a block device and will only be able to write via the drive handle windows provides
Note: Confirmed that you need to use drive letter as opposed to number. flashnul 1rc1, Windows 7 x64. -bgalakazam
The Cygwin Way
Make sure your cygwin installation contains the dd package. Or if you do not want to install Cygwin, you can simply download dd for windows from http://www.chrysocome.net/dd.
Place your image file in your home directory, in my case it is:
Run cygwin as administrator (required for cygwin to access hardware). To write to your USB drive use the following command:
dd if=image.iso of=\\.\[x]:
where image.iso is the path to the iso-image file within the cygwin directory and \\.\[x]: is your USB device where x is the windows designated letter, in my case "\\.\d:".
On cygwin 6.0 find out the correct partition with
cat /proc/partitions
and write the ISO image with the information from the output. Example:
dd if=image.iso of=/dev/sdb
Another way to make a USB drive bootable, is by using UNetBootin (see above)
Old Method from ISO, deprecated
- Prepare USB stick:
The arch-ftp.img is about 150 MB, so it should fit on a 256 MB USB stick. The arch-core.img is ~300 MB and should fit on a 512 MB stick.
Partition the USB stick.
Create one partition with FAT16 type, make it bootable. Remember its name, such as /dev/sd[x]1.
cfdisk /dev/sd[x]
Make a FAT16 filesystem (you need dosfstools)
mkdosfs /dev/sd[x]1
Get the arch-base install ISO from archlinux.org
wget http://www.archlinux.org/iso/2010.05/archlinux-2010.05-netinstall-dual.iso.torrent pacman -Qq rtorrent || pacman -S rtorrent rtorrent archlinux-2010.05-netinstall-dual.iso.torrent
Mount the iso to an temporary directory
mkdir -p /mnt/archcd mount -o loop /Path/to/iso /mnt/archcd
Mount the USB Stick
mkdir -p /mnt/usb/ mount /dev/sd[x]1 /mnt/usb/
Copy the .iso to the USB Stick
cp -ra /mnt/archcd/* /mnt/usb/
Copy the boot data
cd /mnt/usb/isolinux/ cp vmlinuz /mnt/usb/ cp initrd.img /mnt/usb/ cp boot.* /mnt/usb/ cp isolinux.cfg /mnt/usb/syslinux.cfg
cd /mnt/usb/ cp boot/isolinux/isolinux.cfg ./syslinux.cfg sed /IPAPPEND/d syslinux.cfg cp /usr/lib/syslinux/vesamenu.c32 ./ cp /usr/lib/syslinux/chain.c32 ./ cp /usr/lib/syslinux/reboot.c32 ./
Install MBR and syslinux(1)
lilo -M /dev/sd[x] mbr syslinux -s /dev/sd[x]1
syslinux --install /dev/sd[x]1 cat /usr/lib/syslinux/mbr.bin > /dev/sd[x]
After booting from the USB stick:
Start the installation by logging in as root and invoke the command "/arch/setup".
The installer should mount the source media automatically. If it fails you can manually mount the source media on the stick to the /src directory with the following command:
mount /dev/sd[x] /src
Notes and Troubleshooting:
(1) Using lilo is not really needed because syslinux does the "floppy" loading stuff. But if you get some error like "Can't load operating system" you have to perform the lilo command.
(2) If you get "Cluster sizes larger than 16K not supported" error when booting this means you need to install more recent version of syslinux.
(3) Space not used on the USB stick can still be used for storing files... Use a utility like gparted and add a partition to the unused space.


text:
Most people miss out on the pleasure of undressing with and for their partners. Stripping out of, or being stripped out of our daily wear and into something sexy. or nothing at all, is one of life's big turn ons. It's also a visual signal that we're shifting out of our work-a-day world and entering the realm of sensuality. Stripping is an art form, ya know. In fact we all could all learn a lesson or two from the folks who do this for a living.
Few of us are natural born exhibitionists. The majority of us don't know squat about how to slink out of our clothes without looking ridiculous. Like they say in the business, real strippers are born not made. OK, so most of us aren't naturals, and I include myself in this group. But that doesn't mean we can't pick up a few of the finer points of this ancient art form and apply them to our own situation.
First and foremost, we're gonna have to leave as many of our inhibitions and body issues as possible at the door. If you're so self-critical as to think you'll be absurd if you try, you mind as well drop the whole freakin' thing right here. But if you're into having some fun, even if it's at your own expense, then step right up, cuz we're gonna make you a star!
If you plan on stripping for someone you know well, like your partner; you probably already know a lot about what turns him or her on. Ya know, those little sexual peccadilloes we all have — fishnet stockings, a g-string and high heels, a white jock, leather chaps, armbands, and a cowboy hat, a Catholic schoolgirl plaid skirt, anklets and Mary Janes, things like that. These things well be the building blocks of your outfit. Remember you will be stripping down to something before there is nothing left to remove. So consider your theme and then layer from there. Each successive layer removed should reveal an even more tantalizing layer underneath.
• Don't wear something that's gonna be a bitch to take off.
• Have enough layers to keep the show interesting
Next consider the venue for your show. Since there's gonna be a whole lot of dancing around, you'll want the space to be big enough so you don't have to cramp your style. At the same time you'll want the environment to be warm and intimate. Set the mood with the proper lighting. And your venue must include some kind of sound system, even if it's a portable boom box.
Either arrange your space so that your audience is seated in the middle of your performance area — so that you can slink and shimmy around him/her. Or consider a little homemade stage with curtains that you can use as part of your performance
Think about props — a chair or stool al la Cabaret works. You'll want something to taunt your audience with; a seductive hat, a feather boa, a ridding crop, gloves — opera length or leather. There are even collapsible dancer poles available online for a touch of the authentic.
- Keep the venue simple. You're the star, not the space.
- Mood lighting is essential; it'll make or break your show!
The next consideration is the music. This is really important element to a successful show. A miscalculation here will fuck up your whole routine. Go the distance and compile a few different tempos on a tape, CD or MP3 player to really impress your audience. Arrange your music so that it will automatically flow from one tempo or song to the next. Move from a faster disco tempo at the beginning of your show — to get you and your audience's blood pumping. Then a slower tempo Soul or Rhythm and Blues number for gettin down to business. Don't choose something too slow or maudlin, it'll destroy the sexy mood and the interest of your audience.
- Your music selections should drip with sex.
- Don't interrupt your show to change the tape or CD.
To add an air of authenticity, adhere to strict strip club rules. Your audience is not allowed to touch you. And you are prohibited from directly touching your audience. Keep your communication non-verbal. Your audience must remain seated throughout. These rules will enhance the tease effect. If you want to heighten the effect, consider restraining your audience with a little erotic bondage. A silk handkerchief, or a satin scarf works to secure his/her hands and feet. Or you could always pull out all the plugs and get yourself some swell bondage gear online. I'm thinkin' some leather restraints and cuffs will do the trick.
- The strip is to tease and entice. So be naughty as well as nice.
- You control the show and the audience.
When you're ready to begin the show, start your music and seductively move or dance towards your audience. Let him/her have a good look at you and you're outfit — front and back. Approach your audience then gyrate in front of him/her. Be sure to include some deep bending front and back. Let your audience get a load of the goods! Get as close to your audience as possible without actually touching. Close enough for him/her to smell you, or for you to swipe him/her with something you're wearing. This is where a nice boa or leather flogger will come in handy.
Continue to tease and taunt and keep moving. Squat or use one of your props to lean against or partially sit and seductively open your legs or show your ass. Keep you hands busy on your body, stroking yourself, reaching into your outfit to fondle yourself. Feel free to touch your audience, but never with your hands, only with your props.
- Completely dominate your audience through visuals.
- Please through tease.
After this initial dance, move away from your audience and start the main show; the strip. When you shuck each article of clothing, don't just remove it; tease with it. Toss each discarded article to you audience, or drag it over him/her. Being unable to touch you will enhance his/her sense of smell. Use this to your advantage. Wipe your clothing on your body before tossing it to your audience. The more intimate articles: bra, stockings, underwear, jock or what have you could be wrapped around his/her head and face.
Strip slowly and erotically; reveal only an inch or two of skin at a time. If you are about to reveal something on your front, turn your back on your audience first. If you're gonna reveal your ass; start by facing your audience, then seductively turn around.
- Build on the anticipation. Make your audience want more.
- Stay in rhythm with your music.
Then, once you're completely naked, approach your audience and present yourself in all your glory. You should be deliciously sweaty and aroused by now. Using one of your props, a dildo perhaps, wipe your breasts, your crotch and bring it close to your audience's face. Try a lap dance or pull his/her face into your breasts or crotch. Get on all fours and seductively loosen his/her clothing. Your audience will still bound to his/her chair, so you can have your way with him/her. While on the floor use your feet to stroke his/her crotch.
Turn up the heat by masturbating for your audience. Tease or lick your audience's tits, finger her pussy, or diddle his cock. As your show concludes untie your partner and lead him/her to a full-on fuck.
Good luck


text:
Every year, over 250 000 public authorities in the EU spend around 14% of GDP on the purchase of services, works and supplies. In many sectors such as energy, transport, waste management, social protection and the provision of health or education services, public authorities are the principal buyers. Public procurement refers to the process by which public authorities, such as government departments or local authorities, purchase work, goods or services from companies. Examples include the building of a state school, purchasing furniture for a public prosecutor's office and contracting cleaning services for a public university.
To create a level playing field for all businesses across Europe, EU law sets out minimum harmonised public procurement rules. These rules organise the way public authorities and certain public utility operators purchase goods, works and services. They are transposed into national legislation and apply to tenders whose monetary value exceeds a certain amount. For tenders of lower value, national rules apply. Nevertheless, these national rules also have to respect the general principles of EU law.
This website provides information on European public procurement policies drawn-up by the European Commission. A general introduction to public procurement can also be found on Your Europe. For practical information, for instance on current business opportunities (Tenders Electronic Daily) or on how to upload calls for tenders, please visit the Publication Office's SIMAP website.
The European Commission's public procurement strategy, adopted in October 2017, focuses on six strategic policy priorities. It aims to improve EU public procurement practices in a collaborative manner by working with public authorities and other stakeholders.
EU directives on public procurement cover tenders that are expected to be worth more than a given threshold. The core principles of these directives are transparency, equal treatment, open competition, and sound procedural management. They are designed to achieve a procurement market that is competitive, open, and well regulated. This is essential for putting public funds to good use.
The section on legal rules, implementation and enforcement covers current public procurement rules, upcoming modernised rules entering into force in 2016, and the monitoring and enforcement of rules including the possibility to file a complaint.
E-procurement refers to the use of electronic communications by public sector organisations when buying supplies and services or tendering public works. Increasing the use of e-procurement in Europe can generate significant savings for European taxpayers. These savings would maximise the efficiency of public spending in the current context of fiscal constraints. E-procurement can also provide a new source of economic growth and jobs, including by facilitating access to public procurement contracts by small and medium-sized enterprises.
The section on e-procurement contains information about the EU's e-procurement strategy and links to various electronic tools.
Accounting for 15-20% of global GDP, public procurement represents a substantial portion of the EU economy and the economies of many countries around the world. Public procurement commitments under the World Trade Organization's Agreement on Public Procurement (GPA) have been estimated at around EUR 1.3 trillion.
However, in contrast to the EU policy favouring greater openness, many non-EU countries are reluctant to open their public procurement markets to international competition. The EU advocates open international public procurement markets for certain goods and services, and works to help EU companies get access to global public procurement markets.
The EU also collaborates with EU candidate countries and potential candidates to ensure that their public procurement sectors are compatible with EU rules, and negotiates with other countries in the framework of trade negotiations. It holds regulatory dialogues with countries having important public procurement sectors as well.
The section on international public procurement provides information on GPA and free trade agreement (FTA) negotiations, the International Procurement Instrument, and cooperation with enlargement and neighborhood countries.
This section has studies, data and expert groups related to public procurement that have been commissioned or organised by the European Comission.
The section on information on EU countries includes Single Market Scoreboard monitoring and the implementation of EU public procurement rules in EU countries, as well as links to national public procurement websites and national public procurement strategies.


text:
A Christian-based, non-profit organization that works through local churches to provide support for mothers with preschool-aged children. Babysitting is available. Activities include, Brief lessons; simultaneous program for children known as MOPPETS; crafts; small group discussions; some chapters feature breakfast. Annual fee of $23.95.
Meetings are held September through late May, call for more information.
Edit ModuleShow Tags


text:
Dr Rowland Stout
MSc Sussex, BA BPhil DPhil Oxf
Lecturer in Philosophy
Academic subject(s):
It is thanks to the regular support of thousands of alumni that Balliol is a college that is accessible to talented students whatever their background.
Your donations support scholarships and bursaries, outreach activities, tutorial Fellowships, student sports clubs and societies, and much else. Find out more
Balliol College is a registered charity in England and Wales (No. 1144032)
All content © Balliol College
Site by Agile Collective


text:
[Skip to content]
How bitumen technology solutions are solving paving problems around the world
This month we hear how additives can bring RAP back from the dead and fight the ravages of salt damage, how pellets reach parts that PMB can't and how Shell and WeedsWest are expanding their respective businesses - Kristina Smith writes
Shell's John Read explains adaptable bitumen developments
Shell's highly innovative bitumen and asphalt solutions are helping create future-ready urban road networks around the world to meet the needs of today and tomorrow. Shell's general manager of bitumen technology, Professor John Read, takes a look at some of the company's game-changing ideas.
The next 30 or so years will see a significant transformation in the way we live. Whereas almost 75%...
Ammann pushes the utilisation rate of recycled asphalt even higher
The Ammann team was confident it had a game-changer on its stand when the 2007 bauma exhibition opened in Munich. The company's RAH100 asphalt dryer was about to take a massive step forward for the global highway industry and to lead the market for years to come
Ammann's RAH100 wasn't a simple upgrade of an existing product. It was much bigger than that. The dryer offered the ability to...
All Products
All News
All Features


text:
Welcome to Classic Industries® v6.1
America's First Choice In Restoration
and Performance Parts and Accessories
and Performance Parts and Accessories
Toll Free1.800.854.1280
Currently Shopping
VC08 - 1968-77 350CI / 5.7L V8 Remanufactured ATK Engine with Tin
At Classic Industries®, we know that supplying a great product is only part of the job. ATK shares our philosophy. ATK is here to serve you, from the first phone call, their job is to provide you with solutions and support.
All of ATK's manufacturing facilities have achieved both QS-9000 and ISO 9001 certification levels, one of the few engine remanufacturers in the world to have done so. In addition, ATK's parent company VEGE Motoren has also achieved ISO 9001 certification. This is p articularly significant as it represents both …
Product #: VC08
Arriving Soon!
MSRP: $2133.99 ea
Classic: $1939.99 ea


text:
We recommend a couple of areas in the city near the hotel. However, before that, nothing better than a good planning, as there is nowhere better to do so than your own home from home to get started.
The Hotel Leonor de Aquitania has Tempo Lounge Bar, without doubt the most sophisticated and pleasant bar in the Old Town. Here we offer you chilled-out music and chilled drinks prepared in front of you. Check out our exclusive offers and promotions for guests.
Old Town
In the Old Town itself, is the best area to discover the magic of Cuenca's nightlife and enjoy a unique and bohemian atmosphere in stunning bars that have been set up in old buildings, most of them restored with great charm where you can also enjoy excellent Spanish music.
One of the most interesting options is Lolita Lounge Bar, next to the Plaza Mayor and in front of a statue of Alfonso VIII. Excellent cocktails and drink preparation, a large variety of gins and, weather permitting, a wonderful terrace.
La Calle
It is the youngest and liveliest area of the city for its nightlife. It is a street filled with bars, pubs and music bars for all tastes: disco, Latin, rock, etc.
People of all ages come here on Saturdays as there are places for all tastes and all hours. For over 40s, Gavanna is the best place to go but if you want something more daring, People gathers the most activity and young people.
However, the night does not finish when all the pubs close. Now is the time for Divinna, the newest and most surprising club in the city, inaugurated recently just a 100 yards away from La Calle area.
Do you still want more? At reception we will tell you where you can go for breakfast and try some delicious churros con chocolate.


text:
NathallieStar video. More videos (11)Free chat with NathallieStar
Free chat with NathallieStar
Hello there guys ! Charming and shy, I want to find the one who wants to share his fantasies with me, who wants me to be part of his dreams. My name is Nathallie, I am a stunning beautiful passionate woman, very playful and friendly with catching eyes and


text:
We've heard the news, now we've got hands-on pics of the brand-spanking new iPad 2 from the event in London.
After sitting through almost an hour and 20 minutes of a presentation from Apple's top brass, we've managed to get an ever-so quick hands-on with the super-thin device, in order to bring you an initial batch of live pics before settling in for a longer play later tonight.
The crux of it is that it's the same as the iPad, but thinner, lighter and noticeably faster than the first outing, released in the UK just 10 months ago.
Actual specs include a new A5 chip that is dual-core (twice the speed of the original's CPU speed apparently) and a new graphics engine that is 9x faster.
It also has the same 10-hour battery life as the original despite being 33 per cent thinner at 8.8mm (thinner than an iPhone 4) and weighing 0.2lb less at 1.3lbs (0.68kg).
And yes, it does pack two cameras; one at the front and one at the back. Plus, guess what? It'll be available in black and white - from day one. Yay!
In our brief play we jumped on FaceTime - which was good (we would love to see Skype support for the camera though) and had a quick play with PhotoBooth too.
PhotoBooth is like HTC's SnapBooth (or whatever it's called), and is a rather pointless affair that you'll use for around 10 minutes before never touching again.
When you're done with the device itself you'll be ecstatic about the new Smart Cover. It's Smart because it uses magnets, and it's a cover because it only protects the screen not the back of the device.
Copying a trick by RIM some decades ago (they used a magnet for a belt clip - how retro) the case, which Steve Jobs tells us is made from space suits, goes some way to protecting the device, but not all of it. It will be interesting to see whether this can withstand the rigour of your bag.
If that all sounds a bit downbeat, it shouldn't be. It's still looking like a cracking device that the other tablets of this world - from HTC, Samsung, Motorola and RIM - will struggle to take on. It is, though, a device that so far looks to slightly refine the first outing, rather than be the second coming the Apple faithful were perhaps calling for.
Sometimes the rumour mill can be just as damaging as they can be helpful when it comes to generating buzz.
The pricing will match what is currently on offer with the original iPad. It'll start shipping on 11 March in the US and 25 March in 26 more countries including the UK.
UPDATE: Following a much longer play with the new tablet from Apple we've posted a First Look of the new Apple iPad 2.


text:
The District's budget, linked below, contains the assessment to be levied against each property, broken down into operation and maintenance (O&M) and debt. Prior to September of each year, the District Board adopts a budget for the following fiscal year, which runs from October 1st through September 30th.
Adopted Budgets


text:
Iconic Mt Taranaki - Roadside Stories
A Manatū Taonga audio guide to the history of Mt Taranaki.
Check out the Ministry for Culture and Heritage's audio guide to Mt Taranaki in the Video tab.
At the centre of Taranaki is the dramatic volcanic cone of Mt Taranaki, named Mt Egmont in 1770 by British explorer James Cook. The mountain's lava flows and volcanic debris are the source of Taranaki's rich soils and dairy-farming wealth, and its distinctive snowy cone has featured in advertising, murals, military badges and assorted logos.
Battle of the mountains
Taranaki region: the mountain
Egmont National Park
Eruptions in early history
Egmont National Park
Archival audio sourced from Radio New Zealand Sound Archives. Sound files may not be reused without permission from Radio New Zealand Sound Archives (Reference number CD2491).
Roadside Stories are a series of audio guides to places of interest on major road trips in New Zealand. Each guide tells the story of an attraction along the way -- its people, its history, its cultural and natural significance. For more information about Roadside Stories visit http://www.mch.govt.nz/roadside/


text:
NCSF Newsletter: 1st Quarter 2011
In this issue
- Letter from the Chair
- Boston Annual Meeting
- Interview with a Coalition Partner
- DSM Revision Project a Success
- Why support the NCSF?
From the Chair
By: Leigha Fleming
NCSF Board Chair
Hello to all of you and an especially warm greeting to all of our supporting and coalition partners. 2010 has been an exciting year for NCSF. We had some major successes with the DSM revision and the progress of our Consent Counts project. We're excited about the completion of website overhaul which seems like it has been years in the making. We hired Devious Designs in the fall of 2010 to take over the website overhaul and we fully expect them to deliver on their promised completion date of mid-February. Externally, like many non-profit organizations, our funding which is solely reliant on donations, has dropped off some due to the economic recession. We're extremely proud that we remain debt-free and we are operating in the black.
NCSF's work is more than just providing immediate assistance when an organization, individual or business has trouble because of its BDSM, swing, or poly interests and activities. Our overall strategy is shaped by the belief that true social change comes in helping shape the tone and tenor of the conversation around personal privacy and consensual adult sexual expression. Our efforts in our media outreach program along with our educational outreach program offerings are key in helping change and set the tone of that conversation. I'm often reminded that social change is more than often not achieved by an insistent, persistent, consistent drive for change rather than radical revolution.
As the only organization dedicated the BDSM, swing, and poly communities, now entering its second decade of active work, we continue to meet the challenges of the 21st century full steam ahead, with our heads high and activism energy shining brightly. Thank you for being a part of this work.
Happy New Year!
Leigha Fleming
Board Chair
Annual Meeting of the CP Reps
Boston this March!
By: Opn Heartd
CP Rep Mob New England & The New England Leather Alliance
Hi, fellow CP reps!
I've been NELA (www.neleatheralliance.org) and Mob's (www.mobnewengland.or) CP rep for several years now, working with these groups to spread the word about NCSF's media updates, incident response program, and special projects like Consent Counts and the Kink-Aware Professionals list. I've attended the annual meetings, networking and brainstorming with other CP reps and the NCSF board and staff members. We've read minutes (hot!), we have had break-out sessions, we've voted! I come away from these weekend-long meetings re-energized and inspired by my fellow activists who work so hard to defend the rights of kinky, swing, and poly consenting adults.
- Coalition Partner representatives will be meeting on March 25th - 27th, 2011 a river view away from Boston to discuss how NCSF has progressed so far and to plan for NCSF's next year.
- We've secured a great meeting space just a couple blocks from a terrific hotel offering us an excellent group rate, surrounded by restaurants, and just steps from the nation's oldest and fourth largest transit system, the T ( www.mbta.com ) so that Boston sightseeing will be just a ten-minute ride away. (The hotel is even a super-easy T ride from the airport, too!)
- Local groups are already fundraising to help cover the expense of meals served throughout the meeting weekend, to help make the trip affordable for meeting attendees.
- A Friday night group meal and presentation, open to meeting attendees and the local community, are in the works.
- Selected members of the local community will be invited to attend the meeting in hopes of encouraging continued NCSF support and fanning the fires under folks who have been curious but not quite sure how they can best help NCSF yet.
- A local party host is holding a private play party that Saturday night and CP reps are invited!
- Once the weekend-long meeting is wrapped up, we are planning another opportunity for the local community to join in on the NCSF fun on Sunday afternoon with another presentation.
The board is still continuing to work on programming and will post an official schedule and travel details once everything is set, but on behalf of Boston and all of New England's NCSF supporters and cheerleaders, I hope to see a TON of you out here in March.
While I'm waiting for the NCSF Annual Meeting to happen already (!), I am keeping busy spreading the good NCSF word. Since returning from the Seattle CP rep Annual Meeting in March of this year all fired up, I've tabled for NCSF and organized / co-organized some really fun NCSF fundraisers. I remember when fundraising felt overwhelming and impossible to me when I first became a CP rep, but I'm in the groove now and am proud of how I've been able to offer generous people a bit of awesome fun in return:
- Mob Speed Mingling and Play Party in April: Party attendees spent the first chunk of the party getting to know each other rapid-fire style; imagine musical chairs combined with kinky photos!
- Feet First NCSF Fundraiser in July: Service providers from various groups donated their time to tickle toes, black boots, and massage feet while attendees of the Fetish Fair Fleamarket donated cash to NCSF.
- Mob Zipper Night in July: With donated clothespins and twine, attendees did arts and crafts to create clothespin zippers which we used on each other at the play party afterward.
- Mob First Aid Class / CPR Certification and MEDIC! Play Party in October: A kink-friendly EMT certified attendees at this two-day training and we all dressed up in medical costumes for the Saturday night play party.
- Princess Kali (www.kinkacademy.com) Flogging Workshop and Flog-Oh!-Matic Mob Play Party this month: After Princess Kali ran this hands-on workshop, we all were eager to try out our new skills on each other at the play party -- after thorough negotiations, of course!
Last night, working with Princess Kali and Miss Savannah Sly (who both donated their time and filming equipment and expertise on behalf of Kink Academy) and NCSF's own wonderful Vivienne, I helped organize a filming of a very fun and campy NCSF infomercial with local volunteer actors. I won't give anything away before it all gets edited and is ready to be shared WITH THE WORLD, but there was spandex, a snowman wrapped in a baby blanket, and a lot of laughing involved.
This coming May, I am co-producing a brand-new queer-focused kink conference -- Queer PlayCon (http://fetlife.com/events/33367), an educational and social weekend for queers and their allies, 21+. We are planning two mini NCSF fundraisers at Queer PlayCon and all profits after our expenses and presenter fees will be going to NCSF.
A lot of my play-focused fundraising events have been held in private venues because Boston (all of Massachusetts, really) does not have a public dungeon space. Something like percussion play between consenting adults is not legal here. Queer PlayCon will be held in a Hartford, Connecticut playspace where consenting adults can indeed legally spank, cane, and flog each other. Boston would love to have a legal play space, too, which is one reason I believe in supporting NCSF's good work, creating a political, legal and social environment in the US that advances equal rights for consenting adults who engage in alternative sexual and relationship expressions.
I hope I get to see a lot of my fellow CP reps for a fun and interesting hop from Freedom Trail to Sexual Freedom in Boston in March 2011!
CP Rep for Mob New England and the New England Leather Alliance
Interview with a CP
Adventures in Sexuality (AIS)
By: Julian Wolf
Barak and Sheba are the founders and owners of Adventures in Sexuality (AIS). When asked about their role in AIS, the first thing they wrote was, "While we founded it, hold the paper on the LLC, and continue to guide and organize AIS - we don't really think of AIS as our 'property.' It really belongs to the Central Ohio community and the members." We asked them a handful of other questions, which they were gracious enough to share the answers with us.
What type of relationship does Adventures in Sexuality have with the National Coalition for Sexual Freedom?
"Adventures In Sexuality (AIS) is a Coalition Partner of the NCSF. We have been involved since Sheba went to a Media Relations class at a major DC event 3-4 years ago. Currently, AIS has a good and open relationship with the NCSF, including personal contact via phone, e-mail and mutual support at events and beyond."
What type of a presence does NCSF have at your large events?
AIS has requested an NCSF presence at the events, including Winter Wickedness and COPE, since Jan 09. The NCSF has regularly attended with staff members, literature, and a table in the vending area. Also, they have provided some keynote remarks and been open and available to the Event Participants.
How has NCSF supported AIS events?
"Aside from being a legal resource, the NCSF began advising AIS 4 years ago. We initially contacted Susan to review and brief us on our website. She was very quick to get back with us, and pointed out some legal pitfalls immediately. Furthermore, she indicated some legal aspects to consider when we run events, meetings, and the like. We have since adopted many of those suggestions, and integrated the processes she shared to decrease our liability.
At AIS Events, the NCSF has sent representatives have staffed a resource and informational booth. At Winter Wickedness 2009, the NCSF stepped directly into the fray. We were under a significant multi-directional assault by the radical right. The NCSF advised us , assisted by launching a National Ad Campaign, and handled the media."
How did you decide on "Adventures in Sexuality" as the name of your organization?
We wanted a name for the organization that encompassed everything we had enjoyed within our creative sexual experiences. We weren't "Leather" per se, and we weren't just kinky. Our history included spiritual, energetic, sexual and ecstatic practices. As we brainstormed about it, we discovered that our paradigm was one of an ongoing journey - hence - our "Adventures In Sexuality."
What are the goals of AIS?
"Originally, it was just to have fun. It has evolved significantly over the past 5-6 years. One of our shorter term goals is to assist in building a kink community that is "on par" with the larger cities, New York, DC, San Francisco, etc... Although our organizational goals (and our personal resolve) were re-forged with the WW09 conflict with the radical right. Our ongoing goals - are contained in the Mission Statement:
AIS in an ever growing and evolving Web and Real Time group dedicated to the goal of assuring a healthy and accepting space for sexual freedom.
AIS is committed to providing a space for fun, unity, awareness and social interaction between all individuals involved in open relationships & BDSM alternative lifestyles.
AIS works toward creating a more unified Ohio kink community by opening communication with Ohio Leather Groups, assisting with joint events, and promoting cross group attendance and fellowship among groups.
AIS stands by the precepts of SSC (safe, sane and consensual) and RACK (Risk Aware Consensual Kink) practices of fetish and alternative forms of sexual expression.
Furthermore, AIS aims to promote a safe environment for members and non-members to gather and interact in a relaxed setting. We intend to promote honesty, openness, happiness, goodwill, friendship and acceptance within Ohio, and Nationally; with a focus on persons involved in Leather, Fetish, BDSM or Sexual Alternative Lifestyle regardless of race, religion, gender, or sexual preference."
How has founding and owning AIS affected your lives?
"It has really been a fascinating journey for both of us. We started AIS because we felt there was so much more to discover and we wanted to bring it here. In our time organizing AIS, we have really come to a new depth of communication. It has become an ongoing process of clarifying many of our needs, wants and desires. We have discovered and tested our boundaries, and learned more about using our voices. We have opened up a new facet of our sexual and energetic selves and continue to grow as a couple.
While it is a bit of work, AIS allows us to work together to co-create events, parties, meetings, and import fantastic experiences for ourselves, our friends, and for the Central Ohio community. Being part of a family, a community, here in Columbus has reinforced our desire to give back, and help protect what we all are building."
You can find out more about AIS at www.adventuresinsexuality.org. Barak and Sheba are on Fetlife (as Barak, brat_sheba and BarakNSheba) and have their own website at www.panpolybdsm.com. "We are just very excited that the community continues to support, encourage and share this journey with us. We are really looking forward to seeing what comes next!"
NCSF's DSM Revision Project is Successful in 2010
By: Susan Wright
NCSF Media Relations
One of the ways we can see the positive affect of NCSF's DSM Revision Project is in the outcome of child custody cases. NCSF's Incident Response program helps almost 500 people a year: 132 people asked for help with child custody/divorce cases in 2009, while 154 people asked for help with the same in 2008. NCSF provides expert referrals, educates lawyers and social service professionals, and supplies the research and information that can convince family court judges to allow kinky parents to keep custody of their kids.
Five years ago, NCSF's success rate was approximately 20% when it came to refuting the false contention that a parent is unfit because they're involved in BDSM, swinging or polyamory. Today, that success rate has risen to 50%.
A large part of this success is due to NCSF's efforts to change the tone of the conversation in media and politics. In 2010, NCSF staff were successful in persuading the American Psychiatric Association to depathologize Sexual Sadism, Sexual Masochism, Fetishism and cross-dressing. Since then, family court judges have cited the proposed revisions for the DSM-V (that have not even been published yet) as the reason for dismissing challenges to child custody due to a parent's alternative sexuality.
In the years ahead, with your support, NCSF will continue to make strides to achieve equality for all consenting adults no matter who they love or how they have sex.
Why should you support the NCSF?
By: Julian Wolf
Wordsmith, Educator, Performer
For years the National Coalition for Sexual Freedom has had my support. I heard about the Coalition years ago at an event where Glenda Rider was selling the first run of clear bumper stickers- and I've been hooked ever sense. There are many reasons that I support the NCSF with my time and money. Our goals are similar. Which goals? Well, Let's go right to the mission statement.
"The NCSF is committed to creating a political, legal and social environment in the US that advances equal rights for consenting adults who engage in alternative sexual and relationship expressions."
Politically- I am ready to see some changes. While it is a lot easier to come out of whatever closet you'd like to come out of these days than say, two or three decades go, there are still some laws out there that make having a good time between consenting adults illegal in some areas. Sometimes those laws aren't enforced, but sometimes they are. The first step to changing these laws is to have advocacy. We need people- and specifically people in politics and the lawmakers themselves- to be aware of the fact that there are people out there who care-very deeply- about the fact that there are laws in place that could/are affecting what we do in our private time that should not.
Legally- I am one of the people that has been discriminated against due to being out as kinky and poly. I feel that having an organization that will fight for us when we are those unfortunate times is vital. Many individuals, events, families and organizations have been helped by the Coalition, and I for one want them there to help again in the future.
Social Environments- Many of us dream of a world where discrimination against different love styles and adults consensually interacting with other adults is a thing of the past. I know I am not the only one. I for one am sick and tired of having to give a BDSM and Polyamory introductory course to every medical practitioner that I ever visit. While I love teaching those classes, during an appointment while we should be focusing on my health isn't the most opportune time. I didn't stay with my last therapist because after a year, they were so fascinated with the intricate details of my lifestyle that we rarely focused on the reasons that I was actually going to therapy. Changing our social environment to a more aware and hopefully more accepting will make everything from those professional appointments to dates where there is more than two people at the table easier on staff and us.
"The NCSF aims to advance the rights of, and advocate for consenting adults in the BDSM-Leather-Fetish, Swing, and Polyamory Communities."
As someone who is deeply involved in the sex-positive community, knowing that there is someone out there working to advocate for me and my family of choice makes it easier for me to have fun. Having the card outlining how to handle the situation if a law officer shows up at the door next to my door- particularly at play parties has been a comfort not only in my private life but at the parties and events that I've organized over the years.
"We pursue our vision through direct services, education, advocacy, and outreach, in conjunction with our partners, to directly benefit these communities."
I've been able to participate in trainings, workshops and several vital conversations at events across the country. In addition to those in person encounters, there is a wealth of information on the NCSF website, available to everyone who's curious. I've sent individuals and group leaders to the site as a reference on multiple occasions. The Kink Aware Professional Program is a valuable resource for people who are looking to support those professionals that support us. I've referred several professionals to that resource, and numerous people seeking those services. Additionally, they now offer guidance on how to chose practitioners, as well as "What Psychology Professionals Should Know About Polyamory", an essay that you can actually give to psychology professionals so you don't have to take time from your session to explain the basics. Invaluable.
How do I support the NCSF? I've been a member for some time, and I encourage the groups that I participate in to do the same. Coalition Partnership is an excellent option for organizations. I've run the fundraisers for the New Mexico Leather League and Rio Grande Leather and participated in a plethora of others. Stepping up to help with fundraisers is great way to support the cause as well as an opportunity for a lot of fun. We have had everything from raffles to top/bottom auctions to Mad Scrambles to raise money for NCSF- and it is been fun doing it. I have recruited several new people to join the cause due to these fundraisers!
Supporting the NCSF with my time is also something that I feel is important. They keep a list of volunteer opportunities available on their website, and I'd like to encourage you to check it out and see how you can help. Please always leave a financial contribution when you can, but also remember how valuable just a few minutes of your time can be to an organization.
Why do I support NCSF? In addition to supporting their mission statement wholeheartedly, I am also excited by projects such as "Consent Counts" and the DSM-V Revision Project. I strongly feel that supporting your local community is vital and it is something that I encourage everyone to do. I also know, from experience, that having support from a national source makes a very positive difference. The NCSF supports the events, organizations and personal connections that I participate in, and they have the professional expertise to do so very well. I support the NCSF because I feel that they support me and my families of choice. As a kinky, polyamorous, sadomasochist who chooses not to live life behind closed doors, I feel it is only right to help in the fight to protect those who are out, and those who chose to stay in.
Why should you support the NCSF?
Julian Wolf
Coalition Partners as of December 2010
Adventures in Sexuality (Columbus, OH) ? Arizona Power Exchange (Phoenix, AZ) ?Albany Power Exchange (APEX) (Albany, NY) ? Barone Photo Art (Perkasie, NY) ? Boise BDSM Society (Boise, Idaho)? Black BEAT Inc. (Baltimore, Maryland) ? Black Rose (Washington, DC) ? Brandon Longwood - (Maryland) ? Center for Sex Positive Culture (Seattle WA) ? Club X (San Diego, CA) ? SINZ Social Networking ? DFW PowerExchange (Dallas, TX) ? DLH Productions - (El Sobrante, California) ?Evergreen Leather Events (Kenmore, WA) ? Females Investigating Sexual Terrain (FIST) (Baltimore, MD) ? FetLife ? Fox Valley Coalition (Neenah, WI) ? Folsom Street East ? House of Decorum (Greenville, SC) ?Institue for Personal Growth (New Jersery) ? International Ms. Leather (IMsL) ? Knights of Leather (Minneapolis, MN) ? LA Noble (New Orleans, LA) ? Leather Scouts, (Albuquerque, NM) ? Leather SINS (Chicago, IL) ? Leigha Fleming (Denver, CO) ? Lesbian Sex Mafia (New York, NY) ? Lifestyle Alternatives Centre (Lake Worth, FL) ? The Mark by CPI : Tennessee ? Midwest Alternatives, (Lincoln, NE) ?Midwest Fantsay Adventures (Chicago, IL) ? Milwaukee Eastside Munch Group - Milwaukee, WI ? Minnesota Kinky Youth (St. Paul, MN) ? MN Rope - (Minneapolis, MN) ? Minnesota Stocks, Debentures, and Bonds (MSDB) (Minneapolis, MN) ?MOB New England ? New England Dungeon Society (New England) ? New England Leather Alliance (Boston, MA) ? New Mexico Leather League (Albuquerque, NM) ? OhioSMART (Cleveland, Ohio) ? Riverbound (Iowa/Illinois) ? Satyricon (Wisconsin) ? The Siege (Tennessee) ? smOdyssey, Inc. (San Jose, CA) ? Society of Janus (San Francisco, CA) ? South Florida Munch Group (Margate, FL) ? Southern Cross Munch Group ? Swingers Date Club (North Carolina)? TABU Social Club (Baltimore, MD) ? The Group in Fresno ? Threshold (Los Angles, CA) ? Touch of Leather (Lampasas, TX) ? Tulsa Dungeon Society (Tulsa, OK) ? The Eulenspiegel Society (New York, NY) ? Windy City Boys Troop (Chicago, IL)
Contact Information
822 Guilford Ave #127
Baltimore, MD 21202
phone: 410-539-4824