I've started work (and nearing completion) on a new Linux distro for i586 and up with 64MB of RAM. It's called Night Linux. The origin of the name is a topic for another day.
Night Linux is a small, ~20MB CLI only distro intended for system rescue/utility purposes.
It's the kind of thing you make bootable on your MP3 player to keep with you in a pinch.
Among its features are: Epoch Init System, elinks browser, ircii IRC client, support for mounting and creating/repairing EXT2/3/4, BTRFS, NTFS, and FAT12/16/32 filesystems, ms-sys to repair Windows boot records, GNU parted, syslinux/extlinux along with MBRs in /usr/lib/syslinux for bootloaders, Bricktick brick breaker game, busybox userland, bash 4.3.x, nano editor, OpenSSH, squashfs tools, and more.
Night Linux is based on bleeding edge code with a 3.19 kernel and glibc 2.21.
I haven't published source yet, (waiting to create a project page) but if you want it, I'll provide it upon request.
Get the first alpha here: https://www.dropbox.com/s/9h3wa5ylczjrrt7/NightLinux-Alpha1.i586.iso?dl=1
Feedback welcome.
been mucking around with a little website thing intended to be sort of similar to SoylentNews/Pipedot/etc
it's written in php and is intended to be very simple
site (not yet fully functional) is here: http://news.my.to/
sample story with a bunch of nested test comments here: http://news.my.to/story/1
code for site is here: https://github.com/crutchy-/exec-irc-bot/tree/master/website/news.my.to
so far it has basic rewrite rules, templating for html, uses pdo, no classes (procedural only)
code is unlicensed (https://github.com/crutchy-/exec-irc-bot/blob/master/unlicense.txt)
As of late I've spent some time making improvements to my tiny C string library called SubStrings. There are other string solutions, but those either involve a language such as C++, or they try and create a new string type with a struct or something. In many of my programs, there is a huge amount of text processing. One might say more than you should generally attempt in C. It's not a big problem for me actually. It's becoming even less of a problem since I made my pet projects use SubStrings. As I said, I've recently updated it, but I've added a ton of new functions and features. I've updated aqu4bot to make use of these improvements where available.
Take this example of trying to iterate through lines of text stored in a string in memory
This was extracted from aqu4bot BEFORE I updated to use the new SubStrings functions.
It iterates through each line and forwards them to an IRC user.
Worker = InBuf;
do
{
while (*Worker == '\r' || *Worker == '\n') ++Worker;if (*Worker == '\0') break;
for (TInc = 0; Worker[TInc] != '\n' && Worker[TInc] != '\r' && Worker[TInc] != '\0' && TInc < sizeof LineBuf - 1; ++TInc)
{
LineBuf[TInc] = Worker[TInc];
}
LineBuf[TInc] = '\0';IRC_Message(SendTo, LineBuf);
} while ((Worker = strpbrk(Worker, "\r\n")));
Hideous, yes?
Thanks to SubStrings, I can shorten it to this:
Worker = InBuf;
while (SubStrings.Line.GetLine(LineBuf, sizeof LineBuf, (const char**)&Worker))
{
IRC_Message(SendTo, LineBuf);
}
I'll be sifting through aqu4bot's code and updating other components that rely on deranged gerbil magic to get strings to work properly. I'll also be working on SubStrings more.
So far, SubStrings is:
* C89/ANSI with no extensions/platform specific stuff
* Doesn't use ANY library functions, meaning you could build it into your bootloader to make text processing easier.
* Uses a pseudo-OOP function pointer based system for getting functions.
* Is small enough to painlessly be embedded in larger source trees.
* Is public domain (unlicense) software, making it pretty much license neutral.
This should encourage me to add new features to aqu4bot, including making good on my threat of using libcurl to build in email support. Why? Because fuck you.
had a go at making a simple pastebin. nothing fancy (no context highlighting, line numbers, etc)
similarish workings to the url shortener
had a go at making a url shortener. very basic but seems to work
you can also use it from soylent irc with the command "~shorten %url%" (must be identified with nickserv)
So I released the first update release for 1.2 series. It's a very small update, it fixes a bug that pissed me off and it adds support for something I wanted to get into 1.2.0.
The bug: There was a problem caused by dunce syndrome where the time for shutdown commands had extra or too few zeroes, caused by a tired coding problem.
The feature: Now the 'epoch status', 'epoch start', 'epoch restart', 'epoch stop', and 'epoch reload' commands can have multiple service names specified at once. That means instead of 'epoch restart aqu4bot;epoch restart aqu4bot_soy', now I can just do 'epoch restart aqu4bot aqu4bot_soy'. Saves a bit of typing if you have a big list of services you want to apply the same action to. The method I used to implement this for 'epoch status' is hideous and is ironic considering the goals of 1.2 Peroxide, but it works and it's not buggy or anything.
Those are literally the only changes in this release.
The 1.x.1 releases tend to be little bitty bugfixes and stuff.
So, I've pushed out the final version of the Epoch Init System 1.2.0 "Peroxide". It's mostly a bugfix release and cleans up most of the nasty code in Epoch. Here's the tarball: http://universe2.us/epoch_1.2.0.tar.gz
I probably could have done more to it, but I wanted to just finish and get the release out so I could roll an update for my personal distro with the new version of Epoch in it. Nonetheless, this release should be pretty stable and is a recommended update. It is safe to update 1.0 and 1.1 releases to 1.2.0 without rebooting. Replace the 'epoch' binary with the new version and then run 'epoch reexec'. Check /var/log/system.log and it should tell you that you've been updated to 1.2.0. NOTE: if you do NOT run 'epoch reexec' after replacing the binary, your root filesystem will not be able to be remounted read-only on system shutdown and that could lead to data loss.
There is no good reason I can think of that you would not want to run 'epoch reexec'.
Here is a list of changes:
Changes since 1.1.1:
* Cleaned up a huge amount of code that was just fugly as hell. This is the big change.
* Removed unsigned long abuse caused by my (at the time) severe OCD.
* New service status output format. Looks cleaner.
* Extremely deprecated AlignStatusReports attribute completely removed. I doubt even one person will be affected by this.
* Add three new attributes: StartingStatusFormat, FinishedStatusFormat, and
StatusNames to manually specify an alternate service status output format.
* Specific bugfixes:
* Don't set a config problem check to WARNING after we already found a FAILURE.
* Fix overwriting service messages, caused by our old status format.
* Fix inaccurate reporting of scheduled shutdown times, now report seconds too.
Got IRCiv back to a working state after reworking authentication to make use of new features now built into exec. Also makes use of included alias definition, init and startup directives.
New features include map image cropping (no more huge black areas), a crop_map flag, use of notice instead of pm for private status messages, queuing of messages triggered by actions of other players, use of bot IRC message handling pause/unpause for robustness against command flooding (mainly to prevent corruption of memory shared by scripts running in parallel), a game-list command, and ability to load and save all game data to files.
Join the #civ channel in soylent IRC. Must be identified with NickServ to play. Type "~civ init" to initialize your player.
Note that IRCiv is not fully playable yet and is very much a work in progress in early stages of development.
Sample test gameplay:
<civ_test_player> ~civ u
<crutchy> ~civ d
<exec> #civ crutchy => player "civ_test_player" moved a unit within your field of vision
<exec> #civ crutchy => successfully moved settler down from (66,39) to (66,40)
<exec> #civ crutchy => you moved a unit within the field of vision of player "civ_test_player"
<exec> #civ crutchy => http://irciv.us.to/?pid=3
<exec> #civ crutchy => 1/2, warrior, +100, (76,26)
<crutchy> ~civ ?
<exec> QUICK START GUIDE
<exec> unit movement: (left|l),(right|r),(up|u),(down|d)
<exec> settler actions: (build|b)
<exec> player functions: (help|?),status,init,flag/unflag,set/unset
<exec> flags: public_status,grid,coords,city_names,crop_map
<exec> http://sylnt.us/irciv
<crutchy> ~civ unflag public_status
<exec> flag "public_status" unset for player "crutchy"
<crutchy> ~civ d
-exec- #civ crutchy => successfully moved warrior down from (76,26) to (76,27)
-exec- #civ crutchy => http://irciv.us.to/?pid=3
-exec- #civ crutchy => 0/2, settler, +100, (66,40)
<crutchy> ~civ d
-exec- #civ crutchy => successfully moved settler down from (66,40) to (66,41)
-exec- #civ crutchy => you moved a unit within the field of vision of player "civ_test_player"
-exec- #civ crutchy => http://irciv.us.to/?pid=3
-exec- #civ crutchy => 1/2, warrior, +100, (76,27)
Example map:
http://irciv.us.to/?pid=2
--
http://sylnt.us/irciv
https://github.com/crutchy-/exec-irc-bot/tree/master/scripts/irciv
A couple weeks ago I was having a conversation about smoking with someone and they posited this argument in favor of smoking being illegal near entrances and exits after I'd pointed out that the danger from second-hand smoke in an open-air environment was so minuscule as to not exist: The smell offends me.
That went up one side of me and down the other and today I say to everyone using being offended as an argument for anything what I said to him: I do not care.
No, that is not me being an asshole. That is me refusing to allow you to mold the world to suit you at my expense. You have no natural, societal, legal, or God given right to not be offended in this life. And neither should you.
We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness
Those, right there, are your chief three rights. It's quite important to note that you do not have a right to happiness but only to its pursuit. Also, the the end of each is precisely located where you would start infringing on the same for anyone else. Taken together with all the other rights enumerated in the Constitution, there is a further right that is very much implicit but I believe should have been explicit: The right to be an asshole. Beyond Life and Liberty, I would go as far as to say it is our most fundamental right.
You're probably thinking I am an asshole about now. Why would I say something like being an asshole is one of our most fundamental rights? It's simple, really; because anyone at any time can call anyone else an asshole for any old arbitrary reason. If this has any bearing on the rights of the person being accused of being an asshole, then they do not really have those rights and never did in the first place. All their rights are subject to sanction or removal by cultural fiat. No due process whatsoever. Only if you have the right to offend anyone, at any time, without fear of oppression are any of your other rights secure.
Large portions of our political landscape have always been made up of unscrupulous bastards who incessantly try to convince you that offending someone is bad or wrong. See this for what it is: an attempt to get you to place chains of your own making upon yourself. They know they cannot force you to behave according to their approval or disapproval, so they attempt to shame you into doing so by being offended. There is no difference today between the puritanical right and the Social Justice Warrior on the left in this; the tactic itself is as identical as it is reprehensible.
So, convince me of your position by logical or moral argument all you like. Tell me I should do or think something because it offends you though? You can jam that right up your shitter and blow some fucking bubbles with it, you fascist asshole.