Entries tagged 'cat:Projects' (Page 7)

LED Pictures Entry Permalink (edited 2020-09-19) author:steeph (366) cat:DIY (15) cat:Light (4) cat:Pinkie Pie (3) cat:Projects (40) lang:en (251) top:Projects (58)

An unremembered number of years ago I started wanting to make at least one picture like this. A picture engraved into a transparent polymer sheet, lit by LEDs from the side. The light gets scattered in the rough places of the sheet. If the LEDs are hidden, e.g. in a frame, this makes it look like the transparent picture itself is glowing. I liked the idea - probably seen it somewhere. And I knew I'm not good at making pictures - be it with paint or an engraving cutter. So I didn't do it. Usually this is the end with ideas like this of mine.

I couldn't get rid of the idea for years though. And some day I made one. It didn't look good but I liked it. I made a few more and applied more efford this time.

I saw a potential to become better at this (and still do) so I made more and more. And about 7 years later I have made hundrets of them. (Sold most of them.) Attached are a few I like best.

File Attachments (27 files)
LED-pictures-IMG_20180904_1501108.jpg (image/jpeg, 154847 B)
LED-pictures-IMG_20180904_1501108.jpg (image/jpeg, 154847 B)
LED-pictures-IMG_20180905_0239335.jpg (image/jpeg, 89611 B)
LED-pictures-IMG_20180905_0239335.jpg (image/jpeg, 89611 B)
LED-pictures-RZL_1000.jpg (image/jpeg, 103647 B)
LED-pictures-RZL_1000.jpg (image/jpeg, 103647 B)
LED-pictures-_MG_7056b1000.JPG (image/jpeg, 123066 B)
LED-pictures-_MG_7056b1000.JPG (image/jpeg, 123066 B)
LED-pictures-another_rainbow_dash_acrylic_led_picture_by_steeph_k_da3aauo.jpg (image/jpeg, 84049 B)
LED-pictures-another_rainbow_dash_acrylic_led_picture_by_steeph_k_da3aauo.jpg (image/jpeg, 84049 B)
LED-pictures-applejack_cutie_mark___multi_colored_led_picture_by_steeph_k_da48hoi.jpg (image/jpeg, 57679 B)
LED-pictures-applejack_cutie_mark___multi_colored_led_picture_by_steeph_k_da48hoi.jpg (image/jpeg, 57679 B)
LED-pictures-applejack_cutie_mark_acrylic_block_led_picture_by_steeph_k_da24vzk.jpg (image/jpeg, 91616 B)
LED-pictures-applejack_cutie_mark_acrylic_block_led_picture_by_steeph_k_da24vzk.jpg (image/jpeg, 91616 B)
LED-pictures-canni_soda_acrylic_led_picture_by_steeph_k_da24wnk.jpg (image/jpeg, 111226 B)
LED-pictures-canni_soda_acrylic_led_picture_by_steeph_k_da24wnk.jpg (image/jpeg, 111226 B)
LED-pictures-cutie_mark_crusaders_acrylic_led_picture_by_steeph_k_dc5lsy7.jpg (image/jpeg, 149825 B)
LED-pictures-cutie_mark_crusaders_acrylic_led_picture_by_steeph_k_dc5lsy7.jpg (image/jpeg, 149825 B)
LED-pictures-cutie_mark_crusaders_logo_acrylic_led_picture_by_steeph_k_d9zdwwp.jpg (image/jpeg, 205219 B)
LED-pictures-cutie_mark_crusaders_logo_acrylic_led_picture_by_steeph_k_d9zdwwp.jpg (image/jpeg, 205219 B)
LED-pictures-daring_do_acrylic_led_picture_by_steeph_k_d9zdvoo.jpg (image/jpeg, 122848 B)
LED-pictures-daring_do_acrylic_led_picture_by_steeph_k_d9zdvoo.jpg (image/jpeg, 122848 B)
LED-pictures-fluttershy_acrylic_led_picture_by_steeph_k_d9pdapn.jpg (image/jpeg, 109975 B)
LED-pictures-fluttershy_acrylic_led_picture_by_steeph_k_d9pdapn.jpg (image/jpeg, 109975 B)
LED-pictures-fluttershy_acrylic_led_picture_by_steeph_k_d9rusmw.jpg (image/jpeg, 117685 B)
LED-pictures-fluttershy_acrylic_led_picture_by_steeph_k_d9rusmw.jpg (image/jpeg, 117685 B)
LED-pictures-fluttershy_s_cutiemark_in_acrylic_block_by_steeph_k_d6uf9v7.jpg (image/jpeg, 152978 B)
LED-pictures-fluttershy_s_cutiemark_in_acrylic_block_by_steeph_k_d6uf9v7.jpg (image/jpeg, 152978 B)
LED-pictures-lyra_and_bon_bon_acrylic_led_picture_by_steeph_k_d9ry7ie.jpg (image/jpeg, 152492 B)
LED-pictures-lyra_and_bon_bon_acrylic_led_picture_by_steeph_k_d9ry7ie.jpg (image/jpeg, 152492 B)
LED-pictures-pinkie_pie_acrylic_led_picture_by_steeph_k_d6bzjou.jpg (image/jpeg, 102091 B)
LED-pictures-pinkie_pie_acrylic_led_picture_by_steeph_k_d6bzjou.jpg (image/jpeg, 102091 B)
LED-pictures-pinkie_pie_acrylic_led_picture_by_steeph_k_d9pd9z3.jpg (image/jpeg, 124027 B)
LED-pictures-pinkie_pie_acrylic_led_picture_by_steeph_k_d9pd9z3.jpg (image/jpeg, 124027 B)
LED-pictures-pinkie_pie_by_steeph_k_da5su9v.jpg (image/jpeg, 105282 B)
LED-pictures-pinkie_pie_by_steeph_k_da5su9v.jpg (image/jpeg, 105282 B)
LED-pictures-pinkie_pie_cutie_mark___multi_colored_led_picture_by_steeph_k_da5v5ob.jpg (image/jpeg, 140696 B)
LED-pictures-pinkie_pie_cutie_mark___multi_colored_led_picture_by_steeph_k_da5v5ob.jpg (image/jpeg, 140696 B)
LED-pictures-pinkie_pie_cutie_mark_acrylic_led_picture_by_steeph_k_dc5lwy0.jpg (image/jpeg, 123627 B)
LED-pictures-pinkie_pie_cutie_mark_acrylic_led_picture_by_steeph_k_dc5lwy0.jpg (image/jpeg, 123627 B)
LED-pictures-princess_celestia_led_picture_in_mirror_by_steeph_k_d9d2yit.jpg (image/jpeg, 222735 B)
LED-pictures-princess_celestia_led_picture_in_mirror_by_steeph_k_d9d2yit.jpg (image/jpeg, 222735 B)
LED-pictures-queen_chrysalis_acrylic_led_picture_by_steeph_k_d9w2clx.jpg (image/jpeg, 133278 B)
LED-pictures-queen_chrysalis_acrylic_led_picture_by_steeph_k_d9w2clx.jpg (image/jpeg, 133278 B)
LED-pictures-queen_chrysalis_acrylic_led_picture_by_steeph_k_da3w42m.jpg (image/jpeg, 114791 B)
LED-pictures-queen_chrysalis_acrylic_led_picture_by_steeph_k_da3w42m.jpg (image/jpeg, 114791 B)
LED-pictures-rarity_cutie_mark_acrylic_block_led_picture_by_steeph_k_da24vsi.jpg (image/jpeg, 90352 B)
LED-pictures-rarity_cutie_mark_acrylic_block_led_picture_by_steeph_k_da24vsi.jpg (image/jpeg, 90352 B)
LED-pictures-scootaloo_cutie_mark_led_picture_by_steeph_k_d9cmgph.jpg (image/jpeg, 148415 B)
LED-pictures-scootaloo_cutie_mark_led_picture_by_steeph_k_d9cmgph.jpg (image/jpeg, 148415 B)
LED-pictures-sleeping_rainbow_dash_acrylic_led_picture_by_steeph_k_d9pda8i.jpg (image/jpeg, 120412 B)
LED-pictures-sleeping_rainbow_dash_acrylic_led_picture_by_steeph_k_d9pda8i.jpg (image/jpeg, 120412 B)
LED-pictures-vinyl_scratch_led_picture_by_steeph_k_daayerp.jpg (image/jpeg, 123649 B)
LED-pictures-vinyl_scratch_led_picture_by_steeph_k_daayerp.jpg (image/jpeg, 123649 B)
The WILD Ball Entry Permalink (edited 2020-03-06) author:steeph (366) cat:Dreaming (9) cat:Lucid Dream Induction (3) cat:Lucid Dreaming (12) cat:Projects (40) cat:incomplete (21) lang:en (251) top:Projects (58)

