Aihearkisto: Oma elämä

Lapsen saaminen

Minutakin tulee kusipää. Samanlainen iljetys, joka maailman hirvein tuntemani ihminen voi olla. Lapsen saaminen on itsekkäin asia, jonka voi elämän aikana tehdä. Suurin ympäristörikos [2].

Kuva. Keinoja vähentää kasihuonekaasupäästöjä. [2]

Lapsesta tulee syntymän jälkeen juridinen henkilö, ennen sitä aikaa lasta ei voi juridisesti uhata tai murhata [1]. Minun mielestäni syntymättömän lapsen uhkaaminen tai murhaaminen esim. oman äidin toimesta pitäisi olla rikos, siihen ei saisi voida vedota juridisesti.

DeepSeek näkee asian toisin

Seuraava teksti on DeepSeekin kirjoittama [3]:

Lapsen saaminen – matka täynnä iloa, haasteita ja kasvua

Lapsen saaminen on yksi elämän merkittävimmistä ja muodonmuuttavimmista kokemuksista. Se on matka, joka tuo mukanaan valtavan määrän iloa, rakastavaa yhteyttä ja uusia näkökulmia elämään. Samalla se tuo haasteita, joihin ei aina voi täysin varautua. Tässä artikkelissa käsittelemme lapsen saamisen eri puolia – siitä, miten se muuttaa elämää ja mitä kannattaa ottaa huomioon ennen ja jälkeen lapsen syntymän.

Kuva. ChatGPT:n tekemä kuva.

Ennen lapsen tuloa: Valmistaudutaan yhdessä

Lapsen hankkiminen on usein pitkä prosessi, joka alkaa päätöksellä ryhtyä vanhemmiksi. Raskausaika on aikaa odotukseen, valmistautumiseen ja yhteiseen kasvuun. On tärkeää keskustella kumppanin kanssa odotuksista, arvoista ja siitä, miten jakaa vastuut lapsen syntymän jälkeen.

  • Terveys ja hyvinvointi: Raskausaikana äidin terveys on ensisijaisen tärkeää. Säännölliset lääkärintarkastukset, terveellinen ruokavalio ja kohtuullinen liikunta auttavat varmistamaan, että raskaus etenee mahdollisimman sujuvasti.
  • Tukiverkosto: Lapsen saaminen on helpompaa, kun on ympärillään tukeva yhteisö. Perheen, ystävien ja ammattilaisten tuki voi olla korvaamaton sekä raskausaikana että lapsen syntymän jälkeen.
  • Kodyn valmistelu: Lapsen tuloa odotellessa on hyvä varautua käytännön asioihin, kuten lastenhuoneen järjestelyyn, vaatteiden ja tarvikkeiden hankintaan. Muista kuitenkin, että lapsi tarvitsee ennen kaikkea rakkautta ja turvallisuutta – materiaaliset asiat ovat toissijaisia.

Lapsen syntymä: Elämän suurin ihme

Lapsen syntymä on voimakas ja emotionaalinen kokemus, joka jättää pysyvän jäljen vanhempien sydämiin. Ensimmäinen kosketus, ensimmäinen itku ja ensimmäinen katsekontakti ovat hetkiä, joita ei koskaan unohda. Syntymä voi olla myös fyysisesti ja henkisesti haastava, joten on tärkeää olla armollinen itselleen ja antaa itselle aikaa toipumiseen.

  • Synnytys ja sen vaiheet: Synnytys on uniikki kokemus, joka voi olla erilainen jokaiselle. On tärkeää keskustella synnytystoiveista lääkärin tai kätilön kanssa, mutta myös olla valmis muutoksiin, jos tilanne niin vaatii.
  • Ensimmäiset päivät: Kotiin pääsy synnytyksen jälkeen on usein sekalainen ajanjakso. Univaje, hormonien vaihtelut ja uusi vastuu voivat tuntua ylivoimaisilta. Muista, että apua on ok pyytää – olipa kyse sitten käytännön avusta tai henkisestä tuesta.

Vanhemmuuden arki: Oppimista ja kasvua

Vanhemmuus on jatkuva oppimisprosessi, jossa jokainen päivä tuo mukanaan uusia haasteita ja iloja. Ensimmäiset hymytykset, ensimmäiset sanat ja ensimmäiset askeleet ovat merkittäviä virstanpylväitä, jotka tuovat valtavan ylpeyden tunteen. Samalla vanhemmuus koettelee kärsivällisyyttä, joustavuutta ja omaa itsetuntoa.

  • Rutiinit ja rakenne: Lapsi tarvitsee turvallisuuden tunnetta, jota rutiinit ja säännöllisyys tuovat. Nukkumaanmenoaikojen, ruokailujen ja leikkiaikojen säännöllisyys auttavat luomaan rauhallisen ympäristön.
  • Oma hyvinvointi: Vanhempien on tärkeää huolehtia myös omasta hyvinvoinnistaan. Väsymys ja stressi voivat vaikuttaa sekä omaan jaksamiseen että lapsen hyvinvointiin. Ota aikaa itsellesi, nuku tarpeeksi ja pyydä apua tarvittaessa.
  • Yhteys lapsen kanssa: Lapsi tarvitsee ennen kaikkea rakkautta, huomiota ja turvallista läsnäoloa. Puhu lapsellesi, leiki hänen kanssaan ja nauti yhteisistä hetkistä. Nämä hetket luovat perustan lapsen turvallisuudentunteelle ja itsetunnolle.

Vanhemmuus on matka, ei määränpää

Lapsen saaminen on elämän suuria seikkailuja, joka muuttaa vanhempia ja heidän maailmaansa ikuisesti. Se on matka, jossa oppii olemaan kärsivällisempi, joustavampi ja rakastavampi. Vaikka vanhemmuus tuo mukanaan haasteita, se tuo myös valtavasti iloa, onnea ja merkitystä elämään.

Muista, että täydellistä vanhemmuutta ei ole olemassa – jokainen tekee parhaansa, ja se on aina tarpeeksi. Nauti matkasta, ota apua vastaan ja anna itsellesi armoa. Lapsesi tarvitsee sinua sellaisena, kuin olet – rakastavana ja läsnäolevana vanhempana.

DeepSeek -spoiler

Me: do you know Commodore 64?

DeepSeek:

Yes, the Commodore 64 (C64) is a legendary home computer that was introduced by Commodore International in January 1982. It became one of the best-selling computers of all time, with estimates of units sold ranging between 12.5 to 17 million. The C64 was known for its affordability, robust hardware, and extensive software library, which included games, productivity tools, and programming languages.

Key Features of the Commodore 64:

  • Processor: 8-bit MOS Technology 6510 CPU (a variant of the 6502) running at 1 MHz.
  • Memory: 64 KB of RAM, which was quite substantial for its time.
  • Graphics: VIC-II chip capable of displaying 16 colors, with resolutions up to 320×200 pixels.
  • Sound: SID (Sound Interface Device) chip, which provided advanced audio capabilities for its era, including three voices and multiple waveforms.
  • Storage: Used cassette tapes and floppy disks (via the 1541 disk drive) for data storage.
  • Ports: Included ports for connecting to TVs, monitors, joysticks, and other peripherals.

Software and Games:

The C64 had a vast library of software, including iconic games like Pac-Man, The Bard’s Tale, Maniac Mansion, and Elite. It also supported programming in BASIC, and many users learned to code on this machine.

Legacy:

The Commodore 64 remains a beloved system among retro computing enthusiasts and is often emulated on modern devices. Its influence on the gaming and computing industries is significant, and it holds a special place in the history of personal computing.

If you have specific questions about the Commodore 64 or its software, feel free to ask!

Me: do you can write assembly code for Commodore 64?

DeepSeek:

Yes, I can help you write assembly code for the Commodore 64! The C64 uses the 6502/6510 microprocessor, and its assembly language is a low-level programming language that directly controls the hardware. Below is a simple example of assembly code for the Commodore 64, written for the Kick Assembler or C64 Studio assembler.

This example will display a message on the screen:

Example: Display ”HELLO, COMMODORE 64!” on the screen

; Commodore 64 Assembly Code - Display a message
; Assembler: Kick Assembler or C64 Studio

* = $0801               ; Start of BASIC program area (2049 in decimal)

; BASIC stub to start the assembly program
    .byte $0C, $08, $0A, $00, $9E, $20, $32, $30, $36, $31, $00, $00, $00 ; BASIC sys2061

* = $080D               ; Start of assembly code (2061 in decimal)

; Main program
start:
    ldx #$00            ; Initialize X register to 0

print_loop:
    lda message,x       ; Load character from message into accumulator
    beq end             ; If the character is 0 (end of string), exit loop
    sta $0400,x         ; Store character in screen memory (start at $0400)
    inx                 ; Increment X to move to the next character
    jmp print_loop      ; Repeat the loop

end:
    rts                 ; Return to BASIC

; Data section
message:
    .text "HELLO, COMMODORE 64!" ; The message to display
    .byte $00           ; Null terminator for the string

Explanation:

  1. BASIC Stub: The first part of the code is a small BASIC program that calls the machine language program starting at memory address $080D (2061 in decimal).
  2. Screen Memory: The C64’s screen memory starts at $0400. Each character on the screen corresponds to a byte in this memory area.
  3. Loop: The program loops through each character in the message string and stores it in screen memory.
  4. Null Terminator: The string ends with a $00 byte, which signals the end of the string.

How to Run:

  1. Assemble the code using an assembler like Kick Assembler or C64 Studio.
  2. Load the resulting program into a C64 emulator (like VICE) or a real Commodore 64.
  3. Run the program by typing RUN in BASIC.

Output:

The message ”HELLO, COMMODORE 64!” will appear at the top-left corner of the screen.

If you’d like to explore more advanced topics (e.g., sprites, sound, or interrupts), let me know! I can help you write more complex assembly programs for the C64.

Me: do you can write a game for Commodore 64?

DeepSeek:

Absolutely! Let’s create a simple game for the Commodore 64 in assembly language. We’ll make a ”Catch the Falling Object” game where the player controls a paddle at the bottom of the screen to catch a falling object. If the player catches the object, the score increases. If the object reaches the bottom without being caught, the game ends.


Game Overview:

  1. Player: A paddle at the bottom of the screen, controlled with the joystick.
  2. Object: A single character (e.g., a ball) that falls from the top of the screen.
  3. Score: Displayed at the top of the screen.
  4. Game Over: If the object reaches the bottom without being caught.

Assembly Code for the Game:

Here’s the full assembly code for the game:

; Commodore 64 Assembly Code - "Catch the Falling Object" Game
; Assembler: Kick Assembler or C64 Studio

* = $0801               ; Start of BASIC program area (2049 in decimal)

; BASIC stub to start the assembly program
    .byte $0C, $08, $0A, $00, $9E, $20, $32, $30, $36, $31, $00, $00, $00 ; BASIC sys2061

* = $080D               ; Start of assembly code (2061 in decimal)

