I have now worked for one month at the best job I have ever had. I have never seen a software development environment so supportive of learning, and so well-disciplined in following responsible practices.

Almost all day, every day, we sit with a colleague and code as a team.

We write a test for a piece of functionality before we write the code to implement it.

We use a continuous integration server which turns a screen very visibly red and alerts our chat channels whenever someone commits code that breaks the build. We call a stop to all work until it's fixed, so the project is always functional.

We review new code with a pull request, then merge it directly into master-- and we delete every branch within two or three days of creating it.

We take seriously the feedback generated at retrospective meetings, with specific action items and deadlines which we all follow up on.

Instead of just adding more features, we keep a list of tasks to restructure the whole codebase, to make it easier and faster to add features-- and we are allocated official time to work on that.

And best of all, we only work forty hours a week, which prevents the errors that would result from exhaustion.

Does all this put us behind schedule? No. All of it makes our process faster in the long run.
Perhaps I should learn something that makes developers cringe, such as Visual Basic or .NET. This will take multiple steps of reasoning to explain, so bear with me.

I have been interviewing for various startups. That has been a very educational experience about the "expectation fit" between types of companies and types of employees. When discussing my recent job interviews with a friend who worked for one of the startups, he made a comment that he and his colleagues all worked long hours for very high salaries, and given my life goals, I should try to work someplace large and corporate. I then had the following hypothesis.

  1. I have focused on programming languages, version control systems, and other technologies with one common denominator: developers like using them. Also, I have been favoring seeking out workplaces with processes and management styles that support job satisfaction among developers. What if this disadvantages my specific life goals?

  2. According to this hypothesis, this affects who my colleagues are.

    A. They compete to get into companies that allow them to use these satisfying technologies.

    B. The project they work on for employment is so interesting to them that they consider it to be the main thing they are doing with their lives right now. As a result, they work long hours, and have very little free time after studying and practicing.

    C. Being a software developer is a major part of their identity, not just a way to pay the bills.

    D. They hold strong leadership opinions, rather than saying "I'm sure however you want to do it will be fine". They often seek out companies with fewer developers, each of whom is crucial.

    E. They are playing a game in which the victory condition is measured in dollars. The income necessary to sustain my frugal lifestyle is roughly 2/3 of the lowest end that motivates them -- or 1/2 if I don't mind living hand-to-mouth with a lot of risk.

  3. Reportedly, in some huge companies maintaining ugly legacy codebases in Visual Basic or .NET, software developers are only working when they are at work. They provide financial value for forty hours a week. Then they go home at the end of the day, forget about their jobs completely, and pursue their own projects.

My challenge will be to find a source of about $30,000 to $40,000 per year, which does not completely take over my ability to work on my own projects after hours. I have been given to understand that such jobs are scarce in the post-middle-class economy. My education and experience now disqualifies me from low-skill minimum-wage jobs, since employers would be concerned that I would quit to go back into software development. Income inequality is a game of thrones.
"When you play the game of thrones, you win or you die. There is no middle ground." -Cersei Lannister

The most appealing idea (although possibly not feasible) is to select one of my projects, focus 100% of my time on it, and generate an income through Patreon, rather than just fit my ambitions around a day job. That's a subject for another essay.

I spent fifteen years of my adult life performing unskilled labor for my day job, and the past two years experimenting with performing skilled labor for my day job. Each of us have a "personal business model", whether intentionally or accidentally. I'll continue to refine my personal business model as an ongoing experiment.
I wish I were exaggerating when I say the objective of the Neoreactionary movement is the reversal of democracy and human rights, and an intention to install a monarch CEO over America. Alas, that is how they describe their stance in their own words.

Recently, the most famous Neoreactionary thought-leader (one of the founders of the movement) was scheduled to speak about technology at a major software conference. When his detractors pointed out the content of his online writings to the conference organizers, the conference decided to un-invite him.

A flood of complaints emerged about persecution of the right wing by the left. Can Neoreactionaries really be called "right wing"? And if you're right wing, do you really want that connection? This is one of a series of distinctions which the complaints repeatedly conflate (including "They are no longer inviting him to speak" conflated with "They banned him").

Do you see the gulf between "right of center" and "James Bond villain"? At least "right" and "left" are dimensions on a political continuum-- the same perhaps cannot be said of overt advocacy for world domination. So if you ask "Is it wrong to un-invite a speaker from a convention for political views", that is the wrong question for this situation. Is establishing a dictator really politics? Extolling the Middle Ages is so far outside the Overton Window that it is not politics.

