[ art / civ / cult / cyb / diy / drg / feels / layer / lit / λ / q / r / sci / sec / tech / w / zzz ] archive provided by lainchan.jp

lainchan archive - /λ/ - 19446

File: 1476701764092.png (38.18 KB, 300x296, 1469415224986.png)


What personal projects have you done lately, /lam/?


I'm currently doing a cracker for both vigenere and caesar in C, in time i plan on expanding it's functionalities for other encryptions.


File: 1476758254295-0.png (2.36 MB, 200x113, 1476436070_2016-10-14_1920x1080_scrot.png)

File: 1476758254295-1.png (94.15 KB, 200x113, 1476437256_2016-10-14_1920x1080_scrot.png)

File: 1476758254295-2.png (202.36 KB, 200x113, 1476437280_2016-10-14_1920x1080_scrot.png)

For a few years now interspersed with long breaks, I've been working on a tiling game engine called Driftwood 2D in Python 3 and PySDL2.

Driftwood loads a world package made of images, sounds, maps, descriptive files, and scripts, and then passes itself to the scripts as an interface to its internal API. From there, the scripts in the world package interact with and contol the engine to perform its functions, resulting in a playable game. All public functions in the engine are accessible through the scripts. Maps are designed in Tiled and saved in JSON format, and the engine config file and entity descriptor files are also written in JSON.

The engine provides features for building 2D games, including infinite graphical and walkable layers, resource caching, a virtual filesystem for game data supporting patch files, animations, lighting, audio, scriptable entities and scriptable events, configurable input handling, timed callbacks, and all sorts of other goodies. Currently still missing in the latest version are UI/menu and text support, by-pixel rather than by-tile movement/collision for entities (though the movement between tiles is animated), combat, and inventory. Also, not all features have been extensively tested yet.

tl;dr Python 3 + PySDL2 tiling game engine / game interpreter with scripting api in late alpha development.



I am very much interdasted, might try it out as my first foray into game design.



Looks dope friend, I'll give it a try!


File: 1476825504082.png (203.94 KB, 200x113, 1476825369_2016-10-18_1920x1080_scrot.png)

Keep in mind if you're going to check it out that it's still in alpha and doesn't have a manual yet (except for the pretty good code commenting), nor is the API finalized. If you try to make a fully featured game right now you will probably be disappointed, since you'll have to read the code comments and test world data to figure out how to do things and it's all subject to change. At this point it's a really cool toy, so by all means play with it but don't have unrealistic expectations.

If you're really interested star the project and keep an eye on progress as I'm about to start implementing UI widgets and text/font support. After that some more functionality will be added to the standard scripting library that comes with the engine to make everything less of a hassle, and after that is probably when I'll add by-pixel movement and start really solidifying the API.


This https://github.com/cosmicpuppet/getlyrics

This is my first Ruby project so be tolerant xD


File: 1477038843016.png (51.63 KB, 142x200, 1476251993200.jpg)

I've been hitting some roadblocks, namely how to do bicubic interpolation in GLSL, and then for Tallis I have to figure out how to implement SASL; technically it already supports SASL but I haven't set up any user configuration for it.
I'm also writing a recursive-descent parser with a separate lexer for Tallis as well.


File: 1477047452471.png (1.83 MB, 200x113, 4nqtnz_44.jpg)

a video streaming site that let's users vote on what to play. just started working on it two days ago after i figured out nginx's rtmp/hls live streaming.

i could use feedback though (i know about the colors), just click on tv in the top left corner



for bicubic interpolation
there are more efficient methods with fewer texture reads, but gpu gems is great reference material if you're just getting started


Been doing small stuff lately - note taker, rss reader, etc, because it is easier get usable result in one evening. I wish I could do large projects with the same speed, without loosing motivation halfway through.


File: 1479489888974.png (311.66 KB, 200x113, zodar-nethack-620x350.png)

I'm working on a patch for NetHack I'm calling "Custom Spells Brew". The main goal is to change the behavior of certain spells and items (as opposed to just adding new ones, although I'll be adding a handful of new things too).

Force bolt now knocks normal-sized-or-smaller monsters back like a monk's staggering blow whenever it hits.

Rather than giving you an option to abort the teleport, blessed scrolls of teleportation provide a controlled teleport, even if you don't have teleport control. Since a scroll can't be blessed and cursed at the same time, you still need a cursed scroll and the ring or intrinsic if you want a controlled levelport.


Your doing God's work




File: 1479628843696.png (492.39 KB, 200x134, 26022015recepcaocalourospolifotomarcossantos017.jpg)

Playing around with Minix- making modifications, and trying to port some things from other *nix(es) .

Also, WTF OP, I remember posting this girl some time ago in /int/


I've been working on a roguelike/roguelike engine for funsies. I've got the UI in a workable state, and I've settled on a representation for maps and have almost finished the map generator. It's been taking a while, and will take a lot longer to finish since I'm writing the engine myself, but I enjoy working on it.

The part I'm really excited about and what got me started was the idea of a function-composition magic system that allows players to combine spells arbitrarily. e.g., a spell is a curried function ((f spell ...) target), where spell is another optional spell to combine. So when you want to create or "weave" your own spell you can define it easily as a series of compositions (f ∘ g ∘ h ∘ ...) and then apply or "cast" it on the target. For example fire spells can be combined with explosive spells for AoE fire explosions. I was thinking it would be cool to build that off an element-combining system (e.g., "explosion" comes from combining a fire spell and an ice spell or something) but that would complicate things a bit, since I'd need to keep track of which spells had been applied on the target already, but I was thinking it would be really cool to model that with a stack. A N/PC has a stack which represents the effects that it has, then element-combining is just like basic arithmetic with a stack where you pop the two elements and combine them, which returns another element that is the combination of both, and then repeat until no elements can be combined.

The map generation has been a really informative and fun experience so far. I decided to model by "stepping down" a ladder of abstraction. At the top level, what is a map? A series of nodes in a graph. To create a map, generate a random graph. At the next level, what is a map? A series of shapes. So give each node in the graph a shape. Well, what is a map after that? A grid. So overlay the graph with its shape on the grid, and all the cells that "fall through" the shapes are the rooms. Then you just look at the shapes of the graph and trace a path between all of the connected rooms on the grid. Turning it into several smaller problems made it pretty straightforward compared to a lot of the guides I found that had pretty involved algorithms.


This sounds really fuarrrking neat. Any screenshots or code?


File: 1480014033311.png (62.14 KB, 200x200, racket-image-14721840241472184024777.png)

Sure, here's a screenshot of a generated series of rooms. I struggled a lot to figure out an abstract interpretation of a geometric shapes before settling on one that I liked. Abstractly, a shape is a bounding box of lines. Therefore, a shape is a logical conjunction of inequalities which takes a point or cell and determines whether it is in that shape. Then to see which cells are "open" instead of walls, or fall through the shape, you just apply the functions to a blank grid.

I tried to hammer out a representation for triangles and other polygons before realizing it was taking up too much of my time and pulling them out. There's just circles (they look more like diamonds since it's represented on a square grid) and rectangles. I figured that was fine, since every roguelike i've played sticks to the same basic shapes. I also tried to decide whether I should allow overlapping or not and decided to keep it, since it can allow for some more varied room shapes.


The spells scheme sounds great. Some anon at /cult/ suggested this idea a while back (for a MUD he never even started) but the idea sounded pretty neat. Be sure to show your work once it's done!


Nice. You should look into cellular automata algorithms, maybe for carving features out of a set of rooms once the basic shape has been generated. They're pretty simple and work well for grids.


Lol... that was me actually, I did start it but after a couple of deaths in the family I didn't have time to make something worthy of showing.

Still gonna happen. OP will deliver.

Also kinda afraid to show my github to yall. :/


File: 1480048265307.png (181.34 KB, 200x119, JUSTINOS.png)