; Constants
JOYSTICK_PORT = $DC00   ; Joystick port 2
SCREEN_MEMORY = $0400   ; Start of screen memory
OBJECT_CHAR = $51       ; Character for the falling object (e.g., a ball)
PADDLE_CHAR = $57       ; Character for the paddle (e.g., a block)
SCORE_POS = $0400       ; Position to display the score

; Variables
object_x        .byte $00   ; X position of the object
object_y        .byte $00   ; Y position of the object
paddle_x        .byte $0F   ; X position of the paddle
score           .byte $00   ; Player's score

; Main program
start:
    jsr init_screen     ; Initialize the screen
    jsr init_game       ; Initialize game variables

game_loop:
    jsr read_joystick   ; Read joystick input
    jsr move_paddle     ; Move the paddle
    jsr move_object     ; Move the falling object
    jsr check_collision ; Check if the object is caught
    jsr draw_game       ; Draw the game screen
    jsr delay           ; Add a delay to control game speed
    jmp game_loop       ; Repeat the game loop

; Initialize the screen
init_screen:
    lda #$93            ; Clear the screen
    jsr $FFD2           ; Call KERNAL routine to print
    rts

; Initialize game variables
init_game:
    lda #$0F            ; Set initial paddle position
    sta paddle_x
    lda #$00            ; Set initial object position (top-middle)
    sta object_x
    sta object_y
    sta score           ; Reset score
    rts

; Read joystick input
read_joystick:
    lda JOYSTICK_PORT   ; Read joystick port
    and #$04            ; Check if joystick is moved left
    beq move_left
    lda JOYSTICK_PORT
    and #$08            ; Check if joystick is moved right
    beq move_right
    rts

move_left:
    dec paddle_x        ; Move paddle left
    rts

move_right:
    inc paddle_x        ; Move paddle right
    rts

; Move the falling object
move_object:
    inc object_y        ; Move object down
    lda object_y
    cmp #$18            ; Check if object reached the bottom
    bne object_done
    jmp game_over       ; Game over if object reaches the bottom
object_done:
    rts

; Check if the object is caught by the paddle
check_collision:
    lda object_y
    cmp #$16            ; Check if object is near the paddle
    bne no_collision
    lda object_x
    cmp paddle_x        ; Check if object is above the paddle
    beq caught
no_collision:
    rts

caught:
    inc score           ; Increase score
    lda #$00            ; Reset object position
    sta object_y
    rts

; Draw the game screen
draw_game:
    ldx #$00            ; Clear the screen
clear_loop:
    lda #$20            ; Space character
    sta SCREEN_MEMORY,x
    sta SCREEN_MEMORY+$100,x
    sta SCREEN_MEMORY+$200,x
    sta SCREEN_MEMORY+$300,x
    inx
    bne clear_loop

    ldx object_y        ; Draw the falling object
    lda object_x
    clc
    adc #$40            ; Calculate screen position
    sta SCREEN_MEMORY,x

    ldx #$17            ; Draw the paddle
    lda paddle_x
    clc
    adc #$40            ; Calculate screen position
    sta SCREEN_MEMORY,x

    lda score           ; Display the score
    clc
    adc #$30            ; Convert to ASCII
    sta SCORE_POS
    rts

; Add a delay to control game speed
delay:
    ldx #$FF
delay_loop:
    dex
    bne delay_loop
    rts

; Game over routine
game_over:
    lda #$00            ; Reset object position
    sta object_y
    lda #$00            ; Reset score
    sta score
    rts

How the Game Works:

  1. Joystick Input: The player moves the paddle left or right using the joystick.
  2. Falling Object: The object starts at the top of the screen and falls down one row per frame.
  3. Collision Detection: If the object reaches the paddle’s position, the score increases, and the object resets to the top.
  4. Game Over: If the object reaches the bottom without being caught, the game resets.

How to Run:

  1. Assemble the code using Kick Assembler or C64 Studio.
  2. Load the resulting program into a C64 emulator (like VICE) or a real Commodore 64.
  3. Run the program by typing RUN in BASIC.

Enhancements:

  • Add sound effects when the object is caught or the game ends.
  • Increase the speed of the falling object as the score increases.
  • Add multiple falling objects for more challenge.

Let me know if you’d like to expand on this game or add more features! 🎮

Me: how about add sound effect to the code?

DeepSeek:

Sure! Let’s add sound effects to the ”Catch the Falling Object” game we created earlier. We’ll use the Commodore 64’s SID (Sound Interface Device) chip to play simple sound effects when:

  1. The player catches the object (a ”ping” sound).
  2. The object reaches the bottom without being caught (a ”buzz” sound).

Updated Code with Sound Effects:

Here’s the modified assembly code with sound effects added:

; Commodore 64 Assembly Code - "Catch the Falling Object" Game with Sound Effects
; Assembler: Kick Assembler or C64 Studio

* = $0801               ; Start of BASIC program area (2049 in decimal)

; BASIC stub to start the assembly program
    .byte $0C, $08, $0A, $00, $9E, $20, $32, $30, $36, $31, $00, $00, $00 ; BASIC sys2061

* = $080D               ; Start of assembly code (2061 in decimal)

; Constants
JOYSTICK_PORT = $DC00   ; Joystick port 2
SCREEN_MEMORY = $0400   ; Start of screen memory
OBJECT_CHAR = $51       ; Character for the falling object (e.g., a ball)
PADDLE_CHAR = $57       ; Character for the paddle (e.g., a block)
SCORE_POS = $0400       ; Position to display the score
SID_VOICE1 = $D400      ; SID voice 1 registers
SID_VOLUME = $D418      ; SID volume register

; Variables
object_x        .byte $00   ; X position of the object
object_y        .byte $00   ; Y position of the object
paddle_x        .byte $0F   ; X position of the paddle
score           .byte $00   ; Player's score

; Main program
start:
    jsr init_screen     ; Initialize the screen
    jsr init_game       ; Initialize game variables

game_loop:
    jsr read_joystick   ; Read joystick input
    jsr move_paddle     ; Move the paddle
    jsr move_object     ; Move the falling object
    jsr check_collision ; Check if the object is caught
    jsr draw_game       ; Draw the game screen
    jsr delay           ; Add a delay to control game speed
    jmp game_loop       ; Repeat the game loop

; Initialize the screen
init_screen:
    lda #$93            ; Clear the screen
    jsr $FFD2           ; Call KERNAL routine to print
    rts

; Initialize game variables
init_game:
    lda #$0F            ; Set initial paddle position
    sta paddle_x
    lda #$00            ; Set initial object position (top-middle)
    sta object_x
    sta object_y
    sta score           ; Reset score
    rts

; Read joystick input
read_joystick:
    lda JOYSTICK_PORT   ; Read joystick port
    and #$04            ; Check if joystick is moved left
    beq move_left
    lda JOYSTICK_PORT
    and #$08            ; Check if joystick is moved right
    beq move_right
    rts

move_left:
    dec paddle_x        ; Move paddle left
    rts

move_right:
    inc paddle_x        ; Move paddle right
    rts

; Move the falling object
move_object:
    inc object_y        ; Move object down
    lda object_y
    cmp #$18            ; Check if object reached the bottom
    bne object_done
    jsr play_buzz       ; Play "buzz" sound
    jmp game_over       ; Game over if object reaches the bottom
object_done:
    rts

; Check if the object is caught by the paddle
check_collision:
    lda object_y
    cmp #$16            ; Check if object is near the paddle
    bne no_collision
    lda object_x
    cmp paddle_x        ; Check if object is above the paddle
    beq caught
no_collision:
    rts

caught:
    inc score           ; Increase score
    lda #$00            ; Reset object position
    sta object_y
    jsr play_ping       ; Play "ping" sound
    rts

; Draw the game screen
draw_game:
    ldx #$00            ; Clear the screen
clear_loop:
    lda #$20            ; Space character
    sta SCREEN_MEMORY,x
    sta SCREEN_MEMORY+$100,x
    sta SCREEN_MEMORY+$200,x
    sta SCREEN_MEMORY+$300,x
    inx
    bne clear_loop

    ldx object_y        ; Draw the falling object
    lda object_x
    clc
    adc #$40            ; Calculate screen position
    sta SCREEN_MEMORY,x

    ldx #$17            ; Draw the paddle
    lda paddle_x
    clc
    adc #$40            ; Calculate screen position
    sta SCREEN_MEMORY,x

    lda score           ; Display the score
    clc
    adc #$30            ; Convert to ASCII
    sta SCORE_POS
    rts

; Add a delay to control game speed
delay:
    ldx #$FF
delay_loop:
    dex
    bne delay_loop
    rts

; Game over routine
game_over:
    lda #$00            ; Reset object position
    sta object_y
    lda #$00            ; Reset score
    sta score
    rts

; Play "ping" sound (object caught)
play_ping:
    lda #$21            ; Set frequency high byte
    sta SID_VOICE1+1
    lda #$00            ; Set frequency low byte
    sta SID_VOICE1
    lda #$11            ; Set attack/decay
    sta SID_VOICE1+5
    lda #$F0            ; Set sustain/release
    sta SID_VOICE1+6
    lda #$10            ; Start sound
    sta SID_VOICE1+4
    rts

; Play "buzz" sound (object missed)
play_buzz:
    lda #$FF            ; Set frequency high byte
    sta SID_VOICE1+1
    lda #$00            ; Set frequency low byte
    sta SID_VOICE1
    lda #$11            ; Set attack/decay
    sta SID_VOICE1+5
    lda #$F0            ; Set sustain/release
    sta SID_VOICE1+6
    lda #$20            ; Start sound (noise waveform)
    sta SID_VOICE1+4
    rts

Explanation of Sound Effects:

  1. Ping Sound:
  • A short, high-pitched sound played when the player catches the object.
  • Uses a triangle waveform for a clean, pleasant tone.
  1. Buzz Sound:
  • A harsh, buzzing sound played when the object reaches the bottom without being caught.
  • Uses a noise waveform for a rougher, more alarming tone.

How to Run:

  1. Assemble the code using Kick Assembler or C64 Studio.
  2. Load the resulting program into a C64 emulator (like VICE) or a real Commodore 64.
  3. Run the program by typing RUN in BASIC.

Enhancements:

  • Add more complex sound effects or music using the SID chip.
  • Adjust the pitch or duration of the sound effects dynamically based on the game state.
  • Add a victory tune when the player reaches a certain score.

Let me know if you’d like to explore more advanced sound programming or other features! 🎶

[collapse]
DeepSeek matopeli -spoiler

Me: Osaatko kirjoittaa matopelin koodin C-kielellä?

DeepSeek:

Kyllä, voin auttaa sinua kirjoittamaan yksinkertaisen matopelin C-kielellä! Tässä on perusversio pelistä, joka käyttää ncurses-kirjastoa ruudun päivittämiseen ja näppäimistön käsittelyyn. Tämä peli on tarkoitettu Linux-ympäristöön, koska ncurses on yleensä saatavilla Linux-järjestelmissä.

1. Asenna ncurses

