Friday, August 21, 2015
Tiramisu recipe so I don't forget it
It needs modifications: more alcohol, stronger coffee, lactic acid instead of vinegar (1/4TSP) biscuits are arnotts nice, fold in Tofutti cream cheese for thicker cream.
Vegan Tiramisu
1 Cup AF
1 Cup caster sugar
1/2 teaspoon apple cider vinegar
1/2 teaspoon cream of tarter
1/2 teaspoon cornflour
1 teaspoon vanilla bean paste
2 Cups fresh Italian espresso
4 Teaspoons of Marsala
2 x 250gm of vegan sweet biscuits (I used Arnotts nice, but any vegan shortbread or lady finger will work)
4 Teaspoons raw cacao
1. Whip AF until really firm, add all ingredients except sugar and vanilla. Continue whipping adding tablespoon by tablespoon of sugar until mixture is glossy and sugar is fully dissolved, fold through vanilla bean paste, this is the AF cream. Refrigerate.
2. Freshly brew coffee and pour into shallow dish, combine with Marsala.
3. There are three layers of biscuits and three layers of AF cream.
The bottom layer is biscuits dunked quickly (at least 3 seconds) into the coffee mix. Followed by a layer of AF cream and so on. The top layer will be AF cream.
4. Dust with cacao powder and refrigerate for 1 hour.
Wednesday, December 7, 2011
Some C because I'm bored
So it was C programming day in IRC. I wrote a linked list:
And here is the code to use it:
#ifndef _LIST
#define _LIST
// List of things
#include
#include
#define null NULL
typedef struct Node Node;
typedef struct List List;
struct Node{
// A node in the list
Node* next;
Node* prev;
void* val;
};
struct List {
// A list, has a front and an end
// Maintains a pointer into the list
Node* current;
Node* front;
Node* end;
size_t size;
};
Node* append(List *list, void* val) {
// Adds an element to the end of the list
Node* new = malloc(sizeof(Node));
list->end->prev->next = new;
new->val = val;
new->next = list->end;
new->prev = list->end->prev;
list->end->prev = new;
list->size++;
return new;
}
Node* preprend(List* list, void* val) {
// Adds an element before the list
Node* new = malloc(sizeof(Node));
list->front->next->prev = new;
new->val = val;
new->prev = list->front;
new->next = list->front->next;
list->front->next = new;
list->size++;
return new;
}
Node* insert_after_current(List* list, void* val) {
Node* new = malloc(sizeof(Node));
new->val = val;
new->next = list->current->next;
new->prev = list->current;
list->current->next->prev = new;
list->current->next = new;
return new;
}
List* delete_current(List* list) {
// Removes the current node in the list
Node* t1 = list->current->prev;
Node* t2 = list->current->next;
free(list->current);
t1->next = t2;
t2->prev = t1;
list->size--;
return list;
}
void* pop(List* list) {
// Pops the element off the end of the list
void* x = list->end->val;
Node* temp = list->end->prev;
free(list->end);
list->end = temp;
list->size--;
return x;
}
Node* get_val(List* list) {
// Returns the current node
if(list->current->val == NULL)
list->current = list->current->next;
return list->current;
}
int is_front(List* list) {
// Tests if current is at front of list
return (list->current->prev == list->front);
}
int is_end(List* list) {
// Tests if current is at end of list
return (list->current->next == list->end);
}
Node* to_front(List* list) {
// Set current to front of list
return (list->current = list->front);
}
Node* to_end(List* list) {
// For reverse iteration
return (list->current = list->end);
}
Node* next(List* list) {
// Increments pointer to next value in list
// will not go off end of list
if(list->current->next)
list->current = list->current->next;
return list->current;
}
Node* prev(List* list) {
// Set pointer to previous value in list
// will not go off end of list
if(list->current->prev)
list->current = list->current->prev;
return list->current;
}
size_t count(List* list) {
return list->size;
}
List* init_list() {
List* list = malloc(sizeof(List));
list->size = 0;
list->front = malloc(sizeof(Node));
list->end = malloc(sizeof(Node));
int x = 0;
list->front->val = list->end->val = NULL;
list->front->prev = NULL;
list->front->next = list->end;
list->end->next = NULL;
list->end->prev = list->front;
list->current = list->front;
return list;
}
#endif
And here is the code to use it:
#include "list.c"
#include
#include
int main() {
List* l = init_list();
int nums[] = {1,2,3,4,5,5,6};
int i;
for(i = 0;i < 7;i++) {
printf("Adding to list: %d\n",nums[i]);
append(l,(void*) &(nums[i]));
}
printf("List size: %d\n",count(l));
while(!is_end(l)) {
next(l);
printf("%d\n",*(int*)(get_val(l)->val));
}
return 0;
}
Sunday, September 18, 2011
How computers work
After discussing this stuff for the 3rd time in IRC, here is my introduction to how computers/programming work at a basic level. (please comment any glaring errors).
There are particles called electrons which move through wires as a charge
There are other things that can be placed along wires like capacitors, diodes resistors etc.
we won't cover how these work, but just take it that they do things that change the properties of the circuit formed
you can place these things in orders to make a gate
this takes 1 or more electrical currents as input
and outputs another signal (or lack thereof)
a signal is a high voltage (1), or low voltage (0)
eg
a not gate reverses the input
not 0 => 1
and 1 1 = 1
nand = not and
with this nand gate, you can make any other gate
you can arrange these gates into a thing called a flip-flop
http://en.wikipedia.org/wiki/Flip-flop_(electronics)
which when a signal is passed through, changes output between 0 and 1
this effectively allows us to store information in an electric circuit
your computer is made up billions of these flip flops
so, using Boolean logic (the logic associated with gates) you can essentially make any program into an electric circuit
obviously for anything greater than something that computes addition you need something to handle this
so we have a cpu
this takes input as a signal, and performs operations on things called registers, these registers store information in bits
a bit is a single 0 or 1, and come in groups of 8,16,32 or 64. Thus we have so-called '32 bit computers'
the cpu can perform a range of operations on these registers, such as addition, logical and, logical not etc.
you run long streams of high/low voltages into the CPU and this causes it to perform the aforementioned operations
you probably don't want to have to do this again and again
so we have a thing called memory
which is also gates that store data in bits
this data constitutes programs
data travels between memory and the cpu registers via the bus
memory, requires a constant electric current to keep the data in memory (like we discussed in flip-flops)
this is why your computer cannot run without an electric current going through it. It needs that current to keep a collection of programs called the operating system in memory
obviously, we need to store these programs someplace when the computer has no current through it, this is called permanent storage, and is usually a hard disk drive, or tape drive
so we load our programs from the non-volatile storage (hard drives etc.)
into volatile storage (memory, registers)
we could write all our programs as a sequence of 1's and 0's
this sequence of 1 and 0's is called machine code, but is time consuming and non-intuitive to write
So we have another language called assembly, which is basically synonyms for the primitive CPU operations like and, not, xor move etc
This language is then "assembled" into machine code by an assembler
Assembler is slightly more convenient than machine code because of the synonyms
but, it's still pretty bad
so, when computers were still new, people recognized this and decided to make programming languages that can be compiled (converting from language into another, eventually down to machine code)
on the one hand people wanted to use the logic set out by Church, Turing et al
thus the language Lisp was born
http://en.wikipedia.org/wiki/Lisp_(programming_language)
on the other hand
people wanted a language that followed more closely to how a computer operates
thus imperative languages like Fortran where born
http://en.wikipedia.org/wiki/Fortran
people thought they could do better so more and more languages where born to express these programs.
this is why we use high level languages
in the end
everything runs as a high and low voltage going through a cpu
---------------------------------------------------------------------------------------
The motivation for high level languages such as c/c++/java/fortran/python
There are 4 main paradigms in programming
imperative, this follows along with the way in which a computer processes data, step by step, one at a time
eventually, all programs are compiled into something that follows this idea
Object oriented
Is useful (questionably) for large projects where code needs to be managed. It centres around interacting objects. An object is an instance of a class (like a blueprint). Classes can be based off other classes etc, but eventually this too is reduced to imperative machine code.
examples are Java/Python etc.
functional programming is more function oriented
wherein, there are inputs, functions which process this input and an output is produced
examples are Haskell, lisp, scheme, F# etc.
These languages are useful because it is easier to reason about them and their correctness
since they are so close to math, you can basically translate a complex mathematical algorithm straight into a runnable program
these are useful in things like data processing and scientific computing and maths dickery
declarativelanguages are ones where you ask a question, and an answer is returned that (hopefully) solves that problem
these are useful in databases and logic problems, such as constraint satisfaction problems
http://en.wikipedia.org/wiki/Constraint_satisfaction_problem
There are particles called electrons which move through wires as a charge
There are other things that can be placed along wires like capacitors, diodes resistors etc.
we won't cover how these work, but just take it that they do things that change the properties of the circuit formed
you can place these things in orders to make a gate
this takes 1 or more electrical currents as input
and outputs another signal (or lack thereof)
a signal is a high voltage (1), or low voltage (0)
eg
a not gate reverses the input
not 0 => 1
and 1 1 = 1
nand = not and
with this nand gate, you can make any other gate
you can arrange these gates into a thing called a flip-flop
http://en.wikipedia.org/wiki/Flip-flop_(electronics)
which when a signal is passed through, changes output between 0 and 1
this effectively allows us to store information in an electric circuit
your computer is made up billions of these flip flops
so, using Boolean logic (the logic associated with gates) you can essentially make any program into an electric circuit
obviously for anything greater than something that computes addition you need something to handle this
so we have a cpu
this takes input as a signal, and performs operations on things called registers, these registers store information in bits
a bit is a single 0 or 1, and come in groups of 8,16,32 or 64. Thus we have so-called '32 bit computers'
the cpu can perform a range of operations on these registers, such as addition, logical and, logical not etc.
you run long streams of high/low voltages into the CPU and this causes it to perform the aforementioned operations
you probably don't want to have to do this again and again
so we have a thing called memory
which is also gates that store data in bits
this data constitutes programs
data travels between memory and the cpu registers via the bus
memory, requires a constant electric current to keep the data in memory (like we discussed in flip-flops)
this is why your computer cannot run without an electric current going through it. It needs that current to keep a collection of programs called the operating system in memory
obviously, we need to store these programs someplace when the computer has no current through it, this is called permanent storage, and is usually a hard disk drive, or tape drive
so we load our programs from the non-volatile storage (hard drives etc.)
into volatile storage (memory, registers)
we could write all our programs as a sequence of 1's and 0's
this sequence of 1 and 0's is called machine code, but is time consuming and non-intuitive to write
So we have another language called assembly, which is basically synonyms for the primitive CPU operations like and, not, xor move etc
This language is then "assembled" into machine code by an assembler
Assembler is slightly more convenient than machine code because of the synonyms
but, it's still pretty bad
so, when computers were still new, people recognized this and decided to make programming languages that can be compiled (converting from language into another, eventually down to machine code)
on the one hand people wanted to use the logic set out by Church, Turing et al
thus the language Lisp was born
http://en.wikipedia.org/wiki/Lisp_(programming_language)
on the other hand
people wanted a language that followed more closely to how a computer operates
thus imperative languages like Fortran where born
http://en.wikipedia.org/wiki/Fortran
people thought they could do better so more and more languages where born to express these programs.
this is why we use high level languages
in the end
everything runs as a high and low voltage going through a cpu
---------------------------------------------------------------------------------------
The motivation for high level languages such as c/c++/java/fortran/python
There are 4 main paradigms in programming
imperative, this follows along with the way in which a computer processes data, step by step, one at a time
eventually, all programs are compiled into something that follows this idea
Object oriented
Is useful (questionably) for large projects where code needs to be managed. It centres around interacting objects. An object is an instance of a class (like a blueprint). Classes can be based off other classes etc, but eventually this too is reduced to imperative machine code.
examples are Java/Python etc.
functional programming is more function oriented
wherein, there are inputs, functions which process this input and an output is produced
examples are Haskell, lisp, scheme, F# etc.
These languages are useful because it is easier to reason about them and their correctness
since they are so close to math, you can basically translate a complex mathematical algorithm straight into a runnable program
these are useful in things like data processing and scientific computing and maths dickery
declarativelanguages are ones where you ask a question, and an answer is returned that (hopefully) solves that problem
these are useful in databases and logic problems, such as constraint satisfaction problems
http://en.wikipedia.org/wiki/Constraint_satisfaction_problem
Saturday, August 6, 2011
More programming
Seeing as I haven't posted here in a while. Here is the latest update on my world of programmen:
C++: was the language required for my previous programming topic. Initial thoughts:
- this is better than Java
- templates are just macros
- STL is pretty neat
-
Java: required language for my current programming topic:
- still as overly verbose
- simple and easy to usehttp://www.blogger.com/img/blank.gif
- The amount of included resources is huge, you'd never get around to learning all of them
Python: just for fun, scripting, and bots:
- Easy to use
- Lots of libraries!
- I wrote a scraper to get the latest weather for my city from bom.gov.au
PHP: Seeing I have a job or 2 to make some websites I've got the job of doing the backend. Both sites will use CodeIgniter and MySQL. The only difficult thing to design is a competition management system. Codeigniter is quite good and a huge step up from plain PHP. The myriad of included helpers and libraries simplifies a lot of things and the framework uses the MVC pattern which really separates out the presentation from the application.
I also got a github, so you can see the code I open sourced, the only thing I really update is TwatBot (a bot to post things from IRC to twitter).
https://github.com/JonnoFTW
C++: was the language required for my previous programming topic. Initial thoughts:
- this is better than Java
- templates are just macros
- STL is pretty neat
-
Java: required language for my current programming topic:
- still as overly verbose
- simple and easy to usehttp://www.blogger.com/img/blank.gif
- The amount of included resources is huge, you'd never get around to learning all of them
Python: just for fun, scripting, and bots:
- Easy to use
- Lots of libraries!
- I wrote a scraper to get the latest weather for my city from bom.gov.au
#!/usr/bin/python
import urllib2
import json
q = json.load(urllib2.urlopen("http://www.bom.gov.au/fwo/IDS60801/IDS60801.94675.json"))
for i in ['City','Temp','Wind','Rain','Humidity','Wind_Dir']:
print '%s' % (i.rjust(9)),
for i in ['name','air_temp',"wind_spd_kmh","rain_trace","rel_hum","wind_dir"]:
print "%s" % (str(q['observations']['data'][0][i]).rjust(9)),
print "${hr 1}\n"
p = filter(lambda x: x!="\r\n",urllib2.urlopen("ftp://ftp2.bom.gov.au/anon/gen/fwo/IDS10071.txt").readlines())
for i in p[5:8]:
j = i.split()
print j[0],"$alignr",' '.join(j[1:])[:-1]
PHP: Seeing I have a job or 2 to make some websites I've got the job of doing the backend. Both sites will use CodeIgniter and MySQL. The only difficult thing to design is a competition management system. Codeigniter is quite good and a huge step up from plain PHP. The myriad of included helpers and libraries simplifies a lot of things and the framework uses the MVC pattern which really separates out the presentation from the application.
I also got a github, so you can see the code I open sourced, the only thing I really update is TwatBot (a bot to post things from IRC to twitter).
https://github.com/JonnoFTW
Thursday, February 3, 2011
More php
So I got bored and whipped up 4 new things in PHP. After refreshing myself on a bit of SQL, I got to work and made a simple business site. It has editable pages via an admin panel which you can also use to upload images and add them into the pages. It is pretty much, a very simple and barebones blog system for small businesses. I'll probably make it generic enough to be rolled out whenever someone wants a similar system.
http://jonno.9ch.in/doors
The problem with this is that the client I did it for, had their own terrible hosting and domain (that's the www.example.com) name that won't update to point at it! Otherwise it was pretty simple after fixing problems with the layout of tables.
The second one was a Ticket Support system. It's basically a bug tracker, where if someone has a problem with some of our software, they can go there and submit a ticket, which will appear on a list for them and me. The idea being that I read the report and any comments and get around to fixing the problem. It also has a todo and FAQ system tacked on.
The third application I made is a text bulletin board system (there are a gazillion different sites like this). It's pretty simple, but getting the threads and comments to display just right took a while. Plus it has emergency raptors. You can see it here:
http://jonno.9ch.in/bbs/
The best feature I would say, is the uncrackable trip codes using Blowfish encryption. Normal trip codes (as seen on 4chan and similar sites) can easily be cracked on any modern computer within a few minutes. So you too can assume the identity of your favourite tripfagging poster.
The other thing I made was a Photo gallery, I originally set it up to store photos locally and use a database to manage them, but I then looked into the Picasa API which allows you to access the images from a picasa photo gallery. But getting this right has been a major problem, (mostly because the example code given only shows how to get the names of the images and not the images themselves). Rather frustrating really. Although I did find a nice slideshow to show them in which can easily integrate with flickr (you give it an album ID and it will use the images in that album in the slideshow). But picasa is a lot harder than that. You can view it here:
http://jonno.9ch.in/gallery/
All 4 of these make extensive use of a MySQL server. Which is a relational database management system that accepts 'queries' and will return a state from the server in the form a table similar to the kind of spreadsheet you might see in Excel. Or it will return an error if you made a syntactic mistake in your query, or a confirmation to say that the database has been updated. This made things a lot easier, because it avoids alternatives of constructing your own database or managing a convoluted system of files and folders. It's also quite fast (at the expense of consuming a lot of RAM) and the whole system is completely standardised and well documented. In fact, I should probably update the TPFC website to use MySQL...
http://jonno.9ch.in/doors
The problem with this is that the client I did it for, had their own terrible hosting and domain (that's the www.example.com) name that won't update to point at it! Otherwise it was pretty simple after fixing problems with the layout of tables.
The second one was a Ticket Support system. It's basically a bug tracker, where if someone has a problem with some of our software, they can go there and submit a ticket, which will appear on a list for them and me. The idea being that I read the report and any comments and get around to fixing the problem. It also has a todo and FAQ system tacked on.
The third application I made is a text bulletin board system (there are a gazillion different sites like this). It's pretty simple, but getting the threads and comments to display just right took a while. Plus it has emergency raptors. You can see it here:
http://jonno.9ch.in/bbs/
The best feature I would say, is the uncrackable trip codes using Blowfish encryption. Normal trip codes (as seen on 4chan and similar sites) can easily be cracked on any modern computer within a few minutes. So you too can assume the identity of your favourite tripfagging poster.
The other thing I made was a Photo gallery, I originally set it up to store photos locally and use a database to manage them, but I then looked into the Picasa API which allows you to access the images from a picasa photo gallery. But getting this right has been a major problem, (mostly because the example code given only shows how to get the names of the images and not the images themselves). Rather frustrating really. Although I did find a nice slideshow to show them in which can easily integrate with flickr (you give it an album ID and it will use the images in that album in the slideshow). But picasa is a lot harder than that. You can view it here:
http://jonno.9ch.in/gallery/
All 4 of these make extensive use of a MySQL server. Which is a relational database management system that accepts 'queries' and will return a state from the server in the form a table similar to the kind of spreadsheet you might see in Excel. Or it will return an error if you made a syntactic mistake in your query, or a confirmation to say that the database has been updated. This made things a lot easier, because it avoids alternatives of constructing your own database or managing a convoluted system of files and folders. It's also quite fast (at the expense of consuming a lot of RAM) and the whole system is completely standardised and well documented. In fact, I should probably update the TPFC website to use MySQL...
Sunday, December 12, 2010
The horror, the HORROR
The past few days, I decided to teach myself PHP (PHP Hypertext Preprocessor). Essentially it's a parser that spits out html for a browser based on what it finds between in a .php file. Now the annoying part is what goes between those two tags.
It's horrible to write, there I said it, now deal with it. It's the kind of code that takes a while to write, it seems simple enough, but you just don't want to do it because coding it is so annoying.
That being said, it was pretty easy to learn (probably because I have good experience with html and programming) and code doesn't tend to result in sever runtime breaking because of its weakly typed nature (although it feels like it will lead to ambiguity but w/e).
Thus far, I've spent most of my time doing the admin panel, but I probably shouldn't let you see it.
If you would like to see what I wrote, it's all here:
http://users.adam.com.au/gmack1/tpfc/
It's horrible to write, there I said it, now deal with it. It's the kind of code that takes a while to write, it seems simple enough, but you just don't want to do it because coding it is so annoying.
That being said, it was pretty easy to learn (probably because I have good experience with html and programming) and code doesn't tend to result in sever runtime breaking because of its weakly typed nature (although it feels like it will lead to ambiguity but w/e).
Thus far, I've spent most of my time doing the admin panel, but I probably shouldn't let you see it.
If you would like to see what I wrote, it's all here:
http://users.adam.com.au/gmack1/tpfc/
Sunday, June 20, 2010
A post
To give the illusion that this is not dead. I guess you don't want to hear my life story in the absence of decent content. I also started to play the guitar. I just can't get past the association of a note with a pair of finger positions; I'll just say it's like typing and I have to get the muscle memory sorted out so I can just read sheet music and play from that.
Saturday, April 10, 2010
Merge and Sort
So, as an exercise in Haskell and recursive algorithms I implemented an exhaustive search called `search`, a faster and correct binary search called `bSearch` which requires a sorted list to start with to work correctly.
On the sorting side I implemented the merge sort algorithm; wherein you keep break the list in half until you have pairs or a single and then sort the pairs and then rejoin everything together in the correct order (`merge`) after they've been sorted. This is implemented as `mergeSort`:
module Main where
import Data.List
search t [] = False --t is an item we want to check is an a list. if the list is empty, then obviously it can't contain t
search t (x:xs) | t == x = True -- if the first item in the list is the same as t, then the search returns the result of True
| otherwise = search t xs --if t is not the head of the list, search the rest of the list
bSearch t xs = bSearch' t (mergeSort xs) -- Binary search requires a sorted list, so we search through the sorted list, using t as the item we want to find
bSearch' t [] = False -- same as before
bSearch' t (x:xs) | t == x = True -- same as before
| t < x = pt fst -- since the list is ordered, we can check the first half of the list if t is less than x
| t > x = pt snd --otherwise we can check the second half of the list
where
pt f = bSearch' t $ f $ splitAt ((length xs)`div`2) (x:xs) -- to save time, here is another function that will perform a binary search on the half of the list you want (f)
On the sorting side I implemented the merge sort algorithm; wherein you keep break the list in half until you have pairs or a single and then sort the pairs and then rejoin everything together in the correct order (`merge`) after they've been sorted. This is implemented as `mergeSort`:
mergeSort :: (Ord a) => [a] -> [a] -- this says the sort function takes a list and returns a list. Each element in the list must be an ordered type, like numbers or letters which come in order
mergeSort [] = [] --obviously an empty list is already sorted
mergeSort [a] = [a] -- as well as list with one element
mergeSort [a,b] = order a b -- for a list with 2 elements, order them according to the definition below
mergeSort xs = merge (pt fst) (pt snd) --merge the 2 halves of the sorted lists, this will continue until the original list has been broken up into smaller lists of 1 or 2 elements
where
pt f = mergeSort $ f $ splitAt ((length xs)`div`2) xs
order :: (Ord a) => a -> a -> [a]
order a b | a < b = [a,b] --order a pair of things
| a > b = [b,a] --and return a list in the correct order, that is biggest at the right, and smallest at the left
| a == b = [a,b] --if the 2 items are the same, leave them that way
merge ::(Ord a) => [a] -> [a] -> [a]
merge [] ys = ys --merging the broken up lists back together, an empty list merging with a non-empty list, you just get the nonempty list
merge xs [] = xs -- they need to be in the correct order; same as above
merge xX@(x:xs) yY@(y:ys) | x <= y = x:(merge xs yY) --if x is less than or equal to y,(x and y being the first element in each list) the merged list will have the head of x merged with the rest of the first list and all of the second list
| otherwise = y:(merge xX ys) --same as above but reversed
Saturday, March 13, 2010
Photography on Nth Tce
Thursday, January 21, 2010
And then I was all
NYAAUUUUUUU
And made this for project euler number 17 in a magical 15 lines. Screw you if you want numbers more than 1000 in word form.
And made this for project euler number 17 in a magical 15 lines. Screw you if you want numbers more than 1000 in word form.
module Main where
nones = ["","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"]
tens = ["","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"]
num2word :: Int -> String
num2word n | x <= 2 && n < 20 = nones !! x
| x == 2 && n >= 20 = tens !! fst y ++ nones !! snd y
| x == 3 = nones !! fst z++"hundred" ++ a
| n == 1000 = "onethousand"
where
x = length $ show n
y = divMod n 10
z = divMod n 100
a | snd z == 0 = ""
| otherwise = "and"++num2word (snd z)
main = print $ length $ concatMap num2word [1..1000]
Saturday, December 26, 2009
Bricks
Sunday, December 6, 2009
The Apocalypse
In the eternal struggle for movies to produce yet another shitty apocalypse end of the world type disaster porn movie (looking at you "2012"), I was thinking, how many possible endings to world could there be?


- Zombie Apocalypse
The mainstay of plot devies in many movies too numerous to list. So the dead have risen from the grave and want your brains. There will be no restoration of mankind, they're all zombies now and if you don't want to become one of the shuffling hoard, you fight, with crowbars and shotguns. - Alien Invasion

Probably first thought up by H.G Wells in "War of the Worlds", basically aliens of far superior technological power than us puny (and enslavable humans) overrun and take over earth, or destroy it. You hope in vain that they catch the common cold but remember that likely also have disease and came prepared, you then catch an alien disease 10 times worse. - Robot Uprising
I wrote 2 stories for school pieces on this very subject as it happens. Basically, robots become sentient and decides it's their turn to totally kick ass. There is a high chance of you being fried by a LASER beam. - Natural Disaster
These are your typical Mankind is bad and the planet is fighting back (because they want you to believe in Gaia or some shit). These usually form the worst of all disaster movies, with special effects through the roof and crappy morals to look out for. May also be accompanied by people putting aside prejudices and learning to live with each other.
Monday, November 23, 2009
Problems
So
Now school has finished forever, I have lots of free time and am working a little bit of at my real place of employment. In other news, I have been doing a lot of nothing lately. This mostly consists of going for walks and thinking about things or surfin' the internets.
Typical sites to visit include:
Other than these there's the usual comics and another one I realised I hadn't finished reading all of yet. buttersafe.com
And if you can figure out what is going wrong here, I'll give you a prize:
Now school has finished forever, I have lots of free time and am working a little bit of at my real place of employment. In other news, I have been doing a lot of nothing lately. This mostly consists of going for walks and thinking about things or surfin' the internets.
Typical sites to visit include:
- Superuser.com
- stackoverflow.com
- reddit.com
- projecteuler.net
- facebook.com
- 4walled.org for the best in random unlimited wallpaper works
Other than these there's the usual comics and another one I realised I hadn't finished reading all of yet. buttersafe.com
And if you can figure out what is going wrong here, I'll give you a prize:
lists = nub $ map sort [ [[a,b,c],[d,c,h],[e,h,i],[f,i,j],[g,j,b]] | n@[a,b,c,d,e,f,g,h,i,j] <- permutations [1..10], ring n ]
ring [a,b,c,d,e,f,g,h,i,j] = (length $ nub $ map sum [[a,b,c],[d,c,h],[e,h,i],[f,i,j],[g,j,b]]) == 1
answer = read $ concatMap show $ head $ map concat lists :: Integer
Wednesday, October 14, 2009
Yet another post
In current news, according to the Myers-Briggs Type Indicator, I am an INTJ. Apparently they are the mastermind and comprise 1% of the population. What about you?.
Anyway, in the interest of always learning new things, I have begun learning Haskell (upon suggestion from a friend), and to learn that, I started doing the questions over at http://projecteuler.net. I have answered 33 so far, using Haskell for all but 1 of them, when it seemed my trusty TI-83 Plus would suffice. In doing these questions I have learned a lot more number theory.
Also, I recently found that many text editting things like word or even firefox allow you to navigate around the text by going CTRL+ left or right to skip through words!
Also Jazz is pretty good and I would suggest you listen to the "Times" series by Dave Brubeck. Either that or Herbie Hancock.
Also here's a giant ascii fractal made with haskell, extract and view, zoomed out in firefox for best effect, then zoom in and see that it is actually text.
I final note, I rarely watch TV these days, it's usually crap. That and Nong Shim noodles are way better than Mi Goreng.

*brace for shitstorm*
Anyway, in the interest of always learning new things, I have begun learning Haskell (upon suggestion from a friend), and to learn that, I started doing the questions over at http://projecteuler.net. I have answered 33 so far, using Haskell for all but 1 of them, when it seemed my trusty TI-83 Plus would suffice. In doing these questions I have learned a lot more number theory.
Also, I recently found that many text editting things like word or even firefox allow you to navigate around the text by going CTRL+ left or right to skip through words!
Also Jazz is pretty good and I would suggest you listen to the "Times" series by Dave Brubeck. Either that or Herbie Hancock.
Also here's a giant ascii fractal made with haskell, extract and view, zoomed out in firefox for best effect, then zoom in and see that it is actually text.
I final note, I rarely watch TV these days, it's usually crap. That and Nong Shim noodles are way better than Mi Goreng.

*brace for shitstorm*
Monday, August 24, 2009
Saturday, August 15, 2009
A new age of posts
So, after a long hiatus of posting, I shall post!
So I have my favourite webcomics and sites. I guess you would like to know what they are now wouldn't you (you stalker you)?
Here you go anyway:
Now I must insiste you check them all out at some stage and if you know of better, please tell me.
Also, I have this thing where I tried to read all of the artists' comics, which is why when I was younger I read pretty much every Garfield book I could get my hands on and also practically every Far Side comic Garry Larson ever made. And yes I read all of the ones from the links at the top.
So I have my favourite webcomics and sites. I guess you would like to know what they are now wouldn't you (you stalker you)?
Here you go anyway:
- Legorobot
- Cyanide and Happiness
- SMBC
- Perry Bible Fellowship
- xkcd
- Subnormality (If you find a comic with more words, I'd like to see)
Now I must insiste you check them all out at some stage and if you know of better, please tell me.
Also, I have this thing where I tried to read all of the artists' comics, which is why when I was younger I read pretty much every Garfield book I could get my hands on and also practically every Far Side comic Garry Larson ever made. And yes I read all of the ones from the links at the top.
Friday, June 26, 2009
Monday, June 1, 2009
Excellent
All the pieces are falling into place.
Please hold while i think of something controversial to write about
So you know what annoys me?
In other news .flac is the greatest thing since scratching vinyl and hypocrisy
EDIT: I mean escalators not elevators
Please hold while i think of something controversial to write about
So you know what annoys me?
- People who stand on escelators (travelators if you will) even if they aren't pushing a heavy load
- Slow people, who don't walk fast enough. Also people who don't observe things carefully
- Trying to manage friendships in multiple groups of friends. Where do i put priorities? It seems i am drifting away from some and moving closer to others. Does this make a bad friend?
- People who blame everyone and everything else for their problems, when clearly they aren't do anything about it. Obviously if you are so pathetic you can improve YOURSELF instead of blaming those around you. Life doesn't change just because something isn't quite perfect for you.
- 64 kb/s mp3. It sounds like crap.
- People who try to hard to fit in. You only make yourself look like an idiot.
- People who get revved up about the most pointless problems or slights against them. GET THE FUCK OVER IT. Life is deeper than your petty sorrows. Your milk spilt, who gives a shit?
In other news .flac is the greatest thing since scratching vinyl and hypocrisy
EDIT: I mean escalators not elevators
Friday, May 29, 2009
From request:
In the future, posts will be more controversial and more opionated with more real life relevance. beginning now!
So, as 17yo male i find it hard to decode the motivations of women. For example, it seems they seem to love you when they can have you all to themselves but when deprived a chance of having you, suddenly hate you! what the hell? is it jealousy or some other strange mash up of emotion?
On a similar note, it seems women will appear as they like you for a period of time, w/ flirting etc. then suddenly not! double what the hell.
In other news i bought good cheap chocolate on the bus on the way home.
So, as 17yo male i find it hard to decode the motivations of women. For example, it seems they seem to love you when they can have you all to themselves but when deprived a chance of having you, suddenly hate you! what the hell? is it jealousy or some other strange mash up of emotion?
On a similar note, it seems women will appear as they like you for a period of time, w/ flirting etc. then suddenly not! double what the hell.
In other news i bought good cheap chocolate on the bus on the way home.
Subscribe to:
Posts (Atom)




