Skip to the guide
MOUNT MEDIATHE LAB / DIKULT105

OPTIONAL / DIKULT105

The coding museum

Twelve short experiments. Choose a station, change something and test what happens.

PRACTICE FLOOR / 12 OPEN STATIONS

Choose something to try.

Click, change, test. Pick any station. Your project and decisions stay yours.

0 / 12 tried

DIGITAL GENRES / TRY A FORM

What could your work become?

Choose a form, then operate the miniature. You can mix forms and keep your own subject.

A composition you can change.

ART / FORM + MOVEMENT

What changes when the composition moves?

Rotate it or change its palette. Compare both versions.

Try the Light room for scale and spacing.

Try the related machine →

Fictional miniatures for practice. These examples are not a final-assignment template.

02 / PROJECT EXPLORER

Which file owns the change?

Choose a change, then open the file that controls it.

Do this in VS Code

Open the project folder. Use Quick Open: Ctrl+P on Windows/Linux or ⌘P on Mac. Type part of the filename, then open the matching file.

03 / HTML · CSS · JAVASCRIPT · ANIMATION

Change the actual specimen.

Change one thing. Observe the result.

With JavaScript enabled, this workbench lets you change a heading, spacing, a border, a counter and movement. Without it, use the explanations and examples below.

See the practice code

04 / COMMAND PALETTE

Make the nesting readable.

<article><h2>My room</h2><p>Someone is here.</p></article>

Choose the command that makes this document easier to inspect.

Do this in VS Code

Open the Command Palette with Ctrl+Shift+P or ⌘Shift+P. Search for Format Document. Formatting shows structure; you still need to test the page.

05 / FILE PATHS

The page has lost its stylesheet.

The folder contains index.html and styles.css. Connect them.

A room for memories

The content is here. Its CSS is missing.

Practice connection log: stylesheet not loaded.

Check your real page

Match the href to the filename, including its case. In the browser’s Network panel, check whether that CSS file loaded. Check the path again after publishing.

06 / SHARED CSS

Find a style. Reuse it.

Room oneA place to begin.
Room twoA choice to make.
Room threeA trace to keep.

One rule controls all three rooms. Change both values.

Keep this habit

Give repeated components a shared class. Store repeated colours and spacing as CSS custom properties. Change the shared rule when all instances should change; scope deliberate exceptions.

07 / RESPONSIVE LAYOUT

Can the room become narrower?

PlaceChoiceMemoryReturn

Try both layouts, then narrow the preview. Watch the relationships change.

Try your own page

Resize the browser, zoom in and try long text. Fix the point where your composition stops working. Avoid fixed heights around text that can wrap.

08 / DEBUGGING

Find the broken connection.

<button id="flow-signal">Send a signal</button>
0 signals

Compare the selector with the button’s id. Then connect and test.

When your own button fails

Read the first useful Console error. Confirm the script loaded, the selector found the right element and the event fires. Change one cause, then test the first and repeated click.

09 / RECOVERABLE EXPERIMENTS

Keep a version you can return to.

Keep a version, change the sentence, then restore it.

Practice memory only. This is not Git or a project backup; reloading clears it.

Use a real checkpoint

Save your files. In Source Control, inspect the changes and commit a meaningful working step. A dated backup outside the active project is another recoverable copy. Test the published version separately.

10 / ANIMATION & EFFECTS

Keep the effect that helps.

Change the amount and blur. Compare what each version communicates.

Measure real speed

This toy does not measure FPS or load time. Record the same interaction in your browser’s Performance panel before and after a change. Check large assets in Network. Editor slowness is a separate problem: inspect extensions and processes in VS Code.

11 / QUALITY & A.I. SLOP

Give the claim a real subject. Test the control.

INTENTIONALLY WEAK EXAMPLE

Revolutionising digital experiences

The label promises an action. Does it work?

Try the original button, revise the claim and connect its action.

Judge the work, check the evidence

A font or colour cannot prove AI authorship. Check particular decisions, working controls, accurate claims and traceable sources. Fluent wording and polished effects are not evidence. Follow the final assignment’s AI rules.