Ennen kuin aloitat, varmista, että ncurses on asennettuna. Voit asentaa sen seuraavalla komennolla:

sudo apt-get install libncurses5-dev libncursesw5-dev

2. Matopelin koodi

Tässä on yksinkertainen matopeli C-kielellä:

#include <ncurses.h>
#include <stdlib.h>
#include <time.h>

#define WIDTH 60
#define HEIGHT 20

typedef struct {
    int x, y;
} Position;

typedef struct {
    Position body[100];
    int length;
    char direction;
} Snake;

typedef struct {
    Position pos;
} Food;

Snake snake;
Food food;
int score = 0;

void init_game() {
    initscr();
    cbreak();
    noecho();
    curs_set(0);
    keypad(stdscr, TRUE);
    timeout(100);

    snake.length = 1;
    snake.body[0].x = WIDTH / 2;
    snake.body[0].y = HEIGHT / 2;
    snake.direction = 'R';

    srand(time(NULL));
    food.pos.x = rand() % WIDTH;
    food.pos.y = rand() % HEIGHT;
}

void draw() {
    clear();

    // Piirrä mato
    for (int i = 0; i < snake.length; i++) {
        mvprintw(snake.body[i].y, snake.body[i].x, "O");
    }

    // Piirrä ruoka
    mvprintw(food.pos.y, food.pos.x, "X");

    // Piirrä pisteet
    mvprintw(0, 0, "Score: %d", score);

    refresh();
}

void update() {
    // Liikuta matoa
    Position prev = snake.body[0];
    Position next;

    switch (snake.direction) {
        case 'U':
            next.x = prev.x;
            next.y = prev.y - 1;
            break;
        case 'D':
            next.x = prev.x;
            next.y = prev.y + 1;
            break;
        case 'L':
            next.x = prev.x - 1;
            next.y = prev.y;
            break;
        case 'R':
            next.x = prev.x + 1;
            next.y = prev.y;
            break;
    }

    // Tarkista törmäykset
    if (next.x < 0 || next.x >= WIDTH || next.y < 0 || next.y >= HEIGHT) {
        endwin();
        printf("Game Over! Final Score: %d\n", score);
        exit(0);
    }

    for (int i = 1; i < snake.length; i++) {
        if (next.x == snake.body[i].x && next.y == snake.body[i].y) {
            endwin();
            printf("Game Over! Final Score: %d\n", score);
            exit(0);
        }
    }

    // Siirrä matoa
    for (int i = snake.length - 1; i > 0; i--) {
        snake.body[i] = snake.body[i - 1];
    }
    snake.body[0] = next;

    // Tarkista onko mato syönyt ruoan
    if (snake.body[0].x == food.pos.x && snake.body[0].y == food.pos.y) {
        snake.length++;
        score += 10;
        food.pos.x = rand() % WIDTH;
        food.pos.y = rand() % HEIGHT;
    }
}

int main() {
    init_game();

    while (1) {
        draw();
        int ch = getch();

        switch (ch) {
            case KEY_UP:
                if (snake.direction != 'D') snake.direction = 'U';
                break;
            case KEY_DOWN:
                if (snake.direction != 'U') snake.direction = 'D';
                break;
            case KEY_LEFT:
                if (snake.direction != 'R') snake.direction = 'L';
                break;
            case KEY_RIGHT:
                if (snake.direction != 'L') snake.direction = 'R';
                break;
            case 'q':
                endwin();
                return 0;
        }

        update();
    }

    endwin();
    return 0;
}

3. Koodin selitys

  • Struktuurit:
  • Position: Tallentaa x- ja y-koordinaatit.
  • Snake: Sisältää madon ruumiinosien sijainnit, madon pituuden ja suunnan.
  • Food: Sisältää ruoan sijainnin.
  • Funktiot:
  • init_game(): Alustaa pelin, asettaa madon aloituspaikan ja luo ensimmäisen ruoan.
  • draw(): Piirtää madon, ruoan ja pisteet ruudulle.
  • update(): Päivittää madon sijainnin, tarkistaa törmäykset ja ruoan syönnin.
  • Pääohjelma:
  • Käyttää ncurses-kirjastoa näppäimistön käsittelyyn ja ruudun päivittämiseen.
  • Peli päättyy, kun mato törmää seinään tai itseensä.

4. Kääntäminen ja suorittaminen

Kääntääksesi ja suorittaaksesi pelin, käytä seuraavia komentoja:

gcc -o snake_game snake_game.c -lncurses
./snake_game

5. Pelin ohjaus

  • Käytä nuolinäppäimiä liikuttaaksesi matoa.
  • Paina q lopettaaksesi pelin.

Tämä on hyvin yksinkertainen versio matopelistä, ja siihen voi lisätä monia ominaisuuksia, kuten tasoja, nopeuden kasvattamista tai vaikeustason muutoksia. Jos sinulla on kysyttävää tai haluat lisäominaisuuksia, kerro vain! 😊

Me: Osaatko kirjoittaa yksinkertaisen käyttöjärjestelmän vuorontajan C-kielellä?

Kyllä, voin auttaa sinua kirjoittamaan yksinkertaisen vuorontajan (scheduler) C-kielellä! Tässä esimerkissä luomme yksinkertaisen pyöreän vuorontajan (Round Robin Scheduler), joka hallitsee useita prosesseja ja jakaa CPU-aikaa niille tasaisesti.

1. Yksinkertainen Round Robin Scheduler

Tässä on esimerkki yksinkertaisesta vuorontajasta, joka käyttää pyöreää vuorontajaa (Round Robin) prosessien hallintaan:

#include <stdio.h>
#include <stdlib.h>

#define TIME_QUANTUM 2  // Kukin prosessi saa 2 aikayksikköä CPU-aikaa kerrallaan

typedef struct {
    int pid;            // Prosessin ID
    int burst_time;     // Prosessin suoritusaika
    int remaining_time; // Jäljellä oleva suoritusaika
} Process;

void round_robin(Process processes[], int n) {
    int time = 0;
    int completed = 0;

    while (completed < n) {
        for (int i = 0; i < n; i++) {
            if (processes[i].remaining_time > 0) {
                printf("Aikayksikkö %d: Prosessi %d suorituksessa\n", time, processes[i].pid);

                // Vähennä prosessin jäljellä olevaa aikaa
                if (processes[i].remaining_time > TIME_QUANTUM) {
                    time += TIME_QUANTUM;
                    processes[i].remaining_time -= TIME_QUANTUM;
                } else {
                    time += processes[i].remaining_time;
                    processes[i].remaining_time = 0;
                    completed++;
                    printf("Prosessi %d suoritettu loppuun.\n", processes[i].pid);
                }
            }
        }
    }
}

int main() {
    int n;

    printf("Syötä prosessien määrä: ");
    scanf("%d", &n);

    Process *processes = (Process *)malloc(n * sizeof(Process));

    for (int i = 0; i < n; i++) {
        processes[i].pid = i + 1;
        printf("Syötä prosessin %d suoritusaika: ", processes[i].pid);
        scanf("%d", &processes[i].burst_time);
        processes[i].remaining_time = processes[i].burst_time;
    }

    printf("\nAloitetaan vuorontaja...\n");
    round_robin(processes, n);

    free(processes);
    return 0;
}

2. Koodin selitys

  • TIME_QUANTUM: Kukin prosessi saa tietyn määrän CPU-aikaa (tässä tapauksessa 2 aikayksikköä) kerrallaan.
  • Process-struktuuri:
  • pid: Prosessin yksilöllinen tunniste.
  • burst_time: Prosessin kokonaisaika, joka se tarvitsee suorittamiseen.
  • remaining_time: Kuinka paljon aikaa prosessilla on vielä jäljellä suoritettavana.
  • round_robin-funktio:
  • Jakaa CPU-aikaa prosesseille pyöreän vuorontajan mukaisesti.
  • Kun prosessi on suoritettu loppuun (remaining_time = 0), se poistetaan vuorosta.
  • Pääohjelma:
  • Kysyy käyttäjältä prosessien määrän ja kunkin prosessin suoritusajan.
  • Kutsuu round_robin-funktiota prosessien suorittamiseksi.

3. Esimerkkituloste

Syötä prosessien määrä: 3
Syötä prosessin 1 suoritusaika: 6
Syötä prosessin 2 suoritusaika: 4
Syötä prosessin 3 suoritusaika: 2

Aloitetaan vuorontaja...
Aikayksikkö 0: Prosessi 1 suorituksessa
Aikayksikkö 2: Prosessi 2 suorituksessa
Aikayksikkö 4: Prosessi 3 suorituksessa
Prosessi 3 suoritettu loppuun.
Aikayksikkö 6: Prosessi 1 suorituksessa
Aikayksikkö 8: Prosessi 2 suorituksessa
Prosessi 2 suoritettu loppuun.
Aikayksikkö 10: Prosessi 1 suorituksessa
Prosessi 1 suoritettu loppuun.

4. Kääntäminen ja suorittaminen

Kääntääksesi ja suorittaaksesi ohjelman, käytä seuraavia komentoja:

gcc -o scheduler scheduler.c
./scheduler

5. Laajennettavat ominaisuudet

Tämä on hyvin yksinkertainen vuorontaja, ja siihen voi lisätä monia ominaisuuksia, kuten:

  • Prioriteetit: Anna prosesseille eri prioriteetit.
  • I/O-operaatiot: Lisää tuki I/O-operaatioille.
  • Monisäikeisyys: Toteuta vuorontaja monisäikeisessä ympäristössä.

Jos sinulla on kysyttävää tai haluat lisäominaisuuksia, kerro vain! 😊

Me: Osaatko kirjoittaa matopelin assemblerilla?

DeepSeek:

Kyllä, voin auttaa sinua kirjoittamaan yksinkertaisen matopelin assemblerilla! Tässä on esimerkki x86-64 -assemblerilla kirjoitetusta matopelistä, joka on suunniteltu Linux-ympäristöön. Tämä peli käyttää ncurses-kirjastoa ruudun päivittämiseen ja näppäimistön käsittelyyn.

1. Asenna ncurses

Ennen kuin aloitat, varmista, että ncurses on asennettuna. Voit asentaa sen seuraavalla komennolla:

sudo apt-get install libncurses5-dev libncursesw5-dev

2. Matopelin koodi

Tässä on yksinkertainen matopeli x86-64 -assemblerilla:

section .data
    snake db 'O', 0
    food db 'X', 0
    score db 'Score: ', 0
    game_over db 'Game Over! Final Score: ', 0

section .bss
    snake_x resb 100
    snake_y resb 100
    food_x resb 1
    food_y resb 1
    snake_length resb 1
    direction resb 1

section .text
    global _start

_start:
    ; Alusta ncurses
    call initscr
    call cbreak
    call noecho
    call curs_set
    call keypad
    call timeout

    ; Alusta mato
    mov byte [snake_length], 1
    mov byte [snake_x], 40
    mov byte [snake_y], 10
    mov byte [direction], 'R'

    ; Alusta ruoka
    call rand
    mov byte [food_x], al
    call rand
    mov byte [food_y], al

