Recent submissions

Comment · 8 years ago
I agree with afarrell that lying is not advisable. Lying is a very bad thing. Convincing someone else to do a bad thing is even worse.

The method I used when I was Software Development Manager was to ask one of the programmers how long he thought it should take (or estimate it myself). Then I told management that it would take 3 times that long. We usually could make that deadline but it was often close and sometimes a little late. I have since learned that it will take PI times as long as you think.

Telling the programmers that they have half as long does no good. They will not write code any faster. It may even distress them and a distressed programmer produces less code causing it to take longer.

FYI

Consider carefully what I say; my first computer program compiled and ran in the summer of 1967. I have typed in a program while both Bill Gates and Paul Allen watched over my shoulder. I'm retired now but still work daily on a subgame for minetest.

Comment · 8 years ago
I am more trusting of naturally occuring substances than I am of chemicals that do not occur in nature cooked up in labs of big pharmaceutical companies.
Comment · 8 years ago
These are some interesting observations regarding music and machine learning. It has been my experience that the majority of the output of ML music generators falls into the category I would classify as noise.

I briefly experimented with procedural music generation many years ago and will relate my experience in the hope that some may find it interesting or take inspiration from it.

I had read the Byte magazine article called "A Travesty Generator for Micros." which works with text files and realized that Markov chains could be applied either to whole word or individual letters. Sufficiently long chains of letters almost always produce actual words. Sufficiently long chains of words generally produce complete (although nonsensical) sentences. Excessively long chains copy the input to the output. See [1] and [2]

At the time I was playing LOTRO [3][4] which uses ABC files [5] which are a text representation of music. I used the .abc files as input to the travesty program and got very interesting output. I used the rescan method which reads the input file for each note to output. It is slow but uses far less memory than the array method which reads the input once and generates a complete table of all transitions.

Running travesty on a single .abc file produces an output which is very similar to the input and only mildly interesting. Chaining together 2 or more input files is when it gets more interesting. It did not work well unless the input files had the same key signature.

I considered the possibility of transposing all input files to a common key signature but did not implement it. Nearly all music representation is an abstraction of the music. Music is generally quantized into notes of the even tempered 12 note scale. The tune is recognizable regardless of the instrument it is played on. I wondered whether there were further abstractions which could be used similar to the way that either letters or words could be used for text but am not sufficiently musical that I could discover them.

If you try this I think you will quickly get results which encourage you to continue.

[1] https://en.wikipedia.org/wiki/Parody_generator

[2] http://runme.org/project/+travesty/

[3] https://en.wikipedia.org/wiki/The_Lord_of_the_Rings_Online

[4] http://www.lotro.com/en?

[5] http://abcnotation.com/

Comment · 8 years ago
Comment · 8 years ago
I had considered this as a possibility following much the same train of thought expressed by abakker but because it diverges from most common practice (and from mathematics) and because I was unsure whether anyone would actually want it, I had not really considered using it.

While reading the article and the comments I realized that it will work perfectly in my NISC processor [1]. I just need to update my specification.

To extend the simple first specification to include multiply is very simple. I just need to have a MUL register which, when written, multiplies the written value by the value in the accumulator with the low part of the result being left in the ACC and the high part in the MUL register.

Extending to include integer divide is a little more complicated. I will have to add a DIV register and a DIVEX register. Writing to DIV will divide the value in the ACC by the value written leaving the result in the ACC and the remainder in the DIV register. DIVEX will contain the address of the routine to call when division by zero is attempted which means that DIVEX must be loaded before division is used. If I specify that DIVEX is initialized to zero by the hardware and that DIVEX==0 means that divide by zero leaves zero in the ACC and the remainder (former contents of ACC) is left in the DIV register then 1/0 = 0 will be the default behavior with the ability to change that behavior simply by writing the address of the divide exception handler to the DIVEX register.

I leave it as an exercise for the reader to determine how to deal with this in high level languages. I can fully support it in machine code and assembly language.

[1] https://github.com/BillBohan/NISC

Comment · 8 years ago
For the rest of the article start by reading https://en.wikipedia.org/wiki/Datapoint_2200 Datapoint allowed Intel to continue development with the same architecture but required all future processors to have a shuffled instruction set. The mov group on the 8008 and the 2200 was octal 3ds with d being the destination register and s being the source register. The first digit 3 got shuffled to 1. The registers were also shuffled:

8008 bits 8080

A 000 B

B 001 C

C 010 D

D 011 E

E 100 H

H 101 L

L 110 (HL)

(HL) 111 A

Datapoint did not want Intel's future processors to be able to execute Datapoint machine code. They had a lot invested in their software.

Datapoint also had a 5500 processor which was more powerful than the 2200. It was microprogrammed rather than the simpler logic decode of the 2200. It was compatible with the 2200 but had many more instructions (think Z80). Yes it was that instruction set. The engineers at Intel who worked on the 5500 design left to form Zilog.

I worked as an electronics technician at Datapoint and performed test and repair of many 2200 and 5500 processor boards including writing short machine code routines to exercise the hardware.

After I left Datapoint (1977) I worked for Tandy where I repaired thousands of TRS-80 Model 1 computer boards which used the Z80. When the Tandy engineers came into the repair area with the programmers who had written Level 2 BASIC for the TRS-80 with the first masked ROMs, they tried the ROMs on a board and it didn't work. I told them that all the boards in the area needed repair but I had one that I had just repaired. I was introduced to Bill Gates and Paul Allen and the ROMs were put on my repaired board. I typed in a one line program to count and print numbers on the screen and it worked. Bill Gates offered me a job at Microsoft which had about a dozen employees but I turned him down and stayed at Tandy. I wrote more test programs and transitioned into full-time programming.

Comment · 9 years ago
I tried getting friends to play RPG's in the early 1980's but they didn't show much interest until I came across a supply of 6" (150 mm) square pieces of styrofoam (discarded packing material from work) which I painted with gray acrylic paint. I cut some in half and some in quarters and used them to depict the dungeons for use with metal miniatures. After that I had a group which showed up every month for 5 years.

I wrote a program for my computer which generated dice rolls, monsters, treasures, and random names to assist me in my role as Dungeon Master but the critical element was my ability to ignore or re-roll any result which seemed too unfavorable. Good players really help the game but a good Dungeon Master is essential for an enjoyable game. Computers alone cannot exhibit the empathy necessary for a great game.

Comment · 9 years ago
Modular arithmetic is mentioned but base 6 is not well covered.

I started gforth and entered:

3 3 + base ! ( avoiding 6)

I was in a world where there was no 6. 5 1 + . gives 10 as a result. 6 1 - complains that 6 is an undefined word.

Decimal returns things to normal.

Comment · 9 years ago
Comment · 9 years ago
I always log out. I cannot think of any advantage to remaining logged in. I can easily envision disadvantages to remaining logged in whether those reasons are real or imaginary. I also lock the door to my apartment when I leave. There are people who will take advantage of any opportunity they find.
Comment · 9 years ago
Comment · 9 years ago
One of my favorite numbers is 355/113 but it's still hard to guess.
Comment · 9 years ago
When I worked for a company that made label printers we had a potential customer who wanted us to print labels with human readable and barcode fields with 4 random letters and 4 random digits but did not want the letters to spell any obscene words. We asked for a list of words to ban but they declined to provide such a list. We did not get the contract.
Comment · 9 years ago
Only two days ago I learned that was the way to get a line break in my README.md file on Github.
Comment · 9 years ago

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton