The Future of JQuery UI and JQuery Mobile - <AUTHOR> http://blog.jqueryui.com/2017/12/the-future-of-jquery-ui-and-jquery-mobile/ <comment><USER2> jQuery is still quite relevant and helpful. Despite the hype with newer libraries, jQuery is used on 73% of _all_ websites. [https://w3techs.com/technologies/overview/javascript_library...](https://w3techs.com/technologies/overview/javascript_library/all)

I often tell myself, ok, I'm going to just use vanilla JS for this one, but compared to jQuery, it's way too verbose. Try doing $('.my-elements').show() in vanilla js.

The problem is the jQuery foundation has become too bureaucratic, making contributions harder. Example: [https://github.com/globalizejs/globalize/pull/703](https://github.com/globalizejs/globalize/pull/703)

<comment><USER3> That's actually a good example. My gut feeling was simply to write the following.

document.getElementsByClassName("my-class")[0].style.display = 'block';

The PlainJS site mentions that it's not quite that simple and suggests writing your own show() and hide() functions if you're avoiding jQuery.

[https://plainjs.com/javascript/effects/hide-or-show-an- eleme...](https://plainjs.com/javascript/effects/hide-or-show-an-element-42/)

<comment><USER2> Right, and that still doesn't handle applying the action to all _all_ items of that class.

It would need to be something like this, though it still doesn't automatically handle inline vs block:

document.querySelectorAll('.my- elements').forEach(function(el){el.style.display = 'block'})

And apparently there are issues even with that: [https://css- tricks.com/snippets/javascript/loop-queryselecto...](https://css- tricks.com/snippets/javascript/loop-queryselectorall-matches/)

<comment><USER4> For reference, this is how you do this in jQuery: $('.my-elements').show()

</comment></comment></comment></comment><comment><USER5> Seems like most of the comments on here pertain to the relevance of jQuery, rather than jQuery UI and jQuery Mobile.

Sure most sites still use jQuery, but do very many use jQuery UI anymore? jQuery Mobile? I've never seen a project use jQuery Mobile.

<comment><USER6> I tried to use jQuery Mobile for a project once many years ago. It was a disaster, I ended up rewriting the entire thing

<comment><USER7> If you have to select a mobile framework today, what would you choose?

I play with Framework 7 [https://framework7.io/](https://framework7.io/) and it looks very nice.

Any other suggestions?

<comment><USER6> F7 is my favourite as well. Two of the featured apps on the home page are mine :D

</comment></comment></comment></comment><comment><USER8> Considering current trends for creating complex applications for the client I do not believe jQuery has much of a future anyway. It had been good while it lasted, I used to like jQuery a lot until better tools came along. These days libraries for DOM manipulation seem not only obsolete but also standing in a way of focused and efficient development. Let jQuery rest in peace and be remembered for its past greatness.

<comment><USER9> Disagree with this somewhat. I think jQuery still has a place in web app development, especially when you need something done fast. You just need to be careful not to over-bloat your js. jQuery has helped my team get stuff done really fast more than a few times in the last couple of months.

<comment><USER10> > I think jQuery still has a place in web app development, especially when you > need something done fast

I never got this argument and am curious - what exactly does jQuery do faster?

I've left it behind for CSS animations and native Dom selectors years ago and haven't looked back.

<comment><USER11> It's certainly easier to just include JQ on an existing site and get to work for simple stuff, but I just deal with Angular now. Easy enough to get up and running with ngcli, and a year down the road the codebase won't look like the abortion which is loads of jquery.

</comment></comment></comment></comment><comment><USER12> The slack url in this post overflows the text and zooms the page out on my phone making for an apropos blog reading experience about the future of jQuery mobile. Photo here [https://twitter.com/potench/status/943950784592363520](https://twitter.com/potench/status/943950784592363520)

<comment><USER8> Same here. +1

</comment></comment><comment> git-pull jQuery UI and jQuery Mobile are deprecated. Take in mind, it comes from an age before HTML 5 became set in stone. Browsers weren't caught up yet. JavaScript libraries weren't plentiful and mature as they are now. CSS frameworks like bootstrap also didn't exist until years later.

And there was more optimism toward the concept of creating a widget toolkit and a webview mobile app. And while to an extent - we embrace that now in some form - it didn't work so well the first go around [1]. Media queries becoming a normal practice and CSS frameworks made jQuery Mobile feel clunky. Heavy duty mobile apps went native - and I can't know where they are now.

For jQuery UI, over time, the theming got a bit old. And stuff like "Buttons" ([https://jqueryui.com/button/](https://jqueryui.com/button/)), you can already get via CSS. Most CSS frameworks, for that matter, do a lot of the widgets with far less JS, if any at all.

I'll miss them. They were a stepping stone in getting us to where we are now.

[1] [https://techcrunch.com/2012/09/11/mark-zuckerberg-our- bigges...](https://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest- mistake-with-mobile-was-betting-too-much-on-html5/)

</comment><comment><USER13> > In the past, when someone wanted to join the jQuery UI or jQuery Mobile > teams we expected them to contribute to the library as a whole.

I'm not sure about the accuracy of that. I was a jQuery UI team member in the '09 - '11 period (I can't recall exact dates) and I only worked on certain components, though I did participate in discussion and planning for the platform as a whole. It was also common for contributors/team members to pitch new plugins that weren't worked on by the entire team.

So maybe this is just jQuery UI getting back to it's open source roots more so than anything. I'm sad to see that the project has fallen on hard times, but I'm not shocked given the direction most of front end webdev has moved towards these days. The amount and types of UI frameworks and component libs available today are myriad. And at jQuery UI's peak (and hell, jQuery as well) there were only a few.

I'd like to add a meta-note that Scott Gonzalez was always great to work with, and if you want to read some interesting, independent thoughts, he's a good follow on the twitters.

</comment><comment><USER14> People in the comment threads seem to be confusing jQuery UI with jQuery. jQuery UI is collection of interactions, effects, and widgets built on the more ubiquitous jQuery library.

<comment><USER15> jQuery UI was also tightly tied to Filament Group so it was a commercial product looking to capitalize on the jQuery name. That whole think was not so successful and jQuery UI was never that great. 5+ years ago it was bloated and buggy and it has not seen much development since.

<comment><USER13> Filament Group was a sponsor but the project was not "tightly tied" to the company. I believe that's a bit of FUD right there.

<comment><USER16> Or a mistake, due to successful sponsorship. No need to assume the worst.

</comment></comment></comment></comment><comment><USER17> Could someone please tell me how modern DOM manipulation looks like these days?

I understand jQuery is old, but do not have fresh information on what's used nowadays.

<comment><USER18> With native APIs, jQuery was only useful for providing an abstraction layer over browsers' differing implementations, but they are mostly standardised now.

</comment></comment><comment><USER19> Good times with those gradient styled widgets, but today they should be retired and developers should start looking at upcoming tech, like Houdini project [https://github.com/w3c/css-houdini- drafts/wiki](https://github.com/w3c/css-houdini-drafts/wiki) .

</comment><comment><USER20> When I used it many years back, both UI and Mobile, I found it kludgy and odd. The UI wasn't all that pretty compared to Bootstrap so I just started using that and actually forgot about this entirely. I think that's where the actual migration started, with Bootstrap. The other frameworks started popping up later when jQuery wasn't scaling for UI code such as Ember and using Mustache then later Angular, then React, Angular 2, Vue, etc so now, so now jQuery UI/Mobile is completely irrelevant. I would also throw in Sencha extjs as dead too and classify that as enterprise jquery UI.

</comment><comment><USER21> jQuery certainly did a commendable job of lowering the bar for web developers!

So low that many people thought of jQuery as a way to avoid learning JavaScript. (Not that there's anything wrong with that, mind you.)

That's why there's such a huge demand for a free jQuery plugin that can add, subtract, multiply, divide and compare numbers.

[http://www.doxdesk.com/img/updates/20091116-so- large.gif](http://www.doxdesk.com/img/updates/20091116-so-large.gif)

"-1 not enough jQuery"

[https://github.com/cbrandolino/jQuery-basic-arithmetic- plugi...](https://github.com/cbrandolino/jQuery-basic-arithmetic-plugin)

jQuery basic arithmetic plugin

$.add(arg1, arg2 [, args...]) adds two or more numbers;

$.subtract(arg1, arg2 [, args...]) subtracts two or more numbers, the leftmost being the first operand;

$.multiply(arg1, arg2 [, args...]) multiplies two or more numbers;

$.divide(arg1, arg2 [, args...]) divides two or more numbers, the leftmost being the first operand;

$.equals(arg1, arg2 [, args...]) checks two or more numbers for equality.

</comment><comment><USER22> I remember years ago (when I was still active in browser dev) having to argue with people who wanted jquery to be embedded in the browser and/or be part of the DOM spec.

I'd like to imagine that this kind of article would help people understand why browsers don't just do that and instead try to develop general APIs that enable frameworks to grow and evolve or simply be replaced as new dev models spring into being.

<grumbling>

Consider this: jQuery needed a bunch of DOM operations to be very fast and have certain behaviors (it's a long time ago, but iirc there were selectors, property apis, certain kinds of nodelist behaviour). Multiple webdevs proposed build jQuery APIs into the browser, so rather than making the underlying operations fast, we'd just have the critical path implemented natively inside the browser. While that would have solved some performance problems it would not have helped any other framework.

By instead making those core functionality faster, and providing general APIs for the things jQuery needed, other frameworks could also make use of them.

My hope is that by seeing these posts (which are honestly tending toward EoL notices) people will remember than no one library is ever likely to be permanent, and will stop asking for browser to just include the libraries internally.

</grumbling>

</comment><comment><USER23> Can't wait for Matrix to become the defacto tool to connect teams, instead of dropping IRC for Slack, they will drop IRC for Matrix. It makes me sad to see JQuery moving to Slack when I think they would be better off moving to Matrix instead. I hope they at least considered Matrix.

<comment><USER24> I've never heard of Matrix, but it looks like this is the project: [https://matrix.org](https://matrix.org)

</comment></comment><comment><USER25> I've heavily used jqueryUI and can't thanks the team enough for all the work they done during those years.

But when I opened the blog post on my iPhone and got only a small column, around the quarter of the screen, with content, I thought about how ironic it was, regarding the jquery mobile topic.

</comment><comment><USER26> Oracle JET (javascript enterprise toolkit) has a strong dependency on jQuery UI.

</comment><comment><USER27> Question to those of you who use JQuery UI: Why JQuery over, say, React?

</comment><comment><USER28> What are modern alternatives to jQuery mobile ?

</comment><comment><USER29> TL;DR they are both dying

<comment><USER30> Here is real TLDR;

\- Scott Gonzalez has lead the jQuery UI project for many years now and has helped to improve the quality tremendously.

\- However, we do hope to continue reducing the amount of duplicated code and widgets in the projects moving anything common to jQuery UI.

\- We think going forward this needs to change; we will now be looking for and accepting people that are just interested in maintaining a single piece of the library, requiring a much smaller time contribution.

\- Over time however, we have seen a large decrease in the number of people on IRC while other projects have had great results with easier to use tools like Slack.

\- Anyone who is interested can feel free to reach out to Alex Schmitz, the new team lead for both projects, join our slack channel or even find us on IRC (we are still there).

<comment><USER29> They are just trying to give it a positive spin.</comment></comment></comment>


Cryptome Tracks the NYPD Ring of Steel [mp3] - <AUTHOR> http://c3455205.r5.cf0.rackcdn.com/HN9A04.mp3

<comment><USER2> Summary from <http://www.hopenumbernine.net/schedule/#cryptome>

Cryptome's digital multimedia presentation of original cartography, animations, video, and architectural documentation will explore the urban implications of the NYPD One Police Plaza Security Plan - a.k.a. Ring of Steel - which locked down Lower Manhattan after 9/11, transforming its Civic Center into a threatscape centered on NYPD headquarters. With its militarized jurisdiction mobilizing through technologies of command, control, communications, intelligence, surveillance, and reconnaissance, the Ring of Steel has declared itself an iconic public space for our time.

<comment><AUTHOR> I thought this was a really fascinating talk.

Debra and John are both practicing architects as well as security culture critics, so their discussion the encroachment of the (physical) public domain by the security system adds a rich dimension to a discussion which is often carried out in rather abstract terms.

EDIT - Visual aides available here: [http://cryptome.org/cartome/ring-of- steel/ring-of-steel-00.h...](http://cryptome.org/cartome/ring-of-steel/ring- of-steel-00.htm)

</comment></comment><comment><USER3> The speech is interesting, but requires a lot of attention to follow due to the strange cadence and intonation - it sounds like she's reading a poem, sometimes - and the excessive verbiage; there are a LOT of sentences like this:

"... no reasonable expectation of privacy exists in spaces where bodies politic assemble to perform transparent choreographies of public democracy".

Listening to it reminded me of reading Umberto Eco.

<comment><AUTHOR> It's true. Cryptome tends to do this and I'm not sure why, I don't think it serves their cause to make their research and analysis inaccessible.

<comment><USER4> I imagine they fancy themselves a cross between an elder statesman and V.

Between the presenter's poor reading and the overly verbose prose I tuned out after a few minutes. Bit of a shame since this is an interesting subject.</comment></comment></comment>


Affordable Forward Geocoding API? - <AUTHOR> Cheaper forward geocoding api than Google's?<p>Does anyone know of any reliable forward geocoding apis that are affordable/free for a startup in its early stage? All I've been able to find is Google, FB, and Foursquare :( <comment><USER2> SmartyStreets[1] offers a geocoding API as a part of their address validation services. They have a program for startups to give 1 year of free Unlimited US service[2]:

[1] [https://smartystreets.com/](https://smartystreets.com/)

[2] [https://smartystreets.com/pricing/startup](https://smartystreets.com/pricing/startup)</comment>


Ask HN: Where to find the best SEO guide or expert - <AUTHOR> I tried to googling myself but look like there are too much noise there - is there anyone has any good experience in outsourcing SEO or a guide available somewhere? thanks <comment><AUTHOR> is there someone who can share some hints?</comment>


Optimizing a diet using Linear Programming (in Julia) - <AUTHOR> http://white.ucc.asn.au/2018/05/28/Optimizing-your-diet-with-JuMP.html <comment><USER2> That was hilarious. Figuring out sensible constraints seems to be a long iterative process.

One diet suggested drinking 32l (~8.5 gallons) of water.

This one was the computed "maximize protein" diet:

      status = solve(m) = :Optimal
         10 grams 	Folic acid
          1 grams 	Vitamin C
        667 grams 	Flour, soya
      24034 grams 	Lard
        800 grams 	Suet
        845 grams 	Amino acid or creatine powder
      42752 grams 	Intense sweetener, containing aspartame,
      powdered formulation

Almost 43 kg (~94 pounds) of intense sweetener? Sounds healthy!

</comment><comment><USER3> I remember reading about a study that attempted something similar, they found that dietary guidelines were in fact impossible to meet using a "natural diet" without supplements (scare quotes because I don't remember the exact dietary constraints). I think the constraints also included lower bounds for things like sodium and potassium (this model only has upper bounds for them).

<comment><USER4> No, this model has lower bounds on all nutrients humans need and upper bounds on some based on their toxicity.

<comment><USER3> Yeah I misinterpreted the constraints. Still, this model has no lower bound on sodium and no upper bound on potassium; ideally both would be bounded on both sides.

</comment></comment></comment><comment><USER5> The idea is interesting, though the results have indeed zero applicability unless a few additional rules are added to the system - like proportion of macro-nutrients (fats/proteins/carbohydrates) and some sensible variability to the meal plans (ie, no point in suggesting "1 gram" of some food source, either you suggest a "portion" or nothing).

Personally, I think it would be easier to start with one's own dietary approach and try to put that into rules, then optimize it using additional guidelines (or removing some rules) instead of starting with something too loosely defined and letting the program choose different sources randomly.

<comment><AUTHOR> Yes, portions need to be defined per thing though. 1 gram of a vitamin supplement is fine. 1 gram of eggs, not so much.

</comment></comment><comment><AUTHOR> Source is on github, [https://github.com/oxinabox/oxinabox.github.io/blob/master/n...](https://github.com/oxinabox/oxinabox.github.io/blob/master/notebook_posts/Optimizing%20your%20diet%20with%20JuMP.ipynb) Feel encouraged to mess around with it

</comment><comment><USER6> I wonder if you could get actionable results if recipes were the level of granularity you ran the analysis on.</comment>


Google Multivac - <AUTHOR> http://neil.fraser.name/news/2009/12/29/ <comment><USER2> I think one thing that always fascinated me was how anchored Asimov was in reality. I began reading 'The Gods Themselves' which Asimov wrote as a response to another writer (whose name escapes me) using a Isotope which couldn't exist and ignoring the science related ties that it would mean.

His science fiction was always speculative, but in as many places as possible it was anchored to the reality he knew.

Simple amazing.

Oh, and yeah, Google is scary how big, powerful, and... omnipresent it has become.

</comment><comment><USER3> Cool, maybe Google will figure out how to reverse entropy.

</comment><comment><USER4> Actually MultiVac sounds closer to Wolfram|Alpha, especially the data being curated by civil servants, and only subsequently analyzed/interpreted/correlated by the computer.

</comment><comment><USER5> That's really cool that we're implementing a lot of the sci-fi. What hasn't been done yet? What bits of Multivac don't exist at the GOOG yet?

<comment><USER6> The bit where it understands what you want and gives you one single helpful answer instead of dozens of pages of links to forum posts, each of which contain a clone of the same unanswered question as all the others, followed by some Google adverts.

<comment><USER7> That's much more profitable than a single answer. Jeez :D

</comment></comment></comment><comment><USER6> > <http://neil.fraser.name/news/2009/multivac/patrol.jpg>

I have to wonder - is this guy wearing headphones because:

a) Google's a hip and groovy place to work and he is allowed to listen to whatever music he wants as long as he gets his job done.

b) It's noisy in there and he needs ear defenders.

c) <http://www.marshallbrain.com/manna1.htm> begins at Google, and that's a wireless headset connected to a Google automated manager/instruction system. _Please take one server unit from repair area D2. Thank you. Go to Server container N14. Thank you. Please identify yourself and enter. Thank you. Please locate rack 8, on your right. Thank you. Please identify the red and black power lead, and unplug it. Thank you. Please locate the network lead and unplug it. Thank you. Please slide the server out and replace it with the repaired one. Thank you. Please reconnect the network and power leads. Thank you. Please take the removed server back to repair area R2. Thank you. Please report to task room 3 for your next task. Thank you._

<comment><USER8> Most large and dense server rooms are quite noisy. Ear protection can make them much more bearable to work in for long periods of time.

<comment><USER9> Yeah, there's no wires going to them. They're ear protection.

Edit: Nor antenna. Probably not wireless headphones.

<comment><USER10> Most Bluetooth headsets have their antennas inside, so that they aren't visible.</comment></comment></comment></comment>


Student's startup promises fast Internet speeds even with dial-up connections - <AUTHOR> http://www.physorg.com/news150131253.html <comment><USER3> At best, this is poor journalism. At worst, a badly misguided company.

> _"Downloading that [10 GB] movie onto a "virtual desktop," Pronovost said, > would take about 10 seconds."_

Really?? I can't even transfer 10 GB onto a flash drive quite that fast.

After finding the following on their website, I don't think I can take them seriously:

 _"Pronovost diagramed the internet structurally and found the low and high parts of the internet. He concluded by implementing the technology that he had diagramed. He hypothesized that not only would internet speeds be faster than fiber-optics but it would surpass speeds faster than 6gbps, the previous world record for the fastest internet, called "Internet 2" which was created by a network of students at Ivy league colleges."_

<comment><USER4> Agreed, a bit too much chest-pounding for a technology nobody has vetted or even has a demo too.

When you "download" a video to your "virtual desktop", it still has to move bits from the video's source along ole' Internet 1.

</comment></comment><comment><USER5> 1) Get a modem, 56k will do. Connect to the internet with it.

2) VNC a windows machine somewhere.

3) Understand in a new and wonderful way why this is a terrible idea.

<comment><USER6> Timing _is_ important. For example, even with fast DSL, it takes an hour before you can watch a torrent while stuff on Hulu or iPlayer starts right away. The files are larger, but who cares? Most people are time limited, not transfer limited.

It's not inconceivable that a high bandwidth broker that trans-codes large static files into streaming media (especially if coupled with a quality down converter) would be beneficial for some uses.

However, the bandwidth and computational power required, plus the difficulty of explaining what it did and how to use it, plus the availability of services like Megastic, Hulu and iPlayer, would probably make such a service a good candidate for the dead pool.

<comment><USER7> YouTube transmits the absolute minimum amount of data required to display a video at your client. The guy and his Microsoft friends can intercept the data all they want, but unless they are lowering the quality of the video, no win.

There are some examples where this will work - long websites with lots of content, pictures and ads - e.g. news organisations etc. The Opera browser on my cellphone runs sites through an image compressor, so I only get a colored rectangle at first, then a very low quality version once I scroll to it, and finally, I can activate a function to get the full pic. It's basically the same thing happening.

Another thing, especially older Wordpress blogs don't rescale images server- side, they do it in the IMG tag - that hurts on slow connections. Unfortunately, fixing Wordpress is already happening.

</comment></comment></comment><comment><USER8> "What our software does is creates a 'virtual desktop,' so your Internet connection isn't used to actually download a file," Pronovost said. Instead, the file is stored "out there" on Microsoft's massive servers. So when a user logs onto his or her Powerband account, the Internet connection merely views the movie or runs the files - much faster than downloading.

wow. what? viewing a movie isn't the same as downloading it?

<comment><USER9> It almost sounds like he's talking about "lazy evaluation" of downloads. But when is it the case that you download something you don't immediately intend to use?

<comment><USER10> Much of the promise of thin clients was that the network traffic of displaying the data is less than the data itself. Unfortunately, the opposite usually turns out to be true.

</comment></comment></comment><comment><USER11> I don't mean to be rude, but I've seen horseshit that had less horseshit in it.

Anyone else reminded of "Adam's Platform"?

</comment><comment><USER12> Fresno needs more tech editors: <http://www.youtube.com/watch?v=iyxc9Pb8sog>

I like his website: <http://powerbandinternet.com/>

I also like how without telling you what you get you just checkout via a PayPal page: <http://powerbandinternet.com/products.php?id=2>

The copyediting also hurts my brain: <http://powerbandinternet.com/howitswork.php>

<comment><USER13> Well, Fresno _is_ the center of the states brain drain.

Glad I got out of there when I did.

</comment></comment><comment><USER14> Is this targetted at rural users? For $40/month on top of dialup costs, wouldn't an investment in cable/DSL be a better decision... ?

 _Uploading_ a lot of data seems like a better problem to attack, see: <http://news.ycombinator.com/item?id=415460>

</comment><comment><USER15> physorg will publish anything (case in point they published a GaTech press release about me <http://www.physorg.com/news148062997.html> ) and everything so just be sure to look where it's coming from.

</comment><comment><USER16> Some guy in comments on the site wrote this:

"Brilliant. Here's a better idea: Why download anything at all, why not just let the files be wehere they are? Then you will get an infinite download speed, in fact you dont even need an ISP! "

Hahaahah

</comment><comment><USER17> This is absurd.

I can't believe the comparison between the Internet and tubes ala <http://en.wikipedia.org/wiki/Series_of_tubes>

<comment><USER18> > _This is absurd_

This is what I thought as soon as I read it.

Youtube does the samething too. They store the video on their servers and let us view the video. Their flash player acts like the "virtual desktop" that lets me view the video. Still I have to download something on my comp - <USER2> steaming video :)

I would actually believe and bet on some other guy who says he going to create a better media encoding format. That would be a better investment of time and money.

</comment></comment><comment><USER19> Wait their site says that "Powerband is a world-wide fiber optic network." and that it only costs $24.99/month (well it also says $35.99). Are these just lies at this point or has this kid somehow laid fiber optics over the globe since press time. I guess I was out when he laid the line to my house.

</comment><comment><USER20> <http://powerbandinternet.com/howitswork.php>

"Dedicated virtual desktop" hmmmm....

</comment><comment><USER21> The biggest flaw I see in all of this is... you can't download files at 1gbps. It's not that there isn't 1gbps speeds in the world, it's the fact that most datacenters (and by most I mean 99.9%) don't have more than 100mbps uplinks. They have multiple uplinks, but these are usually spread across dozens, if not hundreds, of servers.

You can only download as fast as the server puts out.

</comment><comment><USER22> What a crock o'shite.

</comment><comment><USER23> sounds interesting. maybe it has legs.

This part does not: "Like Napster, this can be used extremely badly with the wrong technology," he said. "Right now we have a user agreement that holds each user accountable for copyrighted material. ... The way we have it structured, there are only certain things people will be able to share. It's like an honor system among the users."</comment>


Ask HN: How can I self-evaluate my programming skills? - <AUTHOR>

I set out on a mission to improve my programming skills in general, and my first step is to not only find out where I stand, but where I need to improve.
One thing I saw was the [Programmer Competency Matrix](http://www.starling-software.com/employment/programmer-competency-matrix.html) which looked like a really good idea to me, but a few things stuck out as awkward to me, or perhaps dated.
My question is: How should I be evaluating myself? How often? How should I decide what to work on? Does my ability relative to others matter, and if so, how do I know what it is?
---
For anyone interested, I [wrote down]( http://cowbelljs.blogspot.com/2012/01/programmer-competency-matrix.html) where I felt I was for each level, this is my present bench-marking approach. <comment><USER2> The funny thing is that it's nearly impossible to evaluate where you stand before you've reached the next level or even the level after that. You think your solution is clever? Wait 6 months and you think it stinks. You think you have a nice abstraction? Wait until you need to do something you didn't think of and you find it's useless/too complex/unnecessary and so on.

I find that the best way to evaluate yourself is to look at your code all the time and think critically. Be careful not to overdo it though, maybe take a closer look in between projects or in some interval is fine.

What should you work on? What do you find interesting? I think you're a lot better off working on something you find interesting than forcing you into something that you don't find thrilling. As always you should do stuff you're not comfortable with: do some low/high level stuff, try a new framework or do something you think is hard.

I wouldn't obsess too much on how good you are compared to others, there's _always_ someone better, period.

Instead focus on your relative improvement. If you read your old code (which you should) you should think "this is awful, I could write something better" or at least "this is ok... but if I did it this way it would be much better".

And finally read code, read books about code, try to code with other people and try to make something useful.

Some book tips:

The Pragmatic Programmer: Read this!

Introduction to Algorithms: If you don't know algorithms, here's a nice book for it

Effective Java, Effective C++, More Effective C++: Just good practices

<comment><USER3> "You think your solution is clever? Wait 6 months and you think it stinks."

I can't even count the times I've put together a "clever" function only to find out that an optimized solution existed in a common library and I could have done the same thing in 1/20th of the code. Software development is humbling.

<comment><USER4> i usually roll my own first, even if i'm sure a library exists. it helps me get a better understanding of the problem space, and since i'm still a greenhorn this understanding is critical.

i am then grateful for the library and how easy it makes my life!

</comment></comment></comment><comment><USER5> Start keeping journals.

When you start a new project, start a new journal. Record your thoughts. If you have to make a particularly hard decision, write out your thought process and what you ultimately decided.

Then review those journals every year or two. Ask yourself if you would have done anything different based on the experiences and knowledge you've accumulated.

Also, seek criticism. Learn from others. And read as much as you can! :)

I don't think there's any one litmus test that will give you a grade. It's a process of practiced introspection. Know thyself! :)

</comment><comment><USER6> I'm surprised that you feel you were able to measure something accurately with that list. I feel like it's very vague, and I don't have a clue how good I actually am for many of the important things like "problem decomposition", "systems decomposition", "communication", "code readability", et al. I'm sure there are probably people who would consider themselves "level 3" that I would scoff at, and there are probably people who would consider themselves "level 3" who would scoff at me. Basically, "level 3" seems to span everything from Norvig and djb to someone who got a BS and just read _Code Complete._

Anyway, it looks like you're good enough at stuff to be a good generalist, so you should probably just study and work on whatever you're interested in and improve naturally.

<comment><USER7> To be fair you just picked out the things on the list that are hard to measure and partially comes down to personal preference/style. For example I absolutely detest the code behind DotNetOpenAuth but I can't really tell you why and I'm sure others would say it's fine.

It's not a bad measure of where you are as long as you're honest with yourself.

<comment><USER6> I did, but I think those also intersect with the most important things in everyday work -- soft skills, founded on judgement and aesthetic sensibilities, which are hard to measure, but which make the difference between an OK solution and a really great solution. It's very hard for me to perceive how large the range of ability is in those skills, or where any single person is in it.

(And many of the other, more concretely specified skills still suffer from the lots-of-room-at-the-top syndrome, e.g. I don't think that "has written custom macros" makes me an Emacs wizard, but whatever.)

</comment></comment></comment><comment><USER8> Look at code that others have written and make sure you understand it. Once you have some basic proficiency, there is a tendency to do things the way you know how to do them. Looking at real code written by others can really open your eyes.

<comment><USER9> I never intended to, but this approach has helped me tremendously by accident.

First off, reading code is kinda boring, and if you don't know everything about a language, it can be easy to get stuck in a spot and not know where the code goes next. What I did was configure a debugger. I do Ruby, Objective-C and PHP work, and all three languages have excellent debugging support (rdebug, gdb and xdebug, respectfully). Configure your IDE/editor to hook into the debugger of choice for your language of choice, and for something as simple as figuring out what a variable holds without having to litter your code with errant puts/echo/printf statements, set a breakpoint and run your code. Step through the program one step at a time, and you'll easily see how your request to do X also makes your program do A, F, G, and Z through the framework or libraries you are using.

Plus, learning how to use a debugger will be a tremendous boon to your skillset.

</comment></comment><comment><USER10> The more I think about it, self evaluating is hard without a reference to "guide" you towards a particular domain. For example, aside from the foundations (name your variables properly, writing readable code), the rest starts going into too esoteric requirements (writing libraries that simplify an api?, author of a framework?). Some of these requirements are unjudgeable (I can author a framework to encode/decode ssl packets, but in itself it's a poor indication of my skill), now writing a framework that stands the test of time (is rarely revised) is a different measuring stick, but that can only be 'evaluated' by someone who understands what are the pitfalls of writing a framework (<http://lcsd05.cs.tamu.edu/slides/keynote.pdf>). And if you are in an area that writing frameworks is not desirable (a lot of security-centric projects are like that, you want to use trusted sources and not venture in writing your own thing), then that measure becomes irrelevant.

I think that there is only two ways to improve in our field.

\- Write, write, and write code. The more complex the better. Two caveats:

Maintain what you write. One-off projects don't count, you gotta live with what you write, since that's forcing you to make it maintainable.

Write with people, if other people have to live with what you write, they will tell you if something stinks (of course this is assuming your teammates have a decent level of professionalism).

\- Be mentored: Essentially someone who did the above, and then shows you how he suffered :)

Hope this helps.

Freddy (<http://www.javapubhouse.com>)

</comment><comment><USER11> _How should I be evaluating myself?_

The only metric that matters is the delta between what you know and what you need to know to build what you have to build. How do you find out what this is? By building that which must be built. When you get stuck, you will have to find a way to get unstuck: by getting educated, by consulting others, by finding others' solutions, or just by old fashioned figuring it out.

 _How often?_

Continuously.

 _How should I decide what to work on?_

Work on what needs to be worked on, not what you need to get better at. Any other approach would be backwards.

By definition, the "Competency Matrix" you cite is a bad goal. Every entry has different level of importance for every person and every situation. By trying to aspire to this flawed ideal, you will be wasting time on things that aren't important and missing things that are.

(Aside: When I reviewed the Competency Matrix, I had to laugh. Many of the items were so important that you couldn't help getting better at them just by building lots of stuff. And many will never be important at all.)

The best way to get good at what you should be getting good at is to build what needs to be built. Then trust the process and yourself to fill in the gaps.

 _Does my ability relative to others matter?_

No! There will always be many people better than you. There will always be many people worse than you. You will probably be the best at something (or some combination of skills). You will probably never get very good at something (or some combination of skills). And you know what? It doesn't matter!

All that matters is whether or not you can successfully build that which must be built. The ability to figure out what that is and how to do that is the most important skill of all.

Moral of the story: Go find out what people need. Then build it. The more you become concerned with their needs and the less about your own, the sooner you'll take care of both.

<comment><USER12> Lets say someone is just starting their tennis training. They like the game, but they want to learn how to play well. Would you tell them that all that matters is whether they manage to beat their next opponent, and to focus on that?

Or might you say "Dont worry about whether you win or lose for a while, instead focus on improving your fundamental skills"?

The first strategy, where you only learn whatever you need to to achieve the next immediate goal, is a bit like greedy optimisation. Its got its merits; but its also got its flaws - for example, you could pick up bad habits that help you win your first few games, but then hinder your later development.

Most teaching of advanced topics, which typically happens at university, seem to focus on building a broad foundation of theory, and move on to applications later; the whole idea underpinning this is that we can learn more efficiently than by just having people focus on solving the next problem they have.

I would advocate planning ahead, to try and find efficient paths through the space of programmer knowledge. Hence I disagree with edw519's advice - if you are on a mission to improve your general programming, I think you are starting in the right place, by evaluating where you are, and trying to figure out whats most efficient to learn.

There is merit to grounding learning in solving real problems; but there's merit to trying to think ahead, and anticipate, too.

<comment><USER13> Tennis and programming = bad analogy. When you program you have to know far more than just how to make the code work. You're usually learning at least 3 languages to get one program working, you have to understand the interactions between your program and the server or the OS and the hardware that your software will run on, then you get into maybe learning how certain compilers work, your IDE and other tools, frameworks, object oriented or functional style, etc. On top of that everything is constantly changing on you.

In tennis you have a set of unchanging rules. The equipment may advance slightly over the years but they're basically the same. So you really in tennis you learn the rules, strategies, equipment, and you're good. You could program all your life and not even scratch the surface of it all. That's why I think edw's advice is totally perfect. Learning by finding out how to get a task done is the way to go because you could learn all sorts of programming related stuff all day that you never use. In tennis you're far more likely to get an opportunity to use all you've learned.

Nice try with the tennis, it's a good argument but it doesn't work out in the end.

<comment><USER12> Lets not get bogged down in the tennis; I don't even play tennis, I just chose it because almost everyone recognises that investing time in fundamental skills is important in sports.

I spent some time, last August, playing with Haskell. This didn't help me build the next thing I needed to. I didn't need Haskell to help me solve any immediate problem either then, or since.

I spent that time because I believe that the experience will make me a better programmer, in the long run, and give me a bigger toolbox with which to conceptualize problems. I thought that, in the long run, in some sense, it would improve my fundamentals.

You seem to be arguing that things are so dynamic, that there's no point making long term investments like that.

If things were so dynamic that I thought there was a good chance I'd be making sandwiches for a living next week, I'd agree.

But things do not change _that_ fast in programming. There's a copy of SICP on my desk that I'm reading; its the 2nd Edition from 1996, of a 1984 book, and the code is in Scheme.

And I don't feel like I'm wasting my time reading it, at all!

<comment><USER13> Yeah, you're right. Enough with the tennis. I think there's equal merit with what you're saying and what Ed is saying. We're trying to answer a question that doesn't really have a right answer. Add to that the fact that there are so many ways to evaluate how much youve improved or how you stack up that maybe we should focus instead on how _not_ to measure these things.

I've been so tired that I'm prone to losing my train of though half way through writing so hopefully my last comment wasn't totally incomprehensible.

</comment></comment></comment></comment></comment><comment><USER14> I haven't used it personally, but one useful tool might be <http://codereview.stackexchange.com/>

</comment><comment><USER15> Here's one thing I've always found reassuring: When I look at code I wrote a year or two ago, I invariably find a lot of things I could have done better that I didn't know of back then. This generally tells me that I have improved and I am looking at the code with a greater set of evaluation tools and/or a better thought process.

Where I would get scared is if I looked at code that was 2 years old and I couldn't distinguish it from code I would write today. That to me would be a clear sign that I am not improving.

</comment><comment><USER16> Not sure if that approach is useful. Wouldn't it be better to build something and note where you struggle the most along the way?

I currently face a similar problem, as I want to pick up playing the guitar again. How to get into deliberate practice mode? I consider just going through a book step by step. On the other hand, as my real goal is songwriting, perhaps it would be better to just start writing songs and try to learn what I need along the way (presumably by copying elements from music I like, that is, trying to figure out how to achieve certain effects).

I have also considered to just check out random guitar lesson videos on you tube. Perhaps that way I could pick up new techniques and then see what I can create by employing them.

<comment><USER17> > I currently face a similar problem, as I want to pick up playing the guitar > again. How to get into deliberate practice mode?

OT: Try WildChords (<http://www.ovelin.com/>) :)

<comment><USER16> I heard about that, sounds like fun. I don't have an iPad yet, though.

</comment></comment></comment><comment><USER18> I'm not sure if this helps you out or not, but I've found working through practice problems, such as Project Euler, to be helpful.

<comment><USER19> I was going to suggest the same (Project Euler specifically). I think the great thing about a site like Project Euler is you have a set result your code must produce to get it correct, so you must think through the correct way to code the algorithm.

Another benefit of Project Euler is, after you solve the problem, you can discuss different approaches to the problem in different languages with other people who have solved it. Reviewing these discussions can help to see if there are other ways to code the program which may not have occurred to you.

<comment><USER20> Another good thing about Project Euler is that the problem is usually presented in a simple form, which you first try to reproduce, and then it scales up in a way that you have to optimize in order to achieve success in under 1min of cpu processing time. The result is that you learn a lot about how to make more elegant solutions.

</comment></comment></comment><comment><USER21> Developer here.

I check back with the competency matrix semi-annually to re-evaluate where I'm at. Anything that I'm unfamiliar/unskilled with is fare game for the next 6 months.

If I were focused solely on global supremacy, I would check the matrix weekly, but alas, I have work to do, and I'm competent enough to do it now.

READ. It's the best way to discover the unknown unknowns.

Your ability compared to others only matters only when framed in the context of "What do I want?" What skills do you need for the career path you want? What skills do your future employer(s) need from you. What are the non- academic PhD guys working on, and does that interest you enough to wake up at 3am for?

</comment><comment><USER22> IMHO.

I believe that master the ability of learn on-the-fly is the most important thing. We simply do not have enough time to learn all knowledge.

Whatever you are working on, if you ask deeper and deeper questions, you will be able to continue to learn. And this way learning is much less abstract.

</comment><comment><USER23> Sorry, there is no oracle that can tell you in absolute terms how good a programmer you are. The only thing you can do is pursue both a width and depth of knowledge in the field and get better. To improve: tackle various types of tasks both high and low level, try out different patterns and styles, and focus on improving important code qualities. The qualities I find important are bug count, code size, and ease of doing the right thing.

There is a meme floating around that says improving means the worst code you have seen is the code you wrote six months ago. Don't go down that route. It is a sign that you have stopped genuinely improving and started chasing fashions. You should be able to look at your old code and either call it good or identify room for improvement. You should also be able to tell it is getting better.

</comment><comment><USER24> Never stop coding. Look back each 3/6/12 months at code you wrote back then. If it looks as cool as it was 3/6/12 months ago - you stuck. If it looks like shit - you are on a right track and right speed.

<comment><USER21> Occasionally, I take 2-4wk coding breaks to re-evaluate something that's been nagging me each time I code. Is OO working for me? Do I like functional languages (I don't)? How's that PHP treating you (unstable buggy broken)?

I've discovered that PHP makes me angry. Functional is good for small stuff. I need [much] more practice with OO. I don't know anything about ... a lot.

The next 2-4 wks are spent reading and comparing alternatives to doing whatever it was that was nagging me. These time blocks do actually include small coding problems (1-2hrs), but I can't really call it coding. I then begin with new optimism about the new language/skill/feature/paradigm that I've now incorporated into my daily programming.

<comment><USER24> Offtopic, but since I see you lean more toward OO - look into perl's Moose. There are few presentation on Moose basics out there. Especially, look for Roles/Traits.

</comment></comment></comment><comment><USER25> measure yourself, with innovation, product launches and how successful they are. Worrying about measuring yourself is a factory mentality.

</comment><comment><USER13> I don't know if this question can be adequately answered. There's enough to say about this as there is to learn about programming as a whole! In my experience I've found that the best thing to do is to just keep making things, challenge yourself, be humble, and remember that you will never be as good as you want to be. Someone out there will always be better and measuring against someone else is usually the best way to take the wind right out of your sails. Don't do it. Just be better than you were yesterday.

I measure myself like this: I ask, "would I have been able to build this a month ago"? If yes then it's time to start challenging myself.</comment>


The weird and wonderful world of constructive mathematics (2017) [pdf] - <AUTHOR> https://home.sandiego.edu/~shulman/papers/rabbithole.pdf <comment><USER2> There are a lot of folks here asking for a bit more. Here are two versions of the same well-done talk, from Andrej Bauer: a video [https://www.youtube.com/watch?v=21qPOReu4FI](https://www.youtube.com/watch?v=21qPOReu4FI), and a paper [http://www.ams.org/journals/bull/2017-54-03/S0273-0979-2016-...](http://www.ams.org/journals/bull/2017-54-03/S0273-0979-2016-01556-4/) (sorry, the paper link may not work for everyone, but the video contains basically the same content.)

</comment><comment><USER3> The remarks on computable and continuous functions can also be thought about as follows.

The law of the excluded middle is only one non-constructive aspect of classical mathematics. Dropping it leaves you with what is usually called "intuionistic logic", and the characterization of constructive mathematics as broader than classic mathematics is literally correct in that every intuionistic theorem implies a classical theorem, and every classical theorem is equivalent to an intuionistic theorem.

Another non-constructive aspect of classical mathematics, which remains non- constructive in intuionistic logic, are axioms whose conclusion involves the existential quantifier. In both classical and intuionistic logic, the inference rule, which governs how the existential quantifer may be used, looks as follows.

> Asserting that "the existence of x such that phi(x) holds entails psi" where > x is a variable bound by the existential quantifer and not occurring in psi, > is equivalent to assering that "phi(y) entails psi" where y is a free > variable not ocurring in psi.

This inference rule (assembly language of logic) seems weird, so an example of its use might help.

> "there exists x such that phi(x) holds entails that there exists x such that > phi(x) holds" by tautological inference, and by the existential quantifier > inference we have that "phi(y) entails the existence of x such that phi(x) > holds" where y is a free variable not appearing in "exists x such that > phi(x) holds".

When doing classical or intuionistic mathematics, you would usually use axioms of the form "psi entails that there exists x such that phi(x) holds". But such axioms are non-constructive because the inference rule does not allow you to start with "there exists x such that phi(x) holds" and somehow construct an actual term t such that phi(t) holds.

Now what Mike says in his slides is that it is consistent to modify intuionistic mathematics into a "fully constructive mathematics" by strengthening the existential quantifier so that "exists x such that phi(x) holds" would imply that we can (computably) come up with a specific term t such that phi(t) holds.

As a consequence, any statement in fully constructive mathematics involving the existential quantifier as a conclusion is a stronger statement than such in classical mathematics, which is roughly why all functions end up being continuous: the definition of the notion of a function itself requires that the function be computable, i.e. that its values exist in the sense of the strengthened existential quantifier.

<comment><USER4> > every classical theorem is equivalent to an intuionistic theorem.

I understand that every intuitionistic theorem implies a classical one: give the same proof, and see what theorem you end up with in the classical world. But how is every classical theorem equivalent to an intuitionistic one? Can we construct the equivalent intuitionistic theorem in a similar way from any classical one, or is this a nonconstructive proof?

<comment><USER5> The double negation translation:

[https://en.wikipedia.org/wiki/Double- negation_translation](https://en.wikipedia.org/wiki/Double- negation_translation)

<comment><USER6> The negation of the negation not being equal to what you started with always reminds me of the Hegelian dialectic, or dialectic (in the philosophical sense) in general.

</comment></comment></comment></comment><comment><USER7> > In constructive mathematics, there can also be numbers d such that d^2 = 0 > but not necessarily d = 0.

In the footnote, it mentions that d is not a real number (which seems right). But I find this very confusing -- this seems to be using a deliberately non- constructible number to facilitate proofs in constructive mathematics?

Regardless of whether this meets a formal criteria for being a tool in constructive mathematics, it does seem to be in direct opposition to the notion of intuitionalist mathematics, which has as a fundamental goal to dispense with axiom-of-choice-style proofs of things that are clearly ridiculous (like Banach-Tarski).

<comment><USER8> We can explicitly construct such numbers using 2x2 matrices. These are called "dual numbers"[0], and the matrix representation is essentially an analoge of the same for complex numbers. So if you accept the complex unit, i, as a reasonable algebraic thing, then the "dual unit" shouldn't be too much of a stretch.

Anyway, all that is completely fine in standard foundations. The LEM contradictions only come in when we impose other axioms. For example, in Anders Kock's Sythetic Differential Geometry[1], we essentially start out by assuming that every function is differentiable.

This seems sorta crazy at first blush, and it does give contradictions, but the interesting bit as that those problems hinge solely on LEM. Thus, in a way, we're left with chosing between universal differentiability or LEM. Kock explores what happens if we pick the former, and it turns out to be pretty deep, interesting and useful.

[0]:[https://en.wikipedia.org/wiki/Dual_number](https://en.wikipedia.org/wiki/Dual_number)

[1]:[http://home.imf.au.dk/kock/sdg99.pdf](http://home.imf.au.dk/kock/sdg99.pdf)

</comment></comment><comment><USER9> Always see this type of slide template used in mathematics. What do people use to build these slides? Is it a specific powerpoint template?

<comment><USER10> It's called Beamer, which is a LaTeX template/package which generates a PDF slideshow rather than an academic-looking paper.

</comment></comment><comment><USER11> > we can assume powerful axioms that would classically be inconsistent

Where could I find some explicit examples of this being useful?

One idea I had is that this might actually be very useful for proving things about cryptography. Generally, if you want to formally prove something is cryptographically sound, you can only do so in terms of the asymptotics of families of functions, rather than proving anything specific regarding, say, SHA256. But if you could prove constructively a statement like (an adversary can break program P) -> (exists x,y: x != y and SHA256(x)=SHA256(y)) it seems that would serve as a proof that P is secure. Statements of this form are trivially provable classically since (exists x,y: x != y and SHA256(x)=SHA256(y)) can be proven on its own by the pigeonhole principle, regardless of the correctness of P, but it seems that in order to prove this constructively you would actually have to find a collision in SHA256.

<comment> man-and-laptop No. If a set A is finite, its elements are enumerable, and some property P is decidable, then (\forall x \in A) P(x) \vee ~P(x) is true even intuitionistically.

A list of examples of "anti-classical" axioms:

\- All functions are continuous, and all sets automatically carry the "right" topology. This means, for instance, that constructing the Real numbers in the standard ways (Cauchy sequences or Dedekind cuts) also endows them with the desired topology (the Euclidean topology in this case).

\- All functions are computable. This axiom is called "Church's thesis". It's nice because it shows that a lot of Computability Theory is similar to classical set theory, but with the edition of Church's thesis, and the absence of LEM.

\- Some numbers in a set called the "smooth reals" square to 0... without being zero. This seems to create a universe in which every geometric object is "infinitesimally straight". I haven't fully grasped why this works. It's like the dual numbers, but somehow made all-pervasive.

<comment><USER11> Certainly it is _true_, since it is decidable and classically true, but I think that the relevant question is can you come up with a proof without actually finding a collision in SHA256? In essence, what I am asking is if there are axioms we can add in an intuitionistic system that we know to be inconsistent (but that we can't prove inconsistent without doing things that we believe are hard cryptograhically), such that the resulting system corresponds to a notion of cryptographic security.

<comment> man-and-laptop I think this wouldn't work, because you can prove intuitionistically that every finite set is "decidable" using the following ingredients:

\- An upper bound N on the size of the set.

\- A surjection f:[1,N] -> S where [1,N] is the set of integers from 1 to N.

\- Proof by induction that every set S where the above two ingredients can be found is decidable. The induction will be in N. This can be carried out internally in any intuitionistic system.

In the case of SHA-256, there is an upper bound N on the number of 256-bit inputs (which is equal to 2^256), and a surjection f which maps integers to corresponding bitstrings. Then the general lemma I described above is true, and you can prove that there must be a collision.

It doesn't entirely prove you wrong. (I need to do some real work). But almost certainly what you describe can't work. Some sort of induction will probably thwart what you're trying to do.

<comment><USER12> You have far more freedom in modeling intuitionistic logic than you think. :)

In this case, the point is that in a logic for cryptography, you would have a type "S" of "bit strings of arbitrary but unknown length" which is restricted in such a way that you cannot eliminate into discrete types (such as the natural numbers). In particular, there would be no way of proving "x != y" for x, y in S at all unless you _assume_ that there was some function which established this.

One way to get a model for such a logic is to interpret types as (reflexive) graphs and functions as graph homomorphisms. The resulting category is a topos and hence gives you a model of type theory.

There is such a wealth of knowledge about building models for intuitionistic logic that it is difficult to say what can and cannot be done without a thorough literature review.

</comment></comment></comment></comment></comment><comment><USER13> I'm a bit confused about the functions always being continuous. Step functions being ill-defined makes sense, but how about modulos? f(x) = x mod 1 should be trivially discontinuous. I should also be able to contruct the set of integers Z (using the unit 1 and succession operator) and identify the largest integer that is smaller than x by intersecting [x-1, x) with Z. Do I need to show the intersection always contain only one element?

<comment><USER14> Well, x mod 1 is just x minus a series of Heaviside step functions, each of which are non-constructive. The core problem is determining if your real number x is equal to an integer. You might be able to prove that x is close to a particular n, but there may not be a constructive proof of either x<n, x=n, or x>n. Hence you don't know if x mod 1 should be x-(n-1) or x-n.

</comment></comment><comment><USER15> Well I guess nearly all of the reals must not exist since we can't construct them.

<comment><USER16> You sound to me like you think you're sarcastically saying something that's just so obviously false that it constitutes a devastating argument against the entire idea of constructive mathematics, but whether the reals "exist" depends a _lot_ on your definition of "exist" and is still an ongoing debate for some definitions of "exist" that are relevant, even without bring constructive mathematics into it. And it's not that hard to draw a perfectly conventional mathematician into an interesting discussion about whether the real numbers deserve to be as fundamental as they are when we can't point to any of them. That is, it isn't just that we can't "construct" them for some definition of construct, but we can't even _identify_ them for _any_ definition of "identify".

Let me highlight again that the question isn't whether they are useful, or a mathematically valid construction; there are all kinds of other mathematically valid constructions far stranger than the "reals". The question is whether they deserve such a fundamental place in mathematics and education. I do recall even in high school that _truly_ understanding the real numbers even at that level was definitely a dividing point for the advanced math class; there are some who really got the quirks, and there are some who never really did and just parroted their way through the tests wondering how the question of "numbers" got so complicated... and it was still a very partial and somewhat ad-hoc introduction to the topic ("Dedekind" doesn't come up, etc.) just enough to try to motivate limits.

<comment><USER15> It's self-evident that for everyday usage all you need are the rationals.

</comment></comment></comment><comment><USER17> the constructive mathematics reminds me the state of math before calculus, i.e. Achilles and turtle. Such step back in power and expressiveness is probably a necessary first step before the some kind of "closure" technique, like the limit in calculus, can be developed.

</comment><comment><USER18> Constructive mathematics is the way forward. It's connected to linear logic via Chu spaces [0] ([https://arxiv.org/abs/1805.07518](https://arxiv.org/abs/1805.07518)). This correspondence is unreal as constructive mathematics / linear logic unlocks the door to several key advantages such as being closer to computation, probability theory, type theory, Lie groups, a generalized topology, optimization, "differentiable Turing machines", all the quantum shit, game theory etc the list goes on.

[0] [https://en.wikipedia.org/wiki/Chu_space](https://en.wikipedia.org/wiki/Chu_space)

Linear logic is fundamentally about formulating computation as an adversarial relationship between two parties. It's also the foundation of e.g. the Rust ownership system (I know, I know, affine types).

It's also the foundation of the min-max algorithm which in turn is the foundation of Generative adversarial neural networks.

Ironically, this idea isn't exactly new. It's directly related to Dialectics ([https://en.wikipedia.org/wiki/Dialectic](https://en.wikipedia.org/wiki/Dialectic)) which has been present in Western philosophy since Aristotle through Kant, Hegel and Marx (it's a funny story).

<comment><USER10> How is constructive mathematics closer to Lie groups than regular mathematics? From what I read in that presentation, a bunch of basic assumptions in calculus (such as the intermediate value theorem) no longer hold, and the theory of Lie groups is built on manifolds/calculus/real analysis etc.

<comment><USER18> Good question. I don't have a direct answer answer but fundamentally the connection has something to do with adjoints. Google for adjoints and constructive mathematics and Lie groups and adjoints.

This particular pair I understand only indirectly, I somewhat understand the relationship between linear logic and Lie groups and constructive mathematics and linear logic and this is a transitive relationship.

Edit: in the presentation they mention "In constructive mathematics, there can also be numbers† d such that d^2 = 0 but not necessarily d = 0.". They are talking about alternarivity, one of the three requirements for a Lie algebra [https://en.m.wikipedia.org/wiki/Lie_algebra](https://en.m.wikipedia.org/wiki/Lie_algebra)

<comment><USER10> "Something to do with adjoints" is hopelessly vague, and what do you mean by transitive?

In regular mathematics there can be nonzero numbers whose square is zero (for example, the "dual numbers"). But I don't see how this has anything to do with constructive vs nonconstructive mathematics.

<comment><USER18> > hopelessly vague,

You didn't do the reading so hold your horses with hopelessly.

From the slides "In constructive mathematics, every function is continuous". (From the presentation)

Sounds like Lie groups to me.

I'm aware of dual numbers funny that you bring them up as they correspond to Lie groups. I have been talking about dual quaternions nonstop on hn.

<comment><USER19> I'm sorry, but he is right.

Adjoints are everywhere [1]. Referencing adjoints is indeed pretty vague. You can't make a case for why things are interesting by quoting a bunch of resources of other people making cases why things are interesting. (I guess you can, but then, why make the argument at all if it is not yours?)

You don't even need funny names to get x^2=0. This is true for any of the two elements of the group of order 2.

Linear logic is indeed having a mini revival, but so is general category theory. I don't see the particular advantage for people to evangelise certain parts of mathematics, especially if the case being made is not clear.

[1] Not attributed to me.

<comment><USER18> > I'm sorry, but he is right.

That's like your opinion, man.

You conveniently ignored the continousness of both constructive mathematics and Lie groups.

Did you read the paper on chu spaces and constructive mathematics? What did it say about adjoints?</comment></comment></comment></comment></comment></comment></comment>


The Day After You Get Funded - <AUTHOR> http://tout.ly/jmRJ6s <comment><USER2> This post is a great post to remind entrepreneurs that getting funding is not a success. I often discuss with companies coming to us looking for funding that things change when they get money. You now have shareholders with expectations and you have obligations to them. When you are running on a shoestring, often decisions are easy because only the most important things can get done; everything else falls by the wayside. When you have cash in the bank, suddenly the universe of options is much larger - do I hire more people, do I invest in marketing, etc. It's an exciting but daunting moment. Congratulations on the funding; your job just got harder:)

<comment><USER3> I often hear people say that sometimes having options can be more difficult than not having options, but in a business context, I wholeheartedly disagree. Even in the small (300k total accounts or so) project I founded (that I _just_ killed off), I still had to plan multiple steps ahead. Just because something wasn't realizable at a given moment, did not mean I didn't have to make decisions.

In fact, I had to make more decisions: "Once A, B, and C are complete, I need to find funding. If I get funding from X, then I can proceed with Y. If X falls through buy N gives me funding, I'll do Z because of M. If both come through, then I'm limited by H and J, and therefore I'll go with either Q or W." Obviously, it's more complicated than this, and sometimes my mental maps gave me headaches - but what I'm trying to illustrate is that once you have something solid, I think things become simpler. Instead of planning for a myriad of possibilities, you only need to make one or two per instance.

</comment></comment><comment><USER4> I would pop the champagne, you get the opportunity to realize your dream, isn't that amazing? Instead of growing slowly / difficult / .. you now have money to hire amazing people and accelerate your development progress.

Damn, I get even excited typing about it.

<comment><USER5> Growing a business is difficult whether you take funding or not. Many people who think like you seem to be are just kidding themselves. They're popping the champagne because they've deferred the reckoning over their lack of a viable business for 1-2 years, instead of finding out immediately that their idea is dead in the water.

You do this a couple times and then you realize, the salary you picked up from the investment round is cold comfort compared to the _years of the most productive chunk of your life_ that you gave up.

There's nothing inherently wrong with taking outside money, but if you're doing it because "now you have the opportunity to realize your dream"...

<comment><USER4> I think you're taking things out of context, I never said you don't have to built a viable business. Or that building a business is easy - or that you don't have to work hard anymore - or that you have some crazy ass dream, you didn't do any market research etc.. If your dream is to built a great business, deliver lots of value to your clients etc. than I don't see a problem - for most idea's you need some investment to be able to find out if they are good. And if you get funded, I assume you have done the numbers on your idea, worst-case/best-case and that you picked smart investors - who also did their numbers. So if you get funded that would also mean smart people believe in your idea.

I think it's good if you're excited about the business you're building. It is only logical to take outside money if it would help you build your business. Ofcourse you don't always _need_ outside money to build your business - and in some cases it might be better without - but if you're in the case that outside money would help you - then I don't see anything wrong with it.

</comment></comment></comment><comment><USER6> Nice article. I would've assumed you were so hungover, that none of that would've happened. (I would've replied that if someone had asked me).

It makes sense in a very practical way. You're a startup, and you really need to _focus_ on that startup, no matter what happens.

</comment><comment><USER7> Before enlightenment: chop wood, carry water.

After enlightenment: chop wood, carry water.

</comment><comment><USER8> Didn't know about this service. But it look awesome! I'm going to try to start using it tomorrow at work :)

Whats the limitation on the "free trial" version except the 7 emails/day ?

</comment><comment><USER9> Congrats on getting funded. Even if it doesn't change your day to day it is an excellent milestone. Where did you post your open positions?

<comment><USER10> Check here: <http://toutapp.com/about> and here: <https://twitter.com/#!/Tawheed/status/83864457880678400>

<comment><USER11> The idea sounds awesome and I signed up but the site needs to be redone to be far more clear on what they are offering. I showed this to 3 people in my office right now and no one could figure out what they were offering until signing up and there is no clear call to action to go and sign up to the free version and then doing a proper upsell to the paid from that point Site looks nice though but needs to be far more clear on there product and the free option on the main page.

<comment><USER12> Not having a link to the Free plan was a conscious decision. In fact, once we made that decision, revenues increased.</comment></comment></comment></comment>


Elon Musk: Mars ship test flights 'next year' - <AUTHOR> http://www.bbc.com/news/technology-43367191 <comment><USER2> "After a string of failed rockets - and near bankruptcy - SpaceX wowed the world with its latest flight, Falcon Heavy, in February."

Falcons have 32 consecutive successful launches since their last failure nearly three years ago.

<comment><USER3> Yeah, it's pretty amazing what clickbait you get if you combine 2008 (3 failed Falcon 1 flights in a row) and 2018 (Falcon Heavy flies.)</comment></comment>


12 Years Ago today, Erlang/OTP was released as Open Source - <AUTHOR> http://web.archive.org/web/19991009002753/www.erlang.se/onlinenews/ErlangOTPos.shtml

<comment><AUTHOR> Related: Erlang/OTP R14B01 Released today: <http://www.erlang.org/download/otp_src_R14B01.readme></comment>


Show HN: Party with a Local – connecting travelers and locals who want to party - <AUTHOR> http://partywithalocal.com

<comment><USER2> Nice, I've been considering building something similar. The "meet new people" problem deserves some better solutions.

Did you originally launch in the Netherlands? I'd be interested in hearing how you rolled this out. Do you have a more technical blog because the one I'm seeing seems heavy on SEO for partiers.

<comment><AUTHOR> Yeah cool, indeed I agree the problem hasn't been solved, especially when you're traveling.

We did launch in the Netherlands yes, we are still based in Amsterdam.

The app is available globally and we want to reach locals and travellers everywhere - so we've done a lot of work on App Store optimization and localizing the description and keywords - getting them translated in every possible language on the App and Play Stores. Also done that for our promo video in some of the widely spoken languages.

However, we also realise its very difficult to launch everywhere and have a lot of active users (locals) in every city from the get go. So we are focusing on a number of key cities first - Amsterdam, Berlin, London in Europe initially, then some key cities in the US and Australia/Asia next and building up the local user base there with our own events & parties (we've got a big boat party coming up in Amsterdam end of August), content marketing (Best bar in Amsterdam on a Wednesday night), cross promotion with venues and events, a bit of local press, social media etc

We don't currently have a more technical Blog, but if you have specific questions, feel free to shoot us an email.

Cheers, Dan

</comment></comment><comment><USER3> I'm party person myself and this app comes quite handy to me. I've been using the app when travelling to meet some locals or just in my hometown when I'm in the mood to meet new people. So far only met great people! It works pretty well!

<comment><AUTHOR> Nice feedback, thanks. Glad to hear it is working for you. I've only had good experiences as well with meeting people.

</comment></comment><comment><USER4> I like this idea as well. Any chance a windows phone app is coming soon?

<comment><AUTHOR> Thanks David. It's a possibility for the future, but right now we're going to focus on the 2 platforms of iOS and Android.

<comment><USER4> I figured I would ask that question as someone ultimately will :) Thanks for the feedback.

<comment><AUTHOR> np</comment></comment></comment></comment>