game_loop:
    ; Piirrä ruutu
    call clear

    ; Piirrä mato
    movzx ecx, byte [snake_length]
    mov esi, snake_x
    mov edi, snake_y
draw_snake:
    movzx eax, byte [esi]
    movzx ebx, byte [edi]
    call mvprintw
    add esi, 1
    add edi, 1
    loop draw_snake

    ; Piirrä ruoka
    movzx eax, byte [food_x]
    movzx ebx, byte [food_y]
    call mvprintw

    ; Piirrä pisteet
    mov eax, 0
    mov ebx, 0
    call mvprintw

    ; Päivitä ruutu
    call refresh

    ; Lue näppäimistö
    call getch

    ; Päivitä suunta
    cmp eax, KEY_UP
    je up
    cmp eax, KEY_DOWN
    je down
    cmp eax, KEY_LEFT
    je left
    cmp eax, KEY_RIGHT
    je right
    jmp update

up:
    mov byte [direction], 'U'
    jmp update

down:
    mov byte [direction], 'D'
    jmp update

left:
    mov byte [direction], 'L'
    jmp update

right:
    mov byte [direction], 'R'
    jmp update

update:
    ; Liikuta matoa
    movzx esi, byte [snake_length]
    dec esi
    movzx edi, byte [snake_x + esi]
    movzx ebx, byte [snake_y + esi]
    mov byte [snake_x + esi + 1], dil
    mov byte [snake_y + esi + 1], bl

    ; Päivitä madon pää
    cmp byte [direction], 'U'
    je move_up
    cmp byte [direction], 'D'
    je move_down
    cmp byte [direction], 'L'
    je move_left
    cmp byte [direction], 'R'
    je move_right

move_up:
    dec byte [snake_y]
    jmp check_collision

move_down:
    inc byte [snake_y]
    jmp check_collision

move_left:
    dec byte [snake_x]
    jmp check_collision

move_right:
    inc byte [snake_x]
    jmp check_collision

check_collision:
    ; Tarkista seinät
    cmp byte [snake_x], 0
    jl game_over
    cmp byte [snake_x], 80
    jg game_over
    cmp byte [snake_y], 0
    jl game_over
    cmp byte [snake_y], 24
    jg game_over

    ; Tarkista ruoka
    movzx eax, byte [snake_x]
    movzx ebx, byte [snake_y]
    cmp eax, [food_x]
    jne no_food
    cmp ebx, [food_y]
    jne no_food

    ; Syö ruoka
    inc byte [snake_length]
    call rand
    mov byte [food_x], al
    call rand
    mov byte [food_y], al

no_food:
    jmp game_loop

game_over:
    ; Lopeta peli
    call endwin
    mov eax, 1
    xor ebx, ebx
    int 0x80

; Apufunktiot
initscr:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

cbreak:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

noecho:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

curs_set:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

keypad:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

timeout:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

clear:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

mvprintw:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

refresh:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

getch:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

endwin:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

rand:
    mov eax, 0
    mov ebx, 0
    mov ecx, 0
    mov edx, 0
    mov esi, 0
    mov edi, 0
    mov ebp, 0
    mov esp, 0
    ret

3. Koodin selitys

  • section .data: Sisältää pelin tietoja, kuten madon ja ruoan symbolit, sekä pistetiedot.
  • section .bss: Varataan muistia madon ja ruoan sijainneille.
  • section .text: Pääohjelma ja apufunktiot.

4. Kääntäminen ja suorittaminen

Kääntääksesi ja suorittaaksesi ohjelman, käytä seuraavia komentoja:

nasm -f elf64 snake.asm -o snake.o
gcc -o snake snake.o -lncurses
./snake

5. Pelin ohjaus

  • Käytä nuolinäppäimiä liikuttaaksesi matoa.
  • Paina q lopettaaksesi pelin.

Tämä on hyvin yksinkertainen versio matopelistä, ja siihen voi lisätä monia ominaisuuksia, kuten tasoja, nopeuden kasvattamista tai vaikeustason muutoksia. Jos sinulla on kysyttävää tai haluat lisäominaisuuksia, kerro vain! 😊

[collapse]
BASIC-tulkki -spoiler

Ei edes DeepSeek osaa tai ehdi kaikkea.

Me: do you know MITS Altair 8800?

DeepSeek: The server is busy. Please try again later.

Me: Do you know Altair 8800?

DeepSeek: The server is busy. Please try again later.

Me: Do to know BASIC interpreter?

DeepSeek:

Yes, I am familiar with the BASIC interpreter. BASIC (Beginner’s All-purpose Symbolic Instruction Code) is a family of high-level programming languages designed to be easy to use. The BASIC interpreter is a program that executes BASIC code directly, without the need for compilation. This means that you can write a line of BASIC code, and the interpreter will execute it immediately, making it a great tool for learning programming and for rapid prototyping.

One of the most famous BASIC interpreters is the one that was included with the Altair 8800, which was developed by Microsoft founders Bill Gates and Paul Allen. This version of BASIC, known as Altair BASIC, was one of the first products developed by Microsoft and played a significant role in the early days of personal computing.

BASIC interpreters have been widely used in various systems, from early microcomputers to modern programming environments. They are known for their simplicity and ease of use, which has made them a popular choice for beginners in programming.

Me: Could you write an assembly code of BASIC interpreter for the Altair 8800?

DeepSeek: The server is busy. Please try again later.

Me: Could you write an assembly code of BASIC interpreter?

DeepSeek:

Writing a full BASIC interpreter in assembly language is an extremely complex task, especially for a platform like the Altair 8800, which uses the Intel 8080 microprocessor. A BASIC interpreter involves parsing, tokenizing, executing code, managing variables, handling input/output, and more. It would require thousands of lines of assembly code and a deep understanding of both the 8080 instruction set and the design of interpreters.

However, I can provide a simplified example of how you might start writing a tiny interpreter-like program in 8080 assembly. This example won’t be a full BASIC interpreter but will demonstrate some foundational concepts, such as reading input, parsing simple commands, and executing them.


Example: A Tiny Command Interpreter in 8080 Assembly

This program reads a simple command (like PRINT "HELLO") and performs a basic action.

; Tiny Command Interpreter for Altair 8800 (Intel 8080)
; This is a simplified example, not a full BASIC interpreter.

ORG 0100H       ; Start program at memory address 0100H

START:
    MVI A, 0AH  ; Load newline character into A
    CALL PRINT_CHAR ; Print newline

    LXI H, PROMPT ; Load address of PROMPT message
    CALL PRINT_STRING ; Print the prompt

    LXI H, INPUT_BUFFER ; Point HL to input buffer
    CALL READ_INPUT ; Read user input

    CALL PARSE_INPUT ; Parse the input

    JMP START   ; Loop back to start

; Subroutine to print a character in A
PRINT_CHAR:
    OUT 01H     ; Send character to output port (assume port 01H is console)
    RET

; Subroutine to print a null-terminated string pointed to by HL
PRINT_STRING:
    MOV A, M    ; Load character from memory (HL)
    CPI 0       ; Compare with null terminator
    RZ          ; Return if null terminator
    CALL PRINT_CHAR ; Print the character
    INX H       ; Move to next character
    JMP PRINT_STRING ; Repeat

; Subroutine to read input into buffer pointed to by HL
READ_INPUT:
    IN 00H      ; Read character from input port (assume port 00H is keyboard)
    CPI 0DH     ; Check for carriage return (end of input)
    RZ          ; Return if carriage return
    MOV M, A    ; Store character in buffer
    INX H       ; Move to next buffer position
    JMP READ_INPUT ; Repeat

; Subroutine to parse the input
PARSE_INPUT:
    LXI H, INPUT_BUFFER ; Point HL to input buffer
    MOV A, M    ; Load first character
    CPI 'P'     ; Check if it's 'P' (for PRINT)
    JZ PRINT_COMMAND ; Jump to PRINT handler
    ; Add more commands here
    RET

; Handler for PRINT command
PRINT_COMMAND:
    INX H       ; Move to next character
    MOV A, M    ; Load next character
    CPI 'R'     ; Check for 'R'
    JNZ UNKNOWN_COMMAND ; If not, handle as unknown
    INX H       ; Move to next character
    MOV A, M    ; Load next character
    CPI 'I'     ; Check for 'I'
    JNZ UNKNOWN_COMMAND ; If not, handle as unknown
    INX H       ; Move to next character
    MOV A, M    ; Load next character
    CPI 'N'     ; Check for 'N'
    JNZ UNKNOWN_COMMAND ; If not, handle as unknown
    INX H       ; Move to next character
    MOV A, M    ; Load next character
    CPI 'T'     ; Check for 'T'
    JNZ UNKNOWN_COMMAND ; If not, handle as unknown
    ; If we get here, it's a PRINT command
    CALL HANDLE_PRINT ; Handle PRINT command
    RET

; Handler for unknown commands
UNKNOWN_COMMAND:
    LXI H, UNKNOWN_MSG ; Load address of unknown command message
    CALL PRINT_STRING ; Print the message
    RET

; Handler for PRINT command
HANDLE_PRINT:
    INX H       ; Move to next character
    MOV A, M    ; Load next character
    CPI ' '     ; Check for space
    JNZ UNKNOWN_COMMAND ; If not, handle as unknown
    INX H       ; Move to next character
    MOV A, M    ; Load next character
    CPI '"'     ; Check for opening quote
    JNZ UNKNOWN_COMMAND ; If not, handle as unknown
    INX H       ; Move to next character
PRINT_LOOP:
    MOV A, M    ; Load character from buffer
    CPI '"'     ; Check for closing quote
    RZ          ; Return if closing quote
    CALL PRINT_CHAR ; Print the character
    INX H       ; Move to next character
    JMP PRINT_LOOP ; Repeat

; Data section
PROMPT:
    DB "READY>", 0
UNKNOWN_MSG:
    DB "UNKNOWN COMMAND", 0AH, 0
INPUT_BUFFER:
    DS 80       ; Reserve 80 bytes for input buffer

END

Explanation:

  1. Input Handling: The program reads input from the user and stores it in a buffer.
  2. Command Parsing: It checks if the input starts with PRINT and handles it accordingly.
  3. Output: For the PRINT command, it prints the text enclosed in quotes.
  4. Loop: The program loops back to the start after handling a command.

Limitations:

  • This is a very simplified example and does not implement a full BASIC interpreter.
  • It lacks features like variable handling, arithmetic, loops, and more.
  • A real BASIC interpreter would require a much more sophisticated design, including a tokenizer, parser, and execution engine.

If you’re interested in learning more, I recommend studying the source code of existing BASIC interpreters, such as Microsoft’s Altair BASIC or Tiny BASIC, which are historically significant and well-documented.

Me: where I can find the source code of Microsoft’s Altair BASIC?

DeepSeek: The server is busy. Please try again later.

[collapse]

REFERENSSIT

