Freelance projects

Sunday, December 25, 2011

How can universally unique primary keys can be generated in menory without requiring a database or a singleton?


Without enetring in the specifics (you can fully check out the pattern by reading the appropriate chapter), the solution is to generate a 32 digit key, encoded in hexadecimal composed as follows:
1: Unique down to the millisecond. Digits 1-8 are are the hex encoded lower 32 bits of the System.currentTimeMillis() call. 2: Unique across a cluster. Digits 9-16 are the encoded representation of the 32 bit integer of the underlying IP address. 3: Unique down to the object in a JVM. Digits 17-24 are the hex representation of the call to System.identityHashCode(), which is guaranteed to return distinct integers for distinct objects within a JVM. 4: Unique within an object within a millisecond. Finally digits 25-32 represent a random 32 bit integer generated on every method call using the cryptographically strong java.security.SecureRandom class. 


1. (0-7) IPAddress as HEX - 8 bytes
2. (8-19) CurrentTimeMillis() as HEX - Display all 12 bytes
3. (20-23) SecureRandom() as HEX - Keep only 4 significant bytes. Since this is "random" it doesn't really matter how many bytes you keep or eliminate
4. (24-31) System.identityHashCode as Hex - 8 bytes






import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.logging.Logger;

public class UID {

 private static Logger m_log = Logger.getAnonymousLogger();
 private static char separator;
 private static StringBuilder IPAddressSegment;
 private static SecureRandom prng;

 static {
  try {
   // Get IPAddress Segment
   IPAddressSegment = new StringBuilder();
   InetAddress addr = InetAddress.getLocalHost();
   StringBuilder strTemp = new StringBuilder();
   byte[] ipaddr = addr.getAddress();
   for (int i = 0; i < ipaddr.length; i++) {
    Byte b = new Byte(ipaddr[i]);

    strTemp = new StringBuilder(Integer.toHexString(b.intValue() & 0x000000ff));
    while (strTemp.length() < 2) {
     strTemp.insert(0, '0');
    }
    IPAddressSegment.append(strTemp);
   }

   if (separator != '\u0000') {
    IPAddressSegment.append(separator);
   }

   //Get Random Segment Algoritm
   prng = SecureRandom.getInstance("SHA1PRNG");

  } catch (UnknownHostException ex) {
   m_log.severe("Unknown Host Exception Caught: " + ex.getMessage());
  } catch (NoSuchAlgorithmException nsae) {
   m_log.severe("No Such Algorithm Exception Caught: " + nsae.getMessage());
  }
 }

 public static final String getUID() {
  StringBuilder strRetVal = new StringBuilder(IPAddressSegment);
  StringBuilder strTemp = new StringBuilder();

  //Get CurrentTimeMillis() segment
  strTemp = new StringBuilder(Long.toHexString(System.currentTimeMillis()));
  while (strTemp.length() < 12) {
   strTemp.insert(0, '0');
  }
  strRetVal.append(strTemp);
  if (separator != '\u0000') {
   IPAddressSegment.append(separator);
  }

  // Get Random Segment
  strTemp = new StringBuilder(Integer.toHexString(prng.nextInt()));
  while (strTemp.length() < 8) {
   strTemp.insert(0, '0');
  }

  strRetVal.append(strTemp.substring(4));
  if (separator != '\u0000') {
   IPAddressSegment.append(separator);
  }

  //Get IdentityHash() segment
  strTemp = new StringBuilder(Long.toHexString(System.identityHashCode((Object) new UID())));
  while (strTemp.length() < 8) {
   strTemp.insert(0, '0');
  }
  strRetVal.append(strTemp);

  return strRetVal.toString().toUpperCase();
 }

 public static void main(String[] args) throws Exception {
  for (int i = 0; i < 10; i++) {
   long lngStart = System.currentTimeMillis();
   m_log.info(UID.getUID());
   m_log.info("Elapsed time: " + (System.currentTimeMillis() - lngStart));
  }
 }
}


source

Saturday, September 24, 2011

ERROR This file is too complex to render- SWF only supports 65536 shapes at once

error occurred while converting pdf2swf .... 


There is a very simple fix : add "-s poly2bitmap" to the options

With the added options "-s poly2bitmap" (which means converts pdf graphics to bitmaps) allows the transformation to complete successfully, so maybe we could add this option by default. 



source

Fatal error: Maximum execution time of 60 seconds exceeded


set_time_limit($seconds)
If $second is set to 0, no time limit is imposed. Note that you should be cautious with removing the time limit altogether. You don't want any infinite loops slowly eating up all server resources. A high limit, e.g. 180 is better than no limit.
Alternatively, you can adjust the time setting just for certain functions and resetting the time limit after the time critical code has run, e.g.
$default = ini_get('max_execution_time');
set_time_limit(1000);
... some long running code here ...
set_time_limit($default);
or
In .htaccess you can set these values:
php_value max_execution_time 1000000
php_value max_input_time 1000000

Thursday, September 15, 2011

Increasing User File Upload Limits Using php.ini on Your Linux Server

