Open Side Menu Go to the Top

12-12-2012 , 10:26 PM
https://www.hackerschool.com/about

I envy passion like this.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
12-13-2012 , 04:45 AM
http://c2.com/cgi/wiki?ProgrammingIsNotFun

Quote:
You Never Feel Like You Accomplish Anything

There's always a bug you haven't fixed or a feature you haven't added. Like works of art, software is never finished: it is abandoned when money, time, or interest runs out.

You never feel a sense of accomplishment; the closest thing is the thought "Well, I'm glad I don't have to work on that any more."


http://quay.wordpress.com/2007/05/20/never-finished/
Quote:
Ask any developer out there if a program is ever finished and they’ll tell you “No, of course not, I still need to…”. But, ask any developer out there if the program is almost finished and, assuming that the development cycle has progressed far enough along, their answer will invariably be “Yes, all I have to do…”. They may even quantify it: “80% complete”. Ask them a couple of days, weeks, months (depending on the magnitude of the project) later and you will get a similar response, but with a different percentage, say 90%. And so forth… but never 100%.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-13-2012 , 04:57 AM
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-13-2012 , 05:09 AM
its 4 am, and i dont know if i'm having some type of nihilistic epiphany or or not..

i'm feeling fairly depressed and those quotes above sum it up pretty well

but on a grander scale, it pretty much applies to everything. not just coding, even tho that was my trigger. almost ANY skill set you can think of is always evolving, always changing, which means theres always more to improve. you're never finished, ever. its not even limited to skill work. how about just the goal of being rich? when it enough enough? if you have $1m then you see how easy it is to reach $5m, or $10m, or $50m. the guy in the banner ad thread in the business section was saying that.

or its commonly heard about bodybuilders. they gain some size, but its never enough. next they need to get bigger, or more defined. similarly, relationships fizzling out. etc

where does it all end?

ironically, i instantly became a fan of the nike quote, "there is no finish line" after i saw roger federer wearing the t-shirt a few years back after he broke pete sampras's record. its such an inspiring quote. at least it was..



dunno what to think now

Last edited by greg nice; 12-13-2012 at 05:16 AM.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-13-2012 , 07:45 AM
Quote:
Originally Posted by greg nice
there is no finish line
Isn't that the beauty of life? Imagine if there was a finish line....

Life is about the journey, not the destination.

"In three words I can sum up everything I've learned about life--it goes on." -- Robert Frost
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-13-2012 , 07:52 AM
There is a finish line. It's called death.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-13-2012 , 08:41 AM
Quote:
You Never Feel Like You Accomplish Anything

There's always a bug you haven't fixed or a feature you haven't added. Like works of art, software is never finished: it is abandoned when money, time, or interest runs out.

You never feel a sense of accomplishment; the closest thing is the thought "Well, I'm glad I don't have to work on that any more."
I often feel like I accomplish stuff. If you just shift the grain from "software" (whatever the hell that is) to "features" than you see just how ******ed this quote is. Features are often finished. Software is a collection of features so of course you can keep adding more. But this is like saying a house is never finished because home owners always have more stuff they want to do.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-13-2012 , 08:54 AM
Software doesn't have to be "finished" to ship. The size of the issues still evident when it ships speaks to how quality focused your organization is.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-13-2012 , 08:59 AM
Quote:
Originally Posted by greg nice
where does it all end?
For me (and perhaps selfishly) the end goal is happiness. If you're happy everything else is secondary.

I'd rather have a minimum wage job and be happy than £5m in the bank and unhappy.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-13-2012 , 03:35 PM
Granted, one of those jobs is easier to leave than the other...
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 01:31 AM
Noir has met its maker...

** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 09:32 AM
Quote:
Originally Posted by daveT
Noir has met its maker...

I kind of saw that coming months ago when I was checking out clojure. I don't know why but the lib gave me a bad vibe. Everything from the web site, the open issues and the length of time between changes in the code lead me to believe the project wasn't being taken seriously.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 11:35 AM
Yeah, all the signs were there, but Raynes' reasoning is well-thought out. Noir most certainly helped me wrap my head around many concepts and ideas that I'm not sure I would have been able to see, much less conquer, with Compojure.

Do you agree that Noir was too bloated and too much framework for Clojure? I know you haven't tried any significant projects that may be better done with RoR or something, but it does say a lot about the community that lopping off a barely noticeable framework in the name of decreasing complexity isn't faced with ridicule.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 11:53 AM
I didn't work enough with Clojure/Compojure to give a good answer. I will say this though.