I have a simple little IoT system at home which has me connecting to a bunch of different devices (mostly pis) over ssh. I have no idea what the standard iot frameworks are so I'm making a hacky little thing.

The idea is generally a way to control these devices, but with the devices defining actions so any phone can enable a user to connect to the device easily and run actions. Ideally my tech-illiterate roommate would be able to handle my makeshift computer network in the house.

I'll make a user on each device which has a ~/.sshctl directory. In this directory would be a "actions" file which would be a easily-configured file (think markdown) that defines an action as a name and a set of linux commands. For example "Start Music" might run "mpc start" or whatever.

This involves an android app which opens ssh connections to these devices. The default view would prompt to add devices, giving them a name and credentials (username, password/cert), then add the device to a list on the home view (ala connectbot). Selecting the device would open the device's view and propagate a list of actions from this ~/.sshctl directory. Clicking each action would execute the commands on the device.

Ideally in the future there would be more things in this .sshctl directory, maybe containing some more files that would define a layout with buttons and labels so sshctl'ing into a pi controlling my thermostat would show the current temperature and have an intuitive layout to control it. Maybe I could replace ssh with mosh at some point too.

I don't even have a prototype as I'm still wrapping my head around the libraries and the android build process. I have 4 years of java experience but never really dived into the android ecosystem (or any mobile development) until the last few days.

This might be a crazy rant or stream of consciousness, but once I get something slightly working I'll share a repo here. let me know what you think!


I think there are better solutions than SSH here...
Thinking Android hits central webserver which hits the Pis over HTTP with commands.

Both could be a security boondogle. At least the HTTP way you only expose port 80 - and you wouldn't even have to expose the Pis to the internet directly. You could route them through a proxy server on your internal network, so all the public facing web server sees is a single host it is sending instructions to. That way an attacker couldn't directly scan the Pis.


Do you know of any standard IoT technologies for this sort of use? I've talked to people in my local tech/business scene that claim to fund IoT tech but don't have a straight answer for this question.


Could you not shorten that link?


For what purpose? Connecting to Pis?

Uh, I don't know, any computer with a NIC could do it. What's the specific use case?


In the case of Pi's, I think SSH is just fine, better than most solutions considering the issue of security.

However, a more standard way of doing this would be through a RESTFUL api. But what I would suggest is generating a public-key that would authorize a certain device a certain action.

Deploying keys or using something built in like IPFS's crypto would work. It really depends on the devices and their overal topology. If in a star configuration a central json-rpc like server with signed queries/actions would I would think be the 'proper' way. If it's more of a uniform network or a complete graph, then that'll be a trickier solution. At that point you might want to use dht (IPFS) or designate a central point as a message queue (ZeroMQ/Redis) to process inter-device communication.


it's stream.allsprk.tv


Neat, are you doing frequency analysis or just dictionary/bruteforce?


File: 1480360992897.png (5.55 KB, 200x131, scrot.png)


Writing a replacement for vim*

I'm starting by basically cloning vi as a kind of baseline, then I'll add
features on top of that.

Pic very related.

*vim as in "what I use vim for," not "I'm going to make a 100% feature-complete clone of vim"


Anything in particular you're planning on extending vi with? Also, language?


You gave me the idea of trying to do the same with a simple editor like nano to adapt it to my own requirements


> Anything in particular you're planning on extending vi with? Also, language?

My big focus right now is to lock down a "complete" editor (which is the main reason I chose vi as a model -- it's the smallest text editor that I can comfortably use). Once that's done, I'll use the vi clone to bind a higher-level language to the core editor.

Everything is in C right now. The bulk of the editing language's parser will almost certainly be generated with yacc, and then everything else will be implemented in the editing language itself. Ideally, the current interface would be completely rewritten in the editing language too, but realistically it's probably going to stick around as a kind of rescue mode.

The main goal is to have an editor that:

1.) is simple enough that I can successfully compile it on a fresh OS install
2.) is extensible enough that I don't ever feel the need to recompile it

tl;dr -- In the long term, I'll probably end up with something superficially similar to Acme with vi keybindings



