| DOSE: T+ 0:00 |
17 mg |
oral |
2C-B |
(capsule) |
| T+ 0:15 |
|
smoked |
Cannabis |
(plant material) |
| T+ 2:45 |
|
smoked |
Cannabis |
(plant material) |
| T+ 3:15 |
4.0 mg |
oral |
2C-B |
(capsule) |
| T+ 0:00 |
25 mg |
oral |
2C-B |
(capsule) |
2C-B has taken on whole new dimensions of personality since the days when she and I first met. I am forced to re-examine the early reports I wrote about it, and to make a correction to my readers. My reports up to this point have involved pressed 2C-B tablets. Unfortunately, it has come to my attention that, although the tablets I took did, in fact, contain 2C-B, their dosages were not accurately represented. They were much weaker pills than I had originally thought.
I have shifted to using pure 2C-B powder, which I obtain in the hydrobromide form and weigh out myself. 2C-B hydrobromide powder is known to be weaker than the hydrochloride powder, with only about 87% of the potency. Yet I have discovered that 2C-B is a dosage-sensitive drug with the potential for extremely powerful experiences, even if it is Hydrobromide. My first two trials with 2C-B HBr powder will paint a picture which is familiar, but in certain ways very different from my earlier 2C-B reports.
-Trial 1: March 2008-
The notes I took during this experience were brief. I used a moderate dose, stayed home, and felt out the effects, assessing the potency of 2C-B in this new form.
12:45 PM: I swallow a capsule containing 17 milligrams of 2C-B HBr powder.
T+0:15: While waiting for the effects, I smoke a couple of hits of pot to help relax.
T+0:50: The first visuals developÖ along with a strong, pushy feeling akin to the coming-up period of an LSD experience. With the pressed pills, I either donít get that pushy feeling, or it creeps up later on in the trip. This is a little bit quicker and more direct. Colors are beginning to change, and textures ooze just a little bit.
T+1:00: A dramatic visual effect occurs at this point. Currents of implied motion start to flow across the room, swirling from the ground up to the ceiling. These currents twist the room up in their wake. I am taken aback as I see the shape of the entire room becoming distorted.
T+1:15: Things have evened out a bit. No anxiety, and the visuals are much more stableÖ no sudden, unexpected twists and turns. There is a definite heightening to my mood, and colors look bright and clear. Details are intensified. Vibrations and shifts in texture occur around the borders of objects. Distortion of depth and spatial distances is not as strong as with tryptamines, but it is definitely evident. Every room in my home looks very deep and long. Closed-eye visuals are colorful, flowing, oozing, ever-moving.
T+1:45: There seems to be energy radiating from my skin and building up slowly within my body. As I walk around the apartment, I find myself stopping as my whole body undergoes a shivering motion. This partially forced, partially voluntary slithering movement that I make seems to cast off excess energy and tension. Strange, but it feels good to just go with it.
T+2:15: Another half-hour of euphoria passes, another slow buildup of energy and skin tension, another serpentine shake evens out my system and restores my ability to enjoy my altered state.
T+2:45: I smoke another couple of hits of pot. Iíve gotten very comfortable with the feeling of the 2C-B, and Iím equally content to do any activity or just to sit and get lost in the sensations.
T+3:00: There are hints that the effect of the 2C-B might be diminishingÖ the visuals have died down a bit and Iím left with only some color-shifting. Iíd like to spend more than a few hours on this substance. I consider a mild redose.
T+3:15: I swallow a capsule containing 4 milligrams more of 2C-B Hbr, bringing my total dose up to 21 milligrams. The intent of the redose is to lengthen the experience, not to try to deepen it to a higher level. The response is as expected. Very slight reinvigoration of the visual effect, and rather than dropping off further over the next couple hours, the effects stayed fairly consistent.
T+ 6:15: The effects of the 2C-B seemed to be completely over by 7:00 PM.
This was an enjoyable dose, a good recreational experience all around, and in many ways familiar and reminiscent of my experiences with tablets. However, it kicked in quicker and with a slightly more pushy tone compared to tablet 2C-B. Iíd say this experience was equal in strength to my first 2C-B experience, when I took one and a half 2C-B tablets.
About two months later, I decided to try taking 2C-B HBr powder into semi high-dose territory. I considered going as high as 30 or 35 milligrams, but after reflecting on many higher-dose experience reports that I had read, and considering that I was - in fact - new to pure 2C-B powder, I decided to be a bit more cautious. I set my dose at 25 milligrams. What followed was a bit surprising.
-Trial 2: May 2008-
1:50 PM: A capsule containing 25 milligrams of 2C-B HBr is swallowed on an empty stomach. I start watching a video I recently found online of a high-level Scientology defector sharing his inside view of the churchís corruption. Right now Iím finding it fascinating, but later it might be too much of a downer. Iím thinking about making some spontaneous art later, after the substance kicks in, if I feel like doing something productive.
  I think the substance is kicking in.
T+0:25: Body warmth and body load are slowly building up. Thereís not yet any visual effect. My mood is neutral. Iím neither euphoric nor anxious.
T+0:35: There are alternating feelings of warmth and coolness, tension and relaxation. Complex and powerful sensations are moving through my body.
T+0:40: Itís starting to move into my head now. Visuals cannot be far off.
T+0:45: I just got a call from a friend who I will be seeing tomorrow. I was able to talk to him and it felt good to be connected to someone who cares about me. As I hang up the phone, I realize that colors and the tones of light are just starting to change. Things begin to look golden or brassy. My mouth is getting dryÖ Iím having sips of soda to quench my thirst.
T+1:00: Iím now hallucinating beyond any shadow of a doubt. There are strong open and closed-eye visuals, and a driving, pushy mentality, like the beginning of an acid trip. Great musical appreciation, but I feel apprehensive. I can tell this is going to be strong.
T+1:10: Intense feelings of tension. Sinister visuals in the bathroom as I deliberate over whether I should purge to curtail the increasingly intense effects.
T+1:20: I discover that I am not actually nauseous and do not need to purge. However, I am hypnotized by the patterns in the floor tiles. Sometimes they appear to copy themselves and tile numerous times, as if unfolding across extra dimensions that I can only now see. At other times they just wiggle and stretch around their borders, parodying their own shapes like restless amoebas. The whole shape of the room is distorted, too. The line that forms an edge between the wall and the floor seems to creep all over the place, tilting the room at different angles.
T+1:25: I leave the bathroom and try to go back to enjoying my day. But Iím extremely confused. My mind is shifting from thought to thought quickly and without much control. I donít exactly feel coordinated.
T+1:40: I have cast aside my anxiety, and stepped into a strong and supremely controllable trip which I embrace. Any word I want to assign to the overall mood of it could be quite real. Euphoric, frightening, simple, complex, clear, muddy, gentle, intenseÖ itís ever changing, encompassing all these things. An experience with almost limitless potential.
 What on Earth happened to that towel lying on the floor? Did it turn into some sort of squid or lizard? Does the uneven white texture of the entire wall have that same alive-looking texture distortion? Yes! And my hands too! OhÖ.
T+1:50: I have discovered once again that this drugís basic nature is benevolence. This day is mine. What shall I do with it?
T+2:00: I am walking from room to room, feeling the walls in the hallway and staring at anything and everything.
T+2:10: I stop in the bathroom again. The marble floor has unreal levels of detail in its texture, and the whole surface of the floor seems to by sliding, morphing, changing shapes and reforming the marble texture into endless new combinations. The whole shape of the room still seems as bizarrely distorted as it did before. The rectangular frame around the bottom floor is still curling up into impossible shapes. Weird freakiní bathroom.
T+2:15: I realize that something about marble and stone textures has great power and promotes truly outrageous and beautiful visuals. So I start looking up marble textures online. I lay numerous different patterns out on my computer screen and watch all the strange things that they show me.
T+2:30: I decide that I must lay down for a while. I go into my bedroom, take off my clothes, and lay under the covers. I find the feeling of curling up underneath the sheets to be incredibly sensuous. My jaw chatters a little bit. The closed eye visuals are extraordinarily complexÖ landscapes unfold in endless iterations. I cannot escape the patterns. They will find me anywhere. I let fields of patterns unfold across me, washing over my skin and pinning me down to the bed. I feel the patterns on the bedspread replicating themselves all over me. Everything squirms with life, and blends with me. My boundaries are beginning to dissolve.
This is the peak. I lay in bed for close to an hour, experiencing things I really canít begin to describe. I am in a synaesthetic state: My senses are all intersecting, and Iím all awash in awe and ecstasy.
T+3:10: I realize I am not getting anything out of lying in bed anymore. I get up and start to walk around.
T+3:35: Very strong energy all over the body, especially around the face. There are auditory hallucinations - everything seems to buzz and have a hissing undercurrent. The sounds of the street outside, of pipes flowing and the neighbors moving about, stick in my memory and repeat. Things seem to have a quality of dťjŗ-vu, a perplexing familiarity.
T+3:55: Things relax a bit. I find at this time that everything feels very magical. I feel very much like Iím a kid againÖ everything I see, think or feel is significant.
T+4:40: The drug has been incredibly sensual from the start, but for much of the time it was far too overwhelming for me to be able to think about sex or masturbation. Now, eroticism is possible. I find that orgasm is a great release.
T+5:40: Iím watching TV now, and there is still some lingering effect. Color alteration and tactile enhancement. The shivering and teeth chattering has ended, but thereís still a bit of dizziness.
T+6:40: The effects seem to be over now.
---------------------------------------------------------
My second experience with pure 2C-B powder was extremely strongÖ a very decisive +++. In fact it was far deeper than anything 2C-B had unleashed upon me before. It was the first time that, for hours at a time, I was completely wrapped up in the sensory experience and unable to do anything except look and feel. I shudder to think what another five or ten milligrams would have doneÖ the joy might have been excruciating. Needless to say, this makes it clear that the tablets I originally thought to be Ď20 milligramsí must have been significantly less. I estimate them to be a mere 14 milligrams. It is a shame that I was lied to.
I still stand behind my earliest observations regarding 2C-Bís effects. My assessment of it remains the same: I think it is a recreationally-suitable psychedelic with strong, unique visuals and less side-effects than most other phenethylamines. However, I now realize that - like any other psychedelic - this one is extremely sensitive to dose, and beyond a certain threshold it can easily become overwhelming. I have wandered across the dosage spectrum, and I found that there are many different faces to 2C-B.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


