code logs -> 2019 -> Sat, 26 Jan 2019< code.20190125.log - code.20190127.log >
--- Log opened Sat Jan 26 00:00:00 2019
00:10
<@TheWatcher>
iospace: and yet, if over there is anything like here, there's a "huge skill shortage" if you listen to the media at all. I long ago concluded that this is actually code for "graduates don't know the exact things we want, and people with experience and knowledge want to be /paid a decent wage/ and we can't be having with /that/"
00:11
<&[R]>
IE: everywhere that's hiring has shit managers
00:12
<@TheWatcher>
(There are seriously times where I wish I could go back to my 18 yo self and slap me around the head until I decided to avoid computers as a career entirely)
00:13
<&[R]>
Are the full tech companies (IE: Google, Facebook, Netflix, etc...) actually decent in that regard still, or are they buying into the "we must pay shit" koolaie
00:14
<&[R]>
koolaid*
00:15
<&McMartin>
FAANG is still offering salaries about 4x what anyone else can afford to pay
00:15
<&McMartin>
That's distorting the market too, but it's not completely obvious how once their labor needs are met~
00:16
< ErikMesoy>
TheWatcher: with a side order of "H1B visa workers from third world countries will be happy if we pay twice a third world salary right? great, get ten thousand of them"
00:40 Kindamoody is now known as Kindamoody[zZz]
00:44 Derakon[AFK] is now known as Derakon
02:02 celmin|away is now known as celticminstrel
03:08
<@iospace>
TheWatcher: where is that?
03:16 * iospace hugs McMartin anyway
03:17
<@iospace>
also, TheWatcher , my dad was "retired" by his old job
03:17
<@iospace>
he had the hardest problem finding a new job because of the fact he was 31 years deep experience wise
03:21 * McMartin laughs bitterly
03:22
<&McMartin>
I've been on the interviewing end of this for awhile now, looking for a skillset much narrower than people put on resumes
03:22
<&McMartin>
But you do get the occasional "shit ton of experience" guy
03:22
<&McMartin>
A recruiter sent me one of the founders of Macromedia
03:22
<&McMartin>
How the hell do you interview the guy who prototyped Flash
03:23
<&McMartin>
(My answer ended up being "forward the resume to the CTO with a note 'if you think we want this guy, you should be the one trying to sell him on our company')
04:06
<&McMartin>
Meanwhile: https://www.recode.net/2019/1/23/18193685/venture-capital-money-kills-business-basecamp-ceo-jason-fried is an entertaining if occasionally wildly meandering and surreal interview
04:08
<&McMartin>
I disagree sharply with a handful of his pronouncements about the software industry, but they are the kinds of things one would have a late-night bullshit session over
04:10
<&McMartin>
(Which fall into the two broad categories "not all software jobs have that profit model" and "https://xkcd.com/1827/")
04:10
<@iospace>
haha
04:11
<&McMartin>
But, like
04:12
<&McMartin>
When the side discussion about how the really good kombucha is made by leprechauns is not the weirdest thing in the interview I cannot keep this to myself
04:42 Vorntastic [uid293981@Nightstar-6br85t.irccloud.com] has joined #code
04:42 mode/#code [+qo Vorntastic Vorntastic] by ChanServ
05:38 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code
05:43 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Ping timeout: 121 seconds]
05:58 Derakon is now known as Derakon[AFK]
06:08 celticminstrel is now known as celmin|sleep
06:10
<&McMartin>
sad_trombone.ogg
06:11
<&McMartin>
After being really impressed with the code that gcc emitted for 32-bit ARM last time, once I boosted the bit-width of my operations its performance went to shit
06:23
<&McMartin>
Though it does do one trick I missed and once I apply that one my code is now 27% smaller than the gcc code
06:58
<~Vorntastic>
I really wish typing things other than plain English were easier on my phone
06:58
<~Vorntastic>
Because I could totally write code here
08:40 Kindamoody[zZz] [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has quit [Ping timeout: 121 seconds]
11:23 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code
11:55
<&ToxicFrog>
Vorntastic: get yourself an itty bitty bluetooth keyboard?
11:55
<~Vorntastic>
Probably should
11:56
<&ToxicFrog>
I have successfully solved the problem where this works:
11:56
<&ToxicFrog>
:foo { bar } defn
11:56
<&ToxicFrog>
While this appears to work but in fact overwrites the symbol table for bar if it wasn't stored in ROM:
11:56
<&ToxicFrog>
:foo @bar defn
11:56
<&ToxicFrog>
*symbol table entry
11:57
<&ToxicFrog>
I am, however, still struggling with how to do dynamic allocation in a way that can usefully be precompiled.
13:04
<&[R]>
Hmm, returning a list from a function called by map makes map return a flattened array
13:04
<&[R]>
Which makes sense given the language doesn't support nested arrays
13:04
<&[R]>
But I was hoping I could do something with that
13:05
<&[R]>
Err, all of this is xs
14:26 celmin|sleep is now known as celticminstrel
14:26 Kindamoody|autojoin [Kindamoody@Nightstar-hp9.f6t.15.193.IP] has joined #code
14:26 mode/#code [+o Kindamoody|autojoin] by ChanServ
15:06 Kindamoody|autojoin is now known as Kindamoody
15:50 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
15:50 mode/#code [+qo Vornicus Vornicus] by ChanServ
17:30 Kindamoody [Kindamoody@Nightstar-hp9.f6t.15.193.IP] has quit [Ping timeout: 121 seconds]
18:34 Kindamoody [Kindamoody@Nightstar-eubaqc.tbcn.telia.com] has joined #code
18:34 mode/#code [+o Kindamoody] by ChanServ
18:42 Vorntastic [uid293981@Nightstar-6br85t.irccloud.com] has quit [[NS] Quit: Connection closed for inactivity]
19:07 * ToxicFrog starts reading up on Arduino interrupts rather than actually solving the problem >.>
19:10
<&McMartin>
high five
19:10
<@iospace>
hahah
19:10
<@iospace>
screw Arduino
19:11
<@iospace>
use bare ATMega328ps!
19:19
<&ToxicFrog>
iospace: I mean, I basically am
19:19
<@iospace>
:P
19:20
<&ToxicFrog>
It's on an Arduino board but I'm writing all the code using <avr/*.h> and compiling with avr-gcc
19:20
<@iospace>
gooooood
19:20
<&ToxicFrog>
https://github.com/ToxicFrog/notforth/blob/master/Makefile
19:21 * McMartin should finish writing this article about abusing the C64 sprite hardware to hard-sync with the monitor
19:21
<&McMartin>
This after solving the much more difficult problem of docking the Switch without breaking it, because I am suddenly a confused grandpa when it comes to electronics trying to get this thing to work and there is no printed manual, just a series of help pages you have to search for on their support site
19:21
<&ToxicFrog>
I started out using the Arduino IDE, but gradually peeled out all the bits that depended on it and now I just have the hosted and AVR stuff, although it does assume that it's an atmega328p and not any other AVR.
19:27
<&ToxicFrog>
Hmm. Ok, it looks like to do pin change interrupts, I can use ISR() to define an interrupt handler for any of the three ports.
19:27
<&ToxicFrog>
The ISR then needs to remember what the state of the pins was last time it was called, and diff that against the current state to figure out which pin(s) changed, and then fire the appropriate pin-specific handlers.
19:28
<&ToxicFrog>
This is probably best written in C and then functions exposed to notforth for enabling and disabling pin-specific ISRs.
19:29
<&McMartin>
Sounds plausible
19:30
<&McMartin>
I have been linked this; it sounds reasonable to me: https://www.dropbox.com/s/4mst5j2ebwebj15/164414.jpg?dl=0
19:32
<~Vornicus>
Checks out
19:38
<&ToxicFrog>
This is going to be annoying enough that I might just write support for external interrupts for now~
19:39 ErikMesoy [Bruker@Nightstar-hq72t5.customer.cdi.no] has quit [[NS] Quit: Leaving.]
19:39 ErikMesoy [Bruker@Nightstar-hq72t5.customer.cdi.no] has joined #code
19:41
<&ToxicFrog>
Hmm.
19:41 * ToxicFrog returns to working on the defvar problem >.>
19:42
<&ToxicFrog>
I think what I really need to do here is, if called in a precompiled unit, just statically allocate the space; and if called in the interpreter, malloc() it.
19:42
<&ToxicFrog>
I'm not sure I currently have the infrastructure for that.
19:43
<&McMartin>
I'm now imagining you defining variables in response to external GPIO pin signals and fleeing in terror
19:46
<&ToxicFrog>
Nah, it's just that interrupts became annoying enough that I went back to the other problem
19:46
<&ToxicFrog>
This is totally something I could do, though
19:46
<&ToxicFrog>
Once defvar is implemented, anyways.
19:46
<&ToxicFrog>
The current problem is that the naiive approach is just:
19:46
<&ToxicFrog>
:defvar { malloc defconst } defn
19:47
<&ToxicFrog>
so `foo 2 defvar` allocates 2 bytes and associates the address with `foo`, and then you can use `foo ?` to read it and `foo n !` to write it.
19:48
<&ToxicFrog>
However, in host-compiled mode, what this does is call malloc() on the host and then write the returned address into the generated ROM.
19:48
<&ToxicFrog>
With, of course, tragic results.
19:48
<&ToxicFrog>
And I do not currently have a way of definiting two variants of a function, one for the host and one for the target.
19:49
<&ToxicFrog>
I may need to define `defvar` as a new core word.
19:51
<&ToxicFrog>
For added fun, there's an obvious optimization opportunity here in that if the size of the var is small enough to fit in a symbol table entry, rather than recording the address we can record the value itself -- but then the API looks different than cases where the address was recorded, and it doesn't work if that word is stored in ROM at all.
19:52
<&ToxicFrog>
(and in cases where performance isn't an issue, it might be useful to be able to define vars where the backing store is in ROM rather than RAM.
19:53
<&McMartin>
const vars?
19:53
<&ToxicFrog>
No, actually
19:53
<&ToxicFrog>
That's already handled by `defconst`
19:53
<&ToxicFrog>
I'm speaking somewhat sloppily here; what I'm calling "ROM" is actually AVR PROGMEM, which is actually EEPROM
19:54
<&ToxicFrog>
And it can be both read and written (very slowly) at runtime
19:54
<&ToxicFrog>
Notforth stores the entire builtin symbol table, including symbol names, in PROGMEM and copies entries to a teporary buffer in RAM as needed.
19:56
<&ToxicFrog>
This means symbol lookup is fairly slow, but that only happens at compilation time anyways, so...
19:59
<&McMartin>
Hrm. I remember there being three areas of address space
19:59
<&McMartin>
I forget where the EEPROM stuff was; I remember EEPROM space, RAM, and then "program memory" which could be read but I thought not written
20:00
<&McMartin>
But program memory sounds an awful lot like PROGMEM
20:02
<&ToxicFrog>
There's also a small amount of on-chip nonvolatile data storage, intended to be used for configuration persistence and the like, which is sometimes also called EEPROM
20:03
<&ToxicFrog>
And PROGMEM is sometimes also called Flash
20:03
<&McMartin>
Okay
20:04
<&McMartin>
I don't remember seeing AVR instructions for writing the program memory, though there is one for reading out of it
20:04
<&McMartin>
I'm going to assume this is like the stack pointer then and is done by commanding other parts of the SoC via the, er, iospace
20:04
<&ToxicFrog>
Yeah, refreshing my memory on this, it's not arbitrarily writeable the way it is arbitrarily readable
20:06
<&ToxicFrog>
Basically on most devices ROM is divided into "boot code" and "program code" and the ROM-writing instructions are only respected if executed from the "boot code" area
20:06
<&ToxicFrog>
The term used by Atmel is "self-programming program memory" or "SPM" if you feel like reading a bunch of datasheets
20:06
<&McMartin>
I had my fill of datasheets awhile ago
20:07
<&ToxicFrog>
Anyways, this is restrictive enough that storing read-write data in ROM is probably not worth it
20:08
<&ToxicFrog>
Constants are already stored in ROM, so I'll just define `defvar` as a core word that, when precompiled, statically allocates the space as a uint8_t[]
20:08
<&ToxicFrog>
And in interpreter mode calls malloc() and returns the result.
20:35
<&ToxicFrog>
Oh right, shit. Argh.
20:35
<&ToxicFrog>
If it gets compiled into a constant in the symbol table, references to it later in the same compilation unit will embed that constant into the generated code rather than looking it up by name
20:41
<&ToxicFrog>
I guess I could make c_pushconstant() smarter so that it does it by name where possible
21:13 Kindamoody is now known as Kindamoody|afk
22:20 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Connection closed]
22:41 Derakon[AFK] is now known as Derakon
22:54
<&[R]>
Decision time: I'm getting frustrated with makepkg, and am doing a rewrite of it. It's currently written in bash (as in it actually uses bash-specific stuff). I'm getting quite familiar with xs though (which is another shell, which is very incompatable with bash). Do I want to rewrite in bash (which I'm comfortable with) or in xs (which I'm not quite yet, but getting the hang of it). If I do it in bash, I can reuse some of the code (though I doubt I'll be reusing
22:54
<&[R]>
much of it)
22:54
<&[R]>
I doubt anyone else would be touching the code
22:59 Alek [Alek@Nightstar-o723m2.cicril.sbcglobal.net] has quit [Ping timeout: 121 seconds]
23:02 Alek [Alek@Nightstar-o723m2.cicril.sbcglobal.net] has joined #code
23:02 mode/#code [+o Alek] by ChanServ
23:20
<@iospace>
And another thanks but no thanks
23:20
<@iospace>
Dx
23:21
<@iospace>
Though that one may have been "ehhhh, let's apply and see what happens"
23:27 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Ping timeout: 121 seconds]
23:38
<@iospace>
It may have been looking for an EE with CS on the side
23:39
<@iospace>
I'm a CS with EE on the side
--- Log closed Sun Jan 27 00:00:02 2019
code logs -> 2019 -> Sat, 26 Jan 2019< code.20190125.log - code.20190127.log >

[ Latest log file ]