This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-02-14
Channels
- # aws (1)
- # bangalore-clj (1)
- # beginners (48)
- # boot (65)
- # braveandtrue (1)
- # cider (1)
- # clara (15)
- # cljs-dev (7)
- # clojure (179)
- # clojure-austin (1)
- # clojure-denmark (2)
- # clojure-greece (68)
- # clojure-italy (7)
- # clojure-russia (41)
- # clojure-serbia (9)
- # clojure-spec (44)
- # clojure-uk (27)
- # clojured (15)
- # clojureremote (20)
- # clojurescript (70)
- # community-development (2)
- # core-async (10)
- # cursive (14)
- # datomic (36)
- # defnpodcast (3)
- # emacs (13)
- # events (13)
- # hoplon (33)
- # immutant (18)
- # instaparse (2)
- # jobs (29)
- # jobs-discuss (71)
- # klipse (38)
- # lein-figwheel (4)
- # leiningen (1)
- # mount (34)
- # off-topic (36)
- # om (3)
- # onyx (51)
- # pedestal (5)
- # perun (8)
- # proton (2)
- # rdf (8)
- # re-frame (33)
- # reagent (24)
- # remote-jobs (1)
- # rum (6)
- # spacemacs (2)
- # specter (14)
- # sql (5)
- # testing (6)
- # untangled (1)
- # vim (10)
- # yada (3)
Following up on this one: https://clojurians.slack.com/archives/jobs/p1487071815000631 The src folder of the project has 6665 lines of code. Given that a developer has a rate of 5 lines of code per day this makes: 1330 days which are like 5 years (250 workdays / year). Lets just say that today developers might be faster for whatever reason and we can write 25 lines of code / day. This will still be a year of work. So lets go with a year (250 workdays). To make things simple I will assume a daily rate of 800$ / developer thats 200.000$. Please note that I am talking about production code when I refer to lines of code which includes everything like tests / documentation, demos, meetings and what else you think you need.
@borkdude I think I have seen research that on a decent sized project that is not unheard of.
@borkdude Its independent of the programming language. Thats why it is so important to pick a language that lets you build good abstractions, so a line of code achieves more than in, say, assembler. For me there are also many days I dont write a single line of code. In my current job I even had a performance defect which took me like 4 - 6 weeks to figure out the problem and implement a good fix. That fix were like 20 lines of code. You can do the calculations yourself 😉
My colleague just went over 2 months on a very hard defect where the production code fix were not even 20 lines, more so 10. Only the regression test took probably 5 weeks because of the complex setup. I dont want to think of all the discussions we had on the problem.
But I think this just shows the variety of development. I am talking about products here with several 100.000s LOCs. Of course, a small library with well defined boundaries will be easier and faster to fix in case of problems.
I would also like to see how others would calculate their offer. Apart from being a full time employer I only ever got paid per hour, never per project.
@wamaral It depends. What does he want to have ported, just the interface of the library? The whole library? Is it ok to use javascript dependencies (given the library uses some). Also he wants to have SVG output and not html. Which browsers should be supported, etc...
i’m fairly confident that lines of code is a very bad measure in this case — one could argue that the Clojure port will be done in 1/10th of the lines of code
one could also argue that most estimates are bad any way, and that the whole discussion is moot 🙂
You could argue. But given you are interested in this gig. How would you estimate your offer?
@sveri I would assume "identical functionality" as in: whatever set of inputs and transformations used on the JS library should generate the same output when applied to the CLJS library, including browser support. I'd also say that performance and library/output sizes should be the same or better. And even if one needs to port the dependencies I'd say that it's still faster than
@sveri: I have been translating KaTeX . bit myself. I think the above estimates may be off becuase: https://github.com/Khan/KaTeX/blob/master/src/fontMetricsData.js = huge file = computer generated metrics data https://github.com/Khan/KaTeX/blob/master/src/symbols.js = also large file = also computer generated
the actual algorithm it self is basically just 20 pages worth of algorithms; in particular, appendix G of the TeX Book
also, I think 25 LOC / day is a bit low -- this would come up to 3 LOC / hour -- and I'm not sure anyone would pay $150.00 for 3 LOC
@qqq I explained above how I got my numbers 🙂 Also I just got 5 lines wrong I guess, I twas ten lines according to the mythical man month. So it might be 6 months instead of 12. But yea, I am just shooting in the dark, thats why I also said I am interested in what others come up with. I do not want to blame Luke somehow, its just an example how far off estimations can be. Look at the arachne kickstarter: https://www.kickstarter.com/projects/1346708779/arachne-rapid-web-development-for-clojure?lang=de He estimated 3 months for a fully documented alpha version. IIRC he started working on it last summer, and the first alpha came out beginning of this februar and not fully documented. I dont know if he worked full time on it or not, also again, this is no blame in any ways. It just looks like he needed double the time. When I got into my first full time job the business cancelled a contract with some well known local coder shop. They should do a web application, estimated one year and XXX€ cost. After one year they said they need one more year and the same amount of money again. But yea, why am I talking? 😄
@sveri: perhaps our disagreements may be due to different assumptions: it sounds like your analysis is "how long would it take a generic clojure programmer, who has no prior background in KaTeX / implementing TeX" to learn the background + implement the code my interest is: out of all the clojure programmers out there, there is some badass who studied KaTeX / implementing TeX; and if I could just find this person and this person is also interested in converting this, it'd be win-win ... as he/she wanted to do this already -- and I'm willing to pay them to release it open source
the precursor to this idea was: offer contracts to core devs of various clojure projects -- which goes a step even further -- already assuming that the contracter would be the most damn qualified person in the world to work on the project
@luke Nice, while you are here, would you be willing to share some details on how long the current state of arachne took?
Sure… so it’s hard to evaluate, since it definitely wasn’t full time (technically it was 3/5 time), and because of the way things turned out we made the explicit and intentional choice to increase scope in certain ways over the lifetime of the project
I do not contest that estimation is hard, and that’s definitely true of Arachne as well, but it’s not a 100% overrun like just comparing the kickstarter pitch and the actual calendar time.
@yenda: hackability, I need to be able to do things like point at a sub expression, say I want an arrow pointing to the a in \lim_{x -> 2} (x-a)^2
and you said in (1) that you would give an estimation first, what is your estimation, I can't find it maybe I missed it
Hm, when I think about it, I was the only one giving a number, also a number supported by some facts and mathematics.
I honestly think that someone who understands KaTeX / TeX Internals could do this in a week (or even a wekend), ad thus my estimates.
I'm rather unwilling to be paying a contractor to have the contractor go out and learn on my dime.
that's one way to see it. but let's put it the other way, what use is it for the contractor to spend time understanding KaTeX/TeX Internals outside of this project ?
and if there is a contractor that happens to already know them + cljs and svg enough so that it can go straight to conception and development
While I totally agree that 200k is way off. I think a weekend is way off too. Let alone 6000 lines of production code, without docs and tests would be sufficient for a tendonitis.
also you can add to the list of requirements for optimal development time some experience writing lexer/parsers
The shortest timeframe in my opinion would be 1 month (and I would never willingly accept such job)
I think the goal and the idea are honorable. Pay someone for doing something he wants to do anyway. But the combination might be very hard to find
I think in 1 week someone with experience in writing parsers could get a prototype to work with a small subset of the language
@yenda: I agree that it's unfair for the contractor to learn KaTeX/ TeX internals on their own time unpaid; which, as I mentioned earlier, was my assumption / hope of finding people who already have the background 🙂
one more thing, (this is 100%) my fault; a parser is not required, the only part I need is: cljs data structure -> svg i.e. the contractor can assume taht it's already parsed into maps/vectors ^^ I take full blame for not explaining this clearly above
instead of saying "port all of KaTeX", <-- my fault, I should have said: port an algorithm which does "TeX AST represented as cljs data structure -> svg" -- so it's literally just appendiz G of the Tex Book
@yenda: I don't need a parser; I'm buildling a WYSIWYG math editor -- I just need the "cljs data structure -> SVG" part
btw, thanks for helping me clarify all this; my spec writing skills are not nearly as good as I assumed
Attempt #2 at spec: ========== I am writing a WYSIWYG math editor in SVG. I need a way to render "TeX-like AST (represented as a CLJS data structure) to SVG." This is the equivalent of Appendiz G of the TeX book, or the rendering part of KaTeX (except SVG output instead of HTML/CSS).
The contractor can define the AST< as long as it's reasonable. The hard part is how TeX glues boxes together -- the spacing for frac, sqrt, sup, sub, stack, hbox, vbox, ...
so now the question is does such a contractor exists, if not how much will it cost to get one willing/able to learn TeX for an amount that is reasonable for you