HN user

emil0r

195 karma

emil0r.com

Posts1
Comments90
View on HN

Even the GUI can follow the FCIS architecture. It helps immensely with testing and moving things around.

For a bigger program that handles lots of things, you can still build it around the FCIS architecture, you just end up with more in->chains of functions->out. The things at the edges might grow, but at a much slower pace than the core.

My experience with both sides is what's driven me to FP+immutability.

For your last question: I believe it's a false belief. I believed the same when I started with FP+immutability. I just did not understand where I should put my changes, because I was so used to mutating a variable. Turned out that I only really need to mutate it when I store in a db of some sort (frontend or backend), send it over the wire (socket, websocket, http response, gRPC, pub/sub, etc) or act as an object hiding inherit complexity (hardware state like push button, mouse, keyboard, etc). Graphics would also qualify, but that's one area where I think FP+immutability is ill suited.

Hit me up if you have any more questions :).

You are very right in that things need to change. If they don't, nothing interesting happens and we as programmers don't get paid :p. State changes are typically moved to the edges of a program. Functional Core, Imperative Shell is the name for that particular architecture style.

FCIS can be summed up as: R->L->W where R are all your reads, L is where all the logic happens and is done in the FP paradigm, and W are all your writes. Do all the Reads at the start, handle the Logic in the middle, Write at the end when all the results have been computed. Teasing these things apart can be a real pain to do, but the payoff can be quite significant. You can test all your logic without needing database or other services up and running. The logic in the middle becomes less brittle and allows for easier refactoring as there is a clear separation between R, L and W.

For your first question. Yes, and I might misunderstand the question, so give me some rope to hang myself with will ya ;). I would argue that what you really need to care about is the data that you are working with. That's the real program. Data comes in, you do some type of transformation of that data, and you write it somewhere in order to produce an effect (the interesting part). The part where FP becomes really powerful, is when you have data that always has a certain shape, and all your functions understands and can work with the shape of that data. When that happens, the functions starts to behave more like lego blocks. The data shape is the contract between the functions, and as long as they keep to that contract, you can switch out functions as needed. And so, in order to answer the question, yes, you do need to understand the entire program, but only as the programmer. The function doesn't, and that's the point. When the code that resides in the function doesn't need to worry about what the state of the rest of the program is, you as the programmer can reason about the logic inside, without having to worry about some other part of the program doing something that it should do that at the same time will mess up the code that is inside the function.

Debugging in FP typically involves knowing the data and the function that was called. You rarely need to know the entire state of the program.

Does it make sense?

The way I like to think about is that with immutable data as default and pure functions, you get to treat the pure functions as black boxes. You don't need to know what's going on inside, and the function doesn't need to know what's going on in the outside world. The data shape becomes the contract.

As such, localized context, everywhere, is perhaps the best way to explain it from the point of view of a mutable world. At no point do you ever need to know about the state of the entire program, you just need to know the data and the function. I don't need the entire program up and running in order to test or debug this function. I just need the data that was sent in, which CANNOT be changed by any other part of the program.

'vi' 'emacs' 'jove' -- use whatever editor floats your boat but learn the hell out of it you should know EVERY command in your editor

Those who picked emacs from that list never got the point of writing any code for the MUD. They greatly contributed to OS development all over the world however.

Yes, so in that sense it's sharded. In another sense it's all one server, as you can warp between different systems and meet all the players there in the game. Everything is run on one giant server.

Not sure how it is now, but back in 2014-2016 you could inform them of big battles ahead of time for a specific system, at which point they would, in their own words, reinforce the node (moving that particular system to its own allocation of resources). This often was the difference between being able to duke it out in an epic space battle or wait for the system to load while everyone lagged to death.

Used to play EVE a long time ago in a known alliance. The game mechanics were not that good. What made the game shine was that it's an extremely complex sandbox game, where almost anything goes. This leads to a very complex game that is almost entirely governed by how the other players react to your interactions with them. The drama, dreams, hopes and despair that comes with playing the game is the real reward.

