Category > newsandupdates
Posted by postfuturist on 2010-04-25 12:12:04
As a software developer, I work on top of abstraction layers. There are a number of black boxes I build on top of. Compilers and servers fall into this category. The less time I think about the mundane details of how the code I write gets run, the more time I can spend dealing with the higher level abstractions, like "what is this application supposed to do, exactly?" That level of ignorance is helpful at times, but ultimately not healthy to maintain absolutely. That's one reason why I've been steeping myself in the black arts of compiler construction. The other seedy underworld I have placed myself in recently is that of server administration.
I'll cop to this: I suck as a sysadmin. My first act, after putting myself in charge of my very own server (a VPS, actually) was to lock myself out of administrative access. Well, the best way to learn something is by taking it apart and sometimes you break things this way. When I was just a young thing, I would quickly grow tired of playing with toys. Phillips screw drivers were my favorite tool, they allowed me to take apart almost any electronic toy or piece of equipment. Sometimes I broke things. I loved electric motors, I would take them out of my toys, and wire them up to batteries for fun or slightly nefarious purposes. But mostly I turned perfectly good toys into piles of parts. Once I figured out that my desk lamp had quite a bit of electricity flowing through it. I learned this by taking out the bulb and poking my finger into the bare socket. I had seen someone causing water to separate into hydrogen and oxygen (O2) gas by applying electricity, so I placed to wires into a glass of water and connected the other two to the parts of the same lamp socket. This produced a terrific flash of light, and melted some of the wires into balls of molten copper.
Me having a server is like a ten year old boy having 110 volts of electricity at his disposal. I don't really have a lot of experience with server security and I might get a shock here or there, but I probably won't burn the house down. Since you are reading this very blog, I have managed to successfully migrate it to the new server, as well as my wife's blog and a private git repo. I've even made some improvements. Apache isn't even installed on my server. I'm running Nginx which is directly interacting with php running through a CGI interface. I'm using normal WP Cache for page caching and APC for PHP opcode caching and it seems to be pretty snappy. Now that I have a server playground to work with, I can experiment with other technologies, like CouchDB, MongoDB, Node.js, Django, Rails, the oddly-named Hunchentoot, and whatever else I'd like.
All in all, I've had fun with the new server, setting up file permissions, making sure only the services I want running are running, no extra open ports, and all that. Getting Nginx to do my bidding is a bit of a challenge, but worth it compared to the massive hulk that is Apache. All this is possible through extremely inexpensive Linux VPS services provided by ARP Networks. Apparently, these guys don't spend any money advertising, they just are awesome and get business through word of mouth. That's probably why they are so inexpensive. The introductory level VPS is only $10 a month, compared to $20 for Linode or Slicehost for similar service.
Posted by postfuturist on 2009-12-10 02:40:38
This is awkward.
Most of my family and friends consider me to be a devout Christian. Mostly they believe this because that's what I've been until relatively recently. I have a few things to get off my chest about this and to set the record straight.
I was raised in a very devout and loving Christian home. These are the types of homes that create strong Christians. I was one of those for a very long time. In college I got involved in a very intense church and college group. I felt a strong ownership of my faith and my involvement in the church. I believed the Bible deeply, especially everything about Jesus. I very much believed the core Gospel message and considered myself to have a personal relationship with Jesus. I prayed a lot. I read the Bible a lot. I attended many meetings, and worshiped, and spoke in tongues and everything. I did it all, and did it all wholeheartedly--for years.
Let nobody say that I didn't have a real experience of Christianity--that I thought I was a Christian but wasn't. I was the real-deal, if such a thing can exist. I had spiritual epiphanies and experiences. I often confessed my sins and shortcomings to God and other believers. I truly felt remorse over sin and asked God for forgiveness on many occasions. I had little fear of death as I was utterly convinced of a very pleasant after-life. I had faith.
All I ever got in return for my faith was warm fuzzy feelings and friendships with other Christians. I believed that God healed me when I was sick in the hospital but the fact is that my internal bleed was detected, and that surgeons took care of the physical reason for the internal bleeding. I just ascribed my good fortune to God. I never had anything happen that qualified as a miracle. All I ever had was faith. Other things happened that I prayed about that seemed to have no divine intervention. God did not seem to solve things that I prayed about. Financial problems, health problems, relational problems, and other calamities just continued for me at the pace that, I believe, most people experience them. God did nothing in response to prayer.
I gave God a lot. I gave him many, many hours of my time. I gave him a lot of money. Ten percent of my gross income turned into over half my disposable income when it came to tithing. I seriously paid a lot of money. I even tithed when I was in massive debt. I was tithing to a God that I thought was the kind of God who spoke to people and healed people and responded. However, everything that I had taken as responses from God were easily explainable from a materialist perspective. The Bible shows God talking directly to people. Somehow this never happened with me. All I had were vague impressions and feelings or coincidences that I ascribed to God.
It took me a long time to realize that it is OK to give up on one-sided relationships. It is normal and healthy to stop communicating with those who never respond. Send a few emails to somebody without ever getting a response, and eventually you stop. I prayed to God tens of thousands of times. If God wants to communicate with me, the line is always open on my end. He just hasn't called. I've done plenty for God and given him plenty of chances to show himself as God, but he either doesn't exist, doesn't care, or doesn't want me to believe in him. Either way, it leaves me in the clear to safely ignore him.
Having spent the last three years not attending church or involving myself much in reading the Bible, praying, worshiping and the like, I can attest that it hasn't made much of a difference in my life. I do not feel that I have become a worse person. If anything, I have relaxed a bit. In the last three years I have become happier. I've left behind some unhealthy addictions. Instead of looking forward to an afterlife, I can focus on the present life. Instead of tithing, I support a child in the third world. Instead of feeling guilty for not shoving the gospel down other people's throats, I only feel some regret for the times in the now distant past when I did. I have not become unethical or amoral. I just care more for people and less for God.
Posted by postfuturist on 2009-07-22 23:58:20
Amazon S3 is an amazing service. I just wrote some code at my day job to utilize S3 to offload static content to S3 which takes a huge load off the web servers. It has an amazingly simple REST API. It's a breeze to use. I'm thinking about using S3 for my own personal backups. The fine-grained pricing is fantastic, just pay as you go.
I am a happy Netbeans user, especially since NetBeans 6.7 was released. I just got a little happier today when I installed the jVi plugin which adds vi / vim features to the text editing portion of NetBeans. It works well, providing a nice synergy of the productivity of the IDE with the power-user text editing capabilities of vi. It has normal mode features that tie directly into NetBeans, so you can do simple things like switching to different tabs without moving your hands off the keyboard. Now all I need is vi style editing in the web browser.
I turned 30 today (well, July 22). Anything I do is no longer fantastic or amazing based on my age. People generally do wonderful, amazing things in their 30's. That's a lot to live up to. For some reason, I thought about mortality today, and it is a surprisingly awful thing to think about. We spend hours a day in a state of dreamless sleep, which doesn't seem to bother us as much as the idea of an eternal dreamless sleep. It is easier, I suppose, to imagine another life after this one, and bank on that. Then there is no fear of death, for death is just a gateway to something "more" real. It seems dubious. Eternal bliss, no suffering? How will my thoughts be like my thoughts now if my brain has rotted away. I know at some level that my thoughts are somehow intimately involved with the chemical and electrical (and perhaps quantum) processes of my physical brain. That part will eventually rot and go away. If I have an eternal spirit within me, does it carry my thoughts? Could they be the same? Non-being is a tough one. Best not to think too much about it.
Here's one thing I don't buy: when people die, we are sad, not for them, but for us, because we no longer have them around. There is more to it than that. We are sorry for the person who has died, because they no longer have life. They can no longer carry on a conversation, eat ice cream, read a book, take a hot shower, fall in love, or travel to Europe. I feel sad when I hear about the death of somebody I didn't know. No loss to me, but some loss to them, right? If not than life has no value to the people living it. That's absurd. Are they in a better place? Can you really say for sure that that soul still exists? Can you, really? You can have faith, but faith coexists with doubt necessarily. I cannot say with certainty that my thoughts will extend beyond the life of my mortal body.
Posted by postfuturist on 2009-06-16 00:38:52
Supposedly, Thomas Edison said, "Genius is one percent inspiration, ninety-nine percent perspiration." Apply that to patent litigation, and a successful patent suit should entitle the lazy patent holder to no more than 1% of the proceeds of their brilliant idea. That's being generous.
I used to be involved in the video game industry. I went to a conference or two, and involved myself in a handful of discussion forums. I just didn't sign NDA's (non disclosure agreements) just to here about somebody's amazing game idea. Unless I was being offered a salary, there was no point. People who think that sitting on a great idea has any value whatsoever have lost already. The only valid reason for an NDA is if a legitimate game studio has a licensing deal for some real IP and a contractual agreement to keep a lid on things. People who believe their brilliant idea has an intrinsic value are forgetting that it is all in the execution.
The really delusional ones were those who thought that they were going to create an MMO. The sheer technical and artistic manpower required to build even a mildly immersive multiplayer digital reality is staggering. Small teams need not apply.
Now, that's not to say that you can't build things and be successful. But to build amazing things, you need to be a builder. By far, the most delusional folks at video game conferences were those who had no skill in building games themselves, but were looking to recruit others to build their ideas for them. If you are independently wealthy, you can hire people to build your ideas for you. Until that time, you have to build it yourself.
I've been thinking about this, and thinking about building something. Not a game, necessarily, but some piece of software that fills a need that people have. I've always been a fan of the advertisement model. It's not that I love television ads, or ads on hulu.com, but I do love not having to pay for the programming out of pocket. I pay enough each month for my cell phone and internet connection. I won't buy cable television. If I had it, I don't think I would ever get around to building things in my free time. My problem is that I'm not an entreprenuer. I think that's ok. I don't really want to be the marketing guy. I don't want to be the hype machine, or the guy who can sell anything to anybody. I don't want to be that guy.
But, I do want to build things and share them with other people. I don't really like the idea of shrink-wrap software. I don't buy software (I use free software) and so I don't think I would try to sell it to other people. I don't pay for using gmail, facebook, or google maps. Instead, there are ads on the page. So, if I created something for people, I would feel OK about putting up ads to generate a little income. That seems reasonable.
I don't have any amazing ideas yet. I've been thinking about the idea of lists. There are so many things in our life that revolve around lists of things, and there is no easy, centralized, generic list management thing on the internet. Or, at least, none that I've heard of. I figure if I haven't heard of it, it must not be that great. There are little mini-lists here and there. There are TO-DO list webpages, there are Facebook apps that allow you to manage lists of books or other media. There are ways to manage lists of bookmarks, and other things. Sometimes, I just want to have a virtual notebook of lists that I can quickly get to, add items, reshuffle, add new lists, etc. I want lightweight lists that don't need a bunch of meta-data. I want text lists. When I brainstorm, I create a list of ideas. When somebody tells me about a great movie, I want to add it to a mental list of movies to watch. Invariably, that mental list deteriorates over time. My lists cannot always be catagorized. Where do I keep a list of career ideas, or classes I'd like to take, or programming topics I'd like to investigate further?
So, maybe I'll build the ultimate list application on the web for my own benefit and the betterment of mankind. Or maybe somebody else will. In either case, I'll be happy. Whoever does the hard work can reap the financial benefit. I'll get my uber list application in the end, and that's all that matters.
Posted by postfuturist on 2009-04-25 13:08:22
PrBoom is a fairly conservative port of the original Doom source code for modern computers. It is very stable, incorporates a lot of improvements and additions to the Doom engine from other ports. It has one shortcoming, however. The joystick support is awful. You can only use the first four buttons on your joystick in a fixed configuration and one pair of axes for walking forward and backward and turning. This makes playing the game with a joystick not a compelling experience.
I recently picked up a Logitech Dual Action USB game controller. It's a fantastic controller, especially for the sub $20 range. It is in a standard modern console configuration with a D-Pad, two analog sticks, and 12 buttons (4 face buttons, 4 trigger buttons, "start" and "select" style buttons, and two buttons activated by depressing the analog sticks). The joystick is perfect for using with console emulators. I am somewhat more of a console gamer than a traditional PC gamer. I enjoy the modern game controller layout quite a bit. I actually enjoy playing first person shooters, like Doom, as much with a good controller as I do with the keyboard/mouse combination.
I decided to do something about the poor joystick / game controller support in PrBoom. Instead of 4 buttons with fixed functions, I changed the code to treat the buttons (as many as you want) as key presses and so can be configured for any function. I also changed the analog stick controls to be in a more modern console style where the left stick is for moving (backward and forward and side to side) while the right stick is for turning. It took a couple hours to get into the source code, figure out what's going on and implement the changes. At first I tried using Code::Blocks as the IDE, but that proved to be an unsatisfactory experience, so I switched over to Netbeans 6.7 M3. Netbeans has fantastic autocomplete support for code written in C. It's basically flawless.
I have a few more changes I'd like to make. I would like to add some configuration for the behavior of the various joystick axes so people can set up the controls however they like. Also, I would like the option of using the various axes like buttons, too. This would allow, for example, using the various directions on the D-Pad for different functions. PrBoom is missing the ability to assign a key/button to cycle through the available weapons. This is not a problem on the keyboard, as there are so many keys, but it is not ideal for a game controller, even one with 12 buttons. The sensitivity of the analog control for movement that I added is linear which turns out to be not ideal for fine-grained aiming and careful movement.
Once I've brought the game controller integration of PrBoom into the 21st century, I will try to get my changes merged upstream with PrBoom.
Posted by postfuturist on 2009-04-19 12:24:21
[caption id="" align="alignnone" width="640" caption="Steve and Meg's Wedding"]
[/caption]
Posted by postfuturist on 2009-04-07 08:18:09
I had to scrap my codebase after a false start. I took a second look at my goals after discovering the 7DRL. To my surprise, a large number of people are writing their own roguelikes. This is a common pasttime among hackers, apparently. My project looked like just another roguelike, but in Python. I don't have enough free time to write everything from my last post in any reasonable time frame. So, I am making the project one step simpler for myself. I will write the game with a pluggable/modular architecture (an educational task itself) which will allow these various features to be added in over time, and perhaps even by other people. My goal will be to design the core architecture, and functional pieces. Instead of getting caught up in the minutia of FOV, random level generation, gameplay balancing, an so forth, I can focus on an architecture that will allow these parts to be written by others and swapped out.
What I need to do next is define what a module and a plug-in are, exactly. There are certain core modules that need to exist, and there can be only one (at a time, I suppose) like the FOV module and the interface module, but there are some which can exist in parallel with others of the same type, like AI modules, level generators, etc. In some definitions, a pluggable architecture means that there are hooks that plugins can "subscribe" to and just work on top of an existing functional program. That doesn't exactly work in this context, as there are main pieces that need to exist, which I would like to swap out easily. More on this later.
Posted by postfuturist on 2009-02-18 00:41:04
The primary Caretaker, Facilitator, and Mad Genius behind deliciousrobots.com and the author of this blog is me, Stephen A. Goss. By trade, I am a software engineer, which is a slightly fancy way of saying computer programmer. I have many hobbies and diversions, but the focus of this web space is exploring ideas both new and old in internet and electronic technology. This blog, powered by the venerable Wordpress, is an old idea in internet time. It will always be sitting here at blog.deliciousrobots.com . Other subdomains will contain a shifting mass of other, new ideas in internet technology, mashups, and collaborations.
The central page: deliciousrobots.com will always be a static page with direct links to each active subdomain project, including this blog.
I am currently on shared (read: cheap) hosting from the lovely folks at DreamHost. If these pages get enough traffic, I will eventually upgrade to non-shared hosting. If you find anything on deliciousrobots that you find interesting or you want to collaborate with me on some project, please contact me send a typed letter to steveth45 (at) gmail.com.
These are the sorts of things I am interested in that you may find on deliciousrobots: software development, web design, web interactivity, social networking, sharing, collaboration, digital activism, video games, creative writing, social consciousness, socialism, diversity, and ninjas. That's only a partial list.
Stay tuned. This can be easily achieved by subscribing to the RSS feed through the links on this page.
Copyright 2009, 2010 by Stephen A. Goss