Neat. Good luck, Lain.


File: 1480402373876.png (2.74 MB, 200x125, Screen Shot 2016-11-29 at 8.05.29 PM.png)

Started writing my own operating system.
I took an introduction to operating system design course at university that focused on principals and extending an already working operating system as a lab component.
I want to learn more about implementing an OS from scratch so i have been learning about and working on this for a few hours total now.
So far all that it does is set up a stack so I can call C functions from ASM, then print some chars to the framebuffer. Its not much but its a start to a topic I previously thought was restricted to wizards.
If I can get to a point where I have implemented process switching I will be stoked.


Implementing multi-tasking is fun. You tend to get very colourful bugs, as it's easy to accidentally fuarrrk things up and unintentionally start a process writing to the graphics memory.


I had an of writing something very similar once, down to the "acme with vi keybindings" part.
I concluded that it would be better to just implement it in the scripting language of choice, and provide a small set of primitives for drawing on the screen and editor interaction in C. Then I realized I'd basically be reimplementing emacs in another language.
I suggest you use an existing language instead of implementing your own though, you'll end up with something weird and ugly like vimscript.


I'm writing a text adventure. There's not much code to be written since I'm writing it in Racket, but there's much content to come up with. I'm trying to play some old text adventures such as Colossal Cave Adventure to get a feel for it.
I've always liked writing in a somewhat surreal and silly style like that so I'm enjoying it.

I've also written some code for a shell.
It's supposed to be more like a language of its own specialized for REPL use with easy interfacing to shell commands than a normal shell. It'd be strongly typed and it should be easy to transform utilities' outputs into records. It would have some specialized primitives, such as paths.
I don't think I'll get that done any time soon, for the time being I think I'll be satisfied with a normal shell that has a nicer syntax.


File: 1480643627791.png (6.84 KB, 200x200, 4822cc1dffafef0e3fcdb5fca979f0b3bd351fc7.gif)

None yet. I don't know any programming languages and I don't know what sort of thing I would even try to make.

Learning will be my personal project.


thats the spirit mate. best of luck to you.

finally got some free time this weekend to work on my projects.

a gopher server written in Go, started out as a clone of Gophernicus but now I want to differentiate it somehow, not sure how exactly though.

been on and off with llgo, an LLVM backend for Go for a while now too but the energy is a bit low to be dealing with that now.

got a toy scheme that i want to try and improve. at the moment it's just reading up how i might go about that.

not strictly programming but ive been having some fun with embedded gentoo on a raspberry pi.


I've done this Lainchan client in Ruby (beginner) https://gitla.in/cosmicpuppet/lainchan.rb


I thought they directly mentioned Gentoo is not (fully?) working on ARM?


Thanks. There's a ton of languages. I'm not really sure where to start. I'll check the beginner's general here in a little while for reference.

Good luck to you on your projects too.


File: 1480716513709.png (40.81 KB, 200x120, tmp.png)

Wrote a cookie killer plugin. Heard about the trick to present lists in a plain textbox instead of a listview, grew quite fond of it. The code is 6kb of text.


The funniest thing is that most people that genuinely reply to OP often procrastinate on their project, and reply only to get replies to them.

Replies to them makes them feel validated which gives them a sense that they did something, but in all honesty they are lying to themselves.

No, I wont tell you what I am doing, fuarrrk off you're not going to steal my ideas.
See how hard that was? No need to talk to these anons... just do your dang project, get satisfaction from that, not posting about it


i've had no issues with cross compilation on my desktop targeting my Pi Zero. I run stable with few exceptions though, which for Arm isn't a lot of software.


Thanks, I needed that.


but proving my superior intellect to a bunch of random virgins is what I live for?


I'm writing my own simple text editor in C on Linux with ncurses. The data structure I'm using to handle text editing is the gap buffer. When I get basic things done, I'll try to add some programmability to it, maybe embed Guile or Lua.