{% load staticfiles %}
I {{ user.first_name}} {{ user.last_name}} (full names) wish to apply for {{ leave.leave.name }} for a period of {{ days }} days. With effect from {{ leave.start_date }} to {{ leave.end_date }} , i shall resume on {{ leave.resume_date }}
Signature: __________________________
Work Station/ Department: {{ employee.position }}
Tel. No while away: 0{{ employee.alt_phone_number }}
Person Taking Charge: {{ leave.person_taking_charge.user.first_name}} {{ leave.person_taking_charge.user.last_name}}
Person Taking Charge Tel. No: {{ leave.person_taking_charge.phone}}
Head Of Department: Name: _______________________________________ Signature: __________________________
Human Resource: Name: ___________________________________________ Signature: __________________________
General Manager: Name: __________________________________________ Signature: __________________________© All Rights Reserved by GS1Kenya


{% extends "layout.html" %} {% block page_title %} GOV.UK prototype kit {% endblock %} {% block content %} ALPHA This is a new service – your feedback will help us to improve it. Back Add a research participant for Right to work Date of research session This is not a required field and can be a partial or full date. Date of research session Day Month Year Participant ID Any identifier that is useful to you. Only people with permission to view this project will see this Digital inclusion category 1. Never have, never will 2. Was online, but no longer 3. Willing but unable 4. Reluctantly online 5. Learning the ropes 6. Task specific 7. Basic skills 8. Confident 9. Expert Does your participant have any access needs? Yes No {% endblock %}
ALPHA This is a new service – your feedback will help us to improve it.
Back


We were sitting on the couch one day watching a show called
"Pets on
Parade"; which was a show where the local humane society in
Boise, Idaho (we were living there then), showed the animals up
for adoption; when we saw an Alaskan Malamute dog.
Dean had always liked the look of the Malamutes, and we decided
after about 4 hours of deliberation to go down and look at him.
Kris was 6 months pregnant with Derek at the time. We went to
the animal shelter, and took the dog into a visitation room to
see how his personality was. The dog sniffed at us, then showed
more interest in the walls of the room than he did us. Dean was
smitten, and we brought the dog home and named him Oso, Spanish
for "bear".
Oso settled in quickly, after a disturbing week of him taking
the shoes out of our closet and leaving them on the lawn for
some unknown reason. It was clear he had been beaten in the
past, so we were extra gentle with him. After Derek was born,
we started dog obedience classes, as it was clear that we needed
them. Alaskan Malamutes are very smart dogs, and very pack
driven, and although we were now part of Oso's pack, he clearly
thought he should be pack leader.
Part of Oso's dominance issues showed up in him peeing on
people. People below him in pack status or other people were
nothing, and peeing on them was not an issue for him. Kris was
peed on twice, Dean once, an employee of Deans once, and a
stranger at the dog park once. Then Oso did the worst. Two
fluffly white Bishon dogs fresh from the groomers - they stood
perfectly still while Oso peed all over them, and the owner
stood with mouth gaping open staring at the poor peed covered
dogs.
After obedience class the family was never peed on again - but
we always had to watch him around others.
Oso was great with Derek, never hurt him, was always very gentle
and tolerant of him. Derek climbed on and pulled on every part
of Oso, and he just bore it. We trained Oso to pull a sled in
the winter, and a cart when there was no snow. Oso loved the
snow up until his last few years, and would pull Derek on the
sled all day, as long as Kris or Dean were running alongside
him.
Oso always let us know if he was displeased, and after replacing
the seatbelts in the jeep 4 times, we figured out not to leave
him in the jeep without him seeing the door of the building we
went into. If we turned a corner before going into a door, we
were sure to come out to chewed through seat belts.
When we moved to Connecticut, Oso was quite happy because we had
a large public forest behind the house. He had always had daily
walks of 1 to 4 miles per day, and now the walks were mostly in
the forest. He was always off leash in the forest, and could
sniff most interesting things along the way. Unfortunately the
forest was home to several deer, and when Oso saw them - he was
in heaven - chasing deer was a delight to him. Kris would try
to run after him and stop him - to no avail, and calling him was
pointless. Kris would just go home and wait, and usually within
6 hours Oso would wander home on his own.
When we got Sam, Oso was not thrilled, but quickly adapted as
long as Sam knew his place in the pack was beneath Oso. Oso and
Sam both enjoyed a good skunk chase, Oso, more than Sam, and if
anyone needs to know how to get skunk smell out of a dog, we can
help you there. At least 6 times Oso was covered, and received
special baths.
Oso was a great dog, he enjoyed being with us, and when we moved
onto the boat, he only had one accident and then the bathroom
training was done, and he did his thing on the net of the boat
during calm and stormy weather with no complaints. He never got
seasick, and loved running on the beach and going with us and
smelling all the new smells everywhere we went. The entire
eastern seaboard has been well marked by Oso.
He always attracted a lot of attention, because he was a truly
handsome dog, and people would always ask us if he was a wolf.
We had Oso 2 months shy of 13 years. He was two to three years
old when we got him. He had been on arthritis pain medicine
for the last two years.  He
was usually 85 pounds, and had dropped to 65 pounds. He lost
some interest in food, and could only walk about 1/4 of a mile
before he would drop. He did not want more than one walk a
day. He started to pace at night for 2 to 3 hours and get
confused. The vet was quite amazed at long he had lived and
how healthy he had been.
Oso was put out of his pain at 6:00 p.m. on October 3, 2012.
He will be greatly missed, he was part of our family, and we
loved him.
You can see Derek in Dean's arms |
|
Always patient |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
He snuck on the couch
at night, and thought we didn't know |
Oso loved to lay under bushes |
Summer
haircut |
Hanging at the beach |
Snoozing on the boat |
|
Old dogs sleep soundly |
|
Oso's
day on stage |
Tired pups |
Boat life is good |
Just chillin' |
|
|
Who me? |
|
10/3/2012 - Ode to Oso


 MUSIC: Cliff Martinez CAST: Jeremy Irons, Theresa Russell, Joel Grey, Ian Holm, Alec Guiness.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This film is only as good as your reading was in your school's English classes.
If you read a few of Kafka's short stories, you will like the blend in this film. If you didn't, chances are that this film will go over your head and you will not appreciate the famous literary tradition which the writer developed, because this film is Extremelly faithful to the way he wrote. Frans Kafka, is not easy reading, and neither is it a Sunday pleasure and cup of tea, terrace reading. It is all too often, much more serious, with implications which lean towards the existentialist movement in literature in the late 40's, 50's and early 60's. By the time the sixties arrive, the shadows of the war were diminishing, and the arts, in general, took an up swing in feeling and attitudes. The existentialists, having made their point through Albert Camus and Jean Paul Sartre, all of a sudden were alive with a group of weird, unusual, and clever writers. And what was originally known as 'new wave' cinema, may have been the ( Godard and Truffaut ) reason why it started in the first place. The negative and often helpless attitudes with overtones of the decline of the civilization of the industrial age, all of a sudden was alive.  The sixties were the first rebirth of 'life' since the war that destroyed so much in Europe.....and Franz Kafka, could very well have predicted it and hoped for in his writing, were it not for a friend who did not do what he was told.
This highly autobiographical film, starts with the young Kafka doing his job as an insurance clerk, where as time goes by his fear of impropriety and dishonesty is discovered to be true by his mind ( his perception already had it figured out ), but the whole thing is undermined by his inability to clarify his relationship with his father and eventually himself, and those he cared for, or cared for him. There were fears which suggested he was unable to cope with the fact he knew what some of the outcomes were, not realizing that he could have a say in how to change that outcome.
As he gets older, and notices his 'friends' happen to be the unusual sort of people, gathered for political activities against the society they despise, with whom he really does not wish to be involved, but with whom he happens to share some points of view. Eventually it makes him a hero of sorts, because he has the ability to succeed in destroying a part of the system where all the other revolutionaries have failed. However to himself, he still is a personal failure, and with this he fails himself. His weak health eventual fells him.
The best part of this film is actually the acting showcase put on by the likes of Joel Grey, Alec Guiness, Ian Holm, and Theresa Russell, who probably couldn't resist a chance to work out a literary event. And although Theresa comes off a bit overly emotional at times, and for good reason, she is not as strong as the others, but manages to hold her own, as the ill fated Gabriella. And the film suggests that it is her fall that weakens his own quest for self discovery. The girl who loves him is a nice girl, but he does not show any inclination to doing anything about it, and she is too shy to do anything about it. Gabriella has a stronger appeal, if not domineering, which may appeal to the younger Kafka. And she is not immature, and young by any means, where the other girl appears really naive, and incapable of understanding or being a satisfactory partner on an intellectual level, which might be a requirement for Kafka.
Joel Grey as the co worker is very good, and funny, if not obnoxious. Alec Guiness as his boss is really smooth, as usual, in anything he does. And Ian Holm stands out as the intellectual evil man, who is still exercising the atrocities of the past war, obviously something which in Kafka's mind, must be done away with, and buried away.
EXCELLENT FILM. GOOD FOR THE LITERARY MINDED PEOPLE.
4.5 GIBLOONS Pedro Sena Member of the Internet Movie Critics Association
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Huawei to spend $285 mn on bonus to employees for coping with US sanctions
Huawei's 180,000-member workforce also will receive an extra month's salary
by AP | PTIHuawei is paying its employees bonuses for helping the Chinese tech giant cope with US sanctions that threaten its smartphone and other businesses.
A company announcement circulated Tuesday on social media said 90,000 employees will share 2 billion yuan ($ 285 million), or about 22,000 yuan ($ 3,100) each.
Huawei's 180,000-member workforce also will receive an extra month's salary.
In a written response to questions, the company confirmed the document was genuine but said it had no comment.
The announcement told employees the bonuses were to "thank you for your efforts" since US curbs on technology sales to Huawei were announced in May.
The larger bonus goes to employees in chip production, research and development and manufacturing-related jobs.
The company has overhauled its product line to reduce use of US components.