Scott Alexander wrote "The Anti-NeoReactionary FAQ". While describing this scenario on his blog, even he expressed concerns over removing speakers who are "insufficiently leftist".

The uninvited Neoreactionary speaker once blogged as follows:
As the King begins the transition from democracy, however, he sees at once that many Californians – certainly millions – are financial liabilities. These are unproductive citizens. Their place on the balance sheet is on the right. To put it crudely, a ten-cent bullet in the nape of each neck would send California’s market capitalization soaring – often by a cool million per neck.
That's only "insufficiently leftist" if the Pope is "insufficiently Satanist". No, scratch that. It's not even the opposite of leftist.

Consider another case; this case is of another software developer who invented an innovative new file system. He would be giving talks on it right now, were he not in prison for the murder of his wife. Would you look forward to sitting in an audience, listening to him on a stage with a microphone? If you weigh his dead wife and her family on one hand, and your enjoyment of file systems on the other, and if you have a sense of proportion, your answer is "no".

Your lack of desire to hear him talk will not bring his wife back, so what's really behind it? To give a stage and a microphone to a person is to communicate that you honor a person. That person must, at the very least, be bare-minimum honorable in public life. Are you "politicizing" the conference in this case? No.

If that's not politics, why is the original case of the Neoreactionary one of politicization of the software conference? When a Neoreactionary says he wants feudalism, this is not like when some leftists call America "feudal" and its citizens "serfs". In light of conditions in North Korea, we recognize that is hyperbolic rhetoric. Well, the Neoreactionary openly wants a return to non-rhetorical feudalism, in which you would be a non-rhetorical serf. When publicly pondering whether millions of Californians should be shot in the back of the head, he finds this concept troubling, but does not reject it out of hand. I am not blowing his views out of proportion for hyperbolic effect. You have a first-amendment right of freedom of association, which includes not associating with this person. His freedom of speech doesn't include the right to a megaphone.

Only with a complete lack of perspective is it possible to characterize the conference's decision as having anything to do with politics. If you would like to wring your hands over your uncertainty over where the line is drawn, this incident is not your test case. This software conference is so far from the slippery slope, they can't see it with a telescope.
I programmed this dice game to teach myself the JQuery library for Javascript, and to improve my Javascript skills. There will be many more features. If you think the current version is neat, you're really going to like it. I'm excited. And oh, yes, the visual design will also improve. But you know what they say: launch with the mimimum viable product.

Shout-outs go to my friends on the Lojban #jbopre IRC channel for their patience in answering my questions: rlpowell, chrisdone, kpreid, and Tene. Thanks to [livejournal.com profile] _jer for his professional tutelage and for hosting the webspace.
Over the years, I came to realize that my best work has always involved subjects that interested me, or -- even better -- subjects about which I've become interested, and even passionate about, through the very process of doing design work. I believe I'm still passionate about graphic design. But the great thing about graphic design is that it is almost always about something else. Corporate law. Professional football. Art. Politics. Robert Wilson. And if I can't get excited about whatever that something else is, I really have trouble doing a good work as a designer. To me, the conclusion is inexcapable: the more things you're interested in, the better your work will be
--Michael Beirut, "Warning: May Contain Non-Design Content" from Seventy-Nine Short Essays On Design.
There is just an astonishing quantity of paying work out there for projects that try to get people to buy things, and there is almost nothing I want to buy. I don't want to kindle a desire to buy more things. I don't want kindle that desire in others.

I have focused my design efforts on non-marketing pieces: magazines, maps, information guides, books, games, illustrations. I enjoy doing that-- particularly for topics that interest me. I am known for boundless, passionate enthusiasm. I don't know how to generate enthusiasm. Certainly not in exchange for money. I'm not sure I could live with myself if I did.

On the other hand, I think a lot of programming consists of making a product. That product is what you are selling. It is your business-- not a dozen different businesses a year. Someone uses that product. Corporate software, unfortunately, is chosen and paid for by someone who doesn't have to use it, and that's why it sucks. I hope very much to work on something that is chosen and paid for by the person who uses it. I want to make something the user wants.
Steve Blank talks about startup culture in Ann Arbor.

Steve Blank is an experienced expert on entrepreneurship, whose excellent blog I have been reading for a long while. He summarizes each post with a set of points under "Lessons Learned". He concludes his Ann Arbor article the same way:
  1. U of M has a College of Engineering dean who “gets it”
  2. He’s turned the school into an outward facing school, fostering an entrepreneurial and innovation culture
  3. The Center for Entrepreneurship is on board with passionate faculty, innovative curriculum and excited students
  4. The area has almost no experienced angel, super-angel or venture capital (as we know it in Silicon Valley) for Web/mobile apps, hardware and software
  5. The lack of experienced risk capital means a lack of experienced mentors, coaches, and infrastructure.
