doomlord has joined ##openfpga
tecepe has joined ##openfpga
C47 has quit [Quit: Leaving]
<rqou> wow, ieee loves to nickel and dime people
<rqou> i was checking if i could get access to ieee standards without using the university's library proxy that i shouldn't have access to anymore but still do
<rqou> and the answer is no
<rqou> because a) my membership is expired and b) even if it wasn't, access to documents needs a separate subscription
amclain has quit [Quit: Leaving]
pointfree has quit [Remote host closed the connection]
pointfree has joined ##openfpga
SpaceCoaster has joined ##openfpga
landley_ has quit [Ping timeout: 250 seconds]
Bike has joined ##openfpga
C47 has joined ##openfpga
C47 has quit [Ping timeout: 240 seconds]
C47 has joined ##openfpga
<whitequark> hmm
<whitequark> link?
<cr1901_modern> I haven't been an IEEE member for years. I have no incentive to be.
<whitequark> who needs ieee membership if you have libgen membership
<cr1901_modern> That too (or sci-hub) :P
<rqou> i mean, i have multiple not-super-legit ways to still get access to documents
<rqou> i have ssh access to a number of servers that are on campus
<rqou> so I can just proxy through them
<whitequark> yeah but libgen is just so... convenient
<rqou> heh, i just downloaded ieee 1076 (VHDL LRM) from libgen and the watermark is at least removed
<rqou> or more precisely replaced with a chinese website :P
DocScrutinizer05 has quit [Disconnected by services]
DocScrutinizer05 has joined ##openfpga
digshadow has quit [Ping timeout: 264 seconds]
digshadow has joined ##openfpga
<rqou> azonenberg: I wrote up some opinions about splash that you are free to ignore: https://gist.github.com/rqou/42978048b5a56911d1d6bf6c7eeb726c . Unfortunately, it's mostly pointing out problems without offering any useful solutions to them. It's not intended to be criticism.
<cr1901_modern> I wish scons would get their shit together and support Python 3...
<rqou> eh, whatever
<rqou> I don't mind having multiple copies of Python installed
<whitequark> >Can a build target generate new targets and/or otherwise mutate the build DAG? Can build scripts contain computation? Is there a safe way this can even be done that doesn't force serialization, cause nondeterminism/race conditions, or make the build script accidentally Turing-complete?
<whitequark> don't do it.
<whitequark> nothing good will come out of it
<whitequark> ocamlbuild did it and see what happened
<rqou> hrm, not familiar with ocamlbuild
<rqou> what did they do?
<whitequark> dependency discovery
<whitequark> you give it a target and it applies various rules until it can do it no longer
<whitequark> but if somehting's missing, you get super obscure errors
<rqou> seems to be a common problem among languages with powerful type systems
<rqou> but yes, I don't want that in my build system
<cr1901_modern> Is there a way to make the errors not-super-obscure, or was it a side effect of "ocamlbuild doing something it was not meant to do"?
<cr1901_modern> I mean, even most C projects would prob be okay with dependency discovery with hints
doomlord has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
digshadow has quit [Read error: Connection reset by peer]
doomlord has joined ##openfpga
<azonenberg> rqou: Just got home
<azonenberg> Reading...
<azonenberg> So first off, it is intended to be a build system but none of the design constraints inherently prevent it from being used for other purposes at this point
<azonenberg> The only assumption I make right now is that individual operations are idempotent
<azonenberg> IOW is it safe to run the same build operation multiple times (if the output was flushed from the cache due to capacity limits)
<azonenberg> and it is also safe to reuse a cached value and not re-run it
<azonenberg> Multiple inputs are a key feature so obviously they'll be supported
<azonenberg> Multiple outputs will also be supported although i havent figured out exactly how to do that
<azonenberg> for FPGA stuff it's a critical feature (for example, netlist and placement report file)
<azonenberg> The two required outputs for every step are console output (mixed stdout/stderr) and the output data file
<azonenberg> each unique DAG node is identified by a sha256 hash and the cache contains a directory for that hash
<azonenberg> Re integration with tools, the "splash" client can be used just like "make" although probably with slightly different argument syntax
<azonenberg> So it should be easy to integrate with IDEs
<azonenberg> i havent implemented the client yet so details are TBD
<azonenberg> When the control server pushes a build job to a build server, the Toolchain object is responsible for actually executing that operation
<azonenberg> This can involve invoking arbitrary external compilers/executables as needed for that toolchain
<azonenberg> I haven't reached that point in the implementation so details are TBD
<azonenberg> i'm still in the "generate the DAG" phase
<azonenberg> The graph is immutable once created, any time a source file or build script changes the relevant subgraph is regenerated and new nodes with different hashes are created
<azonenberg> I use a mark-and-sweep garbage collector to clean up old nodes as needed, right now i GC all the time but in the future i will probably be less aggressive to allow caching if you revert a file
<azonenberg> What i may do is make the GC delete only a subset of unreferenced nodes based on some LRU heuristic etc
<azonenberg> (this is in-memory dependency graph nodes, there's a separate cache for command outputs and that is much less aggressive at flushing since a compile is way more work than a dependency scan)
<azonenberg> The build language is intentionally declarative
<azonenberg> There will be support for automatic code generation
<azonenberg> Most likely the way this will be handled is by having a special node in the "sources" section of a script that specifies a code generator plugin to invoke
<azonenberg> if the output of that node exists, it's used as a source
<azonenberg> if it does not, the generator is invoked first
<azonenberg> There is no "native" vs "cross" compilation
<azonenberg> A given directory has a set of default architectures that a particular toolchain compiles for, you can override or supplement this list on a per target basis
<azonenberg> If you have a compiler that only runs on, say, ARM
<azonenberg> just spin up a splashbuild daemon on an ARM box
<azonenberg> whether emulated or native is irrelevant
<azonenberg> that daemon will then advertise it has that compiler to the control server, which will schedule jobs appropriately
<azonenberg> As far as the controller is concerned, it just has to tell one of the nodes with compiler X to build the following sources with the following flags
<azonenberg> Ditto for containerization etc
<azonenberg> Skipping most of the "issues from other build systems" for a moment and going to handling of bugs
<azonenberg> Individual tasks will specify estimated memory usage and the scheduler will do its best to not OOM the machine
<azonenberg> The toolchain driver will pick sane defaults for typical configurations and you can override these if you have a particularly complex executable etc
<azonenberg> If i can detect that the process was killed due to OOM (not sure how easy this is) I'll re-run the job on a node with more memory available, perhaps by oversubscribing less jobs
<azonenberg> I use TCP so loss of a few packets is no big deal
<azonenberg> If the entire connection drops, right now the client disconnects and never comes back
<azonenberg> I will probably add a reconnect loop of some sort
<azonenberg> Re handling of attached hardware, most likely what will happen is (I haven't implemented the handling for hardware-in-loop for this splash version yet) the test job will hang waiting to be scheduled
<azonenberg> because there are no available nodes pulling that work unit
<azonenberg> ditto for if all build servers with a particular compile drop offline
<azonenberg> If this happens i'll probably have the client print a message
<azonenberg> saying that there is nothing that can run that job right now, and give you the option of canceling the build or blocking until the host comes back
C47 has quit [Quit: Leaving]
<azonenberg> Re absolute paths, that was a known issue in splash v1 (one of the reasons i couldn't publish binaries for libjtaghal etc before)
<azonenberg> and one i plan to solve in this version
<rqou> hmm it seems to me that what you've got in mind is great for monolithic projects where everything is under similar management (e.g. Google and blaze)
<azonenberg> That is my primary use case, yes
<rqou> but not as great for a project like OpenWRT
<azonenberg> Antikernel
<rqou> OpenWRT-style embedded linux seems to be the cases where you hit the most spectacular build failure
<rqou> *failures
<azonenberg> Where you have one giant project with a lot of subprojects (jtag library, unit tests, code generation tools, softcore CPUs, firmware for FPGAs and MCUs on multiple boards, etc)
<azonenberg> If it ends up being useful for other stuff, great
<azonenberg> But i'm making it to solve my problem
<rqou> I was thinking I might want it to handle OpenWRT-style builds
<azonenberg> If it solves other problems i'm not going to complain, and i'm willing to put reasonable effort into making it generic where it doesn't break with my core requirements
<azonenberg> But i'm not trying to replace make for everything
<rqou> i see
<rqou> i'm not sure what you really can do about the embedded linux distro use case
<azonenberg> Yeah
<azonenberg> That is not something i am trying to solve right now
<azonenberg> My problem is that i have well over a hundred targets for over a dozen architectures
<azonenberg> if i build them all serially on one node it takes hours
<azonenberg> maybe most of a day by now
<rqou> many programs that are broken in embedded linux are broken for dumb build system reasons rather than nonportable code
<azonenberg> now imagine throwing a couple of developers at that project
<azonenberg> Which is where i am trying to take it
<azonenberg> Down the road I plan to make splash run over TLS with client cert authentication so you can have collaborating developers from multiple locations sharing one cache and build cluster
<azonenberg> I'll probably still VPN it to be extra safe
<azonenberg> and WAN stuff is not necessarily the primary goal (compared to multiple devs at one facility sharing a cluster)
<rqou> my experience with TLS client certs is that you will be very frustrated at people that never realized they existed and "did it wrong"
<azonenberg> I'll support pre-shared key auth too for small deployments
<azonenberg> But i've deployed client certs for OpenVPN in the past with decent results
<rqou> openvpn works great
<azonenberg> I have my own private CA
<azonenberg> i created one intermediate CA for HTTPS and one for VPN
<rqou> client certs in the browser-related stack is lots of fun
<azonenberg> then signed node certs from there on
<azonenberg> I dont currently use client certs over HTTPS
<azonenberg> only for VPN
<rqou> client certs in things that got TLS duct-taped on (SMTP, IMAP) work awful
<azonenberg> my dream is that one day we can murder the evil that is passwords
<azonenberg> and use 100% client certs for everything
<azonenberg> each user account will map to an array of public keys
<azonenberg> you can have as many as you want for different devices, VMs, whatever
<rqou> yeah, that's how my personal server stuff is set up
<azonenberg> one or more of those keys would be marked as admin keys for the account, allowed to add/remove other keys
<azonenberg> (not necessarily all, for example you might not want your phone to be able to add new keys to your online banking)
<azonenberg> I've already eliminated passwords from my LAN (need to make one final pass soon next time I do an internal pentest and make sure I got everything)
<azonenberg> i have two cisco switches that dont seem to support client cert auth on SSH so those still use passwords sadly
<azonenberg> but everything else is SSH client certs exclusively
<rqou> for SSH i also dropped passwords a long time ago
Bike has quit [Quit: wide-eyed terror]
<rqou> i don't really know why people don't use client certs more often
<rqou> it always seems to be treated as an "enterprise" thing to do
<azonenberg> Yeah i know
<azonenberg> I'd love to switch the wifi to wpa2-enterprise with client certs eventually
<azonenberg> but that isnt happening for a while as game consoles etc dont usually support it
<rqou> thanks nintendo
<azonenberg> Not that it really matters a ton, my wifi is on the DMZ vlan :P
<azonenberg> basically gets internet access and nothing else
<azonenberg> everything with anything sensitive on it is either copper or fiber gig-e
<rqou> it's hilarious how nintendo is really great at using weird wifi features that nobody else knows about but at the same time can't get e.g. wpa2-eap working
<azonenberg> lol
<rqou> e.g. they can do streetpass
<azonenberg> is that wifi? i thought it was BT
<azonenberg> never looked at the implementation
<rqou> streetpass is wifi
<rqou> there's no BT on 3DS
<rqou> (as far as anyone can tell)
<rqou> wiimotes are BT
<rqou> but Wii U gamepads are wifi
<azonenberg> One day i will be replacing those ciscos with custom switches
<azonenberg> Soon...
<azonenberg> http://thanatos.virtual.drawersteak.com/unlisted/switch-108.png is my progress to date on the first prototype
<rqou> my absolute favorite nintendo wifi fail is how legacy DS games can't use wpa/wpa2 at all even on a newer console like 3DS
<rqou> legacy games can only do open or wep
<azonenberg> Nine 1000base-KX backplane interfaces, three 1000base-X SFPs on the front, and one 10gbase-X SFP+ on the front
<rqou> nice
<azonenberg> well that plus the controllers for the 1000base-X and 1000base-T interfaces
<rqou> which chip is the ram? the one below the fpga?
<azonenberg> I do not yet have a 10gig controller core
<azonenberg> Yes
<azonenberg> I need to redo it
<azonenberg> the layout you see there is impossible to length match, not enough space
<azonenberg> going to rotate 90 deg and switch io bank assignments a bit
<rqou> what type of ram is that that doesn't have empty columns in the middle?
<azonenberg> QDR-II+
<azonenberg> that one chip has the I/O bandwidth of an entire DIMM of DDR3 1066
<azonenberg> Considering it's SRAM and doesn't need refreshes, it's probably closer to 1333
<rqou> it's not as commodity though
<azonenberg> the latency is also way lower, 2.5 clocks vs however many tens the CAS latency is up to now :p
<azonenberg> Oh and also, the controller is way simpler to write
<azonenberg> I may not even need it
<azonenberg> it was more of a hedge against running out of block ram
<azonenberg> my proposed block diagram does not even require it
<azonenberg> But if i decide to go all out and implement layer-3 switching functionality i may need it for routing tables etc
<azonenberg> This thing is a bit overkill :P
<azonenberg> the chip in the top left is a zynq
<azonenberg> the chip in the middle is the largest artix7 (biggest gate count and biggest package)
<azonenberg> The entire packet forwarding datapath will be in the artix
<rqou> no ecc on the ram?
<azonenberg> The zynq is intended as a testbed to see if i can get antikernel running on a cortex-a9
<azonenberg> The RAM is 72 bits wide
<azonenberg> I intend to use it as 64 + ECC
<rqou> ah
<azonenberg> it's only i think 4 MB capacity
<azonenberg> but it's 72 bit wide simple dual port
<azonenberg> so one read and one write bus at i think 800 MT/s
<azonenberg> 4-word bursts, one shared address bus alternating between R and W addresses
<azonenberg> I take that back actually, i think the ram is 36 bits
<azonenberg> but four word bursts
<azonenberg> My plan was to take every 2 36-bit words and do a standard 64->72 hamming code
<azonenberg> Then concatenate the 64 bit blocks to a 128-bit cache line
<azonenberg> But again thats a long way out
<azonenberg> I tabled the board for a bunch of reasons, one of which is that I got started on openfpga
<azonenberg> right now it has a coolrunner as the PMIC
<azonenberg> plus some discrete comparators etc
<azonenberg> i plan to replace all of that with a slg46620
<azonenberg> that will let me axe one of the jtag headers and LDOs and save a bunch of board space
<azonenberg> (plus the chip package itself is like 1/4 the size)
<rqou> is the board 6 layers or more than that?
<azonenberg> 8, controlled impedance with filled via-in-pad
<azonenberg> Which is the other reason i tabled it, budgetary :p
<azonenberg> Don't have the quote in front of me but i recall it will cost me something like $900 to make a minimum order of it at my usual chinese fab
<azonenberg> that's bare PCBs
<azonenberg> the FPGA alone is another $250 per board
<azonenberg> the zynq is $50ish
<azonenberg> the RAM is $50ish
<azonenberg> another $50 probably in assorted support stuff (buck converters, passives, etc)
<rqou> heh, ~10 years ago my father was getting poor yield with crappy chinese fabs and via in pad
<azonenberg> 1g SFPs are commodity, i can get them secondhand for less than a dollar, but the 10gig SFP has to be bought new for $80 or so
<azonenberg> This is not a crappy fab
<azonenberg> I've used them before for designs down to 0.35mm pitch WLCSP
<rqou> for 10g can't you just use direct attach?
<azonenberg> i broke out a 176-ball 0.4mm BGA with stacked microvias in pad (layer 1-2 blind and 2-3 buried)
<azonenberg> I could, but the cables are $$$
<azonenberg> and i have OM3 fiber between the house and garage already
<azonenberg> (servers are in garage, desktop is in house)
<azonenberg> right now it terminates at an old cisco 2970g
<azonenberg> on each end
<azonenberg> then breaks out to baseT for endpoint devices, plus a few short run fibers to prototype boards
<azonenberg> i explicitly laid fiber so that i could go 10g in the future and have an upgrade path without a new cable plant
<rqou> oh you're doing long distances
<rqou> a 1m direct attach cable is $20
<azonenberg> this is probably more like 10m
<azonenberg> if you include all of the up and down from the rack into the ceiling, through the crawl space, then up to the second floor of the house
<azonenberg> Here's a few pics of boards i made with that fab btw
<azonenberg> All of these have ViP
<rqou> hmm this site claims to sell a 10g sfp for $25
<azonenberg> there is a barely perceptible divot in the center of the filled vias that you can see if you hold the board at an angle with good lighting under a microscope
<azonenberg> But it was not enough of a nonplanarity for me to have any problem reflowing multiple 0.4mm BGAs
<azonenberg> there are ViPs in almost every one of those passive pads
<azonenberg> As well as the big BGA
<rqou> nice
<azonenberg> The design rules i chose wouldn't let me put vias in the small BGA so i dogboned it since it was only two rings of balls
<azonenberg> You get a full QA report with every board
<azonenberg> a solderability test sample
<azonenberg> an epoxy-embedded microsection
<azonenberg> (i guess as proof they really did the QA? or maybe it saves them the cost of throwing it out?)
<rqou> ~10 years ago the company my father worked for couldn't be bothered to get the fab to fix their nonplanarity
<azonenberg> for whatever reason, it's cool :p
<azonenberg> see PM, linked you one of their QA reports
<rqou> for the company my father used to work for, the fab used to manufacture "vga accelerators"
<azonenberg> bilingual english/chinese, except for the spots where it says "其它"
<azonenberg> apparently that means "other"
<rqou> my father got the engineers at the company to sit down with the engineers with the fab and fix their issues
<rqou> they got really good pricing this way
<azonenberg> ex soldermask color, i asked for blue which wasnt one of the default options
<azonenberg> They do characterize the boards for planarity
<rqou> eh, I've got "good enough" chinese that I could probably deal with a fab that wasn't very good at english
<azonenberg> I dont :p
<azonenberg> Which is one of the (many) things i like about this one
<azonenberg> Highly recommended if you are doing high end stuff
<azonenberg> They're not as cheap as, say, gold phoenix
<azonenberg> Right now my approved fabs list is oshpark for small prototypes where i dont need high specs and just want a handful of small boards
<azonenberg> hackvana for large very low spec boards like power supplies or mechanical dummies (for enclosure mockup testing etc)
<azonenberg> and multech for anything fancy
<rqou> is the actual fab in HK or mainland?
<azonenberg> Shenzhen
<azonenberg> they have the address somewhere
<azonenberg> So far the only times i haven't been super happy with their boards is when I made a design screwup and sent them buggy gerbers
<azonenberg> But that's my fault, they arent going to debug my circuit for me :p
<rqou> their non-www redirect seems broken :P
<azonenberg> Back when i worked at a PCBA shop in grad school we did a bunch of turnkey projects through them
<azonenberg> reflective white soldermask on aluminum core
<azonenberg> ultra thin interposer boards (0.2mm maybe? not much thicker for sure)
<rqou> hmm their actual website doesn't say anything about HK but the test report does
<azonenberg> BGA down to 0.35mm
<azonenberg> stacked microvias, ViP, controlled impedance
<azonenberg> never had problems
<azonenberg> The biggest screwup i got is when they sent me a solder test sample from the wrong board
<azonenberg> but the QA report reflected my specs, not those of the specimen they mailed me
<azonenberg> probably just somebody grabbed the wrong one off the bench
<azonenberg> (it has green mask, my actual board had - and the QA report said - blue)
<azonenberg> I got the right boards so i was happy lol
<rqou> regarding the crappy end: one of my father's friends tried to get a pcb assembled in china and was asked by the assembly house what the warranty period was before getting a quote
<cr1901_modern> Which fab is this again?
<rqou> for azonenberg's good one
<rqou> you don't want all the crappy ones my father has told me horror stories about
<rqou> :P
<rqou> the china fabs that can speak english are already in general less crappy
<azonenberg> rqou: wait they wanted to know his warranty period?
<azonenberg> so they cou;d make the board last that long and no longer? :p
<rqou> exactly
<rqou> they've got it down to a science apparently
<azonenberg> lool
<azonenberg> thats a new low
<rqou> e.g. using recycled solder
<azonenberg> planned obsolescence? no, just chinese ingenuity at work
<azonenberg> i'll give them that
<azonenberg> They are very good at figuring out how to do "just good enough" at minimum cost
<rqou> pretty much
<rqou> there's a youtuber that makes chemistry videos that's been scammed by "interesting" chinese scammers multiple times
<azonenberg> I bought a coolrunner from ebay one time
<azonenberg> i could get the 32a/64a/128/256 cheap enough on digikey
<azonenberg> the 384 was a little pricey
<azonenberg> so i figured i'd try a sketchy ebay seller
<azonenberg> i mean, its not like i lose much if its fake
<azonenberg> i'm just decapping it
<azonenberg> guy was selling it for ~2/3 the ebay price
<azonenberg> the digikey price*
<azonenberg> Anyway, the part arrived a month later via china post
<azonenberg> scotch-taped to a piece of cardboard
<azonenberg> (good sign, lol)
<azonenberg> So i took the tape off
<azonenberg> and tried to get a photo of the package before decapping
<azonenberg> Too much tape residue
<azonenberg> So i got a swab and some acetone to clean off the glue
<azonenberg> Aaaand the markings came off too :P
<azonenberg> it was blacktopped
<rqou> lol
<azonenberg> No old markings visible underneath
<azonenberg> so i figured i'd decap anyway and see what i got
<azonenberg> was some kind of TI part, looked like a big MCU or maybe a DSP
<azonenberg> i have the die somewhere in the garage i thinnk
<rqou> I take it you've seen this? https://www.sparkfun.com/news/395
<azonenberg> anyway the best part is that i filed a claim on ebay and got a full refund almost immediately
<azonenberg> is that the counterfeit atmegas? yes
<azonenberg> (what was the guy going to say to argue? I have a photo of his "Xilinx" chip with a TI die inside...)
<rqou> I ended up with a counterfeit nintendo cartridge via ebay once
<rqou> it wasn't even good
<rqou> the gold fingers looked like normal ENIG rather than hard gold
<azonenberg> lol
<rqou> and of course the mold flash doesn't match a real cart
<rqou> defcon 24 had a talk about making a counterfeit defcon black badge
<rqou> for the pcb-based badge, the giveaway of the counterfeit was again the plating
<azonenberg> lol i remember the most recent defcon had a counterfeit skull badge
<azonenberg> The giveaway there was the mouse bites
<azonenberg> the fake was individually routed
<azonenberg> the real ones had panelization residue left over
<rqou> yeah 24 was the most recent one
<azonenberg> ah, ok
<azonenberg> Were you there?
<rqou> yes
<azonenberg> aww if i had known we should have met up
<rqou> i spent a bunch of time getting destroyed by the badge challenge
<azonenberg> i was at the ioactive event most of the time, barely set foot in the con proper
<azonenberg> went to the tamper evident village a bit but didnt go to any talks
<azonenberg> i ran into a couple of folks from this chan there
<azonenberg> saw defparam_ at, i think, the microsoft party?
<azonenberg> lawl
<azonenberg> did you poach the sign?
<rqou> yeah, right after closing ceremonies
<azonenberg> lol niiice
<rqou> didn't get a beanbag though
<azonenberg> reminds me, there's a giant cardboard Millennium Falcon over the electronics section at the local walmart
<azonenberg> $FIANCEE wants it, lol
<azonenberg> even if we could convince them to part with it (or "liberate" it), though, i dont think it would fit in the car :p
<rqou> this thing barely fit in my parents' van
<azonenberg> its like 10 feet across and there are some fairly large panels
<azonenberg> and she does not have a large car...
<rqou> i was also at black hat right before that
<rqou> decided to drop into the black hat ctf after lunch
<rqou> and tied for 4th/5th
<rqou> but that's not nearly as hardcore as defcon's ctf
<azonenberg> "woo look i out-pwned a bunch of IT managers and marketing folks" :P
<azonenberg> Reminds me of a programming contest i competed in back in high school, was hosted by a local college
<azonenberg> I was homeschooled and couldn't find anyone to play with me
<azonenberg> So i entered the contest, intended for 3-man teams, solo
<azonenberg> the rules worked in my favor b/c each team got one computer
<azonenberg> the intention was for 2 to be working on algorithms while one implemented
<azonenberg> people were looking at me kind of funny early on when they saw i had no team
<azonenberg> They stopped laughing when i took second place out of 40ish teams :p
<azonenberg> i kinda feel sorry for the winning team
<rqou> I did the ccc ctf 2 years ago and got iirc 4 flags
<rqou> it was my first time doing a ctf
<azonenberg> They took first, but it took three of them to beat one guy
<azonenberg> like, really? doesn't prove much
<azonenberg> of course you won :p
<azonenberg> But the teams that placed below me might have felt even worse, going 3-on-1 and still losing
<azonenberg> It wasn't exactly fair though, these were high school students with like one year of java under their belt
<azonenberg> I had been doing C since i was 9
<rqou> my high school is such a fail they don't even have a cs class
<rqou> i think they might now
<rqou> heh, I also started around 9
<rqou> also with C
<rqou> i learned embedded systems programming on the nintendo gba
<azonenberg> lol i never really did embedded stuff, its funny
<azonenberg> early on
<azonenberg> i started out learning C for PC and basic electronics with opamps and 555s
<azonenberg> never combined the two until i got to college and my friend from down the hall gave me a couple of PIC12F683s
<azonenberg> that chip will always be special to me
<azonenberg> First MCU i ever wrote code for
<azonenberg> First MCU I ever broke the code protection on
<azonenberg> Subject of my first invited con talk
<rqou> i started on electronics using the radioshack electronics learning lab
<azonenberg> My cousin had one of those, or a similar one
<azonenberg> i never got to use it much since she lived in the next state
<rqou> actually, before that I had ~the earliest generation of snap circuits
<rqou> before they entered the us market
<rqou> hmm, now that I research it maybe that isn't right
<rqou> i think what i had was probably a chinese clone of the first generation of snap circuits
<rqou> but it was definitely before snap circuits became known by any significant amount of educators
<rqou> (in the US)
<rqou> I want to say the timeframe was ~2001
<rqou> the wayback machine has snapshots of the snap circuits website back to 2004
<rqou> but the 2004 website hints that it was already an established product
digshadow has joined ##openfpga
tecepe has quit [Ping timeout: 244 seconds]
digshadow has quit [Ping timeout: 244 seconds]
digshadow has joined ##openfpga
digshadow has quit [Quit: Leaving.]
digshadow has joined ##openfpga
digshadow has quit [Quit: Leaving.]
doomlord has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
maaku has quit [Quit: No Ping reply in 180 seconds.]
maaku has joined ##openfpga
doomlord has joined ##openfpga
digshadow has joined ##openfpga
C47 has joined ##openfpga
Bike has joined ##openfpga
tecepe has joined ##openfpga
doomlord has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
tecepe has quit [Ping timeout: 265 seconds]
C47 has quit [Ping timeout: 276 seconds]
tecepe has joined ##openfpga
amclain has joined ##openfpga
C47 has joined ##openfpga
doomlord has joined ##openfpga
m_w has joined ##openfpga
m_w has quit [Quit: leaving]
X-Scale has quit [Quit: Want to be different? Try HydraIRC -> http://www.hydrairc.com <-]
m_w has joined ##openfpga
C47 has quit [Quit: Leaving]
tecepe has quit [Ping timeout: 276 seconds]
knielsen has quit [Read error: Connection reset by peer]
knielsen has joined ##openfpga
digshadow has quit [Ping timeout: 265 seconds]
tecepe has joined ##openfpga
m_w has left ##openfpga ["Leaving"]
tecepe has quit [Ping timeout: 264 seconds]
C47 has joined ##openfpga
tecepe has joined ##openfpga
d3bug has joined ##openfpga
C47 has quit [Ping timeout: 240 seconds]