Oh Hell!
Host Game Settings
Game Name
Player Name
Connected to address:port
Player connected:
Maximum number of cards in hand
Warning: Too much cards for that number of players
Deck composition:
Number of cards per color: 13
Number of colors: 4
Cancel
Launch game


Walk-through
YAML basics
First of all, CLIPig-experiments are defined in YAML files. I actually prefer JSON but it does not support comments out of the box and is quite strict with those trailing commas and all that.. Anyways, the basic desires of defining lists and key/value maps are indeed quite human-friendly in YAML:
a_list: - first entry - second entry a_map: first_key: first value second_key: second value # a comment
And that's all to know about YAML for our purposes.
There is one particularity in CLIPig: Value lists can be defined via YAML lists or via comma or space separation, e.g:
resolution: - 1024 - 768
is the same as
resolution: 1024 768
or
resolution: 1024, 768
Defining targets
Now in CLIPig the desire for an image is expressed as a target. There can be multiple targets and each target can have multiple target features.
targets: - features: - text: a curly spoon
To follow the walk-through, call
python clipig-gui.py
then paste the code inside the editor (top-left one) and
press Alt-S
to start training and watch the image
emerge in realtime.
So, what does it look like?
Yeah, well... I promised images and now i'm showing nothing more than a psychedelic pixel mess.
But indeed, CLIP does think this image to be 95% similar to the words a curly spoon. This is a top score that an actual photo would rarely get and a classic example of an adversarial in machine learning.
Note: Throughout this text similarity is spoken of as percentage which is not really the case. It's actually the cosine similarity (times 100) or in other words, the dot-product of two normalized vectors.
To produce an actual image we'll add some of those artistic variations, spoken of earlier. The art is in showing different parts of the image to CLIP when evaluating the feature similarities.
This is accomplished via transforms:
targets: - features: - text: a curly spoon transforms: - random_shift: 0 1
The random_shift transformation simply moves the image center to a random position, before each evaluation by CLIP. The edges are wrapped around so the outcome is actually a repeatable texture! The object of interest might just not be in it's center.
It looks a bit spoony but not really, i'd say. There is a lot of curliness in the background but the spoon does not show as much.
Also CLIP missed the curliness of the spoon because actual letters appeared to increase the similarity nevertheless. It got to 50%.
Another method to inspire CLIP is random rotation.
targets: - features: - text: a curly spoon transforms: - random_rotate: degree: -90 90 center: 0.3 .7
Each evaluated image is first rotated randomly between -90 and +90 degree with a random center in the middle 2/3rds of the image. This does not create a repeatable texture and the edges are typically a bit underdeveloped because they get rotated out of the visible area some amount of time.
The image shows some good areas with shiny metal and spoony curliness but it's still not quite recognizable as a spoon.
Let's jump forward and add some other stuff:
targets: - batch_size: 5 features: - text: a curly spoon on a plate transforms: - noise: 0.1*ti - random_shift: -.1 .1 - random_rotate: degree: -3 3 center: 0.3 .7 constraints: - blur: kernel_size: 31*ti
In desperation we just throw more computation at the problem by increasing the batch size. This results in a runtime of about 2 minutes on 1500 cuda cores.
Then, on a plate
was added to the target text to make
CLIP somewhat more opinionated about the background.
Some noise is added to each image before showing it to CLIP and a gaussian blur is added to the backpropagation loss.
For details about the noise: 0.1*ti
line, please check out the
expressions section. Sufficient to say that it
decreases the amount of noise over time.
The noise makes CLIPig kind of think twice about the way a pixel is adjusted. The blur as a training loss tends to blur out the areas where CLIP is not much interested in, while the points of interest are constantly updated and are not blurred as much. Unfortunately both methods also help to create new artifacts. And this is where those variations start to become artistic. It certainly takes some patience.
And maybe the correct language. What if we change the target
text to a photo of a curly spoon
?
Ah, i see where you are going, CLIP! Indeed funny, but not enough for a proof-of-concept.
targets: - batch_size: 5 features: - text: close-up of a spoon with a curly handle transforms: - noise: 0.1 - repeat: 3 - random_rotate: degree: -30 30 center: .4 .6 - center_crop: 224 constraints: - blur: kernel_size: 51 postproc: - border: size: 1 1 color: 0.15 0.1 0.05
Changes made:
- Noise and blur are kept at high values throughout the whole training.
- The text target is made extra specific.
- The repeat and center crop transforms help avoiding the under-development of the corners by the random rotation.
A post processing effect adds a small border that forces the contents to be created more in the center of the image instead of close to or on one of the repeating edges.
Post-processing effects are applied every epoch and change the image pixels directly without interfering with the backpropagation stage. All transforms that do not change the resolution are available as post processing effects.
There is not much else visible in the images because the
close-up of ...
in the target text and, more profoundly,
the high noise and blur constraints do not allow anything
else to emerge.
Just to give an idea what CLIP is actually thinking about
curly spoons, the target text is replced with with
a lot of curly spoons
and the noise value is lowered to
allow some more uncertainty in the resulting image:
There are some different concepts visible. Curls made of spoon faces, curls with interwoven spoon fragments and an actual head with curly hair, which probably is to be expected when using such a specific adjective.
The contrast of the image is not as good as the previous ones. Generally, CLIP does not require a lot of contrast to identify things so it's not automatically increased to normal levels. The previous images had a higher noise amount which actually increased the contrast because areas of low contrast simply disappear in the noise. Unfortunately, the high noise deviation only lets things emerge where CLIP is very certain about. Curly spoons do not represent a well-known archetype, it seems.
There is a trick, though! We can show CLIP the image with much less contrast so the changes it applies become larger changes in the final image.
targets: - batch_size: 5 features: - text: a lot of curly spoons transforms: - noise: 0.1 - repeat: 3 - random_rotate: degree: -30 30 center: .4 .6 - center_crop: 224 - mul: 1./5. # only show a 5th of the color range constraints: - blur: kernel_size: 51 - saturation: # The desired saturation is lowered below: .01 weight: 10. postproc: - border: size: 1 color: 0.15 0.1 0.05
The mul transformation reduces the color range that CLIP is seeing so the resulting color range is increased. Of course, this also increases the saturation a lot so the saturation constraint is used to reduce it to acceptable levels.
I'll end this experiment here because my 3 years old daughter clearly approves the image to depict curly spoons.
Just go ahead, play with CLIPig and consume a lot of your life and work time. If stuck, check the reference and the lists of available transforms and constraints.
But there's one thing left: How do i increase the resolution?
Increasing resolution
Okay, let's start with a new theme. Take the curly spoon script
from above and replace the text with h.p. lovecraft at a
birthday party
.
If you don't know Lovecraft, he's one of the earliest and spookiest fantasy authors with stories about creepy and unearthly things and obviously enough fan-art has found it's way into CLIP's convolutional weight matrices. The green guy there must be a children's birthday version of Cthulhu, an age-old murderous god living in the sea, waiting for a come-back as leader of a blood-thirsty army of fanatics.
Why does Lovecraft have .. ahh, two faces? Well, my personal feeling is that CLIP does not reject a face just because it's melted together with parts of other faces or not at the right place above the shoulders, aso. Similarity to Lovecraft at a birthday party got to 61%, despite the creepy head. CLIP just imagined the face at two different positions. If we continue training for long enough, it might correct the face. But only, if that increases similarity to the target feature.
Anyways, let's increase the resolution by putting this line in front:
resolution: 224*2
This is now twice the width and height of CLIP's image input window or four times as much pixels as before.
What did happen? Well, the center_crop transformation crops a CLIP-sized 224² window from the middle of a 448² image. It is not helpful unless to show us the effect of the random rotation.
We could add the random_shift transform to move the CLIP window to every position of the training image. Let's just do that and also increase the batch_size from 5 to 20 since we have 4 times the pixels to process.
There are many Lovecrafts now. It's like in this John Malkovich movie when John Malkovich truckles through the door that leads into his own head. There's even a body without a head.
Clearly, CLIP does not get a good view of the whole image but just assembles parts of it without the knowledge of how they relate to each other. It's perfectly fine for textures and fantasy wallpapers but let's see if we can create a good composition in higher resolution.
The random_scale transformation allows us to 'zoom' in or out of the image so we can show CLIP a mixture of the whole image and details of it.
Imagine a zoom, or scale, of 0.5 on the training image. That would mean that CLIP sees twice as much in each direction or 4 times as much in the whole. Exactly our new resolution. Of course it would not look better than resizing an image to a larger resolution with some bilinear filtering. Well, not entirely. The noise and artifacts are of higher resolution ;)
Now, at some point in training we randomly scale between the full resolution and the zoomed-in details and enable the random_shift.
0. if t < .4 else 1.
is python/CLIPig talk for
zero below 40% else one.
epochs: 300 resolution: 224*2 targets: - batch_size: 20 features: - text: h.p. lovecraft at a birthday party transforms: - noise: 0.1 - repeat: 3 - random_shift: - 0 - 0 if t < .4 else 1. - random_rotate: degree: -30 30 center: .4 .6 - random_scale: - .5 - .5 if t < .4 else 1. - center_crop: 224 - mul: 1./5. constraints: - blur: kernel_size: 51 - saturation: below: .01 weight: 10. postproc: - border: size: 1 color: 0.15 0.1 0.05
It's quite good at parts but, wait! There's already another Lovecraft developing in the background. And that's what is to be expected. The training target of that Lovecraftian party is simply applied at all points of the image and CLIP won't jude the whole frame less similar to the target just because every face is that of Howard Phillips.
The above snapshot is kind'o good but the repetitions will increase with higher resolutions. It would be more like a fractal of H.P.'s birthday party.
... Well actually, let's see a fractal of H.P.'s birthday party
Well done CLIP, well done.
But back to the topic. We'll start with the blurry Lovecraft picture above and train the image details with non-lovecraft targets:
epochs: 500 resolution: 224*3 # load the previous image init: image: docs/static/img/hpl4-c.png mean: 0.0 std: 1.0 # lower the brightness a bit postproc: - mean: .33 targets: - name: lovecraft batch_size: 3 features: - text: h.p. lovecraft at a birthday party transforms: - noise: 0.1 - random_rotate: degree: -30 30 center: .4 .6 - center_crop: width/2 - random_crop: 224 - mul: 1./5. constraints: - blur: kernel_size: 51 - saturation: below: 0.01 weight: 10.0 - name: party details batch_size: 5 features: - text: people at a creepy birthday party transforms: - noise: 0.1 - random_shift: 0 1 - random_rotate: degree: -30 30 center: .4 .6 - random_scale: .5 1.5 - center_crop: 224 - mul: 1./5. constraints: - blur: kernel_size: 11 - name: special details start: 30% batch_size: 5 select: best features: - text: cthulhuian birthday cakes - text: creepy confetti weight: 0.5 - text: lovecraft's interior weight: 0.7 - text: cthulhu weight: 0.8 transforms: - noise: 0.1 - random_shift: 0 1 - random_rotate: degree: -30 30 center: .4 .6 - random_scale: .7 1.5 - center_crop: 224 - mul: 1./5. constraints: - blur: kernel_size: 51 - saturation: below: 0.01 weight: 10.0
And 10 minutes later:
Only one Lovecraft in the image! And many interesting details.
Here's a summary about the different applied targets:
The lovecraft
target keeps the original theme intact, at
least in the center of the image.
- center_crop: width/2 - random_crop: 224
We crop the middle part of the randomly rotated image and then randomly crop a CLIP-window from that. That certainly does not help correcting the face but it's not so bad, either.
The party details
target simply crops randomly from the whole image and applies
the people at a creepy birthday party text feature.
The special details
target starts at 30% of the training and applies the best
matching feature of a few different features to the randomly cropped window.
It starts late to give the special details
target a bit of time to create
the people in the background. The select: best
mode chooses only one feature
at a time. Here are the counts after the training:
lovecraft : h.p. lovecraft at a birthday party : count 1500 (100.0%) / sim 53.377 party details : people at a creepy birthday party : count 2500 (100.0%) / sim 34.222 special details : cthulhuian birthday cakes : count 740 (42.3 %) / sim 30.744 : creepy confetti : count 985 (56.3 %) / sim 30.427 : lovecraft's interior : count 22 (1.3 %) / sim 25.249 : cthulhu : count 3 (0.2 %) / sim 25.261
So, lovecraft's interior
and cthulhu
did not really get a chance.
The match rate of features is quite dependent on various other parameters and may change during several runs. Below is another experiment where lovecraft's interior did get a far better match because the word creepy was removed from "people at a creepy birthday party".
So, to summarize the topic of high resolution CLIPig images: It's tricky stuff.


