BufferedReader r = new BufferedReader(new FileReader(fileName));
# First evarrr website
                "title": "Toggle Semicolons"
// (because it's the percentage of the total length), and within every set a delay is applied to make
                                               .then((user: User) => authorTickets = user.ticketIds.length));
  switch (commonFeature) {
import objects from '../assets/objects';
			}
	return {
    "scripts": {
}
  if (authorTickets === null || ticketComments === null || avgPrice === null) {
![icon technology-icon icon-dark](javascript.png "JavaScript")
const speed = 2;
  if (risk > 95) return 95;
      return _.merge(state, action.abouts)
  await Promise.all(queries)
		newImg = document.createElement("img");
	
	}
			</div>
		this.props.login(data.email, data.password)
		return (
    return goldRequired;
![icon technology-icon icon-dark](redux.png "Redux")
	private String message;
	 * Default constructor, creates the default map "Very small Labyrinth of doom".
![icon technology-icon icon-dark](grasshopper.png "Grasshopper")
// the spheres follow after one another and then also some "randomness" to make the whole thing feel more organic.
    },
    return mapName;
	private char[][] map;
  /**
function getAveragePrice(tickets: Ticket[]): number {
	 * 
	
import {ABOUT_TEXTS_FETCHED} from '../actions/abouts';
      return state;
}
![icon technology-icon icon-dark](css.png "CSS")

function fraudRiskAlgorithm(ticketsOfAuthor: number, averagePrice: number, price: number, createdAt: string, commentCount: number): number {
			else {
      is.close();
    default:
	 */
// Could also do all this fetching of data via a single QueryBuilder that embeds everything in the ticket
			let ownCounter = (counters[j] - spaceBetweenSheres * k - 0.1 * j - 0.5 * (j % 2)) % 1;
	/**
	 * @param The filename of the map file.
   * @param The filename of the map file.
const hrefSet = ["https://www.facebook.com/jiri.swen", "", "", "https://nl.linkedin.com/in/jiriswen", "", ""];
![icon technology-icon icon-dark](photoshop.png "Adobe Photoshop")
![icon technology-icon icon-dark](postgres.png "PostgreSQL")
  return tickets
			<Redirect to="/" />

  protected int getGoldRequired() {
		mapName = r.readLine().replace("name ", "");
const sphereOrders = [[3,5,2,1,4,0],[0,1,2,3,4,5],[1,4,0,2,5,3],[5,4,1,2,0,3],[1,2,4,3,0,5],[2,5,4,1,0,3],[3,4,0,5,2,1]]
import java.util.ArrayList;
import { NotFoundError, BadRequestError } from 'routing-controllers';
      const authorTickets = await User.findOne({id: tickets[0].authorId})
			iconSets[j][i].style.transform = "translate(" + (svg[j].getPointAtLength(ownCounter * svgLengths[j]).x -15) * 0.10 + "vw, " + (svg[j].getPointAtLength(ownCounter * svgLengths[j]).y -15) * 0.08 + "vh)";
	}
  }
		map = new char[lineNumber][];
    "publisher": "jirin",
		goldRequired = Integer.parseInt(r.readLine().replace("win ", ""));
class LoginPage extends PureComponent {
        "@types/mocha": "^2.2.42",
	 * @return The height and width of the map stored together in an array.
  /**
	private String mapName;
 * @see {@link GameLogic.java}
		// First reads in the map name and amount of required gold
  const priceRisk: number = ((averagePrice - price) / averagePrice) * 100;
	/**
		int lineNumber = countLines(fileName) - 2;
  }
 */
    InputStream is = new BufferedInputStream(new FileInputStream(fileName));
   * @return The name of the current map.
      return Promise.all(tickets.map(async ticket => await updateFraudRisk(ticket)));
export async function updateFraudRisk(ticket: Ticket, avgPriceInherit?: number, authorTicketsInherit?: number): Promise<Ticket> {
                                            .then(tickets => avgPrice = getAveragePrice(tickets)) );

		if (counters[j] % 1 < (increments[j] + 0.00001)) {
const svgLengths = [];
}
function move() {
import _ from 'lodash';
        "@types/node": "^8.10.25",
# Technologic
![icon technology-icon icon-light](net.png ".NET")
		return new int[] {map.length, map[0].length};
![icon technology-icon icon-dark](nodejs.png "NodeJS")

import {Redirect} from 'react-router-dom'
	 */
		{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},
For the Codaisseur Code Academy, we were asked to make a web page introducing ourselves. This is what I came up with.  
  "start_url": ".",
		map[coordinates[0]][coordinates[1]] = '.';
### Programming-like technologies
	for (let i = 0; i < 6; i++) {
		mapName = "Very small Labyrinth of Doom";
        ]
import {connect} from 'react-redux'
}
![icon technology-icon icon-dark](git.png "git")


    } 
		System.err.println(message);
	/**
public class MathException extends Exception {
    },
        for (int i = 0; i < readChars; ++i) {
	public MathException(String message) {
   * @throws Exception : Thrown if map is not rectangular.
      while ((readChars = is.read(c)) != -1) {

![icon technology-icon icon-light](graphql.png "GraphQL")
		currentUser: state.currentUser,
   */
		{'#','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#'},
}
  }
	protected void removeItemAtCoordinate(int[] coordinates) {
// Preparatory work: lots of copies of the social media spheres are created and put in a 2D array for 
}
	iconSets.push(newIconSet);