NOTE: The location of your php.ini file can vary, depending on your operating system/control panel combination. If you are using Fedora 4 with Parallels Plesk Panel, for example, this file is in the following location: /etc/php.ini

If you are using a different operating system and/or control panel, you can find the location of your php.ini file by running the following from your command line:

php -i | grep php.ini
There are two variables within your php.ini file that are responsible for managing user file uploads.

post_max_size This variable determines the maximum amount of data that PHP will accept in a single form submission using the POST method. Its default value is 8 MB, as shown below:
post_max_size = 8M
upload_max_filesize This variable limits the size of an individual file uploaded to your site. Its default value is 2 MB, as shown below:
upload_max_filesize = 2M
An increase in the value of these variables expands user file upload limits.

NOTE: After making changes to php.ini, you must perform an httpd restart for them to take effect. This is accomplished by running the following from your command line:

/etc/init.d/httpd restart

Friday, June 04, 2010

Ten emerging technologies to watch in 2010

http://www.eetimes.com/news/semi/showArticle.jhtml?articleID=221900117&pgno=4

LONDON — EE Times has compiled a list of emerging technologies that we think will be worth watching out for in 2010.

Recessions are the times of change when R&D investments get pushed to the fore. It is well known that when markets and prosperity return they never return in exactly the same form that they went away.

We have deliberately favored the hardware- and physically based side of the technology landscape, although software is also likely to increase its impact and importance in 2010.

There are also some technology trends that are so self-evident and long-term that we have not listed them. We would include amongst these the need to reduce power consumption and the need to pursue low-carbon and reduced materials content solutions. We see these as drivers for some of the more detailed technologies we list below. We don't claim to have a perfectly accurate piezoelectric crystal ball, but some technologies and some technology providers are going to change the landscape in 2010. The ten technologies listed below, in no particular order, might just be part of our changing times.

1. Biofeedback or thought-control of electronics

A number of companies and research institutions have shown how brain waves, captured using sensors on a skull cap or head-set, can be used to control computer systems. The applications are medical — giving communications and control of the environment to heavily disabled people — military and, increasingly, in consumer and computer games control interfaces. This may seem like science fiction but the thought-control human-computer interface is here now and is being promoted by companies such as Emotiv Systems Inc.(San Francisco, Calif.).

2. Printed electronics

The possibility of the rapid printing of multiple conductive, insulating and semiconductive layers to form electronic circuits holds out the prospect of much lower cost ICs than those prepared by conventional fabrication methods. Printing semiconductors usually implies the use of organic materials (although see below) with very different performance to silicon. It is also implies much larger minimum geometries than can be attained in silicon. But there are applications that can benefit from modest performance on flexible subtrates at low cost; the RFID tag is one and the active-matrix backplane for displays is another.

Kovio Inc. (Milpitas, Calif.), a privately-held pioneer in printed silicon electronics, has been plowing the printed electronics furrow since the company was founded in 2001, and in July 2009 announced that it had raised $20 million in Series E financing. Kovio said it planned to use the money to commence volume shipments of its Kovio RF barcodes.


3. Plastic memory

This is allied to printed electronics as it may well be produced using printing, it may well have modest performance compared to silicon, but it is expected to be low cost. One pioneer in this area is Thin Film Electronics ASA (Oslo, Norway) which has tried for a number of years to get the technology out the door and spent some time working with Intel.

The technology is based on polythiophenes, a family of polymers that display ferroelectric properties. The memories are rewritable, non-volatile, show more than ten years data retention and one million cycles, according to Thin Film Electronics. In September 2009 PolyIC GmbH & Co. KG (Fuerth, Germany) used the technology to make a 20-bit memory on a roll-to-roll line using polyethylene terephthalate (PET) as the substrate.

4. Maskless lithography

For many people the main question that hangs over semiconductor lithography is when will extreme ultra violet lithography take over from immersion lithography? But there is a dark horse in the race, maskless lithography based on an electron beam, which is being pioneered by Mapper Lithography BV (Delft, The Netherlands).

In July 2009 Mapper shipped a 300-mm electron-beam lithography platform to CEA-Leti in Grenoble, France, where it was set to be used for R&D by Taiwan Semiconductor Manufacturing Co. Ltd. TSMC is one of the key researchers of lithography and the company's interest in the Mapper technology is at the very least keeping the likes of ASML and Nikon working hard.

5. Parallel processing

This technology is already here in the form of the dual- and quad-core PC processors and the multicore heterogeneous processors used for embedded applications. However, there is as yet little formal understanding of how multiple processors will be programmed and used for the utmost computational and power efficiency.

This is one of the core problems in Information Technology that has faced the industry since the advent of the processor and we are still working away at it. Initiatives such as OpenCL and Cuda speak to that as do the prospect of using graphics processors as general purpose processors, as well as FPGAs and software programmable processor arrays. We expect a lot more activity in 2010.


6. Energy harvesting

Energy harvesting is not a new idea. We have had the motion-powered wristwatch for many years. But as electronic circuits move from consuming milliwatts to consuming microwatts an interesting thing happens. It becomes possible to contemplate drawing power for those circuits, not from the electricity grid or from a battery but from a variety of ambient phenomena. And this is expected to have far-reaching impact.

One of the early applications is to have vibration-powered, wireless sensors in place on machinery, in vehicles. The battery-less aspect of such sensors removes the need for maintenance. EnOcean GmbH (oberhaching, Germany) has pioneered the use of wireless, batteryless switches for use in building automation and is now helping to drive the EnOcean Alliance to form standards.

Nokia is looking at energy harvesting in the context of the mobile phone but has stressed it has no prototype as yet. But in 2010 all makers of mobile equipment have to be looking at energy harvesting to, at least, augment the battery life of their equipment.

7. Bio-electronics and wetware

This might be a bit more on the research side than the development side for 2010, but the coming together of the biological and the electronic is ripe for exploitation. We are used to the inclusion of hardware within animals in the form of under-the-skin tags for animals and heart pacemakers for human beings and the need to improve and reduce the cost of medical care is being felt acutely.

As the industry's capabilities in MEMS and organic electronics fabrication improves the scope for integration of tissues and electronic circuitry increases. Lab-on-a-chip is one manifestation of the technology, and here is an example fromIBM disclosed recently, but it is also possible to grow biological cells on electronically addressable substrates. The opportunities for in-vitro diagnostics are clear. Information about the electrical behavior of individual cells and their reactions to drugs is a major focus for research in cardiac and neural ailments such as Alzheimer's or Parkinson's disease.

So, in short, we expect a lot of research and the continued emergence of bio-electronics as a mainstream activity.


8. Resistive RAM or the memristor

The pursuit of the universal memory goes on. It needs to be simple like a DRAM, or preferably even simpler as those capacitors are a problem to scaling. It needs to be able to retain data for years with the power off and able to be used millions of times. It needs to be simple to make using conventional methods and with materials that are not out of place in conventional wafer fabs. And we still haven't found it yet.

Or have we?

In 2009 Unity Semiconductor Corp. emerged from seven years of stealthy research with its conductive metal oxide (CMOx) technology, although we are pleased to note that EE Times was reporting on Unity inApril 2006. But 2009 has also seen the arrival on our radar screens of 4DS Inc., Qs Semiconductor Corp. andAdesto Technologies Inc.

We are also aware that many of the larger IDMs are active in RRAM. And the reference to the memristor is because two-terminal devices that display a memory-effect in their resistance characteristic are effectively the practical implementation of the theoretical work, championed by Hewlett-Packard Labs, on the memristor, often described as the fourth passive circuit element after resistors, capacitors and inductors.

9. The through-silicon via

The depth of the interconnect stack on top of the leading-edge silicon surface is deep and can vary markedly in minimum geometry. We have speculated that this could result in a splitting of front-end fab production into surface and local interconnect followed by higher stack connection, possibly in different wafer fabs.

The desire, for marketing as well as technical reasons, to mount multiple die in single packages is also driving a need for more sophisticated interconnect and the arrival of the through-silicon-via passing completely through a silicon wafer or die is clearly important in creating 3-D packages.

In May 2009Austriamicrosystems started producing TSV parts on a foundry basis, targeting suppliers of devices for 3-D integration of CMOS ICs and sensor components. Expect more of the same in 2010.

10. Various battery technologies

We have become so used to Moore's law and the steady miniaturization of microelectronics it is easy to become frustrated with a technology that does not double in performance every two years. But battery technology is relatively mature and is not driven by the same forces as the integrated circuit. Indeed if energy storage becomes too dense it can become dangerous.

Nonetheless we all rely increasingly on batteries for energy storage and to power our various gadgets. Indeed it is arguable that without further breakthroughs in battery technology for electric vehicles the compatibility of the automobile and sustainable green transportation is in jeopardy. So the pressure is on.

Recent spins on nickel- and lithium-based battery chemistries, such as nickel oxyhydroxide, olivine-type lithium iron phosphate and nanowires, are gunning to displace the venerable but problematic alkaline-manganese dioxide formulations. ReVolt Technology, a developer of rechargeable zinc-air batteries, has selected Portland, Oregon as the location for its U.S. headquarters and manufacturing center. We expect similar developments to come on apace in 2010, and every smart battery is set to provide a power management IC opportunity.

Wednesday, December 17, 2008

15 Useful Project Management Tools

15 Useful Project Management Tools

November 13, 2008 23:23 by Admin

There is a huge variety of project management applications out there. Most are general purpose apps, not aimed at any one industry. But there is a growing number of project management apps aimed specifically at one industry or another. Applications geared to creative types are becoming more readily available, and some of the offerings are really quite good.

Many of these project management apps have built-in code repositories and subversion browsers (or are built around them). A few have built-in bug and issue tracking. Others include more than just basic project management. All of them can help you keep track of activities and team members. There are both free and paid options. Some have very slick interfaces, and some are modeled more after desktop applications. All are relatively easy to use and easy to set up.

Below are 15 useful project management applications, almost all of which are targeted directly at Web developers, designers (both Web and print) and other creative types. The last one is not geared specifically to creative types but is the most unique project management application I’ve found and is included on that basis as well as because of its potential usefulness for designers and developers.

Also consider our previous article:

1. Basic Project Management Apps