It used to be that the game was really harsh when you screwed up, which made the adrenaline pump when you did something you knew was dangerous. For me as a hardcore gamer at the time, that was the initial kick. Now a days I believe they have lessened the harshness a bit, but it should still be one of the few games where you can lose literally hundreds of hours in investment by losing everything you own in the game.

A combination of bad PR from Sega Saturn, fanboyism of Nintendo over Sega, Sony absolutely killing it with Playstation One and hyping Playstation Two to pieces leading to few game studios making games for Dreamcast, which lead to fewer sales, etc.

I owned one, and absolutely loved it. But the amount of games you could buy compared to the alternatives was a massive drawback, and Sega didn't have enough household names like Nintendo to pull through.

Having Kids 7 years ago

Welcome to the world of being a parent. It can be frustrating, perplexing and mind-bending. Few things compare to those little arms snug around your neck, the head leaning on your shoulder, all in complete trust that you love them and wish them the best.

Isn't "saviours of Europe" more than WWII though? It's also the aftermath involved in those words and how the Cold War panned out with a Western Europe under the influence of the USA and an Eastern Europe under the influence of the Soviet Union.

I really wonder how this got to be the explanation behind IS and similar groups. They always reference the Qu'ran, the hadiths and the sunnah in everything they do. The US foreign policy was used as a convenient excuse and certainly wasn't helping at times, but the drive does not come from how they've been treated. The drive comes directly from the religious commands found in the Qu'ran, the hadiths and the sunnah.

It's the teachings combined with the knowledge of them combined with a desire to follow them that is creating the current situation with IS and other groups.

Some further information regarding the allegations from someone inside RKK at the time and who was heavily involved in the practical running of the corp.

I was involved in RKK from late 2004 to 2007, the period when BoB became a true powerhouse in EVE and helped out with a lot of the more delicate stuff. The allegations I can remember were T2 BPOs, inside information regarding upcoming features which weren't fully disclosed and placement of goodies (particularly plexes) in Delve.

So the inside information regarding upcoming features is true to a certain extent. Before the CSM they bounced some ideas off players in the corps they were playing with. This was not BoB only. Also, sometimes things slipped from their mouths when speculation ran amok on TeamSpeak. Again, I cannot imagine it being BoB alone. The directorship also tried very hard to limit this information, so when the T20 incident broke out many were surprised.

Now... onto the T2 BPO:s. At the time RKK was setting up its industry for replacing all the ships in the expensive wars. Before it had been up to members, but we wanted to build up a model where we were somewhere half in between the pure communism that existed in Evolution and the pure capitalism that existed in ATUK/DICE (iirc they were the capitalist corp). What we borrowed from T20 were 2 or 3 T2 small ammo BPO:s (all of them pretty much useless) and one Interceptor BPO which was the Malediction. As anyone who played at the time remember the Malediction was near the bottom of the Interceptors (Ares was worse I think?) and so wasn't worth much. The corp allowed members to buy them for the ridiculously cheap price of 5 for 20 mill. That's how little they were wanted on the market. And that's it... nothing more was gotten. We did have a Deimos BPO, but that one we bought for a heavy price (range of 20B at the time I believe, and everyone in the corp pitched in to buy it) which had a terribly ROI and frankly... we should have bought that damn Vagabond BPO instead (money printer for 4-6 years maybe?).

