Search logs:

channel logs for 2004 - 2010 are archived at http://tunes.org/~nef/logs/old/ ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present


http://bespin.org/~qz/search/?view=1&c=osdev&y=18&m=9&d=17

Monday, 17 September 2018

12:03:51 <ybden> well... curl | sudo sh isn't exactly a good practice
12:03:55 <ybden> regardless of how ubiquitous it is
12:08:11 <klange> I'm pretty sure the entire second half of that article is sortie deriding things he considers bad practice, but with some subtlety.
12:08:15 <klange> I also disagree with a lot of it.
12:38:54 <graphitemaster> I still don't agree with the toolchain premise
12:39:41 <graphitemaster> the argument is that you have some toolchain you build everything with and you know that toolchain works and all but my argument has always been that if the code does not invoke UB and is correctly written, it should not break under other toolchains ever
12:40:15 <graphitemaster> Linux does not mandate it be built under any specific compiler
12:40:35 <graphitemaster> or with any specific compiler, other than a gnuc compatible one with C99 support
12:40:50 <rain1> what's that in response to
12:41:11 <graphitemaster> all the stuff on that wiki pushes and people in here push
12:42:07 <heat> about cross toolchains?
12:42:14 <graphitemaster> in fact, it'd argue requiring a specific toolchain makes things more difficult because you have to build it since it doesn't always exist on the development platform and these old toolchains constantly fail to compile under newer distributions because of autoconf/configure/autotools changes
12:42:46 <klange> the minute you start having a userspace you need a dedicated cross toolchain that knows how to target your system
12:42:58 <rain1> well I think the problem is we don't have very many good C compilers
12:43:02 <bcos_> I'd argue that the only sane reason to build a cross compiler is to port a compiler to your OS so that you can have a native compiler on your OS
12:43:10 <rain1> sorta stuck with gcc, llvm and uh.. tcc
12:43:43 <rain1> there's other c compilers (pcc, cparser/libfirm) but if you try to build anything with them the developers haven't tested it on you're going to have a bad time
12:44:07 <graphitemaster> klange, disagree, the only thing gcc cares about is the triple and the triple can just be the generic unix one
12:44:19 <heat> generic unix one?
12:44:40 <rain1> well it's true what klange said, each kernel has its own syscall set
12:44:49 <rain1> so you need to configure the compiler to target that set of syscalls
12:44:52 <graphitemaster> yeah like x86_64-unknown-unix
12:44:54 <heat> afaik there's no generic one
12:44:59 <bcos_> rain1: That's standard library's problem, not compiler's problem
12:45:06 <rain1> unfortunately this can't be done with a config file, it needs to be done by building a new version of gcc
12:45:14 <klange> there is no "generic unix triplet" that will cover you for defines, shared libraries, sysroots...
12:45:34 <heat> hell, linux has multiple toolchain variants for different libcs
12:45:45 <graphitemaster> just copy linux
12:45:52 <klange> how about no
12:45:55 <heat> no thx
12:46:00 <rain1> oh i see how i was wrong, ty bcos_
12:47:14 <klange> unrelated... I mentioned earlier I was stealing an idea from fish and how it handles drawing its complex prompt when the output of the last command did not end in a line feed
12:47:17 <klange> https://i.imgur.com/TyyeD3w.png
12:47:24 <graphitemaster> porting software to your OS will be so much easier if you stick to the unix-style stuff anyways
12:47:28 <graphitemaster> why make more work for yourself
12:47:48 <heat> it's not the "stick to the unix-style stuff"
12:47:58 <heat> it's the "stick to the insane linux-style stuff"
12:49:02 <graphitemaster> also, presumably the gcc triple shit is just gcc specs
12:49:09 <heat> not only
12:49:15 <graphitemaster> the fact it's not a config file is pretty stupid on gcc's part
12:51:14 <zid> if I made a compiler suite like that I'd definitely make an obvious spec file for the build
12:51:27 <zid> and some of it would be editable to change stuff
12:51:37 <klange> everyone should just write their own compiler
12:51:42 <klange> that should be step #1 of writing an OS
12:51:46 <graphitemaster> I think llvm/clang actually is like this
12:51:51 <zid> 'a' compiler is easy, a useful one is not :p
12:51:56 <graphitemaster> you can retarget a generic compiler binary to any system with config changes
12:52:06 <graphitemaster> I remember retargeting a prebuilt for linux for freebsd
12:52:09 <graphitemaster> there's an article on it
12:52:26 <heat> llvm/clang makes you write code
12:52:28 <graphitemaster> another thing llvm does better
12:52:54 <klange> llvm was designed for it, though it's not as simple as just writing a config file
12:53:14 <klange> llvm definitely has a major advantage in that it can ship a binary that supports all targets
12:54:04 <graphitemaster> the compiler shouldn't be configurable the way it is, I think the plan9 folks do compilers better, the compiler _is_ the cross compiler, it can output any format for any architecture and abi by default
12:54:12 <graphitemaster> idk why gcc and clang are different
12:54:29 <graphitemaster> runtime selection shouldn't be difficult
12:54:37 <klange> clang *does* work that
12:54:39 <klange> way*
12:54:51 <graphitemaster> clang sort of does
12:55:01 <klange> you literally just said "another thing llvm does better" and then you say clang doesn't do that? what do you think clang is?
12:55:27 <graphitemaster> well I mean from UX stand point
12:56:00 <graphitemaster> I want to beable to do "clang -c foo.c -arch=armv8 -ofmt=elf32 -o foo.o" on any system with a clang
12:56:14 <graphitemaster> that UX is still not there
12:56:44 <klange> I'm sorry the arguments are slightly different from what you want?
12:59:58 <klange> clang -target armv8-none-elf -m32 -c -o foo.o foo.c
01:00:11 <klange> $ file foo.o → foo.o: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), not stripped
01:00:43 <graphitemaster> okay clang wins
01:01:13 <zid> gcc is pretty crummy without crossdev
01:10:17 <rain1> woah
01:11:24 <rain1> why is this flag not in the man page..
01:12:38 <lachlan_s> Has anyone heard from lkurusa recently?
01:12:58 <klange> he was active as of ~4 hours ago
01:13:01 <zid> yea he's been trolling all day
01:13:28 <lachlan_s> All right, thanks.
01:13:55 <klange> ANYWAY, I was trying to solicit feedback on something.
01:14:20 <lachlan_s> Sorry for interrupting!
01:14:34 <klange> Since I implemented all this fancy shit in my shell, it can't reasonably print its prompt + line editing on a line that already has text on it
01:14:46 <klange> So I looked at another shell with that problem to see what they did.
01:15:05 <klange> Fish prints ⏎ and then enough spaces to fill a line, before returning the cursor to the front of the line.
01:15:29 <klange> That's neat. I like that approach. No need to attempt to query the cursor location, which would eat your input and screw with users who paste multiple commands.
01:16:04 <klange> But I don't like ⏎ specifically. What character, which is also in the standard US VGA text mode character set, would look good as an indicator "this line did not end in a line feed"?
01:18:25 <klange> At the moment, I'm printing ^M in my common "this is a visual representation of an escape sequence" coloring to indicate "The shell actually printed \r here rather than this line ending" https://i.imgur.com/TyyeD3w.png
01:19:18 <lachlan_s> Why not ^r
01:19:38 <klange> What is ^r supposed to represent?
01:19:42 <Kazinsal> 0x1C is a mid-cell aligned bottom-left bracket
01:19:53 <Kazinsal> in VGA ASCII
01:20:06 <lachlan_s> Ah, I misunderstood you, whoops.
01:22:05 <klange> Hm. ∟ Interesting choice... I was actually considering ¬ or ┘
01:22:26 <klange> ◄ was another consideration
01:22:59 <Kazinsal> ¬ is definitely a better one but I don't know if there's a code page 437 for that
01:23:17 <klange> It's in 437, but it's a high byte so it's not in some of the international replacements
01:28:14 <klange> ◄ looks pretty nice https://i.imgur.com/OEpr5FN.png
01:31:00 <tyler569> zsh uses % but inverts the colors iirc
01:32:16 <klange> in my gui terminal: https://i.imgur.com/QS02h1C.png
01:38:53 <klange> interestingly zsh seems to use a different character depending on whether you're root
01:42:24 <klange> http://zsh.sourceforge.net/Doc/Release/Options.html#Prompting
01:42:25 <bslsk05> ​zsh.sourceforge.net: 16 Options (zsh)
01:44:48 <Kazinsal> That's... odd.
01:57:35 <joe9> hello, I am looking for intro books to operating systems. Any thoughts on the Design of the UNIX Operating system by Maurice Bauch?
02:03:39 <zid> That sounds like a book
02:03:39 <zid> 10/10
02:04:55 <klange> It's a bit dated.
02:05:23 <klange> 1986... I'd stick to something at least younger than me.
02:06:38 <klange> It's also not an intro book to operating systems, it's an in-depth description of how v6 unix is implemented.
02:06:49 <klange> So if you're looking for books that may help you get started in writing an operating system, it will not help you.
02:06:59 <zid> it is however, a book
02:07:06 <zid> so it meets that criteria super well
02:09:41 <joe9> klange: I am more interested in how things work, understand the abstractions and it would be nice if I can understand the why of the abstractions. I am also not a CS or math student.
02:11:17 <joe9> zid, klange Thanks.
02:11:34 <zid> I think thanking me is a bit of a stretch :p
02:11:42 <klange> I recommend Tanenbaum's Modern Operating Systems, whatever the newest edition is.
02:12:03 <joe9> klange: Thanks.
02:12:06 <klange> It's a wider overview of concepts, and it's updated to talk about newer OSes and ideas.
02:13:03 <klange> If you want a book that shows you all the inner workings of an OS and explains them, the latest Minix books (also Tanenbaum) may be worth a read, but I would try to find something on Linux - I'm not really familiar with such books, but they'll probably be better reads than a book on v6 from 1986.
02:13:52 <joe9> klange: ok, Thanks.
02:14:08 <klange> An old copy of Modern Operating Systems was one of the catalysts for my project.
02:14:31 <zid> http://makelinux.net/kernel_map/
02:14:31 <bslsk05> ​makelinux.net: Interactive map of Linux kernel
02:14:55 <geist> yah i never read that particular book but it seems to be a pretty good practical intro
02:16:54 <joe9> Thanks for the makelinux.net. that is pretty cool.
02:24:06 <grenlith> there is also the oberon book :3
02:24:30 <klange> obviously I should write a book
02:25:17 <klange> "Fumbling Your Way through Operating Systems Development: The ToaruOS Book"
02:29:45 <tyler569> "becoming a celebrity to the 4 people who have any idea what you do"
04:08:31 <klange> i don't know why i'm surprised that my shell works fine in linux with only a few minor tweaks
04:10:45 <graphitemaster> if you were pro the binary from your os should work out of box on linux without recompiles
04:11:00 <klange> no
04:11:09 <klange> there are so many things wrong with that I don't even know where to begin
04:11:45 <klange> i refuse to implement binary compatibility with Linux, and why should my shell - a native application for my OS, built dynamically against *my* C library, function in Linux with glibc?
04:12:00 <graphitemaster> static link libc duh
04:12:05 <klange> that implies even more than just binary compatibility with linux, it implies ABI and symbol compatibility with glibc, which is the most assine thing ever
04:12:22 <graphitemaster> only thing that should matter is matching the syscall vector
04:12:28 <graphitemaster> numbers at least
04:13:32 <klange> the structures also need to match for complex systems like termios
04:14:06 <klange> the layout of which, btw, is not specified by posix (only the names of some members)
04:14:10 <yrlf> Glibc is really a beast
04:15:18 <yrlf> You can't even LD-PRELOAD a non-native libc version (like a 2.23 on a system with 2.28) on a system without all hell breaking loose.
04:15:39 <yrlf> It has so many things that depend on the rest of the systen
04:26:16 <zid> klange: binary compatibility with /linux/ is probably okay, but not anything with gnu in the name ;P
04:26:43 <klange> graphitemaster: you have such strong opinions on os dev, maybe you should write your own OS :)
04:31:51 <graphitemaster> klange, REEEE
04:34:17 <graphitemaster> osdev is for crazies
04:35:19 <klange> Not since Terry passed.
04:37:18 <zid> You're too modest klange.
04:38:15 <ybden> PonyOS: GNU Edition
04:39:10 <graphitemaster> PonyOS is a more fully functioning OS than Gnu HURD
04:39:20 <graphitemaster> where did we go wrong
04:39:55 <geist> splert!
04:39:58 <geist> yesy yesyeyes
04:40:20 <klange> idk, I ran xfce and firefox under hurd once
04:40:25 <klange> before it hard locked
04:41:29 <graphitemaster> gnu hurd lock
04:41:45 <graphitemaster> now with gnu/triple fault
04:42:30 <klange> I remember trying a dozen times to get Debian GNU/Hurd running last year when a new release came out. It consistently crashed / locked up in the installer.
04:42:50 <klange> Now, that said, it was the Debian GUI installer running under X, which is more than I can say for PonyOS.
04:44:40 <graphitemaster> I bet you can run X on toaruos
04:44:46 <graphitemaster> it would be awful
04:45:21 <klange> you're right, X is an anti-feature
04:46:30 <graphitemaster> you need to port nethack
04:47:49 <klange> yeah probably
04:56:16 <zid> Hrmph not the crash I was expecting, always a good start.
04:58:41 <zid> Time to add a gajillion printfs
05:03:49 <zid> ah fun, integer underflow trying to calculate loop bounds
05:07:26 <zid> I'm not sure these loop bounds are possible to calculate, heh
05:08:40 <klange> my favorite kinds of loops
05:08:59 <zid> I mean, they are, but I'd need a 65bit integer to do it
05:09:18 <klys> rcl ?
05:09:21 <zid> rcl?
05:09:35 <klange> uint128_t;
05:09:35 <klys> rotate through carry right
05:09:38 <zid> what about it
05:09:52 <klys> nother bit
05:09:54 <zid> (last I checked C did not have that operator)
05:10:20 <zid> I need a 'jo' in my loop
05:10:38 <zid> jo out / jnz out / jmp .loop or whatever
05:11:34 <zid> I think I have to turn it into a post-increment do while
05:17:44 <geist> do it. only you can do it
05:17:52 <geist> make it post increment, it is the way
05:19:26 <zid> I took the third way: Don't pass regions smaller than 2MB to my shit
06:00:14 <sham1> Modning
06:01:47 <glauxosdever> Hello
06:03:49 <klange> heyo
06:08:01 <glauxosdever> Huh, is still rdos arguing about segmentation?
06:08:13 <Mutabah> wouldn't surprise me
06:09:10 <zid> segmentation was under utilized while it was still around
06:09:27 <zid> it was pretty neat, hard to make compilers etc aware of it though
06:25:12 <zid> Do I need to set the cache disable bit in the PTE for device driver registers mappings?
06:25:50 <zid> I should probably check what the intel manual says :(
06:43:11 <Mutabah> I don't think you need to, as those should be pre-set with MTRRs to be uncached
06:48:47 <zid> I can't even remember if that bit controls the tlb or the page itself
06:48:56 <zid> but let's just go with "nah" for now
07:42:03 <klange> did github just shit itself while is in the middle of trying to do something
07:42:18 <zid> works for me
07:44:10 <klange> i just got a permission denied trying to make a new repository
07:44:28 <zid> I'd deny you too, tbh
07:51:00 <glauxosdever> klange: Probably has to do with Article 13 or so
07:51:23 <glauxosdever> (Hope I'm wrong)
07:51:26 <klange> no one has implemented any of that yet, it's just a silly bit of brokenness
07:51:31 <klange> well, except youtube
07:52:13 <glauxosdever> And fb, who didn't allow uploading a pianist's original performance of a Bach work
07:52:30 <zid> also it isn't even law yet
07:52:38 <zid> it just passed the house
07:55:15 <glauxosdever> If what people opposing Article 13 say about it is true, I think it's not going to be good
07:55:35 <Mutabah> Problem is (as I understand it) that all EU countries will base their local laws off this with (relatively) minimial discussion
07:59:25 <glauxosdever> I think the problem is automated copyright filtering. I don't know if the Directive imposes it, but at any rate it will cause more sites to use it
08:00:30 <zid> Or you put the upload servers in the US, people will be able to sell that you uploaded what you did, but hey, can't have it all :P
08:01:06 <klange> It doesn't specifically require it, but it does get special mention.
08:01:18 <klange> Really, the directive is way too vague.
08:01:51 <klange> It's basically "Y'all should enact some laws that require big companies to do some something, like maybe that filtering thing."
08:01:56 <klange> Except in slightly better legalese.
08:02:14 <klange> They don't even define the terms related to the sizes of the companies it's supposed to cover.
08:02:23 <glauxosdever> If copyright filtering is done by intelligent people and uploaders are given the benefit of doubt when the copyright status of the upload can't be determined, I think it would be fine.
08:03:00 <zid> It was probably a paving-slab sort of law. Now people can't challenge any sort of law derived from this.
08:03:12 <zid> And they can make it more encompassing later
11:25:17 <klange> okay... I can get window rotation back with my cruddy sine tables and some terrible sprite rotation code...
11:25:26 <klange> but no mouse-based rotation until I get an atan2...
12:29:47 <rakesh4545> I am only able to call a static function from my kernel's _start().
12:42:07 <lkurusa> ... and your question is?
12:46:13 <rakesh4545> oh I was trying to call a function from the entry function of my kernel, but was unable to do so. I am only able to call any static functions.
01:57:21 * corecode is looking for a way to send custom usb-pd messages on my x1 carbon
02:39:02 <corecode> nop, doesn't look like
03:24:38 <_mjg> https://worthdoingbadly.com/aixqemu/
03:24:39 <bslsk05> ​worthdoingbadly.com: Tutorial - emulate AIX 7.2 in QEMU | Worth Doing Badly
05:07:20 <johnjay> is it possible to learn about a machine by emulating it in qemu or virtualbox and then stepping through a debugger to see machine registers and such?
05:07:28 <geist> sure
05:09:34 <mischief> slowly.
05:10:47 <johnjay> i bring it up because it seems like most books and/or tutorials are either completely abstract
05:10:52 <johnjay> no code stepping at all or little
05:11:00 <johnjay> or it's a toy example in code that doesn't really teach you anything
05:12:23 <johnjay> having said that i'm getting Tanenbaum's book so hopefully it's good
05:15:13 <johnjay> anybody know what the "global edition" differences are? https://www.amazon.com/Operating-Systems-Tanenbaum-contributions-Herbert/dp/1292061421/
05:15:15 <bslsk05> ​www.amazon.com: Modern Operating Systems: Global Edition: S Tanenbaum (contributions), Herbert Bos (contributions) Andrew: 9781292061429: Amazon.com: Books
05:20:33 <grenlith> there are no differences that i am aware of
05:25:13 <geist> johnjay: it certainly wouldn't be the best way to learn in isolation, but that combined with looking at dissassembly and using it to understand some subtle details sure
05:25:47 <geist> something like x86 is complicated enoguh that it's a bit harder to follow along, but back in the day of simple 8 bit machines stepping through with an emulator is great
05:26:50 <geist> that being said, emulators and virtualizers like qemu and virtualbox are really not set up for it,since what you really want is a screen with all the registers laid out in some sort of table like format, watching them change as you step through the code
05:26:56 <geist> neither of those tools have a mode like that
05:33:23 <johnjay> ah
05:34:33 <johnjay> don't people have to debug kernels though with like kdgb or whatever that sysinternals thing is?
05:34:44 <johnjay> i saw it in some book about windows device drivers i think
05:36:30 <grenlith> i definitely attach gdb to qemu regularly to debug my kernel
05:40:27 <johnjay> see the intro to that MMURTL book on the wiki is making the same point I am
05:40:38 <johnjay> who the hell wants to read general theory when you actually want to CODE AN OS?
05:41:57 <geist> you can use gdb and qemu/virtualbox, though it's not 100% rock solid
05:42:14 <geist> it's an external debugger (doesn't involve the kernel knowing it's being debugged) so it's fairly easy for gdb to get confused
05:45:16 <johnjay> that said this Mmurtl guy has his own linker in assembler... so i'm not even sure i can get it compiled
05:45:35 <johnjay> geist: is there a way to compile kernels with -ggdb3?
06:22:55 <zenix_2k2> oh i have a bit of a question, when talk about "bootloader", it means each OS has its own one or each distro does ?
06:23:20 <zenix_2k2> and by that i mean lots of people think OS with the Linux kernel is called "Linux" but they sure have lots of distros
06:30:58 <AverageJ0e> whatever stallman
06:31:18 <zenix_2k2> ehm, sorry ?
06:31:52 <rakesh4545> I think kernel + shell = OS
06:33:07 <johnjay> man qemu documentation sure is bad
06:33:18 <zenix_2k2> yea but Linux has many distros
06:33:25 <johnjay> it's basically a barebones manpage
06:34:31 <rakesh4545> well i have a question. what would be the C equivalent of MSG db 'MESSAGE' ?
06:51:52 <zenix_2k2> so ehm, each OS has its own then ?
06:53:44 <dhoelzer> bootloaders and distros/OSs are entirely separate things
06:53:52 <dhoelzer> Your OS can certainly have its own bootloader...
06:54:09 <dhoelzer> Though many people choose to use the standard that has emerged as GRUB
06:54:18 <dhoelzer> One less thing to write
06:54:42 <rakesh4545> but you are tied to GNU license.
06:55:18 <zid> wut
06:55:35 <dhoelzer> so what. That only requires that you make available the code for GRUB, not your entire project
06:55:48 <zenix_2k2> yea but by OS, you mean like for an example, a Debian and an Opensuse machine... both will use the same bootloader or one uses another ?
06:56:45 <dhoelzer> Those aren't different OSs. Those are both Linux
06:57:03 <dhoelzer> However, both Linux and Solaris can use GRUB... but you don't have to use GRUB with Linux, for example
06:57:14 <zenix_2k2> well yea but sometime my answers get confused by how people define distros and OS
06:57:19 <zenix_2k2> but anyway in this case, very well
06:57:33 <dhoelzer> A distribution is a version of an OS. an OS is the thing that runs on the computer.
06:58:07 <dhoelzer> The bootloader isn't normally tied to the OS.. though sometimes it is. Take SGI, for example. It has very peculiar and specific requirements for the bootloader, resulting in there being really only one
06:58:32 <zenix_2k2> does that mean every OS can use it ?
06:59:11 <zid> same for my OS :P
06:59:24 <dhoelzer> If you want to run on an SGI you would have to
06:59:34 <dhoelzer> Unlike X86 or X86_64
07:04:19 <zenix_2k2> so is there like any bootloader which can only run on one specific OS ?
07:10:11 <rakesh4545> this i smy
07:11:20 <rakesh4545> sorry. this is my c program https://pastebin.com/MJyxDvWw and this is the output https://i.imgur.com/VXDycIL.png . What am I doing wrong?
07:11:21 <bslsk05> ​pastebin.com: [C] #include <stdbool.h> #include <stddef.h> #include <stdint.h> const char strin - Pastebin.com
07:22:41 <zid> your * are all on the wrong side, == 48 should be == '0', why mix uint8_t and char, video = video + 1 should be video++
07:22:52 <zid> The random 9 should be a macro
07:23:08 <zid> and video should just be a short/uint_16
07:23:38 <zid> and I would dump the memory at 'string' to make sure it is correct
07:23:49 <zid> your linker setup may have gotten where the .data section is wrong
07:23:56 <zid> or rodata
07:24:23 <zid> and why terminate strings with a numeral 0 character instead of a nul
07:27:31 <rakesh4545> zid thanks for mentioning the errors. my program worked correctly when I don't use loops and rather do the long manual way. I think my .data as you said is set up wrong.
07:30:19 <zid> You need to learn C before you try to write an OS so that you're not having to deal with learning a language, learning your tools, and learning the architecture all at the same time
07:34:52 <bauen1> is there anything i can do about aptitude using every spare bit of disk i/o and lagging my desktop system ?
07:35:55 <zid> ionice?
07:36:04 <zid> change sched?
07:36:12 <zid> switch to an ssd?
07:36:48 <bauen1> i've got an ssd
07:37:03 <bauen1> albeit smartctl shows Pre-Fail and Old-Age on almost everything
07:37:33 <bauen1> but it hasn't failed for over 1 year
07:37:44 <bauen1> also it's an apple special something ssd
07:37:50 <zid> sounds awufl
07:38:15 <zid> my 850 pro's not even at 10% of its lifetime spec after a couple of years :)
07:38:23 <bauen1> the problem is more that / is encrypted and dpkg walks almost everywhere leading to huge amounts of decryption being necessary
07:38:32 <zid> what's your cpu load at?
07:38:46 <bauen1> avg. 6.8
07:38:54 <zid> ouch yea
07:39:00 <zid> what about the actual cpu load, not load load
07:39:07 <zid> 6.8 will be pretty laggy
07:39:40 <bauen1> where can i find that ?
07:39:44 <zid> idk, top?
07:40:04 <lkurusa> what is the thing that you always forget when flying?
07:40:10 <bauen1> 60% iowait
07:40:11 <lkurusa> packing for a 20 hour trek
07:40:14 <zid> lkurusa: Not to hit the floor
07:40:27 <bauen1> actually maybe i should be concerned about my ssd
07:40:40 <zid> look at the cpu column, bauen1
07:41:08 <bauen1> the ssds in macbooks of similiar haven't failed yet, but they weren't used anywhere near this level
07:41:24 <bauen1> 7.1 user 2 sys 0 ni 60 id 30 wait 0 hi 2 si 0 s
07:41:28 <zid> that's a row
07:41:46 <bauen1> %Cpu(s): 9.0 us, 2.6 sy, 0.0 ni, 55.6 id, 30.9 wa, 0.0 hi, 2.0 si, 0.0 st
07:41:55 <zid> that, again, is a row
07:42:02 <bauen1> oh
07:42:04 <bauen1> *facepalm*
07:42:11 <bauen1> well firefox uses 20% thats about it
07:42:20 <zid> so it's probably not the decryption then
07:42:24 <bauen1> i'm having huge issues with time spend on iowait
07:42:27 <lkurusa> bauen1: put it in a control group if you are feeling hardcore
07:42:36 <bauen1> so maybe i should be looking at ssds
07:43:19 <bauen1> lkurusa: well, i would need to automatically put dpkg in a cgroup every time it's run and i've got no experience with cgroups \o/
07:44:11 <lkurusa> oh you can just override the dpkg symlink i think
07:44:24 <zid> don't do that
07:44:29 <bauen1> ^
07:44:30 <zid> just make a nicedpkg link
07:44:37 <lkurusa> much better indeed
07:44:38 <zid> script
07:44:50 <zid> otherwise it'll get deleted everytime dpk updates if nothing else
07:45:13 <zid> then maybe add a shell alias for nicdpkg for dpkg perhaps
07:45:24 <bauen1> but how do i get aptitude to use nicedpkg instead of dpkg then ?
07:45:35 <zid> do it for apt not dpk
07:45:53 <zid> also, switch to a better package manager :p
07:46:22 <bauen1> well, arch is a bit unstable if i need this computer to work 100% of the time
07:51:39 <zid> I said better
07:53:23 <lkurusa> last i had an issue with arch was when i deliberately broke it
07:53:42 <lkurusa> i also like fedora and can definitely recommend
07:54:07 <lkurusa> oh and linux mint! the elder members of my family all use that distro
07:54:14 <lkurusa> it's really really stable and user friendly
07:58:50 <dhoelzer> What does "Elder" mean?
08:00:36 <zid> dictionary.com, you're welcome.
08:06:02 <heat> there's a spammer in the forums, allensmith
08:06:07 <heat> you might want to do something about it
08:07:28 <mra90> anybody familiar with RW Everything?
08:07:40 <bcos_> heat: Done
08:08:32 <glauxosdever> sortie: That might be a name collision
08:08:35 <bcos_> mra90: "RW Everything"?
08:09:08 <mra90> bcos_: http://rweverything.com/ - I use this soft to check memory of my firmware
08:09:10 <bslsk05> ​rweverything.com: RWEverything – Read & Write Everything
08:10:05 <sortie> glauxosdever: Please file the appropriate court papers
08:10:31 <mra90> So I navigated to my device and I see some BARs but how can I relate it to some addreses from my firmware?
08:11:39 <heat> what?
08:12:55 <heat> bcos_: these <random laptop brand> support posts seem like a spammer trend, no?
08:14:37 <bcos_> Hrm - more of a variation of a larger "<random anything that might be relevant> scheme
08:15:51 <bauen1> ~50% cpu spent on iowait, i should definietly look at this -.-
08:15:56 <zid> bcos_: Have I told you recently about how much I love ShamWow? It's a great product you will love. Message me for 20% off!
08:18:38 <bcos_> zid: I'm running a service to help people find out if they are/aren't pregnant - just upload photos of your naked junk to...
08:19:09 <zid> bcos_: Does this look like a centipede to you?
08:19:51 <heat> no it looks like a depressed butterfly
08:20:18 <heat> i dont know how you got your penis into that state, but i'm sorry for you
08:22:27 <bauen1> i should try to use dpkg-divert on dpkg
08:22:30 <bauen1> to ionice itself
08:22:31 <bauen1> lol
08:23:22 <glauxosdever> It's also interesting how the names of our projects have been used in scams. My first glaux-os release was bundled into a virus-ridden installer somewhere, now I found sortie's rw-portable to be a 20 MB archive on a site that contains random search results
08:23:51 <glauxosdever> Not going to publicly like to either as to not influence their rankings
08:23:56 <glauxosdever> *link
08:24:05 <sortie> You mean you used that site I forgot whose name
08:24:12 <sortie> Sourceforge
08:24:28 <sortie> I think it's more likely to have something to do with rweverything
08:24:33 <heat> sourceforge best forge
08:24:35 <_mjg> haha
08:24:36 <glauxosdever> Yeah, it was probably scraped from there
08:24:51 <sortie> Interesting the spam site seems to be markoving based on my rw-portable
08:25:10 <heat> the trick is to write awful software
08:25:10 <_mjg> there is a website which steals articles, runs them through automatic translation and posts
08:25:16 <_mjg> to bump the pagerank i presume
08:25:19 <heat> since then no one will want to markov your project
08:25:26 <_mjg> the actual website hiding there is some ubllshit local business
08:27:48 <glauxosdever> I don't what they think they are achieving riddling computers with viruses. Probably they are hoping to get some sensitive data? Or just mine coins on the victim's computer? Or?
08:27:55 <glauxosdever> *I don't know what..
08:28:14 <glauxosdever> Or just to be obnoxious?
08:29:25 <sortie> glauxosdever: Botnets, delivering more spam, bitcoin mining, etc. It's a cocktail.
08:29:56 <sortie> Ransomware, stealing credit & banking information, access to email accounts, stealing personal information, actual ransom, etc.
08:30:03 <zid> Mainly it's for selling to other people to use for project x
08:30:11 <zid> "I've got 400 computers for sale"
08:30:16 <sortie> Denial of service, torrenting. I can think of a myriad of uses for a botnet.
08:30:18 <zid> someone buys htem to spam from, or install miners on, etc
08:30:26 <glauxosdever> But is it actually effective for them? Literally no one with half a brain downloads files from spam sites genuinely thinking they are genuine/safe
08:30:35 <sortie> Stealing ssh keys and website credentials to put spam on their websites
08:30:38 <zid> glauxosdever: it doesn't have to work reliably
08:30:48 <sortie> glauxosdever: Oh man stop being that way
08:30:54 <sortie> glauxosdever: What's wrong with you?
08:30:58 <mischief> god, sourceforge is such crap.
08:31:00 <zid> if nobody responded to nigerian princes they wouldn't do it
08:31:05 <mischief> lipstick on a pig.
08:31:36 <heat> Here's a random idea: What if you used vmx to run the vbios and trapped hardware accesses, as to not need an x86 emulator
08:31:39 <sortie> glauxosdever: We're talking fraud here. Mass fraud doesn't need to be super believable, in fact the worse it is, the better. Because the best victims fall for any scam.
08:31:44 <mischief> i haven't found a reasonable way to automate downloading software from sourceforge
08:31:59 <mischief> and it force downloads files without prompting in a web browser.
08:32:06 <zid> sortie: Yea, intentional typos etc make your true positive result way better
08:32:19 <mischief> in a not-web browser you get a html file even though the fucking url ends in .zip or .tar.gz
08:32:29 <mischief> you can't make this shit up
08:32:31 <mischief> </rant>
08:32:56 <sortie> glauxosdever: Don't mistake that for incompetence. It's designed to get past filters and to be understood by people that are susceptible for scams. These are mass scams / fraud / phishing. They could *also* do targeted attacks, but this pays better in most cases, and is a nice source of background unattended frauduent revenue.
08:33:30 <sortie> glauxosdever: But *please* stop thinking people are supposedly ‘stupid’ if they believe in scams. That's victim blaming and that's not okay here. Start thinking about how the computer could've protected them in the first place.
08:33:41 <zid> bcos_: I think your credit card number may have been stolen, tell me what it is so I can check my database
08:33:55 <sortie> The well known scams continue because they are not truly well known
08:34:57 <heat> aren't we a bit too offtopic here?
08:35:16 <sortie> You get viagra spam because just enough people buy it that it's worth the effort to send it out. The cost isn't that high to send such spam out, although only a tiny bit of it works. If you educate the masses to not fall for it, then you eradicate spam. We get more of it because it gets cheaper for spammers to spam.
08:35:27 <sortie> heat: Hardly -- this is master level osdev.
08:35:37 <glauxosdever> Ok, I'm in the wrong. I shouldn't had said they are stupid (i.e. less than half a brain). In fact, when I 11 or so, I infected our family's Windows Vista computer thinking I'd download an XP theme :-(
08:35:51 <sortie> See
08:36:00 <heat> >downloading an XP theme
08:36:06 <heat> you kinda deserved it
08:36:08 <zid> I for the first time in like a billion years, downloaded some malware a couple of months back
08:36:11 <sortie> Start thinking about how the OS could have prevented this
08:36:21 <glauxosdever> But my family didn't deserve this
08:36:27 <sortie> heat: Stop victim blaming.
08:36:33 <sortie> And glauxosdever didn't deserve it.
08:36:41 <zid> Shaming victims is useful
08:36:50 <sortie> No.
08:36:53 <CompanionCube> as much as i like vista
08:36:56 <zid> works for dogs.
08:37:02 <sortie> Shaming corporations who should be responsible, now *that* is useful.
08:37:02 <heat> I wasn't victim shaming
08:37:13 <zid> sortie: and glauxosdever shouldn't be responsible
08:37:15 <zid> presumably
08:37:16 <CompanionCube> infecting it likely didn't make it that much worse
08:37:21 <heat> I was just making a light hearted jokes
08:37:30 <sortie> Windows comes with wall papers and games. It avoids people installing fraudent stuff.
08:37:31 <heat> s/jokes/joke
08:37:39 <sortie> Although it seems to have regressed on that behalf
08:37:47 <zid> front
08:37:48 <sortie> No more standard old games, now it's freemium
08:38:33 <heat> honestly the only way to prevent scams is to lock down what programs can be run on the computer
08:38:34 <CompanionCube> sortie: obviously the old games were too expensive to make so we need to offer 'player choice' with monetization
08:38:38 <CompanionCube> i'll shoot myself now.
08:38:40 <sortie> Useful OS level stuff is coming with VLC & Firefox preinstalled. It avoids people searching for it online and falling for fradulent offerings.
08:38:55 <sortie> Likewise search engines and trademarks are used to protect the people that do search
08:39:09 <zid> bloom filters are all you need ;)
08:39:11 <glauxosdever> Or do everything as an osdever so your OS has less vulnerabilities
08:39:21 <glauxosdever> (Or actually both)
08:39:59 <sortie> Windows does a lot of stuff to protect people. Run as non-admin account. Warning people if this executable hasn't been seen before.
08:40:02 <CompanionCube> obviously to mitigate this everything should run in ring0 \s
08:40:14 <sortie> Lots of secure stuff that isn't on by default as well for various reasons.
08:40:34 <sortie> Vista came with tons of security stuff that was off by default because people weren't ready
08:40:48 <CompanionCube> also wasn't the vista version annoying af?
08:40:56 <CompanionCube> i remember that as a kid :p
08:41:10 <heat> android and iOS are really secure because they lock you down
08:41:12 <heat> change my mind
08:41:21 <sortie> CompanionCube: Yes kinda but it was a few minor UX failures, mostly things people should want, but weren't ready for
08:41:43 <zid> heat: I posit that security has shifted in the past 15 years, and now having access to the same user as the browser is on is better than root
08:41:45 * CompanionCube once wrote a tiny anti-UAC rant in notepad.
08:41:48 <sortie> CompanionCube: Most of what people suffered from was lack of software compatibility. They removed direct kernel access . It *had* to go.
08:42:16 <sortie> UAC is kinda good idea, flawed execution, mostly annoying because programs needed admin access when they didn't
08:42:18 <zid> see: xkcd about not being able to install printer drivers, but being able to steal all my money and friends
08:42:50 <heat> zid: what would you do if you had the same UID as the browser?
08:42:51 <sortie> glauxosdever: These are the kind of lessons we should be learning here. How can we protect the user against these scams. Raise the cost for the scammers.
08:43:05 <zid> heat: https://imgs.xkcd.com/comics/authorization.png
08:43:14 <sortie> ^^
08:43:24 <sortie> And that's why browser sandboxing is so damn critical
08:43:26 <heat> that's physically stealing
08:43:37 <zid> it also applies to just being able to run javacript as the user or whatever
08:44:01 <zid> root access is a superset, but *any* access is 99% as good these days
08:44:27 <heat> root access is useful to exploit the system
08:44:34 <zid> root access means you already have
08:44:40 <zid> root specifically means you don't need to any more
08:45:14 <heat> sure but maybe you want to snoop the browser's memory. Can't do that when you're not root
08:45:23 <zid> you can if you're the same user as the browser.
08:45:30 <glauxosdever> sortie: I agree about lessons to learn here. It's the thing that unsafe functions (does gets() still exist?) shouldn't be used, that we have to be careful not to have memory leaks, especially in a loop, or we may allow a denial-of-service, etc
08:45:31 <heat> can you?
08:45:36 <zid> yes
08:45:59 <CompanionCube> glauxosdever: gets was removed from later C standards
08:46:23 <glauxosdever> At least one thing they did well
08:46:25 <zid> https://msdn.microsoft.com/en-us/library/windows/desktop/ms680553%28v=vs.85%29.aspx
08:46:28 <bslsk05> ​msdn.microsoft.com: ReadProcessMemory function (Windows)
08:46:44 <heat> windows is very vulnerable when it comes to that
08:46:49 <heat> was talking about linux here
08:47:12 <zid> attach dbg
08:47:13 <heat> it was more relevant to what I was talking about(android and it locking stuff down very well)
08:47:13 <zid> done
08:47:25 <zid> ddb*
08:47:29 <zid> fucjkx, typifgj is hard
08:47:33 <zid> gdb
08:47:46 <sortie> glauxosdever: Try look at chrome books. It's a very modern approach to security. A base system that's immutable.
08:48:06 <sortie> That's not so lovely as programmers but it's super for common users
08:48:37 <heat> zid: can't do that
08:49:06 <heat> modern kernels stop you from attaching to non-children by default
08:50:09 <heat> (even if it's not by default you can very easily enforce it at boot)
08:50:13 <heat> *not on
08:50:24 <CompanionCube> it's a nice sysctl for yama, no?
08:50:29 <heat> https://www.kernel.org/doc/Documentation/security/Yama.txt
08:50:36 <zid> modern kernels definitely do not
08:50:51 <zid> are *capable* of it yes,
08:50:58 <zid> they've been capable of crap like that for years though
08:51:07 <heat> kernel.yama.ptrace_scope = 1 on arch
08:51:10 <heat> btw I use arch
08:51:20 <zid> how do you know if someone is a vegan or arch user?
08:51:26 <zid> don't worry, they'll tell you :P
08:51:28 <heat> idk
08:51:31 <heat> i use arch though
08:51:41 <CompanionCube> heat: also 1 on my gentoo box
08:52:05 <CompanionCube> but i'm not sure it's the default, given i chose to use a hardenedish config
08:52:20 <zid> hardened profile would probably use it yea
08:52:28 <CompanionCube> zid: not hardened profil
08:52:41 <zid> # CONFIG_SECURITY_YAMA is not set
08:52:47 <CompanionCube> profiles aren't for that anywyay :p
08:52:48 <zid> it's default n
08:52:52 <zid> yes they are
08:53:11 <heat> I don't run linux-hardened but I still have it on
08:53:12 <zid> that's *precisely* what a profile controls, what is in the world set and the default use flags etc
08:53:18 <CompanionCube> they're used to set individual sysctl settings? :P
08:53:59 <CompanionCube> (or kernel config settings. The former's actually more enforcable)
08:54:58 <heat> ptrace should be locked down by default, and it's probably harmless to do so
10:28:44 <rain1> hi
10:29:48 <rain1> I got hello world kernel built and booted, not sure what to do now
10:30:23 <johnjay> hello world kernel?
10:30:25 <johnjay> on the wiki?
10:30:36 <rain1> yeah barebones
10:31:53 <heat> x86?
10:32:07 <zid> rain1: paging
10:32:09 <johnjay> this? https://wiki.osdev.org/Bare_Bones
10:32:11 <bslsk05> ​wiki.osdev.org: Bare Bones - OSDev Wiki
10:32:19 <heat> zid: no
10:32:24 <zid> 100% yes
10:32:28 <heat> 100% no
10:32:32 <johnjay> i'm amazed that you got that to work rain1
10:33:02 <heat> paging is the way to not understand what you're doing because it's way too complicated at first
10:33:11 <zid> huh
10:33:25 <zid> "You won't understand it because you're trying to do deeply architectural things that require a lot of understanding"
10:33:32 <heat> yes
10:33:44 <heat> that's why i recommend starting with easier stuff
10:33:49 <heat> set up a gdt and an idt
10:34:04 <rain1> ok
10:34:35 <heat> this is a good guide: https://wiki.osdev.org/Going_Further_on_x86
10:34:37 <bslsk05> ​wiki.osdev.org: Going Further on x86 - OSDev Wiki
10:34:55 <heat> https://wiki.osdev.org/Creating_an_Operating_System is more generic and less x86 focused
10:34:56 <bslsk05> ​wiki.osdev.org: Creating an Operating System - OSDev Wiki
10:35:35 <johnjay> most tutorials give non working examples or vague advice or something
10:35:36 <rain1> ok ill read tht
10:35:52 <johnjay> if this tutorial actually is valid... that's amazing!
10:35:58 <heat> johnjay: the wiki isn't a tutorial.
10:36:04 <heat> and it's not supposed to be one
10:36:39 <heat> you can have guides but they're not tutorials in the traditional sense
10:36:54 <heat> bare bones is probably the most tutorial-y it can get
10:37:03 <johnjay> well if guides work and tutorials don't then sign me up for guides
10:37:29 <heat> more like
10:37:38 <rain1> johnjay: you can build it too
10:37:49 <heat> You should know and understand what you're reading, but the OSDev wiki is mostly reliable
10:38:00 <rain1> https://github.com/microkernel2018/ i made a repo which builds gcc toolchain and another with the code copied off of the wiki
10:38:18 <johnjay> n1, thanks rain
10:38:20 <rain1> so it's pretty easy to build the helloworld example kernel and test it qemu
10:38:40 <johnjay> i was just investigating qemu since it was acting buggy on me
10:38:50 <heat> community project?
10:39:11 <johnjay> rain1: sorry to be over excited. i've tried compiling so many projects in the last week that just fail or error out
10:39:24 <johnjay> so actually getting hello world is... pretty great!
10:39:29 <rain1> yeah it is frustrating a lot of stuff out there doesn't work
10:39:45 <rain1> everything moves so fast in software, code that isn't being constantly updated stops working
10:40:04 <rain1> yeah heat anybody can join this if they want to
10:40:14 <heat> rain1: how do you start?
10:40:55 <johnjay> rain1: have you heard of the L4 microkernal?
10:41:08 <rain1> well we are mostly trying to come up with a plan before starting coding. So far it seems like a good way to start is building a basic unix style higher half kernel and then refactor it into a microkernel design
10:41:18 <rain1> yeah L4
10:41:24 <heat> Please, choose C or C++
10:41:30 <rain1> yes C
10:41:39 <heat> well that's easy
10:41:45 <johnjay> rain1: is the tanenbaum book mostly about MINIX?
10:41:53 <heat> johnjay, yes
10:41:53 <rain1> yes it's entirely about minix
10:41:54 <johnjay> "Design and Implementation"? or is that the other one?
10:42:11 <rain1> I thought it was interesting how they talked about the concurrency mechanisms and the message passing
10:42:15 <johnjay> ok. why did you pick arm?
10:42:17 <rain1> but there is a lot more in the book I need to learn
10:42:29 <rain1> because it can boot on SOC systems like raspberry pi and odroid
10:42:38 <johnjay> rain1: iirc there were two tanenbaum books about OS on amazon. what's the other one?
10:42:45 <heat> you picked x86-64 too
10:43:01 <rain1> maybe 64 bit isn't a good choice, i686 might be smarter
10:43:03 <rain1> i'm not sure
10:43:06 <johnjay> i've got a raspi as well. apparently qemu3.0 finally emulates the pi3b
10:43:07 <heat> no, definitely not
10:43:17 <rain1> excellent
10:43:28 <heat> Start with x86-64, it's a better architecture overall
10:43:28 <rain1> i was able to build the arm barebones kernel but i don't have a raspberry pi to test it on
10:43:36 <rain1> ok thanks heat!
10:43:42 <grenlith> there's "modern operating systems" and then "operating systems design and implementation" -- the latter is focused on minix
10:43:51 <johnjay> rain1: i have a 3b, so i could try it out
10:43:56 <johnjay> i even have spare sd cards
10:43:59 <heat> rain1: any decision on licensing?
10:44:06 <rain1> great johnjay if you give it a go i'd love to hear if it works
10:44:07 <johnjay> but as i said qemu3.0 in theory emulates a raspi
10:44:35 <rain1> heat: i put it GPL3, I don't mind though. I could change it if people want
10:44:41 <heat> ugh
10:44:59 <rain1> its just the first option when you pick license on github
10:45:01 <heat> I wanted to contribute but I only contribute to MIT/ISC
10:45:12 <rain1> I'll change it to ISC then
10:45:58 <heat> did you write any code yet?
10:46:31 <rain1> no
10:48:21 <heat> are you writing code?
10:49:48 <rain1> I will but I need to study the concepts more first
10:50:13 <zid> I'd get a hard copy of the system manual for amd64 and read it during commutes and stuff :D
10:50:16 <heat> I have this project(https://github.com/heatd/Carbon) which has fairly clean code and looks like a good small kernel to build on
10:50:17 <bslsk05> ​heatd/Carbon - None (0 forks/0 watchers)
10:50:17 <rain1> Iv'e changed it to MIT license
10:50:29 <zid> even if you retain none of it you'll get in the right headspace of the language used, how things tend to work, etc
10:50:33 <heat> also, shameless plug
10:51:31 <rain1> cool! i'm checking it out
10:52:09 <heat> I don't boot using multiboot though, so you'd need to adapt the boot stub to do so
10:52:45 <heat> I did get relocation + KASLR working at some point but it broke some commits ago
10:52:57 <zid> looks a bit more advanced than mine
10:53:04 <zid> it actually has locks ;)
10:53:07 <rain1> this looks really clean and well written
10:53:43 <heat> thanks
10:54:13 <heat> I do have some code that hasn't been committed/pushed yet
10:54:38 <johnjay> not the i386 manual?
10:54:53 <heat> and ~1000 LOC that I added in my main OS and are useful enough to be ported back
10:54:56 <zid> This isn't 1994
10:57:14 <rain1> is carbon part of onyx?
10:57:24 <zid> the sgi workstation?
10:57:57 <heat> rain1: carbon is a small kernel that I sometimes work on when I'm bored, it's not part of onyx
10:58:04 <rain1> alright!
10:58:15 <heat> although they're kinda mixed, I have carbon code in onyx and onyx code in carbon
10:59:31 <heat> note that I have some small bits of musl in libc/
10:59:36 <heat> (which is also MIT licensed)
11:01:17 <johnjay> tanenbaum said something interesting about he liked that he did a MIT style license
11:01:31 <johnjay> because then Intel made MINIX the most installed OS in the world through the ME
11:02:50 <johnjay> rain1: so you have the book OS: Design and Implementation?
11:04:28 <rain1> yeah
11:07:19 <heat> rain1: Want me to write about carbon in the github issue?
11:07:35 <rain1> yeah please!
11:15:46 <rain1> "It is traditional and generally good to have your kernel mapped in every user process" what did they mean by this
11:15:51 <rain1> https://wiki.osdev.org/Higher_Half_Kernel
11:15:52 <bslsk05> ​wiki.osdev.org: Higher Half Kernel - OSDev Wiki
11:16:31 <heat> rain1: Monolithic kernels traditionally keep their kernels mapped in every address space
11:16:47 <bcos_> Micro-kernels too
11:17:03 <bcos_> (traditionally - not so much now with the Meltdown stuff)
11:17:07 <heat> with this FUCKWIT nonsense, big OSes no longer keep them entirely mapped
11:17:10 <heat> yeah
11:29:30 <heat> rain1: check my comment on the issue
11:29:43 <heat> it may shed some light
11:35:38 <rain1> good - I will reply to the comment tommorow
11:35:46 <rain1> thank you
11:36:33 <heat> no problem