WILD Ball - electronic DIY aid in WILD induction

What is a WILD Ball?

WILD Ball is the name I have given my little project to build a device that aids a person in falling asleep more consciously and possibly experience waking-initiated lucid dreams.

It is a tennis ball sized device that you hold in your hand while trying to fall asleep consciously (usually after a WBTB). WILD (waking-initiated lucid dream) is referring to my preferred way to experience dream consciousness.

(How) Does it work?

The most common reason why WILD attempts fail is that the critical moment - the exact moment where you start to perceive the dream instead of your physical surrounding enough to control the dream consciously - is simply missed. You stay awake for a while, and when/if you finally fall asleep, you don't notice it. It is important to stay aware until or become aware right at that moment where you already perceive a dream but are still conscious enough to control it. There is a variety of mental and a few physical techniques that are supposed to help one to accomplish just that. This device is an additional aid to mental techniques. As with other electronic devices made to aid lucid dream (LD) induction, it is expected to work best if you already have experience in successful LD induction. Of course it is not necessary to have experienced LDs before in order for this device to help accomplish this goal. I suggest its usage as a part of the WILD induction training of anybody who sees it as a fitting addition to their WILD practice. If you already have the ability to explore hypnagogic hallucinations extensively or sometimes experience the beginning of a dream without becoming lucid, this device might fill a gap in your LD practice.