[1] Lääkäriliitto: Syntymättömän oikeudet
[2] LSN: No, Having One Child Does Not Add 60 Tons Per Year to Your Carbon Footprint
[3] DeepSeek

Kesäloma

Tuli käytyä matkalla Euroopassa, 8300 km ja 16 eri maata. Näistä 13 maata oli minulle itselleni uusia. Italia oli matkan etäisin kohde. Tein lomamatkan mm. ilmastosyistä omalla autolla lentokoneen sijaan.

Paras paikka

Oman kokemukseni mukaan matkan paras paikka oli Latviassa. Baltiassa on todella mukava meri, jonka yli kesäinen ilta-aurinko laskeutuu. Aurinko saa enemmän kuin Suomessa, mutta silti iho ei pala liian helposti.

Huonona puolena on se, että meri on samaa maailman saastuneinta merta kuin Suomen rannikolla. Veden lämpötila on myös viileämpi kuin Välimerellä. Kaunis hiekkaranta ei tätä asiaa korvaa. [1]

Autolautta Helsingistä Tallinnaan maksaa 77 euroa, aikaa lautalla kuluu 2,5 tuntia. Baltiassa välimatkat ovat lyhyitä, autolla Baltianmaiden välillä liikkuminen tapahtuu Suomeen verrattuna nopeasti.

Myyttien rikkominen

Olen usein kuullut, että ulkomailta ei saa ruisleipää tai maitoa. Nämä kaksi väitettä eivät oman kokemukseni mukaan päde ainakaan Euroopassa. Ruisleivän ostaminen Italiassa voi olla Suomeen verrattuna hieman erilaista, mutta kyllä sitä sielläkin on [2]. Kauraleivän löytäminen sen sijaan oli vaikeaa jopa jo Tanskassa.

Olen kuullut väitteen, että saksalaiset ovat suorasanaisia. Oman kokemukseni mukaan huomattavasti suorasiaisempia ihmiset ovat Alankomaissa, tulevat heti ohjeistamaan, jos huomaavat jonkun toimivan epävarmasti. Esimerkiksi parkkihallissa työntekijä tuli ohjeistamaan, että pysäköinti on ilmaista, mutta kauppojen sulkemisajan jälkeen pysäköimisestä saa 140 euron hintaisen rengaslukon.

Saksalaiset olivat hyvinkin kohteliaita, en huomannut minkäänlaista negatiivista asennetta. Tarkkoja he ovat, se pitää paikkansa, mutta eivät he ole epäkohteliaita. Jopa pienet lapset tervehtivät, osaavat olla kohteliaasti. Tietysti he myös olettavat muiden toimivan samoin heidän maassaan.

Usein kuuluu väitteen, että Suomi on erityisen kallis maa. Polttoaine maksaa muualla Euroopassa hyvin saman verran kuin Suomessa, jos jätetään Itä-Eurooppa huomioimatta. Liha ja muut elintarvikkeet kaupassa ovat lähellä samaa tasoa kuin Suomessa; melonin kilohinta on euron tuntumassa ja monet edulliset lihat kymmenen euroa kilolta. Ravintoloiden listahintojen päälle tulee tippimaksu. Monessa maassa käsite hypermarket on sama kuin Suomessa tavallinen market eli kaupan pihalla on parkkipaikka. Ainoastaan alkoholi on Suomessa poikkeuksellisen kallista.

Latviassa oli edullisemmat kauppojen hinnat oman matkani osalta. Ainut poikkeus on alkoholi, sen hintataso on Tanskasta Viroon ja siitä etelää huomattavasti Suomea halvempaa, Italiassa kuohuviinipullo maksoi 3 euroa. Muulta osin en itse kokenut Italiaa Suomeen verrattuna halpana maana. Leirintämaksut olivat lähes kaikkialla samaa tasoa, Suomen Lapissa on tähän asti ollut kaikista halvin telttapaikka.

En väitä Suomea halvaksi maaksi ollenkaan. Kuitenkin väite siitä, että Suomi olisi erityisen kallis maa, niin en jaa sitä näkemystä [3]. Ehkä Suomi on ollut erityisen kallis maa, mutta tällä hetkellä hintataso on lähellä Saksan hintatasoa. Arvonlisävero selittää maiden välisen kuluttajahintojen erotuksen.

Erilaiset tiet

Saksalaisten moottoriteiden valtavista nopeuksista en ole ihan samaa mieltä, suurin osa ajaa moottoritiellä rauhallisesti. Samalla lailla BMW:t ja Audit ajavat Suomessa kuin Saksan moottoriteillä. Erona se, että Suomessa lapsiperheiden Volvot myös ajavat samoin kuin autobanalle kehitetyt autot. Yleisesti Euroopassa moottoriteiden nopeusrajoitus on 130 km/h.

Kun Saksasta ajoi Alankomaihin, niin siellä päivällä yleisnopeusrajoitus oli 100 km /h, yöllä 130 km/h. Iso syy on valtavissa ruuhkissa, 10 kaistainen tie Amsterdamiin oli tukossa ruuhka-aikaan. Tällöin toiseen suuntaan suositeltu ajonopeus voi olla 40 km/h ja toiseen suuntaan 120 km/h.

Tanska, Belgia ja Alankomaat ovat pyöräilijän unelmakaupunkeja. Etenkin Amsterdamissa pyöräilijöitä oli syytä varoa, sitä varten oli jopa erillinen varoitusmerkki oikealle kääntyvien autojen liikennevaloissa. Monet ajoivat työmatkan polkupyörällä, paljon oli jopa matkailijoita telttailemassa pyöräillen.

Ohjeita ulkomailla ajeleville

Jos haluat käydä Luxemburg cityssä autolla, niin on kannattaa etsiä se keskustan ainut yleinen parkkihalli valmiiksi navigaattoriin. Onneksi tarvitsi vain kerran ajaa keskustan kävelykadun läpi ja kiertää kaupunki uudestaan, että pääsi kaupungin ainoaan parkkihalliin. Kyseisen parkkihallin mukaan autoni oli Belgiasta. Vaikka poliisit seurasivat autoani, niin onneksi poliisit eivät pysäyttäneet siellä, en haluaisi tietää paikallisen maan sakkojen tasoa.

Sveitsissä dataliikenne maksaa valtavasti, siellä voi tulla alle päivässä monenkymmenen euron verran puhelinlaskua vaikka ei paljoa verkkoa käyttäisikään. Siellä myös täytyy ostaa erillinen lupa moottoritielle.

Tanskan sillan ylityksessä kannattaa olla tarkkana, että minkälaisia valintoja siellä on valittuna. En tiedä maksoinko rekan siltamaksun, oli kuitenkin kolme kertaa enemmän kuin mitä piti olla.

Ylipäätänsä monenlaista erilaista kameraa ja vastaavaa laitetta on Itä-Euroopassa. En itse tiedä miten ne edes toimii, mutta kyltin mukaan voi saada jopa 2000 euron sakon roskaamisesta. Jokaisessa maassa on omat tapansa, että miten autoilijoilta saadaan rahaa.

Onneksi ei sattunut mitään, matka meni hyvin.

REFERENSSIT

[1] YLE.fi: Maailman saastunein meri
[2] Deligted Cooking: What is Italian Rye Bread?
[3] Vauva.fi: Onko Suomi kallis maa?

Fake Evidences

Sometimes people want to be in correct so strongly that they will use a fake evedence. When you check the evidences enough closely and critical way, then it’s oblivious that something is based for the fake evidences. [1, 8]

Good fraud

Fraud is based for something real, but under the surface it’s a fake. Criminals try to make people do something that is against them or someone else. [2]

Good fraud is based for a good fake proofs, something that is impossible to have any proofs against it. It’s impossible to proof logically that Gd does not exist. If something is NULL, then you cannot say anything logical about it, it’s undefined. [3]

The map have been painted with the color that have been recognized first time in the 1801. It’s a titanium dioxide mineral, switch have not been invented in the time when map is painted. It’s a common mineral in Italy. [1, 8]

Dark Medieval Times

I had a talk with the Persian/Iranian friend in Vaasa. She is amazed how short and small history Finland have. If the Persian history is around thousands pages, then Finnish history is around 20 pages. She is a humanist studying politics in Finland.

I have tried to explain to her that it’s quite similar with the other parts of the Europe. There is unbelievable low amount of the information from the dark medieval times. Maybe Catholic church have an information that no-one else knows, probably not.

Video. 15K Man Siege Battle: Jerusalem’s Final Stand

I must agree that the written history have been a huge advantage for the cultures that have adopted it. Finnish culture would be amazing, but we don’t just have a lot of evidences. [4]

I tried explain that Finnish Language have huge amount of foreign words that aren’t use anymore in other Languages. Finnish people haven’t indented all these words alone? [5]

Finnish people must has had a cultural exchange with many languages. We have even Iranian Language based words like omena [6]. Have the Finnish people invented this word? Even she said that the Germanic people have believed to have a historical connection from thousands years. [4]

Crazy Man Discovered America

It’s just so hard to believe that America have been found for a mistake. Crazy Spanish man loaded some ships and tried to find a new sea route to India by a short cut thought Atlantic.

For mistake Columbus survived, and then come back to Spain. Even Columbus haven’t said in his times that he have discovered America. Other people later have said so. Politically this is very hard thing for Italia and some other countries. Even Nordic counties don’t agree that view.

But what we really can say if we don’t have any proofs against this view? But what it means that we have some proofs about something? Which one is in correct?

State that never existed

There is a billions of books that explain foundation of Israel, the holy land from the god for Jews. It’s the main evidence, but everyone don’t believe for it. Some people says it’s just a story. Some people thinks it’s 100 % – absolute true.

Image. The Exodus From Egypt.

Some countries like Persian Iran doesn’t recognize Israel. Persian is very old culture that have very old roots in the history. Also it have a very long written history, but they couldn’t recognize Israel. Even they believes in the same God, but don’t accept Israel as a state. [7]

Everyone can have the own mind. Does people do they decision by the sense? Or just for a political perspective? Not for the right and justice? For me this is a very hard religious question.

Conclusion

That’s about successful hoax.

REFERENCES

[1] YaleNews: Analysis unlocks secret of the Vinland Map — it’s a fake
[2] Tuppu: Victim of Fraud
[3] Proof Wiki: Axiom of Empty Set
[4] Tuppu: Lombardi
[5] Tuppu: Finnish Language
[6] Wikinary: Omena
[7] WordPopulationReview: Countries That Recognize Israel 2021
[8] Mindat: Anatase

Tuppu 3.0.1 άλφα

Olen päättänyt aloittaa uuden version itsestäni. Teen erilaisia muutoksia omaan elämääni, olen aiempaakin parempi pääversio itsestäni. Tein kerran uuden pääversion Tiede-foorumilla, huomasin silloin sille olevan sopiva aika [3]. Nyt ajattelin, että siihen on taas sopiva aika tässä vaiheessa.

Omakuva spoiler
Kuva. Omakuva
[collapse]