These applications are marketed specifically for project management. Most include things like task-, team-, and goal-management features. Some include additional features such as time tracking and invoicing.

Lighthouse

Lighthouse is a bug- and issue-tracking app that tracks timelines and milestones, integrates with your email client and more. You can update tickets through your inbox, manage your beta testing (by making tickets and milestones public), integrate it with subversion and manage and prioritize your tickets.

Lighthouse Dashboard Screenshot

Project creation is simple; only a project title and description is required. Once a project is created, tickets, messages and milestones can be entered. Ticket creation can be done by email (the email address to send tickets to is displayed on the “Tickets” page). You can show tickets based on a variety of criteria, including date, state (open or closed) and who is responsible for them. Message creation is easier than email, and you can attach files up to 50 MB in size. When you create a milestone you simply enter the title, the date it’s due and the goals or focus for that particular milestone. It doesn’t get much simpler than that.

Permissions are easy to set, and you can invite users by email. One of the best features of Lighthouse is its Beacon and API integration. With the API, you can customize tickets, projects, changesets, milestones, messages and more. Integrate it with other services (such as Google Calendar), or make desktop applications that use Lighthouse. The APIs make Lighthouse infinitely more useful, because you can really customize it to fit your current workflow.

Lighthouse Milestone Creation Screenshot

Lighthouse is great for Web development teams (or individuals) and has a very easy-to-use interface. They have paid and free plans, all of which include unlimited open-source projects. The free plan lets you manage one private project with up to two people on the account. The paid plans range from $10 per month for the Personal plan (with up to 3 projects, 10 users and 100 MB of file upload storage space) to $120 per month for the Platinum plan (with unlimited projects, up to 50 public projects, unlimited users and 30 GB of file upload space).

When combined with a subversion app, Lighthouse provides a pretty complete project management app for developers. Subversion integration is pretty straightforward, and the help file provided gives complete step-by-step instructions for setup.

Springloops

Springloops is another subversion browser that integrates project management. It counts a unique AJAX code browser and Basecamp integration as among its features.

Springloops Dashboard Screenshot

The Springloops interface is very intuitive and easy to use. Tabbed navigation provides access to the log, source and deployment information. Adding users is done via email, along with the ability to create usernames and passwords (making it easier and faster for them to get on board with a project). Creating new projects is simple, with a few different templates available (including a starter template). You can migrate an existing repository into Springloops as well (including plain text dumps). For added project management ability, Springloops can be integrated with Basecamp.

Springloops Source Browser Screenshot

Springloops has a number of plans available, both paid and free. The free plan includes 25 MB of space, 3 projects, 3 deployments per day (using FTP or SFTP connections), roll-back capabilities, Basecamp integration, subversion and an unlimited number of users. The paid plans range from the “Flowerpot” plan at $9 per month (including 1 GB of space and 10 projects) to the “Forest” plan at $96 per month (including 18 GB of storage, unlimited projects, automatic deployment and secure SSL encryption). All of the paid plans include a free 30-day trial.

CreativePro Office

CreativePro Office offers complete office management tools. CreativePro Office is completely free, setting it apart from the other apps here.

CreativePro Office Dashboard Screenshot

CreativePro Office has the usual tabbed navigation, including tabs for clients, projects, time sheets, finances and team members. The dashboard presents a calendar with upcoming events, a list of your projects, outstanding invoices, notes and search functionality. Project creation is a bit more in-depth than with most other apps listed here, though only a client name and project name is required (you can also fill in a project URL, description or comments, category, date range, status, contacts and tags). Client tracking is integrated, making this handy for those who work with lots of different clients, and it could even serve as a simple CRM program, depending on your needs.

CreativePro Office Finance Tab Screenshot

Integrated invoices and financial information is handy, and the finances page gives you options for viewing and creating invoices, expenses and reports.

CreativePro Office is very robust for a completely free application and is definitely worth checking out before shelling out for an expensive paid solution.

Jumpchart

Jumpchart is a website planning application that allows you to plan the navigation of your website by creating, dragging and dropping pages into the plan. You can also add text and formatting to pages and then export your CSS files and site map when you’re finished.

Jumpchart Home Page Screenshot

This is a great planning app for Web designers, though it’s not strictly a project management application. You can add comments to each page, which could serve to keep track of tasks related to specific pages. More traditional project management functions could be kept track of in the text of each mockup page or through the comments. The mockup and planning capabilities of Jumpchart make it worth using, even if hacks are needed to make it more conducive to full project management.

Jumpchart Add Sub-Page Screenshot

The free Jumpchart plan offers 1 project with 1 MB of storage and a maximum of 10 pages and 2 users. The paid plans range from the Simple plan at $5 per month (including up to 5 projects, with 25 pages and 5 users per project, and 100 MB of storage) to the Deluxe plan at $50 per month (including up to 30 projects with unlimited pages and users and 5000 MB of storage).

No Kahuna

No Kahuna is a simple project management and issue-tracking platform. It’s very straightforward and easy to use, with an excellent user interface. Features include task and activity tracking and collaboration tools.

No Kahuna Activity Page Screenshot