One of the major premises of his blog is that a startup is not a company. A company is what follows a startup. It executes a known business model. But a startup is an organization whose purpose is to search for a business model. This means it keeps changing until it gets consistently stable profit growth, then disbands, hands the reigns over to managers, and becomes a company. Until then, the startup keeps abandoning their business hypothesis and forming a new, altered one. Scientifically, you are expected to start off with a hypothesis that is wrong.

Silicon Valley calls this a pivot. Elsewhere it is called a failure, and you are embarrassed to have been wrong.

One difference in cultures is respect for failure. In Silicon Valley, you're proud to have made many attempts. It's "What did you learn from your first three startups?" In Michigan, it's "Why don't you get a job?"
I daydreamed about this system for years, and now I get to watch it.

World Builder from BranitVFX on Vimeo.

Gather round and listen to a story of me, self-surveillance, entrepreneurship, and a miniconference about the Python programming language.

I have always charged a flat rate for art and design.* This time, I wanted to time myself to find out what I earned per hour and adjust my future rates to what I need to bring in, based on accurate estimates of different types of assignments.
Read more... )

3D Model

Jun. 29th, 2009 09:45 pm
In preparation for moving an apartment into a single room, I have been modeling the room and its proposed contents in Sketchup. As you can see, I modeled the possessions with rather more detail than was strictly required. No doubt I will continue to do so until there is some kind of addiction intervention.

Jen did not expect that I would increase the verisimilitude any farther. But oh, how incorrect that was. I did not like the stock human figure that comes with Sketchup.

From Untitled Album

This virtual reality may have ripped the fabric of space and time, and several other fabrics as well.
Forgetting frustrates me. I've forgotten more knowledge in my life than peasants in the Dark Ages ever learned. The point of taking a class is not about what I learn. It's about what I won't forget. Then I can move forward on programming projects with confidence that I don't have to waste a bunch of time catching up on what the keywords and punctuation mean. I refuse to cram for exams and just lose it all. I have to practice, practice, practice-- then I need to keep doing a regimen of projects to keep in the habit.

At an informational level, I've understood true-false logic, strings, variables, constants, conditionals, loops, iteration, and recursion for twenty years. But it was learning, not training. I can self-teach, but my life was too busy for self-training. There is a certain hump I must surmount.

I owe my desktop publishing proficiency to taking classes, with a set of practice exercises on deadlines. Now I can pick up a new program and not even think about it. I just get in the Zone. That is the hump I need to get over with programming, which is why I am taking a class.

[livejournal.com profile] blue_duck and [livejournal.com profile] ssanfratello will understand the concept of training, right down at the muscle memory level. It's not just what you learn about stances, balance, breathing, keeping your options open like water, when to commit to swinging the sword, and absorbing the universe juice. It's about what your body does from practice, just WHAM. If you have to stop and access the knowledge, you have been stabbed. With a sword.

That's what I'm interested in. When it comes to my daily Lojban regimen, it needs to be engraved in the brain at the level of instant linguistic connection between word and meaning. I know the vocabulary of Lojban, but most of it I still have to translate from English, which should not happen. Translation wastes valuable milliseconds, too long for comfortable speech. Fortunately I do not get hit with padded sticks when this happens.

When I program Karda, it will be for language training, not just language learning. Spaced repetition algorithms do training. I'm interested in software for self-training in various skills. As Napoleon Dynamite said, "You know, like nunchuku skills ... bow hunting skills ... computer hacking skills." The idea will be for the software to remind you to practice the skill again, get feedback on the result, and modify the interval for when it will remind you to do it again.
I walked into the first class of Intro To Java and it was totally quiet. I sat down and the guy behind me asked me, "Hey, why do people learn Java?"

"What do you mean?"

"Like, why are you taking it?"

"To learn programming. It was that or take C++. Then I'll teach myself Ruby and Python."

"So, like Javascript? Javascript is a subset of Java?"

"No, they really shouldn't have named them alike."

"But Javascript's embedded in all the browsers."

"Yeah, it's like a monopoly so we have to put up with it."

"But Java ... what do people choose Java for?"

"The answer to that depends on as opposed to what."

"Like, what is Java good for?"

"The corporate world developed it so they trust it. Also it runs on different hardware platforms."

