vlion: cut of the flammarion woodcut, colored (Default)
"Taken together, the image of a computer scientist that
emerges in the U.S. is one of a genius male computer hacker
who spends a great deal of time alone on the computer, has
an inadequate social life, and enjoys hobbies involving
science fiction."

The Stereotypical Computer Scientist: Gendered Media
Representations as a Barrier to Inclusion for Women,Cheryan et al, 2013

I don't know if I am a genius, but I think I fall into the rest of it a good deal.

When I think about it, the reality is that I fit entirely into a computer science geek stereotype : used to watch anime, like Linux, like fantasy/sf, introverted, spends lots of time alone(ish) on the computer. ESR's Portrait of a Hacker really describes me well. But the funny thing is, a lot of this came about before I went online at 15 years old. Most of my personality and tastes were largely set before I really owned a computer. There was no role model or expected touchstone of a computer geek that I can recall before then. How did I drop into it? I don't know. Does the personality call to the computer, or does the computer call to the personality?

I don't know.
vlion: cut of the flammarion woodcut, colored (Default)
Went to a local software hack group. They've got some ruby on rails project they are using for their group work right now. I pitched in and learned ruby/rails on the fly to add some stupid routes. It was awesome.

Came home, shook out ruby/rails on the mac, got postgres.app installed, got my BEAST game's pages shook out a bit better.

I need to get some sort of task tracker rolling for BEAST, I think.
vlion: cut of the flammarion woodcut, colored (Default)
Considerations on the problem of data management.

(0) The cloud is for data that will leak. Account information is being lost constantly. The best secure service out there that I have heard of is tarsnap, which is not a friendly service.

(1) My data needs to be content-searchable, as well as filename searchable. Much of this information can be extracted.

(1.1) My data includes email, pictures, music, video, source code, and in short, the generalized document idea.

(2) Therefore, a search tool needs to be created. Spotlight is a reasonable solution, but afaik, closed source. It can be substantially improved, I expect.

(3) My data needs to be globally versioned. This will incur at least a doubling of the space occupied by it. Git/hg/etc are designed for source code.

(4) My data needs to be migratable. This implies that the archives need to be (1) copyable or (2) distributed in nature.

(5) The archive needs to be reasonably transparent to existing management systems. HG, for instance, treats .hg directories as special. So HG can't be used to version .hg systems (which is what is going to logically happen).

(6) A desktop-only solution is fine. The web has problems that I am not interested in solving. A local-only database for the search index is fine, as is possibly storing all the archive information in (cue horrible stories from people who have done distributed databases).

(7) As a core principle set:

(7a) There is no reason that data should be to a computer user who has access to multiple computers and does not suffer destruction of all computer simultaneously.

(7b) There is no reason that textual data should be unsearchable.

(7c) The software that performs these services would be able to access any information on the system and thus ought to be auditable and, ideally, open source.

I'm contemplating what it would take to produce these two things:

- Desktop search service

- Data management/versioning system

I am figuring that the desktop search properly will involve three components: a reasonably aggressive parser hacking apart the data files, a database, and a client interface. The parser will of course have to support a number of different formats.

The data management & versioning system could likely be built on top of git's primitives. The reason I say that is that git is relatively simple under the hood, exposes a lot of its capability to the Linux user, and has a very fast communication protocol. Around this could be wrapped a tarball, the indexer, and a gpg call to bowtie it all off.

Is anyone to work on this sort of thing with me? This is a reasonably serious project that I anticipate would span two or three years before maturity. Things to consider:

- I would insist on A/GPL3 licencing

- I would not drop this project without a reasonable and viable alternative being available. This is sort of a big deal to me.

- I have worked on software both academically, commercialy, and have interacted with open source for years. I can crank code when I am on the roll.