Uusi alku

Alussa oli sana, sana oli härkä. Myöhemmin sana muuttui erilaiseen muotoon, lopulta tarkoittamaan kirjainta A [1]. Kirjain on kääntynyt sivuttain, lopulta ylösalaisin. Härkä on englannin kielellä ox, länsi-seemiläisellä kielellä, kuten raamatun heprella Eleph (אֶלֶף) [2].

”Alpha /ˈælfə/ (uppercase Α, lowercase α; Ancient Greek: ἄλφα, álpha, modern pronunciation álfa) is the first letter of the Greek alphabet. In the system of Greek numerals, it has a value of 1.

It is derived from the Phoenician letter aleph Aleph – an ox.

Letters that arose from alpha include the Latin A and the Cyrillic letter А.

In English, the noun ”alpha” is used as a synonym for ”beginning”, or ”first” (in a series), reflecting its Greek roots.” Wiki [1]

Kuva. kirjain A hieroglyfinä (as in the Biblical Hebrew word Eleph (אֶלֶף) ’ox’. [2]

Missä me nyt sitten olemme, olemmeko me unohtaneet jotain? Ohjelmistokehittäjänä on hyvin tuttua, että moni asia menettää alkuperänsä todella helposti. Monia sovelluksia ja asioita käytetään hyvin erilaisesti kuin alunperin oli tarkoitettu. Oliko Tinderin alkuperäinen tarkoitus hakea tykkäyksiä omille muokatuille kuville? Oliko Facebookin alkuperäinen tarkoitus toimia Yhdysvaltain tiedustelupalvelun tietolähteenä?

Keskustan ehdokkaana

Olen tulevissa kuntavaaleissa 2021 Keskustan ehdokkaan Seinäjoella. Toivon, että mahdollisimman moni äänestäisi minua. Jokainen ääni on arvokas: on oikeasti iso asia saada toiselta minun vaalinumeroni vaaliuurnaan [4]. Toivottavasti tavoitan mahdollisimman monta potentiaalista äänestäjää. 🙂

Sim City spoiler
[collapse]

REFERENSSIT

[1] Wiki: Alpha
[2] Wiki: Aleph, Origin
[3] Tiede.fi: Tuppu L 2.0
[4] Tuppu.fi: Kaikki alkaa pienestä

WEB camera

Testing the new web camera. Also I’m telling about the most important western philosophy.

https://youtu.be/rT3Ys175Ru4
Video. Testing the new Web Camera. [1, 2, 4]

Pray

”Deterministic theories throughout the history of philosophy have sprung from diverse and sometimes overlapping motives and considerations. The opposite of determinism is some kind of indeterminism (otherwise called nondeterminism) or randomness. Determinism is often contrasted with free will.” [4]

Video. Pray.[3]

Study

Video. beginning for studies.

As a curiosity I have the ’<BR/>’ shirt. Br comes from the word break without vowels. Hypertext markup documents have a great questions in standardization. It is the magic that is included on a text document by pressing Enter from your keyboard. [5]

REFERENCES

[1] Tuppu.fi: successfulness of technoscience
[2] Newton’s Principia
[3] Wiki: Dualism
[4] Wiki; Determinism
[5] StackOverflow: HTML 5: Is it <br>, <br/>, or <br />?

New Normal

Like Finnish says: ”new day, new tricks.” [4]

Sometimes it’s good to have a different view for things. Maybe it’s a religious view ask an enemy to solve the problems. Ask from the enemy what they think about everything. When you read history, then you realize it’s have been happened multiple times in history. It’s very common thing in any independence war.

”Simple Generic”

My favorite project in my whole career is Simple Generic template that you can seen from the next presentation video. I have been done from static a template page.

Video. Simple Dynamic template. [1]
Dynamic HypeTextMarkup spoiler

”Today, references to unobtrusive JavaScript coding (DOM Scripting) have replaced the usage of the term DHTML.” [7]

Image. ”IMAGE 3.1 CSS styles invigorate HTML documents.”.[6]
[collapse]

It’s good that Malaysia isn’t on debt collection as Indonesia. They are good people and good countries. Also Pakistan is a very good country, I just ordered my handmade shoes from Pakistan. [2]

I think that some hundred thousand isn’t very much if the country have hundreds million people. It’s more about foreign policy, unpaid money is just like one euro-cent from the one person in personal life. It’s just a different way to mark the country as black listed.

Pakistan spoiler
Image. Hand made shoes from Pakistan.
[collapse]

I think that people believes that difference is bad and wrong, it’s on our genes. Some people thinks that way more and some people less, but most of us think very much in this way.

Sometimes I found that nobody knows does the war based on genealogy or culture. Is the war against each other of us coded on our genes, or does it have been innovated sometimes. War is the act when huge amount of males work together to destroy all males of another ethnic human group that is called as a genocide.

Image. Victims of genocide in 1994.
Total War spoiler

Japanese people are know of they excellent soldiers. It was the time when people haven’t invented an atomic bomb. After that time war wasn’t as nice thing to solve the problems. Nazis stop to develop atomic bomb in Second World War. They had potential to develop it, but they never done it. Ex-nazis continued they work of V2 rocket on Apollo Program in USA.

[collapse]

New Opportunities

It’s time to have a new opportunities. I had worked on companies, where all employers are males. It’s time to see differences when there is more females as my colloquies. I think that both of these have own pro and con sides. I’m working with Microsoft Technologies [3]

Microsoft spoiler
Video. Steve Jobs and Bill Gates
https://www.youtube.com/watch?v=dEqWA_mmPCk
Video.Visual Basic for DOS
Video. Loading 4K BASIC IDE
Video. Bill Gates Praising Apple Computers
Image. Brick vs. interfacePhone 3G vs. HTC Touch HD
[collapse]

REFERENCES

[1] Sofia Digital: Webinar
[2] Uusi Suomi: Finland is trying to recover EUR 240 million in outstanding debts from several countries
[3] MyLab
[4] Tuppu.fi: Finnish Language
[5] Tuppu.fi: COVID-19
[6] Tuppu.fi: Moving to Tampere, Finland
[7] Wiki: DHTML

Oman yrityksen perustaminen

Perustin oman osakeyhtiöni, ihan kokemuksen, yleissivistyksen ja harrastuneisuuden nimissä. Itse olen liian rehellinen ja avoin toimiakseni yrittäjänä.

Asiantuntijaspoileri
https://youtu.be/ADuTv3XdWZ4
[collapse]

Ikää minulla on pian jo 31 vuotta, mutta en silti olen vieläkään luovuttanut omia unelmiani eli unelmaani kohti ulkomaita ohjelmistokehittäjänä. Tunsin käsitteen ohjelmoija vuosituhannen vaihteen unelmissani aikana jälkeen ATK, mutta unelma elää yhä ohjelmistokehittäjänä termeistä huolimatta. Ei takerruta epäoleelliseen terminologiaan.

Johdanto

Itse olen kymmenen vuotta yrittänyt hakea työpaikkaa jostain isosta ohjelmistoyrityksestä, mutta aina kaava on ollut samanlainen. Kaikissa työpaikoissa on joku HR-täti, joka hylkää työhakemuksen aivan satunnaisella perusteella. Ei mukamas ole harrastuneistuutta. Tämä sama malli tuntuu toistuvan kaikissa paikoissa, joihin olen epätoivoisesti hakenut. Ehkä asia pitäisi itse korjata, olen asiaa speksannut mielessäni, mutta suunnittelu ja etenkin implementointi sen suhteen ei ole vielä edennyt.

”Mielestäni myös vastaavasti se ajatus, että jos kodista poliisi, sotilas tai joku muu tulee viemään pysyvästi pois, niin silloin on velvollinen heittämään viimeisellä kerrallaan polttopullon talon nurkkaan. Muuten tulee olla lojaali, pitää taloaan pystyssä, olkoon sitten johdossa mitä vain. Ajatusmaailma suomalaisessa politiikassa ei ole niin paljon muuttunut nuijasodan ajasta, kuin mitä monet oikeasti luulevat. Vain sen omistaa, jonka pystyy tarvittaessa hävittämään savuna ilmaan.” [6]

Kuva 1. En ole edes ehdolla vielä, vasta parin vuoden päästä taas.

Olen päättänyt oppia virheistäni, ymmärrän jo tilastollisen todennäköisyyden perusteella, että minun täytyy muutta omaa käytöstäni. Minä en tule koskaan pääsemään normaalin työnhakun kautta ohjelmistokehittäjäksi, tilastojen mukaan todennäköisyyteni on äärimmäisen huono.

Tiedän kuitenkin varsin hyvin, että oma käsitykseni yrityksen operatiivisesta- ja business-puolesta rajoittuu ihan täysin skotlantilaisen Transport Tycoon -pelin pelaamisen tasolle. Jos jotain tiedä, niin Skotlannissa on aika hyvä käsitys tästä puolesta, peli itsessään on skotlantilaisen tekemä. Siten tämä tuo varsin ristiriitaisia tuntemuksia.

Itselleni on hyvin jäänyt mieleen TTD:n ääni, kun höyryhirviöjuna sukeltaa tunneliin. Aikansa isoimmissa junissa ei ollut tuulilasia massiivisen tuhansien hevosvoimien höyrymoottorin takia, joten ymmärrettävästi onnettomuuksilta ei vältytty edes suorilla rataosuuksilla junien nokkakolareilta ennen releillä automatisoitua valo- ja raideohjausta, jotka on peliin koodattu mahdollisimman matalalla tasolla eli konekiellä C-kielen sekaan [3]. Positiivisesti sitäkin äänimaailmaa paremmin muistan jazz-musiikin.

Höyryjunaspoileri
[collapse]
Sähkönsiirtospoileri

Ei aivan näin näyttäviä animaatiota ole peliin kuitenkaan laitettu. Ehkä TTD:sta voisi tehdä jonkun brutal-version, kun lähdekoodit ovat avoimia. Joku TTY:n sähkötieteen DI taas laskenut, että kyllä nämä sähköjärjestelmät piirianalyysin [Olen myös suorittanut kyseisen kurssin. Ainakin todennäköisyys matematiikassa, tilastomatematiikassa ja aina tarvittaessa matematiikaan tenteissä käytin isometristä graafista integrointia monimutkaisissa integrointilaskuissa. -admin] perusteella kestää pienen ylikuormituspiikin, pikkasen sähkö voi mennä johtimen ulkopuolella. Ei tarvise irroittaa johtimia sähköverkosta ja pimentää koko kylä.

https://www.youtube.com/watch?v=u6VoMDd4bKk
[collapse]
Tanssispoileri

Jazz musiikkityylinä sopii hyvin TTD:n taustamusiikiksi. Ehkä juuri tästä asiasta johtuen jazzin tanssiversion eli swingin elektroninen genre kuulostaa itsestäni niin hyvältä. Noin sadan vuoden viiveellä sama musiikkigenre tulee uudestaan pinnalle. Niin aitoa, alkuperäistä ja ajatonta, kuten monet muutkin hyvät asiat.

[collapse]

MetaWare Oy

Oman start-up -yrityksen perustaminen itsessään oli lapsellisen helppoa, tarvittavat tiedot sai Googlettamalla erittäin helposti. Itse osakeyhtiön perustaminen kesti noin tunnin, paljon helpompaa kuin työttömyyskorvaushakemuksen tekeminen.

Ainut ongelma on, että osakeyhtiö tarvitsee 2 500 euroa alkupääomaa yrityksen kassaan. Tietenkään minulla ei ole sellaisia rahoja. Täten jatkan mahdollisen yritykseni toimintaa rekisteröitymättömänä. Toivottavasti yritykseni pysyy rekisterissä, ehkä ei. Patentti -ja rekisterihallitukselta tuli asiaan liittyen selvityspyyntö, johon en vastaa. [1]

Jos joskus saan yritykseni konseptin valmiiksi ja hyväksi, niin tulen mahdollisesti sen myymään heti, kunhan lupauksena on kovapalkkainen ja varma työpaikan kyseisestä yrityksessä. Tällaista olen itse visioinut. Tosin en ole varma, että oikeasti sitten edes viihtyisin siinä työpaikassani. Pitäisi tehdä se PRO ET CON -lista hyvistä ja huonoista puolista rinnakkain kahdelle sarakkeelle.

Yritysidea

Itse olen TEK:n eli tekniikan akateemisten ammattiliiton jäsen. Täten itselläni on erittäin paljon hyviä mahdollisuuksia päästä erilaisiin tilaisuuksiin, joissa on mukana muita oma yrityksen alkutaipalella olevista henkilöistä. Samalla saa uusia kavereita ja tekemistä vapaa-ajalleni.

Kuva 2. Ykinkertaiset ideat ovat yleensä parhaita.
neuroverkkospoiler
[collapse]

Tarkoitus olisi saavuttaa piilaaksomainen yritys, jota itse en osaisi ylläpitää kunnolla. Tekisin kuitenkin oman teknisen puolen yrityksen toteuttamisesta, kuten esimerkiksi kehittämällä neuroverkkoihin perustuvaa järjestelmää, jota voisi käyttää datan käsittelyyn. En itse sitä järjestelmää osaisi myydä, vaan suosiolla jättäisin kyseisen tehtävän jollekin osaavammalle.

Tässä minua motivoi QDOS eli Quick And Dirty Operting System, jonka uudelleen nimeämisellä Disk Operating System Microsoft teki miljoonia, toimi jopa Windows 98 -käyttöjärjestelmän pohjana, Kyseisen teknisen toteutuksen tehnyt henkilö sai hyvän työpaikan Micosoftilta vastineeksi. DOS myytiin käytännössä ilmaiseksi, vastineena työpaikasta. DOS:n kehittäjä poistui hetkeksi Microsofilta, koska joutui kuuntelemaan kaikki päivät mielistelyä DOS-järjestelmästä. [5]

”The young Microsoft can do it, but to close the deal, it needs a crucial element in the package: an operating system for a 16-bit machine. And it needs it fast.” [5]

DOS järjestelmänä oli taloudellisessa mielessä vallankumouksellinen. Moniajoa tukevan ikkunointijärjestelmän tekeminen ilman moniajoon taipuvia ajureita kiintolevn päällä pyöriväksi on mielettömän vaikea tehtävä. Ehkä Blue Screenin eli debuggaustyökalun jättäminen loppukäyttäjille oli tietoinen päätös, osoituksena tehtävän täydellisestä mahdottomuudesta käytännössä. Oman aikansa T-Ford, tekniikka eli 386 tietokone, 4 MB rammia ja 50 MB kiintolevy ei yksinkertaisesti ollut valmis parempaan [4]. Windows XP oli suunnitteluperiaatteiltaan UNIX, silloin vasta se tekniikka oli valmis otettavaksi kuluttajakäyttöön, eikä siinä ole mitään erikoista. Omasta mielestäni DOS:n kehittäjä saisi saada hieman saada maineensa puhdistuksen, samoin kuin T-Ford. Teknisesti ei herätä mitään ammattiylpeyttä, mutta markkinallisesti tosi iso asia.

Win95spoileri
[collapse]

Vastaavasti T-Fordin aikaan käytössä olleet moottoriöljyt olivat lisäaineistamattomia ja kuluttajakäytössä olleet öljytisleet olivat täynnä epäpuhtauksia. Sen takia auton sylinterit olivat samaa luokkaa kuin nykyajan rekassa, tehoa äärimmäisen hidaskäyntisestä 3.6 litraisesta moottorista tuli 22 hevosvoimaa eli samaa luokkaa kuin nykyajan kevytmoottoripyörästä. Öljyn vaihtoväli oli äärimmäisen lyhyt. Auto oli jopa sen ajan mittaluokalla erittäin huono suorituskyvyltään, vasta 1930-luvulla autoistuminen myötä panostetiin tieverkostoon, ongelmajätteenä pidetty bensiinin käytöstä joutui maksamaan nimellisen korvauksen, kehitettiin ensimmäinen laatustandardi moottoriöljylle, autokorjaamot korvasi kyläsepät. T-Ford mahdollisti sen, loi munan ennen kanaa.

Mahdollinen ostaja

Aina tämänlaisissa yritysunelmissa on taustalla ajatus siitä, että Google ostaisi kyseisen yrityksen miljoonilla. Tietysti kuuhun kannattaa tähdätä, mutta konsepti on jo aikansa elänyttä. Ehkä ei kannata yrittää sitä samaa 10 vuotta vanhaa ohjelmistoalan kaavaa. Samoin kuin ei kannata yrittää vanhaa vesiputous-mallin aikaista 1990-luvun sijoituskonseptia.

Itse asettaisin fokukseni siihen, että joku itseni kannalta miellyttävä yritys ostaisi yrityksen. En edes halua myydä sitä 100 k€ hintaan tai muuta vastaavaa, vaan jopa ihan 2 500 euroa on oikein hyvä summa eli vaadittava pohjakassa osakeyhtiöni rekisteröintiin. Mahdollisesti itselleni maksettavaksi jäävät verot kykenen vielä Suomen valtiolle maksamaan. Mielelläni sen tekisin siinä vaiheessa viimeisenä tekonani!

Asian pihvi olisi se, että kyseinen myyntisopimus takaisin minulle varman ja hyvä palkkaisen työpaikan. Haluan vain, että tällä voisin osoittaa omat kykyni, jotta pääsisin johonkin mahdollisesti alankomaalaiseen tai belgialaiseen yritykseen sisälle. Ulkomaisille yrityksille oman osaamisen näyttäminen on vaikeaa. Suomessa mikään isompi yritys ei taas huoli minua.

Delirium Tremens

Kuvassa 3. on Delirium Tremens -olutta, joka oikeasti yllättää laadullaan. Tämä taas osoittaa todella hyvin sen, että tätä olutta kehittäneet ovat tienneet, että mitä ovat tehneet. Oikeastaan jopa aika hauska olut, ei tarvitse erillisiä varoitustarroja. Mitäpä sitä asioita salailemaan ja peittelemään, hullun hyvää olutta!

Kuva 3. Elämäni ensimmäisen kerran tulee juotua tätä oikeasti hyvää belgialaista vaaleaa olutta.
[collapse]

Asia on vain idea-asteella kuten monet muutkin itse kehittelemäni asiat. Ehkä tämä on asia, jossa itse voisin olla hyvä. Haen uutta linjaa. Kerran jokin tähän asti kokeiltu ei toimi, niin ketterästi kokeilen uutta ideaa. Virheitä ja epäonnistumisia olen paljon tehnyt, sitä en kiistä. Kuitenkin oikeistolaisessa filosofiassa on paljon asioita, joista itselläni on opittavaa.

Yhteenveto

Mahdollisesti kyseinen Start-Up -yritys hyvällä tuurilla onnistuu, vaikka en hirveästi anna sille painoarvoa. Oman tulevaisuuteni kannalta todennäköisyyksien nimissä uskon olevan hyvä visio.

Tarkoitus olisi siis teknisessä mielessä tuoda valmis paketti yritykseeni eli itseni nimeämälleni MetaWare Oy:lle. Sen sijaan taloudelliseen puoleen en edes halua ottaa mitään osaa. Ainut ehto tekniseltä puoleltaan valmiiksi hioutulle konseptille olisi, että itse saisin olla siinä mukana. Voisin myydä käytännössä ilmaiseksi, kun vain itse saisin olla mukana.

Yksinkertaistaen suostun heti myymään firmani, jos joku Alankomaalaista tai Belgiasta ostaa yritykseni sillä ehdolla, että vain suostuu ottamaan minut miljoonabisnesidean mukana.

Furtheria

Itselläni iso unelmani on päästä tilanteeseen, että toimin kansalaisaktivistina. Haluan kritisoida ja kyseenalaistaa koko Suomen yhteiskunnan toimintamallin lähtien perusteista. Ei siis kyse ole puolueista tai aatteista, vaan tarpeesta kyseenalaistaa koko tämä suomalainen yhteiskunta.

Ehkä tilanne ei ole aivan samanlaista kuin mitä uutisointi on Suomessa mm. Pohjois-Koreasta [2]. Haluan kuitenkin omalla tulevalla elämälläni keskittyä kritisoimaan suomalaista yhteiskuntaa, perustuen täysin faktatietoihin. Kyse ei ei siis ole kritiikistä sen enempää mitään puolutetta kohtaan, vaan tätä yhteiskuntajärjestelmää itsessään perusteiltaan.

REFERENSSIT

[1] MetaWare Oy
[2] Iltalehti: Pohjois-Korean loikkaria hoitanut lääkäri kertoo miten loiset ryömivät ulos haavoittuneesta sotilaasta
[3] YLE: Rautateillä ennätysmäärä tihutöitä
[4] Technology tips: Windows system requirements from Windows 3.1 to Windows 10
[5] Paterson Technology: Father of DOS Still Having Fun at Microsoft
[6] Tuppu.fi: Kaikki alkaa pienestä

Anteeksipyyntö

Elämässä tulee hetkiä, että kertoo esim. blogissaan liikaa muista ihmisistä tai yksityistä asioista yleensäkin. Sen johdosta kaverin pyynnöstä päätän tehdä julkisen anteeksipyynnön.


”Anteeksi, käytökseni on mennyt monella tapaa yli kohteliaisuuksien rajojen. Olen puhunut yksityisyyttä loukkaavia tietoja julkisesti, sekä käyttänyt ikävässä kontekstissa henkilöiden nimiä. Nyt minun on paras vähän jäähdytellä itseäni ja ottaa aikalisä asioista. Pidän tästä lähtien matalampaa profiilia, ettei kellekään aiheudu turhaa pelkoa tai mielipahaa” -Admin

Lainaan itseäni

Lainaan itseäni vajaan kolmen vuoden takaa. Asiat ja tilanteet muuttuvat, mutta vuosistoja sitten toimineiden skolastien argumentointivirheet ovat yhä ajankohtaisia. Keskiaikana tieteen huippu oli skolastien harteilla, he oikeasti edistivät ja kehittivät tiedettä kaiken sen ajan yleisen tiedevastaisen asenneilmapiirin ja pilkan keskellä:

”On hyvin tyypillistä hyökätä väittelyssä henkilöä kohtaan. Sitä pidetään erittäin huonona ja hyväksymättömänä tapana käydä väittelyä. Lähtökohta siis on, että väittelyssä mielipiteet väittelevät henkilöiden sijaan. Harvemmin toisen henkilökohtaisuuksia vastaan hyökkääminen edistää oman kannan esittämistä. Miten se edes olisi mahdollista, jos ei keskustele itse asiasta. Tätä kuitenkin tapahtuu varsin usein, siitä pois pääseminen on yleensä ensimmäinen asia oppiessa argumentoimaan oppineesti ja vakuuttavasti.” https://tuppu.fi/argumentointivirhe/

Toiveikas vuosi 2019

Vuosi 2018 on mennyt omalta osaltani oikein hyvin, kehitys on edennyt oikeaan suuntaan. Toivottavasti muutenkin kaikilla asiat sujuisivat paremmin. Olen saanut nyt mahdollisuuden osoittaa omaa kykyäni, epäonnistuminen asioissa on paljolti vain minun omista mahdollisista virheistäni kiinni. Toiveista tulee totta, kun ne toteuttaa. Tukea saa, laaja-alainen yhteistyö pitäisi olla itsestäänselvyys.

Johdanto

Nyt kavereideni kanssa oli puhetta, että ei saa toistaa samoja virheitä, joita olen tehnyt aiemmin. Kuulemma tällä hetkellä mahdollisuudet ovat hyvät, joskin huolta ja epäilystä on ollut. Kyse ei ilmeisesti niinkään ole mistään teosta tai asiasta sinällään, vaan siitä, että miten ja missä minä asiat ilmaisen. Turha metelöinti ei ole tarpeellista, kun tukena on laaja ihmisyyttä edistävä ja ihmisyyden vastaisuutta vähentävä kaveriverkosto, jonka yhteistyökyky ulottuu jopa ympäri maailmaa. Pitää ymmärtää olevansa osa yli 7 miljardin ihmisen kokonaisuutta.

Asioita ja mielipiteitä ilmeisesti voi ilmaista, mutta niiden sisältöön tulisi kiinnittää entistäkin enemmän huomiota. Yleinen nykyistä matalampi profiili olisi minulle hyväksi, asioiden tuputtaminen ei ole kohteliasta ja aiheuttaa turhaa vastareaktiota. Jopa hyvä IRC-kaverini def pyysi sitä, joten silloin pitää suhtautua asiaan riittävällä vakavuudella. Etenkin ulkopuoliset voivat saada itsensä haluamansa näkemyksen. Minusta saa helposti tarkoituksiansa tukevaa referenssiä haluamaansa asiaan, eikä se ole läheskään aina hyväksi ollessani mukana mm. puolue-, ja yhdistystoiminnassa.

Taustaa


Olen kuullut Masi Kajanderilta, että olen reaalielämässä ihan normaali. Sen sijaan kirjoituksistani voi saada väärän kuvan, kuten vaikkapa lukemalla tätä blogiani. Syynä on ehkä se, että olen sitä aitoa alkuperäistä jonne-sukupolvea. Siis sitä, jolloin ei tunnetettu käsitettä some tai edes IRC-galleria. Siihen aikaa nuoremmat olivat keskustelufoorumeilla, kuten muukin tietotekniikkaväestö omissa foorumeissaan. Ylilauta ja muut vastaavat jatkavat tätä kehitystä nykyään.

Minun nuoruuteni aikana julkinen valtiovalta ei ollut kiinnostunut verkkokeskusteluista, mutta nyt mm. ylläpitäjän vastuuta keskusteluista puidaan jo kovan tason oikeusprsesseilla. Kyse on myös tietynlaisesta vastuusta mm. nuoria ja heidän vanhempiaan kohtaan, vaikka ei suoranaisesti kenellekään tekisi mitään pahaa. Nuoremmille ihmisille pitää antaa oma elämänsä ja rauhansa. Sodan aikanakin eläneet nuoret aikuiset vaikenivat tapahtumista myöhemmällä iällä, jolloin keskittyivät paremman maailman luomiseen.

Kulttuuriero

Samoin kun nuoria miehiä laitetaan tuhansittain opiskelemaan samaan laitokseen, niin on ymmärrettävää, että silloin kulttuuri on erilainen kuin jossain muussa ympäristössä. Valmistuneen DI:n pitää ymmärtää, että kaikkea saatavilla olevaa viinaa ei tarvitse juoda. Teekkarina sellainen on vielä normaalia, mutta ei sitäkään yleisesti hyvänä käytöksenä pidetä. Osa teekkareista ei valmistu koskaan, minä olen valmistunut. Joillakin tulee seinä vastaan, uskoakseni yliopistossa asenteen merkitys organisaatissa pärjäämiselle on vähintään yhtä suurta kuin armeijassa. Samoin kuin armeijassa on simputusta, niin myös yliopistoissa voi tulla seinä vastaan. Plagiointi ja vahvat perustelemattomat virheelliset mielipiteet tai toisen yliopistopolun haittaaminen tekevät opintopolusta liian ruusuisen kuljettavaksi onnistuneesti läpi. [4]

”Academic dishonesty or academic misconduct is any type of cheating that occurs in relation to a formal academicexercise. It can include ” [4]

  • Plagiarism: The adoption or reproduction of ideas or words or statements of another person without due acknowledgment.” [4]
  • ”Fabrication: The falsification of data, information, or citations in any formal academic exercise.” [4]
  • ”Deception: Providing false information to an instructor concerning a formal academic exercise—e.g., giving a false excuse for missing a deadline or falsely claiming to have submitted work.” [4]
  • ”Cheating: Any attempt to give or obtain assistance in a formal academic exercise (like an examination) without due acknowledgment.” [4]
  • ”Sabotage: Acting to prevent others from completing their work. This includes cutting pages out of library books or willfully disrupting the experiments of others. ” [4]

”Academic dishonesty has been documented in most every type of educational setting, from elementary school to graduate school, and has been met with varying degrees of approbation throughout history. Today, educated society tends to take a very negative view of academic dishonesty. ” [4]

Monelle auktoriteettiuskoiselle ihmiselle se voi olla henkisesti raskasta, että tiede ei tukeudu mitekään auktoriteetteihin, jolta osin yliopisto poikkeaa armeijasta. Pitäisi kuitenkin yrittää kunnioittaa erilaisia ihmisiä, ymmärtää erilaisia käsityksiä oikeasta ja hyvästä toiminnasat omien organisaatioiden edun takia, vaikka arvot eivät suoranaisesti ole niiden erityisessä arvostuksessa. Se, että joku kunnioittaa auktoriteetteja, niin pitäisi ymmärtää myös silloin toimia vastavuoroisesti. Toivoa, että vastaavasti myös omien tahojen ja ryhmien arvot tulevat kunnioitetuksi. Erilaisten kulttuurien arvomaailmoja ei tarvitse aina arvostaa, mutta on hyvä kuitenkin kunnioittaa niitä.

Tunnetusti tutkijoilla on akateeminen vapaus eli työnsä puolesta mahdollisuus tehdä asioita tieteen nimissä, mutta samalle se tuo mukanaan valtavan akateemisen vastuun. Etenkin tutkimuskäyttöön kehittetyjä kemikaaleja on päässyt vuotamaan valtavia määriä yliopistojen ulkopuolelle. Erityisesti Kiinaan nähden on niin suuri kultturillinen ero, että monet ovat onnistuneet sieltä levittämään niitä oman edun mukaisiin tarkoituksiin, joihin niitä ei ole koskaan tarkoitettu tai kehitetty. Monet ovat ihan aiheellisesti huolissaan tästä asiasta. Iso osa niistä on jopa erittäiin neurotoksisia eli reakoivat aivoissa tuottaen jopa pysyviä vaurioita [2]. Itsekin olen hieman kiinnostunut neuroverkkojen tutkimisesta, ohjelmallisesti.

Keskustan yliopiston 5 opintopistettä vastasi TTY:lla 3 opintopistettä, koska DI:n vaatimustaso pitää olla kovempi kuin virallisesti saman tason tekniikan maisterilla. Diplomityöstä monilla jää valmistuminen onnistumatta, koska eivät kykene osoittamaan omaa akateemista pätevyyttään. Ehkä minusta vain todettiin, että olen yliopiston perusteella riittävän pätevä tutkintotodistuksen saamiseen. Hyvä ystäväni Masi Kajader suoritti tutkinnon juuri ennen kuin TTY virallisesti lakkautettiin, tilalle kun tulee uusi Tampereen yhteinen yliopisto [1, 3].

Analysointia

On siis hyvä tiedostaa, että Suomen sisällä on paljon erilaista alakulttuuria. Se, että jossain jokin asia on ok ja normaalia, niin ei tarkoita samaa jossain muualla. Näiden kulttuurien välistä ristiintörmäystä tapahtuu todella paljon. Vaikkakin monet samat sosiaaliset periaatteet pätevät kaikissa ympäristöissä, niin ilmenemisessä on eroja. Näiden asioiden käsittely on enemmän humanistien aihepiiriä, mutta jokaisessa teekkarissa asuu pieni humanisti.

Yhteenveto

Vuosi 2019 on erittäin toiveikas. Itse toivon saavani aikaan paljon asioita, kaikkea en edes kerro julkisesti. Toivon, että voisin toimia vastuullisempana ihmisenä. Kun voi vaikuttaa asioihin monessa paikassa, niin sitä etuoikeutta ja yhteistyöpotentiaalia tulisi käyttää riittävällä varovaisuudella paremman maailman edistämiseen. Turha menneitä on mussuttaa, nyt kun mennään uuteen vuoteen aiemman pohjalta!

Furtheria

”Näin on aina tehty, näin pitää aina tehdä.


Wiki: Unix time with in Non-Gregorian calendars

REFERENSSIT

[1] M. Kajander, Ohjelmiston itsepäivitystoiminnallisuuden totetus, diplomityö, Tampereen teknillinen yliopisto, Tietotekniikan laitos, Tampere, 2018. Saatavissa (viitattu 2019-01-01): https://dspace.cc.tut.fi/dpub/bitstream/handle/123456789/26913/Kajander.pdf
[2]Wiki: Neurotoxity. viitattu 2019-01-1.
[3] Tuni: Yhdessä olemme enemmän. julkaistu 2018-12-13. viitattu 2019-01-02
[4] Berkley City College: What is academic dishonesty?
[5]Suomi24: neuroleptit ovat sairaita. (Nykyipäivän lobotomiaa jopa unettomuuteen.)
[6]Tiede-foorumi: Neuroleptit, miksi niitä määrätään kaikille?