I use Express a lot with Node and it's pretty similar to Noir and I happen to like it a lot. It just works and doesn't get in your way but at the same time it gives you a bunch of little nice features that you would end up implementing yourself in 95% of your projects.

I don't think it's fair to compare them straight up though. Express works as a glue lib to support 1 or more templating languages, includes nice routing and abstracts the http req/res cycle in a way that's much nicer to work with on a day to day basis. Then it sits ontop of a lib that handles chaining together middleware and makes working with some of them easier and also gives hooks to add your own extremely easily.

In Clojure's case I think Compojure+Ring did most of this already? All Noir did was give flash sessions (a stupid feature by itself because it can be abstracted into a more general/useful thing) and have its own style for setting up req/res cycles in routes? I could see why it got dropped.

Btw I would see Compojure+Ring to be considered pretty low level and quite nice. However, dealing with status codes and content types manually on a day to day basis is kind of annoying. I could see someone making a very tiny lib eventually that tucks those details away but does nothing more.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 12:47 PM
The maintainer of Noir created lib-noir, which apparently strips the gunk out of Noir. It still has cookies, bcrypt, validation, salting, and other stuff no one wants to really write, and appears more flexible than Noir is.

lein-ring has been out for a while and that takes care of the server stuff.

I'll have to look into it more later on. I think the only thing I have to worry about is redoing the routes and a few syntax items from what I can see looking over the repo.

As for Noir's crummy website, Korma has the same exact style, but Korma isn't going anywhere because it does have an excellent use-case.

Overall, I agree with the decision. I guess its easy for me to say because I haven't invested an over-significant time to using Noir and very little of what I created absolutely depends on Noir syntax and protocols. It also helps that I am finally able to use Leiningen 2 and ClojureScript after setting up Linux.

Finally installed a .tar package through the AUR. Wow, this is so easy it's stupid!

Windows install of Clojure:

Go to Clojure and see you can't download it yet.
Go to Oracle and download one of the myriad JREs.
Download, open, watch it break.
Open up the path variables and fix that.
Go back to Clojure and download.
Oh crap, it didn't extract to the correct folder.
Move the folder
Download and install Leiningen
Oops, that broke.
Fix the Path variable
Oops, still still broken
Search for a solution
Oh, maven is sort of fudged up.
Fix more path variables
Find a Pom file somewhere in the 500000-folder deep java file....

Linux install of Clojure:

pacman -S install clojure
**prompt:
This package depends on these items, care to download them?
>>> [enter]

zip...

>>> clojure
-- to use clojure, you have to install leiningen.

download the tar from AUR

>>> cd lein-folder
>>> unpack
>>> pacman install
>>> lein
** In order to use leiningen, you have to have maven, ring, jetty and all this other stuff installed. Let me go get all of that stuff and install it for you

...install....

>>> lein repl
[repl]>> (+ 2 2)
4
[repl]>>

Amazing
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 01:02 PM
I would see validation and hashing to be outside the scope of what a lib of that type should be doing.

Maybe the bcrypt support is bad in clojure though? In node, it really can't be easier to use. Just import the module and use the functions in a straight forward way.

Validation is tricky because it's difficult to do it in a way that's generic enough to work for everyone. There's about 5000 different ways to handle validating input and what you want to do with it when it either validates correctly or incorrectly.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 01:39 PM
I'm pretty shocked that in this day and age of free online code crackers, that anyone uses anything besides bcrypt, as that is the only one that is not supported. bcrypt is extraordinarily time-expensive to crack, yet people still use SHA1, et.al. due to not knowing any better and all the press about LinkedIn. This is one of those areas where you not only have to protect the customer, but the people drag-and-dropping their websites or webmasters just following orders from above. Other libs exist, but why use anything weaker than bcrypt? If you really hate it, then use java.utils instead, which I'm pretty sure is more powerful than anything else freely available.

The validation parameters are pretty minimal: has-length? and stuff you can easily roll your own, but the only one that I really care about is is-email? as that one is apparently a difficult problem that years of intelligent work hasn't been able to perfect, and it would be foolish of me to say I can do better.