I'm currently doing a lot of soykaf in android. It's fun, to be honest. Currently I'm finishing a mobile game manager, but I'm not sure if i should release it since I'm solving a problem that probably nobody else experiences (i have a crapload of games on my phone and i don't like how folders look like).

After that I'm gonna start working on a game engine. Android again. It's been a while since I've developed vidyas and i want to get back on track.


File: 1480805362996.png (15.36 KB, 200x52, scrnwd.png)

I am planning on playing around with some convolutional neural networks for some simple computer vision problems.

I holed myself up for the last week and today I completed my scraper for collecting data on tagged images. Now I only have to let it run for a few days to collect some data (target are about one million images). The next step will be the analysis of this data and then I have to build some interesting neural network architecture (planning on using TensorFlow). For the scraper I used Python. At first I wanted to use Haskell but I decided to try using popular languages more because:

1. In case others want to read or use my code in the future. (But I made heavy use of generator comprehensions and some more functional constructs – sometimes in an ugly way – so it might not be easy to read regardless.)
2. I want to try focusing on results instead of the programming itself. Because programming is so much fun I often get lost in the process.

Python might be a bit ugly but it is a nice language for getting things done because of the large standard library and its vast community.

I only have a general theoretical knowledge of neural networks so I don't know if I will get something nice out of it. But I think some easy task like automatic tagging should be doable. Would be nice to implement my own generating neural network like http://mattya.github.io/chainer-DCGAN/ but I don't quite understand how this works atm.

When seriously working on some project I use LeechBlock to block everything distracting. Works good for me. But from time to time I need a break so after completing the first milestone I feel like some brewing soykaf is excusable. Besides it would be nice if my ideas were good enough for others to steal them…


Huh, I write software that I need myself. A software that I miss now is a minimalistic IMAP client (web interface lags and is like kicking dead whales down the beach too much for me). Do you know any? I currently plan to hack on SimpleMail, because its password storage policy is like kicking dead whales down the beach.


Yeah, that's pretty much what happens with the internet. Coming to programming boards provides the illusion of doing programming related stuff and you end up in brace style threads or wasting energy just bashing a language you don't like.
Not that it's the general case though, sometimes threads here can inspire you to try something new or you find some online challenges or whatever.


Also first Ruby project.. well first project in general.


I've been busy with finals and class lately so I haven't made too much progress on my roguelike, but I'm in the middle of refactoring it to fix some weird bugs in level generation. The model I used to represent neighbors of rooms was over-complicated and was leading to weird situations (a vector where each indexed value represented a room in a NESW direction), and since I wasn't taking advantage of the data representation (room positions are randomly generated and have no bearing on NESW slots in a vector) I decided to get rid of it. The way the rooms are generated currently just creates what's really more of a rambling tunnel, it's completely linear. I don't mind that for now, it makes things easier so I can move on and get to more interesting things.

To help with the debugging I started using Racket's contract system, particularly the (define/contract (fn args ...) (predicate-about-domain? -> predicate-about-range?)) and it's made things so much more straight-forward. Now when I get error messages the contract assigns blame to the proper calling function, gives the function name, and says which argument is failing. I was getting like errors like (first expects list, receives empty) without line numbers or context and it was making things really tedious. Now I get (function-name: contract violation, expected: (listof blah), given: empty, in: an element of the 3rd argument of (-> predicate? predicate? (listof predicate?) predicate?) contract from: blah, blaming: blah at line number: ...) and that soykaf is great.


Cool (also i moved all my projects on gitlain)


I wrote a script to rename, categorize and encode videos from a glob in shell script a few days ago. Not a large project, really.


I'm going to be making some modifications to some minecraft server control software so that it monitors and restarts the server after it crashes.

Gotta nuke my desktop and replace my nameserver first, though. Going to be a busy christmas break.


Wow, that's a bit convoluted. I feel like helping out a bit, so I have some advice and a more idiomatic implementation of that script.

