Stories
Slash Boxes
Comments

SoylentNews is people

Log In

Log In

Create Account  |  Retrieve Password


What I do since "retiring".

Posted by anubi on Sunday September 16 2018, @09:59AM (#3525)
5 Comments
Business
I design Arduino compatible interfaces to the real world... designed around never running out of I/O pins.

I have my own line of Arduino-compatible boards to drive these interfaces, but any off-the-shelf Arduino of any flavor could be used with the appropriate "shield".

The design is not specific to Arduino. I have Raspberry Pi in mind too. I am implementing Arduino first due to pure simplicity. The design goal is such that it could be unplugged from an Arduino, and plugged into a Raspberry Pi, as easily as you could unplug an old-school ascii parallel printer from a DEC PDP-11 and plug it into an IBM-PC.

The whole purpose is to give control of the technology back to the people. I know.. its like replacing Einstein with a ditch digger... but sometimes all you need is getting the ditch dug, and the big guys have big problems if you try to circumvent the technologies they have developed to force you into their business models of continuous revenue streams.

I have been working on this, part time, for ten years now. And went down a lot of paths to dead ends. Unintended limitations. Usually affecting system resilience.

The architectural foundation must be sound, or one will face relentless changes and undue complexity. I have spent a lot of time building proto PCB and exploring how to scale the architecture to accept not only my designs, but how to design the architecture for others to design hardware for it as well, as there is always going to be someone wanting something unique. I have to leave lots of access open for him to assign himself a port number and go for it.

Like the original PC, this is not designed for security. If you have access to the physical system, you *are* God. No questions asked.

But if you only have access to a port, there is little you can do except screw the port up and cause the system to throw error codes through other ports.

I used to work for a major aerospace company...and I built these on the same concepts I would have used on the job. Engineering is what I do, but I am not very good at mass production, marketing, accounting, and the endless minutiae of admistrivia to dealing with people. And I am also too conservative to ask for investment as I knew it would be years before I even got out of the design phase. Now, I see the light at the end or the tunnel, and its either releasing an open-source computer to the world, or an oncoming train. This has been a labor of love for me, like solving crosswords or suduku is for some other people, and sports for others. I am old enough now I am not about to go chasing all over creation looking for an "employment opportunity"..

The guy I have been working with for over 10 years now is closing up his shop, I have been developing my stuff there, and we had a kind of informal agreement... I would share with him any guidance I had on his designs, and he let me use the shop ( kinda like a "maker" shop ) rent-free. Being retired, I really did not need to be paid... this was simply something I wanted to do. Well, he is going to be leaving Southern California for Denver ( result of an inheritance ) and next week I will no longer have access to his lab, or his high speed internet, so I will not be posting near as lengthy of stuff on these forums for a while. It may well take me years to reconstruct the physical architecture I need to do this stuff at my house. So, this ripple-down effect basically freezes my progress on this, and stoppage due to end of life for me is now the likely ending. The guy I was working with has his own projects and life, and has his own animals to feed, just as I am driven to feed mine, and I am just grateful for the time we got to spend together.

I just wish companies weren't so quarterly-profit driven that anything that does not have immediate ROI is not employable.

So, whatever I get mixed up in, its gotta be local to me because I am not going to go through all that trouble and expense of moving again. And quite frankly I hate commuting in rush hour traffic. Right now, I walk to work.

I know.... this post turned out to be a lot lengthier than I intended. Probably should have put it as a journal entry.

I will cut and paste and see.

script for automated test comment submissions to dev

Posted by crutchy on Wednesday May 06 2015, @01:21PM (#1200)
1 Comment
Code

to bytram:

i've bashed together a scripty that will hopefully work as a starting point for automating some stuff on dev

exec command "~slash-test" (restricted to use by your nickserv account, and bot admins) may be run from either #dev or #test channels. at the moment it won't work cos i've already submitted the test comment (dev will return a duplication error), but its ready for preparation of test comment files similar to this one: https://github.com/crutchy-/exec-irc-bot/blob/master/scripts/slash_tests/test01

note: the parent element should contain the filename of the parent test file if applicable (leave blank or omit for root level). ie: for child of test01, put <parent>test01<parent>

source code files here:
https://github.com/crutchy-/exec-irc-bot/blob/master/scripts/slash_test.php
https://github.com/crutchy-/exec-irc-bot/blob/master/scripts/sn_lib.php

exec irc bot api

Posted by crutchy on Saturday April 11 2015, @09:53AM (#1149)
0 Comments
Code

currently developing a sort of api for the exec irc bot.

bit of background: exec is run as a single php script process in a terminal, which connects to the soylent irc server, but when commands are triggered from the irc channels, the bot spawns child processes to service the commands. command aliases are mapped to shell commands using templates to substitute data from irc (such as nick, channel, message, etc). child processes are usually passed data using command line arguments, and communication to/from child processes and the bot process is facilitated through child process stdin and stdout pipes.
eg: typing "~rainbow ciri is a butthole" triggers the shell command: php scripts/rainbow.php 'ciri is a butthole'

the bot creates a named pipe and dumps a bunch of data to it in response to events, such as when a child process is started, when a message is received from a child process stdout pipe, when a message is received from the irc server, etc.
the named pipe can be read by something simple like cat, but i've written another php script to read it. this reader script also has a tcp socket server which allows yet another program to access the data stream (remotely even), such as telnet.
this is fine for just reading data, but i wanted to be able to command the bot remotely using this api. this is achieved by starting the reader script as a child process of the bot, which then offers the reader script the same methods taken advantage of normal scripts through stdin and stdout. a couple of specific stdout handlers were added to the bot script for acquiring specific data, but the reader also has direct access to irc and other functionality using existing stdout handlers (/IRC and /INTERNAL being the main handlers, used to output a raw message to the irc socket and perform an internal command respectively).
with two-way communication established between a tcp socket in the reader script and the main bot process, with event data streaming, i wanted to make a pretty gui application that i could see what is going on, since the bot terminal can be a bit crazy (each irc message can result in output filling half the terminal or more, due to internal events and data messages).
my tool of choice is delphi 7 pro, so i've made a little app called 'execstat' that connects to the reader socket server and reads the data streaming from it and enables commands to be sent. its pretty basic at this stage, but hope to develop it into something that i can use to easily see which scripts are running, which buckets are being get/set, which channels the bot is in, which commands are being triggered by who and where, etc. also important will be the ability to trigger kill commands for scripts, since currently to kill a script i have to go to a private channel, get a list of running processes (using the ~ps alias) and enter the pid in a ~kill alias command. not hard, but would be nice if i could just click a button in a gui. lazy++

the socket in the delphi app reads in its own thread, and uses a synchronized event handler to give data to the main application thread.

my current work revolves around rolling my own unserializer classes to parse the php serialized arrays, which is necessary to be able to get anything useful from the data streaming into the socket.

this whole setup is probably way overcomplicated and rediculous, but i enjoy working on it. moar_complexity++

exec irc relay

Posted by crutchy on Saturday April 04 2015, @12:08PM (#1132)
1 Comment
Code

per previous journal i set up a simple channel relay feed to enable status messages for ncommander's nethack stream, but since there has been a little bit of talk about other games (including dungeon crawl stone soup) i turned the feed code into something more generic so that other feeds could be added easily. now there's feeds for the rodney bot from #nethack (freenode) to #nethack (soylent), as well as feeds for a couple of bots from ##crawl (freenode) to #crawl (soylent). the code to dispatch messages containing keywords has also been made generic, so that if ncommander plays again his deaths can be easily dispatched to #soylent for our amusement :p
code for this feature can be found here: https://github.com/crutchy-/exec-irc-bot/blob/master/scripts/activity.php#L86-L115

another feature that was briefly mentioned in my last journal has been developed further to enable limited two way communication between someone in a soylent irc channel and someone in a freenode irc channel.
to send a message to a channel on the freenode irc network (that an exec minion resides in with forwarding enabled) an authorized user on the soylent irc network in a channel with exec can type "#freenode_channel > message" and the message will be relayed. if you're in the freenode landing channel on the soylent irc network (#freenode) you'll be able to see any replies pop up in there, but it can easily get hidden amongst all the traffic from other channels, so to enable a 10 minute automated relay to a different soylent irc channel, type "#freenode_channel > freenode_nick, message" and for the next 10 minutes anything that freenode_nick says in #freenode_channel will be relayed to the originating soylent channel. only messages prefixed with "#freenode_channel >" will be relayed from soylent to freenode so soylentils can still talk without anyone on freenode hearing, but using the prefix on the soylent end (not required on freenode end) enables two-way communication. the relay lasts for 10 minutes, but can be easily renewed as many times as you want by typing another message (on soylent) in the form "#freenode_channel > freenode_nick, message". if you want to see a list of currently active relays, type ".relays" and it will list freenode_nick, freenode_channel, soylent channel and time remaining (in minutes). use of this feature is limited to a list of nickserv accounts.
code for this feature can be found here: https://github.com/crutchy-/exec-irc-bot/blob/master/scripts/activity.php#L133-L213

exec irc bot developments

Posted by crutchy on Friday April 03 2015, @09:20AM (#1128)
0 Comments
Code

re-enabled the ~submit alias so that instead of just pasting a link to irc, you can also (with smallest amount of additional effort) share it with SN users not on irc. syntax is really simple: ~submit %url%
just submits the description or og:description meta tag content along with the link, so makes for a pretty lame submission but its better than nothing at all (editors can always reject it if it sucks too much)

during NCommander's NetHack thing i tweaked the freenode relay script to output messages by the Rodney irc bot in the freenode #nethack channel to our #soylent channel when NCommander died in the game. also made it so that anything Rodney said was output to our local #nethack channel so that NetHack fans can see what's going on without connecting to freenode directly.

developed some macro functionality to enable authorized irc users to shorten otherwise long exec commands into shorter equivalents. came in handy for simplifying control of the freenode relay bot.
also made a compound macro (using exec's internal_macro lib function) to make it easy to talk through the relay bot from the SN irc channels to freenode channels.

we get a bit of spam occasionally in the wiki, and chromas is diligently blanking it out (despite not having authority to delete articles) as a means of spam control. a script has been developed to make it a little easier for him (and a couple of others in a list of authorized nickserv accounts). a spam page in the wiki can now be cleared with ".spamctl %page title%"

http://sylnt.us/exec
http://sylnt.us/execsrc

broke out ircd work into a separate github repo. currently working on ability to connect multiple times to a network with the same nick. idea is that if there are a few servers on the network you could connect to each of them, and then if one disconnects you can still use the other (redundant) connections. authentication of subsequent connections to the same nick is done using a connection id appended to the username field (username sent out doesn't include the connection id though).
the server is at a point where i can connect to it with hexchat a couple of times (server spits out a connection id on first connect, and i just paste that to the end of the username in second connection). i can then join a channel from either connection, which automatically joins for the other connection (weird to watch). then i can chat and the chat appears on both connections. its pretty funky to play with.
if the project goes anywhere (unlikely) it might be ideal to have a client that handles the redundant connections for you automatically rather than having to establish separate connections manually and have each one take up room in the server list. netsplits could be a thing of the past.
prolly will try to make it ts6 and rfc compatible, but still early stages.

https://github.com/crutchy-/ircd

SoylentNews IRC comments feed dispatch filters

Posted by crutchy on Saturday March 21 2015, @11:23PM (#1098)
0 Comments
Code

Our IRC (http://irc.sylnt.us/) has a #comments channel that you can join to see an hourly feed of all new comments that appear in reply to SoylentNews stories.

This has been around for a while, but over the weekend a new feature was added to allow more personalized comment feeds.

Filtered feeds can be dispatched either as a PM to your nick or to a channel of your choosing. To dispatch to a channel you just need to make sure the exec bot resides in that channel (you can command it to join by visiting #soylent and typing "~join #mychannel").

There are two types of filters; cid and pattern

The cid filter is useful if you would like a feed of all responses in a specific comment thread. You simply add a filter that points to the parent comment cid and the bot will feed all child comments that appear.

Using a pattern filter enables you to feed comments that meet certain criteria. There are a number of fields you can match, and any new comment that matches the criteria in a filter will be output to the target nick/channel.

You can add multiple filters to track multiple cid's and/or comments that match multiple patterns.

The following commands can be performed in any channel where the exec bot resides:

~comments filter-add %id% %target% %cid%
~comments filter-add %id% %target% %field% %pattern%
~comments filter-delete %id%
~comments filter-list

%id% = unique name to identify filter (cannot contain spaces)
%target% = channel or nick to send filtered comments to
%cid% = SoylentNews comment id to track ("cid" parameter in uri)
%field% = any of user, uid, score, score_num, subject, title, comment_body (title refers to the story title)
%pattern% = regexp pattern for use with preg_match (surrounding #'s are added by the script)

examples:
- if you wanted a feed for all replies to this comment: http://soylentnews.org/comments.pl?sid=6634&cid=160651
you would use this command:

~comments filter-add my_test_filter #mychannel 160651

- if you wanted a feed with any comments that contain "systemd" you could use this command:

~comments filter-add systemd_filter_1 #mychannel comment_body systemd

and if you also wanted comments with "systemd" in the subject, add another filter:

~comments filter-add systemd_filter_2 #mychannel subject systemd

--
source (unlicensed): https://github.com/crutchy-/exec-irc-bot/blob/master/scripts/comment_feed.php

mini-slashcode-wannabe project

Posted by crutchy on Monday February 16 2015, @09:37PM (#1020)
0 Comments
Code

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)

pastebin

Posted by crutchy on Sunday January 25 2015, @12:37PM (#972)
0 Comments
Code

had a go at making a simple pastebin. nothing fancy (no context highlighting, line numbers, etc)

http://paste.my.to/

similarish workings to the url shortener

url shortener

Posted by crutchy on Sunday January 25 2015, @03:08AM (#970)
2 Comments
Code

had a go at making a url shortener. very basic but seems to work

http://o.my.to/

you can also use it from soylent irc with the command "~shorten %url%" (must be identified with nickserv)

IRCiv development

Posted by crutchy on Monday December 22 2014, @10:49AM (#901)
2 Comments
Code

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