HNHacker News
TopNewBestAskShowJobs

zephyrfalcon

2,508 karma · joined January 22, 2008

submissionscomments
zephyrfalcon··on Ask HN: Who wants to be hired? (August 2018)
Location: Gainesville, FL

Remote: yes (although willing to consider local positions)

Willing to relocate: no (that is not an option for me at this moment, unfortunately)

Technologies: Python, relational databases (MS SQL Server, Postgres), web crawling, GUI development, scripting, unit testing, SQLAlchemy, ETL, Scheme, Prolog, Lisp, etc (always eager to pick up new programming languages or technologies)

Resume/CV: http://aquila.blue/misc/resume.html

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: Looking for full-time or part-time work.

zephyrfalcon··on Go: building on the shoulders of giants and stepping on a few toes [video]
"Explicit" doesn't necessarily have to mean "verbose", though.
zephyrfalcon··on Python post-Guido
The first public release of Python, 0.9.1, was object-oriented. It had classes, and everything was an object internally, although admittedly not every type had methods yet (from a user perspective), esp. immutable types like tuples, strings and numbers. These methods wouldn't appear until 2.0, if I recall correctly. Types like lists and dicts had methods from the start.
zephyrfalcon··on Python post-Guido
ABC didn't have list comprehensions though, in spite of being influenced by SETL.

As I recall, Python did get them from Haskell, which in turn got them from Miranda, which got them from KRC. Before that it gets fuzzy, but it's likely that SETL was eventually at the root of it.

zephyrfalcon··on Python iterators: wat
I had to stare at this for a while before I figured it out.

`works` and `notworks` are both generators. They take an iterator (over a list) and take two elements from it, then yield this. So when given [1,2,3,4] you would expect to get back, [1,2], then [3,4], then StopIteration is raised.

`works` uses a list comprehension. It gets [1,2], [3,4], then there are fewer than two elements left, so StopIteration is raised, the toplevel call wraps the results in a list, and returns [[1,2], [3,4]].

`notworks` uses list() with another generator. This does look like it would have the same behavior as the listcomp, but it does not. When we turn an iterator/generator into a list, and the generator raises StopIteration, list() will return a list of all the values produced so far. So it produces: [1,2], [3,4], then [5], then endlessly [].

You can inspect the behavior by looping over the generator calls, e.g.

    for x in works(iter([1,2,3,4,5])):
        print(x)
tl;dr: In `works`, the StopIteration is handled by `works` itself, while in `notworks` it is intercepted by the call to list(), rather than by `notworks`. This causes the difference in behavior.
zephyrfalcon··on Ask HN: Freelancer? Seeking freelancer? (July 2018)
SEEKING WORK -- Gainesville, FL -- remote/freelance

I am an experienced Python developer, having used the language in all kinds of areas and situations, including web development (Flask, Django, Pylons, Google App Engine, etc), GUI development, database access (using MS SQL Server, MySQL, and Postgres), scripting, backend development, automated testing, web crawling/scraping, data extraction and parsing/ETL, etc.

I am looking for full-time or part-time work, either one is fine. If you are looking to get a small project done, or you have an existing project where some maintenance work needs to be done (perhaps on a regular basis), then I would love to hear from you.

I am also available for technical writing (I kept a programming blog for many years, mostly about Python).

(For the record: Although Python is my main programming language, I am also interested in, and have worked with, many other programming languages, including C, D, Delphi, Go, C#/Mono, Ruby, OCaml, Prolog, Lisp, Scheme, etc, on Windows, Mac OS X and Linux systems. I am also available to work on projects in these languages.)

Website: http://aquila.blue

Email: zephyrfalcon at gmail.com

zephyrfalcon··on Ask HN: Who wants to be hired? (July 2018)
Location: Gainesville, FL

Remote: yes (although willing to consider local positions)

Willing to relocate: no (that is not an option for me at this moment, unfortunately)

Technologies: Python, relational databases (MS SQL Server, Postgres), web crawling, GUI development, scripting, unit testing, SQLAlchemy, ETL, Scheme, Prolog, Lisp, etc (always eager to pick up new programming languages or technologies)

Resume/CV: http://aquila.blue/misc/resume.html

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: Looking for full-time or part-time work.

zephyrfalcon··on Switzerland's mysterious fourth language
> a huge number of problems on this planet stem from the fact that people speak different languages and profoundly fail to understand one another

That was the original thought behind Esperanto... the idea was that there was strife between different groups of people because they speak different languages, and that a universal language would solve this (or at least bring them closer together). [1] Whether this worked out or not is left as an exercise to the reader. ;-)