12 / THE VISITOR’S VIEW

Will it open without your login?

Practice hosting setting

The guest has not opened the work yet.

A local simulation. It does not change or test any real hosting account.

Test your actual delivery

Publish early. Open the exact work and walkthrough URLs in a private window and on a phone. Check the start, main interaction and ending. Put those tested links in your submitted text. Publishing guide →

Practice here, then make your own change in VS Code.

Ask Ada and Turing · the original lab exhibits

THE EXISTING LAB EXHIBITS

Ask Ada and Turing

Choose a question, then continue their conversation.

Ada Lovelace1815-1852

The first programmer

Alan Turing1912-1954

The machine thinker

Ada Lovelace · imagined dialogue

You do not need to know every command. Start with something you want someone to encounter. What should they notice?

1 / 4Imagined teaching dialogue, not historical quotations.
Read the conversations as text

Getting started

  1. Ada: You do not need to know every command. Start with something you want someone to encounter. What should they notice?
  2. Turing: Then describe one action precisely. What is there before the action, and what should change afterwards?
  3. Ada: Give the idea a form. A heading, a colour, a pause or a rule can each carry part of its meaning.
  4. Turing: Run it. Compare the result with your prediction. If they differ, you have a specific question to investigate.

The three languages

  1. Turing: HTML names the things in the document. A button should be a button, so a visitor can use it with a keyboard too.
  2. Ada: CSS gives those things their relationships: space, scale, contrast and movement. Choose those relationships for your work.
  3. Turing: JavaScript can listen for an action, remember a value and change the document. The browser runs it; VS Code is where you edit it.
  4. Ada: Try the four controls below. Notice which decisions belong to structure, presentation, behaviour and time.

When it breaks

  1. Ada: The page is suddenly plain white. Before redesigning it, check whether the stylesheet loaded.
  2. Turing: Look at the first useful error. Read its file and line. A wrong filename is enough to stop the intended result.
  3. Ada: Keep the last working version. Change one thing, reload, and compare. You can undo a failed experiment.
  4. Turing: A useful question is: I expected this action to change this value. Instead, this happened. Can you reproduce it?

Keeping your style

  1. Ada: When you find a visual language that fits, keep a small record: type, spacing, colour and interaction.
  2. Turing: Put repeated decisions into shared CSS. Check that every page actually loads that same file.
  3. Ada: Individual works can need their own composition. Reuse the parts that support them, and explain the exceptions.
  4. Turing: Consistency also means behaviour. A link should go somewhere; a button should do what its label promises.

Critical judgement

  1. Turing: A convincing appearance does not prove that a claim or a program is correct. What evidence would let you check it?
  2. Ada: Generic output becomes a problem when it avoids the particular work. Can you connect each choice to the thing you are making?
  3. Turing: Try the controls, inspect the code and follow the sources. Record what actually happens.
  4. Ada: You can change your mind after a test. Keep the parts you can defend, rewrite the vague parts, and make the next version yours.
Practice, final assignment and AI rules
Working on the final assignment? The current final guide says no AI in making the work unless you specifically address AI as part of speculative digital futures; Alinta explains that permitted scope. Do not let AI write your text. Light editing is permitted when you write in English. Lab 2's AI-assisted practice was separate. Ask Alinta before using it if you are unsure.
Longer explanations, shortcuts and sources
You can learn this one decision at a time.

Choose something you want to make, then choose a small question you can answer by trying it. “Can a visitor change this sentence?” is a useful first experiment. You can add complexity when you understand the first result.

This is an optional reference room for DIKULT105. Read it in any order. The controls are teaching demonstrations, not templates for assessed work. Nothing here adds another compulsory task or changes the official assessment rules.

Four places to know

Your folder contains your files. VS Code edits them. Your browser displays and runs the website. Your published address serves a particular uploaded version. A change in the editor does not automatically update all four.

Open the whole project folder in VS Code. Start with filenames you can recognise: index.html, styles.css, main.js and an assets folder. Check which file your preview is serving. Keep a working copy before a large experiment.