The WILD Balll has two different usage modes. (More might be added in the future.) Both aim to remind its user of their intention to fall asleep consciously by sounding a buzzer whenever the muscle contraction of the hand that is holding it drops below a certain threshold. It is an old technique to hold something in one hand and let it fall on something that makes a noise, thus waking one up right at the moment where muscle contraction is too weak to hold the object. This technique is seldomly discussed in the lucid dreaming community though and I have found only a handful of reports of people experimenting with or using it. Using an electronic device instead of a heavy object and a noisy underground has some advantages which might overcome the limitations that the classical approach has.

  • The type of sound can be altered in software. The built presented here only provides a simple piezo buzzer. But the design can easily be extended to play more complex sounds or music.
  • The length and volume of the sound can be altered in software, making it easier to tune it to your personal requirements.
  • The device can be used at any sleeping place and does not need to be set up before use when travelling.
  • By using headphones or a speaker pillow a loud alarm sound can be played for the user without disturbing other sleepers in the same room.
  • Obviously it is cooler to do it this way than to rely on simple physics.

Mode 0 imitates the classical approach of letting the object fall when the muscle contraction becomes weak. The alarm sound is triggered when the device is moving at a certain speed or above. Movement is detected in three axes independently. The speed threshold can be simply set in software. If you want to move your hand or otherwise adjust your body during a WILD attempt without triggering the alarm, you can simply squeeze the device, which disables the sound until you let go and only hold it lightly again. For more uses of mode 1, see Ideas/modifications below.

Mode 1 follows a different approach to achive the same result. You steadily squeeze the device during your WILD aatempt. As soon as the pressure drops below a certain threshold the alarm sounds for the defined duration. Right now this a implemented with a binary switch which means the threshold can not be adjusted in software but only changing the the way the switch is built, by using a different pre-manufactured switch or by changing (the hardness of) its surrounding (the ball itself). The switch could be replaced with a preassure sensor to allow more gradual detection of preassure loss.

How to build one

(tba)

Challenges/known problems

(tba)

Getting used to holding the object, alarm sound too loud, getting used to the sound

The code

If you have a device built according to the above pictures then you can use the below Arduino sketch (download .ino file) as it is. Otherwise it should give you an idea of how to program the microcontroller used in your DIY built.