[1] https://en.wikipedia.org/wiki/Esperanto#Creation

zephyrfalcon··on Apple Engineers Its Own Downfall with the Macbook Pro Keyboard
The (later) MacBook Air keyboard has similar problems (to the ones described in the article). My previous MBA had keys that stopped working after a year. And you cannot easily replace the keys without breaking them. :(
zephyrfalcon··on Building the Commodore computer that should have existed
Almost all of the 8-bit micros came with some dialect of BASIC built-in. The only one that I know of that had Forth out of the box, was the Jupiter Ace.

Also, Occam?! That is a concurrent programming language... I'm not sure it would have done too well on the machines of the day.

zephyrfalcon··on Bypassing website anti-scraping protections
The irony is that if every site protected themselves from web scraping, there would be no Google.
zephyrfalcon··on Ask HN: Freelancer? Seeking freelancer? (June 2018)
SEEKING WORK -- Gainesville, FL -- remote/freelance

I am an experienced Python developer, having used the language in all kinds of areas and situations, including web development (Flask, Django, Pylons, Google App Engine, etc), GUI development, database access (using MS SQL Server, MySQL, and Postgres), scripting, backend development, automated testing, web crawling/scraping, data extraction and parsing/ETL, etc.

I am looking for full-time or part-time work, either one is fine. If you are looking to get a small project done, or you have an existing project where some maintenance work needs to be done on a regular basis, then I would love to hear from you.

I am also available for technical writing (I kept a programming blog for many years, mostly about Python).

(For the record: Although Python is my main programming language, I am also interested in, and have worked with, many other programming languages, including C, D, Delphi, Go, C#/Mono, Ruby, OCaml, Prolog, Lisp, Scheme, etc, on Windows, Mac OS X and Linux systems. I am also available to work on projects in these languages.)

Website: http://aquila.blue

Email: zephyrfalcon at gmail.com

zephyrfalcon··on Ask HN: Who wants to be hired? (June 2018)
Location: Gainesville, FL

Remote: yes (although willing to consider local positions)

Willing to relocate: no (that is not an option for me at this moment, unfortunately)

Technologies: Python, relational databases (MS SQL Server, Postgres), web crawling, GUI development, scripting, unit testing, SQLAlchemy, ETL, Scheme, Prolog, Lisp, etc (always eager to pick up new programming languages or technologies)

Resume/CV: http://aquila.blue/misc/resume.html

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: Looking for full-time or part-time work.

zephyrfalcon··on Python’s For - Else
But Go does have a goto statement...?
zephyrfalcon··on Python’s For - Else
I agree that the word 'else' is confusing here. To me, it suggests that one thing is done, or the other, but not both. Python's try..except..else follows this pattern, but for..else and while..else do not, for some reason.
zephyrfalcon··on GDPR Version of USA Today Is 500KB Instead of 5.2MB
Apparently that's a myth, see e.g. https://en.wikipedia.org/wiki/ARPANET#Debate_on_design_goals

I've also read about it in the book "Where Wizards Stay Up Late: The Origins of the Internet". In the prologue it mentions:

“Rumors had persisted for years that the ARPANET had been built to protect national security in the face of a nuclear attack. It was a myth that had gone unchallenged long enough to become widely accepted as fact.”

“Lately, the mainstream press had picked up the grim myth of a nuclear survival scenario and had presented it as an established truth. When Time magazine committed the error, Taylor wrote a letter to the editor, but the magazine didn’t print it. The effort to set the record straight was like chasing the wind; [Bob] Taylor was beginning to feel like a crank.”

Some other sources seem to confirm this, e.g. http://www.alphr.com/features/369490/top-ten-internet-histor...

zephyrfalcon··on Black: An uncompromising Python code formatter
That doesn't really apply here... Like I said, Python code is already much more uniform than most other programming languages. Unless somebody's formatting style is particularly ridiculous, their code should be just as readable as anybody else's, even if they put a space where it supposedly doesn't belong, or use too many/too few blank lines, or use the "wrong" way to split and indent a long list of function parameters. There is no productivity gain for others here. Maybe for languages like Javascript or C, but not Python. Almost all of it is just nitpicking.

(Of course you can make code less readable in other ways, e.g. by choosing undescriptive names, or weird idioms, but flake8/Black naturally don't address those issues.)

zephyrfalcon··on Black: An uncompromising Python code formatter
> I don't actually write much Python, but surely you could have run the same tool (or some other formatter configured to match the linter) locally to have it do that auto-format for you?

Maybe... I don't work there anymore, but if I'm ever in a similar situation, I will consider that approach, assuming it will only reformat files as needed. (I suspect the company-mandated flake8 script scanned all the code (200K lines), rather than just the files that changed, considering how slow it was.)

zephyrfalcon··on Black: An uncompromising Python code formatter
Not really. I worked at one place where they enforced PEP8 (using flake8 etc) using a git commit hook. In other words, when you try to commit some code, it would run flake8 which would most likely balk at some of the changes you made (and not let you commit until those were fixed). A lot of the rules/warnings are extremely nitpicky, and they had all of them turned on (except for the line length); I don't know how many times I could not commit my code because I left a space at the end of a line, or an empty line contained whitespace, or I had only one blank line between two class definitions, etc. It was just ridiculous. I can understand the argument for having all code in the same format, but this kind of mechanism just seriously decreased my productivity, not in the least because it constantly pissed me off.

Admittedly, Black works differently; as I understand it, it will just auto-reformat your code rather than yelling at you and making you go through your code and fix everything by hand, which is what the aforementioned approach did.

Still, I wonder about the usefulness of such tools. Python code is already much more uniform than most other languages. Also, I am not sure you should take the last crumbs of creativity or personal preference away from programmers. Last but not least, PEP 8 is meant as a style guide, not as a book of law that needs to be enforced at all costs. Some of the Python core developers seem to agree; I have seen comments from Guido and others who apparently think that such tools go against the spirit of the PEP.

zephyrfalcon··on The Power of Prolog
> In my experience, learning Prolog properly requires dedicated guidance, and it would be highly unusual to achieve mastery without it.

Where would you find such a master, though... If you are not studying at a university where Prolog is taught, you're pretty much out of luck, I think. (I am assuming that asking questions in newsgroups/IRC/etc is not a substitute for it.)

zephyrfalcon··on Professor Frisby's Mostly Adequate Guide to Functional Programming (2015)
Or Prolog functors...
zephyrfalcon··on I Got Catfished by a Candidate
Just my $0.02... I have worked some jobs as an employee, some as a contractor, and in my experience there is really no difference between the two, other than how taxes (and social security, etc) are handled. My contracting jobs did not give me any more flexibility (and probably all had this "don't use a subcontractor" clause). How much leeway I had in choosing "the time, place, and manner of my work" depended entirely on the company, not on my status as an employee vs a contractor.
zephyrfalcon··on The Wizard of Q
Or perhaps Albert Gräf, also the creator of a language named Q (now defunct): http://q-lang.sourceforge.net/
zephyrfalcon··on Ask HN: Who wants to be hired? (May 2018)
Location: Jacksonville, FL

Remote: yes (although willing to consider local positions)

Willing to relocate: no (that is not an option for me at this moment, unfortunately)

Technologies: Python, relational databases (SQL Server, MySQL, Postgres), web crawling, GUI development, SQLAlchemy, ETL, Scheme, Prolog, Lisp, etc (always eager to pick up new programming languages or technologies)

Resume/CV: http://aquila.blue/misc/resume.html

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: Looking for full-time or part-time work.

zephyrfalcon··on Ask HN: Freelancer? Seeking freelancer? (May 2018)
SEEKING WORK -- Jacksonville, FL -- remote/freelance

I am an experienced Python developer, having used the language in all kinds of areas and situations, including web development (Flask, Django, Pylons, Google App Engine, etc), GUI development, database access (using MS SQL Server, MySQL, and Postgres), scripting, backend development, automated testing, web crawling/scraping, data extraction and parsing/ETL, etc.

I am looking for full-time or part-time work, either one is fine. If you are looking to get a small project done, or you have an existing project where some maintenance work needs to be done on a regular basis, then I would love to hear from you.

I am also available for technical writing (I kept a programming blog for many years, mostly about Python).

(For the record: Although Python is my main programming language, I am also interested in, and have worked with, many other programming languages, including C, D, Delphi, Go, C#/Mono, Ruby, OCaml, Prolog, Lisp, Scheme, etc, on Windows, Mac OS X and Linux systems. I am also available to work on projects in these languages.)

Website: http://aquila.blue

Email: zephyrfalcon at gmail.com

zephyrfalcon··on Java is Pass-by-Value
OK, but in Python this isn't actually true... numbers are not passed any differently than other kinds of objects. As such, it does not have the same semantics as Java, which does distinguish between primitives and non-primitives.

Of course, this kind of discussion isn't new to the Python community either. The actual calling convention is somewhere between call by value and call by reference, sometimes called "call by object". This is well worth reading: http://effbot.org/zone/call-by-object.htm

zephyrfalcon··on Ask HN: Freelancer? Seeking freelancer? (April 2018)
SEEKING WORK -- Jacksonville, FL -- remote/freelance

I am an experienced Python developer, having used the language in all kinds of areas and situations, including web development (Flask, Django, Pylons, Google App Engine, etc), GUI development, database access (using MS SQL Server, MySQL, and Postgres), scripting, backend development, automated testing, web crawling/scraping, data extraction and parsing/ETL, etc.

I am looking for full-time or part-time work, either one is fine. If you are looking to get a small project done, or you have an existing project where some maintenance work needs to be done on a regular basis, then I would love to hear from you.

I am also available for technical writing (I kept a programming blog for many years, mostly about Python).

(For the record: Although Python is my main programming language, I am also interested in, and have worked with, many other programming languages, including C, D, Delphi, Go, C#/Mono, Ruby, OCaml, Prolog, Lisp, Scheme, etc, on Windows, Mac OS X and Linux systems. I am also available to work on projects in these languages.)

Website: http://aquila.blue

Email: zephyrfalcon at gmail.com

zephyrfalcon··on Ask HN: Who wants to be hired? (April 2018)
Location: Jacksonville, FL

Remote: yes (although willing to consider local positions)

Willing to relocate: no (that is not an option for me at this moment, unfortunately)

Technologies: Python, relational databases (SQL Server, MySQL, Postgres), web crawling, GUI development, SQLAlchemy, ETL, Scheme, Prolog, Lisp, etc (always eager to pick up new programming languages or technologies)

Resume/CV: http://aquila.blue/misc/resume.html

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: Looking for full-time or part-time work.

zephyrfalcon··on Ask HN: Freelancer? Seeking freelancer? (March 2018)
SEEKING WORK -- Jacksonville, FL -- remote/freelance

I am an experienced Python developer, having used the language in all kinds of areas and situations, including web development (Django, Pylons, Google App Engine, Flask, CherryPy, etc), GUI development, database access (using MS SQL Server, MySQL, and Postgres), scripting, backend development, automated testing, web crawling/scraping, data extraction and parsing/ETL, etc.

I am looking for part-time work if at all possible (although full-time would be OK too). If you are looking to get a small project done, or you have an existing project where some maintenance work needs to be done on a regular basis, then I would love to hear from you.

I am also available for technical writing (I kept a programming blog for many years, mostly about Python).

(For the record: Although Python is my main programming language, I am also interested in, and have worked with, many other programming languages, including C, D, Delphi, Go, C#/Mono, Ruby, OCaml, Prolog, Lisp, Scheme, etc, on Windows, Mac OS X and Linux systems. I am also available to work on projects in these languages.)

Website: http://aquila.blue

Email: zephyrfalcon at gmail.com

zephyrfalcon··on Ask HN: Who wants to be hired? (March 2018)
Location: Jacksonville, FL

Remote: yes (although willing to consider local positions)

Willing to relocate: no (that is not an option for me at this moment, unfortunately)

Technologies: Python, relational databases (SQL Server, MySQL, Postgres), web crawling, GUI development, SQLAlchemy, ETL, Scheme, Prolog, Lisp, etc (always eager to pick up new programming languages or technologies)

Resume/CV: http://aquila.blue/misc/resume.html

Github: http://github.com/zephyrfalcon

also: http://bitbucket.org/zephyrfalcon

and: http://gitlab.com/zephyrfalcon

Email: zephyrfalcon at gmail.com

Note: Looking for part-time work if at all possible, but not unwilling to do full-time again.

← PreviousPage 4 of 15Next →