[HN Gopher] CodeMic: A new way to talk about code
       ___________________________________________________________________
        
       CodeMic: A new way to talk about code
        
       Author : seansh
       Score  : 71 points
       Date   : 2024-12-22 08:27 UTC (14 hours ago)
        
 (HTM) web link (codemic.io)
 (TXT) w3m dump (codemic.io)
        
       | brudgers wrote:
       | If it meets the guidelines, this might make a good 'Show HN'.
       | Show HN guidelines: https://news.ycombinator.com/showhn.html
        
         | codetrotter wrote:
         | Looks like it checks the authored by submitter box, but maybe
         | not the "other people can play with" part yet?
         | 
         | Not sure if early access with email gives everyone access now,
         | or if it will be only given to some people or only when it's a
         | bit more ready.
         | 
         | OP should for sure make a follow up post, with Show HN prefix,
         | when it's available for all users. For now, if it's not yet
         | available for everyone to try, I think OP made the right choice
         | to not mark this post as "Show HN".
        
           | seansh wrote:
           | I can't wait to post it as a Show HN but the early access
           | isn't ready yet. I'm aiming for end of Jan.
        
       | wrs wrote:
       | I'm personally not a fan of being talked at -- I don't listen to
       | podcasts, and I reluctantly watch talks on YouTube at 2X speed --
       | but I would love to see a textual version of this. Basically a
       | pane in VS Code where you could read a nicely-formatted version
       | of _Crafting Interpreters_ and click to make the code changes
       | happen. Like _Lion 's Commentary on Unix_ but "live" in the
       | editor.
        
         | seansh wrote:
         | Even with audio/video, it's still useful to have a side pane to
         | show some text, slides, and visual aids all synced to the
         | timeline. I was thinking something like the markdown preview in
         | a split screen. Also, I'm sure some prefer to write than talk
         | so once that feature is in place, we can have any mix of audio,
         | video, or markdown guides.
        
       | divan wrote:
       | The idea and arguments behind it impressive, but I'm stuggle to
       | understand couple of things:
       | 
       | - why is Doom gameplay is shown alongside recording of someone
       | coding a player logic? Was it the developer recording the screen
       | and narrating, explaining what he means with that line of code?
       | 
       | - I see appeal to "relive" your own code (so you have a mental
       | model of problem domain and the code base in your head). But how
       | is it supposed to work for onboarding new developers? Even in the
       | code examples in video, how does one understands the thinking -
       | like, what are those magic constants (dist == 200), for example?
       | Is there audio narration or what?
       | 
       | Also, I believe that next year will be the true explosion of
       | agentic code editors, so how is it gonna work here? Is it going
       | to capture prompts in Cursor/Windsurf? Will it even be easy to
       | follow what changes AI assistant made in bulk in multiple files.
       | Since I switched to Windsurf, the speed and workflow is so
       | dramatically different from that old-school person typing coding
       | workflow.
        
         | seansh wrote:
         | Yes the Doom gameplay was narrated. It was showing how the
         | changes to the code affected the gameplay.
         | 
         | The main idea is to create narrated guides through the code. It
         | can be audio only or mixed with video and images.
         | 
         | CodeMic basically records changes made to the code (as well as
         | scroll, selections etc). It doesn't really care if the changes
         | are made by the developer or the AI assistant. I think it would
         | be the job of the narrator to explain why the files suddenly
         | changed.
         | 
         | I'm excited to see what kind of content developers will create
         | on CodeMic but personally, my inspiration is 3Blue1Brown. That
         | is to say, not so much live recording of a 3 hour long
         | programming session but instead shorter, more polished and well
         | planned content. I suppose time will tell which will be more
         | popular.
        
           | divan wrote:
           | Thank you, that makes more sense now. Wasn't super clear from
           | the intro video. I hope there will be enough people who need
           | this kind of tool for their team/community!
        
       | Groxx wrote:
       | Neat. I can see this being a very large step beyond "coding on
       | Twitch"-like streaming, and pretty much all programming-related
       | educational videos too.
        
         | seansh wrote:
         | Thank you. Yeah as much as I like to watch coding on
         | Twitch/YouTube I always get lost 30 minutes in and can't tell
         | what I'm looking at. I really hope CodeMic will change that.
        
       | revskill wrote:
       | How about collaboration, this is great for pair
       | programming/anything else here ?
        
         | seansh wrote:
         | That would be very interesting. But for now it's a little out
         | of scope. I think the key feature here is a tool and a platform
         | for developers to record and replay coding sessions in a much
         | more interactive way than what we currently have on Twitch or
         | YouTube.
         | 
         | In the future, we could add live record & replay which would
         | pave the ground for pair programming as well.
        
       | codetrotter wrote:
       | > In future versions, I plan to bring CodeMic to more IDEs:
       | Emacs, (Neo)Vim, IntelliJ, Sublime Text, Helix, and others. It'd
       | also be great to have a web player or mobile app for smaller
       | screens (unlike screencasts, the font size can adapt to the
       | screen).
       | 
       | I like the idea of CodeMic a lot. Will the mobile app or web
       | player also allow you to explore the code like you would in the
       | IDE? Perhaps something built on VS Code in the browser that
       | integrates CodeMic? Similar to how GitHub has VS Code in the
       | browser that you can use to explore and edit code from repos.
        
         | seansh wrote:
         | Thanks. Yes. That is one of the central ideas of CodeMic. The
         | way I imagine the web player is that we'd be able to pause the
         | session and browse the codebase and even download the entire
         | codebase as it is at that exact moment.
         | 
         | With something like VSCode for browser, as opposed to a simple
         | code viewer, we'd also be able to use the intellisense features
         | to better understand the code.
        
           | bogwog wrote:
           | Being able to host a web player for these on a static site
           | for documentation would be killer.
        
             | seansh wrote:
             | Absolutely. It should be as easy as embedding a youtube
             | video.
        
       | codetrotter wrote:
       | One small thing, the text box for inputting email address to sign
       | up for early access and updates might be better if it had
       | <input type="email">
       | 
       | At the moment when I click to add my email, Safari on iPhone
       | suggest putting my name into it. Usually Safari will suggest
       | putting my email into email inputs. So maybe it's missing the
       | type attribute?
        
         | seansh wrote:
         | of course, I'll fix it, thanks.
        
       | benatkin wrote:
       | At the end the article tries to tie this to the importance of
       | looking at code:
       | 
       | > He wrote about a peculiar observation: everyone says reading
       | code is important, yet few of us actually do it.
       | 
       | This is an approximation of watching screencasts, just like
       | watching games on Lichess is an approximation of watching chess
       | on Twitch or YouTube.
       | 
       | While it's a nice supplement to reading code, it is a tiny
       | fraction of my code consumption. That "code is not literature" is
       | just the non linear nature of reading code*, but still perusing
       | the source code, documentation, commits, tests, data, etc is far
       | more important way of consuming code than watching it being typed
       | out. Talks are important but most of the utility is the author
       | deliberately communicating something.
       | 
       | As for reading code in a way that reflects it being different
       | from literature, it's helpful to be able to quickly search the
       | code and find references whether through searching or links.
       | Running the tests or using the code in a repl or by making a
       | program that uses it is also important and reflects the
       | _naturalist_ aspect mentioned in the article.
       | 
       | This seems like it could be quite cool but I think to help
       | programmers to understand more codebases it would be better to
       | try to streamline reading code in a non-linear way. Take reading
       | the repo of LLVM for example. I think an LLM could be handy here.
       | I could ask it to categorize the files.
       | 
       | * Reading literature is also not fully linear, especially after
       | the first read.
        
       | Beefin wrote:
       | i can imagine this being equally as useful for OSS products and
       | newhire onboarding.
        
         | seansh wrote:
         | I couldn't agree more. For example, the more senior developers
         | could record walkthroughs of the codebase for new hires. It
         | gives them a quick, high-level overview of the system and can
         | make onboarding easier and let the new team members study the
         | material at their own pace with a guide.
        
       | pomatic wrote:
       | It's rare to stumble across a completely original take on
       | something that is well established - I think this is a clever
       | idea that really has legs, good luck to codemic, I look forward
       | to engaging content, as a step up from the current live-stream et
       | al quagmire.
        
         | seansh wrote:
         | Really appreciate it, thank you!
        
       | awinter-py wrote:
       | is this pronounced mic like 'mike' or 'emic' like 'epidemic'
        
         | seansh wrote:
         | I was going for Code + Microphone. So like 'mike', definitely
         | not epidemic :D
        
           | webmaven wrote:
           | Might want to register (and redirect) the 'mike' version of
           | the domain as well.
        
       | jl2718 wrote:
       | > code is not literature
       | 
       | One thing I've thought about is how AI assistants are actually
       | turning code into literature, and literature into code.
       | 
       | In old-fashioned programming, you can roughly observe a
       | correlation between programmer skill and linear composition of
       | their programs, as in, writing it all out at once from top to
       | bottom without breaks. There was then this pre-modern era where
       | that practice was criticized in favor of things like TDD and doc-
       | first and interfaces, but it still probably holds on the subtasks
       | of those methods. Now there are LLM agents that basically operate
       | the same way. A stronger model will write all at once, while a
       | weaker model will have to be guided through many stages of
       | refinement. Also, it turns the programmer into a literary agent,
       | giving prose descriptions piece by piece to match the
       | capabilities of the model, but still in linear fashion.
       | 
       | And I can't help but think that this points to an inadequacy of
       | the language. There should be a programming language that enables
       | arbitrary complexity through deterministic linear code, as humans
       | seem to have an innate comfort with. One question I have about
       | this is why postfix notation is so unpopular versus infix or
       | prefix, where complex expressions in postfix read more like
       | literature where details build up to greater concepts. Is it just
       | because of school? Could postfix fix the stem/humanities gap?
       | 
       | I see LLMs as translators, which is not new because that's what
       | they were built for, but in this case between two very different
       | structures of language, which is why they must grow in parameters
       | with the size of the task rather than process linearly along a
       | task with limited memory, as in the original spoken language to
       | spoken language task. If mathematics and programming were more
       | like spoken language, it seems the task would be massively
       | simpler. So maybe the problem for us too is the language and not
       | the intelligence.
        
         | nuancebydefault wrote:
         | Exactly what I was thinking of when reading the article. Maybe
         | codeMic comes a year or so too late.
         | 
         | Soon AI will read this big blob of code and I can ask away and
         | the AI can explain while jumping to places in the code, which I
         | can hoover for inspection. Then I ask it to refactor it or add
         | this or that functionality, add tests for it and show the
         | results of the tests.
         | 
         | Code becomes literature, becomes code.
        
       | cannibalXxx wrote:
       | post about it on https://chat-to.dev as there are people who pass
       | through there and thus also get to know this content
        
         | seansh wrote:
         | Didn't know about chat-to.dev. I'll be sure to post it there
         | too. Thanks.
        
       | vsharma-next wrote:
       | This is an amazing idea ! I am going to find it useful.
       | 
       | One of the reasons I loved Scrimba for learning html/css/js was
       | the fact that the lessons were integrated with an IDE and I could
       | pause the teacher and tinker with the code right then and there.
       | 
       | CodeMic is going to be similarly useful for me.
        
       | russ wrote:
       | This is very cool! I've wanted something like CodeMic for a long
       | time.
       | 
       | Back when I was at Twitter, we used Review Board for code reviews
       | (this was in 2009, before GH was a thing for most companies). It
       | was tough to thoughtfully review large branches, especially for
       | parts of the codebase that I wasn't familiar with. I remember
       | thinking, if I could somehow record the development process for a
       | PR I was reviewing, it would be easier to understand what the
       | submitter was trying to accomplish and how they went about doing
       | so. I found myself more so reviewing code style instead of
       | functionality, architecture, or design.
       | 
       | I watched most of the intro video, but didn't go deeper on the
       | site. Does CM integrate easily into the code review/PR process? I
       | suppose I could just attach a link in any PR description?
       | 
       | Great work!
        
         | seansh wrote:
         | Thanks a lot! I have thought about it being useful for
         | learning, for fun, as a new kind of documentation, or even for
         | onboarding new hires but the use case for code review didn't
         | occur to me. That's great. I can think of 3 ways to share
         | sessions:
         | 
         | - attach a link as you said
         | 
         | - once the web player is ready, it could perhaps be integrated
         | into the code review tool. It'll be like embedding a youtube
         | video
         | 
         | - the entire recorded session can be exported as a zip file and
         | attached to the PR or shared privately
        
       | blueberrychpstx wrote:
       | Mandatory shoutout to Scrimba here that does this for online
       | tutorials that are purely JavaScript based (IIRC)
        
       | schneems wrote:
       | Does this work with VScode? I'm wanting a way to drive VScode in
       | the same way as selenium can drive a website. For the purpose of
       | adding support for it to https://github.com/zombocom/rundoc.
       | 
       | I would appreciate any tip or hints on how to approach it.
        
         | seansh wrote:
         | Yes it works with VSCode although it's not really selenium for
         | VSCode. It is only concerned with recording and replaying
         | changes to open text editors, selection, and scrolls: things
         | that are useful for creating a guided programming session or a
         | tour of a codebase.
         | 
         | The VSCode APIs [1] is the place to look for driving VSCode.
         | Perhaps I could help more if you explain what exactly you're
         | trying to do.
         | 
         | [1] https://code.visualstudio.com/api/references/vscode-api
        
           | schneems wrote:
           | Thanks for the fast reply! For some background:
           | 
           | Rundoc is a tool for writing tutorials such that the author
           | is guaranteed the outcome is valid (if a command fails, the
           | tutorial fails) and for helping users see the exact output
           | they would expect (instead of a static output). The tool has
           | website integration that allows you to take screenshots and
           | navigate a webpage.
           | 
           | Recently I wrote this tutorial
           | https://schneems.com/2023/06/14/its-dangerous-to-go-alone-
           | pu... which makes heavy use of vscode extension shortcuts and
           | hover over tips. I would love to be able to keep that
           | tutorial up to date by scripting the tooltips to make sure
           | the options don't change and the suggested commands like
           | CMD+. Continue to work.
        
       ___________________________________________________________________
       (page generated 2024-12-22 23:00 UTC)