No Kahuna is excellent for basic project management and ticket tracking. There aren’t a ton of features, which can be a very good thing. It’s very quick to get started, also a big plus.

No Kahuna Project Info Screenshot

There are free accounts available that include unlimited projects and users. However, if your projects accumulate more than 30 open tasks, you will need to upgrade. Paid options are reasonably priced, ranging from 3 projects for $9 per month up to 100 projects for $99 per month. Open-source projects are always free, no matter how many open tasks you have.

Basecamp

Basecamp is often considered to be the best project management and collaboration platform out there. Its features are impressive: to-do lists, file sharing, message boards, milestones, time tracking, project overviews and commenting.

Basecamp Dashboard Screenshot

The user interface is definitely one of the best out there, and because of its popularity, tons of other companies are making products that integrate with Basecamp, extending its capabilities.

Basecamp Time Tracking Screenshot

Pricing is reasonable, though it’s definitely not the cheapest solution out there. The Basic plan is only $24 per month and includes up to 15 active projects, 3 GB of file storage and unlimited clients and users. The Max plan is a hefty $149 per month, but includes unlimited projects, 50 GB of file storage, time tracking, SSL security and a free Campfire Premium account.

2. Wiki-Based Project Management

Wikis are another option for project management, whether you use one instead of a basic project management application or in addition to one. One of the solutions below is geared to complete project management and includes additional features, while the other is just a wiki and is suitable for project management and other uses.

Trac Project

Trac Project is a project management app that is based on wiki functionality. It also includes a subversion browser, a timeline, ticket tracking, a road map (showing milestones and the number of current open and closed tickets) and builds status tracking.

Trac Project Main Wiki Page Screenshot

One of Trac’s best features is the range of plug-ins available for it. There are plug-ins for Web administration, authentication, code documentation, file management, ticketing, testing, user management and version control.

Trac Project Ticket Management Screenshot

Another big advantage: Trac is free and licensed under a modified BSD license.

PBwiki

PBwiki is one of the easiest free wikis out there to use. You can share files with other users, set access controls for individual pages and folders, add other users to your wiki, monitor and track version changes and more.

PBwiki Main Page Screenshot

Setup is quick and easy and can be done in less than a minute. The PBwiki interface is very intuitive, and there is virtually no learning curve. Creating folders and pages is straightforward, as is editing existing pages. You can also comment on each page, and get a printable version with a single click.

PBwiki Page Creation Screenshot

There are multiple themes you can choose from for the design, as well as templates for individual page content (or you can start from scratch). There are a few different plans available, both paid and free. The free plan allows from 1 to 3 users. Paid plans range from $4 per month per user (if you have more than 10,000 users) to $8 per month per user (for 4 to 999 users).

3. Bug and Ticket Tracking

Any time you work on a Web application or website, there are going to be bugs and issues that crop up. While some basic project management applications have built-in ticket tracking, others don’t, and sometimes the built-in solution doesn’t quite meet your needs (either because it’s too robust or is missing key features).

16bugs

16bugs is a very simple bug-tracking system. Its main advantage is the color-coding system used for different types of information (like updates, comments and closed tickets).

16bugs Activity Report Screenshot

Setup is quick and easy. The user interface is easy to figure out. Creating bugs is easy, and the color-coded labels on the activity tab make it easy to see what’s going on at a glance.

16bugs Bug Submission Screenshot

There are a variety of account types available. The free account allows 1 project, 1 MB of storage and Basecamp imports. Starting at $8 per month, paid plans include more projects (3 with the Basic plan), 150 MB to 10 GB of storage, RSS and email notifications, Campfire notifications and SSL (starting with the $15-per-month Big plan).

JIRA

JIRA is issue- and bug-tracking software that includes a lot of great features. It has advanced reporting features, workflow mapping as well as issue and project organizing; it is also customizable.

JIRA Dashboard Screenshot

JIRA also offers a number of plug-ins to extend its functionality, including Bamboo integration, charting, time tracking, project management, a calendar and more. By using plug-ins, you can customize JIRA to meet your exact project management and issue-tracking needs.

JIRA Issue Navigator Screenshot

JIRA’s biggest drawback is its pricing; it’s not cheap. A hosted account starts at $299 per month for up to 25 users and goes up from there (250 users costs $599 per month). If you want to download JIRA and host it on your own server, it starts at $1200 for a single project team, and goes as high as $4800 for an entire organization. If you need an academic license, solutions start at only $600.

4. Collaboration and Conferencing

If you’re working with a remote team on your project, you’re probably going to need some online space to collaborate and meet, whether it’s to work on general concepts or to work out specific bugs. Here are three solutions to help you collaborate with those on your team or with your clients.

activeCollab

activeCollab is a project management and collaboration tool that lets you set up a collaboration area right on your website. You can have unlimited projects, organized into groups for easy management.

activeCollab Dashboard Screenshot

Collaboration features include file sharing, discussions (set up like an online forum), assignments, collaborative writing and reminders. Project management features include printing and exporting, time tracking, calendar and schedule functionality, ticket management and milestones. Plug-ins (modules) mean that activeCollab can be extended to suit your specific needs.

activeCollab Project Overview Screenshot