First of all: decouple the data from the program. You don't want to rewrite part of the program every time you want to add some new series to your script, just like you don't want to recompile your window manager every time you edit their configuration (I'm looking at you, suckless fanboys).

Second: you should read a bit of Ruby code. That's very different from the style you see in the wild. Ruby doesn't need parentheses when calling a method, in fact parentheses are usually only added for clarity or in case of ambiguity. And method names are strictly snake_case, CamelCase is only for class and module names.

This implementation is a bit more rubyesque. Hope it helps.
series = [
name: 'South Park',
episodes: [
13, 18, 17, 17, 14, 17, 15, 14,
14, 14, 14, 14, 14, 14, 14, 14,
10, 10, 10, 10
name: 'Rick and Morty',
episodes: [ 11, 10 ]

loop do
puts 'Random series [0]'
series.each.with_index do |s, i|
puts s[:name] + " [#{i + 1}]"

print '> '
n = Integer(gets.chomp)
choice = n == 0 ? series.sample : series.fetch(n - 1)
# Instead of checking for valid values,
# use methods that throw an exception
# when used with invalid values, ignore
# the exception and retry from the "begin".

season = rand 1..(choice[:episodes].length)
episode = rand 1..(choice[:episodes][season - 1])

puts choice[:name]
puts "Season #{season} Episode #{episode}"

puts "Run again? (y/n)"

print '> '
break unless gets.chomp == "y"


I finally wrote a seddy which doesn't die in a fire.


File: 1482481994421.png (39.47 KB, 200x200, i-hate-myself-and-i-want-to-die-t-shirt-design-1.280.280.s.png)


Cool, I'm also doing a game engine that loads maps from Tiled.

It's written in C/C++ and has a multi-threaded Lua scripting system (scripts are run asynchronously from the rendering/physics/input/ui.) The system works by simply passing callbacks and object-ids to a Lua manager that then handles all the nitty-gritty stuff (acquiring a lock and giving the object and callback to a thread from a thread pool.) Objects can also pass messages to each other.


Code for something hit by a bullet.
function Messages.kill_yourself()

Code for a bullet.
function Events.Physics.collision(object, collision_info)
object.kill_yourself() -- Sends message (lookup operator is overloaded)

The Tiled maps are loaded by a Lua-script that talks to the rendering and physics systems.

Currently busy porting the rendering code from SDL2_Renderer to OpenGL (more flexibility) curently only the Console-UI has been fully ported to OpenGL (allows you to inject Lua code into objects by typing into a window on the screen, for debugging purposes.)

I've been working on it on and off for over a year now. But I still haven't released it, because I never quite feel like it's "ready yet," and I'm terriby insecure about my code. Hell, I still haven't ported it to Windows yet because I can't get my build system to work (but the code is pretty multi-platform as it uses SDL to handle a lot of platform-specifics.)
But I'll eventually release it, and probably post about it here, after I get some examples/tutorials written for it.

I also have some game ideas that I'm pursuing.

Progress has been slow for about half a year due to
life stuff


seddy's dead, baby...


Writing a programming language with excruciatingly simple semantics, but I'm procrastinating because of complexity creep, and because I haven't even started the garbage collector.


what language are you using?


C++11, trying to use modern good practices and lay out everything in a """maintainable""" way (however I've yet to comment much).


best of luck to you man. good to see people setting the bar high for themselves.


I'm implementing a (hopefully snazzy) small size optimized vector much like the one described here:
In Ada.
Though I have to do things differently, because Ada generics and C++ templates are different beasts.


> Hasn't yet implemented garbage collection

Do you have to? Why would your language need it, over say RAII like rust/C++ implements it?


I'm pretty new to the whole programming thing, and I'm currently trying to get into a good university, so I've made a URL shortener in Python using Flask. It's coming along and I'm really happy about it!


How do lainanons get inspiration for their projects? I want to do some projects to improve my programming ability, but nothing seems to be inspiring me to really sit down and bash out some code.
I was attempting to make some sort of reddit commandline browser but wasnt really feeling it, as it mostly just involves boring REST api interaction.


>How do lainanons get inspiration for their projects? I want to do some projects to improve my programming ability, but nothing seems to be inspiring me to really sit down and bash out some code.
I write programs I expect to use often.

I hate most software I use, so I have plenty of inspiration on how to do all that I want and more better than the current offerings, if they exist, and I pursue this.


File: 1483793548252.png (76.14 KB, 150x200, 1480892488609.jpg)

It's easier to write software for use cases you're familiar with. Using your own stuff should make you feel warm inside.

I'm working on a rss feed aggregator, aiming to implement a good search function to it as well as automatic keyword extraction and whatever else i feel like trying out.


I've been working on a string library for C inspired by the SDS string library (https://github.com/antirez/sds). It works by storing the metadata of the string in a header that prefixes the actual string pointer. This allows the strings to work with all read-only functions that operate on char*.

The goal of the library is safety and clarity, as the library has protection against integer overflows and many utility functions for operating on strings.


Originally I started working on this library as a set of string handling functions for my irc client, which I'm currently rewriting. I decided half-way through that it would be best to separate that code into an independent library for reuse in future projects I work on.

Let me know what you think / functions you should think should be added (Just look at the header file for current functions written).


Wow looks really well done, hope you continue to maintain it.


Finally got around to fixing up my desktop, and I can finally get back to doing small os development


I've been having a really hard time with personal projects lately. I think of an idea, then I start working out the details, planning it out, etc. But when it comes time to implement it, the ide has turned into a monster project with so many features that I never get it all done.

Even putting some effort into it, to get the project to finished state would take years for 1 person to do. But I don't have years to work on it, I lose interest/get frustrated after a few months without getting any tangibile mv thing finished. And of course, I don't have anyone else interested in teaming up on any projects.

So I guess my biggest issue is finding a project small enough that I can actually complete it.

Anyone have any suggestions?


as much as you guys knock it, this is exactly what agile/scrum/XP/memesoykaf tries to solve


Might not be the best thread, but I'm really looking for something to attach myself to these days. There's a lot of neat projects out there but anything reasonably mature is hard to get into and a lot of things I actually use I don't have many things I think need changing or the task too big.

Anyone have any ideas for starting out or small things they're looking for help on?


Stop making your projects so big.

Instead focus on making tools that do one thing really well with good abstraction. If you want to make a web scraper make one that works in an extensible way but start small.

Make it scrape a single web page for a specified css / xpath selector.

Write it so that you could easily change what you do with the data by passing it a callback or object that will modify how you save the data etc.

The point here is you start with something that scrapes pages. Then something that can process all the jpgs on a page into a gif just through a new module.

Then you rip out the connection code into another module and write something that can post to url.

Piece by piece, separate project by project, you are building upon your old code base to extend its functionality. Sooner than later now, by reusing your code, you have a complete tool you can use to auto post to social media websites by scraping web sites and posting their contents on instagram, twitter, and tumblr blogs.

The point to take away is stop trying to think up all 10 pieces of the project and instead focus on what you want to do NOW. Write what you want to do NOW in a way that is easily extensible for those other 10 things though.


Don't inflate projects, and work on the implementation as you do the planning.
Even if you are thinking of *features* you should focus first on getting the core of the project... and getting it /right/.
Also, projects shouldn't be complex, if you find the implementation to require a lot of complexity, think again, it can probably be made simpler.
If you are adding too many bells and whistles, consider whether or not they're really necessary, or if they can be added by the user. KISS, do it either the UNIX way, where you can just pipeline with other applicaitons, or the Emacs way, where it's easy to extend with some embedded language like Lua or Scheme.



Thanks for the tips, I'll try them out on my next project.


C++'s way is super unsafe (the safest conceivable implementation would require the constant potential for uninitialized "null" values), and Rust's way is very complex and requires a dedicated portion of the type system to do it well. Anything telling you that Rust mystically solves the GC problem is selling you snake oil


I don't think rust solves the GC problem, I think GC is the problem.


Working on a POX-OpenFlow router for SDNs. Works pretty well so far.

Also starting work on a Python-based layer-3 IMUX.


If GC is the GC problem then Rust "solves" it just as much as C or Forth does. The problem obviously isn't just GC because anyone with a brain in their head prefers languages with GC for majority of programming tasks (eg websites, data analysis, desktop applications (the worst offender for unnecessary uses of C)). Many C or C++ projects have their own GCs too.

The problem is that not everything can be done with fully GC languages, and it feels like there's unbeatable problems when it comes to GC. We need more languages like Rust, and it's a great step in safe non-GC languages. Obviously it's hard to use, but it's probably easier than trying to use a non-GC language for a nontrivial project safely. It just shoves the difficulty in your face instead of letting you keep those bugs in.


Where should I start to make an image viewer? It's for linux but I don't want to use Xorg's libs (I'd like to use it on "pure" wayland) so I was thinking to use (and learn) sdl.


By "GC problem" I really meant memory, where the trinity of Safety vs Performance vs Friction can only be solved two at a time (it should be easy to determine which tradeoffs are made by C, Java and Rust).

What problems cant be solved in GC languages? Are you talking just about real time constraints?


Made a small server which I can use to control what videos to play on my TV, via a raspberry pi.

It's basically just a controller for omxplayer that uses dbus and youtube-dl to fetch resources and play videos, with a flask server for handling requests.

Next step is to implement some small elisp functions that lets me send links to it through emacs, so I can watch the videos in my feed (elfeed) on my tv instead of locally.


Randomly-generated key cipher built in python. I'm gonna get a lot of soykaf for programming in python, aren't I


If I don't get soykaf for working with Java, I think you can get away with just about any language here.



If you're using SDL for rendering, you're not doing "pure" Wayland. You're doing SDL and letting SDL talk to whatever graphics system it happens to be sitting on, which means your app will work for X or Wayland (or pretty much any other graphics system SDL works on).

In other words, there's not really any difference between using SDL and using any of the other toolkits that have Wayland support, such as Qt or GTK+.

If you want to do "pure" Wayland (akin to using XLib or XCB to write an X client), search for "Programming Wayland Clients" - it's an online book that gives details on Wayland architecture and has code examples.


I just discovered this http://illustration2vec.net/ where you can feed it a picture and it basically recognizes a character and tags it with the appropriate tags (long hair, green eyes ...).
This is done with a neural net. They got their data from a booru site, 1.5 Mil pics.
If I had access to a giant pepe folder that is labelized (pepe smoking, maga cap etc) and make the neural et recognize and tag the different pepes that it pulls from 4chan would this be of interest to anyone ?
Theoretically if it worked it could create on it own the biggest pepe folder on the net and with tags ! So you could have a cool search funtion.


This anon here. I ended up taking a long break on my project for classes. I hit a major stumbling block because I was dumb enough to try and roll my own graphing representation because I didn't like the library that was available in Racket lisp for graphs (imperative and stateful made it weird for me since I've only worked on functional programming). However, I bit the bullet and swapped over to the library and used its graph implementation as the primary data representation this week and finally got everything fixed up and using it.

Now I'm going to be working on characters (PC/NPCs), rudimentary AI, and finally combat, where I'll be able to work on the magic system that inspired me to work on this in the first place. After I have everything in place then I'll spend time polishing things and adding features that would be necessary for a "real roguelike", e.g. stairs and new levels.


> In the long term, I'll probably end up with something superficially similar to Acme with vi keybindings

I doing pretty mutch the same thing ! But, what i really want it a clone of Acme with something more like Syntax highlighting, Checking error in the file, config file, autocompletion, keybindings. Im doing in it with web technologie. So far im been using it for 1 year. It been great, but i am no where to achived parity with Acme. Maybe one day .


I've been working on my own python program for making employee schedules. It uses a local optimization algorithm. The problem is, I don't know how to put the data into a nice grid format. Do I need to learn GUIs or can I somehow export the data into a spreadsheet?


Just use comma-separated values? Excel/calc/etc read that as a spreadsheet. This is the typical way to store code intended to be used as a spreadsheet.