HTML, CSS and JavaScript do different jobs.

HTML gives content structure and meaning. CSS controls its presentation and layout. JavaScript adds programmed behaviour. They work together in the browser. You can make useful work with a small amount of each. MDN explains the web standards model.

Read a small page as a document

The <head> contains metadata such as the page title, viewport and stylesheet link. The <body> contains the visible content. Nest elements deliberately, close them correctly and give form controls labels. An id identifies one element; a class can identify a reusable group.

<link rel="stylesheet" href="styles.css">
<script src="main.js" defer></script>

These paths are relative to the HTML file. If a page moves into a subfolder, check its paths again. A plain, unstyled page often means the CSS did not load. Check that before changing the design.

Learn HTML structure with MDN. Try explaining your own document aloud: what is the main content, which heading introduces it, and which controls can someone use?

Build a visual language you can keep using.

Understand the rule before adding another one

A selector chooses elements; declarations set their properties. In .caption { color: white; }, .caption selects a class and color changes its text colour. CSS decisions can inherit, compete or be overridden. When something looks wrong, inspect the element's matched and computed styles. Find the rule responsible before adding a new override.

More specific selectors can beat less specific ones. Source order resolves otherwise equal competing rules. Repeated !important declarations make the relationship harder to follow. Prefer a small set of intentional rules and local classes. MDN's cascade guide explains these conflicts.

The box model explains surprising gaps

Content sits inside padding, then a border, with margin outside. Check all four in the browser's box-model display. With box-sizing: border-box, a specified width includes padding and border. Use gap for space between flex or grid items so spacing decisions stay visible in one place.

Choose a layout system

Use normal document flow for reading. Try Flexbox when you want to arrange items along a row or column. Try Grid when relationships across rows and columns matter. Let text wrap, use a readable maximum width, and avoid setting a fixed height on a box that contains changing text.

Make the browser narrower while working. Add a media query where your composition needs to change, rather than choosing a device label first. Test long words, zoom and a real phone if one is available. A layout should still make sense when a font loads differently.

Save the decisions that define your style

When a version works, record a few choices: background, text colour, type family, spacing scale, borders and button behaviour. Store repeated values as custom properties and reuse a shared stylesheet across related pages. MDN documents CSS custom properties and their scope.

:root {
  --surface: #08090b;
  --text: #f1eadb;
  --space: 1.25rem;
}
.project-note {
  color: var(--text);
  background: var(--surface);
  padding: var(--space);
}

This is a practice example, not a required palette. Pick values that belong to your own work. Keep shared navigation, text and controls consistent. A particular artwork or blog post can have a different composition; scope its CSS to that page so its choices do not accidentally change every other page.

Reuse a pattern without freezing the work

Save a small component you understand: a caption, navigation item, accessible button or source note. Give it a descriptive class. Change the shared definition when you want all instances to change; add a named variation when the exception is intentional. Avoid copying an entire page of CSS for each new screen.

My CSS works on one page but fails on another
  1. Check the stylesheet URL in Network. Did it load successfully?
  2. Check spelling and case in filenames, class names and selectors.
  3. Inspect the element. Does the selector match it?
  4. Look for a crossed-out rule, a more specific selector, or an inherited value.
  5. Confirm the browser is displaying the file you edited. Compare local and published versions.
Describe the action before writing the code.

Write a plain sentence: “When this button is activated, add one visit and update the count.” That gives you an event, a value and a visible response. Test each part before adding another feature.

  • Values and variables: text, numbers and true/false values describe the current situation. Use meaningful names. const prevents reassignment; let allows it.
  • Functions: name a piece of behaviour you want to call again. Keep its purpose small enough to explain.
  • Conditions: if chooses a path based on a test. What happens when the condition is false?
  • Events: an event listener reacts to something such as a click or input. Native buttons already support keyboard activation.
  • The DOM: JavaScript can select elements in the document and update them. Check that the element exists before using it.
  • State and reset: decide what is remembered, for how long, and how someone can start again. A local variable, browser storage and a remote database are different choices.