- I am open to using your pet language & tech stack (I'm personally interested in learning Clojure right now), and would learn it if I didn't already know it.

- If we pulled this off, this be of a scope to go on your resume.

- I offer virtual cupcakes. :: cupcake ::

vlion@dreamwidth.org routes to my email address, if you don't want to comment on this post
vlion: cut of the flammarion woodcut, colored (Default)
The well-known QUIKTRAN system is based on interpretation of FORTRAN statements. The FORTRAN program under debugging may be modified freely by insertion and deletion of statements. A form of nonconditional breakpoint capability is included in the sense that a statement can be inserted at any point in the program which, when reached, has the effect of transferring control to the user. Capability for examining and modifying variables is present, as well as a variety of modes of tracing (print all assignments to variables in a given portion of the program, all assignments to selected variables, all control transfers within a specified region, etc.). Furthermore, extensive run-time diagnostics made possible by the interpretive mode are provided, and several unusual "bookkeeping" features, similarly based on interpretation, are available, such as the AUDIT command, which generates information as to which portions of the program were never executed, which variables were never set, or set but never used, during a given execution of the program.

from Evans and Darley, AFIPS 1966


Nov. 4th, 2011 06:52 pm
vlion: cut of the flammarion woodcut, colored (Default)
If anyone wants copies of my thesis, please let me know
Debugging by Visualizing Communication on a
Parallel Embedded System
vlion: cut of the flammarion woodcut, colored (Default)
My code has run real slow for my thesis.

But, I noticed something odd last night. My code was running faster the more I ran it. Obviously something was being cached...
With a little digging

* (time (render-trace "../../programs_of_interest/one-transfer"))

Evaluation took:
  6.003 seconds of real time
  2.025841 seconds of total run time (1.815692 user, 0.210149 system)
  [ Run times consist of 0.153 seconds GC time, and 1.873 seconds non-GC time. ]
  33.75% CPU
  13,178,489,438 processor cycles
  4,899 page faults
  120,938,224 bytes consed
* (time (render-trace "../../programs_of_interest/one-transfer"))

Evaluation took:
  3.147 seconds of real time
  1.871226 seconds of total run time (1.728549 user, 0.142677 system)
  [ Run times consist of 0.245 seconds GC time, and 1.627 seconds non-GC time. ]
  59.45% CPU
  6,906,955,110 processor cycles
  1,481 page faults
  120,910,704 bytes consed
* (time (render-trace "../../programs_of_interest/one-transfer"))

Evaluation took:
  1.888 seconds of real time
  1.807235 seconds of total run time (1.773451 user, 0.033784 system)
  [ Run times consist of 0.048 seconds GC time, and 1.760 seconds non-GC time. ]
  95.71% CPU
  4,143,453,818 processor cycles
  5 page faults
  120,905,696 bytes consed

Notice the page faults! They really sucked up the time.


Oct. 22nd, 2011 10:19 pm
vlion: (matrix)
On any given day, I can write any of these computer languages:
- Assembly
- Bash
- C
- C++
- Common Lisp
- Perl
- Python
- XC

And can kludge together some level of:

- (Anything in the Basic family)
- C#
- Haskell
- Lex/Bison
- Prolog
- Ruby

I prefer Common Lisp for the vast majority of tasks these days. It's really quite excellent in almost every way except for (1) hash table manipulation and (2) sequence indexing. Those two areas are very verbose and really deserve a high-quality read macro to make them less so.
vlion: source: lisperati (lisp)
I've been using Common Lisp fairly seriously for about a year or so, and recently I've rewritten part of my Master's thesis project in Common Lisp (from Ruby).

How is it?

The parens rapidly become not an issue. Maybe it's a personal thing, but the very regular syntax frees me to think about my semantics. Some people seem to favor irregular syntax. I don't personally understand that; forgetting semicolons, commas, or other elements is a common screwup in other languages for me. Lisp takes that away. Regular syntax (instead of wondering what the right Thungus is to put There) makes things better. Maybe this would be less of an issue if I didn't have so many languages floating in my head; I have used Perl, Python, Ruby, Bash, Lisp, and Make in serious fashion in the past year; I'm going to be learning Objective C and Haskell in the next year.

The library situation is pretty much as good as Perl or Python. Xach's Quicklisp serves quite well in this regard, and I expect it to be the comprehensive Lisp archive for the next decade. Lisp's fully dynamic nature allows redefinition of functions and reloading of modules, which is totally awesome. I'm not sure what other languages support that. Perhaps Erlang?

Macros have made my code shorter and better maintainable. I have almost no repetitive blobs of code. What I do have, I *could* rewrite, but would sacrifice clarity. I have had bugs with my macros, which have not been wholly obvious at first. You definitely need to open up your cleverness to debug them. What is fully evident is that a master Lisper can do portable things with macros that in other languages, require the compiler writers to implement.

The lack of a mainstream-sized community is something I feel. I participate in Stackoverflow and Reddit's Lisp areas, as well as read comp.lang.lisp, and there are generally only may be 5-10 regulars, which are shared between all 3 elements. The IRC channel is pretty good though, although it's infested with "Do it Right The First Time" people, like a parody of the "Worse is Worse" essay at times.

Sequences are put together in a 'so-so' fashion. There are vectors, and there are lists, and functions are not clear which type they take (and they might take both). I expect there's a library that manages this, but I haven't searched for it, preferring to learn the language from the ground up.

The FORMAT (Lisp's printf) function is crufty and weird.

LOOP works, after a fashion, and is unquestionably one of the weakest parts of the standard; I expect I shall investigate other iteration macros after the thesis is finished. Possibly the ITERATE library...

I haven't used any database connectors yet, so I can't comment on them.

Lisp shares the Image model with Smalltalk; this is a model where the REPL persists over a long time. Python and Ruby have their interactive mode, which (as they implement it) is a weaker version. So a common deployment strategy is to deploy a Lisp executable together with an image to be loaded into Lisp at run-time. That's pretty off-the wall compared to the Algol-derived world which has a hard line between compilation & application.

In terms of speed, Common Lisp is a bit slower than C++ for heavy computation - in the hands of an expert. This is in stark contrast with other dynamic languages, which usually are a joke for heavy in-language computation and require a C extension.

Typing is weird - I think it's close to Perl 5's typing - and I don't have 100% of a handle on how to write explicitly-typed code. Usually it's done in an optimization context.

Integration with the shell is "okay", and really requires external libraries to fully handle cleanly. I have put together a few functions which are pretty sweet for that.

In general, Common Lisp usually works like a language that's been designed, instead of organically grown with weird and annoying gaps in it. In this, it works like the C++ STL or the C stdio.
vlion: cut of the flammarion woodcut, colored (Default)
Productive day so far. I set up a 'mostly' continuous build for my thesis PDF.

* Every hour I request changes from the bitbucket repo and drop them into a temp repo on a house 'server' machine.

* The house server builds the PDF

* The PDF is uploaded to my website.

This alleviates any issues of "did you send me your thesis", as well as ensuring that a copy is always available for myself and anyone else who cares.

Also, cron works in the most asineinly limited setup I've seen.
vlion: cut of the flammarion woodcut, colored (Default)
I'm trying to put together a project to document the systems provided by Quicklisp. git is the popular SCM solution and of course quicklisp itself is hosted on github.

Gorram git on Windows. The GUI is dysfunctional and unexplorable. The two-step commits (if I asked you to commit, go find what I changed and commit it!!). The requirements to have a SSH key on github. The installation of a *custom* git shell.

This is not sane in a modern environment. The driving principle of many- most?- high-quality interface designs is "Simplicity on the outside, complexity comes as you dig deeper". git just fails. Hard.

I'm going to keep using it for this project, because it's rude to ask people to use Mercurial/bitbucket (the better solution), when they've already invested time and energy into github for Quicklisp.
vlion: cut of the flammarion woodcut, colored (Default)
My router dies when I do an nmap Intense portscan of my local net.
vlion: cut of the flammarion woodcut, colored (Default)
Props to the U of Idaho ACM - they animated a skyscraper.

vlion: cut of the flammarion woodcut, colored (Default)
I work in embedded systems for my Master's thesis. The particular one I use is a fairly cutting-edge one called an X-Core. It's really new and is pretty fun to use. I think it represents the future in manycore processor design.

I've been struggling to get some low-level hacking going. Minimal documentation, unclear information, you name it, I'm dealing with it. Things are starting to come together. Code compiles, uploads, and executes.

But there's a ghost. It's weirding me out. I've used/programmed computers since 1995 or so. One of the key principles of programming computers is this:

  • When two statements A and B are sequentially ordered; e.g., A; B;, then A shall always execute before B.

In my code, not only is B executing before A, it's doing it some number of times, and then it's doing it out of order (I have a counter ticking upwards every time B runs).

There is no reason for B to execute even once before A, and there's even worse reason for B to execute out of order.

This is actually kinda freaky.
vlion: cut of the flammarion woodcut, colored (Default)
Windows 7 has proven itself to be quite excellent so far on my laptop.

The outdoor landscape backgrounds are pretty much some of the best photography I've seen in a while. I'm basically stunned by those visuals every time I see them.

Once my desktop has W7 on it, I will be fully transitioned into a 64-bit operating world. Well. Mostly. I have an older machine kicking around with Ubuntu on it, but it is likely to disappear when I boost my desktop's RAM. 8 GB is my desire for the desktop, but it might be better to hold off on that until I have moved down to New Mexico and have stabilized there - the desktop is sorta my play machine and I don't need to burn money on it.
vlion: cut of the flammarion woodcut, colored (Default)
I don't like Safari 4 on the Apple. Too slow, too much memory usage. Plus flash has a hard time being blocked. Flashblock is pretty important to me. Firefox has a similar problem.

Camino has flashblock built in. Teh Yay. HOWEVER. I found that the OmniGroup, who makes absolutely amazing Mac software, has a webbrowser for free: OmniWeb. I'm giving a spin, and frankly, on first impressions, it blows me away. Fast, fast, fast. Only problem is, I prefer the Firefox tab approach. I may be able to swap to that. I'll keep people posted, because I think good web browsers are of interest to everyone on the Web.
vlion: cut of the flammarion woodcut, colored (Default)
Just found out it that timestamps on the files I've been grading are in UTC instead of PST.

Hoo boy. Time to regrade.

I also have 40 pages of denotational semantics to read and understand.

Looks like it's going to be a hard-workin' weekend.

I've picked up some old lisp code I had; I have the kernel of a genetic programming program half-written. I think I'll try and make progress on it, then work on my taginator project.

Ah well. May have to retreat into WoW for a bit if things get too stressful.
vlion: cut of the flammarion woodcut, colored (Default)
A remote commit correctly flags the metrics site as needing to be rebuilt and on the next member of {[0-60]/5}, the metrics/rebuild process begin.

There are a few burps in the actual code, but I'm actually auto-building now. If the system doesn't need to be rebuilt, it doesn't try to do a rebuild.

vlion: (tree)
So it turns out svn post-commit hooks actually execute user-side. That's annoying. A commit can take a while as I run post-processing code for metrics.

A hack solution is to attempt to write a dirtyfile out to ~/temp on post-commit. This solves the wait time issue, since the time gets offloaded to Cron.

Another issue is I write code on 4 different operating systems and commit into the repo on all of those. What's going to happen when I commit from Windows to the Linux host server? I'll have to test that in a bit. First I want the *nix solution fixed, then let's see what SmartSVN does.
vlion: cut of the flammarion woodcut, colored (Default)
One of the things I've tried to do with my Master's work is to set up a continuous integration system on the department server for my Thesis files. The goal is that at any point in time, I can jump over and take a look at my metrics and my current PDF files, based on the state of the repository. The metrics have been a real pain to install, since the server has no real X display.

I think that this week I'll attain full hourly builds of everything. My next CI task is instead of cron, have a post-op trigger.

Then I can plug in some actual platform-independent code compilation and drop messages into my in-box when my code fails to build. Isn't *that* sexy?
vlion: cut of the flammarion woodcut, colored (Default)
Obscure fact: John Clark in 1845 created a device to compose Latin Hexameter:


vlion: cut of the flammarion woodcut, colored (Default)

August 2017

6789 101112

Style Credit


RSS Atom
Page generated Oct. 19th, 2017 12:42 pm
Powered by Dreamwidth Studios

Expand Cut Tags

No cut tags

Most Popular Tags