Compare commits
5 Commits
e4ab4f73d1
...
925ffd28b2
Author | SHA1 | Date | |
---|---|---|---|
925ffd28b2 | |||
930ddb648b | |||
3652c5220c | |||
433427e456 | |||
d434bf03f2 |
98
src/about.md
98
src/about.md
@ -1,19 +1,103 @@
|
||||
# hi! i'm dogeystamp.
|
||||
# about me
|
||||
|
||||
## about me
|
||||
|
||||
I'm a Canadian high school student with an interest in tech and libre software.
|
||||
**Hi! I'm dogeystamp.** I'm a Canadian high school student with an interest in tech and libre software.
|
||||
|
||||
## what i do
|
||||
|
||||
### competitive programming
|
||||
|
||||
I participate in some programming contests like the University of Waterloo's [CCC.](https://cemc.uwaterloo.ca/contests/computing.html)
|
||||
In 2021's contest, I got a score of 48/75 in the senior division. [Here's](https://cemc.uwaterloo.ca/contests/computing.html) a repo with my solutions.
|
||||
In 2021's contest, I got a score of 48/75 in the senior division. [Here's](https://github.com/dogeystamp/waterlooccc) a repo with my solutions.
|
||||
|
||||
### random projects
|
||||
### projects
|
||||
|
||||
There's a few miscellaneous projects I've done before, some of which have have articles in my blog.
|
||||
In my free time I do programming projects, some of which have have full articles in my blog.
|
||||
|
||||
#### [minrss](posts/minrss.html)
|
||||
|
||||
This is a minimal RSS/Atom feed reader I made using C. It relies mostly on libcurl for multi-threaded downloads of RSS feeds, and libxml2 for XML parsing.
|
||||
|
||||
The main feature of this program is that it represents feeds as folders with
|
||||
articles as files within them.
|
||||
|
||||
```
|
||||
rss
|
||||
|--news
|
||||
| |--article1
|
||||
| `--article2
|
||||
`--blog
|
||||
|--post
|
||||
`--other_post
|
||||
|
||||
```
|
||||
|
||||
This is similar to suckless.org's programs
|
||||
[ii](http://tools.suckless.org/ii/) and [sic](http://tools.suckless.org/sic/).
|
||||
As such, reading is done via other shell utilities.
|
||||
|
||||
#### suckless contributions
|
||||
|
||||
[suckless.org](http://suckless.org/) is an organisation dedicated to efficient, minimal, and high-quality software.
|
||||
|
||||
They allow patches to be sent in via a world-readable git server.
|
||||
|
||||
Although minor, I have uploaded a few patches to suckless.org for [dwm](http://dwm.suckless.org/), a window manager for X11. These are written in C.
|
||||
|
||||
- [rearrangebar](http://dwm.suckless.org/patches/rearrangebar/) places dwm's bar items in spots I liked more.
|
||||
- [blanktags](http://dwm.suckless.org/patches/blanktags/) makes dwm's tag list a series of neat geometric shapes, rather than a list of numbers.
|
||||
|
||||
excerpt from blanktags:
|
||||
|
||||
```
|
||||
@@ -716,11 +716,11 @@ drawbar(Monitor *m)
|
||||
}
|
||||
x = 0;
|
||||
for (i = 0; i < LENGTH(tags); i++) {
|
||||
- w = TEXTW(tags[i]);
|
||||
+ w = bh;
|
||||
drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]);
|
||||
- drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i);
|
||||
+ drw_text(drw, x, 0, bh, bh, 0, "", urg & 1 << i);
|
||||
if (occ & 1 << i)
|
||||
- drw_rect(drw, x + boxs, boxs, boxw, boxw,
|
||||
+ drw_rect(drw, x+boxw,boxw, w-boxw*2, w-boxw*2,
|
||||
m == selmon && selmon->sel && selmon->sel->tags & 1 << i,
|
||||
urg & 1 << i);
|
||||
x += w;
|
||||
--
|
||||
2.31.1
|
||||
```
|
||||
|
||||
My [gitea](../git/) instance hosts all my personal builds of [dwm](../git/dogeystamp/dwm), [st](../git/dogeystamp/st), and other suckless utilities. These include other people's patches, as well as my own modifications.
|
||||
|
||||
#### homeserver ansible playbook
|
||||
|
||||
This server is configured automatically using an [Ansible playbook.](../git/dogeystamp/homeserver-ansible)
|
||||
|
||||
After flashing the device with Arch Linux ARM, Ansible takes over. This includes bootstrapping Python and configuring network settings.
|
||||
Users, groups and permissions are also handled.
|
||||
|
||||
Here's a brief summary of services installed:
|
||||
|
||||
- Gitea
|
||||
- Matrix Synapse
|
||||
- Nginx webserver
|
||||
- MediaWiki farm
|
||||
- Firewall
|
||||
|
||||
For a more extensive list, check the README file.
|
||||
|
||||
#### python
|
||||
|
||||
I have some experience using Python too, mostly for small scripts. Here's some of them:
|
||||
|
||||
- [cdn](../git/dogeystamp/cdn): Small file upload service made in Python/Flask
|
||||
I wrote this as part of the BrebeufHx 2022 hackathon. This is a component of a chat application.
|
||||
|
||||
- [dwg](../git/dogeystamp/dwg): Convert coordinates to and from words. By default, using the regular Diceware dictionary,
|
||||
it can get to around meter precision using 4 words.
|
||||
|
||||
- [calendar-tool](../git/dogeystamp/calendar-tool): Generates a .csv file calendar for my school schedule. Because it is a 6-day cycle, weekly recurring events would have to be changed very often, and as such I wanted to make this tool.
|
||||
|
||||
### art
|
||||
|
||||
|
@ -13,7 +13,7 @@ a {
|
||||
}
|
||||
|
||||
p, pre {
|
||||
margin-left: 2%;
|
||||
margin-left: 3%;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4 {
|
||||
@ -26,7 +26,11 @@ h1, h2 {
|
||||
font-size: 175%;
|
||||
}
|
||||
|
||||
h3, h4 {
|
||||
h1 {
|
||||
font-size: 200%;
|
||||
}
|
||||
|
||||
h2, h3, h4, h5, h6 {
|
||||
margin-left: 1%;
|
||||
}
|
||||
|
||||
@ -39,7 +43,7 @@ img {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
pre, p > code {
|
||||
pre, p > code, li > code {
|
||||
font-size: 1.5vmin;
|
||||
font-family: JetBrainsMono, monospace;
|
||||
background: #090909;
|
||||
@ -85,10 +89,15 @@ footer {
|
||||
color: #cccccc;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-left: 5%;
|
||||
list-style-type: square;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.articles {
|
||||
list-style-type: none;
|
||||
margin-left: 2%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.articles li {
|
||||
|
14
src/index.md
14
src/index.md
@ -1,20 +1,12 @@
|
||||
# welcome to my website!
|
||||
## welcome to my website!
|
||||
|
||||
This is a place where I host random services and pages.
|
||||
This is a place where I host some services and a blog.
|
||||
For more info about me, including contact info, check out [my about page.](about.html)
|
||||
|
||||
## services
|
||||
|
||||
### [gitea](../git/)
|
||||
|
||||
Local git server, along with frontend.
|
||||
|
||||
### [rockwell wiki](../rw/) (private)
|
||||
|
||||
MediaWiki for friends only.
|
||||
|
||||
### [bepp wiki](../wiki/) (private)
|
||||
|
||||
Another MediaWiki, also private.
|
||||
Local git server, along with frontend. This hosts the majority of the projects I have done in the past.
|
||||
|
||||
## blog articles
|
||||
|
107
src/posts/minrss.md
Normal file
107
src/posts/minrss.md
Normal file
@ -0,0 +1,107 @@
|
||||
<!--- date: 2022-03-26 --->
|
||||
|
||||
<!--- title: feed reader --->
|
||||
|
||||
# minrss
|
||||
|
||||
I used to have [newsboat](https://newsboat.org/) as an RSS/Atom feed reader. However, I was looking for a project to do so I made a replacement.
|
||||
|
||||
minrss is intended to be minimal and small.
|
||||
|
||||
It pulls a lot of inspiration from suckless.org's projects like their IRC clients ii and sic too. A structure similar to these projects is used. Each feed is represented as a folder, and each article as files.
|
||||
|
||||
```
|
||||
rss
|
||||
|--news
|
||||
| |--article1
|
||||
| `--article2
|
||||
`--blog
|
||||
|--post
|
||||
`--other_post
|
||||
```
|
||||
## usage
|
||||
|
||||
minrss will inform the user about new articles. If another action should be done for each article, it can be easily patched in, like any suckless software.
|
||||
|
||||
```
|
||||
$ cd ~/dox/rss
|
||||
$ minrss
|
||||
|
||||
Finished downloads.
|
||||
2 new articles for feed news.
|
||||
2 new articles for feed blog.
|
||||
Finished parsing feeds.
|
||||
|
||||
```
|
||||
|
||||
After being run, there will be a folder for each feed.
|
||||
|
||||
```
|
||||
$ ls
|
||||
news blog
|
||||
```
|
||||
|
||||
I personally use basic shell utilities to list off the new articles.
|
||||
|
||||
```
|
||||
$ ls -t news/ | head -n 2
|
||||
|
||||
article1.html
|
||||
article2.html
|
||||
|
||||
```
|
||||
Since articles are saved as HTML, I then have w3m parse them. minrss will also provide a link to the original site by default, in case the feed only has summaries of articles.
|
||||
|
||||
```
|
||||
$ w3m news/article1.html
|
||||
|
||||
article1
|
||||
|
||||
|
||||
Link
|
||||
|
||||
Loren ipsum dolor sit amet...
|
||||
```
|
||||
Obviously, all this extra work could be condensed into aliases, or patched into the program.
|
||||
|
||||
## installation
|
||||
|
||||
The installation of minrss is similar to suckless software like dwm or st.
|
||||
|
||||
- Clone the repo.
|
||||
|
||||
```
|
||||
$ git clone https://d.nerdpol.ovh/git/dogeystamp/minrss
|
||||
$ cd minrss
|
||||
```
|
||||
|
||||
- Copy `config.def.h` to `config.h`.
|
||||
|
||||
```
|
||||
$ cp config.def.h config.h
|
||||
```
|
||||
|
||||
- Edit config.h to add your RSS feeds.
|
||||
|
||||
```
|
||||
static const linkStruct links[] = {
|
||||
{
|
||||
.url = "https://news.org/rss/",
|
||||
.feedName = "news",
|
||||
},
|
||||
{
|
||||
.url = "https://blog.com/rss/",
|
||||
.feedName = "blog",
|
||||
},
|
||||
};
|
||||
```
|
||||
|
||||
- Compile and install the resulting binary.
|
||||
|
||||
Do note that `$PREFIX` is set to `~/.local/bin` in the Makefile because the feed list is generally personal.
|
||||
If you need to install minrss system-wide for whatever reason, change `$PREFIX` to `/usr`.
|
||||
|
||||
```
|
||||
$ make
|
||||
$ make install
|
||||
```
|
11
src/priv.md
Normal file
11
src/priv.md
Normal file
@ -0,0 +1,11 @@
|
||||
# private services
|
||||
|
||||
Other than the services listed on the index page, here are some reserved for friends only.
|
||||
|
||||
### [rockwell wiki](../rw/)
|
||||
|
||||
Rockwell Mansion canon wiki
|
||||
|
||||
### [bepp wiki](../wiki/) (private)
|
||||
|
||||
Bepp satire wiki
|
Loading…
x
Reference in New Issue
Block a user