Use textContent for plain text rather than interpreting someone's text as HTML. A working interaction should communicate its result, including when no change is possible. Think about the visitor who repeats the action, uses a keyboard, or returns after reloading. MDN's JavaScript learning material develops these skills step by step.

The button looks right but does nothing

Open the Console. Read the first relevant error and its file and line. Check that the script loaded, that the selector finds the intended element, and that the listener is attached. Use one temporary log to confirm whether the event fires, then inspect the value you expected to change. Remove temporary logs once you understand the result.

Decide what the movement tells someone.

A transition can show a change between states. A keyframe animation can describe a sequence. JavaScript can decide when a sequence starts or responds to an action. Choose the simplest method that expresses the idea.

Try a slow cycle and a fast cycle in the workbench. Does the movement suggest a living thing, a warning, a machine or a distraction? Duration, repetition and distance carry meaning. Keep important instructions readable while objects move.

  • Give continuous decorative motion a pause control. Avoid flashing effects.
  • Keep the full information and usable controls when movement is off.
  • Respect prefers-reduced-motion. Test the reduced version, rather than assuming an animation setting fixes every issue.
  • Use movement to communicate a response; do not rely on movement alone to communicate success or failure.

The hosts above use the lab’s original punched-card and tape-machine animations. The time machine offers the historical route. See MDN’s reduced-motion explanation for implementation details.

Spend less time hunting through files.

Learn a few commands you use every day. Shortcuts can differ with keyboard layout, operating system and custom keybindings; the Command Palette is another way to find them. VS Code is the editor, not Visual Studio.

Useful default shortcuts
ActionWindows / LinuxmacOS
Quick Open a fileCtrl P⌘ P
Command PaletteCtrl Shift P⌘ Shift P
Search the folderCtrl Shift F⌘ Shift F
Format documentShift Alt FShift Option F
Rename symbolF2F2
Quick FixCtrl .⌘ .
Select next matching textCtrl D⌘ D
Trigger suggestionsCtrl SpaceControl Space

Check the official keybindings and editing guide. Operating-system shortcuts can intercept a key combination.

A setup you can understand

  1. Open a folder. See the project's structure in Explorer. Avoid editing a second copy with the same filename by accident.
  2. Keep the browser beside the editor. Save, reload and observe. Know whether your preview updates automatically or needs a reload.
  3. Use formatting. Format Document makes nesting easier to inspect. Format on Save is optional. Formatting helps readability; it does not prove the code is correct.
  4. Use Problems as a starting point. Read the message and follow its location. Check the running page too; an editor cannot discover every runtime or design problem.
  5. Rename deliberately. Rename Symbol can update recognised references. Review the diff; a filename or a class inside a separate HTML file may still need attention.
  6. Search before replacing. Look through matches in the project. Limit the replacement to the files or selection you intend to change.
  7. Save tiny repeatable patterns. VS Code's user snippets can expand a pattern you understand. A project snippet file can keep the same caption or source-note structure within one project. Official snippet instructions explain setup.
  8. Keep extensions purposeful. Add one because it solves a problem you have. Know what changes your formatting, preview or code suggestions.

A reliable working loop

Write the next visible change in one sentence. Save the current version. Edit a small part. Run it. Check the intended path and an unexpected one. Review the diff and keep a version you can return to. Finish by naming the next step, not by leaving five half-understood changes together.

With Git, inspect Source Control changes and make a commit when a meaningful step works. Without Git, keep a dated backup outside the active project. Neither method replaces checking that your exported or published version actually opens.

VS Code itself feels slow

First separate editor delay from a slow website. If typing or opening files is slow, inspect the editor's running processes and extensions. VS Code provides Process Explorer and Extension Bisect to help isolate an extension problem. Change one thing and compare. See Microsoft's performance troubleshooting guide. Do not disable useful tools at random or expect an extension to fix a heavy web animation.