/*
    This is the Arduino sketch for the WILD Ball, a simple device that aids a person in falling asleep more
    consciously and possibly experience waking-initiated lucid dreams.
    More information at: https://steeph.de/projects/wildball/
*/

#include<Wire.h>
const boolean usageMode = 0; /*
    There are two different usage modes:
    0: The alarm is triggered when the device is moved unless the button is pressed. (The button can be pressed
       while adjusting the hand or lying position. When the button is let go the alarm is active again.)
    1: Movements are ignored. The alarm is triggered and will sound for toneDuration milliseconds when the button is not pressed. */
const boolean debugMode = 0; // Print messages to serial port if debugMode is enabled
int buzzerPin = 5;
int buttonPin = 4;
int threshold = 1000; // The smaller this value the more sensitive the device will be to movement
const int MPU=0x68;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
int toneDuration = 300; // Minimum duration of alarm sound in milliseconds
int toneFrequency = 250; // The frequency of the alarm sound
void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);
  Wire.write(0);    
  Wire.endTransmission(true);
  if (debugMode) { Serial.begin(9600); }
  pinMode(buzzerPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}
void loop(){
  if (!usageMode) {
    Wire.beginTransmission(MPU);
    Wire.write(0x3B);
    Wire.endTransmission(false);
    Wire.requestFrom(MPU,14,true);
    AcX=Wire.read()<<8|Wire.read();
    AcY=Wire.read()<<8|Wire.read();
    AcZ=Wire.read()<<8|Wire.read();
    Tmp=Wire.read()<<8|Wire.read();
    GyX=Wire.read()<<8|Wire.read();
    GyY=Wire.read()<<8|Wire.read();
    GyZ=Wire.read()<<8|Wire.read();
  }

  if (debugMode && !usageMode) {
    Serial.print("Accelerometer: ");
    Serial.print("X = "); Serial.print(AcX);
    Serial.print(" | Y = "); Serial.print(AcY);
    Serial.print(" | Z = "); Serial.println(AcZ);
  
    Serial.print("Gyroscope: ");
    Serial.print("X = "); Serial.print(GyX);
    Serial.print(" | Y = "); Serial.print(GyY);
    Serial.print(" | Z = "); Serial.println(GyZ);
    Serial.println(" ");
  }

  if (usageMode) {
    if (debugMode) { Serial.println("Usage Mode 1"); Serial.println(); }
    if (!buttonPressed()) {
      tone(5, toneFrequency, toneDuration);
    }
  } else {
    if (debugMode) { Serial.println("Usage Mode 0"); Serial.println(); }
    if (moved(GyX,GyY,GyZ) && !buttonPressed()) {
      tone(5, toneFrequency, toneDuration);
      if (debugMode) { Serial.println("Ha! You moved!"); Serial.println(); }
    }
  }

  delay(100);
}



boolean buttonPressed() {
  if (digitalRead(buttonPin)) {
    if (debugMode) { Serial.println("Button is pressed."); Serial.println(); }
    return true;
  } else {
    return false;
  }
}

boolean moved (int16_t x, int16_t y, int16_t z) {
  if(x > threshold || y > threshold || z > threshold || x < -threshold || y < -threshold || z < -threshold)
  {
    return true;
  }
  else {
    return false;
  }
}

Ideas/modifications

(tbc)

The device does not have to be placed inside a ball. You can built a case and place the components according to your personal needs. Because it does not have to drop on anything but only move it is also possible to use mode 1 with the device strapped to the hand if you prefer to hold up an arm instead of holding something in your hand. If you usually experience muscle twitches while falling asleep, e.g. in your legs or feet, as many people do, you can also experiment with the device strapped to your foot or leg.

Instead of sounding a buzzer for a pre-defined duration, you can experiment with different signals, be it blinking LEDs a playing an MP3 file from a different device or extension module. By adding a wave module the variety of sounds can be increased so that you can choose the best sound to make you aware quickly without waking you up completely. You yourself probably know best what sound that might be. But as with the rhythm nappping technique, short loud sounds are most likely to lead to a successfull LD induction attrempt.

FILD mode (tba)

Traumtagebuch-Software Entry Permalink (edited 2020-03-06) author:steeph (366) cat:Dream Recording (2) cat:Dreaming (9) cat:Projects (40) lang:de (41)

