Much has happened, both to CSS and the Web, since those days. But on its 17th birthday, I’d like to acknowledge the creators, custodians and champions of CSS in those early days. These were the days before blogging (in any mainstream sense), twitter, and other social media. Indeed, these were the days of newsgroups, the water cooler of the web for its first decade at least. And many of the most important figures in the development, and success, of CSS (and as a consequence the modern web) are little known, though they are the giants whose shoulders we all stand on.
Laid bare was the scum, algae and rocks, making up the foundation and guts of the vessel. Exposed, for all to see. Similarly, this is how I feel about who we are and what we do and this world we live in. On the surface, we can look fantastic — smooth, calm and at our best. But at our essence is a complex ecosystem and environment that let us present the version of us, our work or our lives, that we want everyone else to experience.
“It may sound amazing, but you could be a better programmer if you were both lazier and more stupid.
First, you must be stupid, because if you are smart, or if you believe you are smart, you will stop doing two of the most important activities that make a programmer a good one: Learning and being critical of your own work…Second, a good programmer must also be lazy because only a lazy programmer would want to write the kinds of tools that might ultimately replace much of what the programmer does…Perhaps paradoxically, the road toward effective stupidity and laziness can be difficult and laborious, but it deserves to be traveled in order to become a better programmer.”
Because I’ve been lazy and just posting links on Facebook and Twitter…Pardon the emphasis on ScriptEd and computer science education, this week is CSEdWeek.
“Nationwide there are 3.3 million seniors in high school but in 2012 only 26,000 took the AP Computer Science Test. Wouldn’t it be great if students could try programming while in high school? Why aren’t more high schools teaching computer science?” Why Teach Computer Science in High Schools? | Brian Heese.
“There is also the expert noob, who still haven’t mastered the subject but is already able to get through the most common problems without external help. The expert noob might even be able to teach others.” Being a noob | Blog | Miller Medeiros.
This blog post by one of my ScriptEd students. “I think the one thing I like best about learning to code is the different possibilities for study it provides. Aside from just “coding,” or creating websites, there’s Artificial Intelligence, Computer Engineering, Robotics, and Web Design, among many other topics. It shows that computer science is not just about numbers, but can include Art, writing, problem solving, and multiple ways of thinking.” Not Just About Numbers: A Young Woman’s Perspective on Computer Science Education | Kendra Farrell.
“The Processing Hour of Code was designed to inspire new programmers to try their hand at programming, and what better way than to write some real code that will help other people and improve the tutorial?” An Hour of Code spawns hours of coding.
“Being good at reading code is important to your survival as a professional developer. Any non-trivial project these days will be a team effort and so there will always be large chunks of code you had no hand in which you have to work with, modify and extend. And so, code reading will likely be the most used and most useful skill you can have; better bite the bullet and get good at it – fast.”
So I’m working on this Farmers Market Locator project, and I’ve got a pretty basic version up and running. Everything is client-side. And I’m using the New York State Open Data API to get the information on the farmers markets. Right now, all that happens when you use the site is a query to Google to find out where you are, and then a query to the NYSOD API to get the nearest markets’ info, and then some Google Maps API stuff. But some of the data is a little dirty: missing spaces in addresses, that kind of thing.
More complications: There’s a bunch of features I want to add, some of which involves incorporating data from the USDA Farmers Market API. Now the USDA API has a little more info about the markets, like what kind of products are sold at each market. This data might also be pretty dirty. And as far as I can tell, the only way to match up markets between the two APIs is to do string matching. (Meaning that, having determined that the Union Square Farmers Market is the closest to your location, I then have to search the USDA API for “Union Square Farmers Market”)
Is there a better way to approach matching up the markets between the two different APIs? Do I need to switch to a back-end solution? What’s the best way to clean up the dirty data? Should I be pulling this info into something else, like a Google Spreadsheet, clean it up there, and make queries to the spreadsheet instead of NYSOD?
Edit: Some suggestions have been made…but as usual they only spawn new questions.
Best way to match markets:
search name (problem: not standard)
search address (problem: not standard)
use URLs as keys (problem: what URLs??!!)
Cleaning up dirty data:
You can use a back-end solution with some data store OR you could do it all in JS. If you were to do it all in JS you would just have to call a few API’s, compare the data returned, fill in missing data from one API with data from another. You would also need to decided which would have priority if there was a conflict. (problem: wouldn’t doing all that matching, comparison, and cleaning on the client-side make it slower?)
I think you are wise to consider grabbing the data, cleaning it up and storing it under your own backend. This allows you to keep your app up and running even if they change their format. (sure your data might get stale, but probably not by much, and it would buy you time address any new formatting from your sources) You could pull down the source data, create your combined json set, and just use that. (depending on how huge all the data was) While a backend solution might sound really complicated, it doesn’t have to be. A google spreadsheet could work, or Google Fusion tables, or Parse.com, FireBase.com, or Tableau.
So far the best suggestion is pretty close to my initial idea, but I’m hoping to get some more feedback on this before I commit myself. Chime in!