There are two pricing options available: Corporate and Small Business. The Small Business edition includes source-code browsing, plug-in support, themes, discussions, milestones, checklists, files, project templates, a mobile interface and localization support. It’s priced at $199, with support and upgrades being an additional $99 per year after the first year. The Corporate edition has all of the above features, plus the calendar, tickets, time tracking, pages (with collaborative writing and more), a project explorer, and status updates. Both packages include unlimited projects and users. You can also purchase a Copyright Removal license, which removes the “activeCollab Powered” graphic from the footer of each page, for an additional $199.

DimDim

DimDim is a Web-conferencing platform that provides collaboration tools for meeting online. It’s scalable, reliable and flexible, with both hosted and on-site versions available.

DimDim Main Page Screenshot

DimDim allows you to share your desktop with those you’re meeting with, as well as share and present documents (both PowerPoint and PDFs). You can also share Whiteboards, and it has built-in voice-over-IP and teleconferencing capabilities. There are public and private chat capabilities as well as annotation and markup tools.

DimDim New Meeting Screenshot

There are free and paid plans available. The free plan offers the complete feature set, with support for meetings of up to 20 people. DimDim Pro offers the complete feature set, plus custom branding and up to 100 people in a meeting for only $99 per year. There is also an Enterprise-level package that includes all of the above but also allows simultaneous meetings with up to 1000 attendees for $1998 per year.

Vyew

Vyew is a browser-based Web presentation service that allows for custom branding and PowerPoint-like authoring. With Vyew, you can give a live presentation or just post a document for your colleagues to review at their convenience.

Vyewbook Creation Screenshot

Features include real-time desktop sharing, whiteboarding and drawing tools, embedded comments, built-in voice over IP, free teleconferencing, built-in webcam video support, text chat, dedicated rooms and direct URLs and more. It’s a complete solution for Web conferencing.

Vyew Document Explorer Screenshot

Vyew has a number of plans available, including a free plan, which includes unlimited meetings, SSL secure log-in, up to 20 participants (all seeing ads) and up to 5 VyewBooks (presentations) with up to 50 pages each. There are two paid plans: Plus at $6.95 per month, which includes everything the free plan has plus up to 25 participants (or 5 with no ads), and up to 25 VyewBooks with up to 100 pages each, and Professional at $13.95 per month, which includes everything the Plus plan has, but with up to 45 participants (or 15 with no ads), and up to 100 VyewBooks with up to 300 pages each.

5. Invoicing

Unless you’re working on an internal project, chances are you’ll need to send out invoices. Having an invoice program that also does proposals is helpful, as is having one that integrates directly with your project management app.

Simply Invoices

Simply Invoices integrates with Basecamp, More Honey, Tick and Harvest to invoice based on time that you track with those programs. Features include invoice templates, unlimited invoices, the ability to save invoices as PDFs and invoice tracking.

Simply Invoices Screenshot

There are a few different plans available, including a free plan that includes up to five invoice templates and SSL support. Paid plans start at $9 per month (which includes up to ten invoice templates, plus a custom logo and link-free invoices) and go up to $25 per month (which includes an unlimited number of templates).

Less Accounting

Less Accounting is a simple online accounting and invoicing program that is incredibly easy to use. Less Accounting has a variety of features, including proposal creation and tracking, mileage tracking, sales-lead management and expense tracking. You can import your existing Wesabe.com account, and you can even invite your CPA to look at your books. Less Accounting also sends a weekly email with an update on the status of your accounts.

Less Accounting Screenshot

There are a variety of account plans available, including a free plan. The free plan includes up to 5 invoices, expenses, sales notes, deposits, proposals, mileage logs each month, SSL encryption, reports and bank-account integration. The paid plans range from the Even Less plan at $12 per month (including invoicing, expenses, contacts, SSL encryption, technical support, deposits and reports) to the More plan at $24 per month (including everything in the Even Less plan, plus sales notes, bank accounts, proposals, mileage logs, bank reconciliation, support for multiple types of sales tax and more). A 30-day free trial is available for all plans.

6. Time Tracking

Whether you need to keep track of your time for billing purposes, for your boss, or just to measure your own productivity, chances are you’ll need a time-tracking application.

LiveTimer

LiveTimer is an easy-to-use time-tracking program that works on both your computer and iPhone. It can be used for billing purposes or simply to improve your productivity and accountability.

LiveTimer Summary Report Screenshot

Features include a daily ledger, bulk time entry (by day or week), customizable classifications, multiple currencies, custom billing rates, intelligent report filters and a developer API. The iPhone integration makes it easy to track your time even if you’re not at your desk, making it more useful than many other Web-based time-tracking applications.

LiveTimer Time Ledger Screenshot

Pricing is cheap, at only $5 per active user per month. Qualifying non-profits get a 50% discount. There is a 30-day free trial available.

fourteenDayz

fourteenDayz is a time-tracking program specifically for teams. It features day-by-day time sheets, exportable reports (in both PDF and Excel formats), drag-and-drop categories and no user limit.

fourteenDayz Time Sheet Entry Screenshot