Die eigenen Träume aufzuzeichnen ist ein wichtiger Teil des Klartraum-Trainings. Das ist der Haupt-Grund, wieso ich daran interessiert bin. Aber es kann auch aus anderen Gründen interessant sein, Traum-Erinnerungen aufzuschreiben oder sonstwie aufzuzeichnen.

2017 habe ich mir mal fast alle Software für Android und Windows, die für diesen Zweck gedacht ist, angeschaut. Die Idee war, Features und Funktionsweisen aller möglicher Apps in einer filterbaren Tabelle geordnet und vergleichbar zu sammeln und anderen mit Google Docs zu ermöglichen, die Tabelle zu erweitern und zu ergänzen. Allerdings habe ich in meiner aktiven Zeit in der Klarträumer-Community niemanden gefunden, der interessiert war, mitzumachen. Deshalb lege ich jetzt einfach die Tabelle mit Stand von Oktober 2017 in seiner gänzlichen Unvollständigkeit hier ab.

Da sich die persönlichen Vorlieben und Bedürfnisse stark unterscheiden, wage ich es nicht, Empfehlungen auszusprechen. Unter den >100 getesteten Apps sind sehr unterschiedliche Apps dabei. Hoffentlich hilft die Tabelle, Interessierten die Auswahl zu erleichtern.

Project: mixlog Entry Permalink (edited 2020-03-06) author:steeph (366) cat:Blogs (5) cat:Projects (40) cat:Web Sites (8) cat:incomplete (21) cat:obsolete (4) lang:en (251) top:Projects:Web Sites:Discontinued (4)

I just canceled some domains that I had registered. Among them were the domain names mixblog23.de and mixlog.de. Both of which were once used for a blogging platform of mine that wasn't alive for a long time. But I kept the domains just in case. (I don't know which case that would have been.)

The platform was initially supposed to be called Mixblog, but I couldn't find a free domain name that I liked. So at some point I registered mixlog.de, which by now sounds better and more familiar to me anyway.

The point of mixlog was - apart from me having a website to build and something to learn on - to create personal feed of content from different blogs on that website and other sources (RSS feeds). It could essentially be used as a feed reader in a web browser with the ability to publish stuff on the same site. RSS aggregation wasn't scaling well, so it would have been difficult if many people would have used it as a feed reader for many feeds. But that wasn't its main purpose anyway. So, you could post blog posts, image galleries (which technically were blog posts too) and links to posts on other websites (which imported the content and worked as a repost). You could follow blogs and repost and fav posts from bogs on mixlog and from other blogs as well. Classic blog comments existed too. Pingbacks and RSS feeds were supported as I still liked to think was standard back then.

I saw the platform as like sort of a twitter with fewer members, more features and without contrains (no small character limit, reblogging and following blogs from other websites was supported). When I later learned about tumblr, I started to think of mixlog as like sort of a tumblr with more features and a less professional design and UI. But I don't think tumblr even existed when I stopped working on mixlog.

So why isn't mixlog around anymore? At its peak there were three active users on the platform (not daily active, far from, actually). That included me, a friend who tested it with me in the early development stage and another friend, who tried it out for a short while. Altogether there were four user accounts/blogs. And mine was the only one that showed sings of prolonged motivation to post stuff. So when it became clear to me that nobody but me would be using it I thought it to be overblown for a personal weblog, stopped adding features and eventually took it offline instead of fixing a potential vulnerability of the underlying framework.

I guess this here is just to say: R.I.P., mixlog! You will forever have a place on my backup RAID.

(tba: screen shot)

SBWG - steeph's bash website generator Entry Permalink (edited 2021-12-05) author:steeph (366) cat:Bash (31) cat:Code (31) cat:Computer (77) cat:Linux (35) cat:Projects (40) cat:SBWG (18) cat:Scripts (28) cat:Software (52) lang:en (251) top:Projects:Code:Bash Scripts:SBWG (16) top:Projects:Web Sites (6)

So in this entry I kind of just want to introduce SBWG a bit. Even though it's not the first time I post about the project here (it's Dec 2021 now) I realised there is no explanation on what I'm making and the page on the tag cat:SBWG consists pretty much only of updates. This is mainly a personal weblog and not a project web site. So a bit of background should be part of this introduction. To have the entry in the right place and order, I dated it back to Jan 2020, before I started to post updates about SBWG.

