5 ms·
Most of the code you write, has probably been written before. Why not reuse it?
Would love some feedback on a feature I am validating for a startup.
The feature "Code Seeker" finds the code you need. It shows you real code from your, your teams, your organization or even public repositories. You can navigate the code by selecting next or previous and zoom in or out to see more of the code.
The benefit is code reusability as well as learning from existing code.
Any feedback is welcome - thanks
- CarolineW 10y agoSounds great - where is it? Can I test it? I'm not sure what you mean by "next" and "previous", or what you mean by zooming in and out. How do I specify what I'm looking for? What level of granularity does it work at? What languages does it cover? How is this different from using libraries? How can I trust the code I find? Does it exist yet?
- Apsion 10y agoAt this point just validating that the feature should be built. So nothing yet. I will be posting some more details, videos... Which will give you more detail of how we think it should work.
- mooreds 10y agoI love code reuse! However... License matters. Control matters (what if I need to make a change to fit a certain scenario? How does that happen? Is it propagated upstream? How/when?) Searchability matters. How do I know what I am looking for, especially across domains and companies?
- Apsion 10y agoWe though we may be able to actually show the license type as well. However keeping it simple to start with and just track new ideas/improvements. The Code Seeker feature would not actually apply changes, it will allow you to import into whichever IDE you are using and the mechanism or VCS you currently use will still apply. Does this make sense or am I not understanding the Control matters part? Indexing and Searchability are going to be interesting to implement. I use IntelliJ and Rubymine and at times the indexing is too heavy handed and they are only indexing the current project.
- pravenj 10y agoWould love to test it. Where do I use it from???
- Apsion 10y agoI will post additional info here. Probably next week.
- billconan 10y agoI think it's difficult to search a functionality by words. For example, if I want to fund matrix multiplication, the function name could mulmat, matrixProduct .... could be anything. second, even code is found, building requires lots of work. missing dependency, mismatching interfaces, unsupported os...
- pizza 10y agotype interface is usually enough https://www.haskell.org/hoogle/ https://www.haskell.org/hoogle/
- thelambentonion 10y agoExpanding on this a bit, the concept that Hoogle embodies is extremely powerful and I wish it were more widely available in other languages. In Haskell's case, due to the particulars of the type system, something like Hoogle is _relatively_ straightforward. More importantly, the same system that makes Hoogle possible also enables safe code exploration and reuse. Eschewing simpler examples for something a little more production-y, I dug up something that came about after a conversation a few weeks back: ( MonadIO m , PersistEntity val , PersistEntityBackend val ~ SqlBackend ) => m [Entity val] Line by line, the signature (roughly) encodes the following [1]: 1) The context `m` must provide the ability to perform I/O 2) `val` must have some representation understandable by the Persistent ORM [2] 3) `val` must have some backend within the Persistent ORM [2] that satisfies the `SqlBackend` constraint 4) The function provides a list of `Entity val`, where `Entity` is a Persistent-specific implementation detail, within some context `m`. IMO, this is incredibly useful for searchability because it encodes everything I said above (and more precisely, at that!). Further, these terms can be pulled apart, rearranged, and composed to form more, or less, specific concepts in a query. This is _also_ useful for code reuse, as seeing these specifications can help identify points of repetition, and encourage higher levels of abstraction. Apologies if this got a little away from the heart of the discussion and turned into a bit of a brain-dump towards the end :) [1] I'm not using the most precise wording here, mostly due to my own incomplete understanding of things [2] Persistent isn't exactly an ORM, but it's the closest analogy I can think of given how comprehensive it is
- bbcbasic 10y agoI doubt most of the code I have written has been done before, as most of it relates to the business domain and specifically the parts of the business domain that are currently under focus. Anything that is generic, e.g. a double entry accounting system, an Actor model, etc. should be in a package management system - a Gem, a Nuget Package, a NPM pacakage etc. rather than copy pasted. At the micro level for specific line-of-code level problems (usually due to language/platform quirks) we have StackOverflow.
- mattbgates 10y agoI am always reusing code from prior programs that I've written. No point in re-writing it again, especially if i need it to do the same exact thing. Even if it only needs a few changes, I'll just copy and paste the code and tweak it.
- rajacombinator 10y agoNot a very well thought out product.
- crispytx 10y agoSounds cool. A little bit like Github's "Gist".
- ssivark 10y agoA tangential comment: Isn't the whole point of higher order functions (in functional programming) this kind code reuse? So what you're looking at sounds like a way to search for higher order functions and patterns in a codebase. That way of framing it suggests similarities with Hoogle: https://www.haskell.org/hoogle/ https://www.haskell.org/hoogle/
- dyeje 10y agoSeems like it would encourage bad design. You should be keeping your code DRY by creating reusable functions in the first place. If it's across repos, then you should probably make one of the repos usable as a library.
- Apsion 10y agoAgreed - copy and paste can definitely be problematic. DRY typically is discussed as it relates to a single project. What are your thoughts on this? Code reused across projects or repos is not the same. We can and should have duplicated code but why write it from scratch? For a simple example if I always want to have an Avatar in a navbar, why not make it easy to find and reuse in another project.
- miguelrochefort 10y ago99% of the code I write has already been written before. 99% of programs/apps already exist. 99% of things I say and do have already been said and done before. Code reuse is not the solution. We must rethink software and communication as a whole. As far as I know, nobody is attempting anything close to this. PMs are welcome.
- miguelrochefort 10y ago99% of the code I write has already been written before. 99% of programs/apps already exist. 99% of things I say and do have already been said and done before. Code reuse is not the solution. We must rethink software and communication as a whole. As far as I know, nobody is attempting anything close to this. PMs are welcome.
- Apsion 10y agoHey - I now have a video https://youtu.be/9EPaBi1_pwo https://youtu.be/9EPaBi1_pwo It explains in more detail how "Code Seeker" could work. And I included a couple of your suggestions. Hope you can take a look and give me some additional feedback. Thanks