Then the issue of Delve which turned out to be an incredibly good region. There were 3 reasons: Moon goo, plexes and easy to tank rats. But first... a bit of history. BoB, which at the time was not an alliance, but rather a loose collection of corporations, decided to attack FA (Fountain Alliance). We decided to do that through Delve which was a region FA claimed, but did not have a lot of presence there. At the time you had your three basic stations in the region (before you could build your own stations) and they were fairly awkardly placed. After having driven out FA we (RKK) started to scout the region, because at least 2 of the corporations in BoB wanted to set up place somewhere. At the time we were building up our industry to support our war efforts and had started to look into setting up an entire production chain, as well as selling stuff for that lovely ISK. We did an entire scout of all the moons (I was involved, and boy was it boring. DAMN YOU CCP), did an inventory of the minerals and what we found was that Delve was a fairly defensible place (1-SMEB was not yet connected to empire) and you could box yourself in at the bottom at one of the arms of Delve with a defendable station, there was a good distribution of all the minerals, the tunnel to the A2 system and the Y2 system would give us ample time to prepare for defence and we had an angry neighbour in the form of FIX which gave us fights and kept the rabble away. Pretty sweet deal. Then with the T2 production chain (moon goo... pure money printer) we discovered we had nearly all the important moons in Delve (and this distribution was given before T20 even had joined the corp). So... we settled down there, took out FA, had a ton of good fights with the germans in Cloud Ring (those tempest volleys were just wiped you out). Then we discovered that you could easily tank the 6/10 plexes by yourself and that they dropped incredibly valuable platings. This was eventually nerfed. Then they added 10/10 plexes for the blood raiders which gave even better loot (was needed, every pirate faction needed 10/10 plexes) and the Blood Raider stations (did not like those... and in the eventual war with GoonSwarm and all their friends they proved to be a crucial weak point). The important factor though is that Blood Raider space is very cramped compared to the other factions. It's only 3 regions, which means that by its very nature resources are more compact which makes for good 0.0 living.

And that's it... that's the defence I can give and I hope it will put some doubts to rest for the people who were involved in that amazing and time sucking game which have caused I don't know how many dubious real life legal activities just to gain insider information. I mean... that's just crazy when you think about it. Espionage and cracking servers, just to gain an in game advantage :D.

Random trivia: dmZ and Haze from RKK wrote the original killboard. When other killboards sprang up some enterprising individuals though it a good idea to scrape the original killboard for killmails. Haze did not like that and so set up a pollution system for the scrapers giving out fake killmails. It ran for years pollution all the popular open killboards. He was very proud of this fact ^^.

Finally... for all the people out there who did play the game during this time. All we ever wanted was to give drama to the game, give you someone to hate and above all... we wanted you to attack us so we could have good fights. And take over 0.0 as well... you gotta have goals in life. Kudos to the ones who finally brought us down, even though you had to backstab us to do it. Which shows how macho we were ;).

All Hail BoB and SirMolle, the evil mastermind :D

Edit: Sorry for wall of text

Very misleading title. Wanted to read the article, was hit by yet another story that wants to be a minor novel before it gets to the point, and then skipped reading the article because... effort. Was left with the impression that you would now have to pay for using it and only upon reading the comments I finally get what it is they're doing.

For all time: That I still stretch myself, even when it's painful.

Right now: How far we have gotten with Realty Africa, a property crowdfunding platform dedicated to Sub-Saharan Africa. The response we have gotten on the ground has taken us completely by surprise and the potential market is massive. (Shameless plug: we are raising the final money for our startup costs at http://igg.me/at/PCA)

Software: reverie/CMS. Currently at the end of a rewrite, but I'm fairly pleased with how far it's gotten. Writing a cache manager is a serious puzzle though! (https://github.com/emil0r/reverie)

Family: My wife. She's amazing :)

* An infinite loop does not end, even in an infinitely powerful computer

What do infinite loops have to do with anything? Presumably the creators of the simulation would be skillful enough to avoid them.

That would be this:

"""

But it was still pretty exciting stuff. Holy Zarquon, they said to one another, an infinitely powerful computer? It was like a thousand Christmases rolled into one. Program going to loop forever? You knew for a fact: this thing could execute an infinite loop in less than ten seconds. Brute force primality testing of every single integer in existence? Easy. Pi to the last digit? Piece of cake. Halting Problem? Sa-holved.

"""

That was entirely worth the time to read. Very interesting take on it and it also shows how damaged I am by online forums thinking it read like a perfect troll.