There are 6 different plans offered, including a free account (which includes up to 4 active projects/clients, 10 project categories, an unlimited number of users and reporting functions). The paid plans range from the Personal at $5 per month (which includes the free account features plus up to 7 active projects/clients, 15 project categories, 30 project subcategories and PDF reports) to the Platinum at $99 per month (which includes all the Personal features plus unlimited active projects/clients, unlimited project categories and subcategories, XLS/CSV exportability and SSL connections).



source: http://www.13bit.com.ar/post/15-Useful-Project-Management-Tools.aspx

Blogged with the Flock Browser

Monday, November 17, 2008

Adobe AIR Vs Flash Vs Flex Vs Microsoft Silverlight

Adobe AIR Vs Flash Vs Flex Vs Microsoft Silverlight

Internet Eras

The internet has been in many many different stages since its conception, both smaller stages of advancement such as the defining of web standards and a push to implement them, to larger, more generalized advances such as the recent explosion of "web 2.0", blogs, social networking, and media enrichment. One could easily write for weeks covering all these advances, but for now i want to talk about media enrichment and interactive applications using rich media platforms.



Adobe Flash

By now, I don't think there is anybody who DOESN"T know what flash is or at least interacts with it in a semi-daily basis. Formally Macromedia flash introduced in 1996, the now Adobe-acquired platform continues to thrive as the primary way for media interaction online - namely video sharing and streaming, largely popularized by youtube. Flash was originally developed for and used as a medium for vector-based animations, whereas Shockwave was the platform for video and interactivity. Flash has since drowned out shockwave in all aspects of use, except online 3d game development and interactive training applications, which is shockwave's current primary purpose. Flash is quite versatile with its ability to handle videos, images, vector animations, key-frame animation, and its build-in scripting language called Actionscript, not to mention flash is cross-platform.

Adobe Flex

Flex is based on the Flash platform, but has more of a programmer approach to interactive web application design, whereas flash's approach to application development is still based around the vector animation, as it was originally designed to be. Flex allows programmers to rapidly develop applications and their layouts using MXML and Actionscript, along with other built in technologies that make video and audio streaming and handling a breeze. Since Flex is built on the Flash platform, and actually produces its output in a Flash file format, Flex applications are inherently cross-platform. Flex also pushes for more native server-client data communications which makes it very easy to make dynamic, interactive applications such as shopping carts, video chatrooms, and just about anything else you can think of! In addition, Flex also has built in components ranging from lists, text boxes, and buttons, to streamline features such as drag and drop, form validation, and animation effects. From a user standpoint, flex applications will be nothing more than nicely designed flash applications, but from a developer standpoint, Flex will become the standard method for making flash applications that are not based on animating.

Adobe AIR

Even though AIR is still in development stages, I believe that AIR will become the primary use for desktop-based application development for programs that have any sort of internet interactivity. AIR allows developers to use flash, html, javascript, xml, and other web-familiar technologies to rapidly create desktop applications that provide a rich experience with internet communications built in. Not only does that alone give AIR excellent potential for wide-use by current web-only developers, but what really gets me excited is that adobe AIR is cross-platform, meaning that applications developed once, will natively run on windows, mac, and linux machines - with a good chance of it finding its way to mobile devices as well! With adobe AIR, there is going to be an explosion of software applications that can be developed more rapidly, and utilized by more people worldwide. Right now there is a beta available for windows and mac. Adobe expects to have linux support by third quarter of 2008. Until then, I am going to be very anxiously waiting to start developing with with AIR.

Microsoft Silverlight

Microsoft is finally stepping into the rich media market with its Silverlight platform, which is comparable to Adobe Flex. Currently Silverlight is rather limited as far as platform compatibility. And even though they are currently developing a more compatible version, it still will not be as cross-platform as any of adobe's solutions. See Compatibility Chart at Wikipedia.

silverlight
Silverlight 2.0 Architecture

One of the main things that I think will make Silverlight successful (once v2 is finished), is the .NET computability along with the ability to use python, jscript, VB, and perl coding within the applications. This means that the .NET technology will be available for limited use on cross-platform applications, which is, in my opinion, one step closer to having more windows application developers, making cross-platform software.

Blogged with the Flock Browser

Saturday, September 27, 2008

Friday, November 10, 2006

Validation in Windows Presentation Foundation - The Code Project - Vista / WinFX

Validation in Windows Presentation Foundation - The Code Project - Vista / WinFX: "if your applications have a very rich domain model, you may find the ErrorProvider approach helpful. If your application is very service oriented, or very UI centric, ValidationRules might be all you need."

Guidelines for Designing Stylable Controls

Guidelines for Designing Stylable Controls: "Guidelines for Designing Stylable Controls

This document summarizes a set of best practices to consider when designing a control which you intend to be easily stylable and templatable. We came to this set of best practices through a lot of trial and error while working on the theme control styles for the built-in WPF control set. We learned that successful styling is as much a function of a well-designed object model as it is of the style itself. The intended audience for this document is the control author, not the style author.

This topic contains the following sections.

* Terminology
* Before You Start: Understanding Your Control
* General Guidelines
* Theme Considerations
* Related Topics

Terminology