Turn a surprise into a question you can test.
  1. Describe the trigger. Which page, action and screen size produced the problem?
  2. Compare expectation and result. “I expected the count to become 1. It stayed 0.”
  3. Check the first useful error. Read the message, filename and line. Later errors may follow from the first failure.
  4. Check Network. Did the HTML, stylesheet, script and assets load? A 404 means a requested resource was not found.
  5. Inspect the smallest relevant part. Confirm the selected element or event, then the value and the result.
  6. Change one cause and retest. Save a working checkpoint. If the change fails, undo it and keep your observation.

When asking for help, bring the file, the exact message, what you tried, and one reproducible action. You do not need to pretend you understand a broken system. Explaining the uncertainty clearly is part of technical and academic work.

Measure what is slow before removing things.

A late first image, jerky movement and delayed typing can have different causes. Choose a particular action and device, observe the delay, then compare the same action after a change. Keep your artistic intention in view.

  • Loading: inspect Network for large images, video, missing files and unnecessary requests. Make image dimensions appropriate to their displayed use. Keep originals separately; export smaller versions for thumbnails.
  • Movement: record a short interaction in the browser's Performance panel. Look for time spent in script, layout and painting. Test a simpler version to isolate the expensive part.
  • Effects: compare costly-looking layers, full-screen blur, shadows and many moving objects individually. Keep the effect that serves the work, and measure its cost on a modest device.
  • Background work: avoid running needless repeated tasks. The Page Visibility API can tell your code when the page is hidden. Design a safe way to resume.
  • Repeatability: test the same page, action and conditions. One fast reload from a warm cache does not prove a first visit will be fast.

Use the Chrome Performance reference, its Rendering tools and MDN's Page Visibility guide as technical references. Keep a short before/after note rather than claiming a universal speed improvement.

Recognise generic output by examining its choices.

“AI slop” is a useful concern when a polished result avoids the particular idea, person or evidence it is supposed to represent. A font, colour or neat layout alone cannot tell you whether something was made with AI. Look at purpose, accuracy and working behaviour.

  • Copy: could this description fit almost any project? Replace a vague claim with the actual material, action or finding.
  • Visual decisions: do the repeated cards, effects and icons help this work, or simply fill space? Remove one and check whether anything meaningful is lost.
  • Interaction: follow every link and activate every control. A polished surface can conceal dead ends, fake state and inaccessible actions.
  • Code: can you explain the main rule? Look for duplicated handlers, unused styles, inconsistent names and dependencies nobody needed.
  • Evidence: open the reference. Does it exist, support the claim, and identify its author? Check dates, permissions and image credits.
  • Ownership of decisions: can you explain what you changed after a test and why? Keep a process record with specific observations.

During practice where AI is explicitly allowed, ask for a bounded explanation, inspect the proposed change and test its claims yourself. Follow the assessment rules at the beginning of this guide.

Try this critique with a partner: “The work seems to ask ____. This choice helps because ____. This part is unclear because ____. One test would be ____.” Talk about the work and the evidence, rather than guessing how someone made it.

Your choices can become something you can discuss.

Keep a small process note: intention, choice, test, observation and next step. An unsuccessful test is useful when you can show what it revealed. Choose a term or reading that helps explain the encounter you are building, then check that connection against the actual work.

The academic library connects genres, examples, research questions, source evaluation and Chicago author-date guidance. The final guide explains the creative work, text, walkthrough and submission route. Consult the official brief and Mitt UiB for assessment requirements and deadlines.

The history behind the imagined hosts

Ada Lovelace's 1843 notes on the proposed Analytical Engine explored how operations could work with symbols and included the Bernoulli-number procedure. Read her published notes and the Computer History Museum's account. Alan Turing's 1936 work described a mathematical model of computation; the Turing Digital Archive provides the paper and context.

The hosts' conversation and shared laboratory are fiction written for this teaching page. They are not quotations, a historical meeting, or claims that either person invented HTML, CSS or JavaScript. Use the history to ask better questions about today's tools.

Return to Friday's Future lab · All guides · Enter the time machine