asciilifeform
10h 14m
krankendenken



asciilifeform: !w poll
watchglass: Polling 12 nodes...
watchglass: 205.134.172.26:8333 : Alive: (0.082s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=642790
watchglass: 108.31.170.3:8333 : (pool-108-31-170-3.washdc.fios.verizon.net) Alive: (0.109s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=642790 (Operator: asciilifeform)
watchglass: 205.134.172.6:8333 : (172-6.core.ai.net) Alive: (0.082s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=642732
watchglass: 205.134.172.4:8333 : (172-4.core.ai.net) Alive: (0.082s) V=70001 (/therealbitcoin.org:0.7.0.1/) Jumpers=0x1 (TRB-Compat.) Blocks=642790
watchglass: 208.94.240.42:8333 : Alive: (0.086s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=642790
watchglass: 205.134.172.27:8333 : Alive: (0.210s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=642790 (Operator: asciilifeform)
watchglass: 192.151.158.26:8333 : Alive: (0.214s) V=70001 (/therealbitcoin.org:0.7.0.1/) Jumpers=0x1 (TRB-Compat.) Blocks=642790
watchglass: 176.9.59.199:8333 : (static.199.59.9.176.clients.your-server.de) Alive: (0.326s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=296962 (Operator: jurov)
watchglass: 143.202.160.10:8333 : Alive: (0.284s) V=70001 (/therealbitcoin.org:0.7.0.1/) Jumpers=0x1 (TRB-Compat.) Blocks=642790
watchglass: 188.121.168.69:8333 : (rev-188-121-168-69.radiolan.sk) Alive: (0.244s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=642790
watchglass: 213.109.238.156:8333 : Alive: (0.395s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=642790
watchglass: 103.36.92.112:8333 : (terebe.ns01.net) Alive: (0.578s) V=99999 (/therealbitcoin.org:0.9.99.99/) Jumpers=0x1 (TRB-Compat.) Blocks=642790
shinohai is testing new ircbot written in sh, may have it join later to test log if asciilifeform doesn't object ....
asciilifeform: shinohai: go ahead, wainot
asciilifeform awaits the moment when someone brings forth a cobol bot
shinohai: Alas, I have not enough punch cards to bring cobolbot to life.
asciilifeform: shinohai: and -- y'know , if you ~post~ the src, instead of sitting on it like last one, might even get it to adult level of stability
asciilifeform wasn't shy to post his horrid sh kludge , wai shouldn't anyone else.
shinohai: Well that's why I'm testing stability of bot right now. Plans are to have it V'd up by end-of-month
asciilifeform: shinohai: what's it do, btw, this bot ?
shinohai: Same as most any other irc bot, my curiosity in it was piqued because uses good 'ol fifo sorta like ii does.
asciilifeform: !!invoice billymg 0.0055 rk256 subscription, 1 quarter
deedbot: Get your OTP: http://paste.deedbot.org/?id=Jdj_
asciilifeform: !!v 7C2EDDB983905FD36DFF0C8387F504F5BD0C084DEC857C62D5081DF3A2C6CE2B
deedbot: Invoiced billymg 0.0055 << rk256 subscription, 1 quarter
verisimilitude: I dislike one of the only serious sh programs I've written. Notice the care I took to not have any of the data leave the pipeline, only for xargs to still viciously bite me, because it still treats certain characters specially.
verisimilitude: Of course, sh is in-part popular because UNIX makes writing a good program difficult, but a piece of sh like this simple.
asciilifeform: verisimilitude: see also .
snsabot: Logged on 2020-07-18 19:59:23 asciilifeform: trinque: for me, the big wake-up re 'there is NO reasonably clean script lang atm' was when wrote 'litmus' in what ( asciilifeform naively thought was ) pure 'sh'
snsabot: Logged on 2020-07-18 19:59:41 asciilifeform: ( turned out in only worx in bash , and possibly not even all vers of bash )
billymg: !!v AE66750204D61048CD7626253A3B2D74B5DF3E9BFEB1B8959A1B59793B100AE2
deedbot: billymg paid asciilifeform invoice 1
asciilifeform: ty billymg. will getcha plugged in 1st thing on monday.
billymg: asciilifeform: awesome, tyvm
asciilifeform: billymg: lemme know if any special req's for this rk.
asciilifeform: the default config is this.
billymg: asciilifeform: none i can think of, my old pizarro unit was fine so as long as this one is roughly the same that's all i need
asciilifeform: billymg: exactly same. then ok.
billymg: asciilifeform: perfect, sounds good
asciilifeform: billymg: to be pedantic, there's 1 diff : upstream portage mirror is now set to mine on all new leased boxen. but can set whatever you like.
billymg: ok, got it
asciilifeform: ( and do NOT ever run 'emerge --sync' . for any reason. )
asciilifeform: ( nor shut down the box . )
snsabot: Logged on 2020-07-19 22:17:44 dpb: asciilifeform, terribly sorry, I am an idiot, i shutdown my rockchip by accident
billymg: asciilifeform: noted
asciilifeform: billymg: your 1q subscript. starts on the day the box is plugged in and you successfully log in, btw.
billymg: asciilifeform: excellent, works for me
asciilifeform: meanwhile, in lulz elsewhere.
gregorynyssa: http://logs.nosuchlabs.com/log/asciilifeform/2020-07-18#1016686 << a while back, there was a Scheme-inspired language called Maru which could be boot-strapped with a few hundred lines of C. can't find the link anymore.
snsabot: Logged on 2020-07-18 19:59:23 asciilifeform: trinque: for me, the big wake-up re 'there is NO reasonably clean script lang atm' was when wrote 'litmus' in what ( asciilifeform naively thought was ) pure 'sh'
asciilifeform: gregorynyssa: these are a dime a dozen. and not very interesting to me, on acct of what it takes to bootstrap that with which you can then build 'few hundred lines of c'.
gregorynyssa: asciilifeform: what about a Scheme clone written in idiomatic CISC?
asciilifeform: gregorynyssa: plz elaborate re 'idiomatic cisc' ?
gregorynyssa: I mean, written in a non-RISC assembly-language, in an ineficient style favoring legibility.
gregorynyssa: forgoing all performance-tricks.
asciilifeform: gregorynyssa: imho even an item written in ordinary amd64 asm (for starters) would fit the bill. so long as it is done correctly -- i.e. ONLY implement in asm what absolutely cannot be moved into the lispy 2nd layer of init. 'world'.
snsabot: Logged on 2020-07-18 19:55:54 asciilifeform: trinque: since you mentioned script langs: considering, after ffa, to attempt a 'dethompsonizing' simple gc-less scheme in asm, in style of 'M' as a scripting lang. can't speak for erryone, but i've wanted a <32kB scripting lang that 'compiles with bare hands' for many yrs.
snsabot: Logged on 2020-07-18 19:58:01 asciilifeform: historically it's been attempted before, but all the examples i know of made fundamental mistake (attempted to implement the reader in the proggy, rather than in the interp. bytecode. if you do the latter, whole thing is 100x simpler)
gregorynyssa: fascinating. so how would memory-management be performed? do you manually call "free?"
asciilifeform: gregorynyssa: mno. on linux, mmap/remap, and whatever allocator + gc write in the lisp per se.
asciilifeform: observe how i handled all of this in 'M'. 0 use of libc at all. 100% syscalls for all os interfacing.
asciilifeform: note that 'M' builds w/out linker at all, it uses 0 external code, the binary is ~13kB and runs on all 2.6+ linuxen.
gregorynyssa: http://logs.nosuchlabs.com/log/asciilifeform/2020-07-18#1016684 << so you will write the reader using a hex-editor?
snsabot: Logged on 2020-07-18 19:58:01 asciilifeform: historically it's been attempted before, but all the examples i know of made fundamental mistake (attempted to implement the reader in the proggy, rather than in the interp. bytecode. if you do the latter, whole thing is 100x simpler)
gregorynyssa: asciilifeform: haven't studied M yet. will do so.
asciilifeform: gregorynyssa: write the reader in the lisp per se. in asm, implement only 'secd-like' item; the init. lisp world write using asm macros. then, when have working world, rewrite inside the lisp.
asciilifeform: then rewrite the asmer, in same.
asciilifeform: gregorynyssa: imho 'M' is a fairly complete guide not only to mips arch (as was intended) but to asm-on-amd64 in totality.
asciilifeform: oblig phftronic browser pg for 'M'.
gregorynyssa: asciilifeform: I remember SECD from Kogge's book. had a copy back in college. didn't take it with me to China.
asciilifeform: illustrates ~errything from file i/o, memory allocation, reading machine clock, etc. w/out libc.
gregorynyssa: that is great. I will study it soon.
asciilifeform: gregorynyssa: the idea is to not only throw out gcc, but to eventually replant on naked iron relatively painlessly.
snsabot: (trilema) 2018-07-06 asciilifeform: ok here goes, ftr : http://loper-os.org/pub/x86-64-toystore-os.tar.gz >> sha512==e292a6d4296bc3cc63d2bc78bb7def807f7c4e9f8e630b292afec00b08c1fc2f8eeff5d074560804828ee7aee8ab5e43e698436c203c990d994863882e51446a
asciilifeform: however, in immediate term, would also be useful as a linux script lang that doesn't weigh a gigatonne and require 20GB of opensores liquishit simply to build.
asciilifeform: even if the only i/o supported were putchar/getchar, would still handily replace many tonnes of sed/awk/python/perl/etc
asciilifeform: billymg: i've made ready brand-new outta-the-crate rk256, w/os; it is waiting simply for when i go to town to install.
gregorynyssa: to my understanding, Linux is developed and distributed under the assumptions: (1) all programs compiled with GCC, (2) all programs must include GCC's "libc." forgoing "libc" simply isn't considered.
asciilifeform: gregorynyssa: how do you suppose statically-linked proggies (e.g. trb, or ave1's gnat) work ?
asciilifeform: ultimately libc makes syscalls.
asciilifeform: whether ye olde pieceofshit glibc, or the moar compact musl, ultimately all work same way.
gregorynyssa: doesn't "libc" just access the syscall(2) through inline assembly? why not do the same in your own code?
asciilifeform: aha. see again 'M' re what this loox like.
asciilifeform: e.g.
gregorynyssa: "libc" contains failed abstractions such as "errno." I have come to conclude that its very presence is a mistake.
asciilifeform: if yer deploying on a truly ancient (pre-2.6 say) kernel, may have to adjust constants. otherwise worx on 100% of known amd64 linuxen.
asciilifeform: gregorynyssa: libc is retarded, primarily because requires the 20GB of ????? liquishit to even bootstrap. even the ultracompact musl.
asciilifeform: gregorynyssa: observe that linux syscalls actually return eggog codes directly, when req'd.
gregorynyssa: asciilifeform: of course.
gregorynyssa: one minor problem here is that Linux doesn't want programmers interacting at the ABI level. they want GNU to always be the intermediary between the programmer and the system. even the use of assemblers besides GNU's is, in theory, frowned upon.
asciilifeform: what 'linux wants' is quite irrelevant.
gregorynyssa: I suspect this was the motive behind the sabotaging of static linking which you mentioned earlier, and which I had also noticed myself.
asciilifeform: factually, e.g. statically-linked trb binary has run on erry amd64 linux i've planted it on, incl. various heathen atrocities.
asciilifeform: ditto 'M'.
asciilifeform: the actual abi has not been catastrophically backwards-broken in many yrs.
asciilifeform: ( and if ever is -- that's when you set the bozo bit on zombie linus and use best-known old tarball. 4evah )
asciilifeform: drepper's sabotage of static linking took place in glibc and nowhere else.
gregorynyssa: so long as we are clear that the current ABI stability is de facto, not de jure.
asciilifeform: clearly the fungus that ate linus will eventually break it. but this aint particularly relevant if you aint a fungus yerself and know how to bring up a known-good kernel.
asciilifeform: ( and for that matter wholly irrelevant once left linux behind. )
asciilifeform: gregorynyssa: there is a concept of 'downward pressure' that slows down and mostly prevents breakage at low level by wreckers.
asciilifeform: observe that x86 chip vendors have not dared even to abolish 'real mode' (msdos) of yet.
gregorynyssa: asciilifeform: no argument there. breaking ABI would, in practice, lead to technical issues for some fraction of Ubuntu users, a PR loss which the Linux community cannot afford.
asciilifeform: strangely enuff, it is the ~closed~ shitware vendors that we largely have to thank for this.
asciilifeform: there in fact is commercial soft for linux, that is normally distributed as static (or quasi-static, when glibc victims) binaries.
asciilifeform: linus many times bragged 'i can break abi if i want' but in practice also hasn't dared in many yrs.
asciilifeform: that being said, the fungus is in his brain nao, and you can safely bet money that eventually 'oops we broke it, but dunworry, get latest glibc'.
gregorynyssa: http://logs.nosuchlabs.com/log/asciilifeform/2020-08-08#1018263 << the Linux edition of LispWorks?
snsabot: Logged on 2020-08-08 15:02:45 asciilifeform: there in fact is commercial soft for linux, that is normally distributed as static (or quasi-static, when glibc victims) binaries.
asciilifeform: for instance.
asciilifeform: of item i personally used in depth -- 'eagle' cad.
asciilifeform: and others.
asciilifeform: vmware.
asciilifeform: many examples.
gregorynyssa: right, I see. haven't used those personally.
asciilifeform: most linux folx get away w/ never seeing any. but if yer working for $ in certain fields, there they are.
asciilifeform: mathematica.
asciilifeform: simics.
asciilifeform: and these are just item that asciilifeform personally had to live with.
asciilifeform: ~nobody luvvs closed shitware, but peculiarly it had a stabilizing effect on opensores at low level.
asciilifeform: incidentally this is why 'ohnoez, dun statically link!111' is largely unknown plague in microshit land. most e.g. win95 proggies will execute on w10 etc
verisimilitude: I agree regarding the Lisp system, asciilifeform. I can't promise if or when I'll have anything, but I was giving thought to how to write my planned Lisp system in Ada, and thought about the garbage collector. In Ada, the obvious method would be to have a generic package, but how would that work well? The obvious solution was to write the garbe collector in Lisp, having the Ada expose what's necessary, and nothing else.
asciilifeform: when you sell a proggy, you normally can't get away with 'oh and btw please replace yer whole os'
asciilifeform: verisimilitude: the latter
asciilifeform: verisimilitude: gc in lisp, in an envir. where you are able to diddle cons cells directly.
verisimilitude: In the name of stability, the Ada could expose hardcoded interfaces which the Lisp system will never generate by itself, and they could then be uninterned once the necessary procedures have references to them.
shinohai: https://archive.is/AQNfp <<< kek, smartphone users btfo *again*
gregorynyssa: asciilifeform: oh, I am well aware of that last fact. gave a tech-talk in Beijing called "The Open Ecosystem and Its Enemies" comparing the Linux and Windows mentalities.
verisimilitude: I can't view such links, shinohai.
asciilifeform: verisimilitude: there's 'over 9000' ways to do it; the ~correct~ one is the one which weighs the least.
shinohai: verisimilitude: y not ?
verisimilitude: I described the easiest method.
gregorynyssa: among other things, the "open sores" culture leads to proliferation of "implementation definedness" rather than attention to formats and protocols.
verisimilitude: POSIX idiots are infuriating, gregorynyssa.
asciilifeform: verisimilitude: specifically not 'easiest'. but the one which weighs the least (incl. loc of pre-existing soft req'd to build.)
verisimilitude: ``Oh, I don't implement this just correctly, but just send the wrong codes, for backwards compatibility. WTF, you can't just violate POSIX like that, help me Dennis Ritchie!''
asciilifeform: gregorynyssa: indeed. one of the main reasons i picked up ada is the strict minimum of 'impl.-defined' crapola and the existence of a ~paper~ standard.
gregorynyssa: shinohai: as it happens, archive.is doesn't work on my Android phone, only in my desktop Firefox.
shinohai: ah werd
asciilifeform: shinohai: expecting any kinda 'security' on shitpnoje is pretty stupid.
asciilifeform: it is difficult to even think of more pathetic example of shitware anywhere.
gregorynyssa: verisimilitude: indeed. I think Poettering got one thing correct, and that was to write programs targeting Linux itself, rather than keeping up the half-hearted POSIX charade.
verisimilitude: See the comments of my ACUTE-TERMINAL-CONTROL for a basic example.
gregorynyssa: or did you mean the opposite? haha.. either way, POSIX is a leaky abstraction.
trinque: if he didn't immediately light on fire the shitpile of portability scripts/proggies, so what
trinque grinds teeth
verisimilitude: Xterm implements the real standards incorrectly, and then the retards behind st and other emulators blindly follow it, and it will never be corrected.
verisimilitude: I wouldn't have to deal with it at all, but dealing with X11 ``solves these problems by replacing them with a much larger and costlier set of problems.''
gregorynyssa: verisimilitude: is terminal control even part of POSIX, strictly speaking?
gregorynyssa: the specification for terminal control is console_codes(4)
gregorynyssa: which I think is Linux's own mandate, not from the POSIX document.
gregorynyssa: of course xterm(1) gets it wrong, though.
asciilifeform: as i see it, all terminal emulators either follow vt100 or are broken.
verisimilitude: This isn't POSIX, gregorynyssa.
verisimilitude: The cretins implement real standards incorrectly, but treat POSIX as gospel.
gregorynyssa: verisimilitude: right, I see what you mean now.
asciilifeform: 'treat as gospel' except when they dun feel like it, also.
verisimilitude: That's just ECMA-48, asciilifeform.
gregorynyssa: no system follows POSIX perfectly. it is like ICCCM.
asciilifeform: verisimilitude: a problem with paper standards is that you can't run'em, someone actually has to implement (and attest to compliance)
asciilifeform: ( there are ~other~ problems -- someone actually has to write the standard, which is generally not a thing that opensores derps 'in spare time' are capable of being productively involved in to any degree. and the 'someone' has to also not be malicious idiot who permits 'undefined behaviours' for other idiots to later rely on )
asciilifeform: classic example of the latter being ansi c. a just about completely meaningless standard.
asciilifeform: ( ALL nontrivial c proggies entail 'undefined behaviour' )
verisimilitude: This is a nicety of Bitcoin, by my naive understanding, because ``the network doesn't care about your malformed transactions''.
gregorynyssa: starting from the mid-to-late eighties, C went through a period of optimization-frenzy, resuting in the explosion of undefined behaviors. that was not at all how Thompson and Ritchie originally conceived of the language.
asciilifeform: verisimilitude: sadly, not so clean, idjit miners routinely enforce all kindsa arbitrary garbage narrowings of the protocol
verisimilitude: They were what I deem ``intelligent idiots'', gregorynyssa. They may have been physicists, but that doesn't mean they'd any place designing a computer system.
asciilifeform: gregorynyssa: from the very beginning c had ~nonexistent insulation from certain machine-specific behaviours. e.g. integer overflow.
verisimilitude: Oh, how unexpected, but disappointing all the same, asciilifeform.
gregorynyssa: asciilifeform: that is true. but the aliasing mess came later.
verisimilitude: I was discussing with another how being P2P, more than the blockchain, is the good quality for a protocol. That is, so long as A can communicate with B to their satisfactions, it's fine.
asciilifeform: verisimilitude: c/unix were built 'off hours' by folx for ~own use~ and then transformed, by force of accident, into 'standard'. similarly to much later opensores crapola.
verisimilitude: So if B wants to only accept strict messages, and A really wants to send that message, A will conform.
asciilifeform: verisimilitude: you may find interesting to read about how the 'decentralization' promise of bitcoin was ultimately broken by miner cartels.
trinque: asciilifeform: aha, and the portability gargle appears to come directly from that "day job" involving whichever abominable commercial unix
asciilifeform: trinque: indeed
asciilifeform: trinque: similar process began in lisp planet, resulted in 'common lisp'; if had lived longer, would have produced a ball o'shit of similar magnitude and repulsiveness to e.g. unix.
asciilifeform: upstack re c standard -- the authors of the standard found their hands to be tied , and ~forced~ to permit 'undefined behaviour' on acct. of total lack of meaningful standardization of ~iron~, combined w/ c's intrinsic failure to insulate against various machine-specific behaviours.
asciilifeform: i.e. the process that in late 19th c. gave reasonably-standardized mains socket voltages/waveforms -- failed to run its course in computing
asciilifeform: instead variety of 'de facto' crapola.
asciilifeform: ( which vendors feel quite at liberty to 'embrace & extend'(tm) )
gregorynyssa: as Dennis Ritchie wrote to UNIX-HATERS: "Yet your prison without coherent design continues to imprison you. How can this be, if there are no strong places?"
gregorynyssa: "The rational prisoner exploits the weak places, creates order from chaos: instead, collectives like the FSF vindicate their jailers by building cells almost compatible with the existing ones, albeit with more features."
asciilifeform: gregorynyssa: same way as ocean imprisons shipwrecked sailor clinging to a plank.
asciilifeform: 'go, swim.'
asciilifeform: ritchie was 100% right, imho, re fsf.
verisimilitude: GNU was rightfully hostile towards implementation concerns, but not nearly so hostile towards the poor design.
asciilifeform: verisimilitude: 'being hostile to poor design' would require some semblance of a concept of good design. and an opposition to 'gaggle of rando idiots' model of development.
verisimilitude: Still, I think it's nice the FSF exists. I don't see it as a case of ``having a partial solution is actually worse than none''.
asciilifeform: verisimilitude: i'm actually ~not~ certain that its existence was any kinda net positive.
asciilifeform: the microshit-ruled dystopia that rms paints to scare children with, is not a logically inevitable consequence of 'rms hit by bus in 1980, no fsf'.
verisimilitude: I see that.
asciilifeform: for that matter, asciilifeform had significantly more pleasant experience in computing in 1990s, on msdos, than on current-day 'opens'.
asciilifeform: even in light of the fact that had to use 'kermit' for net access.
verisimilitude: There have been made safes which eluded thieves for decades. It's not inconceivable such a machine could be brought into existenc, at which point having GNU would be better than not.
asciilifeform: verisimilitude: observe that fsf did not succeed in preventing 'tivoism'.
asciilifeform: cuz this requires capability to make iron. which is ~still~ in the hands of oligarchs.
asciilifeform: ( rms specifically abandoned lispm, for instance, in favour of unixism, strictly because the latter could make use of 'junkyard' irons. )
verisimilitude: I use the AGPLv3 for most of my work, which does instate such a legal barrier. It can't be helped that a Finnish fool took some of the wind out from under GNU.
verisimilitude: I'm aware.
asciilifeform: gpl3 simply resulted in the parasites shifting to bsd world. e.g. crapple.
asciilifeform: the 1 thing rms did that there can be 0 forgiveness for, is his ~deliberate~ choice to cultivate coad gnarl as 'theft defense' mechanism for e.g. gcc.
asciilifeform: this, as i learned in recent yrs, ~was~ deliberate.
asciilifeform: from the very start he took the same approach as some psychotic prisoners, 'i'ma cover errything in my own shit to make jailers retch'
asciilifeform: while this can be satisfying for the prisoner, it makes for a rather unpleasant experience for anyone who actually gives a fuck re 'fits-in-head' or quality in general.
verisimilitude: The solution is to just write another compiler.
asciilifeform: show me ONE SINGLE fsf-endorsed patch that ~removed~ mass.
verisimilitude: That's a large ``just'', however.
asciilifeform: verisimilitude: the response of lamers to 'new compiler' is typically 'bbbut my undefined-behaviours!1111'
asciilifeform bbl
verisimilitude: This is an interesting comment.
verisimilitude: ``Programmers today are proud of overcoming the adversity of creating a program from scratch using nothing more than a text editor, they relish the difficulty, and curse and condemn anyone who would suggest that we need engineering platforms that do 99% of the work for them.''
verisimilitude: I want to program without text, and replace what passes for text anyway, and my MMC is a tool towards this goal that can get a smile from me. It's an ideal for machine code, where I need never type mnemonics to be fed to a batch-tool and other such nonsense.

Random(asciilifeform) | Download daily DB snapshot | Get Source Code