'Styling and templating' refer to the suite of technologies that enable a control author to defer the visual aspects of the control to the style and template of the control. This suite of technologies includes:

*

Styles (including property setters, triggers, and storyboards)
*

Resources
*

Control Templates
*

Data Templates

For an introduction of styling and templating, see the Styling and Templating topic.
Before You Start: U"

XamlXaml: Exploring XAML, WPF, XBAP & .NET 3.0 » Blog Archive » Control Templating: One of the Most Powerful WPF Features! (KevinButton example)

XamlXaml: Exploring XAML, WPF, XBAP & .NET 3.0 » Blog Archive » Control Templating: One of the Most Powerful WPF Features! (KevinButton example)

Channel 9 Video

Sunday, October 15, 2006

DevHood

I was just searching for something and accidentlly got into this site which gives presentations, articles, explanations..blah blah blah abt .Net
Here is something ABOUT the site
DEVHOOD: "DevHood was created by six students at MIT who had nothing better to do than to create a developer's community using .NET. Actually it was really more of a proof of concept for the 2001 MIT $50K Entrepreneurial Competition. They actually got into the semifinals with their alpha version of the site which was pretty exciting.

Wednesday, October 11, 2006

Notes on WPF Changes from Beta 1 to Sept 2005 (PDC) CTP

Notes on WPF Changes from Beta 1 to Sept 2005 (PDC) CTP

Annotations in WPF, Post-it notes using WPF, and more ...

code that'll be useful
Lester's Blog..........

Code for getting screen relative Position in WPF

One of the common customer queries that we see on the forums is to get the screen relative position of a point. Currently we do not provide an API which allows this functionality. However, Nick Kramer came up with this code on the forum and it works great for LTR (left to right) systems. Following is the code for getting the screen relative position :

static Point TransformToScreen(Point point, Visual relativeTo)

{

HwndSource hwndSource = PresentationSource.FromVisual(relativeTo) as HwndSource;

Visual root = hwndSource.RootVisual;

// Translate the point from the visual to the root.

GeneralTransform transformToRoot = relativeTo.TransformToAncestor(root);

Point pointRoot = transformToRoot.Transform(point);

// Transform the point from the root to client coordinates.

Matrix m = Matrix.Identity;

Transform transform = VisualTreeHelper.GetTransform(root);

if (transform != null)

{

m = Matrix.Multiply(m, transform.Value);

}

Vector offset = VisualTreeHelper.GetOffset(root);

m.Translate(offset.X, offset.Y);

Point pointClient = m.Transform(pointRoot);

// Convert from “device-independent pixels” into pixels.

pointClient = hwndSource.CompositionTarget.TransformToDevice.Transform(pointClient);

POINT pointClientPixels = new POINT();

pointClientPixels.x = (0 < pointClient.X) ? (int)(pointClient.X + 0.5) : (int)(pointClient.X - 0.5);

pointClientPixels.y = (0 < pointClient.Y) ? (int)(pointClient.Y + 0.5) : (int)(pointClient.Y - 0.5);

// Transform the point into screen coordinates.

POINT pointScreenPixels = pointClientPixels;

ClientToScreen(hwndSource.Handle, pointScreenPixels);

return new Point(pointScreenPixels.x, pointScreenPixels.y);

}

[StructLayout(LayoutKind.Sequential)]

public class POINT

{

public int x = 0;

public int y = 0;

}



[DllImport("User32", EntryPoint = "ClientToScreen", SetLastError = true,
ExactSpelling = true, CharSet = CharSet.Auto)]

private static extern int ClientToScreen(IntPtr hWnd, [In, Out] POINT pt);

Tuesday, October 10, 2006

AnimationBehaviors

AnimationBehaviors is a library (dll) built for Windows Presentation Foundation (WPF) that makes it easy to add common animations to elements in XAML with little effort. Adding animations becomes as easy as adding an attribute to an element in XAML. AnimationBehaviors simplifies the process of creating page transitions, layout animations, and other common types of animations in WPF.


AnimationBehaviors

Wow---printing 3D graphics

Here is what he writes about the wonder of WPF Printing the 3D Graphics with just 5lines of code


From Eric's Blog:Eric Writes......
The last time I worked on an app which used 3D graphics, printing was fairly simple. OpenGL was brand new and DirectX didn't exist yet, so we had to do all the projection math anyway. Adapting the code from screen to paper wasn't a big deal.

Modern graphics APIs are great, but they don't help with printing. Since I started my woodworking app using C# and Direct3D, I always figured it would be a huge task to implement printing. More to the point, since this app is a hobby project and the implementation of printing would probably be like real work, I figured this app would never be able to print.

Recently I switched everything over to WPF. Here is my printing code:

PrintDialog dlg = new PrintDialog();
if ((bool)dlg.ShowDialog().GetValueOrDefault())
{
dlg.PrintVisual(myViewport, "sawdust");
}

Five lines. Were it not for my pathological need to use braces on every if statement, it would be three lines.

Yes, yes I know -- a useful real-world printing feature would require more work. I'm just saying: I added these five lines to my app and a color picture of my bookshelf model emerged out of the printer down the hall. That's excellent.


Wow.