Your company’s time and resources are important. Problems with your software should not eclipse your goal. Read More
A good consultant solves problems. A great consultant listens to what you say, but also uncovers needs you do not know you have. Read More
Lunamark takes the decision to buy versus build software very seriously. If building a custom solution is best for your needs, then let us build it for you. Read More


GitHub Visualization
Home
Repositories
Gists
User
Organization
Home
(current)
Link
Dropdown
Action
Another action
Something else here
Welcome to GitHub Visualization
Built with ❤ by Developers for Developers
Feature 2
Feature 1
Master
Hello World 1
🛠 Made with Open Source Software
Bootstrap


Information in this application should not be relied upon as the sole source of information for commercial and operational decisions. AMSIS should not be used for navigational purposes.
IMPORTANT NOTICE
This is a legal agreement between the Commonwealth of Australia, ('Commonwealth') represented by Geoscience Australia, and you. Please read the terms and conditions carefully. You will be asked whether you agree to them. By clicking on the "I AGREE" button, you are acknowledging your acceptance and will be bound by the terms and conditions.
- Ability to use: the Commonwealth will permit you to:
- use the Australian Marine Spatial Information System ('AMSIS'), accessible through this website,
for its intended purpose, for the duration of your logon session;
- use and reproduce any map or other material you generate through AMSIS ('AMSIS Map') subject to
these terms and conditions.
- Limitations: You agree:
- not to use AMSIS, or any AMSIS Map, in a way which could be detrimental to the interests or
reputation of the Commonwealth and or other data contributors to AMSIS; and
- not to allow another person to use AMSIS during your logon session.
- Information notices: You must ensure, if an AMSIS Map is displayed or made available to any
third person, that the following notice regarding the disclaimer and acknowledgement, is displayed with,
attached to, or embodied in (in a reasonably prominent manner) any AMSIS Map. Note that this notice will be
displayed automatically on any map you print using AMSIS.
Disclaimer
The Commonwealth cannot guarantee the accuracy, currency or completeness of this map for your particular
purpose. Except as required by law, the Commonwealth will not be liable for any loss, damage, expense or
cost (including any incidental or consequential loss or damage) incurred by any person or organisation
arising out of use of, or reliance on, the map.
Acknowledgement
This map was produced using the Australian Marine Spatial Information System (AMSIS) web mapping facility
provided by Geoscience Australia. AMSIS incorporates data provided by various Commonwealth government
agencies and private sector organisations. Details of
contributors. Maps produced using AMSIS may also incorporate information provided by end users
of AMSIS.
- Retention of notices: You must not remove, obscure or interfere with any acknowledgment,
attribution, warning or disclaimer statement affixed to, incorporated in or otherwise applied in connection
with an AMSIS Map.
- Intellectual Property: You acknowledge that, except as expressly stated, no intellectual
property rights in AMSIS or any AMSIS Map are transferred under these terms and conditions.
- No Warranty: You acknowledge that the Commonwealth does not guarantee the accuracy,
currency or completeness of AMSIS or any AMSIS Map for any purpose. Except where required by law, no
warranties, express or implied, are given in relation to AMSIS or any AMSIS Map.
- Release and Indemnity: You release and indemnify the Commonwealth and its employees and
agents and third party suppliers of data used in AMSIS in respect of all claims, expenses, losses, damages
and costs arising, directly or indirectly from:
- Your use of AMSIS or an AMSIS Map;
- any other persons use of AMSIS during your logon session or an AMSIS Map generated by you;
- any breach by you of these terms and conditions;
- any negligent act or omission or wilful misconduct by you in connection with this licence
agreement.
This clause 7 survives the expiration or termination of this licence.
- Applicable Law: This agreement is governed by the law of the Australian Capital Territory
and the Parties submit to the jurisdiction of courts of that Territory.


Code Changelog¶
This page contains the changelog for the FOOOF codebase and any notes on updating between versions.
This page primarly notes changes for major version updates. For notes on the specific updates for minor releases, see the release page.
1.0.0¶
Warning: the 1.X.X release series is an API breaking release from the from 0.X.X series.
That is it say, that some names and module organizations have changed, and you should only update if and when you are ready to update your code to reflect the new changes.
Note that the main changes are in code organization, some names, and the addition of many new features. The fitting algorithm itself has not changed, and model results fit with the new version should be roughly equivalent to those with older versions. However, there are bug fixes and tweaks such that new model fits are not guaranteed to be the identical to prior fits.
Naming Updates¶
The following is a list of the key naming updates, of public facing code.
the synth module is now called them sim module
references to background are now called aperiodic
setting background_mode -> aperiodic_mode
attribute background_params_ -> aperiodic_params_
short name bg is now replaced with ap
slope is now called exponent
amplitude, in reference to peaks, is now called height
setting min_peak_amplitude -> min_peak_height
References to AMP are now labelled and accessed as PW (for ‘power’)
Previously Saved Data¶
Note that if you have data saved out from the 0.X.X release series of the module, then the code update to the 1.X.X series won’t be able to properly load this data out of the box.
This is due to the naming changes, and in particular the change from ‘background’ to ‘aperiodic’. Note that saved FOOOF files are plain-text JSON files, and so if you find & replace the word ‘background’ to ‘aperiodic’, this should update the files so that they can be loaded by the 1.X.X version. Note that if you also saved out the algorithm settings, you may need to update the name of min_peak_amplitude to min_peak_height as well.
Code Organization¶
The internal organization of the module has been changed - though the main functions and objects can still be imported the same as in the 0.X.X series. The internal organization changes typically reflect turning internal files into sub-modules.
Code Updates¶
This version adds a large number of code updates & additions, including: - A big extension of the plotting sub-module - Adding new functions to manipulate, manage, organize and manage FOOOF objects - Add new analysis functions, including more utilities for checking model errors - Add a new ‘Bands’ object for managing frequency band definitions - Extra methods on FOOOF & FOOOFGroup objects for managing data & results - Miscellaneous bug fixes & other additions
To see all the new features in FOOOF, check out the API page on documentation site.
The full history of changes is avaible in the Github commit and pull request history. The bulk of the updates for 1.X.X went through in the following pull requests: - #152: broad updates, including lots of issue fixes, and code & documentation extensions - #139: add ‘Bands’ object and more functions for managing FOOOF objects - #130: updates data objects and internal data management - #121 & #129: code reorganizations & cleanups - #122: Updating terminology and names
Documentation Updates¶
The 1.X.X series comes with a greatly updated documentation site, in which as well as updating the tutorials and existing documentation, there are a large number of extra examples, and a new ‘motivations’ section, exploring why ‘parameterizing neural power spectra’ is a useful idea & method.
0.1.X¶
The 0.1.X series of releases for FOOOF was the initial release series of FOOOF, with the original naming scheme. This series is now deprecated.
These releases can still be accessed, and are described, on the release page


