The other night I attended a Code for Cary meeting… a part of the larger Code for America, and even larger Code For All organizations. Code for All states "Together, we enlist and support the public to create digital resources, tools and practices that result in stronger local communities and more responsive and effective governments."
So in this meeting I gathered with six others to hear and discuss local coding efforts. The whole setup is actually really interesting. Data is obtained from the city websites, sometimes downloaded directly or scraped from existing web pages. The goal is to use the data in applications… these applications are built either locally or from shared projects from any of the Code for America organizations.
I was fascinated by a few of them… CityGram for example is a platform to visualize various data… from crime, to business listings, to restaurant inspections. You can also be notified via text message or email when there's an occurrence. New York has this up and running:
https://www.citygram.nyc
There's also a single site which hosts multiple cities, like the NC Triangle region:
https://www.citygram.org
You can also look at the source code:
https://github.com/codeforamerica/citygram
Being a software engineer I figured I could help out in some way. Maybe build some apps.
For more information you can search for your local area's Code for America site to see which projects they're working on.
View Full Post and Comments
Concursive generates web application archives (.war files) for their apps. These are done all over the place...
- Build servers which continually build and run tests on the apps
- Application servers which are used to checkout the source and customizations, and deploy the .war into production
- Developer machines which are used to code, debug locally and then commit the code for everyone else
While I was waiting for a few builds this past week I decided to see what the effect of various machine configurations had on build times. These tests were not isolated in any way. The machines tested were doing what they normally do and the results from Apache Ant were displayed.
Machine | ConcourseSuite CRM | ConcourseConnect | Cores | Speed |
---|
2008 Dev Machine | 7 minutes 12 seconds | 3 minutes 15 seconds | 2 | 2.4GHz |
2009 Web Server | 2 minutes 6 seconds | 1 minute 45 seconds | 2 | 2.13GHz |
2010 Web Server | 2 minutes 3 seconds | 40 seconds | 8 | 2.27GHz |
2011 Web Server | 1 minute 46 seconds | 41 seconds | 16 | 2.0GHz |
2012 Dev Machine | 55 seconds | 26 seconds | 4 | 2.6GHz |
These results are typical from what I see in the logs. CPU is not the only important factor... load, more memory and faster disk play a role.
How long does it take you to "ant package" the apps? and what is your computer/features?
August 14, 2012: Updated the table to show MacBook Pro w/Retina times.
View Full Post and Comments
Design/Documentation:
- Pages
- OmniGraffle
- Keynote
Productivity/Project Management:
- OmniFocus
- Calendar
- TextEdit
Web/Server Development:
- IntelliJ IDE
- JEdit IDE
- Tomcat Server
- PostgreSQL Server
- Photoshop
- Safari, Chrome, Firefox
- VMWare for Internet Explorer
Mobile Development:
- Xcode IDE
- iPhone/iPad Simulator
- Photoshop
- Titanium IDE
- iTunes
Communications:
Collaboration:
- Concursive ConcourseConnect with OpenMeetings
View Full Post and Comments
I went to the Apple store at lunch and I played around for about 45 minutes on both the new MacBook Pro with Retina display and the MacBook Air. I currently have an older MacBook Pro that's humming along.
About the new MacBook Pro with Retina display...
Two things I liked (I couldn't come up with a 3rd):
1) The text looks awesome and so do the graphics in all of Apple's apps: iPhoto, Safari, Final Cut Pro, and Numbers.
2) App launch time was amazingly quick!
Three things I didn't like:
1) Using the non-Apple Apps that Apple had installed on them, the text looks fuzzy and terrible on Photoshop CS5 toolbars and text, Microsoft Word overall looked fuzzy, and a Java editing app I installed (JEdit because it's a quick download and runs without install) looked fuzzy no matter which fonts I used. All of those apps, and any other non-retina apps you use will likely need to get Retina upgrades. According to the WWDC keynote, Adobe is working on CreativeSuite updates, hopefully for CS6. Outside of Apple's apps, I only have about 3 must-have apps that I use for the office that will also need patches: VM Ware Fusion, IntelliJ, and OmniGraffle.
2) Another thing I noticed is that the new MacBook Pro with Retina display's graphics performance was choppy sometimes. Dragging windows were sometimes choppy. Also, if you start 3 apps, like Safari, iPhoto and Numbers, then press Mission Control to see the app windows, the window performance stuttered and jumped terribly on the animation. This is one thing that needs to be improved hopefully through graphics driver updates. I tried all 6 Mac Book pros and they all did it – I was actually looking for a 2.6 model but they only had 2.3s.
In contrast, when I walked over to the Mac Book Air, Mission Control was smooth and elegant and so was dragging windows around.
3) When you go to Apple.com's website with Safari, you can see the images and then they redraw with hi-res 2x versions. When the artwork changed it was noticeable and I didn't like it. In my opinion this needs to be handled another way - yuck!
Well, that's it. I'm holding off until I can think this through. I went away feeling less desire for the new MacBook Pro with Retina display... but that's where the market will be in a few years so who knows.
View Full Post and Comments
The best social sites and search engines alone won't tell you how valuable your business is, but a series of calculations against a few key answers you provide, compared to other businesses, will. That's why a decision support system (DSS) is needed.
Wouldn't it be great to go to Google and query "How much is my business worth?" and then have an input form with a few questions and then an answer on the spot? Today the top search result is for 'information' that goes into valuing a company and a link to purchasing a book for further guidance.
A DSS could also help you in times of a crisis to narrow down your exact situation and provide you with an answer specific to you. I often find that I need to read four or five web pages to pinpoint an answer. It would be great to have a workflow that arrives at this sooner and more accurately.
Existing crowd-sourced decision engines also take time to get an answer because they require knowledgable people who are willing to answer. The questions are often repeated on different sites with a different audience.
So, how does the world accumulate and share this information? That's the complicated part. Ideally there would be questionnaires, quizzes, polls and such that are aggregated – perhaps as part of the search results themselves. DSS widgets can blanket the web on sites similar to how advertisements do today.
At Concursive, we've made a DSS that can be authored by a developer and placed on any of our ConcourseConnect sites within a portlet. We're not sure how the rest of the world will use it, but today we're creating polls, assessments and training materials for our customers. I would love to see something universal.
View Full Post and Comments
The Open Source files for ConcourseConnect (OSI approved AGPL license) are being hosted by Google Code and Sourceforge.net. The reason we went with Google Code is initially for reliability and then later because the Open Source code base is synchronized directly to Google Code and you can review the changelog in near real-time. The reason we went with Sourceforge is because Sourceforge has a large inventory of Open Source software and for that reason it makes sense. Here's how I feel about the choices today...
Continue Reading
My favorite IDE reached version 10 in December and I finally got around to downloading a demo of the commercial version. I'm still using a previous commercial version for nearly all of my development projects but I have been using IDEA 10 Community Edition for some of my javascript projects so at least I'll be familiar with some of the UI improvements. What I'm looking forward to in the latest commercial edition:
- Having a current IDE for technologies and frameworks that I work with
- Improvements with source code repositories
- "100% faster code indexing, and an overall performance increase"
- "New code completion behavior with automatic invocation while typing"
UPDATE: Read on for info on my upgrade experience...
Continue Reading
Google recently released Skipfish, a command-line tool for testing the security of web applications. I decided to download the source code, compile it, and then test it on one of our beta instances of ConcourseConnect. ConcourseConnect was previously tested by a 3rd party security company so I was eager to find out how things would go this time around.
Skipfish is easy to compile and use on Mac OSX. You must have Apple's Xcode installed first. Here's the steps I took to run Skipfish:
- Download the skipfish source from the Skipfish Google Code Project
- Download the required library libidn, I grabbed the latest version 1.18
- Install libidn by extracting the libidn contents, then typing (in a terminal):
- ./configure
- sudo make install
- In the Skipfish directory, use Terminal to compile skipfish by typing: make
- Copy the file called dictionaries/minimal.wl to skipfish.wl
If all goes well, then you can test your web application.
Using a web browser, navigate to a test instance of ConcourseConnect (or any app you want to test). Make sure it is a test instance because Skipfish will be navigating to every link that it sees on the website. It's possible that it can add data, delete, and modify so never run on a production instance. You can optionally login to the test instance with a username and password. If you do this, Skipfish will test even more links and act as a logged in user.
Once the browser is showing your site, go to the browser's preferences and show the cookies for the site. For the test site, copy the contents of the JSESSIONID. This is the server session that Skipfish will use for testing. (Safari doesn't let you copy the cookie contents so I opted for Google Chrome). Obtain a session id each time before you test as the session may have expired. You can also use a command-line tool to create and obtain the session id for automated testing.
I used the following parameters to test ConcourseConnect:
./skipfish \
-C JSESSIONID=A2D311CE14F6B6A437812CCBFB1D8F07 \
-o site_results \
-X /connect/logout \
-X /logout \
http://localhost:8080/connect
These parameters told Skipfish to use the JSESSIONID cookie, to output the results into a directory called site_results, to avoid the logout command (which tells the server to invalidate the session id), and to test the site which is running on my local computer.
The results were interesting... and really only a few items were relevant.
Skipfish reported 32 warnings: Integer overflow vector, Format string vector, SQL injection vector, Shell injection vector, and Server-side XML injection vector. I reviewed the instances and didn't find any evidence of a real problem. Skipfish also reported some semi-important warnings: Directory traversal possible, Conflicting MIME / charset info, Incorrect or missing MIME type, External content embedded on a page, and XSS vector in document body. I also reviewed these and confirmed two issues that we were able to correct.
Overall the results were certainly helpful. I figured if someone out there is going to use this tool to do harm, then we must use it ourselves as part of the code release process. Regardless of the results, this is a great way for someone to gain some personal insight into web security and to incorporate the findings into all of your web apps.
View Full Post and Comments
This is a question that we have internally discussed for years. We decided that the answer was yes, a corporate web site can be a social networking community, and we have been running a web site and community, all-in-one, for about 8 years now. Powering concursive.com is ConcourseConnect 2.0 -- it's a collaboration application, but with the flexibility of a light-weight content management system.
Continue Reading
JetBrains recently released a preview version of IntelliJ as Open Source. The marketing page declares IntelliJ as "The Most Intelligent Java IDE — Now Free and Open Source."
I've been a paying customer of IntelliJ IDEA for several years, and with this news I thought, how great! I can continue to use the Enterprise edition on my main computer, and on my second computer use the Community edition for minor edits. You can't run two copies of IntelliJ Enterprise at the same time on the same network, so I have avoided using IntelliJ on two computers and use NetBeans instead.
The Community Edition looks very familiar to those using the Enterprise edition, with a few graphical color changes and some features removed. Most of the removed features are for hardcore refactoring, testing, and developing with integrated web servers... features a useful editor wouldn't need anyhow. The most surprising removed feature however, is that the "Most Intelligent Java IDE" doesn't know what a Java Server Pages (.jsp) file is. That's right, try to open a .jsp and the editor asks the user what to do with it. Is it a text file? an html file? well, no it's a .jsp! At a time when Eclipse, NetBeans, and even editors like JEdit have no problems identifying .jsp files, why would that feature be removed? I hope this feature gets added before the final Community Edition release. For a java web developer, or even to augment a primary IDE, the Community Edition just doesn't cut it.
With that said, I think the move by IntelliJ to Open Source part of the IDE is a great gesture. I'm all too familiar with open-sourcing an application and maintaining dual-licensed editions so the devotion to the Community Edition will certainly be scrutinized by users. The IDE is really top-notch and it will be interesting to see where it goes from here. Will it make sense to use the Community Edition? What do you think about it?
View Full Post and Comments
developer tools