Of course, if you want to generate your own password stuff, go for it, but even that fails more often than not. There was one blog or comment or something that I read where the webmaster created a dictionary of the most common passwords and wouldn't let people use those ones. He audited the database a few months later and, to his surprise, the most common password was "drowssap." At some point, you simply can't protect people and most implementations blow up in your face. You can have parameters where you only allow passwords with at least one numeral, one cap letter, and one lower letter. I'm pretty sure the most common password would end up being 123OneTwoThree or something similar. Neither of these make your database more secure, and in some ways, makes it easier for crackers. The fact is that people are dead stupid and at some point you have to accept that fact. A security conscience person is going to create their own excellent passwords without your help. People who just want to log in are going to figure out the shortest path to resistance no matter what kind of road-blocks you put up. What is the point of forcing people to use a strongly random password you send to them in an email when their email password is "password"?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 01:42 PM
Quote:
Originally Posted by daveT
but the only one that I really care about is is-email? as that one is apparently a difficult problem that years of intelligent work hasn't been able to perfect, and it would be foolish of me to say I can do better.
a different view: http://davidcel.is/blog/2012/09/06/s...es-with-regex/
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 01:57 PM
Validation has a number of things you need to concern yourself with, and it depends on what type of field you're validating.

- min/max length
- matches a pattern
- min/max range
- can be empty or not
- is equal to (to compare passwords maybe)

Those are just a handful of basic ones, that's cool. But then when validating actual fields you need to chain together validation rules sequentially.

Think about a scenario where you sign up as a new user for a website and let's say your username is your e-mail account. You would want to give proper feedback to the user for each error.

1. Is it empty?
2. Does it not validate to what an e-mail should be?
3. Is it already registered/taken?

How does the message need to be sent back to the user? Is it being thrown into a template and then served from the web app? Is it being called with an XHR and returning json?

How is the error being displayed? Does the validator need to know which input field it is attached to? Are we just appending a message to a LI, is it its own message, will we be adding an error class to the input field?

As you can see this is actually not a simple solution. Then on top of it, the validator that might be built into Noir or any other framework but not give you enough basic validators, so you need to build your own. How easy is it to extend theirs so you're using the same API for both default and custom validators?

Validation is no joke haha.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 02:25 PM
For distinct email and username, the program checks the database. The database has unique constraints on the username and emails, so if the database tosses back an error, the program captures the error, shows a hidden div, and tells the user that the email or username is already in use. Either they can login or retrieve the password or create a new username. This is a very simple chain of (is-email? ) and (try (except)) Maybe its stupid-simple, but that is what I did on the resume site.

The issue with sending validation emails, for me anyways, is because of Heroku's dyno system. I only have one dyno running which shuts off after some unknown time, so I could create a session cookie that is only valid for some time, but I have zero idea how long that cookie should last. I could, in theory, toss the validation emails into a temporary database, but then I'd have to create some cron jobs that may or may not run to clean up the data. I could also create an admin section to manage the database, but all of that sounds like too much. I'm not confident that I can get this stuff to work dependably.

This is really one of those areas that I am at a loss to do. From a user experience perspective, I'd rather just have people create the account and dive in. I am probably looking at this from the totally wrong perspective and perhaps I am dead wrong on the idea, but that is how I am thinking it works, but I haven't really researched the issue either, so forgive me for a naive comment.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 05:14 PM
I just looked at the noir validator. It doesn't really seem to do that much. You would still need to write a lot of glue code to hook that up to validate your forms that produce server rendered templates and/or json.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-14-2012 , 08:45 PM
I don't know. Maybe I'm looking in the wrong places, but the steps for JSON looks like:

Create a form with hidden divs for errors.
Write a bunch of javascript to describe the errors. You have to specify what errors you want and what they say.
add a bit of jQuery for extra flavoring.

Why can't you just plug in javascript instead of using server-side code and how would Noir prevent this from happening? It appears to be no different than writing server functions to describe the errors. The only difference now is adding a javascript tag somewhere.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-15-2012 , 09:18 AM
Not sure if this is the right place but maybe someone knows the answe:
How would I do the following in Libre Office (google search suggestions if you only know MS Office would also be welcome)
- I have two columns A and B
- Column A has alphabetically sorted names i.e. names of sports teams
- Column B has the win %age of the corresponding team

I want a column C that has the names sorted by win% i.e. the team with the highest win% would be first

This seems like something that should be trivial but I have no idea how to search for it
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-15-2012 , 09:27 AM
You want it without the order of A and B changing?
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
12-15-2012 , 10:04 AM
I know how to do this in Excel.

Copy columns A and B to columns C and D.
Highlight both columns C and D.
Right click on them.
Mouse over sort, which reveals more options, then select largest to smallest.

This method treats the two elements as pairs, and reorganizes the team / win percentage pairs according to win percentage.

Essentially, if the Spreadsheet function you're using supports sorting by pairs, try selecting both the name and the percentage columns and sort greatest to least.
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD ** Quote
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **
$25m Guaranteed WPM on CoinPoker
Join the action now
Daily Rewards • Splash Pots • CoinRaces
** UnhandledExceptionEventHandler :: OFFICIAL LC / CHATTER THREAD **

      
m