Now it has gone back to complete silence. The teacher hasn't started, so I'm blogging.
As a postscript to my last entry: I realize some of you will be curious to try out interactive fiction right away. I recommend you start with Andrew Plotkin's Dreamhold, both because it's designed as an entry point for people who played too many bad pieces of IF in the eighties and gave up, and because you don't have to download Frotz to play it. It's playable as a web browser applet.
I've been making a miniature toy Penguicon. You can run around in it and interact with artificially-intelligent miniature versions of people you might recognize. It's a shame Randy Milholland of "Something Positive" isn't returning this year--- had I made one for last year's Penguicon, it would have included something like this:

You hand the crumpled sheaf to Randy Milholland. His eyes, as they traverse the lines, lose their light by progressive stages. Finally he slumps into the sofa. "I've lost my will to live," he says.

Rippy the Razor Blade walks into the Consuite.


It's no longer here, it's lost. Maybe you can find it.
The sort of game you can play using an interpreter program like WinPlotz used to be called a "text adventure". Occasionally the word "storygame" tries to get traction and fails. The term of art has come to be "interactive fiction". The difficulty in naming results from so many simultaneous categories: programmers call it a simulator parser or a conversational interface, authors call it narrative prose, and gamers call it a puzzle game. Just as in the blind descriptions of Rudyard Kipling's elephant, they are all correct.

This project is experiencing feature creep like mad. I'm using it for a learning experience, and the more I discover the InForm system can do, the more I build in. It now simulates the player's mental and physical condition along several dimensions. I'm actually toying with the idea of having the game ask you for your LJ username, and building a programming track from your interests list, so you can plan out how to maximize your "fun" points score as the weekend goes by. I'm also realizing how many games Andy Looney has designed which you could play against him in the game room.

But no, this thing has to get out the door some time. I'm not going to program in every flower planter in the lobby. Building the hotel convention center and its contents is mostly finished, but the markup has run to the thousands of words. This is to say nothing of the pseudocode that scripts the behaviors, events, and puzzle mechanisms.

This is so fun, I think I need to find an organization for Interactive Fiction and see if I can get on the Board of Directors or something. Yeah, I'm that excited about it.

Let me tell you a bit about user interfaces as it relates to Interactive Fiction. An interesting thing happens when people get really good at writing text adventures. They're trying to manage the state of your knowledge: not too much too soon, not too little too late, see? Because it's a puzzle. Also they're trying to motivate you, carefully adjust to your expectations, respond to your constant errors, and put you at precisely the right frustration level, see? Because it's a game. They're also trying to predict and manage how you feel about it, see? Because it's a literary drama with a plot, setting, and characters.

All of those things involve them modeling the human, not modeling the computer system.

And what happens -- aha! -- when such people are also programmers? Not just any programmers, but programmers in the area of natural language interface. What happens when the best of them get together and program a development environment and framework, and then design the user interface for it, and then write debugging error messages and step-by-step documentation for it?

You get software that seems to read your mind, that's what. InForm 7 (available free for Windows, Mac and Linux) has the most kickass debugging error messages and step-by-step documentation I've ever seen.


Sep. 1st, 2006 01:05 pm
I've been waiting for this a long time. AllPeers is a method of file transfer that lets you set up your own private network of peers with whom you can send and receive files of unlimited size. There's no more need to email a bulky file and wonder whether it's going to get through. Add friends and family members who also use AllPeers in the Firefox web browser, and decide what files you want them to be able to get from you. Click here if you have Firefox, to go to the download page for this extension.

Supposedly they're going to eventually open the source code. Also, supposedly this method is much faster than sending files through email or an instant message client, because it incorporates BitTorrent technology.

Just one neat example of a little trick you can do with this, is instantly share a screen shot with a peer who's online... such as a tech support scenario.

My username is MattArnold. Add me to your networks!
nemorathwald: (Matt 4)
My Linux box is still set up to the resolution or refresh rate of that monitor which burned out last week. On every other monitor I use it with, it looks fine through the booting phase showing the Ubuntu logo above a scrolling list of things that are happening. But just when it is about to get to the desktop, the image shuts off and is replaced with the words "OUT OF SYNC".Read more... )
nemorathwald: (Matt 4)
Penguicon's tech guest of honor in 2007 will be Bruce Schneier, security guru. I was mentioning to Eric Raymond that I will be Head of Programming for Penguicon this year and looked forward to putting Bruce Schneier on panels about viruses, spyware and rootkits. Eric said something to the effect of not being interested in closed source software. I can't remember the exact sentence but it may have been referring to something to do with security programs that people use to protect their computers, such as McCaffrey, Symantec, Norton and so forth. Those are closed-source software.