Every now an then I develop or intensify an existing interest in a topic and it becomes my main hobby. I've liked shell scripts ever since I started to use Linux. But I really started to write shell scripts for my own use properly in 2019. I wanted to write better and more rebust scripts. Learning a language or improving language skills works best by actually using the language. SBWG is my project that makes me use Bash to archive many different things that I previously didn't know how to accomplish.

SBWG (steeph's bash website generator) is a bash script that generates static HTML from simple text files. A tool that generates/updates this web site when it's run. Bash surely isn't the right choice of programming language for such a task. But I like Bash and don't really care. I try to make SBWG professional in all other respects. But it is a learning project. So there will probably always be things in the code that could be improved. The more features I implement and the more I learn the more I notice that I could have done better. But I do want to keep implementing new features (My list of ideas is long.) and not just rewriting what already works.

For information about the script, have a look at the project page. The README file in the downloadable package has extensive information about how it can be used.

Older version of this entry (obsolete and not actually interesting):

SBWG (steeph's bash website generator) is a bash script that generates static HTML from simple text files.

This entry does not have current information on SBWG. It was initially intended to hold an up-to-date introduction of SBWG with a download link. But I don't want to edit this blog entry all the time. So this stays obsolete and incomplete and I point you to the correct URL.

Even older version of this entry (obsolete and incomplete):

SBWG (steeph's bash website generator) is a bash script that generates static HTML from simple text files. I wrote it just for fun this website. And it's pronounced sibwig (because why not). It is not professional, not very adaptive to other website structures and does not have many features compared to most other static website generators. But if you know HTML and bash you can certainly adapt it for creating other websites. Or use it as it is, if you happen to want the same website structure as I have. If you want, you can download the latest version that I've published here .

The script creates a HTML structure from whatever text files it finds in the source directories.

The script generates an HTML file from every file in the directories pages/ and entries/, as well as blog-like listings for every tag found in these source files. Page files are generated into the html/ directory. Entry pages are generated into the html/entries/ directory. For every tag found in the entry source pages an additional HTML file is created in the html/tags/ directory. You can add more files to the html/ directory. As long as there is no file with the same name being generated or copied by the script, they won't be affected by the script. This way you can add more CSS files, media files, JavaScript files or anything else you might want to add to the website.

Folder Structure

  • html/ - This is where the script puts the resulting web site.
  • entries/ - Source files for blog posts are placed here. Each file is an entry.
  • galleries/ - Contains images that will be presented in a gellery view or attached to a blog entry.
  • pages/ - Source files for other HTML pages, that are not blog posts, are placed here. (e.g. front page, contact information, ...)
  • files/ - Can be used for downloadable or other files linked to from pages and entries.
  • tags/ - Working directory for generating an HTML file per tag. You may ignore it.
  • head - Header used for every generated HTML file.
  • header - Second part of the header. The script may put tags in between head and header.
  • sidebar - The sidebar that is generated and placed in every HTML file by the script. You may ignore this file.
  • footer - Footer used for every generated HTML file.
  • (More files, such as CSS and image files may be placed here anywhere and copied to their respective locations inside html/.
  • The html directory

    This is where the script puts the resulting web site. It can be used as live webroot/symlink to a webroot or you copy your finished website from there to the webserver.

    The entries directory

    This directory is empty when you start a new website. You fill it with source files for entries/blog posts. An HTML page will be generated from each entry source files, all entries will be included in the all.html blog view and entries with tags will be added to the relevant tag pages. Entry source files start with an HTML comment that resembles a header that typically contains the creation date, a title and tags (categories, topics, langeage). All of these are optional. But the structure (the HTML comment) needs to be there in any case) See below for a detailed description of the source file headers with an example.

    The pages directory

    This directory contains source files for static pages that are not blog posts. An HTML page will be generated from each page source file. You can use it for a front page, contact page, etc. Page source files are similar to entry source files but they contain no tags. See below for a detailed description and an example.

    The galleries directory

    This directory can contain directory of images that will be generated into a gallery view. Each subdirectory will become a gallery. If a subdirectory (gallery) and an entry source file (blog post) have the same name, thumbnails of the images will be attached to the blog entry and a link to the gallery view will be placed at the top of the blog entry. A link to the entry will also be included on the gallery page. A gallery does not need to have a corrosponding entry though. You can simply create galleries by putting JPEG and PNG files into a directory and this directory into the galleries directory. Currently only files ending in .jpeg, .jpg or .png are recognised by the script.

    The files directory

    In this directory you can put files that should be available on the generated website but not be processed by the generator script. The content of this directory will be copied to html/files without any check. You can use this for any files that will be linked in pages and blog entries, image files that are not part of a gallery, JavaScript files, etc.

    The tags directory and the sidebar file

    This directory is used by the script to store information about tags found in entry files during the generation process. It is solely a working directory. Files stored in this directory will be deleted during a complete website generation. You can just ignore (er empty or delete) it. A future version of SBWG will likely switch to a better method of keeping track of the tags used and will not need this directory.

    The sidebar file contains the last generated sidebar of the website. This file will be included in everey generated HTML file to enable navigating the website structure. You can ignore this file.

    The head, header and footer

    The head file contains the head of the HTML page structure. It will be used as the beginning of every generated HTML file When starting a new website it contains the neccessary things to generate a sample website. You can edit it to add meta tags and link or include style sheets.

    The header file closes the HTML head and starts its body. It contains the header that will be included in every generated HTML file. When starting a new website it contains a logo and the name of the website. Feel free to include anything that you want to be on the top of every page of your website, like a menu, etc.

    Having the head and the header files separate enables the script to add tags to the HTML head for individual pages. This is currently only used to add the page's title.

    The footer file contains a footer that will be included at the end of every generated HTML file. Feel free to edit it to include anything that you want at the bottom of every page of your website. It also closes the HTML tag structure.

    The root directory

    More files can be placed at the top of the directory structure. As is the script copies the file style.css from here to the html directory. All other files (not mentioned above) will be ignored unless you edit the script to do something with files tht you have added.

    Source File Format

    Every source file (files in the directories pages/ and entries/) is supposed to start with at least three lines of HTML comment. Example source for a page file:

    <!--
    This Is The Page Title
    -->
    This is the page content. It may consist of HTML or only text.

    The first line can be used as an actual comment and is ignored by the script. The second line is used as the page title/entry title. For entries, any additional lines inside the HTML comments are used as tags/topics (one tag per line). The comment should be closed with a line only containing -->. Everything after that is the actual page/entry content. HTML can be used here and will not be filtered by the script. This may change in the future.

    Example source for an entry file:

    <!--
    Blog Entry Title
    1970-01-01
    lang:en
    cat:Category
    top:Topic 1
    top:Random Topic 2
    top:Topic Three
    top:Some other tag
    top:#hashtagsworktoo
    -->
    <p>This is a blog post.</p>

    Tags

    (tbd)

    Tag Icons

    (tbd)

    Dates

    (tbd)

    Options and Arguments

    If the script is run without arguments it's using what I use regularly, which is options t, e, a, r and p. If arguments are given, the script will only generate the part that was selected with its corrosponding option. The following options exist:

  • -s Copy stylesheet files to the output directory.
  • -f Copy the files directory to the output directory.
  • -g Generate image galleries
  • -t Generate tag pages and the sidebar
  • -p Generate pages from the pages/ directory
  • -e Generate entry pages from the entries/ directory
  • -a Generate the all.html file
  • -r Generate RSS feed
  • -c A complete re-build. All of the above
  • Not all of these options are implemented, yet, but at this point, all except the RSS feed generation works well enough. Keep in mind though that this is all work in progress and I'm only meeting my own needs as I'm not aware of anybody else using this script.

    Options that can be set through variables in the script

    Not all available options can be set through command line arguments (yet?). There are a few variables that are being set at the beginning of the sctipt. Check out the first few lines. The comments above the lines where variables are being set should be sufficiant explanations of those variables. There you can set for example the size of gallery images and thumbnails, the number of blog post per page or the directory where the generated HTML site is placed to.

    Major features still missing

    RSS feed, nice layout and styles

    Go To Navigation Page
    Show/Hide Navigation