1.2 Viennese Lexicographic Editor (VLE)
1.3.1 VICAV (Vienna Corpus of Arabic Varieties )
1.3.2 TUNICO (Linguistic dynamics in the Greater Tunis Area )
2.1 Installing the Environment
3.3.3 Saving the List of Profiles
3.3.4 Loading a Profile from a Remote Server
3.5.1 Quick Access Panel (QAP)
3.6.3 BaseX as Publication Platform
4.2.3 Setting-up BaseX Collections
4.2.4 Starting the Local BaseX Server
4.3 Working with Remote Dictionaries
4.4.1 Navigating Between Editors
4.7.5 Caveats and Restrictions
5.3.3 Production Metadata in the Entries
5.4.10 insertCBInNextEle(elements)
5.4.13 insertSoundDurationInLine
5.4.21 replaceStringInEntry(x,y)
5.6.6 Creating the Application
5.6.8 Access Interface in the Browser
5.8 Rebuilding the TUNICO Dictionary
5.8.1 Get the Software and Install it.
5.8.4 Create the Web Dictionary
6.1 Results are not properly displayed
6.5 Is the BaseX server running?
6.6 Create Database: HTTP/1.1 500 Internal Server Error
Charly MoerthVienna, 24.9.2018
This documentation is work in progress. Any comments are highly welcome.
The documentation is written in TEI (P5). You can view the TEI source by clicking on this link. To see the XSL stylesheet which was used to create the output click here.
We have been working on a documentation of the encoding of some of our dictionaries in tandem to this document. Our Encoding Guidelines can be found here.
By default, the documentation is loaded from the dictGate server. The respective URL can be changed in the configuration.
The checkbox Load Local Version allows to use a stabilised local version. VLE expects this to be in {WDE}\docu.
VLE is a piece of software that first came into existence as a by-product of an entirely different development activity: the creation of an interactive online learning system for university students. Thus, it was first used in a collaborative glossary editing project carried out as part of university language courses at the University of Vienna. As the tool proved to be flexible and adaptable enough, it was also put to work in other projects. The interface is built around an XML editor. The communication between the dictionary client and the server has been implemented as a RESTful web service.
VLE provides a number of special functionalities typically needed in compiling lexicographic data. From the very beginning of its development, it was designed to process standard-based lexicographic and terminological data such as LMF, TBX, RDF or TEI. VLE can automate many editing procedures. Most of these functions can be applied both to single and/or multiple entries. The program can check the structural integrity (well-formedness) of input on the fly and can validate the data against XMLSchemas.
One of the particular features of VLE is a special module optimising access to external language resources such as corpora, other dictionaries, word lists etc. Through this module, VLE eases the integration of corpus examples into dictionaries. The principal idea in preparing this module was optimizing access to digital corpora in order to allow lexicographers to glean relevant sample sentences and to integrate them into dictionary entries in a reasonably comfortable manner. The focus in this work was direct access to the data. The corpus interface of the dictionary writing application was supposed to enable lexicographers to launch corpus queries and to offer functionalities for inserting them into existing dictionary entries without using the clipboard to copy-and-paste.
VLE was developed as part of two projects: the VICAV and TUNICO projects.
The Vienna Corpus of Arabic Varieties was set up with two main purposes in mind: firstly, to serve as a virtual research platform targeting the particular needs of Arabic dialectology. The main concern is textual and lexicographic data. Secondly, the platform is also used as a test bed for newly developed text technological methodologies and tools.
The TUNICO project ran from August 2013 until July 2016. It was funded by the Austrian Science Fund (FWF; P-25706) and conducted as a joint endeavour of the University of Vienna and the Austrian Academy of Sciences. The project was aimed at getting a clearer picture of the current linguistic situation of Tunis. Methodologically, it was situated at the crossroads of variational linguistics and language technology, combining dialectological approaches with up-to-date text technological methodologies. The data and tools developed and tested in the project were meant to be beneficial for a wide range of research questions both in the field of Arabic linguistics but also beyond.
This is a very short guide that is supposed to help you to quickly get a working environment. The sample data that can be used is in the docu/examples directory.
Step 1Download and install BaseX.
Step 2Download and install VLE.
Step 3Initialise the environment. Go to the BaseX tab and insert the path to the script that starts BaseX' database HTTP services. You have to click the Start Local Server button at least once. If the function does not find the rest.xqm in the Basex\webapp folder, it copies it there.
Step 4Find the sample dictionary dc_eng_de.xml in the WDE/Docu/examples folder.
Step 5Start VLE
Step 6Create a user + password for the dictionary.
Step 7Create the dictionary.
Step 8Start the indices in BaseX. VLE's default query templates assume that the database has a full-text index. In the BaseX GUI you simply open the database, open the database properties (CTRL + D), select the Full-Text tab and push the Create button.
Step 9Make sure that the BaseX server is running.
Step 10Go to the login tab of the Main Control.
Step 11Enter the credentials you created for the dictionary (Step 7 above).
Step 12Click on English - German (Local, test).
The latest version of VLE is available on the web site of CLARIN Centre Vienna. Simply start the installation program and follow the instructions. Make sure not to install the application in a Windows programs directory. We usually install into a directory like C:/progs/WDE.
Before you can use BaseX to store dictionaries, you have to create a special collection for managing the users.
Step 1 Start VLE
Step 2 Select tab BaseX
Step 3 Select tab DB Admin
Step 4 The default user is admin, default password is also admin.
Step 5 Push the Create New User Table button. Make sure to do this only once. Recreating this BaseX collection will erase all existing user data.
Profiles are the configuration files associated with dictionary projects. They are XML documents which can be edited with text editors or with VLE.
Profiles are stored in two places: (a) on the local machine in the profiles folder of VLE's installation folder and (b) in the server. The second option is used two share profiles among several users who need to work with the same configuration.
The first thing in creating a new dictionary is creating a new profile. To do this, perform the following steps:
Step 1Go to tab Local Profiles
Step 2Select tab New Profiles
Step 3Enter the required values. Profiles are stored in XML documents.
Step 4Push the Create button.
The above settings create the profile of a German French dictionary. The new profile is then displayed in the profile editor.
The editor helps you to work on profiles. Having modified anything in the editor, you have to save these changes manually (CTRL + S).
Having created a new profile, a placeholder is inserted on top of the list of profiles. This list is stored in document profiles.xml in the directory WDE/profiles.
You should change the default label New profile label to something meaningful.
Having edited the list of profiles, press CTRL + S to save your changes. You are automatically taken to the Login Tab which now displays the updated data.
By clicking on a link of the list of dictionaries in the Login Tab you load a local profile. Once the profile is loaded, VLE attempts to open an editor.
Often the easiest way to start working is to get an existing profile. When you are registered as a user on another server, you can obtain the profile from there.
Step 1Go to tab Basex
Step 2Go to tab Get Profile
Step 3Enter the address of the server.
Step 4Enter the name of the dictionary, i.e. the name of the BaseX collection on the remote server.
Step 5Choose a name for the file of the profile.
Step 6Formulate a meaningful label to be displayed in the editor. If you work on several servers, it is recommendable to add an identifier for the host.
You will be asked, if you want to add the new profile to your local list of profiles. Having said 'yes' you will be taken to the list of profiles. The new item is always inserted on top of the list.
Step 7Move the line where you want to have it and push CTRL + S to save the list of profiles.
If you work on several dictionaries and want to speed up the start-up process, it may be advisable to put your profiles together in a workspace file. Like this you can make sure that the the editor opens the forms on the same place on your screen(s).
The toggleQueryControlType flag refers to the input mode of the editor's query control.
The Dictionary Editor is made up of a number of windows. When starting the program, two components appear on the screen: the Quick Access Panel and the CONTROL Form.
VLE has a modular structure which is organised in a number of windows. Each window offers particular functionalities. The Quick Access Panel is a tool that allows users to quickly bring particular components to the front.
The default position of the Quick Access Panel is the top left corner of the screen. If this space is needed by other applications, the panel can be moved with the green bar to any other position on the screen. When you restart the program, the position will be remembered.
Having opened dictionaries, you see a button for each editor in the first row of controls of the Quick Access Panel. Clicking on one of the buttons brings the respective editor into the foreground.
The current version allows to open six editors concurrently.
The Entry Viewer is a tool to visualise data, either to display representations of single entries or whole result sets.
The Quick Access Panel also gives access to the documentation of the program which is made up of a number of TEI conformant text documents which can be accessed in the Help Window. For more details have a look at the introductary chapter Technicalities.
This button starts the BaseX server on your computer, on the same machine your VLE is being run on.
To make this work, VLE needs the path to the script that starts BaseX' database HTTP services.
Usually, the BaseX installation routine puts an icon on the desktop from which you can get the right path.
The Control Form is used to open dictionaries and to manage the dictionary databases.
The Book Viewer component is a simple image viewer with an attached navigation control.
The Text component allows to open simple text files. Its main purpose is to extract example sentences from texts, to preprocess them and then to import them into the dictionary.
The Quick Query form is a simple control that allows to work with word lists and lookup dictionaries.
The EDITOR forms are the heart of the dictionary editing system. They contain the dictionary writing functionality and provide access to the lexical data. The editor looks like this.
There are not many freely available XML databases. We have chosen BaseX as it is very easy to installing and handle. BaseX is an XML Database engine and XPath/XQuery 3.1 Processor which includes full support for the W3C Update and Full Text extensions of the XQuery specification. It comes with a user-friendly graphical user interface which helps you to explore your XML documents. BaseX has been open source since 2005.
You can download BaseX from this website: http://basex.org/products/download/all-downloads/.
Installing BaseX is pretty straightforward. You simply run the Windows Installer and follow the instructions. To run BaseX you need a recent Java version.
To use BaseX as a web server and VLE to create web applications, create a directory BaseX\webapp\wde\static and copy the files from WDE\templates\basex into this directory as displayed the image below.
Alternatively, you can also use VLE to set up this structure (Installing the Environment, Step 3).
The easiest way to start VLE is to click on the desktop icon.
There are three major steps involved in setting up a new dictionary: (1) preparing the data, (b) creating the database and (c) finally importing the data.
Make sure that your import TEI document complies with the basic requirements expected by the system.
To set up a new dictionary you have to first create a profile. This is explained here.
If you start a new dictionary project, we strongly recommend to make use of BaseX as data server. Your BaseX instance can run on your local machine or on a remote server. VLE provides functionalities to set up the basic structures on the BaseX server.
VLE assumes the existence of five collections for every dictionary:
| Suffix | Contents | |
| Dictionary | This data is expected to be TEI conformant. The dictionary proper has no suffix. | |
| _hist | Older versions of entries | Whenever you save an entry, the previous version is stored together with a timestamp in this database. |
| _lcks | Locking information | This database is used to keep track of who is just editing a record. |
| _ind | Customised indices | This database is not needed for working on the dictionary. It is part of the publication framework and used to create field-specific preview options. |
| _profile | Profile | The information about the particular set-up of the editor is stored in a profile. Usually the profile is stored in the VLE directory. If you work in a group, it will be advisable to share the profile in which case you can store it in this database. |
Before accessing the BaseX database via VLE you have to start the local BaseX server. This can be done by clicking on the desktop icon basexhttp.
Alternatively, you can also click the Windows start button and enter basexhttp.
There are several ways of getting the data into BaseX. When setting up a new dictionary, we recommend to make use of the respective VLE import functions which automatically creates the databases needed.
Step 1 Go to tab BaseX
Step 2 Select tab DB Admin.
Step 3 Fill in your admin password for the database. Having installed BaseX, the password of the default admin user is admin.
The password can be be made visible by pushing F5.
Step 4 Select the Create Dictionary tab.
Step 5 Fill in a name for the new dictionary, add the path to the import file and the profile file. You can double-click in the controls to select the files.
With larger data sets the import may take a while. The progress is being displayed in the LOG form.
When you have more than one dictionary or different language resources in your BaseX database, you should make sure that the collections have meaningful names. We have tried to start the names of dictionaries with the prefix dc_ and use ISO language labels separated by underscores.
Having set-up the collections for your dictionary, you can also make use of BaseX data import possibilities.
The dictionary system contains a very simple user management utility. To access dictionary data a personalised account is required. The user data are stored in a BaseX database.
Step 1 Got to tab BaseX.
Step 2 Select tab Users.
Step 3 Enter a username, a password and a dictionary name.
Step 4 Press then Create user button.
Step 5 Make sure that the user was added to the database by pushing the Show Users button.
VLE does not allow to delete accounts. However, it is very easy to do this in the BaseX GUI.
If you want to connect to an existing dictionary on a remote machine, you simple have to get the profile from the remote server.
Step 1 Got to tab BaseX.
Step 2 Select the tab Dictionaries.
Step 3 Push the List Collections button.
Step 4 Rightclick on the dictionary you need and select Get Profile.
To retrieve the list of collections on the server, you will need admin credentials for the server. If you only have credentials for a particular collection, carry out step 4 in the empty listbox, enter the name of the collection you want to work with and push the ENTER button.
To open a new editor you simply click on a profile in the CONTROL form. You can open up to six editors in one VLE instance. You can also open several editors when working on one dictionary. This will be particularly useful when comparing entries or working with examples to be inserted in a number of entries.
Mind that editors only deal with their data. If you change data in a profile, this will only be used in the other editors after restarting the whole application. The only work-around is to copy the profile on the server from the editor where you applied the changes and getting it from there.
There are two options to move from one editor to another. You can simply click on the buttons in the Quick Access Panel.
The second option is to make use of the functions goToEditor1, goToEditor2 etc. In our dictionary projects, these functions have been associated with the keyboard shortcuts Ctrl + 1, Ctrl + 2 etc.
As we have seen in the passages above profiles can be edited in the CONTROL form. Each editor is also furnished with a tab that contains the currently activated profile. Opening a dictionary means opening an editor with a particular profile. Many items of a profile are accessible in the configuration. However, you also have direct access to all the data of the profile in the profile tab.
Make sure to manually save this data whenever you made changes. There are two ways to do this: either by pushing CTRL + S in the profile editor or by activating the context menu (right-click) and selecting Save Profile. This will save the profile in the profiles directory.
If you want to share a profile with others, you best store it on the server. Right-click in the profile editor and select Copy Profile To Server.
When working on an existing dictionary you first have to find the records you want to work on. Keep in mind that you are working with a database. To create a list of entries to work on, you have to query the database for the entries you want to have. The smaller the list, the better. Unless you are working with a very small dictionary, you do not want to retrieve all entries. Creating large datasets may slow your system down.
Enter a query string in the query control of the current dictionary editor and push the Enter button.
You can use the asterisk (*) to manually truncate words to query for substrings. String-initial will usually take considerably more time, combined queries even more so.
In a BaseX based environment, you usually use .* (dot + asterisk) while in the MySQL setup a simple * is expected.
To avoid repeated typing of queries, the last queries are saved in the Last Queries tab. To repeat a query, simply click on an item.
There are two query controls, a white one and a yellow one. The yellow one allows you to work with the same keyboard layout used in the main XML editor. You can switch between the two by pushing the Toggle Button.
The yellow input control is usually used when diacritics and/or special characters are needed.
Don't Empty Listbox prevents the results listbox from being emptied when a new query is started.
When working with BaseX as a data server, all your queries need to be formulated in a language called xQuery. VLE sends this query to the database and displays the result set. It is helpful to know how to modify the queries. However, you can simply reuse predefined queries.
Each dictionary is associated with a set of query templates which are used by VLE to form the queries. The set of queries used with a particular dictionary are stored in the configuration of your dictionary. You can access them in the configuration tab of the dictionary editors.
Each query template is identified by a label.
When running a query, you choose a template, VLE replaces the variables in the query and sends it to the database.
You trigger a query by entering a query term ...
... and pressing the ENTER button. The results are displayed in the listbox on the left side of the editor.
Each template has two variables which are used by VLE: {dict} identifies the BaseX collection, and {subQuery} which contains the query string proper.
BaseX offers support for the W3C XQuery Full Text 1.0 Recommendation.
Usually, VLE only retrieves a string to be displayed in the listbox (mostly the lemma together with a POS label) and the ID of the retrieved items. The display strings are used to navigate the result set. You simply double-click on a particular item to retrieve it from the database to either see it or to work on it.
To reconcile word lists with data in dictionaries, you can make use of the Quick Query component. There you can load verticalised word lists which you can look-up one by one in the dictionary without having to copy the word into the query control of the dictionary editor.
When creating new entries, you usually proceed from predefined templates. There is no need to build each entry from scratch. For many languages it makes sense to have a template for nouns, verbs, adjectives, multi-word units and examples.
Step 1 Click in the editor.
Step 2 Press CTRL + N. N stands for New..
CTRL + N takes you to the Entry Templates tab. When creating an entry for the first time, it can happen that entry types are not displayed in the listbox on the left side of the Entry Templates tab.
To remedy this, proceed as described below.
Step: Press F2 and then press Enter or push the Redo Names with xPath button.
Step: Make sure to save your profile after you have done this.
Step 3 Select a template from the listbox by double-clicking.
This takes the selected template, inserts it in the editor and shows the editor tab.
Step 4 The red panel on top indicates that this data has not been saved yet. Before anything else enter a lemma string.
Step 5 Then, the most important thing is to create a unique identifier (ID) for the entry. This should always stay the same and not contain any special characters. To insert an ID press CTRL + I.
The function creating the ID creates only produces lower case output. Many special characters are normalised. The function tries to remove diacritics. The result should look like this:
Step 6 Now you do the rest of the entry. In the case of this very simple example this is just adding a tranlsation.
Step 7 In the end you save your work with CTRL + S. The entry appears in the listbox and the red bar on top disappears.
Before you really start to work on a new dictionary you will have to think about the structure of your dictionary entries. In accordance with your particular needs, you will have to modify the existing templates.
The templates are stored in the configuration of the dictionary editors. Typically, there are templates for particular word classes, multi-word-units or examples.
Having changed anything in the entry templates, you have to save the profile (CTRL + S).
Except for only a few buttons that are associated with the most common functions, the XML editors are mainly controlled through short cuts. Most of these can be freely configured. The most common key assignments used in our projects are shown below. For a description of the functions associated with the keys look at the chapter Functions.
| Shortcut | VLE Function | Explanation |
| F1 | prevEntry | Go to the previous entry |
| F2 | nextEntry | Go to the next entry |
| F3 | formatEntry | This function reformats the entry being worked on. |
| F4 | saveEntry + nextEntry | Functions can also be combined. F4 saves the entry and loads the next one. |
| F6 | showTextTemplates | This function shows text templates. |
| F8 | insertTemplateString | This function inserts the last template string in the dictionary entry. |
| CTRL + I | createID | This function creates a new value for the xml:id attribute of the entry. |
| CTRL + L | loadTranslationKeys | (Un)load translation keys |
| CTRL + S | saveEntry | Save the entry |
| CTRL + F3 | browseEntry | This function performs an XSLT transformation and displays the output as HTML. |
| CTRL + F5 | insertEndTag | This function inserts the end tag of a start tag that was just entered. |
VLE does not automatically save your work. Whenever you changed something you have to save the data explicitly.
You can create elements by simply typing them into the editor. Mind that there is special function insertEndTag which insert the end tag of an element.
The usual way to insert a new element is by copying templates. These are defined in the Config tab.
Every template has to be on a separate line. When they are inserted in the entry they are automatically formatted. In the standard setup F6 gets you from the entry editor to the Template String editor.
F5 inserts the template of the line in which the caret is and moves back into the editor.
Next you should execute the function formatEntry which formats the entry with the new data. In the initial setup, this function is associated with F3. In the following illustration, you can see that the single line of the inserted string is put on several indented lines.
A useful feature of VLE is its automatic character replacement functionality. Particular keys can be assigned any Unicode characters. These assignments are defined in the Key Translations tab of the configuaration. To load and unload the key assignments the loadTranslationKeys function which in the default setup is associated with CTRL + L.
Usage examples can be dealt with as entries in their own right. For the encoding details, have a look at Budin/Majewski/Moerth 2012. The advantage of not having them in the sense section of entries is that examples can be reused in multiple entries.
To create an example and add it to an entry follow these steps:
VLE does not support right-to-left editing. Arabic and Hebrew text will not be displayed in the proper way in the editor. Actually, this has not posed a major obstacle so far. In projects containing Arabic script, input has been done in transcription which subsequently was transformed automatically into Arabic script.
VLE does currently not have a built-in undo function.
Together with each save command, VLE produces a copy of the record you loaded. This version is stored together with a timestamp in the database. It can be accessed as long as you do not change the ID of the record. See chapter Metadata: Versioning.
You can get different visualisations of your data by applying XSLT stylesheets. Working on a dictionary, HTML representations of the data can be displayed in two locations. Either they can be shown in the dictionary editor next to the XML data. The green area on the left side is a browser representation of the data on the left side.
The second option is to show the data in a detached form which allows you to move it to any convenient location on the screen.
Which option to choose, you can configure in the configuration tab of the tool.
Currently, only data stored in BaseX databases can be validated. As per default, tei_all.xsd is used.
The easiest way to apply global transformations to a dictionary is by making use of oXygen and to connect to the database via webDAV.
Reduplicate your dictionary data as often as possible and store it in a safe place. There are several ways to achieve this. The best way to keep your data safe is distributing as many copies as possible!
You can get direct access to your dictionary data making use of the graphical user interface of BaseX.
Step 1 Open the graphical user interface of BaseX
Step 2 Open the Manage Databases dialog (CTRL + M)
Step 3 Double-click on the collection you want to save: It is displayed in the results panel of BaseX.
Step 4 From there you can save the whole collection into a single XML document.
Make use of meaningful document names like e.g. the name of the collection plus suffix indicating the data when it was saved.
Keep in mind that a dictionary is made up of several collections. To fully restore a dictionary you will need the history and the profile as well.
All the data of a dictionary which is stored in the BaseX server can be exported into a single self-contained XML document.
Step 1 Open the export tab of the VLE dictionary editor
Step 2 Enter a file name. Per default the dictionaries are stored in the dicttemp folder which is created when you first start VLE. The path can of course be changed.
Step 3 Press the Save all Records to Single Document button.
This feature can come in handy when you want to apply changes to a great number of entries. You can simply export the data in the described manner and then reimport them.
The functionalities of many features can be changed in the configuration of the editor. Having changed anything in the configuration or a profile, you have to save the profile of the dictionary project otherwise the changes will not be remembered in the next session.
The following paragraphs deal with the most important parts of the configuration.
This tab contains a number of string values which are used by the editor.
Responsibility String is used as a template in creating production metadata. Cf. Chapter Metadata.
VLE performs simple XML formatting which is controlled through this tab. When the first checkbox is checked, no empty lines are inserted between particular elements.
In this tab you configure the appearance of VLE. You can make visible several tabs which are not there in the standard setup.
In this part of the configuration, you can associate key combinations with particular functions of the dictionary editor.
It is also possible to write simple macros by assigning several functions to one key. The functions are separated by a comma and must be on the same line. E.g. F4=saveEntry,nextEntry.
VLE's XML editor component allows the automatic replacement of particular keys with others. You can for instance make the editor translate every A with ā when you are typing in an element with a particular xml:lang attribute.
These templates are used when querying the database. See chapter Querying the Database.
These templates are used when creating new entries. See chapter New Enries.
Template strings spare the dictionary editor the effort of typing tags when compiling dictionary entries. Basic information as to what these templates are used for can be found in the chapter Working with the Data.
Template labels are short strings (usually two or three characters) which allow you to insert the string in the same line without switching to the Template String tab. When VLE detects these strings which have to start and end with a hash, it locates the respective template and replaces the label by it.
When editing the template strings, you can add a number in curly brackets at the end of the line which indicates where the cursor is supposed to be placed after inserting the string. Move the cursor to the position where you want it to be after inserting the string and push F3.
Compare the two following images:
This chapter only deals with managing data in the BaseX environment. The solutions with relational databases are regarded as deprecated.
There are several ways to get your data into the BaseX database.
Step 1Go to tab BaseX in CONTROL form.
Step 2Go to tab Dictionaries.
Step 3 The List Collections button retrieves a complete list of all collections on the server.
Step 4Select the collection on which you need information and right-click in the context menu on Get Statistics. The result of the query will be displayed in a TEI conformant encoding.
This data can be used in the header of your dictionary.
If you want to drop a whole dictionary, proceed as described above. Select the collection on which you need information and right-click in the context menu on Drop Collection. You will be asked twice if you really want to do this. This step is irreversible!
This function only works for dictionaries. It will try to also delete the collections with the prefixes.
Production metadata is mainly collected in two places: (a) the teiHeader of the dictionary and (b) the lexical units (entries, examples) stored in the database.
The teiHeader holds the main metadata about the dictionary. To learn more about teiHeaders, have a look at Chapter 2 of the TEI Guidelines. To access the teiHeader of a particular dictionary in the editor, select the query template with the label header and query with the asterisk (.*).
In addition to the usual metadata, VLE helps to generate and store statistical information about your dictionary. To retrieve statistical information about your dictionary follow these steps:
Step 1 Go to tab Config in CONTROL form.
Step 2 Click on tab BaseX and then on tab Dictionaries.
Step 3 Click on List Collections to see all the available BaseX collections.
Step 4 Right-click and select Get Statistics in the context menu.
Step 5 Insert this data on a regular basis in the teiHeader of the dictionary.
VLE uses a TEI conformant tag-set to record production metadata in the entries and examples stored in the dictionary. The system is based on feature structures as defined in Chapter 18 (Feature Structures) of the TEI Guidelines. A description of this simple system can be found in Budin/Majewski/Moerth 2012.
VLE supports versioning on the level of entries. Whenever an entry or a cit/quote are stored, a copy of the previous version is stored with a timestamp in the database. These records can be found in the collection with the _hist suffix.
In VLE you can access previous versions of entries by switching to the Versions tab. Open an entry in the editor an select the versions tab.
VLE shows you the previous versions. The list box displays the ID and the time stamp. You can access any of these by double-clicking on them.
It is also possible to access earlier versions through filtering the dates or IDs. The following image shows you how to see all entries saved into the history list on 10 March 2017.
Many functions of the editor are controlled through keyboard shortcuts. The key assignments are defined in the configuration which is associated with a particular dictionary. Go to tabsheet "Config" and then to tabsheet "Keys". For the details, have a look at Chapter Key assignments.
Some function expect arguments which are put in brackets, several arguments are separated by commas.
The selected functions below are listed in alphabetical order.
This function displays the currently opened entry making use of the Single Entry Stylesheet
This function checks the structural integrity of the XML data in the editor.
This function is used for recording sound files. It expects an xPath expression as parameter to select the elements which should be assigned IDs.
This function creates an ID for an entry. The function makes use of the value of "ID xPath" in the tabsheet "General" in the configuration.
This function attempts to reformat your entry according to your configuration. It is usually associated with F3.
This function determines the xPath at the current position and copies it to the clipboard. This function is typically used when working on XSL stylesheets. Mind that the function is very simple, it ignores namespaces and does not return attributes.
This function transfers the input focus to the query control.
This function transfers the input focus to the example extractor component.
This function increases the numeric value of the current ID by one.
This function inserts text from the clipbox in the previous or next element. Several elements are separated by the pipe: insertCBInNextEle(quote|orth).
This function inserts the end tag of the last tag in which the cursor was. Mind that the function is not able to resolve any inconsistencies you might create.
This function is used for recording sound files.
This function is used for recording sound files.
This function inserts a template string into a dictionary entry.
This function replaces the selected string with the data from the translation dictionary. It is possible to insert several items or only a single line from the lookup dictionary. Formating of the string to be inserted can be controlled through templates which should be defined in the edit control under the listbox with the results in the lookup dictionary tabsheet. To see seversal options, click in the control edit and press F2.
This function loads and unloads the translation keys. This feature is used when characters which are not part of the standard keyboard layout are needed.
This function opens the next entry in the listbox displaying the results (on the left side of the editor). It is usually associated with F2.
This function is used for recording sound files.
This function opens the previous entry in the listbox displaying the results. It is usually associated with F1.
This function is used for recording sound files.
This function replaces the string x by the string y in the text contained in the editor.
This function saves the currently opened entry. As per default, it is associated with the keyboard shortcut CTRL + S.
This function selects the element in which the caret is currently placed.
This function transfers the focus to the Template String editor. In the default configuration it is associated with F6.
This function is used for recording sound files.
This function looks up the selected string in the translation dictionary.
By making use of XSLT stylesheets, XML can be transformed into other text formats. VLE makes use of XSLT stylesheets to create various visualisations of dictionary entries. VLE's dictionary editor component provides two editors for XSL stylesheets: one for Single Entry Styles and one for a special type of result sets, the Result List Styles.
This editor is used to edit the XSL stylesheets used to visualise the individual entries (cf. Basic Workflow steps: Visualising your entries).
The second editor is used to visualise result sets Visualising your entries).
XSL stylesheets can be used to transform dictionary entries. To do that you first have to make the Transform tab visible.
The latest versions of VLE build heavily on the BaseX XML database. The TEI conformant dictionaries created with VLE can easily be published through the REST interface of the BaseX database. You can publish the data being edited by VLE and stored in Basex directly on the Internet.
To start publishing a digital dictionary, you need a working BaseX environment. Follow this link to get information how to set-up BaseX.
To learn how to create a dictionary, follow this link.
To learn how to set-up the required directory structure follow this link.
There are several options to populate your dictionary with data. To learn how to import existing data follow this link.
VLE can support you in setting up the web interface. As a first step, the application builder has to be made visible. Per default, it is not shown.
Step 1 Make sure that the BaseX\bin path is set correctly.
Step 2 Start the local BaseX server.
Step 3 Go to tab Config in CONTROL form.
Step 4 Check the Show App Builder tickbox. This makes an additional tab visible.
Step 5 Go to tab App Builder
You start creating the web interface by furnishing the Application Builder with a number of basic data.
Next, the fields to be made searchable in the interface have to be defined. Click into Fields and push F2.
If your dictionary does not have domain labels, word class data or etymologies you simply can remove the respective lines.
The target language options are created from the ISOlanguage labels on the left side. The Target Lang. Name can contain several languages separated by commas. Make sure that the corresponding field for ISO lang labels contains the same number of values.
By pushing the Create Files button four documents are created:
When pushing the buttons, four templates are loaded and adapted to the particular settings.
The fields are used to create a select/option structure in the HTML document.
Before creating the web application, indices have to be created in the BaseX database which can be used by the interface. In the BaseX database these are stored in a separate database with the suffix _ind. (Cf. Chapter Creating a New Dictionary: Setting-up BaseX Collections)
Step 1 Activate the Create Index Query tab.
Step 2 Push the Load Template button.
Step 3 Push the Create button.
Step 4Run the query in BaseX. To do this, start the browser-based database administration interface of BaseX, go to Queries, copy the whole text that starts with "declare namespace" into the query control, choose query is 'updating' and execute the query.
Alternatively, you can also start the BaseX graphical user interface, open an editor and run the script there.
Step 4 (alt.) Run basexgui.
Step 5 (alt.) Insert the XQuery which you created in Step 3 into the editor of the GUI and push the green arrow.
No everything should be ready to save the application. The Application Builder module creates the files in the directory BaseX\webapp\wde\static and copies some necessary other files to that directory. On Windows machines this is located in C:\Program Files (x86). Each application is stored in a separate directory. In a system with several dictionaries, the file tree might like this:
To create the new WEB application simply push the Create Website button. If your WEB server is running you will see something like this:
On a local machine, you can start the server software through the basexhttp script. There should be an icon on the desktop. Click it and Bob is your uncle ;-)
You can also use the built in Loc. BaseX button on the Quick Access Panel.
On a local machine, you access the dictionary via http://localhost:8984/dict_api/{dictdir}/{dictname}.html.
When using a separate publication server it will be necessary to transfer data from the production server to the publication server.
Step 1Export the dictionary into an XML document. Usually, you will have to only export a subset of released records. There is an xQuery example export_released_tei_dict__v001.xq in the WDE/Docu/examples folder.
Step 2Delete the old data. There are again several ways to do this, WebDAV is one possibility.
Step 3Transfer the new data into the database.
Step 4Update the index collection.
The tokenEditor is a module that was designed to perform post-editing of token elements. It has mostly been used to to edit TEI documents with w tags, however it can work on any XML elements.
A simple introduction (token_editor__v003.pptx) can be found in VLE's docu directory.
Start the tokenEditor by clicking on the respective button in the Quick Access Panel.
Three forms should pop up, next to each other.
The next step would be to have a look at the configuration. The most common scenario is TEI encoded documents with token elements.
The tool allows you to work accross a number of files. However, there is a limit which is determined by the memory of your computer. To work accross several files, these have to be kept concurrently in the memory of your machine.
Opening extra-large files and also closing them will usually take some time.
This feature was developed and used for the Damascene Dictionary.
Step 1 First you have to make the Recording Panel visible.
The editor should then look like this:
Step 2 Make sure that recording parameters are set properly. They are to be found on the Varia tab of the configuration.
If the controls are empty, push F2 to get default values.
Step 3 Configure function keys. There are several functions used to do the recording which have to be assigned values.
Step 4 Open an entry by double-clicking on an item in the results listbox.
Step 5 Assign IDs to all forms. Every form element has to have an @xml:id. Move the focus into the XML Editor and push F12 which should trigger the function createElementIDs(//form).
Step 6 Insert Media Tags. Move the cursor into each form element and push F7 (=InsertMediaElement).
Step 7 Record by pushing the Record button.
Step 8 Control the recording by pushing the Play button.
Step 9 Insert the duration value. Move the cursor into the line with {dur} and push Ctrl + D.
Step 10 Save the record.
The Book Viewer component is capable to display JPG and BMP files. To navigate a collection of such images you need to prepare a text file which contains the metadata about the images.
To experiment with this component, we recommend to go to website of the Internet Archive. From there you can download large amounts of digitised books in form of images. The data there were created as part of many different programs and are quite heterogeneous: some image collections come in form of TIFFs, others as BMPs or JPGs.
To create the above mentioned metadata file, we provide an application which is called image_annotator.
Step 1 Start the application. You find image_annot.exe in the WDE directory.
Step 2Find the folder with the images.
Step 3 Create an empty template by pressing the Create Document button.
Having pushed this button, a form opens which contains a template with which the next steps can be performed.
Step 4 Add page numbers. With the controls xPath and Value you can assign page numbers and page descriptions. With xPath you define the element to which a particular value is to be assigned.
To add page numbers, xPath has to be //pb/@n, value is set to 1. The value is assigned from the position of the caret onwards. Check the radiobutton Inc by one.
Step 6 Set page descriptors. It is helpful to have concise indicators of the contents of a page. Typically, such information is provided by strings such as Preface, Introduction or Contents. The main body of the dictionary needs indicators that display the position inside the dictionary, normally letters of the alphabet. The xPath for the descriptions is //fw. Having finished the work the data looks like this:
Examples of this can be found in the examples folder of VLE's documentation:
Step 7 Edit the Header. The document is a TEI document. It could be used to start a transcription of the text contained in the images. One important part of the teiHeader is the sourceDesc/ab/@type="quoteTitle". It is supposed to be a short title that can be used in bibliographic references. These strings serve as templates for references to be inserted in dictionary entries.
Step 8 Save the File. Change the filename in the control on the bottom of the Metafile form.
You can navigate both in the files form and in the metadata form. Double-clicking in the files form will also display the image.
In order to read a book, i.e. to browse through the images, open the Book Viewer component in VLE.
The Book Viewer needs the path to the metadata file and the path to the images.
By pushing the Load button, the metadata file is loaded and the first page of the book displayed.
There exists a predefined function which inserts references of particular pages into dictionary entries. By double-clicking on the top panel of a book's page a reference to the respective page is inserted in the target editor.
The template for the string to be inserted is defined in the TEI header. For the details see Step 7 above.
The above described metadata files can also be manipulated in VLE. To streamline certain steps, the Book Viewer component has a Macro button which allows users to execute particular functions.
The fetchIDfromTargetEditor function retrieves the xml:id of the record in the target editor and inserts it into the definition of the currently open page. nextPage displays the next page, prevPage displays the previous page.
Many dictionaries contain sample sentences. The Text component helps to extract sample sentences and to import them into the dictionary. It is opened through the Text button on the Quick Access Panel.
This is a simple guide which takes you through one particular example. It is supposed to demonstrate how you can set up your own WEB dictionary by taking you step-by-step through the whole process. Most of the details are mentioned somewhere before in these guidelines.
You need two basic components: the BaseX XML-Database and the Viennese Lexicographic Editor.
Step 1 First you have to download BaseX and install it.
Step 2 Next download the lexicographic editor VLE and install it.
Step 3 Prepare BaseX for use with VLE.
Step 3 Go to the TUNICO website: https://tunico.acdh.oeaw.ac.at/about_dictionary.html. In the section Data, there is a link which allows you to download the XML/TEI data.
Step 4 Start the Local BaseX Server.
Step 5 Copy the downloaded data to the database by following these instructions. The image below shows settings with which you can do the import.
Import File is the one you downloaded. Profile File can be found be in VLE's templates folder.
Step 6 Create a user account by specifying a user and a password.
At this point, everything should be ready to set up the WEB dictionary.
Step 7 Follow the steps in the Application Builder.
This is a list of problems that cropped up recently.
If not properly configured, the results of a query can display unwanted elements or elements not properly formatted.
A similar scenario are results with only IDs.
This can be solved following these steps:
Step 1Go to tab Config in your editor.
Step 2Select tab General.
Step 3Set a proper Main Lang. Label. This must be the same as in your entries. For the above example the label has to be de which stands for Deutsch 'German'.
If results contain items that should not be there, this may have got to do with the indexing options of the BaseX database.
If you get an error like the one above try the following:
Step 1 Go to tab Config in your editor. There are several configuration tabs in the program. Mind to stay in the editor!
Step 2 Select tab Transfer.
Step 3Try to change the values here. Set Request Content Type to application/xml and Request Transfer Encoding to UTF8
The ID of the record might contain an impermissible character. Check the database.
This message can have to meenings: either the server is really not reachable or the configuration has an incorrect value for request transfer encoding.
Step 1 Go to tab Single Profile.
Step 2 Open the appropriate profile.
Step 3 Find the line <requestTransferEncoding>UTF8</requestTransferEncoding>. Remove UTF8 and save the profile (CTRL +S).
Modify the value of Request Transfer Encoding. Try to set it to utf8.


I'm not a very smart IRC bot.
My implementation is available on GitHub
I'm a HTTP-IRC gateway, I was originally created so that systems could easily talk to DevOps
It's easy to hook it up with "web-hooks"
{{if .Channels}}You can currently find me as {{.Nick}} on the current channels of {{.IrcAddress}}:
I'm not currently on any channel
{{end}}Here is how to make me send a message to a channel:
curl -XPOST {{.Url}}/post/ops -d "msg=INFO: deployment of frobnicator completed" -or- # entire payload is the message, just make sure Content-Type is not multipart or urlencoded curl -XPOST {{.Url}}/post/frobnicator-dev -H 'Content-Type:' -d "3 code reviews pending for more than 24 hours"


The following is the example of JavaScript scratch card. Scratch it with touch or mouse.
Coupon Code: 123456789
Status:
- gray
- ?
- erase
- ?
Scratch card sample, use native Canvas
Written in HTML, CSS and JavaScript...
The following is the example of JavaScript scratch card. Scratch it with touch or mouse.