<commit_before>## Welcome to GitHub Pages

You can use the [editor on GitHub](https://github.com/SamTebbs33/samtebbs33.github.io/edit/master/index.md) to maintain and preview the content for your website in Markdown files.

Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files.

### Markdown

Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for

```markdown
Syntax highlighted code block

# Header 1
## Header 2
### Header 3

- Bulleted
- List

1. Numbered
2. List

**Bold** and _Italic_ and `Code` text

[Link](url) and ![Image](src)
```

For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/).

### Jekyll Themes

Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/SamTebbs33/samtebbs33.github.io/settings). The name of this theme is saved in the Jekyll `_config.yml` configuration file.

### Support or Contact

Having trouble with Pages? Check out our [documentation](https://help.github.com/categories/github-pages-basics/) or [contact support](https://github.com/contact) and we’ll help you sort it out.<commit_msg>Add details about projects and me<commit_after>## Welcome

I am Sam and I'm a Computer Science MSci student at the University of Birmingham (graduating in June 2020) and I have an interest in CPU architecture, compilers and operating system development. Check out some of my projects below.

## Projects

### [Pluto](https://github.com/SamTebbs33/pluto)
I am writing a kernel in [Zig](https://ziglang.org) that targets x86. I will begin work on x86-64, arm and aarch64 backends some time in the future.

It aims to be built entirely from scratch (it will have its own text editor, shell and perhaps even version control system) except for the compiler, which will be a ported version of Zig.

![Pluto welcome screen](https://github.com/SamTebbs33/pluto/raw/develop/hello.jpg)

### [Fero CPU](https://github.com/SamTebbs33/fero-cpu)
I am designing and implementing an embedded CPU architecture using verilog. The aim is to design an architecture with hardware support for multitasking.

## Awesome things

### [Zig](https://ziglang.org)
Zig is an up and coming systems programming language that aims to compete with C. It was created by [andrewrk](https://github.com/andrewrk) and some of my favourite features include:

* **Cross-compilation**: Every build of the compiler supports every backend so you don't have to build a version specific to a certain architecture, and compiling for another platform is as simple as setting the *-target* flag.
* **Error handling made easy**: It's possible to return an error or a valid value, meaning you don't have to return awkward integer values when something goes wrong in your function. Errors can be defined, thrown, caught and handled simply and without pain.
* **Memory management**: Any part of the standard library that you don't pass a memory allocator to will never allocate any memory. This means that you can specialse your memory management policy to your application and that the standard library can be used in freestanding mode.
* **Optionals**: No more just-in-case null checking if you specify that something cannot be null. Unwrapping a possibly-null value is fully safety checked and made straightforward.
* **No undefined behaviour**: Any operation that would introduce undefined behaviour in C is safety checked, meaning it will be caught and reported at runtime. This can be disabled using the *release-small* or *release-fast* build modes.
* **Compile-time code execution**: Zig code can be run at compile-time, completely mitigating the need for a preprocessor. A great writeup about this is [here](https://kristoff.it/blog/what-is-zig-comptime/).
* **It is its own build system**: It provided a flexbile build system baked directly into the compiler, meaning you can write build scripts in Zig and use them to build your application.
* **Total C interoperability**: Zig can interoperate with C code with no messy bindings. It is also a C compiler!
{'fraction_non_alphanumeric': 0.07908404154863079, 'fraction_numerical': 0.007318224740321058, 'mean_word_length': 4.656875834445928, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 13, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4948323', 'n_tokens_mistral': 1149, 'n_tokens_neox': 1093, 'n_words': 576}