Bad Windows security seems to affect Linux users too. We don't want to have to live in a world full of compromised botnets that are being used to send us spam.

Here now is the setup to my question.

The reason open source software can be trusted and closed source software can't is that someone can read the code of the open source software to ensure that it's free of spyware and other malware. A computer geek who reads the source code, compiles it, and installs the software can be assured that he knows what he's running.

Those of us to whom source code is unintelligible, and who don't know how to compile software from source code, use pre-compiled installer programs of open source software that we download from the internet. Someone in the open source community has presumably checked the source code of the program, but what about the particular copy of it that we are getting? What's to stop someone from distributing a precompiled installer of a popular open-source program, but altering it to include malware that will compromise the computer? Those who can't read source code would think we had the same program as everybody else.

Is this scenario likely or unlikely? Would it work? Is there anything set up to prevent it?
I'm off work today on medical leave, and working on the Penguicon program book. I use my Ubuntu Linux desktop computer for web browsing, instant messages, music-- everything but games and graphic design software. I dropped the folder "My Music" into Totem Music Player so that it would queue up all the music files in my entire collection to play for me randomly while I lie in bed recuperating and working on the program book on a laptop. I liked one song in particular and went to find it in my filesystem. It was nowhere to be found by browsing, but turned up with the "Find File" feature:
Screenshot behind the cut. )I right clicked it and chose "Open Containing Folder":
Screenshot behind the cut. )It's contained in home: Music: Soundtracks: Ghost In The Shell. So I clicked the Soundtracks folder.
Screenshot behind the cut. )The Ghost In The Shell folder is not visible in the folder that the computer says it's in. Why?
Thanks for alerting me to this, [livejournal.com profile] thefile! It's only a matter of time before [livejournal.com profile] cosette_valjean and I can explore the online virtual world of Second Life simultaneously, side by side. A version of the SL client program that can run on my Linux computer is under development-- long rumored of-- and has now been revealed. Linden Labs made a early and incomplete Alpha version of the software available for download and bug-testing.

I've downloaded it, and much to my surprise, the license says it contains source code. It also says that permission is given for anyone to modify and distribute it. That smells like Open Source Software to me, even though it's an Apache license which I'm not familiar with, rather than a GPL. If so, this is more incredible than I thought. Is this an act of self-destructive heroism on the part of Linden Labs?Read more... )

Can some of you tell me more about this license, or about running web services? Do you think LL is crazy like a fox? What are they up to? In any case, I'm thrilled that Linden Labs has made this move, and hope that they are rewarded.
[livejournal.com profile] camgusmis had some great thoughts on the xartum development messageboard.

It looks like spell casting would almost always involve the Perl programming language, whereas altering the world with Lojban is then the equivalent of prayer because it requires somebody to implement it in Perl ... or it's the equivalent of incanting familiars to do one's bidding, depending on how one feels about transcendent artificial intelligences who have breached a toposophic boundary.

It also makes me chuckle to imagine characters in the game entreating specific real-world Perl programmers by name in their prayers (or grimoires, if the Perl programmer is a BOFH). We can pretend that one of the transcended beings used to be Nat Torkington or somebody. But he is certainly no demonic familiar. He's more like a trickster god, I think.

One of the neatest things about xartum is that I might actually have a purpose toward which to put programming skills. We have the idea of creating a School For Magic located in xartum, in which those players who know Perl will teach rudimentary ways to interact with the game database to those of us who don't. Classes will be held in character, and almost entirely in Lojban.

I like the idea of game rules that are code. If someone finds a loophole, we should take a page from the story of "cheating Death" in "Lessons from Lucasfilm's Habitat" and not violate the world model. The gods should allow the mortal to keep whatever result he/she get from it, and then patch the code to prevent further exploit.

The niftiness of xartum is increasing by mathematical factors.
Twenty years ago, my parents wrote programs for the Commodore 64 and submitted them to Ahoy magazine and COMPUTE!'s Gazette, which would print the code in its pages and send my parents about fifty bucks. I had almost forgotten about this in the time since then, but Mom just found their programs available for download on the web, complete with screenshots and full credit to them by name. "Elfred" was a Christmas game. There was also "Dots" and "Tree Tutor for Tots". The first one was a sci-fi action game named Devastator, programmed by my Dad. The site calls it "a quirky little game that is more notable for its historical significance as one of the earliest PC games distributed with a magazine."

My parents programmed free and open source software!

September 2017

1718 1920212223


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2017 06:08 am
Powered by Dreamwidth Studios