I've been having a lot of fun doing Code Katas for my weaker languages <span></span>on <a href="http://exercism.io">http://exercism.io</a><div><br></div><div>Every kata has me think, "I know how I'd do this in Python, but [Objective-C, Ruby, C, etc.] is a bit strange to me." The community there is pretty awesome. Check it out.<br><br>On Tuesday, December 15, 2015, leam hall <<a href="mailto:leamhall@gmail.com">leamhall@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Scott, that does bring up a good point. Those of you offering advanced<br>
mentoring may want to establish a minimal requirements list, or a way<br>
to assess someone's skills before mutually committing time.<br>
<br>
I'd have no problem with you telling me I'm not ready, especially if<br>
you could point out things I could do to get ready!<br>
<br>
<br>
<br>
On Tue, Dec 15, 2015 at 12:25 PM, Scott M. Jones <<a href="javascript:;" onclick="_e(event, 'cvml', 'eff@dragoncon.org')">eff@dragoncon.org</a>> wrote:<br>
> I could offer the following topics but you'll need a good C background.<br>
><br>
> - Data structures, associated algorithms, Big-O Notation<br>
><br>
> - Beginner compiler design, at least stack vs. heap but if you want,<br>
> BNF, lex, yacc, etc.<br>
><br>
> - Beginner thread coding and thread safety<br>
><br>
><br>
> Sample data structure exercise, we need to do this kind of thing to make<br>
> it real:<br>
><br>
> Write 'llproc' (linked list processor) in C with the following command<br>
> line options:<br>
><br>
> llproc [-d] file1 file2<br>
><br>
> llproc will construct a linked list of structs using newline-terminated<br>
> strings from file1 with the following definition:<br>
><br>
> struct {<br>
> int line_no; /* Line number in file1 */<br>
> char *line;<br>
> }<br>
><br>
> Linked list will be parsed for each line in file2 and any exact matches<br>
> will be deleted from the linked list, otherwise a warning is written to<br>
> STDOUT if no matches. Remaining linked list will be traversed and<br>
> written to STDOUT after file2 is processed. '-d' option prints every<br>
> insert/delete, otherwise only warnings and the final list are printed.<br>
><br>
> All linked list access must be through functional API (with add, search,<br>
> delete, iterate_all, etc.). NOT COOL to put everything in main()! No<br>
> goto, setjmp, or longjmp either. Use malloc/free for all list elements<br>
> and string storage.<br>
><br>
> Students will present solutions via code walkthrough to everyone. No<br>
> grading after the fact. Instructor to make solution available after<br>
> walkthroughs.<br>
><br>
> BONUS: Solution survives fuzzing attempts with very long strings; only<br>
> acceptable failure modes are invalid command line options, file not<br>
> found, or out of memory, all handled gracefully. Add an arbitrary<br>
> number of files with file3 being tacked on to the end of the list, file4<br>
> then being deleted from the list, etc., to prove that memory is being<br>
> free'd correctly.<br>
><br>
><br>
> On 12/15/15 7:06 AM, Leam Hall wrote:<br>
>> I'd like to encourage those of you who are decent to very good<br>
>> programmers to consider what we're doing as a calling.<br>
>><br>
>> Recently I took a C based pre-test for a software security course<br>
>> (<a href="https://class.coursera.org/softwaresec-008" target="_blank">https://class.coursera.org/softwaresec-008</a>). Realizing that I guessed<br>
>> more than I was comfortable with is one of the big things that drove me<br>
>> to re-learn C. That, and a stack of books from previous failed attempts.<br>
>> I've resolved to either learn C or give away the books. Being a<br>
>> bookworm, that's motivation!<br>
>><br>
>> Your conversations have pointed out something many of us unskilled<br>
>> programmers have heard of; there are other skills and tools to be<br>
>> learned when moving from example code in a book to putting "coder" on a<br>
>> resume. Things like lint, TDD, gmake, coding standards, etc.<br>
>><br>
>> Would you consider a "Next Steps" course starting in April or May? While<br>
>> the LCTHW-90DW is a 3 month challenge, it is based off the learning idea<br>
>> that the early stages of any new and difficult project are discouraging.<br>
>> With just 2-4 hours of C it can be hard to glimpse the possibility of<br>
>> becoming a kernel hacker. However, there comes a point (~20 hours per<br>
>> Josh Kaufman) where you're still a rank beginner but things aren't so<br>
>> painful.<br>
>><br>
>> By the time someone is through the 90 day challenge they will have<br>
>> enough discipline and pleasure to take on new tools. Maybe you run a one<br>
>> month "TDD with C" program, or "Dive into Pointers"? Or maybe you like<br>
>> some of the Coursera classes and offer to help mentor alongside the<br>
>> classwork? The security class is one option, there are Algorithm<br>
>> classes, Java classes, and a bunch of Python things going.<br>
>><br>
>> There seem to be several of you who are good at this. Could you talk<br>
>> amongst yourselves, come up with a list of "new programmers should have<br>
>> these skills", and pick one to mentor? If each of you did one to two<br>
>> "skill months" a year, and there were 4-6 of you, we could just about<br>
>> fill the year!<br>
>><br>
>> Here are some of the things that have come to mind while reading your<br>
>> notes.<br>
>><br>
>> Pointers<br>
>> Kernel module basics<br>
>> TDD<br>
>> Secure coding<br>
>> Large project management (splint, gmake, SDLC)<br>
>> Assembler basics<br>
>> Code profiling (gdb, valgrind)<br>
>> Systems programming on Linux<br>
>> Algorithms<br>
>><br>
>> Thoughts? Could we go so far as to resurrect a project like splint or<br>
>> something and bring it forward? Or help people transition into kernel<br>
>> janitors?<br>
>><br>
>> Leam<br>
><br>
> _______________________________________________<br>
> Ale mailing list<br>
> <a href="javascript:;" onclick="_e(event, 'cvml', 'Ale@ale.org')">Ale@ale.org</a><br>
> <a href="http://mail.ale.org/mailman/listinfo/ale" target="_blank">http://mail.ale.org/mailman/listinfo/ale</a><br>
> See JOBS, ANNOUNCE and SCHOOLS lists at<br>
> <a href="http://mail.ale.org/mailman/listinfo" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
<br>
<br>
<br>
--<br>
Mind on a Mission<br>
_______________________________________________<br>
Ale mailing list<br>
<a href="javascript:;" onclick="_e(event, 'cvml', 'Ale@ale.org')">Ale@ale.org</a><br>
<a href="http://mail.ale.org/mailman/listinfo/ale" target="_blank">http://mail.ale.org/mailman/listinfo/ale</a><br>
See JOBS, ANNOUNCE and SCHOOLS lists at<br>
<a href="http://mail.ale.org/mailman/listinfo" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
</blockquote></div><br><br>-- <br>.!# BrunoBronosky #!.<br>