import java.io.InputStream;
 * @release 15/12/2017
![icon technology-icon icon-dark](react.png "React.js")
      int count = 1; // I changed this from 0 to 1 because it was counting one too few lines for some reason
		newA.appendChild(newImg);
	}
   * @param The filename of the map file to count the lines of.
  let avgPrice = avgPriceInherit || null;
	 *
  let risk = 0;
   */
        "onCommand:extension.toggleSemicolons"
	}
{
        "vscode-test": "^1.6.1"
  ticket.fraudRisk = fraudRiskAlgorithm(authorTickets, avgPrice, ticket.price, ticket.createdAt!, ticketComments);
[Click here to see it in action](https://modest-ritchie-26c33d.netlify.com)
			// Checks if all lines have the same length
	 * @param Coordinates to replace with an 'empty' slot.
let icons = document.getElementsByClassName("icon");
		});
// Constants to impact flow of spheres
 * @version 3.0
}
  }
// lengths of the SVG curves and the corresponding amount to increment their counters with

}
   * Super quick line counter by martinus:
![icon technology-icon icon-dark](rhino.png "Rhino")
    ],
import {login} from '../../actions/users'
}
}
Though I wanted to make it spiffy and responsive, but then the whole thing started to die slowly as some small glitchings caused the whole page to look like crap  ¯\\\_(ツ)\_/¯
   * @throws IOException : The usual IOException from a BufferedReader.
			}

            {
    ],
![icon technology-icon icon-light](illustrator.png "Adobe Illustrator")
		newA.href = hrefSet[i];
  const queries: Promise<number>[] = [];
		readMap(fileName);
  "theme_color": "#000000",
	 */
				<LoginForm onSubmit={this.handleSubmit} />

    return map;
import java.util.List;
  "short_name": "React App",
	// Gold required for the human player to win
![icon technology-icon icon-light](unreal.png "Unreal Engine")
		return map[coordinates[0]][coordinates[1]];
		sphereOrders[currentSphereOrders[j]].forEach(function(i) {
  ],
		r.close();
        "test": "yarn run compile && node ./node_modules/vscode/bin/test"
          .reduce((sum, price) => sum + price)
		{'#','.','.','E','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#'},
import LoginForm from './LoginForm'
				currentSphereOrders[j]++;				
import Ticket from './tickets/entity';
          }
	 */
    "dependencies": {}
    "name": "semicolon-spammer",
      "src": "favicon.ico",
		)
export default function reducer(state=objects, action={}) {
        "commands": [
 *
        "vscode:prepublish": "yarn run compile",
		}
            ++count;
    "activationEvents": [
const spaceBetweenSheres = 0.07;
	protected int countLines(String fileName) throws IOException {
  let ticketComments: number = ticket.commentIds.length || 0;
### Creative Software
  protected String getMapName() {
  if (ticket.fraudRisk === oldFraudRisk) return ticket;
![icon technology-icon icon-dark](sketchup.png "SketchUp")
	}
export default connect(mapStateToProps, {login})(LoginPage)
import java.util.Arrays;
	}
/**
    }
let svg = canvas.getElementsByTagName("path");
		newImg.src = icons[i].src;
      "sizes": "64x64 32x32 24x24 16x16",
      return Promise.all(tickets.map(async ticket => await updateFraudRisk(ticket, undefined, authorTickets)));
	 * Removes item stored at specified coordinates.
	public Map(String fileName) throws Exception {
   *
    },
      }
        "@types/vscode": "^1.66.0",
        "watch": "tsc -watch -p ./",
	// Map name
            }
	public Map() {
  return ticket.save();
 * @author Jiri Swen
		newImg.className = "moving-icon";
Ordered by how high my intuition wants them to be on the list; convenient!
// Every set of 6 spheres has its own counter which increases more rapidly for shorter paths 
	protected char getItemAtCoordinate(int[] coordinates) {
      return (count == 0 && !empty) ? 1 : count;
        "Other"
    "displayName": ";;;;;;;;",
	private int goldRequired;
		counters[j] += increments[j];
          / tickets.length;
// Each set also cycles through a series of "orders of the spheres" for every time they start their animation.
  return risk;
	}
	 * Constructor that accepts a map to read in from.
		{'#','.','.','.','.','.','.','.','.','.','.','.','G','.','.','.','.','.','.','#'},
![icon technology-icon icon-middle](sql.png "SQL")
import java.io.FileReader;
I went with a *certain* aesthetic. Hahah. Not too unsatisfied with how it came out.  
   */
  risk += timeDuringBusinessHours(createdAt) ? -10 : 10;

    error: state.login.error
for (let j = 0; j < svg.length; j++) {
   * @return The map as stored in memory.
			if (currentSphereOrders[j] !== 6) {
	}
    case ABOUT_TEXTS_FETCHED:
          if (c[i] == '\n') {
	for (let j = 0; j < iconSets.length; j++) {
  if (!avgPriceInherit) queries.push( Ticket.find({relations: ['event'], where: {event: {id: ticket.eventId}}})
    "devDependencies": {
   * @return The item stored at specified coordinates.
  const oldFraudRisk: number|undefined = ticket.fraudRisk;
    default:
   * @return The number of lines.
  if (!tickets[0]) return;
	requestAnimationFrame(move); // A function calling itself 60 times per second, yeah that's definitely a good idea

   * @return Gold required to exit the current map.
  if (!authorTicketsInherit) queries.push( User.findOne({id: ticket.authorId})
  if (risk < 5) return 5;
    },
			if (map[i].length != map[0].length) {
   * @param The coordinates to get the character at as stored in the map.
   * @throws The usual IOException from a BufferedReader.

  protected char[][] getMap() {
	}
  switch (action.type) {
		{'#','.','.','.','.','.','.','G','.','.','.','.','.','.','.','.','.','E','.','#'},

import React, {PureComponent} from 'react'
		for (int i = 0; i < lineNumber; ++i) {
		newA.target = "_blank";
		newA = document.createElement("a");
### 3D software
          <span style={{color:'red'}}>{this.props.error}</span> }
public class Map {
		if (this.props.currentUser) return (
let newImgContainer = document.getElementById("new-icons");
   */
			}
  /** 
      int readChars = 0;
}
		newA.style.position = "absolute";
![icon technology-icon icon-light](csharp.png "C#")
}
			<div>
![icon technology-icon icon-dark](typescript.png "TypeScript")
![icon technology-icon icon-light](figma.png "Figma")
		let k = 0;
		newImgContainer.appendChild(newA);
    case 'author':
          .catch(e => {throw new BadRequestError(e)});
		{'#','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#'},
}
        "eslint": "^8.12.0",

  protected void readMap(String fileName) throws IOException, Exception {
import java.io.FileInputStream;

  /**
![icon technology-icon icon-dark](java.png "Java")
    throw new NotFoundError('Cannot find certain information related to the ticket you are trying to update');
		goldRequired = 2;
const mapStateToProps = function (state) {
			k++;
    "categories": [
  
  risk += ((priceRisk > -10) ? priceRisk : -10);
	
      "type": "image/x-icon"

	render() {
      byte[] c = new byte[1024];
let canvas = document.getElementById("icon-jumble");
import java.io.IOException;
import java.io.BufferedInputStream;
 * Reads and contains in memory the map and specifications of the game.
        { this.props.error && 
  const hour = new Date(time).getHours();
function timeDuringBusinessHours(time: string): boolean {
		map = new char[][] {
				throw new Exception("\nYour chosen map appears to not be rectangular.");
  "name": "Create React App Sample",
  let authorTickets = authorTicketsInherit || null;
	let newIconSet = []
		{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'}
	handleSubmit = (data) => {
  "display": "standalone",
	// Representation of the map
    "version": "1.2.9",
  return hour >= 9 && hour < 17;
      return Promise.all(tickets.map(async ticket => await updateFraudRisk(ticket, avgPrice)));
		)
	 * @throws Exceptions thrown by {@link readMap}
import java.io.BufferedReader;
export async function updateFraudRisks(tickets: Ticket[], commonFeature: 'event'|'author'): Promise<Ticket[]|void> {
	svgLengths.push(svg[j].getTotalLength());
				currentSphereOrders[j] = 0;
	/**
![icon technology-icon icon-middle](sass.png "SCSS")
// the animation-action that's about to follow, and also an array of all the 
![icon technology-icon icon-dark](html.png "HTML")
  if (commentCount > 3) risk += 5;
        empty = false;
{
![icon technology-icon icon-middle](indesign.png "Adobe Indesign")
	}
		{'#','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#'},
        "@typescript-eslint/eslint-plugin": "^5.17.0",
    "main": "./out/extension",
   * Reads the map from a file using a BufferedReader and sets the appropriate parameters.
      boolean empty = true;
These are some technologies that I use / like to use / can use / want to use more etc.  
        }
   * https://stackoverflow.com/questions/453018/number-of-lines-in-a-file-in-java
          .map(ticket => Number(ticket.price))
	}
  if (ticketsOfAuthor <= 1) risk += 10;
		newIconSet.push(newA);
        "compile": "tsc -p ./",
import User from './users/entity';
    }
                                      .then((user: User) => user.ticketIds.length);
        "@typescript-eslint/parser": "^5.17.0",
    "repository": "https://github.com/Shirijii/semicolon-spammer",
        "typescript": "^4.6.0",
   */
}
![icon technology-icon icon-light](ruby.png "Ruby")
    try {
			map[i] = r.readLine().toCharArray();
const iconSets = [];
const counters = [2,2,2,2,2,2,2,2,2,2];
        "vscode": "^1.32.0"
		super(message);
  "icons": [
![icon technology-icon icon-light](c.png "C")
		};


	public MathException() {}
  }
  "background_color": "#ffffff"
    "description": "Gives access to a command that adds/removes semicolons at the end of the current line or of all currently selected lines;",
const increments = [];
requestAnimationFrame(move);
	protected int[] getMapSize() {
                "command": "extension.toggleSemicolons",
		}
	}
  }
    {
    finally {
    "contributes": {
![icon technology-icon icon-middle](python.png "Python")
	increments.push(1 / svgLengths[j] * speed);
		{'#','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#'},
	}
/**
I did remove most of the social media links for privacy reasons.
      const avgPrice = await Ticket.find({relations: ['event'], where: {event: {id: tickets[0].eventId}}})
    case 'event':

   */
				<h1>Login</h1>
                                   .then(getAveragePrice);
    "engines": {
	/**
const currentSphereOrders = [0,1,2,3,4,5,6,0,1,2];
   *
shining effectsunraysfloating head

ABOUT

landscape 1awards-cupfuture-buildinghobby-heap
jiri soul containerjiri soul pupils
octopus-treespiral-towertechnology-forest
bookbookbookbookbookbookbookbookbookbookbook
contact-details
wazeba-white
technology icontech cloud cloud
osu! db manipulator